vendor: update vendor upspin.io to 2e37c3b, use new dep prune rules

Change-Id: Ia56e68dc45682aafb57589a9f7f82591682e5031
Reviewed-on: https://upspin-review.googlesource.com/18740
Reviewed-by: Rob Pike <r@golang.org>
diff --git a/Gopkg.lock b/Gopkg.lock
index 646a1be..5bf7d6c 100644
--- a/Gopkg.lock
+++ b/Gopkg.lock
@@ -3,7 +3,17 @@
 
 [[projects]]
   name = "cloud.google.com/go"
-  packages = ["compute/metadata","iam","internal","internal/optional","internal/version","logging","logging/apiv2","logging/internal","storage"]
+  packages = [
+    "compute/metadata",
+    "iam",
+    "internal",
+    "internal/optional",
+    "internal/version",
+    "logging",
+    "logging/apiv2",
+    "logging/internal",
+    "storage"
+  ]
   revision = "eaddaf6dd7ee35fd3c2420c8d27478db176b0485"
   version = "v0.15.0"
 
@@ -16,7 +26,16 @@
 [[projects]]
   branch = "master"
   name = "github.com/golang/protobuf"
-  packages = ["proto","protoc-gen-go/descriptor","ptypes","ptypes/any","ptypes/duration","ptypes/empty","ptypes/struct","ptypes/timestamp"]
+  packages = [
+    "proto",
+    "protoc-gen-go/descriptor",
+    "ptypes",
+    "ptypes/any",
+    "ptypes/duration",
+    "ptypes/empty",
+    "ptypes/struct",
+    "ptypes/timestamp"
+  ]
   revision = "1643683e1b54a9e88ad26d98f81400c8c9d9f4f9"
 
 [[projects]]
@@ -34,19 +53,38 @@
 [[projects]]
   branch = "master"
   name = "golang.org/x/crypto"
-  packages = ["acme","acme/autocert","hkdf"]
+  packages = [
+    "acme",
+    "acme/autocert",
+    "hkdf"
+  ]
   revision = "13931e22f9e72ea58bb73048bc752b48c6d4d4ac"
 
 [[projects]]
   branch = "master"
   name = "golang.org/x/net"
-  packages = ["context","context/ctxhttp","http2","http2/hpack","idna","internal/timeseries","lex/httplex","trace"]
+  packages = [
+    "context",
+    "context/ctxhttp",
+    "http2",
+    "http2/hpack",
+    "idna",
+    "internal/timeseries",
+    "lex/httplex",
+    "trace"
+  ]
   revision = "c73622c77280266305273cb545f54516ced95b93"
 
 [[projects]]
   branch = "master"
   name = "golang.org/x/oauth2"
-  packages = [".","google","internal","jws","jwt"]
+  packages = [
+    ".",
+    "google",
+    "internal",
+    "jws",
+    "jwt"
+  ]
   revision = "bb50c06baba3d0c76f9d125c0719093e315b5b44"
 
 [[projects]]
@@ -58,30 +96,109 @@
 [[projects]]
   branch = "master"
   name = "golang.org/x/text"
-  packages = ["cases","internal","internal/gen","internal/tag","internal/triegen","internal/ucd","language","runes","secure/bidirule","secure/precis","transform","unicode/bidi","unicode/cldr","unicode/norm","unicode/rangetable","width"]
+  packages = [
+    "cases",
+    "internal",
+    "internal/gen",
+    "internal/tag",
+    "internal/triegen",
+    "internal/ucd",
+    "language",
+    "runes",
+    "secure/bidirule",
+    "secure/precis",
+    "transform",
+    "unicode/bidi",
+    "unicode/cldr",
+    "unicode/norm",
+    "unicode/rangetable",
+    "width"
+  ]
   revision = "6eab0e8f74e86c598ec3b6fad4888e0c11482d48"
 
 [[projects]]
   branch = "master"
   name = "google.golang.org/api"
-  packages = ["cloudbuild/v1","cloudtrace/v1","compute/v1","container/v1","dns/v1","gensupport","googleapi","googleapi/internal/uritemplates","googleapi/transport","iam/v1","internal","iterator","option","storage/v1","support/bundler","transport","transport/grpc","transport/http"]
+  packages = [
+    "cloudbuild/v1",
+    "cloudtrace/v1",
+    "compute/v1",
+    "container/v1",
+    "dns/v1",
+    "gensupport",
+    "googleapi",
+    "googleapi/internal/uritemplates",
+    "googleapi/transport",
+    "iam/v1",
+    "internal",
+    "iterator",
+    "option",
+    "storage/v1",
+    "support/bundler",
+    "transport",
+    "transport/grpc",
+    "transport/http"
+  ]
   revision = "672d215daf0631fcae4c08c2a4324a763aaaf789"
 
 [[projects]]
   name = "google.golang.org/appengine"
-  packages = [".","internal","internal/app_identity","internal/base","internal/datastore","internal/log","internal/modules","internal/remote_api","internal/socket","internal/urlfetch","socket","urlfetch"]
+  packages = [
+    ".",
+    "internal",
+    "internal/app_identity",
+    "internal/base",
+    "internal/datastore",
+    "internal/log",
+    "internal/modules",
+    "internal/remote_api",
+    "internal/socket",
+    "internal/urlfetch",
+    "socket",
+    "urlfetch"
+  ]
   revision = "150dc57a1b433e64154302bdc40b6bb8aefa313a"
   version = "v1.0.0"
 
 [[projects]]
   branch = "master"
   name = "google.golang.org/genproto"
-  packages = ["googleapis/api/annotations","googleapis/api/distribution","googleapis/api/label","googleapis/api/metric","googleapis/api/monitoredres","googleapis/iam/v1","googleapis/logging/type","googleapis/logging/v2","googleapis/rpc/status","protobuf/field_mask"]
+  packages = [
+    "googleapis/api/annotations",
+    "googleapis/api/distribution",
+    "googleapis/api/label",
+    "googleapis/api/metric",
+    "googleapis/api/monitoredres",
+    "googleapis/iam/v1",
+    "googleapis/logging/type",
+    "googleapis/logging/v2",
+    "googleapis/rpc/status",
+    "protobuf/field_mask"
+  ]
   revision = "f676e0f3ac6395ff1a529ae59a6670878a8371a6"
 
 [[projects]]
   name = "google.golang.org/grpc"
-  packages = [".","balancer","codes","connectivity","credentials","credentials/oauth","grpclb/grpc_lb_v1/messages","grpclog","internal","keepalive","metadata","naming","peer","resolver","stats","status","tap","transport"]
+  packages = [
+    ".",
+    "balancer",
+    "codes",
+    "connectivity",
+    "credentials",
+    "credentials/oauth",
+    "grpclb/grpc_lb_v1/messages",
+    "grpclog",
+    "internal",
+    "keepalive",
+    "metadata",
+    "naming",
+    "peer",
+    "resolver",
+    "stats",
+    "status",
+    "tap",
+    "transport"
+  ]
   revision = "61d37c5d657a47e4404fd6823bd598341a2595de"
   version = "v1.7.1"
 
@@ -94,8 +211,73 @@
 [[projects]]
   branch = "master"
   name = "upspin.io"
-  packages = ["access","bind","cache","client","client/clientutil","client/file","cloud/https","cloud/mail","cloud/mail/sendgrid","cloud/storage","config","dir/inprocess","dir/remote","dir/server","dir/server/serverlog","dir/server/tree","dir/unassigned","errors","factotum","flags","key/inprocess","key/remote","key/server","key/sha256key","key/transports","key/unassigned","key/usercache","log","metric","pack","pack/ee","pack/eeintegrity","pack/internal","pack/packutil","pack/plain","path","rpc","rpc/dirserver","rpc/keyserver","rpc/local","rpc/storeserver","serverutil","serverutil/dirserver","serverutil/frontend","serverutil/keyserver","serverutil/perm","serverutil/signup","serverutil/storeserver","serverutil/upspinserver","serverutil/web","shutdown","store/inprocess","store/remote","store/server","store/transports","store/unassigned","subcmd","test/testutil","transports","upspin","upspin/proto","user","valid","version"]
-  revision = "6449eeed647988952316dc9dc9e323d06851125c"
+  packages = [
+    "access",
+    "bind",
+    "cache",
+    "client",
+    "client/clientutil",
+    "client/file",
+    "cloud/https",
+    "cloud/mail",
+    "cloud/mail/sendgrid",
+    "cloud/storage",
+    "config",
+    "dir/inprocess",
+    "dir/remote",
+    "dir/server",
+    "dir/server/serverlog",
+    "dir/server/tree",
+    "dir/unassigned",
+    "errors",
+    "factotum",
+    "flags",
+    "key/inprocess",
+    "key/remote",
+    "key/server",
+    "key/sha256key",
+    "key/transports",
+    "key/unassigned",
+    "key/usercache",
+    "log",
+    "metric",
+    "pack",
+    "pack/ee",
+    "pack/eeintegrity",
+    "pack/internal",
+    "pack/packutil",
+    "pack/plain",
+    "path",
+    "rpc",
+    "rpc/dirserver",
+    "rpc/keyserver",
+    "rpc/local",
+    "rpc/storeserver",
+    "serverutil",
+    "serverutil/dirserver",
+    "serverutil/frontend",
+    "serverutil/keyserver",
+    "serverutil/perm",
+    "serverutil/signup",
+    "serverutil/storeserver",
+    "serverutil/upspinserver",
+    "serverutil/web",
+    "shutdown",
+    "store/inprocess",
+    "store/remote",
+    "store/server",
+    "store/transports",
+    "store/unassigned",
+    "subcmd",
+    "test/testutil",
+    "transports",
+    "upspin",
+    "upspin/proto",
+    "user",
+    "valid",
+    "version"
+  ]
+  revision = "2e37c3b2c427b239f286de76ee3379ece3b2a636"
 
 [solve-meta]
   analyzer-name = "dep"
diff --git a/Gopkg.toml b/Gopkg.toml
index cd20454..096d237 100644
--- a/Gopkg.toml
+++ b/Gopkg.toml
@@ -20,3 +20,9 @@
 [[constraint]]
   branch = "master"
   name = "upspin.io"
+
+[prune]
+  non-go = true
+  unused-packages = true
+  go-tests = true
+
diff --git a/vendor-update.sh b/vendor-update.sh
index 26794b4..9b0c7b8 100755
--- a/vendor-update.sh
+++ b/vendor-update.sh
@@ -5,14 +5,6 @@
 
 # The dep command can be obtained with "go get github.com/golang/dep/cmd/dep".
 
-# Update the upspin.io package.
 dep ensure -update upspin.io
-# Remove any vendored packages we don't use.
-dep prune
-# Delete test files.
-find vendor -name '*_test.go' -delete
-# Delete Google Cloud JSON API schemas.
-find vendor -name '*-api.json' -delete
-
 git add vendor Gopkg.lock
 git gofmt
diff --git a/vendor/cloud.google.com/go/.travis.yml b/vendor/cloud.google.com/go/.travis.yml
deleted file mode 100644
index 8c769d7..0000000
--- a/vendor/cloud.google.com/go/.travis.yml
+++ /dev/null
@@ -1,16 +0,0 @@
-sudo: false
-language: go
-go:
-- 1.6
-- 1.7
-- 1.8
-install:
-- go get -v cloud.google.com/go/...
-script:
-- openssl aes-256-cbc -K $encrypted_a8b3f4fc85f4_key -iv $encrypted_a8b3f4fc85f4_iv -in key.json.enc -out key.json -d
-- GCLOUD_TESTS_GOLANG_PROJECT_ID="dulcet-port-762" GCLOUD_TESTS_GOLANG_KEY="$(pwd)/key.json"
-  ./run-tests.sh $TRAVIS_COMMIT
-env:
-  matrix:
-    # The GCLOUD_TESTS_API_KEY environment variable.
-    secure: VdldogUOoubQ60LhuHJ+g/aJoBiujkSkWEWl79Zb8cvQorcQbxISS+JsOOp4QkUOU4WwaHAm8/3pIH1QMWOR6O78DaLmDKi5Q4RpkVdCpUXy+OAfQaZIcBsispMrjxLXnqFjo9ELnrArfjoeCTzaX0QTCfwQwVmigC8rR30JBKI=
diff --git a/vendor/cloud.google.com/go/CONTRIBUTING.md b/vendor/cloud.google.com/go/CONTRIBUTING.md
deleted file mode 100644
index f99b50d..0000000
--- a/vendor/cloud.google.com/go/CONTRIBUTING.md
+++ /dev/null
@@ -1,144 +0,0 @@
-# Contributing
-
-1. Sign one of the contributor license agreements below.
-1. `go get golang.org/x/review/git-codereview` to install the code reviewing tool.
-    1. You will need to ensure that your `GOBIN` directory (by default
-       `$GOPATH/bin`) is in your `PATH` so that git can find the command.
-    1. If you would like, you may want to set up aliases for git-codereview,
-       such that `git codereview change` becomes `git change`. See the
-       [godoc](https://godoc.org/golang.org/x/review/git-codereview) for details.
-    1. Should you run into issues with the git-codereview tool, please note
-       that all error messages will assume that you have set up these
-       aliases.
-1. Get the cloud package by running `go get -d cloud.google.com/go`.
-    1. If you have already checked out the source, make sure that the remote git
-       origin is https://code.googlesource.com/gocloud:
-
-            git remote set-url origin https://code.googlesource.com/gocloud
-1. Make sure your auth is configured correctly by visiting
-   https://code.googlesource.com, clicking "Generate Password", and following
-   the directions.
-1. Make changes and create a change by running `git codereview change <name>`,
-provide a commit message, and use `git codereview mail` to create a Gerrit CL.
-1. Keep amending to the change with `git codereview change` and mail as your receive
-feedback. Each new mailed amendment will create a new patch set for your change in Gerrit.
-
-## Integration Tests
-
-In addition to the unit tests, you may run the integration test suite.
-
-To run the integrations tests, creating and configuration of a project in the
-Google Developers Console is required.
-
-After creating a project, you must [create a service account](https://developers.google.com/identity/protocols/OAuth2ServiceAccount#creatinganaccount).
-Ensure the project-level **Owner** [IAM role](console.cloud.google.com/iam-admin/iam/project)
-(or **Editor** and **Logs Configuration Writer** roles) are added to the
-service account.
-
-Once you create a project, set the following environment variables to be able to
-run the against the actual APIs.
-
-- **GCLOUD_TESTS_GOLANG_PROJECT_ID**: Developers Console project's ID (e.g. bamboo-shift-455)
-- **GCLOUD_TESTS_GOLANG_KEY**: The path to the JSON key file.
-- **GCLOUD_TESTS_API_KEY**: Your API key.
-
-Firestore requires a different project and key:
-
-- **GCLOUD_TESTS_GOLANG_FIRESTORE_PROJECT_ID**: Developers Console project's ID
-  supporting Firestore
-- **GCLOUD_TESTS_GOLANG_FIRESTORE_KEY**: The path to the JSON key file.
-
-Install the [gcloud command-line tool][gcloudcli] to your machine and use it
-to create some resources used in integration tests.
-
-From the project's root directory:
-
-``` sh
-# Set the default project in your env.
-$ gcloud config set project $GCLOUD_TESTS_GOLANG_PROJECT_ID
-
-# Authenticate the gcloud tool with your account.
-$ gcloud auth login
-
-# Create the indexes used in the datastore integration tests.
-$ gcloud preview datastore create-indexes datastore/testdata/index.yaml
-
-# Create a Google Cloud storage bucket with the same name as your test project,
-# and with the Stackdriver Logging service account as owner, for the sink
-# integration tests in logging.
-$ gsutil mb gs://$GCLOUD_TESTS_GOLANG_PROJECT_ID
-$ gsutil acl ch -g cloud-logs@google.com:O gs://$GCLOUD_TESTS_GOLANG_PROJECT_ID
-
-# Create a Spanner instance for the spanner integration tests.
-$ gcloud beta spanner instances create go-integration-test --config regional-us-central1 --nodes 1 --description 'Instance for go client test'
-# NOTE: Spanner instances are priced by the node-hour, so you may want to delete
-# the instance after testing with 'gcloud beta spanner instances delete'.
-```
-
-Once you've set the environment variables, you can run the integration tests by
-running:
-
-``` sh
-$ go test -v cloud.google.com/go/...
-```
-
-## Contributor License Agreements
-
-Before we can accept your pull requests you'll need to sign a Contributor
-License Agreement (CLA):
-
-- **If you are an individual writing original source code** and **you own the
-- intellectual property**, then you'll need to sign an [individual CLA][indvcla].
-- **If you work for a company that wants to allow you to contribute your work**,
-then you'll need to sign a [corporate CLA][corpcla].
-
-You can sign these electronically (just scroll to the bottom). After that,
-we'll be able to accept your pull requests.
-
-## Contributor Code of Conduct
-
-As contributors and maintainers of this project,
-and in the interest of fostering an open and welcoming community,
-we pledge to respect all people who contribute through reporting issues,
-posting feature requests, updating documentation,
-submitting pull requests or patches, and other activities.
-
-We are committed to making participation in this project
-a harassment-free experience for everyone,
-regardless of level of experience, gender, gender identity and expression,
-sexual orientation, disability, personal appearance,
-body size, race, ethnicity, age, religion, or nationality.
-
-Examples of unacceptable behavior by participants include:
-
-* The use of sexualized language or imagery
-* Personal attacks
-* Trolling or insulting/derogatory comments
-* Public or private harassment
-* Publishing other's private information,
-such as physical or electronic
-addresses, without explicit permission
-* Other unethical or unprofessional conduct.
-
-Project maintainers have the right and responsibility to remove, edit, or reject
-comments, commits, code, wiki edits, issues, and other contributions
-that are not aligned to this Code of Conduct.
-By adopting this Code of Conduct,
-project maintainers commit themselves to fairly and consistently
-applying these principles to every aspect of managing this project.
-Project maintainers who do not follow or enforce the Code of Conduct
-may be permanently removed from the project team.
-
-This code of conduct applies both within project spaces and in public spaces
-when an individual is representing the project or its community.
-
-Instances of abusive, harassing, or otherwise unacceptable behavior
-may be reported by opening an issue
-or contacting one or more of the project maintainers.
-
-This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org), version 1.2.0,
-available at [http://contributor-covenant.org/version/1/2/0/](http://contributor-covenant.org/version/1/2/0/)
-
-[gcloudcli]: https://developers.google.com/cloud/sdk/gcloud/
-[indvcla]: https://developers.google.com/open-source/cla/individual
-[corpcla]: https://developers.google.com/open-source/cla/corporate
diff --git a/vendor/cloud.google.com/go/MIGRATION.md b/vendor/cloud.google.com/go/MIGRATION.md
deleted file mode 100644
index 791210d..0000000
--- a/vendor/cloud.google.com/go/MIGRATION.md
+++ /dev/null
@@ -1,54 +0,0 @@
-# Code Changes
-
-## v0.10.0
-
-- pubsub: Replace
-
-    ```
-    sub.ModifyPushConfig(ctx, pubsub.PushConfig{Endpoint: "https://example.com/push"})
-    ```
-
-  with
-
-    ```
-    sub.Update(ctx, pubsub.SubscriptionConfigToUpdate{
-        PushConfig: &pubsub.PushConfig{Endpoint: "https://example.com/push"},
-    })
-    ```
-
-- trace: traceGRPCServerInterceptor will be provided from *trace.Client.
-Given an initialized `*trace.Client` named `tc`, instead of
-
-    ```
-    s := grpc.NewServer(grpc.UnaryInterceptor(trace.GRPCServerInterceptor(tc)))
-    ```
-
-  write
-
-    ```
-    s := grpc.NewServer(grpc.UnaryInterceptor(tc.GRPCServerInterceptor()))
-    ```
-
-- trace trace.GRPCClientInterceptor will also provided from *trace.Client.
-Instead of
-
-    ```
-    conn, err := grpc.Dial(srv.Addr, grpc.WithUnaryInterceptor(trace.GRPCClientInterceptor()))
-    ```
-
-  write
-
-    ```
-    conn, err := grpc.Dial(srv.Addr, grpc.WithUnaryInterceptor(tc.GRPCClientInterceptor()))
-    ```
-
-- trace: We removed the deprecated `trace.EnableGRPCTracing`. Use the gRPC
-interceptor as a dial option as shown below when initializing Cloud package
-clients:
-
-    ```
-    c, err := pubsub.NewClient(ctx, "project-id", option.WithGRPCDialOption(grpc.WithUnaryInterceptor(tc.GRPCClientInterceptor())))
-    if err != nil {
-        ...
-    }
-    ```
diff --git a/vendor/cloud.google.com/go/README.md b/vendor/cloud.google.com/go/README.md
deleted file mode 100644
index 1e0e241..0000000
--- a/vendor/cloud.google.com/go/README.md
+++ /dev/null
@@ -1,514 +0,0 @@
-# Google Cloud Client Libraries for Go
-
-[![GoDoc](https://godoc.org/cloud.google.com/go?status.svg)](https://godoc.org/cloud.google.com/go)
-
-Go packages for [Google Cloud Platform](https://cloud.google.com) services.
-
-``` go
-import "cloud.google.com/go"
-```
-
-To install the packages on your system,
-
-```
-$ go get -u cloud.google.com/go/...
-```
-
-**NOTE:** Some of these packages are under development, and may occasionally
-make backwards-incompatible changes.
-
-**NOTE:** Github repo is a mirror of [https://code.googlesource.com/gocloud](https://code.googlesource.com/gocloud).
-
-  * [News](#news)
-  * [Supported APIs](#supported-apis)
-  * [Go Versions Supported](#go-versions-supported)
-  * [Authorization](#authorization)
-  * [Cloud Datastore](#cloud-datastore-)
-  * [Cloud Storage](#cloud-storage-)
-  * [Cloud Pub/Sub](#cloud-pub-sub-)
-  * [Cloud BigQuery](#cloud-bigquery-)
-  * [Stackdriver Logging](#stackdriver-logging-)
-  * [Cloud Spanner](#cloud-spanner-)
-
-
-## News
-
-*v0.15.0*
-
-_October 3, 2017_
-
-- firestore: beta release. See the
-  [announcement](https://firebase.googleblog.com/2017/10/introducing-cloud-firestore.html).
-
-- errorreporting: The existing package has been redesigned.
-
-- errors: This package has been removed. Use errorreporting.
-
-
-_September 28, 2017_
-
-*v0.14.0*
-
-- bigquery BREAKING CHANGES:
-  - Standard SQL is the default for queries and views.
-  - `Table.Create` takes `TableMetadata` as a second argument, instead of
-    options.
-  - `Dataset.Create` takes `DatasetMetadata` as a second argument.
-  - `DatasetMetadata` field `ID` renamed to `FullID`
-  - `TableMetadata` field `ID` renamed to `FullID`
-
-- Other bigquery changes:
-  - The client will append a random suffix to a provided job ID if you set
-    `AddJobIDSuffix` to true in a job config.
-  - Listing jobs is supported.
-  - Better retry logic.
-
-- vision, language, speech: clients are now stable
-
-- monitoring: client is now beta
-
-- profiler:
-  - Rename InstanceName to Instance, ZoneName to Zone
-  - Auto-detect service name and version on AppEngine.
-
-_September 8, 2017_
-
-*v0.13.0*
-
-- bigquery: UseLegacySQL options for CreateTable and QueryConfig. Use these
-  options to continue using Legacy SQL after the client switches its default
-  to Standard SQL.
-
-- bigquery: Support for updating dataset labels.
-
-- bigquery: Set DatasetIterator.ProjectID to list datasets in a project other
-  than the client's. DatasetsInProject is no longer needed and is deprecated.
-
-- bigtable: Fail ListInstances when any zones fail.
-
-- spanner: support decoding of slices of basic types (e.g. []string, []int64,
-  etc.)
-
-- logging/logadmin: UpdateSink no longer creates a sink if it is missing
-  (actually a change to the underlying service, not the client)
-
-- profiler: Service and ServiceVersion replace Target in Config.
-
-_August 22, 2017_
-
-*v0.12.0*
-
-- pubsub: Subscription.Receive now uses streaming pull.
-
-- pubsub: add Client.TopicInProject to access topics in a different project
-  than the client.
-
-- errors: renamed errorreporting. The errors package will be removed shortly.
-
-- datastore: improved retry behavior.
-
-- bigquery: support updates to dataset metadata, with etags.
-
-- bigquery: add etag support to Table.Update (BREAKING: etag argument added).
-
-- bigquery: generate all job IDs on the client.
-
-- storage: support bucket lifecycle configurations.
-
-
-[Older news](https://github.com/GoogleCloudPlatform/google-cloud-go/blob/master/old-news.md)
-
-## Supported APIs
-
-Google API                       | Status       | Package
----------------------------------|--------------|-----------------------------------------------------------
-[Datastore][cloud-datastore]     | stable       | [`cloud.google.com/go/datastore`][cloud-datastore-ref]
-[Firestore][cloud-firestore]     | beta         | [`cloud.google.com/go/firestore`][cloud-firestore-ref]
-[Storage][cloud-storage]         | stable       | [`cloud.google.com/go/storage`][cloud-storage-ref]
-[Bigtable][cloud-bigtable]       | beta         | [`cloud.google.com/go/bigtable`][cloud-bigtable-ref]
-[BigQuery][cloud-bigquery]       | beta         | [`cloud.google.com/go/bigquery`][cloud-bigquery-ref]
-[Logging][cloud-logging]         | stable       | [`cloud.google.com/go/logging`][cloud-logging-ref]
-[Monitoring][cloud-monitoring]   | beta         | [`cloud.google.com/go/monitoring/apiv3`][cloud-monitoring-ref]
-[Pub/Sub][cloud-pubsub]          | beta         | [`cloud.google.com/go/pubsub`][cloud-pubsub-ref]
-[Vision][cloud-vision]           | stable       | [`cloud.google.com/go/vision/apiv1`][cloud-vision-ref]
-[Language][cloud-language]       | stable       | [`cloud.google.com/go/language/apiv1`][cloud-language-ref]
-[Speech][cloud-speech]           | stable       | [`cloud.google.com/go/speech/apiv1`][cloud-speech-ref]
-[Spanner][cloud-spanner]         | beta         | [`cloud.google.com/go/spanner`][cloud-spanner-ref]
-[Translation][cloud-translation] | stable       | [`cloud.google.com/go/translate`][cloud-translation-ref]
-[Trace][cloud-trace]             | alpha        | [`cloud.google.com/go/trace`][cloud-trace-ref]
-[Video Intelligence][cloud-video]| beta         | [`cloud.google.com/go/videointelligence/apiv1beta1`][cloud-video-ref]
-[ErrorReporting][cloud-errors]   | alpha        | [`cloud.google.com/go/errorreporting`][cloud-errors-ref]
-
-
-> **Alpha status**: the API is still being actively developed. As a
-> result, it might change in backward-incompatible ways and is not recommended
-> for production use.
->
-> **Beta status**: the API is largely complete, but still has outstanding
-> features and bugs to be addressed. There may be minor backwards-incompatible
-> changes where necessary.
->
-> **Stable status**: the API is mature and ready for production use. We will
-> continue addressing bugs and feature requests.
-
-Documentation and examples are available at
-https://godoc.org/cloud.google.com/go
-
-Visit or join the
-[google-api-go-announce group](https://groups.google.com/forum/#!forum/google-api-go-announce)
-for updates on these packages.
-
-## Go Versions Supported
-
-We support the two most recent major versions of Go. If Google App Engine uses
-an older version, we support that as well. You can see which versions are
-currently supported by looking at the lines following `go:` in
-[`.travis.yml`](.travis.yml).
-
-## Authorization
-
-By default, each API will use [Google Application Default Credentials][default-creds]
-for authorization credentials used in calling the API endpoints. This will allow your
-application to run in many environments without requiring explicit configuration.
-
-[snip]:# (auth)
-```go
-client, err := storage.NewClient(ctx)
-```
-
-To authorize using a
-[JSON key file](https://cloud.google.com/iam/docs/managing-service-account-keys),
-pass
-[`option.WithServiceAccountFile`](https://godoc.org/google.golang.org/api/option#WithServiceAccountFile)
-to the `NewClient` function of the desired package. For example:
-
-[snip]:# (auth-JSON)
-```go
-client, err := storage.NewClient(ctx, option.WithServiceAccountFile("path/to/keyfile.json"))
-```
-
-You can exert more control over authorization by using the
-[`golang.org/x/oauth2`](https://godoc.org/golang.org/x/oauth2) package to
-create an `oauth2.TokenSource`. Then pass
-[`option.WithTokenSource`](https://godoc.org/google.golang.org/api/option#WithTokenSource)
-to the `NewClient` function:
-[snip]:# (auth-ts)
-```go
-tokenSource := ...
-client, err := storage.NewClient(ctx, option.WithTokenSource(tokenSource))
-```
-
-## Cloud Datastore [![GoDoc](https://godoc.org/cloud.google.com/go/datastore?status.svg)](https://godoc.org/cloud.google.com/go/datastore)
-
-- [About Cloud Datastore][cloud-datastore]
-- [Activating the API for your project][cloud-datastore-activation]
-- [API documentation][cloud-datastore-docs]
-- [Go client documentation](https://godoc.org/cloud.google.com/go/datastore)
-- [Complete sample program](https://github.com/GoogleCloudPlatform/golang-samples/tree/master/datastore/tasks)
-
-### Example Usage
-
-First create a `datastore.Client` to use throughout your application:
-
-[snip]:# (datastore-1)
-```go
-client, err := datastore.NewClient(ctx, "my-project-id")
-if err != nil {
-	log.Fatal(err)
-}
-```
-
-Then use that client to interact with the API:
-
-[snip]:# (datastore-2)
-```go
-type Post struct {
-	Title       string
-	Body        string `datastore:",noindex"`
-	PublishedAt time.Time
-}
-keys := []*datastore.Key{
-	datastore.NameKey("Post", "post1", nil),
-	datastore.NameKey("Post", "post2", nil),
-}
-posts := []*Post{
-	{Title: "Post 1", Body: "...", PublishedAt: time.Now()},
-	{Title: "Post 2", Body: "...", PublishedAt: time.Now()},
-}
-if _, err := client.PutMulti(ctx, keys, posts); err != nil {
-	log.Fatal(err)
-}
-```
-
-## Cloud Storage [![GoDoc](https://godoc.org/cloud.google.com/go/storage?status.svg)](https://godoc.org/cloud.google.com/go/storage)
-
-- [About Cloud Storage][cloud-storage]
-- [API documentation][cloud-storage-docs]
-- [Go client documentation](https://godoc.org/cloud.google.com/go/storage)
-- [Complete sample programs](https://github.com/GoogleCloudPlatform/golang-samples/tree/master/storage)
-
-### Example Usage
-
-First create a `storage.Client` to use throughout your application:
-
-[snip]:# (storage-1)
-```go
-client, err := storage.NewClient(ctx)
-if err != nil {
-	log.Fatal(err)
-}
-```
-
-[snip]:# (storage-2)
-```go
-// Read the object1 from bucket.
-rc, err := client.Bucket("bucket").Object("object1").NewReader(ctx)
-if err != nil {
-	log.Fatal(err)
-}
-defer rc.Close()
-body, err := ioutil.ReadAll(rc)
-if err != nil {
-	log.Fatal(err)
-}
-```
-
-## Cloud Pub/Sub [![GoDoc](https://godoc.org/cloud.google.com/go/pubsub?status.svg)](https://godoc.org/cloud.google.com/go/pubsub)
-
-- [About Cloud Pubsub][cloud-pubsub]
-- [API documentation][cloud-pubsub-docs]
-- [Go client documentation](https://godoc.org/cloud.google.com/go/pubsub)
-- [Complete sample programs](https://github.com/GoogleCloudPlatform/golang-samples/tree/master/pubsub)
-
-### Example Usage
-
-First create a `pubsub.Client` to use throughout your application:
-
-[snip]:# (pubsub-1)
-```go
-client, err := pubsub.NewClient(ctx, "project-id")
-if err != nil {
-	log.Fatal(err)
-}
-```
-
-Then use the client to publish and subscribe:
-
-[snip]:# (pubsub-2)
-```go
-// Publish "hello world" on topic1.
-topic := client.Topic("topic1")
-res := topic.Publish(ctx, &pubsub.Message{
-	Data: []byte("hello world"),
-})
-// The publish happens asynchronously.
-// Later, you can get the result from res:
-...
-msgID, err := res.Get(ctx)
-if err != nil {
-	log.Fatal(err)
-}
-
-// Use a callback to receive messages via subscription1.
-sub := client.Subscription("subscription1")
-err = sub.Receive(ctx, func(ctx context.Context, m *pubsub.Message) {
-	fmt.Println(m.Data)
-	m.Ack() // Acknowledge that we've consumed the message.
-})
-if err != nil {
-	log.Println(err)
-}
-```
-
-## Cloud BigQuery [![GoDoc](https://godoc.org/cloud.google.com/go/bigquery?status.svg)](https://godoc.org/cloud.google.com/go/bigquery)
-
-- [About Cloud BigQuery][cloud-bigquery]
-- [API documentation][cloud-bigquery-docs]
-- [Go client documentation][cloud-bigquery-ref]
-- [Complete sample programs](https://github.com/GoogleCloudPlatform/golang-samples/tree/master/bigquery)
-
-### Example Usage
-
-First create a `bigquery.Client` to use throughout your application:
-[snip]:# (bq-1)
-```go
-c, err := bigquery.NewClient(ctx, "my-project-ID")
-if err != nil {
-	// TODO: Handle error.
-}
-```
-
-Then use that client to interact with the API:
-[snip]:# (bq-2)
-```go
-// Construct a query.
-q := c.Query(`
-    SELECT year, SUM(number)
-    FROM [bigquery-public-data:usa_names.usa_1910_2013]
-    WHERE name = "William"
-    GROUP BY year
-    ORDER BY year
-`)
-// Execute the query.
-it, err := q.Read(ctx)
-if err != nil {
-	// TODO: Handle error.
-}
-// Iterate through the results.
-for {
-	var values []bigquery.Value
-	err := it.Next(&values)
-	if err == iterator.Done {
-		break
-	}
-	if err != nil {
-		// TODO: Handle error.
-	}
-	fmt.Println(values)
-}
-```
-
-
-## Stackdriver Logging [![GoDoc](https://godoc.org/cloud.google.com/go/logging?status.svg)](https://godoc.org/cloud.google.com/go/logging)
-
-- [About Stackdriver Logging][cloud-logging]
-- [API documentation][cloud-logging-docs]
-- [Go client documentation][cloud-logging-ref]
-- [Complete sample programs](https://github.com/GoogleCloudPlatform/golang-samples/tree/master/logging)
-
-### Example Usage
-
-First create a `logging.Client` to use throughout your application:
-[snip]:# (logging-1)
-```go
-ctx := context.Background()
-client, err := logging.NewClient(ctx, "my-project")
-if err != nil {
-	// TODO: Handle error.
-}
-```
-
-Usually, you'll want to add log entries to a buffer to be periodically flushed
-(automatically and asynchronously) to the Stackdriver Logging service.
-[snip]:# (logging-2)
-```go
-logger := client.Logger("my-log")
-logger.Log(logging.Entry{Payload: "something happened!"})
-```
-
-Close your client before your program exits, to flush any buffered log entries.
-[snip]:# (logging-3)
-```go
-err = client.Close()
-if err != nil {
-	// TODO: Handle error.
-}
-```
-
-## Cloud Spanner [![GoDoc](https://godoc.org/cloud.google.com/go/spanner?status.svg)](https://godoc.org/cloud.google.com/go/spanner)
-
-- [About Cloud Spanner][cloud-spanner]
-- [API documentation][cloud-spanner-docs]
-- [Go client documentation](https://godoc.org/cloud.google.com/go/spanner)
-
-### Example Usage
-
-First create a `spanner.Client` to use throughout your application:
-
-[snip]:# (spanner-1)
-```go
-client, err := spanner.NewClient(ctx, "projects/P/instances/I/databases/D")
-if err != nil {
-	log.Fatal(err)
-}
-```
-
-[snip]:# (spanner-2)
-```go
-// Simple Reads And Writes
-_, err = client.Apply(ctx, []*spanner.Mutation{
-	spanner.Insert("Users",
-		[]string{"name", "email"},
-		[]interface{}{"alice", "a@example.com"})})
-if err != nil {
-	log.Fatal(err)
-}
-row, err := client.Single().ReadRow(ctx, "Users",
-	spanner.Key{"alice"}, []string{"email"})
-if err != nil {
-	log.Fatal(err)
-}
-```
-
-
-## Contributing
-
-Contributions are welcome. Please, see the
-[CONTRIBUTING](https://github.com/GoogleCloudPlatform/google-cloud-go/blob/master/CONTRIBUTING.md)
-document for details. We're using Gerrit for our code reviews. Please don't open pull
-requests against this repo, new pull requests will be automatically closed.
-
-Please note that this project is released with a Contributor Code of Conduct.
-By participating in this project you agree to abide by its terms.
-See [Contributor Code of Conduct](https://github.com/GoogleCloudPlatform/google-cloud-go/blob/master/CONTRIBUTING.md#contributor-code-of-conduct)
-for more information.
-
-[cloud-datastore]: https://cloud.google.com/datastore/
-[cloud-datastore-ref]: https://godoc.org/cloud.google.com/go/datastore
-[cloud-datastore-docs]: https://cloud.google.com/datastore/docs
-[cloud-datastore-activation]: https://cloud.google.com/datastore/docs/activate
-
-[cloud-firestore]: https://cloud.google.com/firestore/
-[cloud-firestore-ref]: https://godoc.org/cloud.google.com/go/firestore
-[cloud-firestore-docs]: https://cloud.google.com/firestore/docs
-[cloud-firestore-activation]: https://cloud.google.com/firestore/docs/activate
-
-[cloud-pubsub]: https://cloud.google.com/pubsub/
-[cloud-pubsub-ref]: https://godoc.org/cloud.google.com/go/pubsub
-[cloud-pubsub-docs]: https://cloud.google.com/pubsub/docs
-
-[cloud-storage]: https://cloud.google.com/storage/
-[cloud-storage-ref]: https://godoc.org/cloud.google.com/go/storage
-[cloud-storage-docs]: https://cloud.google.com/storage/docs
-[cloud-storage-create-bucket]: https://cloud.google.com/storage/docs/cloud-console#_creatingbuckets
-
-[cloud-bigtable]: https://cloud.google.com/bigtable/
-[cloud-bigtable-ref]: https://godoc.org/cloud.google.com/go/bigtable
-
-[cloud-bigquery]: https://cloud.google.com/bigquery/
-[cloud-bigquery-docs]: https://cloud.google.com/bigquery/docs
-[cloud-bigquery-ref]: https://godoc.org/cloud.google.com/go/bigquery
-
-[cloud-logging]: https://cloud.google.com/logging/
-[cloud-logging-docs]: https://cloud.google.com/logging/docs
-[cloud-logging-ref]: https://godoc.org/cloud.google.com/go/logging
-
-[cloud-monitoring]: https://cloud.google.com/monitoring/
-[cloud-monitoring-ref]: https://godoc.org/cloud.google.com/go/monitoring/apiv3
-
-[cloud-vision]: https://cloud.google.com/vision
-[cloud-vision-ref]: https://godoc.org/cloud.google.com/go/vision/apiv1
-
-[cloud-language]: https://cloud.google.com/natural-language
-[cloud-language-ref]: https://godoc.org/cloud.google.com/go/language/apiv1
-
-[cloud-speech]: https://cloud.google.com/speech
-[cloud-speech-ref]: https://godoc.org/cloud.google.com/go/speech/apiv1
-
-[cloud-spanner]: https://cloud.google.com/spanner/
-[cloud-spanner-ref]: https://godoc.org/cloud.google.com/go/spanner
-[cloud-spanner-docs]: https://cloud.google.com/spanner/docs
-
-[cloud-translation]: https://cloud.google.com/translation
-[cloud-translation-ref]: https://godoc.org/cloud.google.com/go/translation
-
-[cloud-trace]: https://cloud.google.com/trace/
-[cloud-trace-ref]: https://godoc.org/cloud.google.com/go/trace
-
-[cloud-video]: https://cloud.google.com/video-intelligence/
-[cloud-video-ref]: https://godoc.org/cloud.google.com/go/videointelligence/apiv1beta1
-
-[cloud-errors]: https://cloud.google.com/error-reporting/
-[cloud-errors-ref]: https://godoc.org/cloud.google.com/go/errorreporting
-
-[default-creds]: https://developers.google.com/identity/protocols/application-default-credentials
diff --git a/vendor/cloud.google.com/go/appveyor.yml b/vendor/cloud.google.com/go/appveyor.yml
deleted file mode 100644
index e66cd00..0000000
--- a/vendor/cloud.google.com/go/appveyor.yml
+++ /dev/null
@@ -1,32 +0,0 @@
-# This file configures AppVeyor (http://www.appveyor.com),
-# a Windows-based CI service similar to Travis.
-
-# Identifier for this run
-version: "{build}"
-
-# Clone the repo into this path, which conforms to the standard
-# Go workspace structure.
-clone_folder: c:\gopath\src\cloud.google.com\go
-
-environment:
-  GOPATH: c:\gopath
-  GCLOUD_TESTS_GOLANG_PROJECT_ID: dulcet-port-762
-  GCLOUD_TESTS_GOLANG_KEY: c:\gopath\src\cloud.google.com\go\key.json
-  KEYFILE_CONTENTS:
-    secure: IvRbDAhM2PIQqzVkjzJ4FjizUvoQ+c3vG/qhJQG+HlZ/L5KEkqLu+x6WjLrExrNMyGku4znB2jmbTrUW3Ob4sGG+R5vvqeQ3YMHCVIkw5CxY+/bUDkW5RZWsVbuCnNa/vKsWmCP+/sZW6ICe29yKJ2ZOb6QaauI4s9R6j+cqBbU9pumMGYFRb0Rw3uUU7DKmVFCy+NjTENZIlDP9rmjANgAzigowJJEb2Tg9sLlQKmQeKiBSRN8lKc5Nq60a+fIzHGKvql4eIitDDDpOpyHv15/Xr1BzFw2yDoiR4X1lng0u7q0X9RgX4VIYa6gT16NXBEmQgbuX8gh7SfPMp9RhiZD9sVUaV+yogEabYpyPnmUURo0hXwkctKaBkQlEmKvjHwF5dvbg8+yqGhwtjAgFNimXG3INrwQsfQsZskkQWanutbJf9xy50GyWWFZZdi0uT4oXP/b5P7aklPXKXsvrJKBh7RjEaqBrhi86IJwOjBspvoR4l2WmcQyxb2xzQS1pjbBJFQfYJJ8+JgsstTL8PBO9d4ybJC0li1Om1qnWxkaewvPxxuoHJ9LpRKof19yRYWBmhTXb2tTASKG/zslvl4fgG4DmQBS93WC7dsiGOhAraGw2eCTgd0lYZOhk1FjWl9TS80aktXxzH/7nTvem5ohm+eDl6O0wnTL4KXjQVNSQ1PyLn4lGRJ5MNGzBTRFWIr2API2rca4Fysyfh/UdmazPGlNbY9JPGqb9+F04QzLfqm+Zz/cHy59E7lOSMBlUI4KD6d6ZNNKNRH+/g9i+fSiyiXKugTfda8KBnWGyPwprxuWGYaiQUGUYOwJY5R6x5c4mjImAB310V+Wo33UbWFJiwxEDsiCNqW1meVkBzt2er26vh4qbgCUIQ3iM3gFPfHgy+QxkmIhic7Q1HYacQElt8AAP41M7cCKWCuZidegP37MBB//mjjiNt047ZSQEvB4tqsX/OvfbByVef+cbtVw9T0yjHvmCdPW1XrhyrCCgclu6oYYdbmc5D7BBDRbjjMWGv6YvceAbfGf6ukdB5PuV+TGEN/FoQ1QTRA6Aqf+3fLMg4mS4oyTfw5xyYNbv3qoyLPrp+BnxI53WB9p0hfMg4n9FD6NntBxjDq+Q3Lk/bjC/Y4MaRWdzbMzF9a0lgGfcw9DURlK5p7uGJC9vg34feNoQprxVEZRQ01cHLeob6eGkYm4HxSRx8JY39Mh+9wzJo+k/aIvFleNC3e35NOrkXr6wb5e42n2DwBdPqdNolTLtLFRglAL1LTpp27UjvjieWJAKfoDTR5CKl01sZqt0wPdLLcvsMj6CiPFmccUIOYeZMe86kLBD61Qa5F1EwkgO3Om2qSjW96FzL4skRc+BmU5RrHlAFSldR1wpUgtkUMv9vH5Cy+UJdcvpZ8KbmhZ2PsjF7ddJ1ve9RAw3cP325AyIMwZ77Ef1mgTM0NJze6eSW1qKlEsgt1FADPyeUu1NQTA2H2dueMPGlArWTSUgyWR9AdfpqouT7eg0JWI5w+yUZZC+/rPglYbt84oLmYpwuli0z8FyEQRPIc3EtkfWIv/yYgDr2TZ0N2KvGfpi/MAUWgxI1gleC2uKgEOEtuJthd3XZjF2NoE7IBqjQOINybcJOjyeB5vRLDY1FLuxYzdg1y1etkV4XQig/vje
-
-install:
-  # Info for debugging.
-  - echo %PATH%
-  - go version
-  - go env
-  - go get -v -d -t ./...
-
-
-# Provide a build script, or AppVeyor will call msbuild.
-build_script:
-  - go install -v ./...
-  - echo %KEYFILE_CONTENTS% > %GCLOUD_TESTS_GOLANG_KEY%
-
-test_script:
-  - go test -v ./...
diff --git a/vendor/cloud.google.com/go/cloud.go b/vendor/cloud.google.com/go/cloud.go
deleted file mode 100644
index 6ba428d..0000000
--- a/vendor/cloud.google.com/go/cloud.go
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2014 Google Inc. 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 cloud is the root of the packages used to access Google Cloud
-// Services. See https://godoc.org/cloud.google.com/go for a full list
-// of sub-packages.
-//
-// This package documents how to authorize and authenticate the sub packages.
-package cloud // import "cloud.google.com/go"
diff --git a/vendor/cloud.google.com/go/internal/version/update_version.sh b/vendor/cloud.google.com/go/internal/version/update_version.sh
deleted file mode 100755
index fecf1f0..0000000
--- a/vendor/cloud.google.com/go/internal/version/update_version.sh
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/bash
-
-today=$(date +%Y%m%d)
-
-sed -i -r -e 's/const Repo = "([0-9]{8})"/const Repo = "'$today'"/' $GOFILE
-
diff --git a/vendor/cloud.google.com/go/key.json.enc b/vendor/cloud.google.com/go/key.json.enc
deleted file mode 100644
index a8978a9..0000000
--- a/vendor/cloud.google.com/go/key.json.enc
+++ /dev/null
Binary files differ
diff --git a/vendor/cloud.google.com/go/logging/apiv2/README.md b/vendor/cloud.google.com/go/logging/apiv2/README.md
deleted file mode 100644
index d2d9a17..0000000
--- a/vendor/cloud.google.com/go/logging/apiv2/README.md
+++ /dev/null
@@ -1,11 +0,0 @@
-Auto-generated logging v2 clients
-=================================
-
-This package includes auto-generated clients for the logging v2 API.
-
-Use the handwritten logging client (in the parent directory,
-cloud.google.com/go/logging) in preference to this.
-
-This code is EXPERIMENTAL and subject to CHANGE AT ANY TIME.
-
-
diff --git a/vendor/cloud.google.com/go/old-news.md b/vendor/cloud.google.com/go/old-news.md
deleted file mode 100644
index 896980d..0000000
--- a/vendor/cloud.google.com/go/old-news.md
+++ /dev/null
@@ -1,486 +0,0 @@
-_July 31, 2017_
-
-*v0.11.0*
-
-- Clients for spanner, pubsub and video are now in beta.
-
-- New client for DLP.
-
-- spanner: performance and testing improvements.
-
-- storage: requester-pays buckets are supported.
-
-- storage, profiler, bigtable, bigquery: bug fixes and other minor improvements.
-
-- pubsub: bug fixes and other minor improvements
-
-_June 17, 2017_
-
-
-*v0.10.0*
-
-- pubsub: Subscription.ModifyPushConfig replaced with Subscription.Update.
-
-- pubsub: Subscription.Receive now runs concurrently for higher throughput.
-
-- vision: cloud.google.com/go/vision is deprecated. Use
-cloud.google.com/go/vision/apiv1 instead.
-
-- translation: now stable.
-
-- trace: several changes to the surface. See the link below.
-
-[Code changes required from v0.9.0.](https://github.com/GoogleCloudPlatform/google-cloud-go/blob/master/MIGRATION.md)
-
-
-_March 17, 2017_
-
-Breaking Pubsub changes.
-* Publish is now asynchronous
-([announcement](https://groups.google.com/d/topic/google-api-go-announce/aaqRDIQ3rvU/discussion)).
-* Subscription.Pull replaced by Subscription.Receive, which takes a callback ([announcement](https://groups.google.com/d/topic/google-api-go-announce/8pt6oetAdKc/discussion)).
-* Message.Done replaced with Message.Ack and Message.Nack.
-
-_February 14, 2017_
-
-Release of a client library for Spanner. See
-the
-[blog post](https://cloudplatform.googleblog.com/2017/02/introducing-Cloud-Spanner-a-global-database-service-for-mission-critical-applications.html).
-
-Note that although the Spanner service is beta, the Go client library is alpha.
-
-_December 12, 2016_
-
-Beta release of BigQuery, DataStore, Logging and Storage. See the
-[blog post](https://cloudplatform.googleblog.com/2016/12/announcing-new-google-cloud-client.html).
-
-Also, BigQuery now supports structs. Read a row directly into a struct with
-`RowIterator.Next`, and upload a row directly from a struct with `Uploader.Put`.
-You can also use field tags. See the [package documentation][cloud-bigquery-ref]
-for details.
-
-_December 5, 2016_
-
-More changes to BigQuery:
-
-* The `ValueList` type was removed. It is no longer necessary. Instead of
-   ```go
-   var v ValueList
-   ... it.Next(&v) ..
-   ```
-   use
-
-   ```go
-   var v []Value
-   ... it.Next(&v) ...
-   ```
-
-* Previously, repeatedly calling `RowIterator.Next` on the same `[]Value` or
-  `ValueList` would append to the slice. Now each call resets the size to zero first.
-
-* Schema inference will infer the SQL type BYTES for a struct field of
-  type []byte. Previously it inferred STRING.
-
-* The types `uint`, `uint64` and `uintptr` are no longer supported in schema
-  inference. BigQuery's integer type is INT64, and those types may hold values
-  that are not correctly represented in a 64-bit signed integer.
-
-* The SQL types DATE, TIME and DATETIME are now supported. They correspond to
-  the `Date`, `Time` and `DateTime` types in the new `cloud.google.com/go/civil`
-  package.
-
-_November 17, 2016_
-
-Change to BigQuery: values from INTEGER columns will now be returned as int64,
-not int. This will avoid errors arising from large values on 32-bit systems.
-
-_November 8, 2016_
-
-New datastore feature: datastore now encodes your nested Go structs as Entity values,
-instead of a flattened list of the embedded struct's fields.
-This means that you may now have twice-nested slices, eg.
-```go
-type State struct {
-  Cities  []struct{
-    Populations []int
-  }
-}
-```
-
-See [the announcement](https://groups.google.com/forum/#!topic/google-api-go-announce/79jtrdeuJAg) for
-more details.
-
-_November 8, 2016_
-
-Breaking changes to datastore: contexts no longer hold namespaces; instead you
-must set a key's namespace explicitly. Also, key functions have been changed
-and renamed.
-
-* The WithNamespace function has been removed. To specify a namespace in a Query, use the Query.Namespace method:
-  ```go
-  q := datastore.NewQuery("Kind").Namespace("ns")
-  ```
-
-* All the fields of Key are exported. That means you can construct any Key with a struct literal:
-  ```go
-  k := &Key{Kind: "Kind",  ID: 37, Namespace: "ns"}
-  ```
-
-* As a result of the above, the Key methods Kind, ID, d.Name, Parent, SetParent and Namespace have been removed.
-
-* `NewIncompleteKey` has been removed, replaced by `IncompleteKey`. Replace
-  ```go
-  NewIncompleteKey(ctx, kind, parent)
-  ```
-  with
-  ```go
-  IncompleteKey(kind, parent)
-  ```
-  and if you do use namespaces, make sure you set the namespace on the returned key.
-
-* `NewKey` has been removed, replaced by `NameKey` and `IDKey`. Replace
-  ```go
-  NewKey(ctx, kind, name, 0, parent)
-  NewKey(ctx, kind, "", id, parent)
-  ```
-  with
-  ```go
-  NameKey(kind, name, parent)
-  IDKey(kind, id, parent)
-  ```
-  and if you do use namespaces, make sure you set the namespace on the returned key.
-
-* The `Done` variable has been removed. Replace `datastore.Done` with `iterator.Done`, from the package `google.golang.org/api/iterator`.
-
-* The `Client.Close` method will have a return type of error. It will return the result of closing the underlying gRPC connection.
-
-See [the announcement](https://groups.google.com/forum/#!topic/google-api-go-announce/hqXtM_4Ix-0) for
-more details.
-
-_October 27, 2016_
-
-Breaking change to bigquery: `NewGCSReference` is now a function,
-not a method on `Client`.
-
-New bigquery feature: `Table.LoaderFrom` now accepts a `ReaderSource`, enabling
-loading data into a table from a file or any `io.Reader`.
-
-_October 21, 2016_
-
-Breaking change to pubsub: removed `pubsub.Done`.
-
-Use `iterator.Done` instead, where `iterator` is the package
-`google.golang.org/api/iterator`.
-
-_October 19, 2016_
-
-Breaking changes to cloud.google.com/go/bigquery:
-
-* Client.Table and Client.OpenTable have been removed.
-    Replace
-    ```go
-    client.OpenTable("project", "dataset", "table")
-    ```
-    with
-    ```go
-    client.DatasetInProject("project", "dataset").Table("table")
-    ```
-
-* Client.CreateTable has been removed.
-    Replace
-    ```go
-    client.CreateTable(ctx, "project", "dataset", "table")
-    ```
-    with
-    ```go
-    client.DatasetInProject("project", "dataset").Table("table").Create(ctx)
-    ```
-
-* Dataset.ListTables have been replaced with Dataset.Tables.
-    Replace
-    ```go
-    tables, err := ds.ListTables(ctx)
-    ```
-    with
-    ```go
-    it := ds.Tables(ctx)
-    for {
-        table, err := it.Next()
-        if err == iterator.Done {
-            break
-        }
-        if err != nil {
-            // TODO: Handle error.
-        }
-        // TODO: use table.
-    }
-    ```
-
-* Client.Read has been replaced with Job.Read, Table.Read and Query.Read.
-    Replace
-    ```go
-    it, err := client.Read(ctx, job)
-    ```
-    with
-    ```go
-    it, err := job.Read(ctx)
-    ```
-  and similarly for reading from tables or queries.
-
-* The iterator returned from the Read methods is now named RowIterator. Its
-  behavior is closer to the other iterators in these libraries. It no longer
-  supports the Schema method; see the next item.
-    Replace
-    ```go
-    for it.Next(ctx) {
-        var vals ValueList
-        if err := it.Get(&vals); err != nil {
-            // TODO: Handle error.
-        }
-        // TODO: use vals.
-    }
-    if err := it.Err(); err != nil {
-        // TODO: Handle error.
-    }
-    ```
-    with
-    ```
-    for {
-        var vals ValueList
-        err := it.Next(&vals)
-        if err == iterator.Done {
-            break
-        }
-        if err != nil {
-            // TODO: Handle error.
-        }
-        // TODO: use vals.
-    }
-    ```
-    Instead of the `RecordsPerRequest(n)` option, write
-    ```go
-    it.PageInfo().MaxSize = n
-    ```
-    Instead of the `StartIndex(i)` option, write
-    ```go
-    it.StartIndex = i
-    ```
-
-* ValueLoader.Load now takes a Schema in addition to a slice of Values.
-    Replace
-    ```go
-    func (vl *myValueLoader) Load(v []bigquery.Value)
-    ```
-    with
-    ```go
-    func (vl *myValueLoader) Load(v []bigquery.Value, s bigquery.Schema)
-    ```
-
-
-* Table.Patch is replace by Table.Update.
-    Replace
-    ```go
-    p := table.Patch()
-    p.Description("new description")
-    metadata, err := p.Apply(ctx)
-    ```
-    with
-    ```go
-    metadata, err := table.Update(ctx, bigquery.TableMetadataToUpdate{
-        Description: "new description",
-    })
-    ```
-
-* Client.Copy is replaced by separate methods for each of its four functions.
-  All options have been replaced by struct fields.
-
-  * To load data from Google Cloud Storage into a table, use Table.LoaderFrom.
-
-    Replace
-    ```go
-    client.Copy(ctx, table, gcsRef)
-    ```
-    with
-    ```go
-    table.LoaderFrom(gcsRef).Run(ctx)
-    ```
-    Instead of passing options to Copy, set fields on the Loader:
-    ```go
-    loader := table.LoaderFrom(gcsRef)
-    loader.WriteDisposition = bigquery.WriteTruncate
-    ```
-
-  * To extract data from a table into Google Cloud Storage, use
-    Table.ExtractorTo. Set fields on the returned Extractor instead of
-    passing options.
-
-    Replace
-    ```go
-    client.Copy(ctx, gcsRef, table)
-    ```
-    with
-    ```go
-    table.ExtractorTo(gcsRef).Run(ctx)
-    ```
-
-  * To copy data into a table from one or more other tables, use
-    Table.CopierFrom. Set fields on the returned Copier instead of passing options.
-
-    Replace
-    ```go
-    client.Copy(ctx, dstTable, srcTable)
-    ```
-    with
-    ```go
-    dst.Table.CopierFrom(srcTable).Run(ctx)
-    ```
-
-  * To start a query job, create a Query and call its Run method. Set fields
-  on the query instead of passing options.
-
-    Replace
-    ```go
-    client.Copy(ctx, table, query)
-    ```
-    with
-    ```go
-    query.Run(ctx)
-    ```
-
-* Table.NewUploader has been renamed to Table.Uploader. Instead of options,
-  configure an Uploader by setting its fields.
-    Replace
-    ```go
-    u := table.NewUploader(bigquery.UploadIgnoreUnknownValues())
-    ```
-    with
-    ```go
-    u := table.NewUploader(bigquery.UploadIgnoreUnknownValues())
-    u.IgnoreUnknownValues = true
-    ```
-
-_October 10, 2016_
-
-Breaking changes to cloud.google.com/go/storage:
-
-* AdminClient replaced by methods on Client.
-    Replace
-    ```go
-    adminClient.CreateBucket(ctx, bucketName, attrs)
-    ```
-    with
-    ```go
-    client.Bucket(bucketName).Create(ctx, projectID, attrs)
-    ```
-
-* BucketHandle.List replaced by BucketHandle.Objects.
-    Replace
-    ```go
-    for query != nil {
-        objs, err := bucket.List(d.ctx, query)
-        if err != nil { ... }
-        query = objs.Next
-        for _, obj := range objs.Results {
-            fmt.Println(obj)
-        }
-    }
-    ```
-    with
-    ```go
-    iter := bucket.Objects(d.ctx, query)
-    for {
-        obj, err := iter.Next()
-        if err == iterator.Done {
-            break
-        }
-        if err != nil { ... }
-        fmt.Println(obj)
-    }
-    ```
-    (The `iterator` package is at `google.golang.org/api/iterator`.)
-
-    Replace `Query.Cursor` with `ObjectIterator.PageInfo().Token`.
-    
-    Replace `Query.MaxResults` with `ObjectIterator.PageInfo().MaxSize`.
-
-
-* ObjectHandle.CopyTo replaced by ObjectHandle.CopierFrom.
-    Replace
-    ```go
-    attrs, err := src.CopyTo(ctx, dst, nil)
-    ```
-    with
-    ```go
-    attrs, err := dst.CopierFrom(src).Run(ctx)
-    ```
-
-    Replace
-    ```go
-    attrs, err := src.CopyTo(ctx, dst, &storage.ObjectAttrs{ContextType: "text/html"})
-    ```
-    with
-    ```go
-    c := dst.CopierFrom(src)
-    c.ContextType = "text/html"
-    attrs, err := c.Run(ctx)
-    ```
-
-* ObjectHandle.ComposeFrom replaced by ObjectHandle.ComposerFrom.
-    Replace
-    ```go
-    attrs, err := dst.ComposeFrom(ctx, []*storage.ObjectHandle{src1, src2}, nil)
-    ```
-    with
-    ```go
-    attrs, err := dst.ComposerFrom(src1, src2).Run(ctx)
-    ```
-
-* ObjectHandle.Update's ObjectAttrs argument replaced by ObjectAttrsToUpdate.
-    Replace
-    ```go
-    attrs, err := obj.Update(ctx, &storage.ObjectAttrs{ContextType: "text/html"})
-    ```
-    with
-    ```go
-    attrs, err := obj.Update(ctx, storage.ObjectAttrsToUpdate{ContextType: "text/html"})
-    ```
-
-* ObjectHandle.WithConditions replaced by ObjectHandle.If.
-    Replace
-    ```go
-    obj.WithConditions(storage.Generation(gen), storage.IfMetaGenerationMatch(mgen))
-    ```
-    with
-    ```go
-    obj.Generation(gen).If(storage.Conditions{MetagenerationMatch: mgen})
-    ```
-
-    Replace
-    ```go
-    obj.WithConditions(storage.IfGenerationMatch(0))
-    ```
-    with
-    ```go
-    obj.If(storage.Conditions{DoesNotExist: true})
-    ```
-
-* `storage.Done` replaced by `iterator.Done` (from package `google.golang.org/api/iterator`).
-
-_October 6, 2016_
-
-Package preview/logging deleted. Use logging instead.
-
-_September 27, 2016_
-
-Logging client replaced with preview version (see below).
-
-_September 8, 2016_
-
-* New clients for some of Google's Machine Learning APIs: Vision, Speech, and
-Natural Language.
-
-* Preview version of a new [Stackdriver Logging][cloud-logging] client in
-[`cloud.google.com/go/preview/logging`](https://godoc.org/cloud.google.com/go/preview/logging).
-This client uses gRPC as its transport layer, and supports log reading, sinks
-and metrics. It will replace the current client at `cloud.google.com/go/logging` shortly.
-
diff --git a/vendor/cloud.google.com/go/run-tests.sh b/vendor/cloud.google.com/go/run-tests.sh
deleted file mode 100755
index f47ff50..0000000
--- a/vendor/cloud.google.com/go/run-tests.sh
+++ /dev/null
@@ -1,88 +0,0 @@
-#!/bin/bash
-
-# Selectively run tests for this repo, based on what has changed
-# in a commit. Runs short tests for the whole repo, and full tests
-# for changed directories.
-
-set -e
-
-prefix=cloud.google.com/go
-
-dryrun=false
-if [[ $1 == "-n" ]]; then
-  dryrun=true
-  shift
-fi
-
-if [[ $1 == "" ]]; then
-  echo >&2 "usage: $0 [-n] COMMIT"
-  exit 1
-fi
-
-# Files or directories that cause all tests to run if modified.
-declare -A run_all
-run_all=([.travis.yml]=1 [run-tests.sh]=1)
-
-function run {
-  if $dryrun; then
-    echo $*
-  else
-    (set -x; $*)
-  fi
-}
-
-
-# Find all the packages that have changed in this commit.
-declare -A changed_packages
-
-for f in $(git diff-tree --no-commit-id --name-only -r $1); do
-  if [[ ${run_all[$f]} == 1 ]]; then
-    # This change requires a full test. Do it and exit.
-    run go test -race -v $prefix/...
-    exit
-  fi
-  # Map, e.g., "spanner/client.go" to "$prefix/spanner".
-  d=$(dirname $f)
-  if [[ $d == "." ]]; then
-    pkg=$prefix
-  else
-    pkg=$prefix/$d
-  fi
-  changed_packages[$pkg]=1
-done
-
-echo "changed packages: ${!changed_packages[*]}"
-
-
-# Reports whether its argument, a package name, depends (recursively)
-# on a changed package.
-function depends_on_changed_package {
-  # According to go list, a package does not depend on itself, so
-  # we test that separately.
-  if [[ ${changed_packages[$1]} == 1 ]]; then
-    return 0
-  fi
-  for dep in $(go list -f '{{range .Deps}}{{.}} {{end}}' $1); do
-    if [[ ${changed_packages[$dep]} == 1 ]]; then
-      return 0
-    fi
-  done
-  return 1
-}
-
-# Collect the packages into two separate lists. (It is faster go test a list of
-# packages than to individually go test each one.)
-
-shorts=
-fulls=
-for pkg in $(go list $prefix/...); do      # for each package in the repo
-  if depends_on_changed_package $pkg; then # if it depends on a changed package
-    fulls="$fulls $pkg"                    # run the full test
-  else                                     # otherwise
-    shorts="$shorts $pkg"                  # run the short test
-  fi
-done
-run go test -race -v -short $shorts
-if [[ $fulls != "" ]]; then
-  run go test -race -v $fulls
-fi
diff --git a/vendor/github.com/NYTimes/gziphandler/.gitignore b/vendor/github.com/NYTimes/gziphandler/.gitignore
deleted file mode 100644
index 1377554..0000000
--- a/vendor/github.com/NYTimes/gziphandler/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*.swp
diff --git a/vendor/github.com/NYTimes/gziphandler/.travis.yml b/vendor/github.com/NYTimes/gziphandler/.travis.yml
deleted file mode 100644
index d2b67f6..0000000
--- a/vendor/github.com/NYTimes/gziphandler/.travis.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-language: go
-
-go:
-  - 1.7
-  - 1.8
-  - tip
diff --git a/vendor/github.com/NYTimes/gziphandler/CODE_OF_CONDUCT.md b/vendor/github.com/NYTimes/gziphandler/CODE_OF_CONDUCT.md
deleted file mode 100644
index cdbca19..0000000
--- a/vendor/github.com/NYTimes/gziphandler/CODE_OF_CONDUCT.md
+++ /dev/null
@@ -1,75 +0,0 @@
----
-layout: code-of-conduct
-version: v1.0
----
-
-This code of conduct outlines our expectations for participants within the **NYTimes/gziphandler** community, as well as steps to reporting unacceptable behavior. We are committed to providing a welcoming and inspiring community for all and expect our code of conduct to be honored. Anyone who violates this code of conduct may be banned from the community.
-
-Our open source community strives to:
-
-* **Be friendly and patient.**
-* **Be welcoming**: We strive to be a community that welcomes and supports people of all backgrounds and identities. This includes, but is not limited to members of any race, ethnicity, culture, national origin, colour, immigration status, social and economic class, educational level, sex, sexual orientation, gender identity and expression, age, size, family status, political belief, religion, and mental and physical ability.
-* **Be considerate**: Your work will be used by other people, and you in turn will depend on the work of others. Any decision you take will affect users and colleagues, and you should take those consequences into account when making decisions. Remember that we're a world-wide community, so you might not be communicating in someone else's primary language.
-* **Be respectful**:  Not all of us will agree all the time, but disagreement is no excuse for poor behavior and poor manners. We might all experience some frustration now and then, but we cannot allow that frustration to turn into a personal attack. It’s important to remember that a community where people feel uncomfortable or threatened is not a productive one.
-* **Be careful in the words that we choose**: we are a community of professionals, and we conduct ourselves professionally. Be kind to others. Do not insult or put down other participants. Harassment and other exclusionary behavior aren't acceptable.
-* **Try to understand why we disagree**: Disagreements, both social and technical, happen all the time. It is important that we resolve disagreements and differing views constructively. Remember that we’re different. The strength of our community comes from its diversity, people from a wide range of backgrounds. Different people have different perspectives on issues. Being unable to understand why someone holds a viewpoint doesn’t mean that they’re wrong. Don’t forget that it is human to err and blaming each other doesn’t get us anywhere. Instead, focus on helping to resolve issues and learning from mistakes.
-
-## Definitions
-
-Harassment includes, but is not limited to:
-
-- Offensive comments related to gender, gender identity and expression, sexual orientation, disability, mental illness, neuro(a)typicality, physical appearance, body size, race, age, regional discrimination, political or religious affiliation
-- Unwelcome comments regarding a person’s lifestyle choices and practices, including those related to food, health, parenting, drugs, and employment
-- Deliberate misgendering. This includes deadnaming or persistently using a pronoun that does not correctly reflect a person's gender identity. You must address people by the name they give you when not addressing them by their username or handle
-- Physical contact and simulated physical contact (eg, textual descriptions like “*hug*” or “*backrub*”) without consent or after a request to stop
-- Threats of violence, both physical and psychological
-- Incitement of violence towards any individual, including encouraging a person to commit suicide or to engage in self-harm
-- Deliberate intimidation
-- Stalking or following
-- Harassing photography or recording, including logging online activity for harassment purposes
-- Sustained disruption of discussion
-- Unwelcome sexual attention, including gratuitous or off-topic sexual images or behaviour
-- Pattern of inappropriate social contact, such as requesting/assuming inappropriate levels of intimacy with others
-- Continued one-on-one communication after requests to cease
-- Deliberate “outing” of any aspect of a person’s identity without their consent except as necessary to protect others from intentional abuse
-- Publication of non-harassing private communication
-
-Our open source community prioritizes marginalized people’s safety over privileged people’s comfort. We will not act on complaints regarding:
-
-- ‘Reverse’ -isms, including ‘reverse racism,’ ‘reverse sexism,’ and ‘cisphobia’
-- Reasonable communication of boundaries, such as “leave me alone,” “go away,” or “I’m not discussing this with you”
-- Refusal to explain or debate social justice concepts
-- Communicating in a ‘tone’ you don’t find congenial
-- Criticizing racist, sexist, cissexist, or otherwise oppressive behavior or assumptions
-
-
-### Diversity Statement
-
-We encourage everyone to participate and are committed to building a community for all. Although we will fail at times, we seek to treat everyone both as fairly and equally as possible. Whenever a participant has made a mistake, we expect them to take responsibility for it. If someone has been harmed or offended, it is our responsibility to listen carefully and respectfully, and do our best to right the wrong.
-
-Although this list cannot be exhaustive, we explicitly honor diversity in age, gender, gender identity or expression, culture, ethnicity, language, national origin, political beliefs, profession, race, religion, sexual orientation, socioeconomic status, and technical ability. We will not tolerate discrimination based on any of the protected
-characteristics above, including participants with disabilities.
-
-### Reporting Issues
-
-If you experience or witness unacceptable behavior—or have any other concerns—please report it by contacting us via **code@nytimes.com**. All reports will be handled with discretion. In your report please include:
-
-- Your contact information.
-- Names (real, nicknames, or pseudonyms) of any individuals involved. If there are additional witnesses, please
-include them as well. Your account of what occurred, and if you believe the incident is ongoing. If there is a publicly available record (e.g. a mailing list archive or a public IRC logger), please include a link.
-- Any additional information that may be helpful.
-
-After filing a report, a representative will contact you personally, review the incident, follow up with any additional questions, and make a decision as to how to respond. If the person who is harassing you is part of the response team, they will recuse themselves from handling your incident. If the complaint originates from a member of the response team, it will be handled by a different member of the response team. We will respect confidentiality requests for the purpose of protecting victims of abuse.
-
-### Attribution & Acknowledgements
-
-We all stand on the shoulders of giants across many open source communities.  We'd like to thank the communities and projects that established code of conducts and diversity statements as our inspiration:
-
-* [Django](https://www.djangoproject.com/conduct/reporting/)
-* [Python](https://www.python.org/community/diversity/)
-* [Ubuntu](http://www.ubuntu.com/about/about-ubuntu/conduct)
-* [Contributor Covenant](http://contributor-covenant.org/)
-* [Geek Feminism](http://geekfeminism.org/about/code-of-conduct/)
-* [Citizen Code of Conduct](http://citizencodeofconduct.org/)
-
-This Code of Conduct was based on https://github.com/todogroup/opencodeofconduct
diff --git a/vendor/github.com/NYTimes/gziphandler/CONTRIBUTING.md b/vendor/github.com/NYTimes/gziphandler/CONTRIBUTING.md
deleted file mode 100644
index b89a9eb..0000000
--- a/vendor/github.com/NYTimes/gziphandler/CONTRIBUTING.md
+++ /dev/null
@@ -1,30 +0,0 @@
-# Contributing to NYTimes/gziphandler
-
-This is an open source project started by handful of developers at The New York Times and open to the entire Go community.
-
-We really appreciate your help!
-
-## Filing issues
-
-When filing an issue, make sure to answer these five questions:
-
-1. What version of Go are you using (`go version`)?
-2. What operating system and processor architecture are you using?
-3. What did you do?
-4. What did you expect to see?
-5. What did you see instead?
-
-## Contributing code
-
-Before submitting changes, please follow these guidelines:
-
-1. Check the open issues and pull requests for existing discussions.
-2. Open an issue to discuss a new feature.
-3. Write tests.
-4. Make sure code follows the ['Go Code Review Comments'](https://github.com/golang/go/wiki/CodeReviewComments).
-5. Make sure your changes pass `go test`.
-6. Make sure the entire test suite passes locally and on Travis CI.
-7. Open a Pull Request.
-8. [Squash your commits](http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html) after receiving feedback and add a [great commit message](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html).
-
-Unless otherwise noted, the gziphandler source files are distributed under the Apache 2.0-style license found in the LICENSE.md file.
diff --git a/vendor/github.com/NYTimes/gziphandler/README.md b/vendor/github.com/NYTimes/gziphandler/README.md
deleted file mode 100644
index 6d72460..0000000
--- a/vendor/github.com/NYTimes/gziphandler/README.md
+++ /dev/null
@@ -1,52 +0,0 @@
-Gzip Handler
-============
-
-This is a tiny Go package which wraps HTTP handlers to transparently gzip the
-response body, for clients which support it. Although it's usually simpler to
-leave that to a reverse proxy (like nginx or Varnish), this package is useful
-when that's undesirable.
-
-
-## Usage
-
-Call `GzipHandler` with any handler (an object which implements the
-`http.Handler` interface), and it'll return a new handler which gzips the
-response. For example:
-
-```go
-package main
-
-import (
-	"io"
-	"net/http"
-	"github.com/NYTimes/gziphandler"
-)
-
-func main() {
-	withoutGz := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
-		w.Header().Set("Content-Type", "text/plain")
-		io.WriteString(w, "Hello, World")
-	})
-
-	withGz := gziphandler.GzipHandler(withoutGz)
-
-	http.Handle("/", withGz)
-	http.ListenAndServe("0.0.0.0:8000", nil)
-}
-```
-
-
-## Documentation
-
-The docs can be found at [godoc.org][docs], as usual.
-
-
-## License
-
-[Apache 2.0][license].
-
-
-
-
-[docs]:     https://godoc.org/github.com/nytimes/gziphandler
-[license]:  https://github.com/nytimes/gziphandler/blob/master/LICENSE.md
diff --git a/vendor/github.com/golang/protobuf/.gitignore b/vendor/github.com/golang/protobuf/.gitignore
deleted file mode 100644
index 8f5b596..0000000
--- a/vendor/github.com/golang/protobuf/.gitignore
+++ /dev/null
@@ -1,16 +0,0 @@
-.DS_Store
-*.[568ao]
-*.ao
-*.so
-*.pyc
-._*
-.nfs.*
-[568a].out
-*~
-*.orig
-core
-_obj
-_test
-_testmain.go
-protoc-gen-go/testdata/multi/*.pb.go
-_conformance/_conformance
diff --git a/vendor/github.com/golang/protobuf/.travis.yml b/vendor/github.com/golang/protobuf/.travis.yml
deleted file mode 100644
index 93c6780..0000000
--- a/vendor/github.com/golang/protobuf/.travis.yml
+++ /dev/null
@@ -1,18 +0,0 @@
-sudo: false
-language: go
-go:
-- 1.6.x
-- 1.7.x
-- 1.8.x
-- 1.9.x
-
-install:
-  - go get -v -d -t github.com/golang/protobuf/...
-  - curl -L https://github.com/google/protobuf/releases/download/v3.3.0/protoc-3.3.0-linux-x86_64.zip -o /tmp/protoc.zip
-  - unzip /tmp/protoc.zip -d $HOME/protoc
-
-env:
-  - PATH=$HOME/protoc/bin:$PATH
-
-script:
-  - make all test
diff --git a/vendor/github.com/golang/protobuf/Make.protobuf b/vendor/github.com/golang/protobuf/Make.protobuf
deleted file mode 100644
index 15071de..0000000
--- a/vendor/github.com/golang/protobuf/Make.protobuf
+++ /dev/null
@@ -1,40 +0,0 @@
-# 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
-# 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.
-
-# Includable Makefile to add a rule for generating .pb.go files from .proto files
-# (Google protocol buffer descriptions).
-# Typical use if myproto.proto is a file in package mypackage in this directory:
-#
-#	include $(GOROOT)/src/pkg/github.com/golang/protobuf/Make.protobuf
-
-%.pb.go:	%.proto
-	protoc --go_out=. $<
-
diff --git a/vendor/github.com/golang/protobuf/Makefile b/vendor/github.com/golang/protobuf/Makefile
deleted file mode 100644
index a1421d8..0000000
--- a/vendor/github.com/golang/protobuf/Makefile
+++ /dev/null
@@ -1,55 +0,0 @@
-# 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
-# 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.
-
-
-all:	install
-
-install:
-	go install ./proto ./jsonpb ./ptypes
-	go install ./protoc-gen-go
-
-test:
-	go test ./proto ./jsonpb ./ptypes
-	make -C protoc-gen-go/testdata test
-
-clean:
-	go clean ./...
-
-nuke:
-	go clean -i ./...
-
-regenerate:
-	make -C protoc-gen-go/descriptor regenerate
-	make -C protoc-gen-go/plugin regenerate
-	make -C protoc-gen-go/testdata regenerate
-	make -C proto/testdata regenerate
-	make -C jsonpb/jsonpb_test_proto regenerate
-	make -C _conformance regenerate
diff --git a/vendor/github.com/golang/protobuf/README.md b/vendor/github.com/golang/protobuf/README.md
deleted file mode 100644
index 9c4c815..0000000
--- a/vendor/github.com/golang/protobuf/README.md
+++ /dev/null
@@ -1,244 +0,0 @@
-# Go support for Protocol Buffers
-
-[![Build Status](https://travis-ci.org/golang/protobuf.svg?branch=master)](https://travis-ci.org/golang/protobuf)
-[![GoDoc](https://godoc.org/github.com/golang/protobuf?status.svg)](https://godoc.org/github.com/golang/protobuf)
-
-Google's data interchange format.
-Copyright 2010 The Go Authors.
-https://github.com/golang/protobuf
-
-This package and the code it generates requires at least Go 1.4.
-
-This software implements Go bindings for protocol buffers.  For
-information about protocol buffers themselves, see
-	https://developers.google.com/protocol-buffers/
-
-## Installation ##
-
-To use this software, you must:
-- Install the standard C++ implementation of protocol buffers from
-	https://developers.google.com/protocol-buffers/
-- Of course, install the Go compiler and tools from
-	https://golang.org/
-  See
-	https://golang.org/doc/install
-  for details or, if you are using gccgo, follow the instructions at
-	https://golang.org/doc/install/gccgo
-- Grab the code from the repository and install the proto package.
-  The simplest way is to run `go get -u github.com/golang/protobuf/protoc-gen-go`.
-  The compiler plugin, protoc-gen-go, will be installed in $GOBIN,
-  defaulting to $GOPATH/bin.  It must be in your $PATH for the protocol
-  compiler, protoc, to find it.
-
-This software has two parts: a 'protocol compiler plugin' that
-generates Go source files that, once compiled, can access and manage
-protocol buffers; and a library that implements run-time support for
-encoding (marshaling), decoding (unmarshaling), and accessing protocol
-buffers.
-
-There is support for gRPC in Go using protocol buffers.
-See the note at the bottom of this file for details.
-
-There are no insertion points in the plugin.
-
-
-## Using protocol buffers with Go ##
-
-Once the software is installed, there are two steps to using it.
-First you must compile the protocol buffer definitions and then import
-them, with the support library, into your program.
-
-To compile the protocol buffer definition, run protoc with the --go_out
-parameter set to the directory you want to output the Go code to.
-
-	protoc --go_out=. *.proto
-
-The generated files will be suffixed .pb.go.  See the Test code below
-for an example using such a file.
-
-
-The package comment for the proto library contains text describing
-the interface provided in Go for protocol buffers. Here is an edited
-version.
-
-==========
-
-The proto package converts data structures to and from the
-wire format of protocol buffers.  It works in concert with the
-Go source code generated for .proto files by the protocol compiler.
-
-A summary of the properties of the protocol buffer interface
-for a protocol buffer variable v:
-
-  - Names are turned from camel_case to CamelCase for export.
-  - There are no methods on v to set fields; just treat
-  	them as structure fields.
-  - There are getters that return a field's value if set,
-	and return the field's default value if unset.
-	The getters work even if the receiver is a nil message.
-  - The zero value for a struct is its correct initialization state.
-	All desired fields must be set before marshaling.
-  - A Reset() method will restore a protobuf struct to its zero state.
-  - Non-repeated fields are pointers to the values; nil means unset.
-	That is, optional or required field int32 f becomes F *int32.
-  - Repeated fields are slices.
-  - Helper functions are available to aid the setting of fields.
-	Helpers for getting values are superseded by the
-	GetFoo methods and their use is deprecated.
-		msg.Foo = proto.String("hello") // set field
-  - Constants are defined to hold the default values of all fields that
-	have them.  They have the form Default_StructName_FieldName.
-	Because the getter methods handle defaulted values,
-	direct use of these constants should be rare.
-  - Enums are given type names and maps from names to values.
-	Enum values are prefixed with the enum's type name. Enum types have
-	a String method, and a Enum method to assist in message construction.
-  - Nested groups and enums have type names prefixed with the name of
-  	the surrounding message type.
-  - Extensions are given descriptor names that start with E_,
-	followed by an underscore-delimited list of the nested messages
-	that contain it (if any) followed by the CamelCased name of the
-	extension field itself.  HasExtension, ClearExtension, GetExtension
-	and SetExtension are functions for manipulating extensions.
-  - Oneof field sets are given a single field in their message,
-	with distinguished wrapper types for each possible field value.
-  - Marshal and Unmarshal are functions to encode and decode the wire format.
-
-When the .proto file specifies `syntax="proto3"`, there are some differences:
-
-  - Non-repeated fields of non-message type are values instead of pointers.
-  - Enum types do not get an Enum method.
-
-Consider file test.proto, containing
-
-```proto
-	syntax = "proto2";
-	package example;
-	
-	enum FOO { X = 17; };
-	
-	message Test {
-	  required string label = 1;
-	  optional int32 type = 2 [default=77];
-	  repeated int64 reps = 3;
-	  optional group OptionalGroup = 4 {
-	    required string RequiredField = 5;
-	  }
-	}
-```
-
-To create and play with a Test object from the example package,
-
-```go
-	package main
-
-	import (
-		"log"
-
-		"github.com/golang/protobuf/proto"
-		"path/to/example"
-	)
-
-	func main() {
-		test := &example.Test {
-			Label: proto.String("hello"),
-			Type:  proto.Int32(17),
-			Reps:  []int64{1, 2, 3},
-			Optionalgroup: &example.Test_OptionalGroup {
-				RequiredField: proto.String("good bye"),
-			},
-		}
-		data, err := proto.Marshal(test)
-		if err != nil {
-			log.Fatal("marshaling error: ", err)
-		}
-		newTest := &example.Test{}
-		err = proto.Unmarshal(data, newTest)
-		if err != nil {
-			log.Fatal("unmarshaling error: ", err)
-		}
-		// Now test and newTest contain the same data.
-		if test.GetLabel() != newTest.GetLabel() {
-			log.Fatalf("data mismatch %q != %q", test.GetLabel(), newTest.GetLabel())
-		}
-		// etc.
-	}
-```
-
-## Parameters ##
-
-To pass extra parameters to the plugin, use a comma-separated
-parameter list separated from the output directory by a colon:
-
-
-	protoc --go_out=plugins=grpc,import_path=mypackage:. *.proto
-
-
-- `import_prefix=xxx` - a prefix that is added onto the beginning of
-  all imports. Useful for things like generating protos in a
-  subdirectory, or regenerating vendored protobufs in-place.
-- `import_path=foo/bar` - used as the package if no input files
-  declare `go_package`. If it contains slashes, everything up to the
-  rightmost slash is ignored.
-- `plugins=plugin1+plugin2` - specifies the list of sub-plugins to
-  load. The only plugin in this repo is `grpc`.
-- `Mfoo/bar.proto=quux/shme` - declares that foo/bar.proto is
-  associated with Go package quux/shme.  This is subject to the
-  import_prefix parameter.
-
-## gRPC Support ##
-
-If a proto file specifies RPC services, protoc-gen-go can be instructed to
-generate code compatible with gRPC (http://www.grpc.io/). To do this, pass
-the `plugins` parameter to protoc-gen-go; the usual way is to insert it into
-the --go_out argument to protoc:
-
-	protoc --go_out=plugins=grpc:. *.proto
-
-## Compatibility ##
-
-The library and the generated code are expected to be stable over time.
-However, we reserve the right to make breaking changes without notice for the
-following reasons:
-
-- Security. A security issue in the specification or implementation may come to
-  light whose resolution requires breaking compatibility. We reserve the right
-  to address such security issues.
-- Unspecified behavior.  There are some aspects of the Protocol Buffers
-  specification that are undefined.  Programs that depend on such unspecified
-  behavior may break in future releases.
-- Specification errors or changes. If it becomes necessary to address an
-  inconsistency, incompleteness, or change in the Protocol Buffers
-  specification, resolving the issue could affect the meaning or legality of
-  existing programs.  We reserve the right to address such issues, including
-  updating the implementations.
-- Bugs.  If the library has a bug that violates the specification, a program
-  that depends on the buggy behavior may break if the bug is fixed.  We reserve
-  the right to fix such bugs.
-- Adding methods or fields to generated structs.  These may conflict with field
-  names that already exist in a schema, causing applications to break.  When the
-  code generator encounters a field in the schema that would collide with a
-  generated field or method name, the code generator will append an underscore
-  to the generated field or method name.
-- Adding, removing, or changing methods or fields in generated structs that
-  start with `XXX`.  These parts of the generated code are exported out of
-  necessity, but should not be considered part of the public API.
-- Adding, removing, or changing unexported symbols in generated code.
-
-Any breaking changes outside of these will be announced 6 months in advance to
-protobuf@googlegroups.com.
-
-You should, whenever possible, use generated code created by the `protoc-gen-go`
-tool built at the same commit as the `proto` package.  The `proto` package
-declares package-level constants in the form `ProtoPackageIsVersionX`.
-Application code and generated code may depend on one of these constants to
-ensure that compilation will fail if the available version of the proto library
-is too old.  Whenever we make a change to the generated code that requires newer
-library support, in the same commit we will increment the version number of the
-generated code and declare a new package-level constant whose name incorporates
-the latest version number.  Removing a compatibility constant is considered a
-breaking change and would be subject to the announcement policy stated above.
-
-The `protoc-gen-go/generator` package exposes a plugin interface,
-which is used by the gRPC code generation. This interface is not
-supported and is subject to incompatible changes without notice.
diff --git a/vendor/github.com/golang/protobuf/proto/Makefile b/vendor/github.com/golang/protobuf/proto/Makefile
deleted file mode 100644
index e2e0651..0000000
--- a/vendor/github.com/golang/protobuf/proto/Makefile
+++ /dev/null
@@ -1,43 +0,0 @@
-# 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
-# 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.
-
-install:
-	go install
-
-test: install generate-test-pbs
-	go test
-
-
-generate-test-pbs:
-	make install
-	make -C testdata
-	protoc --go_out=Mtestdata/test.proto=github.com/golang/protobuf/proto/testdata,Mgoogle/protobuf/any.proto=github.com/golang/protobuf/ptypes/any:. proto3_proto/proto3.proto
-	make
diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/Makefile b/vendor/github.com/golang/protobuf/protoc-gen-go/Makefile
deleted file mode 100644
index a42cc37..0000000
--- a/vendor/github.com/golang/protobuf/protoc-gen-go/Makefile
+++ /dev/null
@@ -1,33 +0,0 @@
-# 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
-# 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.
-
-test:
-	cd testdata && make test
diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/descriptor/Makefile b/vendor/github.com/golang/protobuf/protoc-gen-go/descriptor/Makefile
deleted file mode 100644
index f706871..0000000
--- a/vendor/github.com/golang/protobuf/protoc-gen-go/descriptor/Makefile
+++ /dev/null
@@ -1,37 +0,0 @@
-# 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
-# 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.
-
-# Not stored here, but descriptor.proto is in https://github.com/google/protobuf/
-# at src/google/protobuf/descriptor.proto
-regenerate:
-	@echo WARNING! THIS RULE IS PROBABLY NOT RIGHT FOR YOUR INSTALLATION
-	cp $(HOME)/src/protobuf/include/google/protobuf/descriptor.proto .
-	protoc --go_out=../../../../.. -I$(HOME)/src/protobuf/include $(HOME)/src/protobuf/include/google/protobuf/descriptor.proto
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
deleted file mode 100644
index 4d4fb37..0000000
--- a/vendor/github.com/golang/protobuf/protoc-gen-go/descriptor/descriptor.proto
+++ /dev/null
@@ -1,849 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// 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.
-
-// Author: kenton@google.com (Kenton Varda)
-//  Based on original Protocol Buffers design by
-//  Sanjay Ghemawat, Jeff Dean, and others.
-//
-// The messages in this file describe the definitions found in .proto files.
-// A valid .proto file can be translated directly to a FileDescriptorProto
-// without any other information (e.g. without reading its imports).
-
-
-syntax = "proto2";
-
-package google.protobuf;
-option go_package = "github.com/golang/protobuf/protoc-gen-go/descriptor;descriptor";
-option java_package = "com.google.protobuf";
-option java_outer_classname = "DescriptorProtos";
-option csharp_namespace = "Google.Protobuf.Reflection";
-option objc_class_prefix = "GPB";
-
-// descriptor.proto must be optimized for speed because reflection-based
-// algorithms don't work during bootstrapping.
-option optimize_for = SPEED;
-
-// The protocol compiler can output a FileDescriptorSet containing the .proto
-// files it parses.
-message FileDescriptorSet {
-  repeated FileDescriptorProto file = 1;
-}
-
-// Describes a complete .proto file.
-message FileDescriptorProto {
-  optional string name = 1;       // file name, relative to root of source tree
-  optional string package = 2;    // e.g. "foo", "foo.bar", etc.
-
-  // Names of files imported by this file.
-  repeated string dependency = 3;
-  // Indexes of the public imported files in the dependency list above.
-  repeated int32 public_dependency = 10;
-  // Indexes of the weak imported files in the dependency list.
-  // For Google-internal migration only. Do not use.
-  repeated int32 weak_dependency = 11;
-
-  // All top-level definitions in this file.
-  repeated DescriptorProto message_type = 4;
-  repeated EnumDescriptorProto enum_type = 5;
-  repeated ServiceDescriptorProto service = 6;
-  repeated FieldDescriptorProto extension = 7;
-
-  optional FileOptions options = 8;
-
-  // This field contains optional information about the original source code.
-  // You may safely remove this entire field without harming runtime
-  // functionality of the descriptors -- the information is needed only by
-  // development tools.
-  optional SourceCodeInfo source_code_info = 9;
-
-  // The syntax of the proto file.
-  // The supported values are "proto2" and "proto3".
-  optional string syntax = 12;
-}
-
-// Describes a message type.
-message DescriptorProto {
-  optional string name = 1;
-
-  repeated FieldDescriptorProto field = 2;
-  repeated FieldDescriptorProto extension = 6;
-
-  repeated DescriptorProto nested_type = 3;
-  repeated EnumDescriptorProto enum_type = 4;
-
-  message ExtensionRange {
-    optional int32 start = 1;
-    optional int32 end = 2;
-
-    optional ExtensionRangeOptions options = 3;
-  }
-  repeated ExtensionRange extension_range = 5;
-
-  repeated OneofDescriptorProto oneof_decl = 8;
-
-  optional MessageOptions options = 7;
-
-  // Range of reserved tag numbers. Reserved tag numbers may not be used by
-  // fields or extension ranges in the same message. Reserved ranges may
-  // not overlap.
-  message ReservedRange {
-    optional int32 start = 1; // Inclusive.
-    optional int32 end = 2;   // Exclusive.
-  }
-  repeated ReservedRange reserved_range = 9;
-  // Reserved field names, which may not be used by fields in the same message.
-  // A given name may only be reserved once.
-  repeated string reserved_name = 10;
-}
-
-message ExtensionRangeOptions {
-  // The parser stores options it doesn't recognize here. See above.
-  repeated UninterpretedOption uninterpreted_option = 999;
-
-  // Clients can define custom options in extensions of this message. See above.
-  extensions 1000 to max;
-}
-
-// Describes a field within a message.
-message FieldDescriptorProto {
-  enum Type {
-    // 0 is reserved for errors.
-    // Order is weird for historical reasons.
-    TYPE_DOUBLE         = 1;
-    TYPE_FLOAT          = 2;
-    // Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT64 if
-    // negative values are likely.
-    TYPE_INT64          = 3;
-    TYPE_UINT64         = 4;
-    // Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT32 if
-    // negative values are likely.
-    TYPE_INT32          = 5;
-    TYPE_FIXED64        = 6;
-    TYPE_FIXED32        = 7;
-    TYPE_BOOL           = 8;
-    TYPE_STRING         = 9;
-    // Tag-delimited aggregate.
-    // Group type is deprecated and not supported in proto3. However, Proto3
-    // implementations should still be able to parse the group wire format and
-    // treat group fields as unknown fields.
-    TYPE_GROUP          = 10;
-    TYPE_MESSAGE        = 11;  // Length-delimited aggregate.
-
-    // New in version 2.
-    TYPE_BYTES          = 12;
-    TYPE_UINT32         = 13;
-    TYPE_ENUM           = 14;
-    TYPE_SFIXED32       = 15;
-    TYPE_SFIXED64       = 16;
-    TYPE_SINT32         = 17;  // Uses ZigZag encoding.
-    TYPE_SINT64         = 18;  // Uses ZigZag encoding.
-  };
-
-  enum Label {
-    // 0 is reserved for errors
-    LABEL_OPTIONAL      = 1;
-    LABEL_REQUIRED      = 2;
-    LABEL_REPEATED      = 3;
-  };
-
-  optional string name = 1;
-  optional int32 number = 3;
-  optional Label label = 4;
-
-  // If type_name is set, this need not be set.  If both this and type_name
-  // are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
-  optional Type type = 5;
-
-  // For message and enum types, this is the name of the type.  If the name
-  // starts with a '.', it is fully-qualified.  Otherwise, C++-like scoping
-  // rules are used to find the type (i.e. first the nested types within this
-  // message are searched, then within the parent, on up to the root
-  // namespace).
-  optional string type_name = 6;
-
-  // For extensions, this is the name of the type being extended.  It is
-  // resolved in the same manner as type_name.
-  optional string extendee = 2;
-
-  // For numeric types, contains the original text representation of the value.
-  // For booleans, "true" or "false".
-  // For strings, contains the default text contents (not escaped in any way).
-  // For bytes, contains the C escaped value.  All bytes >= 128 are escaped.
-  // TODO(kenton):  Base-64 encode?
-  optional string default_value = 7;
-
-  // If set, gives the index of a oneof in the containing type's oneof_decl
-  // list.  This field is a member of that oneof.
-  optional int32 oneof_index = 9;
-
-  // JSON name of this field. The value is set by protocol compiler. If the
-  // user has set a "json_name" option on this field, that option's value
-  // will be used. Otherwise, it's deduced from the field's name by converting
-  // it to camelCase.
-  optional string json_name = 10;
-
-  optional FieldOptions options = 8;
-}
-
-// Describes a oneof.
-message OneofDescriptorProto {
-  optional string name = 1;
-  optional OneofOptions options = 2;
-}
-
-// Describes an enum type.
-message EnumDescriptorProto {
-  optional string name = 1;
-
-  repeated EnumValueDescriptorProto value = 2;
-
-  optional EnumOptions options = 3;
-}
-
-// Describes a value within an enum.
-message EnumValueDescriptorProto {
-  optional string name = 1;
-  optional int32 number = 2;
-
-  optional EnumValueOptions options = 3;
-}
-
-// Describes a service.
-message ServiceDescriptorProto {
-  optional string name = 1;
-  repeated MethodDescriptorProto method = 2;
-
-  optional ServiceOptions options = 3;
-}
-
-// Describes a method of a service.
-message MethodDescriptorProto {
-  optional string name = 1;
-
-  // Input and output type names.  These are resolved in the same way as
-  // FieldDescriptorProto.type_name, but must refer to a message type.
-  optional string input_type = 2;
-  optional string output_type = 3;
-
-  optional MethodOptions options = 4;
-
-  // Identifies if client streams multiple client messages
-  optional bool client_streaming = 5 [default=false];
-  // Identifies if server streams multiple server messages
-  optional bool server_streaming = 6 [default=false];
-}
-
-
-// ===================================================================
-// Options
-
-// Each of the definitions above may have "options" attached.  These are
-// just annotations which may cause code to be generated slightly differently
-// or may contain hints for code that manipulates protocol messages.
-//
-// Clients may define custom options as extensions of the *Options messages.
-// These extensions may not yet be known at parsing time, so the parser cannot
-// store the values in them.  Instead it stores them in a field in the *Options
-// message called uninterpreted_option. This field must have the same name
-// across all *Options messages. We then use this field to populate the
-// extensions when we build a descriptor, at which point all protos have been
-// parsed and so all extensions are known.
-//
-// Extension numbers for custom options may be chosen as follows:
-// * For options which will only be used within a single application or
-//   organization, or for experimental options, use field numbers 50000
-//   through 99999.  It is up to you to ensure that you do not use the
-//   same number for multiple options.
-// * For options which will be published and used publicly by multiple
-//   independent entities, e-mail protobuf-global-extension-registry@google.com
-//   to reserve extension numbers. Simply provide your project name (e.g.
-//   Objective-C plugin) and your project website (if available) -- there's no
-//   need to explain how you intend to use them. Usually you only need one
-//   extension number. You can declare multiple options with only one extension
-//   number by putting them in a sub-message. See the Custom Options section of
-//   the docs for examples:
-//   https://developers.google.com/protocol-buffers/docs/proto#options
-//   If this turns out to be popular, a web service will be set up
-//   to automatically assign option numbers.
-
-
-message FileOptions {
-
-  // Sets the Java package where classes generated from this .proto will be
-  // placed.  By default, the proto package is used, but this is often
-  // inappropriate because proto packages do not normally start with backwards
-  // domain names.
-  optional string java_package = 1;
-
-
-  // If set, all the classes from the .proto file are wrapped in a single
-  // outer class with the given name.  This applies to both Proto1
-  // (equivalent to the old "--one_java_file" option) and Proto2 (where
-  // a .proto always translates to a single class, but you may want to
-  // explicitly choose the class name).
-  optional string java_outer_classname = 8;
-
-  // If set true, then the Java code generator will generate a separate .java
-  // file for each top-level message, enum, and service defined in the .proto
-  // file.  Thus, these types will *not* be nested inside the outer class
-  // named by java_outer_classname.  However, the outer class will still be
-  // generated to contain the file's getDescriptor() method as well as any
-  // top-level extensions defined in the file.
-  optional bool java_multiple_files = 10 [default=false];
-
-  // This option does nothing.
-  optional bool java_generate_equals_and_hash = 20 [deprecated=true];
-
-  // If set true, then the Java2 code generator will generate code that
-  // throws an exception whenever an attempt is made to assign a non-UTF-8
-  // byte sequence to a string field.
-  // Message reflection will do the same.
-  // However, an extension field still accepts non-UTF-8 byte sequences.
-  // This option has no effect on when used with the lite runtime.
-  optional bool java_string_check_utf8 = 27 [default=false];
-
-
-  // Generated classes can be optimized for speed or code size.
-  enum OptimizeMode {
-    SPEED = 1;        // Generate complete code for parsing, serialization,
-                      // etc.
-    CODE_SIZE = 2;    // Use ReflectionOps to implement these methods.
-    LITE_RUNTIME = 3; // Generate code using MessageLite and the lite runtime.
-  }
-  optional OptimizeMode optimize_for = 9 [default=SPEED];
-
-  // Sets the Go package where structs generated from this .proto will be
-  // placed. If omitted, the Go package will be derived from the following:
-  //   - The basename of the package import path, if provided.
-  //   - Otherwise, the package statement in the .proto file, if present.
-  //   - Otherwise, the basename of the .proto file, without extension.
-  optional string go_package = 11;
-
-
-
-  // Should generic services be generated in each language?  "Generic" services
-  // are not specific to any particular RPC system.  They are generated by the
-  // main code generators in each language (without additional plugins).
-  // Generic services were the only kind of service generation supported by
-  // early versions of google.protobuf.
-  //
-  // Generic services are now considered deprecated in favor of using plugins
-  // that generate code specific to your particular RPC system.  Therefore,
-  // these default to false.  Old code which depends on generic services should
-  // explicitly set them to true.
-  optional bool cc_generic_services = 16 [default=false];
-  optional bool java_generic_services = 17 [default=false];
-  optional bool py_generic_services = 18 [default=false];
-  optional bool php_generic_services = 42 [default=false];
-
-  // Is this file deprecated?
-  // Depending on the target platform, this can emit Deprecated annotations
-  // for everything in the file, or it will be completely ignored; in the very
-  // least, this is a formalization for deprecating files.
-  optional bool deprecated = 23 [default=false];
-
-  // Enables the use of arenas for the proto messages in this file. This applies
-  // only to generated classes for C++.
-  optional bool cc_enable_arenas = 31 [default=false];
-
-
-  // Sets the objective c class prefix which is prepended to all objective c
-  // generated classes from this .proto. There is no default.
-  optional string objc_class_prefix = 36;
-
-  // Namespace for generated classes; defaults to the package.
-  optional string csharp_namespace = 37;
-
-  // By default Swift generators will take the proto package and CamelCase it
-  // replacing '.' with underscore and use that to prefix the types/symbols
-  // defined. When this options is provided, they will use this value instead
-  // to prefix the types/symbols defined.
-  optional string swift_prefix = 39;
-
-  // Sets the php class prefix which is prepended to all php generated classes
-  // from this .proto. Default is empty.
-  optional string php_class_prefix = 40;
-
-  // Use this option to change the namespace of php generated classes. Default
-  // is empty. When this option is empty, the package name will be used for
-  // determining the namespace.
-  optional string php_namespace = 41;
-
-  // The parser stores options it doesn't recognize here. See above.
-  repeated UninterpretedOption uninterpreted_option = 999;
-
-  // Clients can define custom options in extensions of this message. See above.
-  extensions 1000 to max;
-
-  reserved 38;
-}
-
-message MessageOptions {
-  // Set true to use the old proto1 MessageSet wire format for extensions.
-  // This is provided for backwards-compatibility with the MessageSet wire
-  // format.  You should not use this for any other reason:  It's less
-  // efficient, has fewer features, and is more complicated.
-  //
-  // The message must be defined exactly as follows:
-  //   message Foo {
-  //     option message_set_wire_format = true;
-  //     extensions 4 to max;
-  //   }
-  // Note that the message cannot have any defined fields; MessageSets only
-  // have extensions.
-  //
-  // All extensions of your type must be singular messages; e.g. they cannot
-  // be int32s, enums, or repeated messages.
-  //
-  // Because this is an option, the above two restrictions are not enforced by
-  // the protocol compiler.
-  optional bool message_set_wire_format = 1 [default=false];
-
-  // Disables the generation of the standard "descriptor()" accessor, which can
-  // conflict with a field of the same name.  This is meant to make migration
-  // from proto1 easier; new code should avoid fields named "descriptor".
-  optional bool no_standard_descriptor_accessor = 2 [default=false];
-
-  // Is this message deprecated?
-  // Depending on the target platform, this can emit Deprecated annotations
-  // for the message, or it will be completely ignored; in the very least,
-  // this is a formalization for deprecating messages.
-  optional bool deprecated = 3 [default=false];
-
-  // Whether the message is an automatically generated map entry type for the
-  // maps field.
-  //
-  // For maps fields:
-  //     map<KeyType, ValueType> map_field = 1;
-  // The parsed descriptor looks like:
-  //     message MapFieldEntry {
-  //         option map_entry = true;
-  //         optional KeyType key = 1;
-  //         optional ValueType value = 2;
-  //     }
-  //     repeated MapFieldEntry map_field = 1;
-  //
-  // Implementations may choose not to generate the map_entry=true message, but
-  // use a native map in the target language to hold the keys and values.
-  // The reflection APIs in such implementions still need to work as
-  // if the field is a repeated message field.
-  //
-  // NOTE: Do not set the option in .proto files. Always use the maps syntax
-  // instead. The option should only be implicitly set by the proto compiler
-  // parser.
-  optional bool map_entry = 7;
-
-  reserved 8;  // javalite_serializable
-  reserved 9;  // javanano_as_lite
-
-  // The parser stores options it doesn't recognize here. See above.
-  repeated UninterpretedOption uninterpreted_option = 999;
-
-  // Clients can define custom options in extensions of this message. See above.
-  extensions 1000 to max;
-}
-
-message FieldOptions {
-  // The ctype option instructs the C++ code generator to use a different
-  // representation of the field than it normally would.  See the specific
-  // options below.  This option is not yet implemented in the open source
-  // release -- sorry, we'll try to include it in a future version!
-  optional CType ctype = 1 [default = STRING];
-  enum CType {
-    // Default mode.
-    STRING = 0;
-
-    CORD = 1;
-
-    STRING_PIECE = 2;
-  }
-  // The packed option can be enabled for repeated primitive fields to enable
-  // a more efficient representation on the wire. Rather than repeatedly
-  // writing the tag and type for each element, the entire array is encoded as
-  // a single length-delimited blob. In proto3, only explicit setting it to
-  // false will avoid using packed encoding.
-  optional bool packed = 2;
-
-  // The jstype option determines the JavaScript type used for values of the
-  // field.  The option is permitted only for 64 bit integral and fixed types
-  // (int64, uint64, sint64, fixed64, sfixed64).  A field with jstype JS_STRING
-  // is represented as JavaScript string, which avoids loss of precision that
-  // can happen when a large value is converted to a floating point JavaScript.
-  // Specifying JS_NUMBER for the jstype causes the generated JavaScript code to
-  // use the JavaScript "number" type.  The behavior of the default option
-  // JS_NORMAL is implementation dependent.
-  //
-  // This option is an enum to permit additional types to be added, e.g.
-  // goog.math.Integer.
-  optional JSType jstype = 6 [default = JS_NORMAL];
-  enum JSType {
-    // Use the default type.
-    JS_NORMAL = 0;
-
-    // Use JavaScript strings.
-    JS_STRING = 1;
-
-    // Use JavaScript numbers.
-    JS_NUMBER = 2;
-  }
-
-  // Should this field be parsed lazily?  Lazy applies only to message-type
-  // fields.  It means that when the outer message is initially parsed, the
-  // inner message's contents will not be parsed but instead stored in encoded
-  // form.  The inner message will actually be parsed when it is first accessed.
-  //
-  // This is only a hint.  Implementations are free to choose whether to use
-  // eager or lazy parsing regardless of the value of this option.  However,
-  // setting this option true suggests that the protocol author believes that
-  // using lazy parsing on this field is worth the additional bookkeeping
-  // overhead typically needed to implement it.
-  //
-  // This option does not affect the public interface of any generated code;
-  // all method signatures remain the same.  Furthermore, thread-safety of the
-  // interface is not affected by this option; const methods remain safe to
-  // call from multiple threads concurrently, while non-const methods continue
-  // to require exclusive access.
-  //
-  //
-  // Note that implementations may choose not to check required fields within
-  // a lazy sub-message.  That is, calling IsInitialized() on the outer message
-  // may return true even if the inner message has missing required fields.
-  // This is necessary because otherwise the inner message would have to be
-  // parsed in order to perform the check, defeating the purpose of lazy
-  // parsing.  An implementation which chooses not to check required fields
-  // must be consistent about it.  That is, for any particular sub-message, the
-  // implementation must either *always* check its required fields, or *never*
-  // check its required fields, regardless of whether or not the message has
-  // been parsed.
-  optional bool lazy = 5 [default=false];
-
-  // Is this field deprecated?
-  // Depending on the target platform, this can emit Deprecated annotations
-  // for accessors, or it will be completely ignored; in the very least, this
-  // is a formalization for deprecating fields.
-  optional bool deprecated = 3 [default=false];
-
-  // For Google-internal migration only. Do not use.
-  optional bool weak = 10 [default=false];
-
-
-  // The parser stores options it doesn't recognize here. See above.
-  repeated UninterpretedOption uninterpreted_option = 999;
-
-  // Clients can define custom options in extensions of this message. See above.
-  extensions 1000 to max;
-
-  reserved 4;  // removed jtype
-}
-
-message OneofOptions {
-  // The parser stores options it doesn't recognize here. See above.
-  repeated UninterpretedOption uninterpreted_option = 999;
-
-  // Clients can define custom options in extensions of this message. See above.
-  extensions 1000 to max;
-}
-
-message EnumOptions {
-
-  // Set this option to true to allow mapping different tag names to the same
-  // value.
-  optional bool allow_alias = 2;
-
-  // Is this enum deprecated?
-  // Depending on the target platform, this can emit Deprecated annotations
-  // for the enum, or it will be completely ignored; in the very least, this
-  // is a formalization for deprecating enums.
-  optional bool deprecated = 3 [default=false];
-
-  reserved 5;  // javanano_as_lite
-
-  // The parser stores options it doesn't recognize here. See above.
-  repeated UninterpretedOption uninterpreted_option = 999;
-
-  // Clients can define custom options in extensions of this message. See above.
-  extensions 1000 to max;
-}
-
-message EnumValueOptions {
-  // Is this enum value deprecated?
-  // Depending on the target platform, this can emit Deprecated annotations
-  // for the enum value, or it will be completely ignored; in the very least,
-  // this is a formalization for deprecating enum values.
-  optional bool deprecated = 1 [default=false];
-
-  // The parser stores options it doesn't recognize here. See above.
-  repeated UninterpretedOption uninterpreted_option = 999;
-
-  // Clients can define custom options in extensions of this message. See above.
-  extensions 1000 to max;
-}
-
-message ServiceOptions {
-
-  // Note:  Field numbers 1 through 32 are reserved for Google's internal RPC
-  //   framework.  We apologize for hoarding these numbers to ourselves, but
-  //   we were already using them long before we decided to release Protocol
-  //   Buffers.
-
-  // Is this service deprecated?
-  // Depending on the target platform, this can emit Deprecated annotations
-  // for the service, or it will be completely ignored; in the very least,
-  // this is a formalization for deprecating services.
-  optional bool deprecated = 33 [default=false];
-
-  // The parser stores options it doesn't recognize here. See above.
-  repeated UninterpretedOption uninterpreted_option = 999;
-
-  // Clients can define custom options in extensions of this message. See above.
-  extensions 1000 to max;
-}
-
-message MethodOptions {
-
-  // Note:  Field numbers 1 through 32 are reserved for Google's internal RPC
-  //   framework.  We apologize for hoarding these numbers to ourselves, but
-  //   we were already using them long before we decided to release Protocol
-  //   Buffers.
-
-  // Is this method deprecated?
-  // Depending on the target platform, this can emit Deprecated annotations
-  // for the method, or it will be completely ignored; in the very least,
-  // this is a formalization for deprecating methods.
-  optional bool deprecated = 33 [default=false];
-
-  // Is this method side-effect-free (or safe in HTTP parlance), or idempotent,
-  // or neither? HTTP based RPC implementation may choose GET verb for safe
-  // methods, and PUT verb for idempotent methods instead of the default POST.
-  enum IdempotencyLevel {
-    IDEMPOTENCY_UNKNOWN = 0;
-    NO_SIDE_EFFECTS     = 1; // implies idempotent
-    IDEMPOTENT          = 2; // idempotent, but may have side effects
-  }
-  optional IdempotencyLevel idempotency_level =
-      34 [default=IDEMPOTENCY_UNKNOWN];
-
-  // The parser stores options it doesn't recognize here. See above.
-  repeated UninterpretedOption uninterpreted_option = 999;
-
-  // Clients can define custom options in extensions of this message. See above.
-  extensions 1000 to max;
-}
-
-
-// A message representing a option the parser does not recognize. This only
-// appears in options protos created by the compiler::Parser class.
-// DescriptorPool resolves these when building Descriptor objects. Therefore,
-// options protos in descriptor objects (e.g. returned by Descriptor::options(),
-// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions
-// in them.
-message UninterpretedOption {
-  // The name of the uninterpreted option.  Each string represents a segment in
-  // a dot-separated name.  is_extension is true iff a segment represents an
-  // extension (denoted with parentheses in options specs in .proto files).
-  // E.g.,{ ["foo", false], ["bar.baz", true], ["qux", false] } represents
-  // "foo.(bar.baz).qux".
-  message NamePart {
-    required string name_part = 1;
-    required bool is_extension = 2;
-  }
-  repeated NamePart name = 2;
-
-  // The value of the uninterpreted option, in whatever type the tokenizer
-  // identified it as during parsing. Exactly one of these should be set.
-  optional string identifier_value = 3;
-  optional uint64 positive_int_value = 4;
-  optional int64 negative_int_value = 5;
-  optional double double_value = 6;
-  optional bytes string_value = 7;
-  optional string aggregate_value = 8;
-}
-
-// ===================================================================
-// Optional source code info
-
-// Encapsulates information about the original source file from which a
-// FileDescriptorProto was generated.
-message SourceCodeInfo {
-  // A Location identifies a piece of source code in a .proto file which
-  // corresponds to a particular definition.  This information is intended
-  // to be useful to IDEs, code indexers, documentation generators, and similar
-  // tools.
-  //
-  // For example, say we have a file like:
-  //   message Foo {
-  //     optional string foo = 1;
-  //   }
-  // Let's look at just the field definition:
-  //   optional string foo = 1;
-  //   ^       ^^     ^^  ^  ^^^
-  //   a       bc     de  f  ghi
-  // We have the following locations:
-  //   span   path               represents
-  //   [a,i)  [ 4, 0, 2, 0 ]     The whole field definition.
-  //   [a,b)  [ 4, 0, 2, 0, 4 ]  The label (optional).
-  //   [c,d)  [ 4, 0, 2, 0, 5 ]  The type (string).
-  //   [e,f)  [ 4, 0, 2, 0, 1 ]  The name (foo).
-  //   [g,h)  [ 4, 0, 2, 0, 3 ]  The number (1).
-  //
-  // Notes:
-  // - A location may refer to a repeated field itself (i.e. not to any
-  //   particular index within it).  This is used whenever a set of elements are
-  //   logically enclosed in a single code segment.  For example, an entire
-  //   extend block (possibly containing multiple extension definitions) will
-  //   have an outer location whose path refers to the "extensions" repeated
-  //   field without an index.
-  // - Multiple locations may have the same path.  This happens when a single
-  //   logical declaration is spread out across multiple places.  The most
-  //   obvious example is the "extend" block again -- there may be multiple
-  //   extend blocks in the same scope, each of which will have the same path.
-  // - A location's span is not always a subset of its parent's span.  For
-  //   example, the "extendee" of an extension declaration appears at the
-  //   beginning of the "extend" block and is shared by all extensions within
-  //   the block.
-  // - Just because a location's span is a subset of some other location's span
-  //   does not mean that it is a descendent.  For example, a "group" defines
-  //   both a type and a field in a single declaration.  Thus, the locations
-  //   corresponding to the type and field and their components will overlap.
-  // - Code which tries to interpret locations should probably be designed to
-  //   ignore those that it doesn't understand, as more types of locations could
-  //   be recorded in the future.
-  repeated Location location = 1;
-  message Location {
-    // Identifies which part of the FileDescriptorProto was defined at this
-    // location.
-    //
-    // Each element is a field number or an index.  They form a path from
-    // the root FileDescriptorProto to the place where the definition.  For
-    // example, this path:
-    //   [ 4, 3, 2, 7, 1 ]
-    // refers to:
-    //   file.message_type(3)  // 4, 3
-    //       .field(7)         // 2, 7
-    //       .name()           // 1
-    // This is because FileDescriptorProto.message_type has field number 4:
-    //   repeated DescriptorProto message_type = 4;
-    // and DescriptorProto.field has field number 2:
-    //   repeated FieldDescriptorProto field = 2;
-    // and FieldDescriptorProto.name has field number 1:
-    //   optional string name = 1;
-    //
-    // Thus, the above path gives the location of a field name.  If we removed
-    // the last element:
-    //   [ 4, 3, 2, 7 ]
-    // this path refers to the whole field declaration (from the beginning
-    // of the label to the terminating semicolon).
-    repeated int32 path = 1 [packed=true];
-
-    // Always has exactly three or four elements: start line, start column,
-    // end line (optional, otherwise assumed same as start line), end column.
-    // These are packed into a single field for efficiency.  Note that line
-    // and column numbers are zero-based -- typically you will want to add
-    // 1 to each before displaying to a user.
-    repeated int32 span = 2 [packed=true];
-
-    // If this SourceCodeInfo represents a complete declaration, these are any
-    // comments appearing before and after the declaration which appear to be
-    // attached to the declaration.
-    //
-    // A series of line comments appearing on consecutive lines, with no other
-    // tokens appearing on those lines, will be treated as a single comment.
-    //
-    // leading_detached_comments will keep paragraphs of comments that appear
-    // before (but not connected to) the current element. Each paragraph,
-    // separated by empty lines, will be one comment element in the repeated
-    // field.
-    //
-    // Only the comment content is provided; comment markers (e.g. //) are
-    // stripped out.  For block comments, leading whitespace and an asterisk
-    // will be stripped from the beginning of each line other than the first.
-    // Newlines are included in the output.
-    //
-    // Examples:
-    //
-    //   optional int32 foo = 1;  // Comment attached to foo.
-    //   // Comment attached to bar.
-    //   optional int32 bar = 2;
-    //
-    //   optional string baz = 3;
-    //   // Comment attached to baz.
-    //   // Another line attached to baz.
-    //
-    //   // Comment attached to qux.
-    //   //
-    //   // Another line attached to qux.
-    //   optional double qux = 4;
-    //
-    //   // Detached comment for corge. This is not leading or trailing comments
-    //   // to qux or corge because there are blank lines separating it from
-    //   // both.
-    //
-    //   // Detached comment for corge paragraph 2.
-    //
-    //   optional string corge = 5;
-    //   /* Block comment attached
-    //    * to corge.  Leading asterisks
-    //    * will be removed. */
-    //   /* Block comment attached to
-    //    * grault. */
-    //   optional int32 grault = 6;
-    //
-    //   // ignored detached comments.
-    optional string leading_comments = 3;
-    optional string trailing_comments = 4;
-    repeated string leading_detached_comments = 6;
-  }
-}
-
-// Describes the relationship between generated code and its original source
-// file. A GeneratedCodeInfo message is associated with only one generated
-// source file, but may contain references to different source .proto files.
-message GeneratedCodeInfo {
-  // An Annotation connects some span of text in generated code to an element
-  // of its generating .proto file.
-  repeated Annotation annotation = 1;
-  message Annotation {
-    // Identifies the element in the original source .proto file. This field
-    // is formatted the same as SourceCodeInfo.Location.path.
-    repeated int32 path = 1 [packed=true];
-
-    // Identifies the filesystem path to the original source .proto.
-    optional string source_file = 2;
-
-    // Identifies the starting offset in bytes in the generated code
-    // that relates to the identified object.
-    optional int32 begin = 3;
-
-    // Identifies the ending offset in bytes in the generated code that
-    // relates to the identified offset. The end offset should be one past
-    // the last relevant byte (so the length of the text = end - begin).
-    optional int32 end = 4;
-  }
-}
diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/doc.go b/vendor/github.com/golang/protobuf/protoc-gen-go/doc.go
deleted file mode 100644
index 0d6055d..0000000
--- a/vendor/github.com/golang/protobuf/protoc-gen-go/doc.go
+++ /dev/null
@@ -1,51 +0,0 @@
-// 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
-// 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.
-
-/*
-	A plugin for the Google protocol buffer compiler to generate Go code.
-	Run it by building this program and putting it in your path with the name
-		protoc-gen-go
-	That word 'go' at the end becomes part of the option string set for the
-	protocol compiler, so once the protocol compiler (protoc) is installed
-	you can run
-		protoc --go_out=output_directory input_directory/file.proto
-	to generate Go bindings for the protocol defined by file.proto.
-	With that input, the output will be written to
-		output_directory/file.pb.go
-
-	The generated code is documented in the package comment for
-	the library.
-
-	See the README and documentation for protocol buffers to learn more:
-		https://developers.google.com/protocol-buffers/
-
-*/
-package documentation
diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/link_grpc.go b/vendor/github.com/golang/protobuf/protoc-gen-go/link_grpc.go
deleted file mode 100644
index 532a550..0000000
--- a/vendor/github.com/golang/protobuf/protoc-gen-go/link_grpc.go
+++ /dev/null
@@ -1,34 +0,0 @@
-// Go support for Protocol Buffers - Google's data interchange format
-//
-// Copyright 2015 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 main
-
-import _ "github.com/golang/protobuf/protoc-gen-go/grpc"
diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/main.go b/vendor/github.com/golang/protobuf/protoc-gen-go/main.go
deleted file mode 100644
index 8e2486d..0000000
--- a/vendor/github.com/golang/protobuf/protoc-gen-go/main.go
+++ /dev/null
@@ -1,98 +0,0 @@
-// 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
-// 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.
-
-// protoc-gen-go is a plugin for the Google protocol buffer compiler to generate
-// Go code.  Run it by building this program and putting it in your path with
-// the name
-// 	protoc-gen-go
-// That word 'go' at the end becomes part of the option string set for the
-// protocol compiler, so once the protocol compiler (protoc) is installed
-// you can run
-// 	protoc --go_out=output_directory input_directory/file.proto
-// to generate Go bindings for the protocol defined by file.proto.
-// With that input, the output will be written to
-// 	output_directory/file.pb.go
-//
-// The generated code is documented in the package comment for
-// the library.
-//
-// See the README and documentation for protocol buffers to learn more:
-// 	https://developers.google.com/protocol-buffers/
-package main
-
-import (
-	"io/ioutil"
-	"os"
-
-	"github.com/golang/protobuf/proto"
-	"github.com/golang/protobuf/protoc-gen-go/generator"
-)
-
-func main() {
-	// Begin by allocating a generator. The request and response structures are stored there
-	// so we can do error handling easily - the response structure contains the field to
-	// report failure.
-	g := generator.New()
-
-	data, err := ioutil.ReadAll(os.Stdin)
-	if err != nil {
-		g.Error(err, "reading input")
-	}
-
-	if err := proto.Unmarshal(data, g.Request); err != nil {
-		g.Error(err, "parsing input proto")
-	}
-
-	if len(g.Request.FileToGenerate) == 0 {
-		g.Fail("no files to generate")
-	}
-
-	g.CommandLineParameters(g.Request.GetParameter())
-
-	// Create a wrapped version of the Descriptors and EnumDescriptors that
-	// point to the file that defines them.
-	g.WrapTypes()
-
-	g.SetPackageNames()
-	g.BuildTypeNameMap()
-
-	g.GenerateAllFiles()
-
-	// Send back the results.
-	data, err = proto.Marshal(g.Response)
-	if err != nil {
-		g.Error(err, "failed to marshal output proto")
-	}
-	_, err = os.Stdout.Write(data)
-	if err != nil {
-		g.Error(err, "failed to write output proto")
-	}
-}
diff --git a/vendor/github.com/golang/protobuf/ptypes/any/any.proto b/vendor/github.com/golang/protobuf/ptypes/any/any.proto
deleted file mode 100644
index c748667..0000000
--- a/vendor/github.com/golang/protobuf/ptypes/any/any.proto
+++ /dev/null
@@ -1,149 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// 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.
-
-syntax = "proto3";
-
-package google.protobuf;
-
-option csharp_namespace = "Google.Protobuf.WellKnownTypes";
-option go_package = "github.com/golang/protobuf/ptypes/any";
-option java_package = "com.google.protobuf";
-option java_outer_classname = "AnyProto";
-option java_multiple_files = true;
-option objc_class_prefix = "GPB";
-
-// `Any` contains an arbitrary serialized protocol buffer message along with a
-// URL that describes the type of the serialized message.
-//
-// Protobuf library provides support to pack/unpack Any values in the form
-// of utility functions or additional generated methods of the Any type.
-//
-// Example 1: Pack and unpack a message in C++.
-//
-//     Foo foo = ...;
-//     Any any;
-//     any.PackFrom(foo);
-//     ...
-//     if (any.UnpackTo(&foo)) {
-//       ...
-//     }
-//
-// Example 2: Pack and unpack a message in Java.
-//
-//     Foo foo = ...;
-//     Any any = Any.pack(foo);
-//     ...
-//     if (any.is(Foo.class)) {
-//       foo = any.unpack(Foo.class);
-//     }
-//
-//  Example 3: Pack and unpack a message in Python.
-//
-//     foo = Foo(...)
-//     any = Any()
-//     any.Pack(foo)
-//     ...
-//     if any.Is(Foo.DESCRIPTOR):
-//       any.Unpack(foo)
-//       ...
-//
-//  Example 4: Pack and unpack a message in Go
-//
-//      foo := &pb.Foo{...}
-//      any, err := ptypes.MarshalAny(foo)
-//      ...
-//      foo := &pb.Foo{}
-//      if err := ptypes.UnmarshalAny(any, foo); err != nil {
-//        ...
-//      }
-//
-// The pack methods provided by protobuf library will by default use
-// 'type.googleapis.com/full.type.name' as the type URL and the unpack
-// methods only use the fully qualified type name after the last '/'
-// in the type URL, for example "foo.bar.com/x/y.z" will yield type
-// name "y.z".
-//
-//
-// JSON
-// ====
-// The JSON representation of an `Any` value uses the regular
-// representation of the deserialized, embedded message, with an
-// additional field `@type` which contains the type URL. Example:
-//
-//     package google.profile;
-//     message Person {
-//       string first_name = 1;
-//       string last_name = 2;
-//     }
-//
-//     {
-//       "@type": "type.googleapis.com/google.profile.Person",
-//       "firstName": <string>,
-//       "lastName": <string>
-//     }
-//
-// If the embedded message type is well-known and has a custom JSON
-// representation, that representation will be embedded adding a field
-// `value` which holds the custom JSON in addition to the `@type`
-// field. Example (for message [google.protobuf.Duration][]):
-//
-//     {
-//       "@type": "type.googleapis.com/google.protobuf.Duration",
-//       "value": "1.212s"
-//     }
-//
-message Any {
-  // A URL/resource name whose content describes the type of the
-  // serialized protocol buffer message.
-  //
-  // For URLs which use the scheme `http`, `https`, or no scheme, the
-  // following restrictions and interpretations apply:
-  //
-  // * 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
-  //   URL, or have them precompiled into a binary to avoid any
-  //   lookup. Therefore, binary compatibility needs to be preserved
-  //   on changes to types. (Use versioned type names to manage
-  //   breaking changes.)
-  //
-  // Schemes other than `http`, `https` (or the empty scheme) might be
-  // used with implementation specific semantics.
-  //
-  string type_url = 1;
-
-  // Must be a valid serialized protocol buffer of the above specified type.
-  bytes value = 2;
-}
diff --git a/vendor/github.com/golang/protobuf/ptypes/duration/duration.proto b/vendor/github.com/golang/protobuf/ptypes/duration/duration.proto
deleted file mode 100644
index 975fce4..0000000
--- a/vendor/github.com/golang/protobuf/ptypes/duration/duration.proto
+++ /dev/null
@@ -1,117 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// 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.
-
-syntax = "proto3";
-
-package google.protobuf;
-
-option csharp_namespace = "Google.Protobuf.WellKnownTypes";
-option cc_enable_arenas = true;
-option go_package = "github.com/golang/protobuf/ptypes/duration";
-option java_package = "com.google.protobuf";
-option java_outer_classname = "DurationProto";
-option java_multiple_files = true;
-option objc_class_prefix = "GPB";
-
-// A Duration represents a signed, fixed-length span of time represented
-// as a count of seconds and fractions of seconds at nanosecond
-// resolution. It is independent of any calendar and concepts like "day"
-// or "month". It is related to Timestamp in that the difference between
-// two Timestamp values is a Duration and it can be added or subtracted
-// from a Timestamp. Range is approximately +-10,000 years.
-//
-// # Examples
-//
-// Example 1: Compute Duration from two Timestamps in pseudo code.
-//
-//     Timestamp start = ...;
-//     Timestamp end = ...;
-//     Duration duration = ...;
-//
-//     duration.seconds = end.seconds - start.seconds;
-//     duration.nanos = end.nanos - start.nanos;
-//
-//     if (duration.seconds < 0 && duration.nanos > 0) {
-//       duration.seconds += 1;
-//       duration.nanos -= 1000000000;
-//     } else if (durations.seconds > 0 && duration.nanos < 0) {
-//       duration.seconds -= 1;
-//       duration.nanos += 1000000000;
-//     }
-//
-// Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.
-//
-//     Timestamp start = ...;
-//     Duration duration = ...;
-//     Timestamp end = ...;
-//
-//     end.seconds = start.seconds + duration.seconds;
-//     end.nanos = start.nanos + duration.nanos;
-//
-//     if (end.nanos < 0) {
-//       end.seconds -= 1;
-//       end.nanos += 1000000000;
-//     } else if (end.nanos >= 1000000000) {
-//       end.seconds += 1;
-//       end.nanos -= 1000000000;
-//     }
-//
-// Example 3: Compute Duration from datetime.timedelta in Python.
-//
-//     td = datetime.timedelta(days=3, minutes=10)
-//     duration = Duration()
-//     duration.FromTimedelta(td)
-//
-// # JSON Mapping
-//
-// In JSON format, the Duration type is encoded as a string rather than an
-// object, where the string ends in the suffix "s" (indicating seconds) and
-// is preceded by the number of seconds, with nanoseconds expressed as
-// fractional seconds. For example, 3 seconds with 0 nanoseconds should be
-// encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should
-// be expressed in JSON format as "3.000000001s", and 3 seconds and 1
-// microsecond should be expressed in JSON format as "3.000001s".
-//
-//
-message Duration {
-
-  // 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
-  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;
-}
diff --git a/vendor/github.com/golang/protobuf/ptypes/empty/empty.proto b/vendor/github.com/golang/protobuf/ptypes/empty/empty.proto
deleted file mode 100644
index 03cacd2..0000000
--- a/vendor/github.com/golang/protobuf/ptypes/empty/empty.proto
+++ /dev/null
@@ -1,52 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// 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.
-
-syntax = "proto3";
-
-package google.protobuf;
-
-option csharp_namespace = "Google.Protobuf.WellKnownTypes";
-option go_package = "github.com/golang/protobuf/ptypes/empty";
-option java_package = "com.google.protobuf";
-option java_outer_classname = "EmptyProto";
-option java_multiple_files = true;
-option objc_class_prefix = "GPB";
-option cc_enable_arenas = true;
-
-// A generic empty message that you can re-use to avoid defining duplicated
-// empty messages in your APIs. A typical example is to use it as the request
-// or the response type of an API method. For instance:
-//
-//     service Foo {
-//       rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);
-//     }
-//
-// The JSON representation for `Empty` is empty JSON object `{}`.
-message Empty {}
diff --git a/vendor/github.com/golang/protobuf/ptypes/regen.sh b/vendor/github.com/golang/protobuf/ptypes/regen.sh
deleted file mode 100755
index b50a941..0000000
--- a/vendor/github.com/golang/protobuf/ptypes/regen.sh
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/bin/bash -e
-#
-# This script fetches and rebuilds the "well-known types" protocol buffers.
-# To run this you will need protoc and goprotobuf installed;
-# see https://github.com/golang/protobuf for instructions.
-# You also need Go and Git installed.
-
-PKG=github.com/golang/protobuf/ptypes
-UPSTREAM=https://github.com/google/protobuf
-UPSTREAM_SUBDIR=src/google/protobuf
-PROTO_FILES=(any duration empty struct timestamp wrappers)
-
-function die() {
-  echo 1>&2 $*
-  exit 1
-}
-
-# Sanity check that the right tools are accessible.
-for tool in go git protoc protoc-gen-go; do
-  q=$(which $tool) || die "didn't find $tool"
-  echo 1>&2 "$tool: $q"
-done
-
-tmpdir=$(mktemp -d -t regen-wkt.XXXXXX)
-trap 'rm -rf $tmpdir' EXIT
-
-echo -n 1>&2 "finding package dir... "
-pkgdir=$(go list -f '{{.Dir}}' $PKG)
-echo 1>&2 $pkgdir
-base=$(echo $pkgdir | sed "s,/$PKG\$,,")
-echo 1>&2 "base: $base"
-cd "$base"
-
-echo 1>&2 "fetching latest protos... "
-git clone -q $UPSTREAM $tmpdir
-
-for file in ${PROTO_FILES[@]}; do
-  echo 1>&2 "* $file"
-  protoc --go_out=. -I$tmpdir/src $tmpdir/src/google/protobuf/$file.proto || die
-  cp $tmpdir/src/google/protobuf/$file.proto $PKG/$file
-done
-
-echo 1>&2 "All OK"
diff --git a/vendor/github.com/golang/protobuf/ptypes/struct/struct.proto b/vendor/github.com/golang/protobuf/ptypes/struct/struct.proto
deleted file mode 100644
index 7d7808e..0000000
--- a/vendor/github.com/golang/protobuf/ptypes/struct/struct.proto
+++ /dev/null
@@ -1,96 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// 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.
-
-syntax = "proto3";
-
-package google.protobuf;
-
-option csharp_namespace = "Google.Protobuf.WellKnownTypes";
-option cc_enable_arenas = true;
-option go_package = "github.com/golang/protobuf/ptypes/struct;structpb";
-option java_package = "com.google.protobuf";
-option java_outer_classname = "StructProto";
-option java_multiple_files = true;
-option objc_class_prefix = "GPB";
-
-
-// `Struct` represents a structured data value, consisting of fields
-// which map to dynamically typed values. In some languages, `Struct`
-// might be supported by a native representation. For example, in
-// scripting languages like JS a struct is represented as an
-// object. The details of that representation are described together
-// with the proto support for the language.
-//
-// The JSON representation for `Struct` is JSON object.
-message Struct {
-  // Unordered map of dynamically typed values.
-  map<string, Value> fields = 1;
-}
-
-// `Value` represents a dynamically typed value which can be either
-// null, a number, a string, a boolean, a recursive struct value, or a
-// list of values. A producer of value is expected to set one of that
-// variants, absence of any variant indicates an error.
-//
-// The JSON representation for `Value` is JSON value.
-message Value {
-  // The kind of value.
-  oneof kind {
-    // Represents a null value.
-    NullValue null_value = 1;
-    // Represents a double value.
-    double number_value = 2;
-    // Represents a string value.
-    string string_value = 3;
-    // Represents a boolean value.
-    bool bool_value = 4;
-    // Represents a structured value.
-    Struct struct_value = 5;
-    // Represents a repeated `Value`.
-    ListValue list_value = 6;
-  }
-}
-
-// `NullValue` is a singleton enumeration to represent the null value for the
-// `Value` type union.
-//
-//  The JSON representation for `NullValue` is JSON `null`.
-enum NullValue {
-  // Null value.
-  NULL_VALUE = 0;
-}
-
-// `ListValue` is a wrapper around a repeated field of values.
-//
-// The JSON representation for `ListValue` is JSON array.
-message ListValue {
-  // Repeated field of dynamically typed values.
-  repeated Value values = 1;
-}
diff --git a/vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.proto b/vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.proto
deleted file mode 100644
index b7cbd17..0000000
--- a/vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.proto
+++ /dev/null
@@ -1,133 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// 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.
-
-syntax = "proto3";
-
-package google.protobuf;
-
-option csharp_namespace = "Google.Protobuf.WellKnownTypes";
-option cc_enable_arenas = true;
-option go_package = "github.com/golang/protobuf/ptypes/timestamp";
-option java_package = "com.google.protobuf";
-option java_outer_classname = "TimestampProto";
-option java_multiple_files = true;
-option objc_class_prefix = "GPB";
-
-// 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).
-//
-// # Examples
-//
-// Example 1: Compute Timestamp from POSIX `time()`.
-//
-//     Timestamp timestamp;
-//     timestamp.set_seconds(time(NULL));
-//     timestamp.set_nanos(0);
-//
-// Example 2: Compute Timestamp from POSIX `gettimeofday()`.
-//
-//     struct timeval tv;
-//     gettimeofday(&tv, NULL);
-//
-//     Timestamp timestamp;
-//     timestamp.set_seconds(tv.tv_sec);
-//     timestamp.set_nanos(tv.tv_usec * 1000);
-//
-// Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.
-//
-//     FILETIME ft;
-//     GetSystemTimeAsFileTime(&ft);
-//     UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;
-//
-//     // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z
-//     // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.
-//     Timestamp timestamp;
-//     timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
-//     timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));
-//
-// Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.
-//
-//     long millis = System.currentTimeMillis();
-//
-//     Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)
-//         .setNanos((int) ((millis % 1000) * 1000000)).build();
-//
-//
-// Example 5: Compute Timestamp from current time in Python.
-//
-//     timestamp = Timestamp()
-//     timestamp.GetCurrentTime()
-//
-// # JSON Mapping
-//
-// In JSON format, the Timestamp type is encoded as a string in the
-// [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the
-// format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"
-// where {year} is always expressed using four digits while {month}, {day},
-// {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.
-//
-// For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past
-// 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]
-// 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://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime())
-// to obtain a formatter capable of generating timestamps in this format.
-//
-//
-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;
-}
diff --git a/vendor/github.com/googleapis/gax-go/.gitignore b/vendor/github.com/googleapis/gax-go/.gitignore
deleted file mode 100644
index 289bf1e..0000000
--- a/vendor/github.com/googleapis/gax-go/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*.cover
diff --git a/vendor/github.com/googleapis/gax-go/.travis.yml b/vendor/github.com/googleapis/gax-go/.travis.yml
deleted file mode 100644
index 6db28b6..0000000
--- a/vendor/github.com/googleapis/gax-go/.travis.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-sudo: false
-language: go
-go:
-  - 1.6
-  - 1.7
-before_install:
-  - go get golang.org/x/tools/cmd/cover
-  - go get golang.org/x/tools/cmd/goimports
-script:
-  - gofmt -l .
-  - goimports -l .
-  - go tool vet .
-  - go test -coverprofile=coverage.txt -covermode=atomic
-after_success:
-  - bash <(curl -s https://codecov.io/bash)
diff --git a/vendor/github.com/googleapis/gax-go/CONTRIBUTING.md b/vendor/github.com/googleapis/gax-go/CONTRIBUTING.md
deleted file mode 100644
index 2827b7d..0000000
--- a/vendor/github.com/googleapis/gax-go/CONTRIBUTING.md
+++ /dev/null
@@ -1,27 +0,0 @@
-Want to contribute? Great! First, read this page (including the small print at the end).
-
-### Before you contribute
-Before we can use your code, you must sign the
-[Google Individual Contributor License Agreement]
-(https://cla.developers.google.com/about/google-individual)
-(CLA), which you can do online. The CLA is necessary mainly because you own the
-copyright to your changes, even after your contribution becomes part of our
-codebase, so we need your permission to use and distribute your code. We also
-need to be sure of various other things—for instance that you'll tell us if you
-know that your code infringes on other people's patents. You don't have to sign
-the CLA until after you've submitted your code for review and a member has
-approved it, but you must do it before we can put your code into our codebase.
-Before you start working on a larger contribution, you should get in touch with
-us first through the issue tracker with your idea so that we can help out and
-possibly guide you. Coordinating up front makes it much easier to avoid
-frustration later on.
-
-### Code reviews
-All submissions, including submissions by project members, require review. We
-use Github pull requests for this purpose.
-
-### The small print
-Contributions made by corporations are covered by a different agreement than
-the one above, the
-[Software Grant and Corporate Contributor License Agreement]
-(https://cla.developers.google.com/about/google-corporate).
diff --git a/vendor/github.com/googleapis/gax-go/README.md b/vendor/github.com/googleapis/gax-go/README.md
deleted file mode 100644
index 3cedd5b..0000000
--- a/vendor/github.com/googleapis/gax-go/README.md
+++ /dev/null
@@ -1,24 +0,0 @@
-Google API Extensions for Go
-============================
-
-[![Build Status](https://travis-ci.org/googleapis/gax-go.svg?branch=master)](https://travis-ci.org/googleapis/gax-go)
-[![Code Coverage](https://img.shields.io/codecov/c/github/googleapis/gax-go.svg)](https://codecov.io/github/googleapis/gax-go)
-
-Google API Extensions for Go (gax-go) is a set of modules which aids the
-development of APIs for clients and servers based on `gRPC` and Google API
-conventions.
-
-Application code will rarely need to use this library directly,
-but the code generated automatically from API definition files can use it
-to simplify code generation and to provide more convenient and idiomatic API surface.
-
-**This project is currently experimental and not supported.**
-
-Go Versions
-===========
-This library requires Go 1.6 or above.
-
-License
-=======
-BSD - please see [LICENSE](https://github.com/googleapis/gax-go/blob/master/LICENSE)
-for more information.
diff --git a/vendor/github.com/russross/blackfriday/.gitignore b/vendor/github.com/russross/blackfriday/.gitignore
deleted file mode 100644
index 75623dc..0000000
--- a/vendor/github.com/russross/blackfriday/.gitignore
+++ /dev/null
@@ -1,8 +0,0 @@
-*.out
-*.swp
-*.8
-*.6
-_obj
-_test*
-markdown
-tags
diff --git a/vendor/github.com/russross/blackfriday/.travis.yml b/vendor/github.com/russross/blackfriday/.travis.yml
deleted file mode 100644
index a1687f1..0000000
--- a/vendor/github.com/russross/blackfriday/.travis.yml
+++ /dev/null
@@ -1,30 +0,0 @@
-sudo: false
-language: go
-go:
-  - 1.5.4
-  - 1.6.2
-  - tip
-matrix:
-  include:
-    - go: 1.2.2
-      script:
-        - go get -t -v ./...
-        - go test -v -race ./...
-    - go: 1.3.3
-      script:
-        - go get -t -v ./...
-        - go test -v -race ./...
-    - go: 1.4.3
-      script:
-        - go get -t -v ./...
-        - go test -v -race ./...
-  allow_failures:
-    - go: tip
-  fast_finish: true
-install:
-  - # Do nothing. This is needed to prevent default install action "go get -t -v ./..." from happening here (we want it to happen inside script step).
-script:
-  - go get -t -v ./...
-  - diff -u <(echo -n) <(gofmt -d -s .)
-  - go tool vet .
-  - go test -v -race ./...
diff --git a/vendor/github.com/russross/blackfriday/README.md b/vendor/github.com/russross/blackfriday/README.md
deleted file mode 100644
index ad9e5ee..0000000
--- a/vendor/github.com/russross/blackfriday/README.md
+++ /dev/null
@@ -1,363 +0,0 @@
-Blackfriday
-[![Build Status][BuildSVG]][BuildURL]
-[![Godoc][GodocV2SVG]][GodocV2URL]
-===========
-
-Blackfriday is a [Markdown][1] processor implemented in [Go][2]. It
-is paranoid about its input (so you can safely feed it user-supplied
-data), it is fast, it supports common extensions (tables, smart
-punctuation substitutions, etc.), and it is safe for all utf-8
-(unicode) input.
-
-HTML output is currently supported, along with Smartypants
-extensions.
-
-It started as a translation from C of [Sundown][3].
-
-
-Installation
-------------
-
-Blackfriday is compatible with any modern Go release. With Go and git installed:
-
-    go get -u gopkg.in/russross/blackfriday.v2
-
-will download, compile, and install the package into your `$GOPATH` directory
-hierarchy.
-
-
-Versions
---------
-
-Currently maintained and recommended version of Blackfriday is `v2`. It's being
-developed on its own branch: https://github.com/russross/blackfriday/v2 and the
-documentation is available at
-https://godoc.org/gopkg.in/russross/blackfriday.v2.
-
-It is `go get`-able via via [gopkg.in][6] at `gopkg.in/russross/blackfriday.v2`,
-but we highly recommend using package management tool like [dep][7] or
-[Glide][8] and make use of semantic versioning. With package management you
-should import `github.com/russross/blackfriday` and specify that you're using
-version 2.0.0.
-
-Version 2 offers a number of improvements over v1:
-
-* Cleaned up API
-* A separate call to [`Parse`][4], which produces an abstract syntax tree for
-  the document
-* Latest bug fixes
-* Flexibility to easily add your own rendering extensions
-
-Potential drawbacks:
-
-* Our benchmarks show v2 to be slightly slower than v1. Currently in the
-  ballpark of around 15%.
-* API breakage. If you can't afford modifying your code to adhere to the new API
-  and don't care too much about the new features, v2 is probably not for you.
-* Several bug fixes are trailing behind and still need to be forward-ported to
-  v2. See issue [#348](https://github.com/russross/blackfriday/issues/348) for
-  tracking.
-
-If you are still interested in the legacy `v1`, you can import it from
-`github.com/russross/blackfriday`. Documentation for the legacy v1 can be found
-here: https://godoc.org/github.com/russross/blackfriday
-
-### Known issue with `dep`
-
-There is a known problem with using Blackfriday v1 _transitively_ and `dep`.
-Currently `dep` prioritizes semver versions over anything else, and picks the
-latest one, plus it does not apply a `[[constraint]]` specifier to transitively
-pulled in packages. So if you're using something that uses Blackfriday v1, but
-that something does not use `dep` yet, you will get Blackfriday v2 pulled in and
-your first dependency will fail to build.
-
-There are couple of fixes for it, documented here:
-https://github.com/golang/dep/blob/master/docs/FAQ.md#how-do-i-constrain-a-transitive-dependencys-version
-
-Meanwhile, `dep` team is working on a more general solution to the constraints
-on transitive dependencies problem: https://github.com/golang/dep/issues/1124.
-
-
-Usage
------
-
-### v1
-
-For basic usage, it is as simple as getting your input into a byte
-slice and calling:
-
-    output := blackfriday.MarkdownBasic(input)
-
-This renders it with no extensions enabled. To get a more useful
-feature set, use this instead:
-
-    output := blackfriday.MarkdownCommon(input)
-
-### v2
-
-For the most sensible markdown processing, it is as simple as getting your input
-into a byte slice and calling:
-
-```go
-output := blackfriday.Run(input)
-```
-
-Your input will be parsed and the output rendered with a set of most popular
-extensions enabled. If you want the most basic feature set, corresponding with
-the bare Markdown specification, use:
-
-```go
-output := blackfriday.Run(input, blackfriday.WithNoExtensions())
-```
-
-### Sanitize untrusted content
-
-Blackfriday itself does nothing to protect against malicious content. If you are
-dealing with user-supplied markdown, we recommend running Blackfriday's output
-through HTML sanitizer such as [Bluemonday][5].
-
-Here's an example of simple usage of Blackfriday together with Bluemonday:
-
-```go
-import (
-    "github.com/microcosm-cc/bluemonday"
-    "gopkg.in/russross/blackfriday.v2"
-)
-
-// ...
-unsafe := blackfriday.Run(input)
-html := bluemonday.UGCPolicy().SanitizeBytes(unsafe)
-```
-
-### Custom options, v1
-
-If you want to customize the set of options, first get a renderer
-(currently only the HTML output engine), then use it to
-call the more general `Markdown` function. For examples, see the
-implementations of `MarkdownBasic` and `MarkdownCommon` in
-`markdown.go`.
-
-### Custom options, v2
-
-If you want to customize the set of options, use `blackfriday.WithExtensions`,
-`blackfriday.WithRenderer` and `blackfriday.WithRefOverride`.
-
-### `blackfriday-tool`
-
-You can also check out `blackfriday-tool` for a more complete example
-of how to use it. Download and install it using:
-
-    go get github.com/russross/blackfriday-tool
-
-This is a simple command-line tool that allows you to process a
-markdown file using a standalone program.  You can also browse the
-source directly on github if you are just looking for some example
-code:
-
-* <http://github.com/russross/blackfriday-tool>
-
-Note that if you have not already done so, installing
-`blackfriday-tool` will be sufficient to download and install
-blackfriday in addition to the tool itself. The tool binary will be
-installed in `$GOPATH/bin`.  This is a statically-linked binary that
-can be copied to wherever you need it without worrying about
-dependencies and library versions.
-
-### Sanitized anchor names
-
-Blackfriday includes an algorithm for creating sanitized anchor names
-corresponding to a given input text. This algorithm is used to create
-anchors for headings when `EXTENSION_AUTO_HEADER_IDS` is enabled. The
-algorithm has a specification, so that other packages can create
-compatible anchor names and links to those anchors.
-
-The specification is located at https://godoc.org/github.com/russross/blackfriday#hdr-Sanitized_Anchor_Names.
-
-[`SanitizedAnchorName`](https://godoc.org/github.com/russross/blackfriday#SanitizedAnchorName) exposes this functionality, and can be used to
-create compatible links to the anchor names generated by blackfriday.
-This algorithm is also implemented in a small standalone package at
-[`github.com/shurcooL/sanitized_anchor_name`](https://godoc.org/github.com/shurcooL/sanitized_anchor_name). It can be useful for clients
-that want a small package and don't need full functionality of blackfriday.
-
-
-Features
---------
-
-All features of Sundown are supported, including:
-
-*   **Compatibility**. The Markdown v1.0.3 test suite passes with
-    the `--tidy` option.  Without `--tidy`, the differences are
-    mostly in whitespace and entity escaping, where blackfriday is
-    more consistent and cleaner.
-
-*   **Common extensions**, including table support, fenced code
-    blocks, autolinks, strikethroughs, non-strict emphasis, etc.
-
-*   **Safety**. Blackfriday is paranoid when parsing, making it safe
-    to feed untrusted user input without fear of bad things
-    happening. The test suite stress tests this and there are no
-    known inputs that make it crash.  If you find one, please let me
-    know and send me the input that does it.
-
-    NOTE: "safety" in this context means *runtime safety only*. In order to
-    protect yourself against JavaScript injection in untrusted content, see
-    [this example](https://github.com/russross/blackfriday#sanitize-untrusted-content).
-
-*   **Fast processing**. It is fast enough to render on-demand in
-    most web applications without having to cache the output.
-
-*   **Thread safety**. You can run multiple parsers in different
-    goroutines without ill effect. There is no dependence on global
-    shared state.
-
-*   **Minimal dependencies**. Blackfriday only depends on standard
-    library packages in Go. The source code is pretty
-    self-contained, so it is easy to add to any project, including
-    Google App Engine projects.
-
-*   **Standards compliant**. Output successfully validates using the
-    W3C validation tool for HTML 4.01 and XHTML 1.0 Transitional.
-
-
-Extensions
-----------
-
-In addition to the standard markdown syntax, this package
-implements the following extensions:
-
-*   **Intra-word emphasis supression**. The `_` character is
-    commonly used inside words when discussing code, so having
-    markdown interpret it as an emphasis command is usually the
-    wrong thing. Blackfriday lets you treat all emphasis markers as
-    normal characters when they occur inside a word.
-
-*   **Tables**. Tables can be created by drawing them in the input
-    using a simple syntax:
-
-    ```
-    Name    | Age
-    --------|------
-    Bob     | 27
-    Alice   | 23
-    ```
-
-*   **Fenced code blocks**. In addition to the normal 4-space
-    indentation to mark code blocks, you can explicitly mark them
-    and supply a language (to make syntax highlighting simple). Just
-    mark it like this:
-
-        ``` go
-        func getTrue() bool {
-            return true
-        }
-        ```
-
-    You can use 3 or more backticks to mark the beginning of the
-    block, and the same number to mark the end of the block.
-
-    To preserve classes of fenced code blocks while using the bluemonday
-    HTML sanitizer, use the following policy:
-
-    ``` go
-    p := bluemonday.UGCPolicy()
-    p.AllowAttrs("class").Matching(regexp.MustCompile("^language-[a-zA-Z0-9]+$")).OnElements("code")
-    html := p.SanitizeBytes(unsafe)
-    ```
-
-*   **Definition lists**. A simple definition list is made of a single-line
-    term followed by a colon and the definition for that term.
-
-        Cat
-        : Fluffy animal everyone likes
-        
-        Internet
-        : Vector of transmission for pictures of cats
-
-    Terms must be separated from the previous definition by a blank line.
-
-*   **Footnotes**. A marker in the text that will become a superscript number;
-    a footnote definition that will be placed in a list of footnotes at the
-    end of the document. A footnote looks like this:
-
-        This is a footnote.[^1]
-        
-        [^1]: the footnote text.
-
-*   **Autolinking**. Blackfriday can find URLs that have not been
-    explicitly marked as links and turn them into links.
-
-*   **Strikethrough**. Use two tildes (`~~`) to mark text that
-    should be crossed out.
-
-*   **Hard line breaks**. With this extension enabled (it is off by
-    default in the `MarkdownBasic` and `MarkdownCommon` convenience
-    functions), newlines in the input translate into line breaks in
-    the output.
-
-*   **Smart quotes**. Smartypants-style punctuation substitution is
-    supported, turning normal double- and single-quote marks into
-    curly quotes, etc.
-
-*   **LaTeX-style dash parsing** is an additional option, where `--`
-    is translated into `&ndash;`, and `---` is translated into
-    `&mdash;`. This differs from most smartypants processors, which
-    turn a single hyphen into an ndash and a double hyphen into an
-    mdash.
-
-*   **Smart fractions**, where anything that looks like a fraction
-    is translated into suitable HTML (instead of just a few special
-    cases like most smartypant processors). For example, `4/5`
-    becomes `<sup>4</sup>&frasl;<sub>5</sub>`, which renders as
-    <sup>4</sup>&frasl;<sub>5</sub>.
-
-
-Other renderers
----------------
-
-Blackfriday is structured to allow alternative rendering engines. Here
-are a few of note:
-
-*   [github_flavored_markdown](https://godoc.org/github.com/shurcooL/github_flavored_markdown):
-    provides a GitHub Flavored Markdown renderer with fenced code block
-    highlighting, clickable heading anchor links.
-
-    It's not customizable, and its goal is to produce HTML output
-    equivalent to the [GitHub Markdown API endpoint](https://developer.github.com/v3/markdown/#render-a-markdown-document-in-raw-mode),
-    except the rendering is performed locally.
-
-*   [markdownfmt](https://github.com/shurcooL/markdownfmt): like gofmt,
-    but for markdown.
-
-*   [LaTeX output](https://bitbucket.org/ambrevar/blackfriday-latex):
-    renders output as LaTeX.
-
-
-TODO
-----
-
-*   More unit testing
-*   Improve Unicode support. It does not understand all Unicode
-    rules (about what constitutes a letter, a punctuation symbol,
-    etc.), so it may fail to detect word boundaries correctly in
-    some instances. It is safe on all UTF-8 input.
-
-
-License
--------
-
-[Blackfriday is distributed under the Simplified BSD License](LICENSE.txt)
-
-
-   [1]: https://daringfireball.net/projects/markdown/ "Markdown"
-   [2]: https://golang.org/ "Go Language"
-   [3]: https://github.com/vmg/sundown "Sundown"
-   [4]: https://godoc.org/gopkg.in/russross/blackfriday.v2#Parse "Parse func"
-   [5]: https://github.com/microcosm-cc/bluemonday "Bluemonday"
-   [6]: https://labix.org/gopkg.in "gopkg.in"
-   [7]: https://github.com/golang/dep/ "dep"
-   [8]: https://github.com/Masterminds/glide "Glide"
-
-   [BuildSVG]: https://travis-ci.org/russross/blackfriday.svg?branch=master
-   [BuildURL]: https://travis-ci.org/russross/blackfriday
-   [GodocV2SVG]: https://godoc.org/gopkg.in/russross/blackfriday.v2?status.svg
-   [GodocV2URL]: https://godoc.org/gopkg.in/russross/blackfriday.v2
diff --git a/vendor/golang.org/x/crypto/.gitattributes b/vendor/golang.org/x/crypto/.gitattributes
deleted file mode 100644
index d2f212e..0000000
--- a/vendor/golang.org/x/crypto/.gitattributes
+++ /dev/null
@@ -1,10 +0,0 @@
-# Treat all files in this repo as binary, with no git magic updating
-# line endings. Windows users contributing to Go will need to use a
-# modern version of git and editors capable of LF line endings.
-#
-# We'll prevent accidental CRLF line endings from entering the repo
-# via the git-review gofmt checks.
-#
-# See golang.org/issue/9281
-
-* -text
diff --git a/vendor/golang.org/x/crypto/.gitignore b/vendor/golang.org/x/crypto/.gitignore
deleted file mode 100644
index 8339fd6..0000000
--- a/vendor/golang.org/x/crypto/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-# Add no patterns to .hgignore except for files generated by the build.
-last-change
diff --git a/vendor/golang.org/x/crypto/CONTRIBUTING.md b/vendor/golang.org/x/crypto/CONTRIBUTING.md
deleted file mode 100644
index 88dff59..0000000
--- a/vendor/golang.org/x/crypto/CONTRIBUTING.md
+++ /dev/null
@@ -1,31 +0,0 @@
-# Contributing to Go
-
-Go is an open source project.
-
-It is the work of hundreds of contributors. We appreciate your help!
-
-
-## Filing issues
-
-When [filing an issue](https://golang.org/issue/new), make sure to answer these five questions:
-
-1. What version of Go are you using (`go version`)?
-2. What operating system and processor architecture are you using?
-3. What did you do?
-4. What did you expect to see?
-5. What did you see instead?
-
-General questions should go to the [golang-nuts mailing list](https://groups.google.com/group/golang-nuts) instead of the issue tracker.
-The gophers there will answer or ask you to file an issue if you've tripped over a bug.
-
-## Contributing code
-
-Please read the [Contribution Guidelines](https://golang.org/doc/contribute.html)
-before sending patches.
-
-**We do not accept GitHub pull requests**
-(we use [Gerrit](https://code.google.com/p/gerrit/) instead for code review).
-
-Unless otherwise noted, the Go source files are distributed under
-the BSD-style license found in the LICENSE file.
-
diff --git a/vendor/golang.org/x/crypto/README.md b/vendor/golang.org/x/crypto/README.md
deleted file mode 100644
index c9d6fec..0000000
--- a/vendor/golang.org/x/crypto/README.md
+++ /dev/null
@@ -1,21 +0,0 @@
-# Go Cryptography
-
-This repository holds supplementary Go cryptography libraries.
-
-## Download/Install
-
-The easiest way to install is to run `go get -u golang.org/x/crypto/...`. You
-can also manually git clone the repository to `$GOPATH/src/golang.org/x/crypto`.
-
-## Report Issues / Send Patches
-
-This repository uses Gerrit for code changes. To learn how to submit changes to
-this repository, see https://golang.org/doc/contribute.html.
-
-The main issue tracker for the crypto repository is located at
-https://github.com/golang/go/issues. Prefix your issue with "x/crypto:" in the
-subject line, so it is easy to find.
-
-Note that contributions to the cryptography package receive additional scrutiny
-due to their sensitive nature. Patches may take longer than normal to receive
-feedback.
diff --git a/vendor/golang.org/x/crypto/codereview.cfg b/vendor/golang.org/x/crypto/codereview.cfg
deleted file mode 100644
index 3f8b14b..0000000
--- a/vendor/golang.org/x/crypto/codereview.cfg
+++ /dev/null
@@ -1 +0,0 @@
-issuerepo: golang/go
diff --git a/vendor/golang.org/x/net/.gitattributes b/vendor/golang.org/x/net/.gitattributes
deleted file mode 100644
index d2f212e..0000000
--- a/vendor/golang.org/x/net/.gitattributes
+++ /dev/null
@@ -1,10 +0,0 @@
-# Treat all files in this repo as binary, with no git magic updating
-# line endings. Windows users contributing to Go will need to use a
-# modern version of git and editors capable of LF line endings.
-#
-# We'll prevent accidental CRLF line endings from entering the repo
-# via the git-review gofmt checks.
-#
-# See golang.org/issue/9281
-
-* -text
diff --git a/vendor/golang.org/x/net/.gitignore b/vendor/golang.org/x/net/.gitignore
deleted file mode 100644
index 8339fd6..0000000
--- a/vendor/golang.org/x/net/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-# Add no patterns to .hgignore except for files generated by the build.
-last-change
diff --git a/vendor/golang.org/x/net/CONTRIBUTING.md b/vendor/golang.org/x/net/CONTRIBUTING.md
deleted file mode 100644
index 88dff59..0000000
--- a/vendor/golang.org/x/net/CONTRIBUTING.md
+++ /dev/null
@@ -1,31 +0,0 @@
-# Contributing to Go
-
-Go is an open source project.
-
-It is the work of hundreds of contributors. We appreciate your help!
-
-
-## Filing issues
-
-When [filing an issue](https://golang.org/issue/new), make sure to answer these five questions:
-
-1. What version of Go are you using (`go version`)?
-2. What operating system and processor architecture are you using?
-3. What did you do?
-4. What did you expect to see?
-5. What did you see instead?
-
-General questions should go to the [golang-nuts mailing list](https://groups.google.com/group/golang-nuts) instead of the issue tracker.
-The gophers there will answer or ask you to file an issue if you've tripped over a bug.
-
-## Contributing code
-
-Please read the [Contribution Guidelines](https://golang.org/doc/contribute.html)
-before sending patches.
-
-**We do not accept GitHub pull requests**
-(we use [Gerrit](https://code.google.com/p/gerrit/) instead for code review).
-
-Unless otherwise noted, the Go source files are distributed under
-the BSD-style license found in the LICENSE file.
-
diff --git a/vendor/golang.org/x/net/README.md b/vendor/golang.org/x/net/README.md
deleted file mode 100644
index 00a9b6e..0000000
--- a/vendor/golang.org/x/net/README.md
+++ /dev/null
@@ -1,16 +0,0 @@
-# Go Networking
-
-This repository holds supplementary Go networking libraries.
-
-## Download/Install
-
-The easiest way to install is to run `go get -u golang.org/x/net`. You can
-also manually git clone the repository to `$GOPATH/src/golang.org/x/net`.
-
-## Report Issues / Send Patches
-
-This repository uses Gerrit for code changes. To learn how to submit
-changes to this repository, see https://golang.org/doc/contribute.html.
-The main issue tracker for the net repository is located at
-https://github.com/golang/go/issues. Prefix your issue with "x/net:" in the
-subject line, so it is easy to find.
diff --git a/vendor/golang.org/x/net/codereview.cfg b/vendor/golang.org/x/net/codereview.cfg
deleted file mode 100644
index 3f8b14b..0000000
--- a/vendor/golang.org/x/net/codereview.cfg
+++ /dev/null
@@ -1 +0,0 @@
-issuerepo: golang/go
diff --git a/vendor/golang.org/x/net/http2/.gitignore b/vendor/golang.org/x/net/http2/.gitignore
deleted file mode 100644
index 190f122..0000000
--- a/vendor/golang.org/x/net/http2/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-*~
-h2i/h2i
diff --git a/vendor/golang.org/x/net/http2/Dockerfile b/vendor/golang.org/x/net/http2/Dockerfile
deleted file mode 100644
index 53fc525..0000000
--- a/vendor/golang.org/x/net/http2/Dockerfile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# This Dockerfile builds a recent curl with HTTP/2 client support, using
-# a recent nghttp2 build.
-#
-# See the Makefile for how to tag it. If Docker and that image is found, the
-# Go tests use this curl binary for integration tests.
-#
-
-FROM ubuntu:trusty
-
-RUN apt-get update && \
-    apt-get upgrade -y && \
-    apt-get install -y git-core build-essential wget
-
-RUN apt-get install -y --no-install-recommends \
-       autotools-dev libtool pkg-config zlib1g-dev \
-       libcunit1-dev libssl-dev libxml2-dev libevent-dev \
-       automake autoconf
-
-# The list of packages nghttp2 recommends for h2load:
-RUN apt-get install -y --no-install-recommends make binutils \
-        autoconf automake autotools-dev \
-        libtool pkg-config zlib1g-dev libcunit1-dev libssl-dev libxml2-dev \
-        libev-dev libevent-dev libjansson-dev libjemalloc-dev \
-        cython python3.4-dev python-setuptools
-
-# Note: setting NGHTTP2_VER before the git clone, so an old git clone isn't cached:
-ENV NGHTTP2_VER 895da9a
-RUN cd /root && git clone https://github.com/tatsuhiro-t/nghttp2.git
-
-WORKDIR /root/nghttp2
-RUN git reset --hard $NGHTTP2_VER
-RUN autoreconf -i
-RUN automake
-RUN autoconf
-RUN ./configure
-RUN make
-RUN make install
-
-WORKDIR /root
-RUN wget http://curl.haxx.se/download/curl-7.45.0.tar.gz
-RUN tar -zxvf curl-7.45.0.tar.gz
-WORKDIR /root/curl-7.45.0
-RUN ./configure --with-ssl --with-nghttp2=/usr/local
-RUN make
-RUN make install
-RUN ldconfig
-
-CMD ["-h"]
-ENTRYPOINT ["/usr/local/bin/curl"]
-
diff --git a/vendor/golang.org/x/net/http2/Makefile b/vendor/golang.org/x/net/http2/Makefile
deleted file mode 100644
index 55fd826..0000000
--- a/vendor/golang.org/x/net/http2/Makefile
+++ /dev/null
@@ -1,3 +0,0 @@
-curlimage:
-	docker build -t gohttp2/curl .
-
diff --git a/vendor/golang.org/x/net/http2/README b/vendor/golang.org/x/net/http2/README
deleted file mode 100644
index 360d5aa..0000000
--- a/vendor/golang.org/x/net/http2/README
+++ /dev/null
@@ -1,20 +0,0 @@
-This is a work-in-progress HTTP/2 implementation for Go.
-
-It will eventually live in the Go standard library and won't require
-any changes to your code to use.  It will just be automatic.
-
-Status:
-
-* The server support is pretty good. A few things are missing
-  but are being worked on.
-* The client work has just started but shares a lot of code
-  is coming along much quicker.
-
-Docs are at https://godoc.org/golang.org/x/net/http2
-
-Demo test server at https://http2.golang.org/
-
-Help & bug reports welcome!
-
-Contributing: https://golang.org/doc/contribute.html
-Bugs:         https://golang.org/issue/new?title=x/net/http2:+
diff --git a/vendor/golang.org/x/oauth2/.travis.yml b/vendor/golang.org/x/oauth2/.travis.yml
deleted file mode 100644
index fa139db..0000000
--- a/vendor/golang.org/x/oauth2/.travis.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-language: go
-
-go:
-  - tip
-
-install:
-  - export GOPATH="$HOME/gopath"
-  - mkdir -p "$GOPATH/src/golang.org/x"
-  - mv "$TRAVIS_BUILD_DIR" "$GOPATH/src/golang.org/x/oauth2"
-  - go get -v -t -d golang.org/x/oauth2/...
-
-script:
-  - go test -v golang.org/x/oauth2/...
diff --git a/vendor/golang.org/x/oauth2/CONTRIBUTING.md b/vendor/golang.org/x/oauth2/CONTRIBUTING.md
deleted file mode 100644
index 46aa2b1..0000000
--- a/vendor/golang.org/x/oauth2/CONTRIBUTING.md
+++ /dev/null
@@ -1,31 +0,0 @@
-# Contributing to Go
-
-Go is an open source project.
-
-It is the work of hundreds of contributors. We appreciate your help!
-
-
-## Filing issues
-
-When [filing an issue](https://github.com/golang/oauth2/issues), make sure to answer these five questions:
-
-1. What version of Go are you using (`go version`)?
-2. What operating system and processor architecture are you using?
-3. What did you do?
-4. What did you expect to see?
-5. What did you see instead?
-
-General questions should go to the [golang-nuts mailing list](https://groups.google.com/group/golang-nuts) instead of the issue tracker.
-The gophers there will answer or ask you to file an issue if you've tripped over a bug.
-
-## Contributing code
-
-Please read the [Contribution Guidelines](https://golang.org/doc/contribute.html)
-before sending patches.
-
-**We do not accept GitHub pull requests**
-(we use [Gerrit](https://code.google.com/p/gerrit/) instead for code review).
-
-Unless otherwise noted, the Go source files are distributed under
-the BSD-style license found in the LICENSE file.
-
diff --git a/vendor/golang.org/x/oauth2/README.md b/vendor/golang.org/x/oauth2/README.md
deleted file mode 100644
index eb8dcee..0000000
--- a/vendor/golang.org/x/oauth2/README.md
+++ /dev/null
@@ -1,77 +0,0 @@
-# OAuth2 for Go
-
-[![Build Status](https://travis-ci.org/golang/oauth2.svg?branch=master)](https://travis-ci.org/golang/oauth2)
-[![GoDoc](https://godoc.org/golang.org/x/oauth2?status.svg)](https://godoc.org/golang.org/x/oauth2)
-
-oauth2 package contains a client implementation for OAuth 2.0 spec.
-
-## Installation
-
-~~~~
-go get golang.org/x/oauth2
-~~~~
-
-Or you can manually git clone the repository to
-`$(go env GOPATH)/src/golang.org/x/oauth2`.
-
-See godoc for further documentation and examples.
-
-* [godoc.org/golang.org/x/oauth2](http://godoc.org/golang.org/x/oauth2)
-* [godoc.org/golang.org/x/oauth2/google](http://godoc.org/golang.org/x/oauth2/google)
-
-
-## App Engine
-
-In change 96e89be (March 2015), we removed the `oauth2.Context2` type in favor
-of the [`context.Context`](https://golang.org/x/net/context#Context) type from
-the `golang.org/x/net/context` package
-
-This means it's no longer possible to use the "Classic App Engine"
-`appengine.Context` type with the `oauth2` package. (You're using
-Classic App Engine if you import the package `"appengine"`.)
-
-To work around this, you may use the new `"google.golang.org/appengine"`
-package. This package has almost the same API as the `"appengine"` package,
-but it can be fetched with `go get` and used on "Managed VMs" and well as
-Classic App Engine.
-
-See the [new `appengine` package's readme](https://github.com/golang/appengine#updating-a-go-app-engine-app)
-for information on updating your app.
-
-If you don't want to update your entire app to use the new App Engine packages,
-you may use both sets of packages in parallel, using only the new packages
-with the `oauth2` package.
-
-```go
-import (
-	"golang.org/x/net/context"
-	"golang.org/x/oauth2"
-	"golang.org/x/oauth2/google"
-	newappengine "google.golang.org/appengine"
-	newurlfetch "google.golang.org/appengine/urlfetch"
-
-	"appengine"
-)
-
-func handler(w http.ResponseWriter, r *http.Request) {
-	var c appengine.Context = appengine.NewContext(r)
-	c.Infof("Logging a message with the old package")
-
-	var ctx context.Context = newappengine.NewContext(r)
-	client := &http.Client{
-		Transport: &oauth2.Transport{
-			Source: google.AppEngineTokenSource(ctx, "scope"),
-			Base:   &newurlfetch.Transport{Context: ctx},
-		},
-	}
-	client.Get("...")
-}
-```
-
-## Report Issues / Send Patches
-
-This repository uses Gerrit for code changes. To learn how to submit changes to
-this repository, see https://golang.org/doc/contribute.html.
-
-The main issue tracker for the oauth2 repository is located at
-https://github.com/golang/oauth2/issues.
diff --git a/vendor/golang.org/x/sync/CONTRIBUTING.md b/vendor/golang.org/x/sync/CONTRIBUTING.md
deleted file mode 100644
index 88dff59..0000000
--- a/vendor/golang.org/x/sync/CONTRIBUTING.md
+++ /dev/null
@@ -1,31 +0,0 @@
-# Contributing to Go
-
-Go is an open source project.
-
-It is the work of hundreds of contributors. We appreciate your help!
-
-
-## Filing issues
-
-When [filing an issue](https://golang.org/issue/new), make sure to answer these five questions:
-
-1. What version of Go are you using (`go version`)?
-2. What operating system and processor architecture are you using?
-3. What did you do?
-4. What did you expect to see?
-5. What did you see instead?
-
-General questions should go to the [golang-nuts mailing list](https://groups.google.com/group/golang-nuts) instead of the issue tracker.
-The gophers there will answer or ask you to file an issue if you've tripped over a bug.
-
-## Contributing code
-
-Please read the [Contribution Guidelines](https://golang.org/doc/contribute.html)
-before sending patches.
-
-**We do not accept GitHub pull requests**
-(we use [Gerrit](https://code.google.com/p/gerrit/) instead for code review).
-
-Unless otherwise noted, the Go source files are distributed under
-the BSD-style license found in the LICENSE file.
-
diff --git a/vendor/golang.org/x/sync/README.md b/vendor/golang.org/x/sync/README.md
deleted file mode 100644
index 1f8436c..0000000
--- a/vendor/golang.org/x/sync/README.md
+++ /dev/null
@@ -1,18 +0,0 @@
-# Go Sync
-
-This repository provides Go concurrency primitives in addition to the
-ones provided by the language and "sync" and "sync/atomic" packages.
-
-## Download/Install
-
-The easiest way to install is to run `go get -u golang.org/x/sync`. You can
-also manually git clone the repository to `$GOPATH/src/golang.org/x/sync`.
-
-## Report Issues / Send Patches
-
-This repository uses Gerrit for code changes. To learn how to submit changes to
-this repository, see https://golang.org/doc/contribute.html.
-
-The main issue tracker for the sync repository is located at
-https://github.com/golang/go/issues. Prefix your issue with "x/sync:" in the
-subject line, so it is easy to find.
diff --git a/vendor/golang.org/x/sync/codereview.cfg b/vendor/golang.org/x/sync/codereview.cfg
deleted file mode 100644
index 3f8b14b..0000000
--- a/vendor/golang.org/x/sync/codereview.cfg
+++ /dev/null
@@ -1 +0,0 @@
-issuerepo: golang/go
diff --git a/vendor/golang.org/x/text/.gitattributes b/vendor/golang.org/x/text/.gitattributes
deleted file mode 100644
index d2f212e..0000000
--- a/vendor/golang.org/x/text/.gitattributes
+++ /dev/null
@@ -1,10 +0,0 @@
-# Treat all files in this repo as binary, with no git magic updating
-# line endings. Windows users contributing to Go will need to use a
-# modern version of git and editors capable of LF line endings.
-#
-# We'll prevent accidental CRLF line endings from entering the repo
-# via the git-review gofmt checks.
-#
-# See golang.org/issue/9281
-
-* -text
diff --git a/vendor/golang.org/x/text/.gitignore b/vendor/golang.org/x/text/.gitignore
deleted file mode 100644
index b2de568..0000000
--- a/vendor/golang.org/x/text/.gitignore
+++ /dev/null
@@ -1,6 +0,0 @@
-# Add no patterns to .gitignore except for files generated by the build.
-last-change
-/DATA
-# This file is rather large and the tests really only need to be run
-# after generation.
-/unicode/norm/data_test.go
\ No newline at end of file
diff --git a/vendor/golang.org/x/text/CONTRIBUTING.md b/vendor/golang.org/x/text/CONTRIBUTING.md
deleted file mode 100644
index 88dff59..0000000
--- a/vendor/golang.org/x/text/CONTRIBUTING.md
+++ /dev/null
@@ -1,31 +0,0 @@
-# Contributing to Go
-
-Go is an open source project.
-
-It is the work of hundreds of contributors. We appreciate your help!
-
-
-## Filing issues
-
-When [filing an issue](https://golang.org/issue/new), make sure to answer these five questions:
-
-1. What version of Go are you using (`go version`)?
-2. What operating system and processor architecture are you using?
-3. What did you do?
-4. What did you expect to see?
-5. What did you see instead?
-
-General questions should go to the [golang-nuts mailing list](https://groups.google.com/group/golang-nuts) instead of the issue tracker.
-The gophers there will answer or ask you to file an issue if you've tripped over a bug.
-
-## Contributing code
-
-Please read the [Contribution Guidelines](https://golang.org/doc/contribute.html)
-before sending patches.
-
-**We do not accept GitHub pull requests**
-(we use [Gerrit](https://code.google.com/p/gerrit/) instead for code review).
-
-Unless otherwise noted, the Go source files are distributed under
-the BSD-style license found in the LICENSE file.
-
diff --git a/vendor/golang.org/x/text/README.md b/vendor/golang.org/x/text/README.md
deleted file mode 100644
index 75e29bc..0000000
--- a/vendor/golang.org/x/text/README.md
+++ /dev/null
@@ -1,91 +0,0 @@
-# Go Text
-
-This repository holds supplementary Go libraries for text processing, many involving Unicode.
-
-## Semantic Versioning
-This repo uses Semantic versioning (http://semver.org/), so
-1. MAJOR version when you make incompatible API changes,
-1. MINOR version when you add functionality in a backwards-compatible manner,
-   and
-1. PATCH version when you make backwards-compatible bug fixes.
-
-A Unicode major and minor version bump is mapped to a major version bump in
-x/text.
-A path version bump in Unicode is mapped to a minor version bump in x/text.
-Note that, consistent with the definitions in semver, until version 1.0.0 of
-x/text is reached, the minor version is considered a major version.
-So going from 0.1.0 to 0.2.0 is considered to be a major version bump.
-
-A major new CLDR version is mapped to a minor version increase in x/text.
-Any other new CLDR version is mapped to a patch version increase in x/text.
-
-## Download/Install
-
-The easiest way to install is to run `go get -u golang.org/x/text`. You can
-also manually git clone the repository to `$GOPATH/src/golang.org/x/text`.
-
-## Contribute
-To submit changes to this repository, see http://golang.org/doc/contribute.html.
-
-To generate the tables in this repository (except for the encoding tables),
-run go generate from this directory. By default tables are generated for the
-Unicode version in core and the CLDR version defined in
-golang.org/x/text/unicode/cldr.
-
-Running go generate will as a side effect create a DATA subdirectory in this
-directory, which holds all files that are used as a source for generating the
-tables. This directory will also serve as a cache.
-
-## Testing
-Run
-
-    go test ./...
-
-from this directory to run all tests. Add the "-tags icu" flag to also run
-ICU conformance tests (if available). This requires that you have the correct
-ICU version installed on your system.
-
-TODO:
-- updating unversioned source files.
-
-## Generating Tables
-
-To generate the tables in this repository (except for the encoding
-tables), run `go generate` from this directory. By default tables are
-generated for the Unicode version in core and the CLDR version defined in
-golang.org/x/text/unicode/cldr.
-
-Running go generate will as a side effect create a DATA subdirectory in this
-directory which holds all files that are used as a source for generating the
-tables. This directory will also serve as a cache.
-
-## Versions
-To update a Unicode version run
-
-    UNICODE_VERSION=x.x.x go generate
-
-where `x.x.x` must correspond to a directory in http://www.unicode.org/Public/.
-If this version is newer than the version in core it will also update the
-relevant packages there. The idna package in x/net will always be updated.
-
-To update a CLDR version run
-
-    CLDR_VERSION=version go generate
-
-where `version` must correspond to a directory in
-http://www.unicode.org/Public/cldr/.
-
-Note that the code gets adapted over time to changes in the data and that
-backwards compatibility is not maintained.
-So updating to a different version may not work.
-
-The files in DATA/{iana|icu|w3|whatwg} are currently not versioned.
-
-## Report Issues / Send Patches
-
-This repository uses Gerrit for code changes. To learn how to submit changes to
-this repository, see https://golang.org/doc/contribute.html.
-
-The main issue tracker for the image repository is located at
-https://github.com/golang/go/issues. Prefix your issue with "x/image:" in the
-subject line, so it is easy to find.
diff --git a/vendor/golang.org/x/text/codereview.cfg b/vendor/golang.org/x/text/codereview.cfg
deleted file mode 100644
index 3f8b14b..0000000
--- a/vendor/golang.org/x/text/codereview.cfg
+++ /dev/null
@@ -1 +0,0 @@
-issuerepo: golang/go
diff --git a/vendor/golang.org/x/text/doc.go b/vendor/golang.org/x/text/doc.go
deleted file mode 100644
index a48e284..0000000
--- a/vendor/golang.org/x/text/doc.go
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright 2015 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.
-
-//go:generate go run gen.go
-
-// text is a repository of text-related packages related to internationalization
-// (i18n) and localization (l10n), such as character encodings, text
-// transformations, and locale-specific text handling.
-package text
-
-// TODO: more documentation on general concepts, such as Transformers, use
-// of normalization, etc.
diff --git a/vendor/golang.org/x/text/gen.go b/vendor/golang.org/x/text/gen.go
deleted file mode 100644
index 4257a18..0000000
--- a/vendor/golang.org/x/text/gen.go
+++ /dev/null
@@ -1,318 +0,0 @@
-// Copyright 2015 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 ignore
-
-// gen runs go generate on Unicode- and CLDR-related package in the text
-// repositories, taking into account dependencies and versions.
-package main
-
-import (
-	"bytes"
-	"flag"
-	"fmt"
-	"go/build"
-	"go/format"
-	"io/ioutil"
-	"os"
-	"os/exec"
-	"path"
-	"path/filepath"
-	"regexp"
-	"runtime"
-	"strings"
-	"sync"
-	"unicode"
-
-	"golang.org/x/text/collate"
-	"golang.org/x/text/internal/gen"
-	"golang.org/x/text/language"
-)
-
-var (
-	verbose     = flag.Bool("v", false, "verbose output")
-	force       = flag.Bool("force", false, "ignore failing dependencies")
-	doCore      = flag.Bool("core", false, "force an update to core")
-	excludeList = flag.String("exclude", "",
-		"comma-separated list of packages to exclude")
-
-	// The user can specify a selection of packages to build on the command line.
-	args []string
-)
-
-func exclude(pkg string) bool {
-	if len(args) > 0 {
-		return !contains(args, pkg)
-	}
-	return contains(strings.Split(*excludeList, ","), pkg)
-}
-
-// TODO:
-// - Better version handling.
-// - Generate tables for the core unicode package?
-// - Add generation for encodings. This requires some retooling here and there.
-// - Running repo-wide "long" tests.
-
-var vprintf = fmt.Printf
-
-func main() {
-	gen.Init()
-	args = flag.Args()
-	if !*verbose {
-		// Set vprintf to a no-op.
-		vprintf = func(string, ...interface{}) (int, error) { return 0, nil }
-	}
-
-	// TODO: create temporary cache directory to load files and create and set
-	// a "cache" option if the user did not specify the UNICODE_DIR environment
-	// variable. This will prevent duplicate downloads and also will enable long
-	// tests, which really need to be run after each generated package.
-
-	updateCore := *doCore
-	if gen.UnicodeVersion() != unicode.Version {
-		fmt.Printf("Requested Unicode version %s; core unicode version is %s.\n",
-			gen.UnicodeVersion(),
-			unicode.Version)
-		c := collate.New(language.Und, collate.Numeric)
-		if c.CompareString(gen.UnicodeVersion(), unicode.Version) < 0 && !*force {
-			os.Exit(2)
-		}
-		updateCore = true
-		goroot := os.Getenv("GOROOT")
-		appendToFile(
-			filepath.Join(goroot, "api", "except.txt"),
-			fmt.Sprintf("pkg unicode, const Version = %q\n", unicode.Version),
-		)
-		const lines = `pkg unicode, const Version = %q
-// TODO: add a new line of the following form for each new script and property.
-pkg unicode, var <new script or property> *RangeTable
-`
-		appendToFile(
-			filepath.Join(goroot, "api", "next.txt"),
-			fmt.Sprintf(lines, gen.UnicodeVersion()),
-		)
-	}
-
-	var unicode = &dependency{}
-	if updateCore {
-		fmt.Printf("Updating core to version %s...\n", gen.UnicodeVersion())
-		unicode = generate("unicode")
-
-		// Test some users of the unicode packages, especially the ones that
-		// keep a mirrored table. These may need to be corrected by hand.
-		generate("regexp", unicode)
-		generate("strconv", unicode) // mimics Unicode table
-		generate("strings", unicode)
-		generate("testing", unicode) // mimics Unicode table
-	}
-
-	var (
-		cldr       = generate("./unicode/cldr", unicode)
-		language   = generate("./language", cldr)
-		internal   = generate("./internal", unicode, language)
-		norm       = generate("./unicode/norm", unicode)
-		rangetable = generate("./unicode/rangetable", unicode)
-		cases      = generate("./cases", unicode, norm, language, rangetable)
-		width      = generate("./width", unicode)
-		bidi       = generate("./unicode/bidi", unicode, norm, rangetable)
-		mib        = generate("./encoding/internal/identifier", unicode)
-		_          = generate("./encoding/htmlindex", unicode, language, mib)
-		_          = generate("./encoding/ianaindex", unicode, language, mib)
-		_          = generate("./secure/precis", unicode, norm, rangetable, cases, width, bidi)
-		_          = generate("./currency", unicode, cldr, language, internal)
-		_          = generate("./internal/number", unicode, cldr, language, internal)
-		_          = generate("./feature/plural", unicode, cldr, language, internal)
-		_          = generate("./internal/export/idna", unicode, bidi, norm)
-		_          = generate("./language/display", unicode, cldr, language, internal)
-		_          = generate("./collate", unicode, norm, cldr, language, rangetable)
-		_          = generate("./search", unicode, norm, cldr, language, rangetable)
-	)
-	all.Wait()
-
-	// Copy exported packages to the destination golang.org repo.
-	copyExported("golang.org/x/net/idna")
-
-	if updateCore {
-		copyVendored()
-	}
-
-	if hasErrors {
-		fmt.Println("FAIL")
-		os.Exit(1)
-	}
-	vprintf("SUCCESS\n")
-}
-
-func appendToFile(file, text string) {
-	fmt.Println("Augmenting", file)
-	w, err := os.OpenFile(file, os.O_APPEND|os.O_WRONLY, 0600)
-	if err != nil {
-		fmt.Println("Failed to open file:", err)
-		os.Exit(1)
-	}
-	defer w.Close()
-	if _, err := w.WriteString(text); err != nil {
-		fmt.Println("Failed to write to file:", err)
-		os.Exit(1)
-	}
-}
-
-var (
-	all       sync.WaitGroup
-	hasErrors bool
-)
-
-type dependency struct {
-	sync.WaitGroup
-	hasErrors bool
-}
-
-func generate(pkg string, deps ...*dependency) *dependency {
-	var wg dependency
-	if exclude(pkg) {
-		return &wg
-	}
-	wg.Add(1)
-	all.Add(1)
-	go func() {
-		defer wg.Done()
-		defer all.Done()
-		// Wait for dependencies to finish.
-		for _, d := range deps {
-			d.Wait()
-			if d.hasErrors && !*force {
-				fmt.Printf("--- ABORT: %s\n", pkg)
-				wg.hasErrors = true
-				return
-			}
-		}
-		vprintf("=== GENERATE %s\n", pkg)
-		args := []string{"generate"}
-		if *verbose {
-			args = append(args, "-v")
-		}
-		args = append(args, pkg)
-		cmd := exec.Command(filepath.Join(runtime.GOROOT(), "bin", "go"), args...)
-		w := &bytes.Buffer{}
-		cmd.Stderr = w
-		cmd.Stdout = w
-		if err := cmd.Run(); err != nil {
-			fmt.Printf("--- FAIL: %s:\n\t%v\n\tError: %v\n", pkg, indent(w), err)
-			hasErrors = true
-			wg.hasErrors = true
-			return
-		}
-
-		vprintf("=== TEST %s\n", pkg)
-		args[0] = "test"
-		cmd = exec.Command(filepath.Join(runtime.GOROOT(), "bin", "go"), args...)
-		wt := &bytes.Buffer{}
-		cmd.Stderr = wt
-		cmd.Stdout = wt
-		if err := cmd.Run(); err != nil {
-			fmt.Printf("--- FAIL: %s:\n\t%v\n\tError: %v\n", pkg, indent(wt), err)
-			hasErrors = true
-			wg.hasErrors = true
-			return
-		}
-		vprintf("--- SUCCESS: %s\n\t%v\n", pkg, indent(w))
-		fmt.Print(wt.String())
-	}()
-	return &wg
-}
-
-// copyExported copies a package in x/text/internal/export to the
-// destination repository.
-func copyExported(p string) {
-	copyPackage(
-		filepath.Join("internal", "export", path.Base(p)),
-		filepath.Join("..", filepath.FromSlash(p[len("golang.org/x"):])),
-		"golang.org/x/text/internal/export/"+path.Base(p),
-		p)
-}
-
-// copyVendored copies packages used by Go core into the vendored directory.
-func copyVendored() {
-	root := filepath.Join(build.Default.GOROOT, filepath.FromSlash("src/vendor/golang_org/x"))
-
-	err := filepath.Walk(root, func(dir string, info os.FileInfo, err error) error {
-		if err != nil || !info.IsDir() || root == dir {
-			return err
-		}
-		src := dir[len(root)+1:]
-		const slash = string(filepath.Separator)
-		if c := strings.Split(src, slash); c[0] == "text" {
-			// Copy a text repo package from its normal location.
-			src = strings.Join(c[1:], slash)
-		} else {
-			// Copy the vendored package if it exists in the export directory.
-			src = filepath.Join("internal", "export", filepath.Base(src))
-		}
-		copyPackage(src, dir, "golang.org", "golang_org")
-		return nil
-	})
-	if err != nil {
-		fmt.Printf("Seeding directory %s has failed %v:", root, err)
-		os.Exit(1)
-	}
-}
-
-// goGenRE is used to remove go:generate lines.
-var goGenRE = regexp.MustCompile("//go:generate[^\n]*\n")
-
-// copyPackage copies relevant files from a directory in x/text to the
-// destination package directory. The destination package is assumed to have
-// the same name. For each copied file go:generate lines are removed and
-// and package comments are rewritten to the new path.
-func copyPackage(dirSrc, dirDst, search, replace string) {
-	err := filepath.Walk(dirSrc, func(file string, info os.FileInfo, err error) error {
-		base := filepath.Base(file)
-		if err != nil || info.IsDir() ||
-			!strings.HasSuffix(base, ".go") ||
-			strings.HasSuffix(base, "_test.go") ||
-			// Don't process subdirectories.
-			filepath.Dir(file) != dirSrc {
-			return nil
-		}
-		b, err := ioutil.ReadFile(file)
-		if err != nil || bytes.Contains(b, []byte("\n// +build ignore")) {
-			return err
-		}
-		// Fix paths.
-		b = bytes.Replace(b, []byte(search), []byte(replace), -1)
-		// Remove go:generate lines.
-		b = goGenRE.ReplaceAllLiteral(b, nil)
-		comment := "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n"
-		if *doCore {
-			comment = "// Code generated by running \"go run gen.go -core\" in golang.org/x/text. DO NOT EDIT.\n\n"
-		}
-		if !bytes.HasPrefix(b, []byte(comment)) {
-			b = append([]byte(comment), b...)
-		}
-		if b, err = format.Source(b); err != nil {
-			fmt.Println("Failed to format file:", err)
-			os.Exit(1)
-		}
-		file = filepath.Join(dirDst, base)
-		vprintf("=== COPY %s\n", file)
-		return ioutil.WriteFile(file, b, 0666)
-	})
-	if err != nil {
-		fmt.Println("Copying exported files failed:", err)
-		os.Exit(1)
-	}
-}
-
-func contains(a []string, s string) bool {
-	for _, e := range a {
-		if s == e {
-			return true
-		}
-	}
-	return false
-}
-
-func indent(b *bytes.Buffer) string {
-	return strings.Replace(strings.TrimSpace(b.String()), "\n", "\n\t", -1)
-}
diff --git a/vendor/golang.org/x/text/language/Makefile b/vendor/golang.org/x/text/language/Makefile
deleted file mode 100644
index 79f0057..0000000
--- a/vendor/golang.org/x/text/language/Makefile
+++ /dev/null
@@ -1,16 +0,0 @@
-# Copyright 2013 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.
-
-CLEANFILES+=maketables
-
-maketables: maketables.go
-	go build $^
-
-tables:	maketables
-	./maketables > tables.go
-	gofmt -w -s tables.go
-
-# Build (but do not run) maketables during testing,
-# just to make sure it still compiles.
-testshort: maketables
diff --git a/vendor/golang.org/x/text/secure/doc.go b/vendor/golang.org/x/text/secure/doc.go
deleted file mode 100644
index e531c35..0000000
--- a/vendor/golang.org/x/text/secure/doc.go
+++ /dev/null
@@ -1,6 +0,0 @@
-// 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.
-
-// secure is a repository of text security related packages.
-package secure // import "golang.org/x/text/secure"
diff --git a/vendor/golang.org/x/text/unicode/doc.go b/vendor/golang.org/x/text/unicode/doc.go
deleted file mode 100644
index e8f1032..0000000
--- a/vendor/golang.org/x/text/unicode/doc.go
+++ /dev/null
@@ -1,8 +0,0 @@
-// Copyright 2015 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.
-
-// unicode holds packages with implementations of Unicode standards that are
-// mostly used as building blocks for other packages in golang.org/x/text,
-// layout engines, or are otherwise more low-level in nature.
-package unicode
diff --git a/vendor/google.golang.org/api/.gitignore b/vendor/google.golang.org/api/.gitignore
deleted file mode 100644
index 50d2a9b..0000000
--- a/vendor/google.golang.org/api/.gitignore
+++ /dev/null
@@ -1,12 +0,0 @@
-_obj/
-*_testmain.go
-clientid.dat
-clientsecret.dat
-/google-api-go-generator/google-api-go-generator
-
-*.6
-*.8
-*~
-*.out
-*.test
-*.exe
diff --git a/vendor/google.golang.org/api/.hgtags b/vendor/google.golang.org/api/.hgtags
deleted file mode 100644
index f1a7357..0000000
--- a/vendor/google.golang.org/api/.hgtags
+++ /dev/null
@@ -1 +0,0 @@
-b571b553f8c057cb6952ce817dfb09b6e34a8c0b release
diff --git a/vendor/google.golang.org/api/.travis.yml b/vendor/google.golang.org/api/.travis.yml
deleted file mode 100644
index 7c81100..0000000
--- a/vendor/google.golang.org/api/.travis.yml
+++ /dev/null
@@ -1,17 +0,0 @@
-sudo: false
-
-language: go
-
-go:
-  - 1.6
-  - 1.7
-  - 1.8
-  
-before_install:
-  - openssl aes-256-cbc -K $encrypted_6c6ebd86ce52_key -iv $encrypted_6c6ebd86ce52_iv -in key.json.enc -out key.json -d
-
-install:
-  - go get -v -t -p 1 google.golang.org/api/...
-
-script:
-  - GCLOUD_TESTS_GOLANG_PROJECT_ID="dulcet-port-762" GCLOUD_TESTS_GOLANG_DESTRUCTIVE_TEST_BUCKET_NAME="dulcet-port-762-api-go-client-storage-integration-test" GCLOUD_TESTS_GOLANG_KEY="$(pwd)/key.json" go test -v -tags=integration google.golang.org/api/...
diff --git a/vendor/google.golang.org/api/CONTRIBUTING.md b/vendor/google.golang.org/api/CONTRIBUTING.md
deleted file mode 100644
index e4d36da..0000000
--- a/vendor/google.golang.org/api/CONTRIBUTING.md
+++ /dev/null
@@ -1,484 +0,0 @@
-# Contributing to the Google API Go Client
-
-## Master git repo
-
-Our master git repo is https://code.googlesource.com/google-api-go-client
-
-## Pull Requests
-
-We do **NOT** use Github pull requests. We use Gerrit instead
-with the same workflow as Go. See below.
-
-## The source tree
-
-Most of this project is auto-generated.
-
-The notable directories which are not auto-generated:
-
-```
-   google-api-go-generator/ -- the generator itself
-   googleapi/               -- shared common code, used by auto-generated code
-   examples/                -- sample code
-```
-
-# Contribution Guidelines
-
-## Introduction
-
-This document explains how to contribute changes to the google-api-go-client project.
-
-## Testing redux
-
-You've written and tested your code, but
-before sending code out for review, run all the tests for the whole
-tree to make sure the changes don't break other packages or programs:
-
-```
-$ make cached
-$ go test ./...
-...
-ok  	google.golang.org/api/google-api-go-generator	0.226s
-ok  	google.golang.org/api/googleapi	0.015s
-...
-```
-
-Ideally, you will add unit tests to one of the above directories to
-demonstrate the changes you are making and include the tests with your
-code review.
-
-## Code review
-
-Changes to google-api-go-client must be reviewed before they are submitted,
-no matter who makes the change.
-A custom git command called `git-codereview`,
-discussed below, helps manage the code review process through a Google-hosted
-[instance](https://code-review.googlesource.com/) of the code review
-system called [Gerrit](https://code.google.com/p/gerrit/).
-
-### Set up authentication for code review
-
-The Git code hosting server and Gerrit code review server both use a Google
-Account to authenticate. You therefore need a Google Account to proceed.
-(If you can use the account to
-[sign in at google.com](https://www.google.com/accounts/Login),
-you can use it to sign in to the code review server.)
-The email address you use with the code review system
-needs to be added to the [`CONTRIBUTORS`](/CONTRIBUTORS) file
-with your first code review.
-You can [create a Google Account](https://www.google.com/accounts/NewAccount)
-associated with any address where you receive email.
-
-Visit the site [code.googlesource.com](https://code.googlesource.com)
-and log in using your Google Account.
-Click on the "Generate Password" link that appears at the top of the page.
-
-Click the radio button that says "Only `code.googlesource.com`"
-to use this authentication token only for the google-api-go-client project.
-
-Further down the page is a box containing commands to install
-the authentication cookie in file called `.gitcookies` in your home
-directory.
-Copy the text for the commands into a Unix shell window to execute it.
-That will install the authentication token.
-
-(If you are on a Windows computer, you should instead follow the instructions
-in the yellow box to run the command.)
-
-### Register with Gerrit
-
-Now that you have a Google account and the authentication token,
-you need to register your account with Gerrit, the code review system.
-To do this, visit [golang.org/cl](https://golang.org/cl)
-and log in using the same Google Account you used above.
-That is all that is required.
-
-### Install the git-codereview command
-
-Now install the `git-codereview` command by running,
-
-```
-go get -u golang.org/x/review/git-codereview
-```
-
-Make sure `git-codereview` is installed in your shell path, so that the
-`git` command can find it. Check that
-
-```
-$ git codereview help
-```
-
-prints help text, not an error.
-
-Note to Git aficionados: The `git-codereview` command is not required to
-upload and manage Gerrit code reviews. For those who prefer plain Git, the text
-below gives the Git equivalent of each git-codereview command. If you do use plain
-Git, note that you still need the commit hooks that the git-codereview command
-configures; those hooks add a Gerrit `Change-Id` line to the commit
-message and check that all Go source files have been formatted with gofmt. Even
-if you intend to use plain Git for daily work, install the hooks in a new Git
-checkout by running `git-codereview hooks`.
-
-### Set up git aliases
-
-The `git-codereview` command can be run directly from the shell
-by typing, for instance,
-
-```
-$ git codereview sync
-```
-
-but it is more convenient to set up aliases for `git-codereview`'s own
-subcommands, so that the above becomes,
-
-```
-$ git sync
-```
-
-The `git-codereview` subcommands have been chosen to be distinct from
-Git's own, so it's safe to do so.
-
-The aliases are optional, but in the rest of this document we will assume
-they are installed.
-To install them, copy this text into your Git configuration file
-(usually `.gitconfig` in your home directory):
-
-```
-[alias]
-	change = codereview change
-	gofmt = codereview gofmt
-	mail = codereview mail
-	pending = codereview pending
-	submit = codereview submit
-	sync = codereview sync
-```
-
-### Understanding the git-codereview command
-
-After installing the `git-codereview` command, you can run
-
-```
-$ git codereview help
-```
-
-to learn more about its commands.
-You can also read the [command documentation](https://godoc.org/golang.org/x/review/git-codereview).
-
-### Switch to the master branch
-
-New changes should
-only be made based on the master branch.
-Before making a change, make sure you start on the master branch:
-
-```
-$ git checkout master
-$ git sync
-````
-
-(In Git terms, `git sync` runs
-`git pull -r`.)
-
-### Make a change
-
-The entire checked-out tree is writable.
-Once you have edited files, you must tell Git that they have been modified.
-You must also tell Git about any files that are added, removed, or renamed files.
-These operations are done with the usual Git commands,
-`git add`,
-`git rm`,
-and
-`git mv`.
-
-If you wish to checkpoint your work, or are ready to send the code out for review, run
-
-```
-$ git change <branch>
-```
-
-from any directory in your google-api-go-client repository to commit the changes so far.
-The name `<branch>` is an arbitrary one you choose to identify the
-local branch containing your changes.
-
-(In Git terms, `git change <branch>`
-runs `git checkout -b branch`,
-then `git branch --set-upstream-to origin/master`,
-then `git commit`.)
-
-Git will open a change description file in your editor.
-(It uses the editor named by the `$EDITOR` environment variable,
-`vi` by default.)
-The file will look like:
-
-```
-# Please enter the commit message for your changes. Lines starting
-# with '#' will be ignored, and an empty message aborts the commit.
-# On branch foo
-# Changes not staged for commit:
-#	modified:   editedfile.go
-#
-```
-
-At the beginning of this file is a blank line; replace it
-with a thorough description of your change.
-The first line of the change description is conventionally a one-line
-summary of the change, prefixed by `google-api-go-client:`,
-and is used as the subject for code review mail.
-The rest of the
-description elaborates and should provide context for the
-change and explain what it does.
-If there is a helpful reference, mention it here.
-
-After editing, the template might now read:
-
-```
-math: improved Sin, Cos and Tan precision for very large arguments
-
-The existing implementation has poor numerical properties for
-large arguments, so use the McGillicutty algorithm to improve
-accuracy above 1e10.
-
-The algorithm is described at http://wikipedia.org/wiki/McGillicutty_Algorithm
-
-Fixes #54
-
-# Please enter the commit message for your changes. Lines starting
-# with '#' will be ignored, and an empty message aborts the commit.
-# On branch foo
-# Changes not staged for commit:
-#	modified:   editedfile.go
-#
-```
-
-The commented section of the file lists all the modified files in your client.
-It is best to keep unrelated changes in different change lists,
-so if you see a file listed that should not be included, abort
-the command and move that file to a different branch.
-
-The special notation "Fixes #54" associates the change with issue 54 in the
-[google-api-go-client issue tracker](https://github.com/google/google-api-go-client/issues/54).
-When this change is eventually submitted, the issue
-tracker will automatically mark the issue as fixed.
-(There are several such conventions, described in detail in the
-[GitHub Issue Tracker documentation](https://help.github.com/articles/closing-issues-via-commit-messages/).)
-
-Once you have finished writing the commit message,
-save the file and exit the editor.
-
-If you wish to do more editing, re-stage your changes using
-`git add`, and then run
-
-```
-$ git change
-```
-
-to update the change description and incorporate the staged changes.  The
-change description contains a `Change-Id` line near the bottom,
-added by a Git commit hook during the initial
-`git change`.
-That line is used by Gerrit to match successive uploads of the same change.
-Do not edit or delete it.
-
-(In Git terms, `git change` with no branch name
-runs `git commit --amend`.)
-
-### Mail the change for review
-
-Once the change is ready, mail it out for review:
-
-```
-$ git mail
-```
-
-You can specify a reviewer or CC interested parties
-using the `-r` or `-cc` options.
-Both accept a comma-separated list of email addresses:
-
-```
-$ git mail -r joe@golang.org -cc mabel@example.com,math-nuts@swtch.com
-```
-
-Unless explicitly told otherwise, such as in the discussion leading
-up to sending in the change list, please specify
-`bradfitz@golang.org`, `gmlewis@google.com`, or
-`mcgreevy@golang.org` as a reviewer.
-
-(In Git terms, `git mail` pushes the local committed
-changes to Gerrit using `git push origin HEAD:refs/for/master`.)
-
-If your change relates to an open issue, please add a comment to the issue
-announcing your proposed fix, including a link to your CL.
-
-The code review server assigns your change an issue number and URL,
-which `git mail` will print, something like:
-
-```
-remote: New Changes:
-remote:   https://code-review.googlesource.com/99999 math: improved Sin, Cos and Tan precision for very large arguments
-```
-
-### Reviewing code
-
-Running `git mail` will send an email to you and the
-reviewers asking them to visit the issue's URL and make comments on the change.
-When done, the reviewer adds comments through the Gerrit user interface
-and clicks "Reply" to send comments back.
-You will receive a mail notification when this happens.
-You must reply through the web interface.
-
-### Revise and upload
-
-You must respond to review comments through the web interface.
-
-When you have revised the code and are ready for another round of review,
-stage those changes and use `git change` to update the
-commit.
-To send the update change list for another round of review,
-run `git mail` again.
-
-The reviewer can comment on the new copy, and the process repeats.
-The reviewer approves the change by giving it a positive score
-(+1 or +2) and replying `LGTM`: looks good to me.
-
-You can see a list of your pending changes by running
-`git pending`, and switch between change branches with
-`git change <branch>`.
-
-### Synchronize your client
-
-While you were working, others might have submitted changes to the repository.
-To update your local branch, run
-
-```
-$ git sync
-```
-
-(In git terms, `git sync` runs
-`git pull -r`.)
-
-If files you were editing have changed, Git does its best to merge the
-remote changes into your local changes.
-It may leave some files to merge by hand.
-
-For example, suppose you have edited `sin.go` but
-someone else has committed an independent change.
-When you run `git sync`,
-you will get the (scary-looking) output:
-
-```
-$ git sync
-Failed to merge in the changes.
-Patch failed at 0023 math: improved Sin, Cos and Tan precision for very large arguments
-The copy of the patch that failed is found in:
-   /home/you/repo/.git/rebase-apply/patch
-
-When you have resolved this problem, run "git rebase --continue".
-If you prefer to skip this patch, run "git rebase --skip" instead.
-To check out the original branch and stop rebasing, run "git rebase --abort".
-```
-
-
-If this happens, run
-
-```
-$ git status
-```
-
-to see which files failed to merge.
-The output will look something like this:
-
-```
-rebase in progress; onto a24c3eb
-You are currently rebasing branch 'mcgillicutty' on 'a24c3eb'.
-  (fix conflicts and then run "git rebase --continue")
-  (use "git rebase --skip" to skip this patch)
-  (use "git rebase --abort" to check out the original branch)
-
-Unmerged paths:
-  (use "git reset HEAD <file>..." to unstage)
-  (use "git add <file>..." to mark resolution)
-
-	_both modified:   sin.go_
-```
-
-
-The only important part in that transcript is the italicized "both modified"
-line: Git failed to merge your changes with the conflicting change.
-When this happens, Git leaves both sets of edits in the file,
-with conflicts marked by `<<<<<<<` and
-`>>>>>>>`.
-It is now your job to edit the file to combine them.
-Continuing the example, searching for those strings in `sin.go`
-might turn up:
-
-```
-	arg = scale(arg)
-<<<<<<< HEAD
-	if arg > 1e9 {
-=======
-	if arg > 1e10 {
->>>>>>> mcgillicutty
-		largeReduce(arg)
-```
-
-Git doesn't show it, but suppose the original text that both edits
-started with was 1e8; you changed it to 1e10 and the other change to 1e9,
-so the correct answer might now be 1e10.  First, edit the section
-to remove the markers and leave the correct code:
-
-```
-	arg = scale(arg)
-	if arg > 1e10 {
-		largeReduce(arg)
-```
-
-Then tell Git that the conflict is resolved by running
-
-```
-$ git add sin.go
-```
-
-If you had been editing the file, say for debugging, but do not
-care to preserve your changes, you can run
-`git reset HEAD sin.go`
-to abandon your changes.
-Then run `git rebase --continue` to
-restore the change commit.
-
-### Reviewing code by others
-
-You can import a change proposed by someone else into your local Git repository.
-On the Gerrit review page, click the "Download ▼" link in the upper right
-corner, copy the "Checkout" command and run it from your local Git repo.
-It should look something like this:
-
-```
-$ git fetch https://code.googlesource.com/review refs/changes/21/1221/1 && git checkout FETCH_HEAD
-```
-
-To revert, change back to the branch you were working in.
-
-### Submit the change after the review
-
-After the code has been `LGTM`'ed, an approver may
-submit it to the master branch using the Gerrit UI.
-There is a "Submit" button on the web page for the change
-that appears once the change is approved (marked +2).
-
-This checks the change into the repository.
-The change description will include a link to the code review,
-and the code review will be updated with a link to the change
-in the repository.
-Since the method used to integrate the changes is "Cherry Pick",
-the commit hashes in the repository will be changed by
-the submit operation.
-
-### More information
-
-In addition to the information here, the Go community maintains a [CodeReview](https://golang.org/wiki/CodeReview) wiki page.
-Feel free to contribute to this page as you learn the review process.
-
-## Contributors
-
-Files in the google-api-go-client repository don't list author names,
-both to avoid clutter and to avoid having to keep the lists up to date.
-Instead, please add your name to the [`CONTRIBUTORS`](/CONTRIBUTORS)
-file as your first code review, keeping the names in sorted order.
diff --git a/vendor/google.golang.org/api/GettingStarted.md b/vendor/google.golang.org/api/GettingStarted.md
deleted file mode 100644
index 08641d9..0000000
--- a/vendor/google.golang.org/api/GettingStarted.md
+++ /dev/null
@@ -1,130 +0,0 @@
-# Getting Started with the Google APIs for Go
-
-## Getting Started
-
-This is a quick walk-through of how to get started with the Google APIs for Go.
-
-## Background
-
-The first thing to understand is that the Google API libraries are auto-generated for
-each language, including Go, so they may not feel like 100% natural for any language.
-The Go versions are pretty natural, but please forgive any small non-idiomatic things.
-(Suggestions welcome, though!)
-
-## Installing
-
-Pick an API and a version of that API to install.
-You can find the complete list by looking at the
-[directories here](https://github.com/google/google-api-go-client/tree/master/).
-
-For example, let's install the
-[urlshortener's version 1 API](https://godoc.org/google.golang.org/api/urlshortener/v1):
-
-```
-$ go get -u google.golang.org/api/urlshortener/v1
-```
-
-Now it's ready for use in your code.
-
-## Using
-
-Once you've installed a library, you import it like this:
-
-```go
-package main
-
-import (
-    "golang.org/x/net/context"
-    "golang.org/x/oauth2"
-    "golang.org/x/oauth2/google"
-    "google.golang.org/api/urlshortener/v1"
-)
-```
-
-The package name, if you don't override it on your import line, is the name of the
-API without the version number. In the case above, just `urlshortener`.
-
-## Instantiating
-
-Each API has a `New` function taking an `*http.Client` and returning an API-specific `*Service`.
-
-You create the service like:
-
-```go
-    svc, err := urlshortener.New(httpClient)
-```
-
-## OAuth HTTP Client
-
-The HTTP client you pass in to the service must be one that automatically adds
-Google-supported Authorization information to the requests.
-
-There are several ways to do authentication. They will all involve the package
-[golang.org/x/oauth2](https://godoc.org/golang.org/x/oauth2) in some way.
-
-### 3-legged OAuth
-
-For 3-legged OAuth (your application redirecting a user through a website to get a
-token giving your application access to that user's resources), you will need to
-create an oauth2.Config,
-
-
-```go
-    var config = &oauth2.Config{
-        ClientID:     "", // from https://console.developers.google.com/project/<your-project-id>/apiui/credential
-        ClientSecret: "", // from https://console.developers.google.com/project/<your-project-id>/apiui/credential
-        Endpoint:     google.Endpoint,
-        Scopes:       []string{urlshortener.UrlshortenerScope},
-    }
-```
-
-... and then use the AuthCodeURL, Exchange, and Client methods on it.
-For an example, see: https://godoc.org/golang.org/x/oauth2#example-Config
-
-For the redirect URL, see
-https://developers.google.com/identity/protocols/OAuth2InstalledApp#choosingredirecturi
-
-### Service Accounts
-
-To use a Google service account, or the GCE metadata service, see
-the [golang.org/x/oauth2/google](https://godoc.org/golang.org/x/oauth2/google) package.
-In particular, see [google.DefaultClient](https://godoc.org/golang.org/x/oauth2/google#DefaultClient).
-
-### Using API Keys
-
-Some APIs require passing API keys from your application.
-To do this, you can use
-[transport.APIKey](https://godoc.org/google.golang.org/api/googleapi/transport#APIKey):
-
-```go
-    ctx := context.WithValue(context.Background(), oauth2.HTTPClient, &http.Client{
-        Transport: &transport.APIKey{Key: developerKey},
-    })
-    oauthConfig := &oauth2.Config{ .... }
-    var token *oauth2.Token = .... // via cache, or oauthConfig.Exchange
-    httpClient := oauthConfig.Client(ctx, token)
-    svc, err := urlshortener.New(httpClient)
-    ...
-```
-
-## Using the Service
-
-Each service contains zero or more methods and zero or more sub-services.
-The sub-services related to a specific type of "Resource".
-
-Those sub-services then contain their own methods.
-
-For instance, the urlshortener API has just the "Url" sub-service:
-
-```go
-    url, err := svc.Url.Get(shortURL).Do()
-    if err != nil {
-        ...
-    }
-    fmt.Printf("The URL %s goes to %s\n", shortURL, url.LongUrl)
-```
-
-For a more complete example, see
-[urlshortener.go](https://github.com/google/google-api-go-client/tree/master/examples/urlshortener.go)
-in the [examples directory](https://github.com/google/google-api-go-client/tree/master/examples/).
-(the examples use some functions in `main.go` in the same directory)
diff --git a/vendor/google.golang.org/api/NOTES b/vendor/google.golang.org/api/NOTES
deleted file mode 100644
index 571f6ec..0000000
--- a/vendor/google.golang.org/api/NOTES
+++ /dev/null
@@ -1,13 +0,0 @@
-Discovery Service:
-https://developers.google.com/discovery/
-https://developers.google.com/discovery/v1/reference/
-
-The "type" key:
-http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.1
-
-The "format" key:
-http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.23
-https://developers.google.com/discovery/v1/type-format
-
-Google JSON format docs:
-http://google-styleguide.googlecode.com/svn/trunk/jsoncstyleguide.xml
diff --git a/vendor/google.golang.org/api/README.md b/vendor/google.golang.org/api/README.md
deleted file mode 100644
index 097d330..0000000
--- a/vendor/google.golang.org/api/README.md
+++ /dev/null
@@ -1,108 +0,0 @@
-# Google APIs Client Library for Go
-
-## Getting Started
-
-```
-$ go get google.golang.org/api/tasks/v1
-$ go get google.golang.org/api/moderator/v1
-$ go get google.golang.org/api/urlshortener/v1
-... etc ...
-```
-
-and using:
-
-```go
-package main
-
-import (
-	"net/http"
-
-	"google.golang.org/api/urlshortener/v1"
-)
-
-func main() {
-	svc, err := urlshortener.New(http.DefaultClient)
-	// ...
-}
-```
-
-* For a longer tutorial, see the [Getting Started guide](https://github.com/google/google-api-go-client/blob/master/GettingStarted.md).
-* For examples, see the [examples directory](https://github.com/google/google-api-go-client/tree/master/examples).
-* For support, use the [golang-nuts](https://groups.google.com/group/golang-nuts) mailing list.
-
-## Status
-[![Build Status](https://travis-ci.org/google/google-api-go-client.png)](https://travis-ci.org/google/google-api-go-client)
-[![GoDoc](https://godoc.org/google.golang.org/api?status.svg)](https://godoc.org/google.golang.org/api)
-
-These are auto-generated Go libraries from the Google Discovery Service's JSON description files of the available "new style" Google APIs.
-
-Due to the auto-generated nature of this collection of libraries, complete APIs or specific versions can appear or go away without notice.
-As a result, you should always locally vendor any API(s) that your code relies upon.
-
-This client library is supported, but in maintenance mode only.
-We are fixing necessary bugs and adding essential features to ensure this
-library continues to meet your needs for accessing Google APIs.
-Non-critical issues will be closed.
-Any issue may be reopened if it is causing ongoing problems.
-
-If you're working with Google Cloud Platform APIs such as Datastore or Pub/Sub,
-consider using the
-[Cloud Client Libraries for Go](https://github.com/GoogleCloudPlatform/google-cloud-go)
-instead. These are the new and
-idiomatic Go libraries targeted specifically at Google Cloud Platform Services.
-
-The generator itself and the code it produces are beta. Some APIs are
-alpha/beta, and indicated as such in the import path (e.g.,
-"google.golang.org/api/someapi/v1alpha").
-
-## Application Default Credentials Example
-
-Application Default Credentials provide a simplified way to obtain credentials
-for authenticating with Google APIs.
-
-The Application Default Credentials authenticate as the application itself,
-which make them great for working with Google Cloud APIs like Storage or
-Datastore. They are the recommended form of authentication when building
-applications that run on Google Compute Engine or Google App Engine.
-
-Default credentials are provided by the `golang.org/x/oauth2/google` package. To use them, add the following import:
-
-```go
-import "golang.org/x/oauth2/google"
-```
-
-Some credentials types require you to specify scopes, and service entry points may not inject them. If you encounter this situation you may need to specify scopes as follows:
-
-```go
-import (
-        "golang.org/x/net/context"
-        "golang.org/x/oauth2/google"
-        "google.golang.org/api/compute/v1"
-)
-
-func main() {
-        // Use oauth2.NoContext if there isn't a good context to pass in.
-        ctx := context.Background()
-
-        client, err := google.DefaultClient(ctx, compute.ComputeScope)
-        if err != nil {
-                //...
-        }
-        computeService, err := compute.New(client)
-        if err != nil {
-                //...
-        }
-}
-```
-
-If you need a `oauth2.TokenSource`, use the `DefaultTokenSource` function:
-
-```go
-ts, err := google.DefaultTokenSource(ctx, scope1, scope2, ...)
-if err != nil {
-        //...
-}
-client := oauth2.NewClient(ctx, ts)
-```
-
-See also: [golang.org/x/oauth2/google](https://godoc.org/golang.org/x/oauth2/google) package documentation.
diff --git a/vendor/google.golang.org/api/TODO b/vendor/google.golang.org/api/TODO
deleted file mode 100644
index de2467c..0000000
--- a/vendor/google.golang.org/api/TODO
+++ /dev/null
@@ -1,2 +0,0 @@
-Moved to:
-https://github.com/google/google-api-go-client/issues
diff --git a/vendor/google.golang.org/api/api-list.json b/vendor/google.golang.org/api/api-list.json
deleted file mode 100644
index b3fd4e6..0000000
--- a/vendor/google.golang.org/api/api-list.json
+++ /dev/null
@@ -1,2909 +0,0 @@
-{
- "kind": "discovery#directoryList",
- "discoveryVersion": "v1",
- "items": [
-  {
-   "kind": "discovery#directoryItem",
-   "id": "acceleratedmobilepageurl:v1",
-   "name": "acceleratedmobilepageurl",
-   "version": "v1",
-   "title": "Accelerated Mobile Pages (AMP) URL API",
-   "description": "This API contains a single method, batchGet. Call this method to retrieve the AMP URL (and equivalent AMP Cache URL) for given public URL(s).",
-   "discoveryRestUrl": "https://acceleratedmobilepageurl.googleapis.com/$discovery/rest?version=v1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/amp/cache/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "adexchangebuyer:v1.2",
-   "name": "adexchangebuyer",
-   "version": "v1.2",
-   "title": "Ad Exchange Buyer API",
-   "description": "Accesses your bidding-account information, submits creatives for validation, finds available direct deals, and retrieves performance reports.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/adexchangebuyer/v1.2/rest",
-   "discoveryLink": "./apis/adexchangebuyer/v1.2/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/product/doubleclick-16.gif",
-    "x32": "https://www.google.com/images/icons/product/doubleclick-32.gif"
-   },
-   "documentationLink": "https://developers.google.com/ad-exchange/buyer-rest",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "adexchangebuyer:v1.3",
-   "name": "adexchangebuyer",
-   "version": "v1.3",
-   "title": "Ad Exchange Buyer API",
-   "description": "Accesses your bidding-account information, submits creatives for validation, finds available direct deals, and retrieves performance reports.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/adexchangebuyer/v1.3/rest",
-   "discoveryLink": "./apis/adexchangebuyer/v1.3/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/product/doubleclick-16.gif",
-    "x32": "https://www.google.com/images/icons/product/doubleclick-32.gif"
-   },
-   "documentationLink": "https://developers.google.com/ad-exchange/buyer-rest",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "adexchangebuyer:v1.4",
-   "name": "adexchangebuyer",
-   "version": "v1.4",
-   "title": "Ad Exchange Buyer API",
-   "description": "Accesses your bidding-account information, submits creatives for validation, finds available direct deals, and retrieves performance reports.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/adexchangebuyer/v1.4/rest",
-   "discoveryLink": "./apis/adexchangebuyer/v1.4/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/product/doubleclick-16.gif",
-    "x32": "https://www.google.com/images/icons/product/doubleclick-32.gif"
-   },
-   "documentationLink": "https://developers.google.com/ad-exchange/buyer-rest",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "adexchangebuyer2:v2beta1",
-   "name": "adexchangebuyer2",
-   "version": "v2beta1",
-   "title": "Ad Exchange Buyer API II",
-   "description": "Accesses the latest features for managing Ad Exchange accounts, Real-Time Bidding configurations and auction metrics, and Marketplace programmatic deals.",
-   "discoveryRestUrl": "https://adexchangebuyer.googleapis.com/$discovery/rest?version=v2beta1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/ad-exchange/buyer-rest/reference/rest/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "adexchangeseller:v1",
-   "name": "adexchangeseller",
-   "version": "v1",
-   "title": "Ad Exchange Seller API",
-   "description": "Accesses the inventory of Ad Exchange seller users and generates reports.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/adexchangeseller/v1/rest",
-   "discoveryLink": "./apis/adexchangeseller/v1/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/product/doubleclick-16.gif",
-    "x32": "https://www.google.com/images/icons/product/doubleclick-32.gif"
-   },
-   "documentationLink": "https://developers.google.com/ad-exchange/seller-rest/",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "adexchangeseller:v1.1",
-   "name": "adexchangeseller",
-   "version": "v1.1",
-   "title": "Ad Exchange Seller API",
-   "description": "Accesses the inventory of Ad Exchange seller users and generates reports.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/adexchangeseller/v1.1/rest",
-   "discoveryLink": "./apis/adexchangeseller/v1.1/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/product/doubleclick-16.gif",
-    "x32": "https://www.google.com/images/icons/product/doubleclick-32.gif"
-   },
-   "documentationLink": "https://developers.google.com/ad-exchange/seller-rest/",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "adexchangeseller:v2.0",
-   "name": "adexchangeseller",
-   "version": "v2.0",
-   "title": "Ad Exchange Seller API",
-   "description": "Accesses the inventory of Ad Exchange seller users and generates reports.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/adexchangeseller/v2.0/rest",
-   "discoveryLink": "./apis/adexchangeseller/v2.0/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/product/doubleclick-16.gif",
-    "x32": "https://www.google.com/images/icons/product/doubleclick-32.gif"
-   },
-   "documentationLink": "https://developers.google.com/ad-exchange/seller-rest/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "adexperiencereport:v1",
-   "name": "adexperiencereport",
-   "version": "v1",
-   "title": "Google Ad Experience Report API",
-   "description": "View Ad Experience Report data, and get a list of sites that have a significant number of annoying ads.",
-   "discoveryRestUrl": "https://adexperiencereport.googleapis.com/$discovery/rest?version=v1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/ad-experience-report/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "admin:datatransfer_v1",
-   "name": "admin",
-   "version": "datatransfer_v1",
-   "title": "Admin Data Transfer API",
-   "description": "Transfers user data from one user to another.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/admin/datatransfer_v1/rest",
-   "discoveryLink": "./apis/admin/datatransfer_v1/rest",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/admin-sdk/data-transfer/",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "admin:directory_v1",
-   "name": "admin",
-   "version": "directory_v1",
-   "title": "Admin Directory API",
-   "description": "The Admin SDK Directory API lets you view and manage enterprise resources such as users and groups, administrative notifications, security features, and more.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/admin/directory_v1/rest",
-   "discoveryLink": "./apis/admin/directory_v1/rest",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/admin-sdk/directory/",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "admin:reports_v1",
-   "name": "admin",
-   "version": "reports_v1",
-   "title": "Admin Reports API",
-   "description": "Fetches reports for the administrators of G Suite customers about the usage, collaboration, security, and risk for their users.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/admin/reports_v1/rest",
-   "discoveryLink": "./apis/admin/reports_v1/rest",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/admin-sdk/reports/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "adsense:v1.4",
-   "name": "adsense",
-   "version": "v1.4",
-   "title": "AdSense Management API",
-   "description": "Accesses AdSense publishers' inventory and generates performance reports.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/adsense/v1.4/rest",
-   "discoveryLink": "./apis/adsense/v1.4/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/product/adsense-16.png",
-    "x32": "https://www.google.com/images/icons/product/adsense-32.png"
-   },
-   "documentationLink": "https://developers.google.com/adsense/management/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "adsensehost:v4.1",
-   "name": "adsensehost",
-   "version": "v4.1",
-   "title": "AdSense Host API",
-   "description": "Generates performance reports, generates ad codes, and provides publisher management capabilities for AdSense Hosts.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/adsensehost/v4.1/rest",
-   "discoveryLink": "./apis/adsensehost/v4.1/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/product/adsense-16.png",
-    "x32": "https://www.google.com/images/icons/product/adsense-32.png"
-   },
-   "documentationLink": "https://developers.google.com/adsense/host/",
-   "labels": [
-    "limited_availability"
-   ],
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "analytics:v2.4",
-   "name": "analytics",
-   "version": "v2.4",
-   "title": "Google Analytics API",
-   "description": "Views and manages your Google Analytics data.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/analytics/v2.4/rest",
-   "discoveryLink": "./apis/analytics/v2.4/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/product/analytics-16.png",
-    "x32": "https://www.google.com/images/icons/product/analytics-32.png"
-   },
-   "documentationLink": "https://developers.google.com/analytics/",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "analytics:v3",
-   "name": "analytics",
-   "version": "v3",
-   "title": "Google Analytics API",
-   "description": "Views and manages your Google Analytics data.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/analytics/v3/rest",
-   "discoveryLink": "./apis/analytics/v3/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/product/analytics-16.png",
-    "x32": "https://www.google.com/images/icons/product/analytics-32.png"
-   },
-   "documentationLink": "https://developers.google.com/analytics/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "analyticsreporting:v4",
-   "name": "analyticsreporting",
-   "version": "v4",
-   "title": "Google Analytics Reporting API",
-   "description": "Accesses Analytics report data.",
-   "discoveryRestUrl": "https://analyticsreporting.googleapis.com/$discovery/rest?version=v4",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/analytics/devguides/reporting/core/v4/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "androiddeviceprovisioning:v1",
-   "name": "androiddeviceprovisioning",
-   "version": "v1",
-   "title": "Android Device Provisioning Partner API",
-   "description": "Automates reseller integration into zero-touch enrollment by assigning devices to customers and creating device reports.",
-   "discoveryRestUrl": "https://androiddeviceprovisioning.googleapis.com/$discovery/rest?version=v1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/zero-touch/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "androidenterprise:v1",
-   "name": "androidenterprise",
-   "version": "v1",
-   "title": "Google Play EMM API",
-   "description": "Manages the deployment of apps to Android for Work users.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/androidenterprise/v1/rest",
-   "discoveryLink": "./apis/androidenterprise/v1/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/product/android-16.png",
-    "x32": "https://www.google.com/images/icons/product/android-32.png"
-   },
-   "documentationLink": "https://developers.google.com/android/work/play/emm-api",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "androidmanagement:v1",
-   "name": "androidmanagement",
-   "version": "v1",
-   "title": "Android Management API",
-   "description": "The Android Management API provides remote enterprise management of Android devices and apps.",
-   "discoveryRestUrl": "https://androidmanagement.googleapis.com/$discovery/rest?version=v1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/android/management",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "androidpublisher:v1",
-   "name": "androidpublisher",
-   "version": "v1",
-   "title": "Google Play Developer API",
-   "description": "Lets Android application developers access their Google Play accounts.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/androidpublisher/v1/rest",
-   "discoveryLink": "./apis/androidpublisher/v1/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/product/android-16.png",
-    "x32": "https://www.google.com/images/icons/product/android-32.png"
-   },
-   "documentationLink": "https://developers.google.com/android-publisher",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "androidpublisher:v1.1",
-   "name": "androidpublisher",
-   "version": "v1.1",
-   "title": "Google Play Developer API",
-   "description": "Lets Android application developers access their Google Play accounts.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/androidpublisher/v1.1/rest",
-   "discoveryLink": "./apis/androidpublisher/v1.1/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/product/android-16.png",
-    "x32": "https://www.google.com/images/icons/product/android-32.png"
-   },
-   "documentationLink": "https://developers.google.com/android-publisher",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "androidpublisher:v2",
-   "name": "androidpublisher",
-   "version": "v2",
-   "title": "Google Play Developer API",
-   "description": "Lets Android application developers access their Google Play accounts.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/androidpublisher/v2/rest",
-   "discoveryLink": "./apis/androidpublisher/v2/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/product/android-16.png",
-    "x32": "https://www.google.com/images/icons/product/android-32.png"
-   },
-   "documentationLink": "https://developers.google.com/android-publisher",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "appengine:v1alpha",
-   "name": "appengine",
-   "version": "v1alpha",
-   "title": "Google App Engine Admin API",
-   "description": "The App Engine Admin API enables developers to provision and manage their App Engine applications.",
-   "discoveryRestUrl": "https://appengine.googleapis.com/$discovery/rest?version=v1alpha",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/appengine/docs/admin-api/",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "appengine:v1beta",
-   "name": "appengine",
-   "version": "v1beta",
-   "title": "Google App Engine Admin API",
-   "description": "The App Engine Admin API enables developers to provision and manage their App Engine applications.",
-   "discoveryRestUrl": "https://appengine.googleapis.com/$discovery/rest?version=v1beta",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/appengine/docs/admin-api/",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "appengine:v1",
-   "name": "appengine",
-   "version": "v1",
-   "title": "Google App Engine Admin API",
-   "description": "The App Engine Admin API enables developers to provision and manage their App Engine applications.",
-   "discoveryRestUrl": "https://appengine.googleapis.com/$discovery/rest?version=v1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/appengine/docs/admin-api/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "appengine:v1beta4",
-   "name": "appengine",
-   "version": "v1beta4",
-   "title": "Google App Engine Admin API",
-   "description": "The App Engine Admin API enables developers to provision and manage their App Engine applications.",
-   "discoveryRestUrl": "https://appengine.googleapis.com/$discovery/rest?version=v1beta4",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/appengine/docs/admin-api/",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "appengine:v1beta5",
-   "name": "appengine",
-   "version": "v1beta5",
-   "title": "Google App Engine Admin API",
-   "description": "The App Engine Admin API enables developers to provision and manage their App Engine applications.",
-   "discoveryRestUrl": "https://appengine.googleapis.com/$discovery/rest?version=v1beta5",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/appengine/docs/admin-api/",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "appsactivity:v1",
-   "name": "appsactivity",
-   "version": "v1",
-   "title": "G Suite Activity API",
-   "description": "Provides a historical view of activity.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/appsactivity/v1/rest",
-   "discoveryLink": "./apis/appsactivity/v1/rest",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/google-apps/activity/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "appstate:v1",
-   "name": "appstate",
-   "version": "v1",
-   "title": "Google App State API",
-   "description": "The Google App State API.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/appstate/v1/rest",
-   "discoveryLink": "./apis/appstate/v1/rest",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/games/services/web/api/states",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "bigquery:v2",
-   "name": "bigquery",
-   "version": "v2",
-   "title": "BigQuery API",
-   "description": "A data platform for customers to create, manage, share and query data.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/bigquery/v2/rest",
-   "discoveryLink": "./apis/bigquery/v2/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/product/search-16.gif",
-    "x32": "https://www.google.com/images/icons/product/search-32.gif"
-   },
-   "documentationLink": "https://cloud.google.com/bigquery/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "bigquerydatatransfer:v1",
-   "name": "bigquerydatatransfer",
-   "version": "v1",
-   "title": "BigQuery Data Transfer API",
-   "description": "Transfers data from partner SaaS applications to Google BigQuery on a scheduled, managed basis.",
-   "discoveryRestUrl": "https://bigquerydatatransfer.googleapis.com/$discovery/rest?version=v1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/bigquery/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "blogger:v2",
-   "name": "blogger",
-   "version": "v2",
-   "title": "Blogger API",
-   "description": "API for access to the data within Blogger.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/blogger/v2/rest",
-   "discoveryLink": "./apis/blogger/v2/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/product/blogger-16.png",
-    "x32": "https://www.google.com/images/icons/product/blogger-32.png"
-   },
-   "documentationLink": "https://developers.google.com/blogger/docs/2.0/json/getting_started",
-   "labels": [
-    "limited_availability"
-   ],
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "blogger:v3",
-   "name": "blogger",
-   "version": "v3",
-   "title": "Blogger API",
-   "description": "API for access to the data within Blogger.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/blogger/v3/rest",
-   "discoveryLink": "./apis/blogger/v3/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/product/blogger-16.png",
-    "x32": "https://www.google.com/images/icons/product/blogger-32.png"
-   },
-   "documentationLink": "https://developers.google.com/blogger/docs/3.0/getting_started",
-   "labels": [
-    "limited_availability"
-   ],
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "books:v1",
-   "name": "books",
-   "version": "v1",
-   "title": "Books API",
-   "description": "Searches for books and manages your Google Books library.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/books/v1/rest",
-   "discoveryLink": "./apis/books/v1/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/product/ebooks-16.png",
-    "x32": "https://www.google.com/images/icons/product/ebooks-32.png"
-   },
-   "documentationLink": "https://developers.google.com/books/docs/v1/getting_started",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "calendar:v3",
-   "name": "calendar",
-   "version": "v3",
-   "title": "Calendar API",
-   "description": "Manipulates events and other calendar data.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/calendar/v3/rest",
-   "discoveryLink": "./apis/calendar/v3/rest",
-   "icons": {
-    "x16": "http://www.google.com/images/icons/product/calendar-16.png",
-    "x32": "http://www.google.com/images/icons/product/calendar-32.png"
-   },
-   "documentationLink": "https://developers.google.com/google-apps/calendar/firstapp",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "civicinfo:v2",
-   "name": "civicinfo",
-   "version": "v2",
-   "title": "Google Civic Information API",
-   "description": "Provides polling places, early vote locations, contest data, election officials, and government representatives for U.S. residential addresses.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/civicinfo/v2/rest",
-   "discoveryLink": "./apis/civicinfo/v2/rest",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/civic-information",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "classroom:v1",
-   "name": "classroom",
-   "version": "v1",
-   "title": "Google Classroom API",
-   "description": "Manages classes, rosters, and invitations in Google Classroom.",
-   "discoveryRestUrl": "https://classroom.googleapis.com/$discovery/rest?version=v1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/classroom",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "cloudbilling:v1",
-   "name": "cloudbilling",
-   "version": "v1",
-   "title": "Google Cloud Billing API",
-   "description": "Allows developers to manage billing for their Google Cloud Platform projects programmatically.",
-   "discoveryRestUrl": "https://cloudbilling.googleapis.com/$discovery/rest?version=v1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/billing/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "cloudbuild:v1",
-   "name": "cloudbuild",
-   "version": "v1",
-   "title": "Google Cloud Container Builder API",
-   "description": "Builds container images in the cloud.",
-   "discoveryRestUrl": "https://cloudbuild.googleapis.com/$discovery/rest?version=v1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/container-builder/docs/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "clouddebugger:v2",
-   "name": "clouddebugger",
-   "version": "v2",
-   "title": "Stackdriver Debugger API",
-   "description": "Examines the call stack and variables of a running application without stopping or slowing it down.",
-   "discoveryRestUrl": "https://clouddebugger.googleapis.com/$discovery/rest?version=v2",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "http://cloud.google.com/debugger",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "clouderrorreporting:v1beta1",
-   "name": "clouderrorreporting",
-   "version": "v1beta1",
-   "title": "Stackdriver Error Reporting API",
-   "description": "Groups and counts similar errors from cloud services and applications, reports new errors, and provides access to error groups and their associated errors.",
-   "discoveryRestUrl": "https://clouderrorreporting.googleapis.com/$discovery/rest?version=v1beta1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/error-reporting/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "cloudfunctions:v1",
-   "name": "cloudfunctions",
-   "version": "v1",
-   "title": "Google Cloud Functions API",
-   "description": "API for managing lightweight user-provided functions executed in response to events.",
-   "discoveryRestUrl": "https://cloudfunctions.googleapis.com/$discovery/rest?version=v1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/functions",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "cloudfunctions:v1beta2",
-   "name": "cloudfunctions",
-   "version": "v1beta2",
-   "title": "Google Cloud Functions API",
-   "description": "API for managing lightweight user-provided functions executed in response to events.",
-   "discoveryRestUrl": "https://cloudfunctions.googleapis.com/$discovery/rest?version=v1beta2",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/functions",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "cloudiot:v1",
-   "name": "cloudiot",
-   "version": "v1",
-   "title": "Google Cloud IoT API",
-   "description": "Registers and manages IoT (Internet of Things) devices that connect to the Google Cloud Platform.",
-   "discoveryRestUrl": "https://cloudiot.googleapis.com/$discovery/rest?version=v1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/iot",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "cloudiot:v1beta1",
-   "name": "cloudiot",
-   "version": "v1beta1",
-   "title": "Google Cloud IoT API",
-   "description": "Registers and manages IoT (Internet of Things) devices that connect to the Google Cloud Platform.",
-   "discoveryRestUrl": "https://cloudiot.googleapis.com/$discovery/rest?version=v1beta1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/iot",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "cloudkms:v1",
-   "name": "cloudkms",
-   "version": "v1",
-   "title": "Google Cloud Key Management Service (KMS) API",
-   "description": "Manages encryption for your cloud services the same way you do on-premises. You can generate, use, rotate, and destroy AES256 encryption keys.",
-   "discoveryRestUrl": "https://cloudkms.googleapis.com/$discovery/rest?version=v1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/kms/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "cloudmonitoring:v2beta2",
-   "name": "cloudmonitoring",
-   "version": "v2beta2",
-   "title": "Cloud Monitoring API",
-   "description": "Accesses Google Cloud Monitoring data.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/cloudmonitoring/v2beta2/rest",
-   "discoveryLink": "./apis/cloudmonitoring/v2beta2/rest",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/monitoring/v2beta2/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "cloudresourcemanager:v1",
-   "name": "cloudresourcemanager",
-   "version": "v1",
-   "title": "Google Cloud Resource Manager API",
-   "description": "The Google Cloud Resource Manager API provides methods for creating, reading, and updating project metadata.",
-   "discoveryRestUrl": "https://cloudresourcemanager.googleapis.com/$discovery/rest?version=v1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/resource-manager",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "cloudresourcemanager:v1beta1",
-   "name": "cloudresourcemanager",
-   "version": "v1beta1",
-   "title": "Google Cloud Resource Manager API",
-   "description": "The Google Cloud Resource Manager API provides methods for creating, reading, and updating project metadata.",
-   "discoveryRestUrl": "https://cloudresourcemanager.googleapis.com/$discovery/rest?version=v1beta1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/resource-manager",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "cloudresourcemanager:v2beta1",
-   "name": "cloudresourcemanager",
-   "version": "v2beta1",
-   "title": "Google Cloud Resource Manager API",
-   "description": "The Google Cloud Resource Manager API provides methods for creating, reading, and updating project metadata.",
-   "discoveryRestUrl": "https://cloudresourcemanager.googleapis.com/$discovery/rest?version=v2beta1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/resource-manager",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "cloudtasks:v2beta2",
-   "name": "cloudtasks",
-   "version": "v2beta2",
-   "title": "Cloud Tasks API",
-   "description": "Manages the execution of large numbers of distributed requests. Cloud Tasks is in Alpha.",
-   "discoveryRestUrl": "https://cloudtasks.googleapis.com/$discovery/rest?version=v2beta2",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/cloud-tasks/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "cloudtrace:v1",
-   "name": "cloudtrace",
-   "version": "v1",
-   "title": "Stackdriver Trace API",
-   "description": "Send and retrieve trace data from Stackdriver Trace. Data is generated and available by default for all App Engine applications. Data from other applications can be written to Stackdriver Trace for display, reporting, and analysis.",
-   "discoveryRestUrl": "https://cloudtrace.googleapis.com/$discovery/rest?version=v1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/trace",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "cloudtrace:v2",
-   "name": "cloudtrace",
-   "version": "v2",
-   "title": "Stackdriver Trace API",
-   "description": "Send and retrieve trace data from Stackdriver Trace. Data is generated and available by default for all App Engine applications. Data from other applications can be written to Stackdriver Trace for display, reporting, and analysis.",
-   "discoveryRestUrl": "https://cloudtrace.googleapis.com/$discovery/rest?version=v2",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/trace",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "clouduseraccounts:alpha",
-   "name": "clouduseraccounts",
-   "version": "alpha",
-   "title": "Cloud User Accounts API",
-   "description": "Creates and manages users and groups for accessing Google Compute Engine virtual machines.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/clouduseraccounts/alpha/rest",
-   "discoveryLink": "./apis/clouduseraccounts/alpha/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/product/compute_engine-16.png",
-    "x32": "https://www.google.com/images/icons/product/compute_engine-32.png"
-   },
-   "documentationLink": "https://cloud.google.com/compute/docs/access/user-accounts/api/latest/",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "clouduseraccounts:beta",
-   "name": "clouduseraccounts",
-   "version": "beta",
-   "title": "Cloud User Accounts API",
-   "description": "Creates and manages users and groups for accessing Google Compute Engine virtual machines.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/clouduseraccounts/beta/rest",
-   "discoveryLink": "./apis/clouduseraccounts/beta/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/product/compute_engine-16.png",
-    "x32": "https://www.google.com/images/icons/product/compute_engine-32.png"
-   },
-   "documentationLink": "https://cloud.google.com/compute/docs/access/user-accounts/api/latest/",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "clouduseraccounts:vm_alpha",
-   "name": "clouduseraccounts",
-   "version": "vm_alpha",
-   "title": "Cloud User Accounts API",
-   "description": "Creates and manages users and groups for accessing Google Compute Engine virtual machines.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/clouduseraccounts/vm_alpha/rest",
-   "discoveryLink": "./apis/clouduseraccounts/vm_alpha/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/product/compute_engine-16.png",
-    "x32": "https://www.google.com/images/icons/product/compute_engine-32.png"
-   },
-   "documentationLink": "https://cloud.google.com/compute/docs/access/user-accounts/api/latest/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "clouduseraccounts:vm_beta",
-   "name": "clouduseraccounts",
-   "version": "vm_beta",
-   "title": "Cloud User Accounts API",
-   "description": "Creates and manages users and groups for accessing Google Compute Engine virtual machines.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/clouduseraccounts/vm_beta/rest",
-   "discoveryLink": "./apis/clouduseraccounts/vm_beta/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/product/compute_engine-16.png",
-    "x32": "https://www.google.com/images/icons/product/compute_engine-32.png"
-   },
-   "documentationLink": "https://cloud.google.com/compute/docs/access/user-accounts/api/latest/",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "compute:alpha",
-   "name": "compute",
-   "version": "alpha",
-   "title": "Compute Engine API",
-   "description": "Creates and runs virtual machines on Google Cloud Platform.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/compute/alpha/rest",
-   "discoveryLink": "./apis/compute/alpha/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/product/compute_engine-16.png",
-    "x32": "https://www.google.com/images/icons/product/compute_engine-32.png"
-   },
-   "documentationLink": "https://developers.google.com/compute/docs/reference/latest/",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "compute:beta",
-   "name": "compute",
-   "version": "beta",
-   "title": "Compute Engine API",
-   "description": "Creates and runs virtual machines on Google Cloud Platform.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/compute/beta/rest",
-   "discoveryLink": "./apis/compute/beta/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/product/compute_engine-16.png",
-    "x32": "https://www.google.com/images/icons/product/compute_engine-32.png"
-   },
-   "documentationLink": "https://developers.google.com/compute/docs/reference/latest/",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "compute:v1",
-   "name": "compute",
-   "version": "v1",
-   "title": "Compute Engine API",
-   "description": "Creates and runs virtual machines on Google Cloud Platform.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/compute/v1/rest",
-   "discoveryLink": "./apis/compute/v1/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/product/compute_engine-16.png",
-    "x32": "https://www.google.com/images/icons/product/compute_engine-32.png"
-   },
-   "documentationLink": "https://developers.google.com/compute/docs/reference/latest/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "consumersurveys:v2",
-   "name": "consumersurveys",
-   "version": "v2",
-   "title": "Consumer Surveys API",
-   "description": "Creates and conducts surveys, lists the surveys that an authenticated user owns, and retrieves survey results and information about specified surveys.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/consumersurveys/v2/rest",
-   "discoveryLink": "./apis/consumersurveys/v2/rest",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "container:v1",
-   "name": "container",
-   "version": "v1",
-   "title": "Google Container Engine API",
-   "description": "The Google Container Engine API is used for building and managing container based applications, powered by the open source Kubernetes technology.",
-   "discoveryRestUrl": "https://container.googleapis.com/$discovery/rest?version=v1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/container-engine/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "container:v1beta1",
-   "name": "container",
-   "version": "v1beta1",
-   "title": "Google Container Engine API",
-   "description": "The Google Container Engine API is used for building and managing container based applications, powered by the open source Kubernetes technology.",
-   "discoveryRestUrl": "https://container.googleapis.com/$discovery/rest?version=v1beta1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/container-engine/",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "content:v2sandbox",
-   "name": "content",
-   "version": "v2sandbox",
-   "title": "Content API for Shopping",
-   "description": "Manages product items, inventory, and Merchant Center accounts for Google Shopping.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/content/v2sandbox/rest",
-   "discoveryLink": "./apis/content/v2sandbox/rest",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/shopping-content",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "content:v2",
-   "name": "content",
-   "version": "v2",
-   "title": "Content API for Shopping",
-   "description": "Manages product items, inventory, and Merchant Center accounts for Google Shopping.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/content/v2/rest",
-   "discoveryLink": "./apis/content/v2/rest",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/shopping-content",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "customsearch:v1",
-   "name": "customsearch",
-   "version": "v1",
-   "title": "CustomSearch API",
-   "description": "Searches over a website or collection of websites",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/customsearch/v1/rest",
-   "discoveryLink": "./apis/customsearch/v1/rest",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/custom-search/v1/using_rest",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "dataflow:v1b3",
-   "name": "dataflow",
-   "version": "v1b3",
-   "title": "Google Dataflow API",
-   "description": "Manages Google Cloud Dataflow projects on Google Cloud Platform.",
-   "discoveryRestUrl": "https://dataflow.googleapis.com/$discovery/rest?version=v1b3",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/dataflow",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "dataproc:v1",
-   "name": "dataproc",
-   "version": "v1",
-   "title": "Google Cloud Dataproc API",
-   "description": "Manages Hadoop-based clusters and jobs on Google Cloud Platform.",
-   "discoveryRestUrl": "https://dataproc.googleapis.com/$discovery/rest?version=v1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/dataproc/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "dataproc:v1beta2",
-   "name": "dataproc",
-   "version": "v1beta2",
-   "title": "Google Cloud Dataproc API",
-   "description": "Manages Hadoop-based clusters and jobs on Google Cloud Platform.",
-   "discoveryRestUrl": "https://dataproc.googleapis.com/$discovery/rest?version=v1beta2",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/dataproc/",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "datastore:v1",
-   "name": "datastore",
-   "version": "v1",
-   "title": "Google Cloud Datastore API",
-   "description": "Accesses the schemaless NoSQL database to provide fully managed, robust, scalable storage for your application.",
-   "discoveryRestUrl": "https://datastore.googleapis.com/$discovery/rest?version=v1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/datastore/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "datastore:v1beta1",
-   "name": "datastore",
-   "version": "v1beta1",
-   "title": "Google Cloud Datastore API",
-   "description": "Accesses the schemaless NoSQL database to provide fully managed, robust, scalable storage for your application.",
-   "discoveryRestUrl": "https://datastore.googleapis.com/$discovery/rest?version=v1beta1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/datastore/",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "datastore:v1beta3",
-   "name": "datastore",
-   "version": "v1beta3",
-   "title": "Google Cloud Datastore API",
-   "description": "Accesses the schemaless NoSQL database to provide fully managed, robust, scalable storage for your application.",
-   "discoveryRestUrl": "https://datastore.googleapis.com/$discovery/rest?version=v1beta3",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/datastore/",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "deploymentmanager:alpha",
-   "name": "deploymentmanager",
-   "version": "alpha",
-   "title": "Google Cloud Deployment Manager Alpha API",
-   "description": "The Deployment Manager API allows users to declaratively configure, deploy and run complex solutions on the Google Cloud Platform.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/deploymentmanager/alpha/rest",
-   "discoveryLink": "./apis/deploymentmanager/alpha/rest",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/deployment-manager/",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "deploymentmanager:v2beta",
-   "name": "deploymentmanager",
-   "version": "v2beta",
-   "title": "Google Cloud Deployment Manager API V2Beta Methods",
-   "description": "The Deployment Manager API allows users to declaratively configure, deploy and run complex solutions on the Google Cloud Platform.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/deploymentmanager/v2beta/rest",
-   "discoveryLink": "./apis/deploymentmanager/v2beta/rest",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/deployment-manager/",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "deploymentmanager:v2",
-   "name": "deploymentmanager",
-   "version": "v2",
-   "title": "Google Cloud Deployment Manager API",
-   "description": "Declares, configures, and deploys complex solutions on Google Cloud Platform.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/deploymentmanager/v2/rest",
-   "discoveryLink": "./apis/deploymentmanager/v2/rest",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/deployment-manager/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "dfareporting:v2.7",
-   "name": "dfareporting",
-   "version": "v2.7",
-   "title": "DCM/DFA Reporting And Trafficking API",
-   "description": "Manages your DoubleClick Campaign Manager ad campaigns and reports.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/dfareporting/v2.7/rest",
-   "discoveryLink": "./apis/dfareporting/v2.7/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/product/doubleclick-16.gif",
-    "x32": "https://www.google.com/images/icons/product/doubleclick-32.gif"
-   },
-   "documentationLink": "https://developers.google.com/doubleclick-advertisers/",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "dfareporting:v2.8",
-   "name": "dfareporting",
-   "version": "v2.8",
-   "title": "DCM/DFA Reporting And Trafficking API",
-   "description": "Manages your DoubleClick Campaign Manager ad campaigns and reports.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/dfareporting/v2.8/rest",
-   "discoveryLink": "./apis/dfareporting/v2.8/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/product/doubleclick-16.gif",
-    "x32": "https://www.google.com/images/icons/product/doubleclick-32.gif"
-   },
-   "documentationLink": "https://developers.google.com/doubleclick-advertisers/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "discovery:v1",
-   "name": "discovery",
-   "version": "v1",
-   "title": "APIs Discovery Service",
-   "description": "Provides information about other Google APIs, such as what APIs are available, the resource, and method details for each API.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/discovery/v1/rest",
-   "discoveryLink": "./apis/discovery/v1/rest",
-   "icons": {
-    "x16": "http://www.google.com/images/icons/feature/filing_cabinet_search-g16.png",
-    "x32": "http://www.google.com/images/icons/feature/filing_cabinet_search-g32.png"
-   },
-   "documentationLink": "https://developers.google.com/discovery/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "dlp:v2beta1",
-   "name": "dlp",
-   "version": "v2beta1",
-   "title": "DLP API",
-   "description": "The Google Data Loss Prevention API provides methods for detection of privacy-sensitive fragments in text, images, and Google Cloud Platform storage repositories.",
-   "discoveryRestUrl": "https://dlp.googleapis.com/$discovery/rest?version=v2beta1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/dlp/docs/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "dns:v1",
-   "name": "dns",
-   "version": "v1",
-   "title": "Google Cloud DNS API",
-   "description": "Configures and serves authoritative DNS records.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/dns/v1/rest",
-   "discoveryLink": "./apis/dns/v1/rest",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/cloud-dns",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "dns:v1beta2",
-   "name": "dns",
-   "version": "v1beta2",
-   "title": "Google Cloud DNS API",
-   "description": "Configures and serves authoritative DNS records.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/dns/v1beta2/rest",
-   "discoveryLink": "./apis/dns/v1beta2/rest",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/cloud-dns",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "dns:v2beta1",
-   "name": "dns",
-   "version": "v2beta1",
-   "title": "Google Cloud DNS API",
-   "description": "Configures and serves authoritative DNS records.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/dns/v2beta1/rest",
-   "discoveryLink": "./apis/dns/v2beta1/rest",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/cloud-dns",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "doubleclickbidmanager:v1",
-   "name": "doubleclickbidmanager",
-   "version": "v1",
-   "title": "DoubleClick Bid Manager API",
-   "description": "API for viewing and managing your reports in DoubleClick Bid Manager.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/doubleclickbidmanager/v1/rest",
-   "discoveryLink": "./apis/doubleclickbidmanager/v1/rest",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/bid-manager/",
-   "labels": [
-    "limited_availability"
-   ],
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "doubleclicksearch:v2",
-   "name": "doubleclicksearch",
-   "version": "v2",
-   "title": "DoubleClick Search API",
-   "description": "Reports and modifies your advertising data in DoubleClick Search (for example, campaigns, ad groups, keywords, and conversions).",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/doubleclicksearch/v2/rest",
-   "discoveryLink": "./apis/doubleclicksearch/v2/rest",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/doubleclick-search/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "drive:v2",
-   "name": "drive",
-   "version": "v2",
-   "title": "Drive API",
-   "description": "Manages files in Drive including uploading, downloading, searching, detecting changes, and updating sharing permissions.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/drive/v2/rest",
-   "discoveryLink": "./apis/drive/v2/rest",
-   "icons": {
-    "x16": "https://ssl.gstatic.com/docs/doclist/images/drive_icon_16.png",
-    "x32": "https://ssl.gstatic.com/docs/doclist/images/drive_icon_32.png"
-   },
-   "documentationLink": "https://developers.google.com/drive/",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "drive:v3",
-   "name": "drive",
-   "version": "v3",
-   "title": "Drive API",
-   "description": "Manages files in Drive including uploading, downloading, searching, detecting changes, and updating sharing permissions.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/drive/v3/rest",
-   "discoveryLink": "./apis/drive/v3/rest",
-   "icons": {
-    "x16": "https://ssl.gstatic.com/docs/doclist/images/drive_icon_16.png",
-    "x32": "https://ssl.gstatic.com/docs/doclist/images/drive_icon_32.png"
-   },
-   "documentationLink": "https://developers.google.com/drive/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "firebasedynamiclinks:v1",
-   "name": "firebasedynamiclinks",
-   "version": "v1",
-   "title": "Firebase Dynamic Links API",
-   "description": "Programmatically creates and manages Firebase Dynamic Links.",
-   "discoveryRestUrl": "https://firebasedynamiclinks.googleapis.com/$discovery/rest?version=v1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://firebase.google.com/docs/dynamic-links/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "firebaseremoteconfig:v1",
-   "name": "firebaseremoteconfig",
-   "version": "v1",
-   "title": "Firebase Remote Config API",
-   "description": "Firebase Remote Config API allows the 3P clients to manage Remote Config conditions and parameters for Firebase applications.",
-   "discoveryRestUrl": "https://firebaseremoteconfig.googleapis.com/$discovery/rest?version=v1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://firebase.google.com/docs/remote-config/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "firebaserules:v1",
-   "name": "firebaserules",
-   "version": "v1",
-   "title": "Firebase Rules API",
-   "description": "Creates and manages rules that determine when a Firebase Rules-enabled service should permit a request.",
-   "discoveryRestUrl": "https://firebaserules.googleapis.com/$discovery/rest?version=v1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://firebase.google.com/docs/storage/security",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "firestore:v1beta1",
-   "name": "firestore",
-   "version": "v1beta1",
-   "title": "Google Cloud Firestore API",
-   "description": "",
-   "discoveryRestUrl": "https://firestore.googleapis.com/$discovery/rest?version=v1beta1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/firestore",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "fitness:v1",
-   "name": "fitness",
-   "version": "v1",
-   "title": "Fitness",
-   "description": "Stores and accesses user data in the fitness store from apps on any platform.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/fitness/v1/rest",
-   "discoveryLink": "./apis/fitness/v1/rest",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/fit/rest/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "fusiontables:v1",
-   "name": "fusiontables",
-   "version": "v1",
-   "title": "Fusion Tables API",
-   "description": "API for working with Fusion Tables data.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/fusiontables/v1/rest",
-   "discoveryLink": "./apis/fusiontables/v1/rest",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/fusiontables",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "fusiontables:v2",
-   "name": "fusiontables",
-   "version": "v2",
-   "title": "Fusion Tables API",
-   "description": "API for working with Fusion Tables data.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/fusiontables/v2/rest",
-   "discoveryLink": "./apis/fusiontables/v2/rest",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/fusiontables",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "games:v1",
-   "name": "games",
-   "version": "v1",
-   "title": "Google Play Game Services API",
-   "description": "The API for Google Play Game Services.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/games/v1/rest",
-   "discoveryLink": "./apis/games/v1/rest",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/games/services/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "gamesConfiguration:v1configuration",
-   "name": "gamesConfiguration",
-   "version": "v1configuration",
-   "title": "Google Play Game Services Publishing API",
-   "description": "The Publishing API for Google Play Game Services.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/gamesConfiguration/v1configuration/rest",
-   "discoveryLink": "./apis/gamesConfiguration/v1configuration/rest",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/games/services",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "gamesManagement:v1management",
-   "name": "gamesManagement",
-   "version": "v1management",
-   "title": "Google Play Game Services Management API",
-   "description": "The Management API for Google Play Game Services.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/gamesManagement/v1management/rest",
-   "discoveryLink": "./apis/gamesManagement/v1management/rest",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/games/services",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "genomics:v1alpha2",
-   "name": "genomics",
-   "version": "v1alpha2",
-   "title": "Genomics API",
-   "description": "Upload, process, query, and search Genomics data in the cloud.",
-   "discoveryRestUrl": "https://genomics.googleapis.com/$discovery/rest?version=v1alpha2",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/genomics",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "genomics:v1",
-   "name": "genomics",
-   "version": "v1",
-   "title": "Genomics API",
-   "description": "Upload, process, query, and search Genomics data in the cloud.",
-   "discoveryRestUrl": "https://genomics.googleapis.com/$discovery/rest?version=v1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/genomics",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "gmail:v1",
-   "name": "gmail",
-   "version": "v1",
-   "title": "Gmail API",
-   "description": "Access Gmail mailboxes including sending user email.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/gmail/v1/rest",
-   "discoveryLink": "./apis/gmail/v1/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/product/googlemail-16.png",
-    "x32": "https://www.google.com/images/icons/product/googlemail-32.png"
-   },
-   "documentationLink": "https://developers.google.com/gmail/api/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "groupsmigration:v1",
-   "name": "groupsmigration",
-   "version": "v1",
-   "title": "Groups Migration API",
-   "description": "Groups Migration Api.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/groupsmigration/v1/rest",
-   "discoveryLink": "./apis/groupsmigration/v1/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/product/discussions-16.gif",
-    "x32": "https://www.google.com/images/icons/product/discussions-32.gif"
-   },
-   "documentationLink": "https://developers.google.com/google-apps/groups-migration/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "groupssettings:v1",
-   "name": "groupssettings",
-   "version": "v1",
-   "title": "Groups Settings API",
-   "description": "Lets you manage permission levels and related settings of a group.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/groupssettings/v1/rest",
-   "discoveryLink": "./apis/groupssettings/v1/rest",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/google-apps/groups-settings/get_started",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "iam:v1",
-   "name": "iam",
-   "version": "v1",
-   "title": "Google Identity and Access Management (IAM) API",
-   "description": "Manages identity and access control for Google Cloud Platform resources, including the creation of service accounts, which you can use to authenticate to Google and make API calls.",
-   "discoveryRestUrl": "https://iam.googleapis.com/$discovery/rest?version=v1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/iam/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "identitytoolkit:v3",
-   "name": "identitytoolkit",
-   "version": "v3",
-   "title": "Google Identity Toolkit API",
-   "description": "Help the third party sites to implement federated login.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/identitytoolkit/v3/rest",
-   "discoveryLink": "./apis/identitytoolkit/v3/rest",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/identity-toolkit/v3/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "kgsearch:v1",
-   "name": "kgsearch",
-   "version": "v1",
-   "title": "Knowledge Graph Search API",
-   "description": "Searches the Google Knowledge Graph for entities.",
-   "discoveryRestUrl": "https://kgsearch.googleapis.com/$discovery/rest?version=v1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/knowledge-graph/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "language:v1",
-   "name": "language",
-   "version": "v1",
-   "title": "Google Cloud Natural Language API",
-   "description": "Provides natural language understanding technologies to developers. Examples include sentiment analysis, entity recognition, entity sentiment analysis, and text annotations.",
-   "discoveryRestUrl": "https://language.googleapis.com/$discovery/rest?version=v1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/natural-language/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "language:v1beta1",
-   "name": "language",
-   "version": "v1beta1",
-   "title": "Google Cloud Natural Language API",
-   "description": "Provides natural language understanding technologies to developers. Examples include sentiment analysis, entity recognition, entity sentiment analysis, and text annotations.",
-   "discoveryRestUrl": "https://language.googleapis.com/$discovery/rest?version=v1beta1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/natural-language/",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "language:v1beta2",
-   "name": "language",
-   "version": "v1beta2",
-   "title": "Google Cloud Natural Language API",
-   "description": "Provides natural language understanding technologies to developers. Examples include sentiment analysis, entity recognition, entity sentiment analysis, and text annotations.",
-   "discoveryRestUrl": "https://language.googleapis.com/$discovery/rest?version=v1beta2",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/natural-language/",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "licensing:v1",
-   "name": "licensing",
-   "version": "v1",
-   "title": "Enterprise License Manager API",
-   "description": "Views and manages licenses for your domain.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/licensing/v1/rest",
-   "discoveryLink": "./apis/licensing/v1/rest",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/google-apps/licensing/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "logging:v2",
-   "name": "logging",
-   "version": "v2",
-   "title": "Stackdriver Logging API",
-   "description": "Writes log entries and manages your Stackdriver Logging configuration.",
-   "discoveryRestUrl": "https://logging.googleapis.com/$discovery/rest?version=v2",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/logging/docs/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "logging:v2beta1",
-   "name": "logging",
-   "version": "v2beta1",
-   "title": "Stackdriver Logging API",
-   "description": "Writes log entries and manages your Stackdriver Logging configuration.",
-   "discoveryRestUrl": "https://logging.googleapis.com/$discovery/rest?version=v2beta1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/logging/docs/",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "manufacturers:v1",
-   "name": "manufacturers",
-   "version": "v1",
-   "title": "Manufacturer Center API",
-   "description": "Public API for managing Manufacturer Center related data.",
-   "discoveryRestUrl": "https://manufacturers.googleapis.com/$discovery/rest?version=v1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/manufacturers/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "mirror:v1",
-   "name": "mirror",
-   "version": "v1",
-   "title": "Google Mirror API",
-   "description": "Interacts with Glass users via the timeline.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/mirror/v1/rest",
-   "discoveryLink": "./apis/mirror/v1/rest",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/glass",
-   "labels": [
-    "limited_availability"
-   ],
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "ml:v1",
-   "name": "ml",
-   "version": "v1",
-   "title": "Google Cloud Machine Learning Engine",
-   "description": "An API to enable creating and using machine learning models.",
-   "discoveryRestUrl": "https://ml.googleapis.com/$discovery/rest?version=v1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/ml/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "monitoring:v3",
-   "name": "monitoring",
-   "version": "v3",
-   "title": "Stackdriver Monitoring API",
-   "description": "Manages your Stackdriver Monitoring data and configurations. Most projects must be associated with a Stackdriver account, with a few exceptions as noted on the individual method pages.",
-   "discoveryRestUrl": "https://monitoring.googleapis.com/$discovery/rest?version=v3",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/monitoring/api/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "oauth2:v1",
-   "name": "oauth2",
-   "version": "v1",
-   "title": "Google OAuth2 API",
-   "description": "Obtains end-user authorization grants for use with other Google APIs.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/oauth2/v1/rest",
-   "discoveryLink": "./apis/oauth2/v1/rest",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/accounts/docs/OAuth2",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "oauth2:v2",
-   "name": "oauth2",
-   "version": "v2",
-   "title": "Google OAuth2 API",
-   "description": "Obtains end-user authorization grants for use with other Google APIs.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/oauth2/v2/rest",
-   "discoveryLink": "./apis/oauth2/v2/rest",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/accounts/docs/OAuth2",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "oslogin:v1alpha",
-   "name": "oslogin",
-   "version": "v1alpha",
-   "title": "Google Cloud OS Login API",
-   "description": "Manages OS login configuration for Directory API users.",
-   "discoveryRestUrl": "https://oslogin.googleapis.com/$discovery/rest?version=v1alpha",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/compute/docs/oslogin/rest/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "oslogin:v1beta",
-   "name": "oslogin",
-   "version": "v1beta",
-   "title": "Google Cloud OS Login API",
-   "description": "Manages OS login configuration for Directory API users.",
-   "discoveryRestUrl": "https://oslogin.googleapis.com/$discovery/rest?version=v1beta",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/compute/docs/oslogin/rest/",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "pagespeedonline:v1",
-   "name": "pagespeedonline",
-   "version": "v1",
-   "title": "PageSpeed Insights API",
-   "description": "Analyzes the performance of a web page and provides tailored suggestions to make that page faster.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/pagespeedonline/v1/rest",
-   "discoveryLink": "./apis/pagespeedonline/v1/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/product/pagespeed-16.png",
-    "x32": "https://www.google.com/images/icons/product/pagespeed-32.png"
-   },
-   "documentationLink": "https://developers.google.com/speed/docs/insights/v1/getting_started",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "pagespeedonline:v2",
-   "name": "pagespeedonline",
-   "version": "v2",
-   "title": "PageSpeed Insights API",
-   "description": "Analyzes the performance of a web page and provides tailored suggestions to make that page faster.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/pagespeedonline/v2/rest",
-   "discoveryLink": "./apis/pagespeedonline/v2/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/product/pagespeed-16.png",
-    "x32": "https://www.google.com/images/icons/product/pagespeed-32.png"
-   },
-   "documentationLink": "https://developers.google.com/speed/docs/insights/v2/getting-started",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "partners:v2",
-   "name": "partners",
-   "version": "v2",
-   "title": "Google Partners API",
-   "description": "Searches certified companies and creates contact leads with them, and also audits the usage of clients.",
-   "discoveryRestUrl": "https://partners.googleapis.com/$discovery/rest?version=v2",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/partners/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "people:v1",
-   "name": "people",
-   "version": "v1",
-   "title": "Google People API",
-   "description": "Provides access to information about profiles and contacts.",
-   "discoveryRestUrl": "https://people.googleapis.com/$discovery/rest?version=v1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/people/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "playcustomapp:v1",
-   "name": "playcustomapp",
-   "version": "v1",
-   "title": "Google Play Custom App Publishing API",
-   "description": "An API to publish custom Android apps.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/playcustomapp/v1/rest",
-   "discoveryLink": "./apis/playcustomapp/v1/rest",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/android/work/play/custom-app-api",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "playmoviespartner:v1",
-   "name": "playmoviespartner",
-   "version": "v1",
-   "title": "Google Play Movies Partner API",
-   "description": "Gets the delivery status of titles for Google Play Movies Partners.",
-   "discoveryRestUrl": "https://playmoviespartner.googleapis.com/$discovery/rest?version=v1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/playmoviespartner/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "plus:v1",
-   "name": "plus",
-   "version": "v1",
-   "title": "Google+ API",
-   "description": "Builds on top of the Google+ platform.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/plus/v1/rest",
-   "discoveryLink": "./apis/plus/v1/rest",
-   "icons": {
-    "x16": "http://www.google.com/images/icons/product/gplus-16.png",
-    "x32": "http://www.google.com/images/icons/product/gplus-32.png"
-   },
-   "documentationLink": "https://developers.google.com/+/api/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "plusDomains:v1",
-   "name": "plusDomains",
-   "version": "v1",
-   "title": "Google+ Domains API",
-   "description": "Builds on top of the Google+ platform for Google Apps Domains.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/plusDomains/v1/rest",
-   "discoveryLink": "./apis/plusDomains/v1/rest",
-   "icons": {
-    "x16": "http://www.google.com/images/icons/product/gplus-16.png",
-    "x32": "http://www.google.com/images/icons/product/gplus-32.png"
-   },
-   "documentationLink": "https://developers.google.com/+/domains/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "prediction:v1.2",
-   "name": "prediction",
-   "version": "v1.2",
-   "title": "Prediction API",
-   "description": "Lets you access a cloud hosted machine learning service that makes it easy to build smart apps",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/prediction/v1.2/rest",
-   "discoveryLink": "./apis/prediction/v1.2/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/feature/predictionapi-16.png",
-    "x32": "https://www.google.com/images/icons/feature/predictionapi-32.png"
-   },
-   "documentationLink": "https://developers.google.com/prediction/docs/developer-guide",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "prediction:v1.3",
-   "name": "prediction",
-   "version": "v1.3",
-   "title": "Prediction API",
-   "description": "Lets you access a cloud hosted machine learning service that makes it easy to build smart apps",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/prediction/v1.3/rest",
-   "discoveryLink": "./apis/prediction/v1.3/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/feature/predictionapi-16.png",
-    "x32": "https://www.google.com/images/icons/feature/predictionapi-32.png"
-   },
-   "documentationLink": "https://developers.google.com/prediction/docs/developer-guide",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "prediction:v1.4",
-   "name": "prediction",
-   "version": "v1.4",
-   "title": "Prediction API",
-   "description": "Lets you access a cloud hosted machine learning service that makes it easy to build smart apps",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/prediction/v1.4/rest",
-   "discoveryLink": "./apis/prediction/v1.4/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/feature/predictionapi-16.png",
-    "x32": "https://www.google.com/images/icons/feature/predictionapi-32.png"
-   },
-   "documentationLink": "https://developers.google.com/prediction/docs/developer-guide",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "prediction:v1.5",
-   "name": "prediction",
-   "version": "v1.5",
-   "title": "Prediction API",
-   "description": "Lets you access a cloud hosted machine learning service that makes it easy to build smart apps",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/prediction/v1.5/rest",
-   "discoveryLink": "./apis/prediction/v1.5/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/feature/predictionapi-16.png",
-    "x32": "https://www.google.com/images/icons/feature/predictionapi-32.png"
-   },
-   "documentationLink": "https://developers.google.com/prediction/docs/developer-guide",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "prediction:v1.6",
-   "name": "prediction",
-   "version": "v1.6",
-   "title": "Prediction API",
-   "description": "Lets you access a cloud hosted machine learning service that makes it easy to build smart apps",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/prediction/v1.6/rest",
-   "discoveryLink": "./apis/prediction/v1.6/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/feature/predictionapi-16.png",
-    "x32": "https://www.google.com/images/icons/feature/predictionapi-32.png"
-   },
-   "documentationLink": "https://developers.google.com/prediction/docs/developer-guide",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "proximitybeacon:v1beta1",
-   "name": "proximitybeacon",
-   "version": "v1beta1",
-   "title": "Google Proximity Beacon API",
-   "description": "Registers, manages, indexes, and searches beacons.",
-   "discoveryRestUrl": "https://proximitybeacon.googleapis.com/$discovery/rest?version=v1beta1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/beacons/proximity/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "pubsub:v1beta1a",
-   "name": "pubsub",
-   "version": "v1beta1a",
-   "title": "Google Cloud Pub/Sub API",
-   "description": "Provides reliable, many-to-many, asynchronous messaging between applications.",
-   "discoveryRestUrl": "https://pubsub.googleapis.com/$discovery/rest?version=v1beta1a",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/pubsub/docs",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "pubsub:v1",
-   "name": "pubsub",
-   "version": "v1",
-   "title": "Google Cloud Pub/Sub API",
-   "description": "Provides reliable, many-to-many, asynchronous messaging between applications.",
-   "discoveryRestUrl": "https://pubsub.googleapis.com/$discovery/rest?version=v1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/pubsub/docs",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "pubsub:v1beta2",
-   "name": "pubsub",
-   "version": "v1beta2",
-   "title": "Google Cloud Pub/Sub API",
-   "description": "Provides reliable, many-to-many, asynchronous messaging between applications.",
-   "discoveryRestUrl": "https://pubsub.googleapis.com/$discovery/rest?version=v1beta2",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/pubsub/docs",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "replicapool:v1beta1",
-   "name": "replicapool",
-   "version": "v1beta1",
-   "title": "Replica Pool API",
-   "description": "The Replica Pool API allows users to declaratively provision and manage groups of Google Compute Engine instances based on a common template.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/replicapool/v1beta1/rest",
-   "discoveryLink": "./apis/replicapool/v1beta1/rest",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/compute/docs/replica-pool/",
-   "labels": [
-    "limited_availability"
-   ],
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "replicapool:v1beta2",
-   "name": "replicapool",
-   "version": "v1beta2",
-   "title": "Google Compute Engine Instance Group Manager API",
-   "description": "[Deprecated. Please use Instance Group Manager in Compute API] Provides groups of homogenous Compute Engine instances.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/replicapool/v1beta2/rest",
-   "discoveryLink": "./apis/replicapool/v1beta2/rest",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/compute/docs/instance-groups/manager/v1beta2",
-   "labels": [
-    "limited_availability"
-   ],
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "replicapoolupdater:v1beta1",
-   "name": "replicapoolupdater",
-   "version": "v1beta1",
-   "title": "Google Compute Engine Instance Group Updater API",
-   "description": "[Deprecated. Please use compute.instanceGroupManagers.update method. replicapoolupdater API will be disabled after December 30th, 2016] Updates groups of Compute Engine instances.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/replicapoolupdater/v1beta1/rest",
-   "discoveryLink": "./apis/replicapoolupdater/v1beta1/rest",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/compute/docs/instance-groups/manager/#applying_rolling_updates_using_the_updater_service",
-   "labels": [
-    "limited_availability"
-   ],
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "reseller:v1",
-   "name": "reseller",
-   "version": "v1",
-   "title": "Enterprise Apps Reseller API",
-   "description": "Creates and manages your customers and their subscriptions.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/reseller/v1/rest",
-   "discoveryLink": "./apis/reseller/v1/rest",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/google-apps/reseller/",
-   "labels": [
-    "limited_availability"
-   ],
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "resourceviews:v1beta1",
-   "name": "resourceviews",
-   "version": "v1beta1",
-   "title": "Resource Views API",
-   "description": "The Resource View API allows users to create and manage logical sets of Google Compute Engine instances.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/resourceviews/v1beta1/rest",
-   "discoveryLink": "./apis/resourceviews/v1beta1/rest",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/compute/",
-   "labels": [
-    "limited_availability"
-   ],
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "resourceviews:v1beta2",
-   "name": "resourceviews",
-   "version": "v1beta2",
-   "title": "Google Compute Engine Instance Groups API",
-   "description": "The Resource View API allows users to create and manage logical sets of Google Compute Engine instances.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/resourceviews/v1beta2/rest",
-   "discoveryLink": "./apis/resourceviews/v1beta2/rest",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/compute/",
-   "labels": [
-    "limited_availability"
-   ],
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "runtimeconfig:v1",
-   "name": "runtimeconfig",
-   "version": "v1",
-   "title": "Google Cloud RuntimeConfig API",
-   "description": "Provides capabilities for dynamic configuration and coordination for applications running on Google Cloud Platform.",
-   "discoveryRestUrl": "https://runtimeconfig.googleapis.com/$discovery/rest?version=v1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/deployment-manager/runtime-configurator/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "runtimeconfig:v1beta1",
-   "name": "runtimeconfig",
-   "version": "v1beta1",
-   "title": "Google Cloud RuntimeConfig API",
-   "description": "Provides capabilities for dynamic configuration and coordination for applications running on Google Cloud Platform.",
-   "discoveryRestUrl": "https://runtimeconfig.googleapis.com/$discovery/rest?version=v1beta1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/deployment-manager/runtime-configurator/",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "safebrowsing:v4",
-   "name": "safebrowsing",
-   "version": "v4",
-   "title": "Google Safe Browsing API",
-   "description": "Enables client applications to check web resources (most commonly URLs) against Google-generated lists of unsafe web resources.",
-   "discoveryRestUrl": "https://safebrowsing.googleapis.com/$discovery/rest?version=v4",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/safe-browsing/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "script:v1",
-   "name": "script",
-   "version": "v1",
-   "title": "Google Apps Script Execution API",
-   "description": "An API for managing and executing Google Apps Script projects.",
-   "discoveryRestUrl": "https://script.googleapis.com/$discovery/rest?version=v1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/apps-script/execution/rest/v1/scripts/run",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "searchconsole:v1",
-   "name": "searchconsole",
-   "version": "v1",
-   "title": "Google Search Console URL Testing Tools API",
-   "description": "Provides tools for running validation tests against single URLs",
-   "discoveryRestUrl": "https://searchconsole.googleapis.com/$discovery/rest?version=v1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/webmaster-tools/search-console-api/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "servicecontrol:v1",
-   "name": "servicecontrol",
-   "version": "v1",
-   "title": "Google Service Control API",
-   "description": "Google Service Control provides control plane functionality to managed services, such as logging, monitoring, and status checks.",
-   "discoveryRestUrl": "https://servicecontrol.googleapis.com/$discovery/rest?version=v1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/service-control/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "servicemanagement:v1",
-   "name": "servicemanagement",
-   "version": "v1",
-   "title": "Google Service Management API",
-   "description": "Google Service Management allows service producers to publish their services on Google Cloud Platform so that they can be discovered and used by service consumers.",
-   "discoveryRestUrl": "https://servicemanagement.googleapis.com/$discovery/rest?version=v1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/service-management/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "serviceuser:v1",
-   "name": "serviceuser",
-   "version": "v1",
-   "title": "Google Service User API",
-   "description": "Enables services that service consumers want to use on Google Cloud Platform, lists the available or enabled services, or disables services that service consumers no longer use.",
-   "discoveryRestUrl": "https://serviceuser.googleapis.com/$discovery/rest?version=v1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/service-management/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "sheets:v4",
-   "name": "sheets",
-   "version": "v4",
-   "title": "Google Sheets API",
-   "description": "Reads and writes Google Sheets.",
-   "discoveryRestUrl": "https://sheets.googleapis.com/$discovery/rest?version=v4",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/sheets/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "siteVerification:v1",
-   "name": "siteVerification",
-   "version": "v1",
-   "title": "Google Site Verification API",
-   "description": "Verifies ownership of websites or domains with Google.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/siteVerification/v1/rest",
-   "discoveryLink": "./apis/siteVerification/v1/rest",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/site-verification/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "slides:v1",
-   "name": "slides",
-   "version": "v1",
-   "title": "Google Slides API",
-   "description": "An API for creating and editing Google Slides presentations.",
-   "discoveryRestUrl": "https://slides.googleapis.com/$discovery/rest?version=v1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/slides/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "sourcerepo:v1",
-   "name": "sourcerepo",
-   "version": "v1",
-   "title": "Cloud Source Repositories API",
-   "description": "Access source code repositories hosted by Google.",
-   "discoveryRestUrl": "https://sourcerepo.googleapis.com/$discovery/rest?version=v1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/source-repositories/docs/apis",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "spanner:v1",
-   "name": "spanner",
-   "version": "v1",
-   "title": "Cloud Spanner API",
-   "description": "Cloud Spanner is a managed, mission-critical, globally consistent and scalable relational database service.",
-   "discoveryRestUrl": "https://spanner.googleapis.com/$discovery/rest?version=v1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/spanner/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "spectrum:v1explorer",
-   "name": "spectrum",
-   "version": "v1explorer",
-   "title": "Google Spectrum Database API",
-   "description": "API for spectrum-management functions.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/spectrum/v1explorer/rest",
-   "discoveryLink": "./apis/spectrum/v1explorer/rest",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "http://developers.google.com/spectrum",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "speech:v1",
-   "name": "speech",
-   "version": "v1",
-   "title": "Google Cloud Speech API",
-   "description": "Converts audio to text by applying powerful neural network models.",
-   "discoveryRestUrl": "https://speech.googleapis.com/$discovery/rest?version=v1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/speech/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "speech:v1beta1",
-   "name": "speech",
-   "version": "v1beta1",
-   "title": "Google Cloud Speech API",
-   "description": "Converts audio to text by applying powerful neural network models.",
-   "discoveryRestUrl": "https://speech.googleapis.com/$discovery/rest?version=v1beta1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/speech/",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "sqladmin:v1beta3",
-   "name": "sqladmin",
-   "version": "v1beta3",
-   "title": "Cloud SQL Administration API",
-   "description": "Creates and configures Cloud SQL instances, which provide fully-managed MySQL databases.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/sqladmin/v1beta3/rest",
-   "discoveryLink": "./apis/sqladmin/v1beta3/rest",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/sql/docs/reference/latest",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "sqladmin:v1beta4",
-   "name": "sqladmin",
-   "version": "v1beta4",
-   "title": "Cloud SQL Administration API",
-   "description": "Creates and configures Cloud SQL instances, which provide fully-managed MySQL databases.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/sqladmin/v1beta4/rest",
-   "discoveryLink": "./apis/sqladmin/v1beta4/rest",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/sql/docs/reference/latest",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "storage:v1",
-   "name": "storage",
-   "version": "v1",
-   "title": "Cloud Storage JSON API",
-   "description": "Stores and retrieves potentially large, immutable data objects.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/storage/v1/rest",
-   "discoveryLink": "./apis/storage/v1/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/product/cloud_storage-16.png",
-    "x32": "https://www.google.com/images/icons/product/cloud_storage-32.png"
-   },
-   "documentationLink": "https://developers.google.com/storage/docs/json_api/",
-   "labels": [
-    "labs"
-   ],
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "storage:v1beta1",
-   "name": "storage",
-   "version": "v1beta1",
-   "title": "Cloud Storage JSON API",
-   "description": "Lets you store and retrieve potentially-large, immutable data objects.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/storage/v1beta1/rest",
-   "discoveryLink": "./apis/storage/v1beta1/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/product/cloud_storage-16.png",
-    "x32": "https://www.google.com/images/icons/product/cloud_storage-32.png"
-   },
-   "documentationLink": "https://developers.google.com/storage/docs/json_api/",
-   "labels": [
-    "labs"
-   ],
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "storage:v1beta2",
-   "name": "storage",
-   "version": "v1beta2",
-   "title": "Cloud Storage JSON API",
-   "description": "Lets you store and retrieve potentially-large, immutable data objects.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/storage/v1beta2/rest",
-   "discoveryLink": "./apis/storage/v1beta2/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/product/cloud_storage-16.png",
-    "x32": "https://www.google.com/images/icons/product/cloud_storage-32.png"
-   },
-   "documentationLink": "https://developers.google.com/storage/docs/json_api/",
-   "labels": [
-    "labs"
-   ],
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "storagetransfer:v1",
-   "name": "storagetransfer",
-   "version": "v1",
-   "title": "Google Storage Transfer API",
-   "description": "Transfers data from external data sources to a Google Cloud Storage bucket or between Google Cloud Storage buckets.",
-   "discoveryRestUrl": "https://storagetransfer.googleapis.com/$discovery/rest?version=v1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/storage/transfer",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "streetviewpublish:v1",
-   "name": "streetviewpublish",
-   "version": "v1",
-   "title": "Street View Publish API",
-   "description": "Publishes 360 photos to Google Maps, along with position, orientation, and connectivity metadata. Apps can offer an interface for positioning, connecting, and uploading user-generated Street View images.",
-   "discoveryRestUrl": "https://streetviewpublish.googleapis.com/$discovery/rest?version=v1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/streetview/publish/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "surveys:v2",
-   "name": "surveys",
-   "version": "v2",
-   "title": "Surveys API",
-   "description": "Creates and conducts surveys, lists the surveys that an authenticated user owns, and retrieves survey results and information about specified surveys.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/surveys/v2/rest",
-   "discoveryLink": "./apis/surveys/v2/rest",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "tagmanager:v1",
-   "name": "tagmanager",
-   "version": "v1",
-   "title": "Tag Manager API",
-   "description": "Accesses Tag Manager accounts and containers.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/tagmanager/v1/rest",
-   "discoveryLink": "./apis/tagmanager/v1/rest",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/tag-manager/api/v1/",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "tagmanager:v2",
-   "name": "tagmanager",
-   "version": "v2",
-   "title": "Tag Manager API",
-   "description": "Accesses Tag Manager accounts and containers.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/tagmanager/v2/rest",
-   "discoveryLink": "./apis/tagmanager/v2/rest",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/tag-manager/api/v2/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "taskqueue:v1beta1",
-   "name": "taskqueue",
-   "version": "v1beta1",
-   "title": "TaskQueue API",
-   "description": "Accesses a Google App Engine Pull Task Queue over REST.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/taskqueue/v1beta1/rest",
-   "discoveryLink": "./apis/taskqueue/v1beta1/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/product/app_engine-16.png",
-    "x32": "https://www.google.com/images/icons/product/app_engine-32.png"
-   },
-   "documentationLink": "https://developers.google.com/appengine/docs/python/taskqueue/rest",
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "taskqueue:v1beta2",
-   "name": "taskqueue",
-   "version": "v1beta2",
-   "title": "TaskQueue API",
-   "description": "Accesses a Google App Engine Pull Task Queue over REST.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/taskqueue/v1beta2/rest",
-   "discoveryLink": "./apis/taskqueue/v1beta2/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/product/app_engine-16.png",
-    "x32": "https://www.google.com/images/icons/product/app_engine-32.png"
-   },
-   "documentationLink": "https://developers.google.com/appengine/docs/python/taskqueue/rest",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "tasks:v1",
-   "name": "tasks",
-   "version": "v1",
-   "title": "Tasks API",
-   "description": "Lets you manage your tasks and task lists.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/tasks/v1/rest",
-   "discoveryLink": "./apis/tasks/v1/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/product/tasks-16.png",
-    "x32": "https://www.google.com/images/icons/product/tasks-32.png"
-   },
-   "documentationLink": "https://developers.google.com/google-apps/tasks/firstapp",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "testing:v1",
-   "name": "testing",
-   "version": "v1",
-   "title": "Google Cloud Testing API",
-   "description": "Allows developers to run automated tests for their mobile applications on Google infrastructure.",
-   "discoveryRestUrl": "https://testing.googleapis.com/$discovery/rest?version=v1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/cloud-test-lab/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "toolresults:v1beta3",
-   "name": "toolresults",
-   "version": "v1beta3",
-   "title": "Cloud Tool Results API",
-   "description": "Reads and publishes results from Firebase Test Lab.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/toolresults/v1beta3/rest",
-   "discoveryLink": "./apis/toolresults/v1beta3/rest",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://firebase.google.com/docs/test-lab/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "translate:v2",
-   "name": "translate",
-   "version": "v2",
-   "title": "Google Cloud Translation API",
-   "description": "The Google Cloud Translation API lets websites and programs integrate with Google Translate programmatically.",
-   "discoveryRestUrl": "https://translation.googleapis.com/$discovery/rest?version=v2",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://code.google.com/apis/language/translate/v2/getting_started.html",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "urlshortener:v1",
-   "name": "urlshortener",
-   "version": "v1",
-   "title": "URL Shortener API",
-   "description": "Lets you create, inspect, and manage goo.gl short URLs",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/urlshortener/v1/rest",
-   "discoveryLink": "./apis/urlshortener/v1/rest",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/url-shortener/v1/getting_started",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "vault:v1",
-   "name": "vault",
-   "version": "v1",
-   "title": "Google Vault API",
-   "description": "Archiving and eDiscovery for G Suite.",
-   "discoveryRestUrl": "https://vault.googleapis.com/$discovery/rest?version=v1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/vault",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "videointelligence:v1beta1",
-   "name": "videointelligence",
-   "version": "v1beta1",
-   "title": "Cloud Video Intelligence API",
-   "description": "Cloud Video Intelligence API.",
-   "discoveryRestUrl": "https://videointelligence.googleapis.com/$discovery/rest?version=v1beta1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/video-intelligence/docs/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "vision:v1",
-   "name": "vision",
-   "version": "v1",
-   "title": "Google Cloud Vision API",
-   "description": "Integrates Google Vision features, including image labeling, face, logo, and landmark detection, optical character recognition (OCR), and detection of explicit content, into applications.",
-   "discoveryRestUrl": "https://vision.googleapis.com/$discovery/rest?version=v1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://cloud.google.com/vision/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "webfonts:v1",
-   "name": "webfonts",
-   "version": "v1",
-   "title": "Google Fonts Developer API",
-   "description": "Accesses the metadata for all families served by Google Fonts, providing a list of families currently available (including available styles and a list of supported script subsets).",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/webfonts/v1/rest",
-   "discoveryLink": "./apis/webfonts/v1/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/feature/font_api-16.png",
-    "x32": "https://www.google.com/images/icons/feature/font_api-32.gif"
-   },
-   "documentationLink": "https://developers.google.com/fonts/docs/developer_api",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "webmasters:v3",
-   "name": "webmasters",
-   "version": "v3",
-   "title": "Search Console API",
-   "description": "View Google Search Console data for your verified sites.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/webmasters/v3/rest",
-   "discoveryLink": "./apis/webmasters/v3/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/product/webmaster_tools-16.png",
-    "x32": "https://www.google.com/images/icons/product/webmaster_tools-32.png"
-   },
-   "documentationLink": "https://developers.google.com/webmaster-tools/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "youtube:v3",
-   "name": "youtube",
-   "version": "v3",
-   "title": "YouTube Data API",
-   "description": "Supports core YouTube features, such as uploading videos, creating and managing playlists, searching for content, and much more.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/youtube/v3/rest",
-   "discoveryLink": "./apis/youtube/v3/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/product/youtube-16.png",
-    "x32": "https://www.google.com/images/icons/product/youtube-32.png"
-   },
-   "documentationLink": "https://developers.google.com/youtube/v3",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "youtubeAnalytics:v1",
-   "name": "youtubeAnalytics",
-   "version": "v1",
-   "title": "YouTube Analytics API",
-   "description": "Retrieves your YouTube Analytics data.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/youtubeAnalytics/v1/rest",
-   "discoveryLink": "./apis/youtubeAnalytics/v1/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/product/youtube-16.png",
-    "x32": "https://www.google.com/images/icons/product/youtube-32.png"
-   },
-   "documentationLink": "http://developers.google.com/youtube/analytics/",
-   "preferred": true
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "youtubeAnalytics:v1beta1",
-   "name": "youtubeAnalytics",
-   "version": "v1beta1",
-   "title": "YouTube Analytics API",
-   "description": "Retrieves your YouTube Analytics data.",
-   "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/youtubeAnalytics/v1beta1/rest",
-   "discoveryLink": "./apis/youtubeAnalytics/v1beta1/rest",
-   "icons": {
-    "x16": "https://www.google.com/images/icons/product/youtube-16.png",
-    "x32": "https://www.google.com/images/icons/product/youtube-32.png"
-   },
-   "documentationLink": "http://developers.google.com/youtube/analytics/",
-   "labels": [
-    "deprecated"
-   ],
-   "preferred": false
-  },
-  {
-   "kind": "discovery#directoryItem",
-   "id": "youtubereporting:v1",
-   "name": "youtubereporting",
-   "version": "v1",
-   "title": "YouTube Reporting API",
-   "description": "Schedules reporting jobs containing your YouTube Analytics data and downloads the resulting bulk data reports in the form of CSV files.",
-   "discoveryRestUrl": "https://youtubereporting.googleapis.com/$discovery/rest?version=v1",
-   "icons": {
-    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
-    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
-   },
-   "documentationLink": "https://developers.google.com/youtube/reporting/v1/reports/",
-   "preferred": true
-  }
- ]
-}
diff --git a/vendor/google.golang.org/api/internal/service-account.json b/vendor/google.golang.org/api/internal/service-account.json
deleted file mode 100644
index 2cb54c2..0000000
--- a/vendor/google.golang.org/api/internal/service-account.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "type": "service_account",
-  "project_id": "project_id",
-  "private_key_id": "private_key_id",
-  "private_key": "private_key",
-  "client_email": "xyz@developer.gserviceaccount.com",
-  "client_id": "123",
-  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
-  "token_uri": "https://accounts.google.com/o/oauth2/token",
-  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
-  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/xyz%40developer.gserviceaccount.com"
-}
diff --git a/vendor/google.golang.org/api/key.json.enc b/vendor/google.golang.org/api/key.json.enc
deleted file mode 100644
index 1286368..0000000
--- a/vendor/google.golang.org/api/key.json.enc
+++ /dev/null
Binary files differ
diff --git a/vendor/google.golang.org/appengine/.travis.yml b/vendor/google.golang.org/appengine/.travis.yml
deleted file mode 100644
index 0762cb9..0000000
--- a/vendor/google.golang.org/appengine/.travis.yml
+++ /dev/null
@@ -1,18 +0,0 @@
-language: go
-
-go:
-  - 1.6.3
-  - 1.7.1
-
-install:
-  - go get -v -t -d google.golang.org/appengine/...
-  - mkdir sdk
-  - curl -o sdk.zip "https://storage.googleapis.com/appengine-sdks/featured/go_appengine_sdk_linux_amd64-1.9.40.zip"
-  - unzip -q sdk.zip -d sdk
-  - export APPENGINE_DEV_APPSERVER=$(pwd)/sdk/go_appengine/dev_appserver.py
-
-script:
-  - go version
-  - go test -v google.golang.org/appengine/...
-  - go test -v -race google.golang.org/appengine/...
-  - sdk/go_appengine/goapp test -v google.golang.org/appengine/...
diff --git a/vendor/google.golang.org/appengine/README.md b/vendor/google.golang.org/appengine/README.md
deleted file mode 100644
index b6b11d9..0000000
--- a/vendor/google.golang.org/appengine/README.md
+++ /dev/null
@@ -1,73 +0,0 @@
-# Go App Engine packages
-
-[![Build Status](https://travis-ci.org/golang/appengine.svg)](https://travis-ci.org/golang/appengine)
-
-This repository supports the Go runtime on App Engine,
-including both the standard App Engine and the
-"App Engine flexible environment" (formerly known as "Managed VMs").
-It provides APIs for interacting with App Engine services.
-Its canonical import path is `google.golang.org/appengine`.
-
-See https://cloud.google.com/appengine/docs/go/
-for more information.
-
-File issue reports and feature requests on the [Google App Engine issue
-tracker](https://code.google.com/p/googleappengine/issues/entry?template=Go%20defect).
-
-## Directory structure
-The top level directory of this repository is the `appengine` package. It
-contains the
-basic APIs (e.g. `appengine.NewContext`) that apply across APIs. Specific API
-packages are in subdirectories (e.g. `datastore`).
-
-There is an `internal` subdirectory that contains service protocol buffers,
-plus packages required for connectivity to make API calls. App Engine apps
-should not directly import any package under `internal`.
-
-## Updating a Go App Engine app
-
-This section describes how to update an older Go App Engine app to use
-these packages. A provided tool, `aefix`, can help automate steps 2 and 3
-(run `go get google.golang.org/appengine/cmd/aefix` to install it), but
-read the details below since `aefix` can't perform all the changes.
-
-### 1. Update YAML files (App Engine flexible environment / Managed VMs only)
-
-The `app.yaml` file (and YAML files for modules) should have these new lines added:
-```
-vm: true
-```
-See https://cloud.google.com/appengine/docs/go/modules/#Go_Instance_scaling_and_class for details.
-
-### 2. Update import paths
-
-The import paths for App Engine packages are now fully qualified, based at `google.golang.org/appengine`.
-You will need to update your code to use import paths starting with that; for instance,
-code importing `appengine/datastore` will now need to import `google.golang.org/appengine/datastore`.
-
-### 3. Update code using deprecated, removed or modified APIs
-
-Most App Engine services are available with exactly the same API.
-A few APIs were cleaned up, and some are not available yet.
-This list summarises the differences:
-
-* `appengine.Context` has been replaced with the `Context` type from `golang.org/x/net/context`.
-* Logging methods that were on `appengine.Context` are now functions in `google.golang.org/appengine/log`.
-* `appengine.Timeout` has been removed. Use `context.WithTimeout` instead.
-* `appengine.Datacenter` now takes a `context.Context` argument.
-* `datastore.PropertyLoadSaver` has been simplified to use slices in place of channels.
-* `delay.Call` now returns an error.
-* `search.FieldLoadSaver` now handles document metadata.
-* `urlfetch.Transport` no longer has a Deadline field; set a deadline on the
-  `context.Context` instead.
-* `aetest` no longer declares its own Context type, and uses the standard one instead.
-* `taskqueue.QueueStats` no longer takes a maxTasks argument. That argument has been
-  deprecated and unused for a long time.
-* `appengine.BackendHostname` and `appengine.BackendInstance` were for the deprecated backends feature.
-  Use `appengine.ModuleHostname`and `appengine.ModuleName` instead.
-* Most of `appengine/file` and parts of `appengine/blobstore` are deprecated.
-  Use [Google Cloud Storage](https://godoc.org/cloud.google.com/go/storage) if the
-  feature you require is not present in the new
-  [blobstore package](https://google.golang.org/appengine/blobstore).
-* `appengine/socket` is not required on App Engine flexible environment / Managed VMs.
-  Use the standard `net` package instead.
diff --git a/vendor/google.golang.org/appengine/internal/app_identity/app_identity_service.proto b/vendor/google.golang.org/appengine/internal/app_identity/app_identity_service.proto
deleted file mode 100644
index 19610ca..0000000
--- a/vendor/google.golang.org/appengine/internal/app_identity/app_identity_service.proto
+++ /dev/null
@@ -1,64 +0,0 @@
-syntax = "proto2";
-option go_package = "app_identity";
-
-package appengine;
-
-message AppIdentityServiceError {
-  enum ErrorCode {
-    SUCCESS = 0;
-    UNKNOWN_SCOPE = 9;
-    BLOB_TOO_LARGE = 1000;
-    DEADLINE_EXCEEDED = 1001;
-    NOT_A_VALID_APP = 1002;
-    UNKNOWN_ERROR = 1003;
-    NOT_ALLOWED = 1005;
-    NOT_IMPLEMENTED = 1006;
-  }
-}
-
-message SignForAppRequest {
-  optional bytes bytes_to_sign = 1;
-}
-
-message SignForAppResponse {
-  optional string key_name = 1;
-  optional bytes signature_bytes = 2;
-}
-
-message GetPublicCertificateForAppRequest {
-}
-
-message PublicCertificate {
-  optional string key_name = 1;
-  optional string x509_certificate_pem = 2;
-}
-
-message GetPublicCertificateForAppResponse {
-  repeated PublicCertificate public_certificate_list = 1;
-  optional int64 max_client_cache_time_in_second = 2;
-}
-
-message GetServiceAccountNameRequest {
-}
-
-message GetServiceAccountNameResponse {
-  optional string service_account_name = 1;
-}
-
-message GetAccessTokenRequest {
-  repeated string scope = 1;
-  optional int64 service_account_id = 2;
-  optional string service_account_name = 3;
-}
-
-message GetAccessTokenResponse {
-  optional string access_token = 1;
-  optional int64 expiration_time = 2;
-}
-
-message GetDefaultGcsBucketNameRequest {
-}
-
-message GetDefaultGcsBucketNameResponse {
-  optional string default_gcs_bucket_name = 1;
-}
diff --git a/vendor/google.golang.org/appengine/internal/base/api_base.proto b/vendor/google.golang.org/appengine/internal/base/api_base.proto
deleted file mode 100644
index 56cd7a3..0000000
--- a/vendor/google.golang.org/appengine/internal/base/api_base.proto
+++ /dev/null
@@ -1,33 +0,0 @@
-// Built-in base types for API calls. Primarily useful as return types.
-
-syntax = "proto2";
-option go_package = "base";
-
-package appengine.base;
-
-message StringProto {
-  required string value = 1;
-}
-
-message Integer32Proto {
-  required int32 value = 1;
-}
-
-message Integer64Proto {
-  required int64 value = 1;
-}
-
-message BoolProto {
-  required bool value = 1;
-}
-
-message DoubleProto {
-  required double value = 1;
-}
-
-message BytesProto {
-  required bytes value = 1 [ctype=CORD];
-}
-
-message VoidProto {
-}
diff --git a/vendor/google.golang.org/appengine/internal/datastore/datastore_v3.proto b/vendor/google.golang.org/appengine/internal/datastore/datastore_v3.proto
deleted file mode 100755
index e76f126..0000000
--- a/vendor/google.golang.org/appengine/internal/datastore/datastore_v3.proto
+++ /dev/null
@@ -1,541 +0,0 @@
-syntax = "proto2";
-option go_package = "datastore";
-
-package appengine;
-
-message Action{}
-
-message PropertyValue {
-  optional int64 int64Value = 1;
-  optional bool booleanValue = 2;
-  optional string stringValue = 3;
-  optional double doubleValue = 4;
-
-  optional group PointValue = 5 {
-    required double x = 6;
-    required double y = 7;
-  }
-
-  optional group UserValue = 8 {
-    required string email = 9;
-    required string auth_domain = 10;
-    optional string nickname = 11;
-    optional string federated_identity = 21;
-    optional string federated_provider = 22;
-  }
-
-  optional group ReferenceValue = 12 {
-    required string app = 13;
-    optional string name_space = 20;
-    repeated group PathElement = 14 {
-      required string type = 15;
-      optional int64 id = 16;
-      optional string name = 17;
-    }
-  }
-}
-
-message Property {
-  enum Meaning {
-    NO_MEANING = 0;
-    BLOB = 14;
-    TEXT = 15;
-    BYTESTRING = 16;
-
-    ATOM_CATEGORY = 1;
-    ATOM_LINK = 2;
-    ATOM_TITLE = 3;
-    ATOM_CONTENT = 4;
-    ATOM_SUMMARY = 5;
-    ATOM_AUTHOR = 6;
-
-    GD_WHEN = 7;
-    GD_EMAIL = 8;
-    GEORSS_POINT = 9;
-    GD_IM = 10;
-
-    GD_PHONENUMBER = 11;
-    GD_POSTALADDRESS = 12;
-
-    GD_RATING = 13;
-
-    BLOBKEY = 17;
-    ENTITY_PROTO = 19;
-
-    INDEX_VALUE = 18;
-  };
-
-  optional Meaning meaning = 1 [default = NO_MEANING];
-  optional string meaning_uri = 2;
-
-  required string name = 3;
-
-  required PropertyValue value = 5;
-
-  required bool multiple = 4;
-
-  optional bool searchable = 6 [default=false];
-
-  enum FtsTokenizationOption {
-    HTML = 1;
-    ATOM = 2;
-  }
-
-  optional FtsTokenizationOption fts_tokenization_option = 8;
-
-  optional string locale = 9 [default = "en"];
-}
-
-message Path {
-  repeated group Element = 1 {
-    required string type = 2;
-    optional int64 id = 3;
-    optional string name = 4;
-  }
-}
-
-message Reference {
-  required string app = 13;
-  optional string name_space = 20;
-  required Path path = 14;
-}
-
-message User {
-  required string email = 1;
-  required string auth_domain = 2;
-  optional string nickname = 3;
-  optional string federated_identity = 6;
-  optional string federated_provider = 7;
-}
-
-message EntityProto {
-  required Reference key = 13;
-  required Path entity_group = 16;
-  optional User owner = 17;
-
-  enum Kind {
-    GD_CONTACT = 1;
-    GD_EVENT = 2;
-    GD_MESSAGE = 3;
-  }
-  optional Kind kind = 4;
-  optional string kind_uri = 5;
-
-  repeated Property property = 14;
-  repeated Property raw_property = 15;
-
-  optional int32 rank = 18;
-}
-
-message CompositeProperty {
-  required int64 index_id = 1;
-  repeated string value = 2;
-}
-
-message Index {
-  required string entity_type = 1;
-  required bool ancestor = 5;
-  repeated group Property = 2 {
-    required string name = 3;
-    enum Direction {
-      ASCENDING = 1;
-      DESCENDING = 2;
-    }
-    optional Direction direction = 4 [default = ASCENDING];
-  }
-}
-
-message CompositeIndex {
-  required string app_id = 1;
-  required int64 id = 2;
-  required Index definition = 3;
-
-  enum State {
-    WRITE_ONLY = 1;
-    READ_WRITE = 2;
-    DELETED = 3;
-    ERROR = 4;
-  }
-  required State state = 4;
-
-  optional bool only_use_if_required = 6 [default = false];
-}
-
-message IndexPostfix {
-  message IndexValue {
-    required string property_name = 1;
-    required PropertyValue value = 2;
-  }
-
-  repeated IndexValue index_value = 1;
-
-  optional Reference key = 2;
-
-  optional bool before = 3 [default=true];
-}
-
-message IndexPosition {
-  optional string key = 1;
-
-  optional bool before = 2 [default=true];
-}
-
-message Snapshot {
-  enum Status {
-    INACTIVE = 0;
-    ACTIVE = 1;
-  }
-
-  required int64 ts = 1;
-}
-
-message InternalHeader {
-  optional string qos = 1;
-}
-
-message Transaction {
-  optional InternalHeader header = 4;
-  required fixed64 handle = 1;
-  required string app = 2;
-  optional bool mark_changes = 3 [default = false];
-}
-
-message Query {
-  optional InternalHeader header = 39;
-
-  required string app = 1;
-  optional string name_space = 29;
-
-  optional string kind = 3;
-  optional Reference ancestor = 17;
-
-  repeated group Filter = 4 {
-    enum Operator {
-      LESS_THAN = 1;
-      LESS_THAN_OR_EQUAL = 2;
-      GREATER_THAN = 3;
-      GREATER_THAN_OR_EQUAL = 4;
-      EQUAL = 5;
-      IN = 6;
-      EXISTS = 7;
-    }
-
-    required Operator op = 6;
-    repeated Property property = 14;
-  }
-
-  optional string search_query = 8;
-
-  repeated group Order = 9 {
-    enum Direction {
-      ASCENDING = 1;
-      DESCENDING = 2;
-    }
-
-    required string property = 10;
-    optional Direction direction = 11 [default = ASCENDING];
-  }
-
-  enum Hint {
-    ORDER_FIRST = 1;
-    ANCESTOR_FIRST = 2;
-    FILTER_FIRST = 3;
-  }
-  optional Hint hint = 18;
-
-  optional int32 count = 23;
-
-  optional int32 offset = 12 [default = 0];
-
-  optional int32 limit = 16;
-
-  optional CompiledCursor compiled_cursor = 30;
-  optional CompiledCursor end_compiled_cursor = 31;
-
-  repeated CompositeIndex composite_index = 19;
-
-  optional bool require_perfect_plan = 20 [default = false];
-
-  optional bool keys_only = 21 [default = false];
-
-  optional Transaction transaction = 22;
-
-  optional bool compile = 25 [default = false];
-
-  optional int64 failover_ms = 26;
-
-  optional bool strong = 32;
-
-  repeated string property_name = 33;
-
-  repeated string group_by_property_name = 34;
-
-  optional bool distinct = 24;
-
-  optional int64 min_safe_time_seconds = 35;
-
-  repeated string safe_replica_name = 36;
-
-  optional bool persist_offset = 37 [default=false];
-}
-
-message CompiledQuery {
-  required group PrimaryScan = 1 {
-    optional string index_name = 2;
-
-    optional string start_key = 3;
-    optional bool start_inclusive = 4;
-    optional string end_key = 5;
-    optional bool end_inclusive = 6;
-
-    repeated string start_postfix_value = 22;
-    repeated string end_postfix_value = 23;
-
-    optional int64 end_unapplied_log_timestamp_us = 19;
-  }
-
-  repeated group MergeJoinScan = 7 {
-    required string index_name = 8;
-
-    repeated string prefix_value = 9;
-
-    optional bool value_prefix = 20 [default=false];
-  }
-
-  optional Index index_def = 21;
-
-  optional int32 offset = 10 [default = 0];
-
-  optional int32 limit = 11;
-
-  required bool keys_only = 12;
-
-  repeated string property_name = 24;
-
-  optional int32 distinct_infix_size = 25;
-
-  optional group EntityFilter = 13 {
-    optional bool distinct = 14 [default=false];
-
-    optional string kind = 17;
-    optional Reference ancestor = 18;
-  }
-}
-
-message CompiledCursor {
-  optional group Position = 2 {
-    optional string start_key = 27;
-
-    repeated group IndexValue = 29 {
-      optional string property = 30;
-      required PropertyValue value = 31;
-    }
-
-    optional Reference key = 32;
-
-    optional bool start_inclusive = 28 [default=true];
-  }
-}
-
-message Cursor {
-  required fixed64 cursor = 1;
-
-  optional string app = 2;
-}
-
-message Error {
-  enum ErrorCode {
-    BAD_REQUEST = 1;
-    CONCURRENT_TRANSACTION = 2;
-    INTERNAL_ERROR = 3;
-    NEED_INDEX = 4;
-    TIMEOUT = 5;
-    PERMISSION_DENIED = 6;
-    BIGTABLE_ERROR = 7;
-    COMMITTED_BUT_STILL_APPLYING = 8;
-    CAPABILITY_DISABLED = 9;
-    TRY_ALTERNATE_BACKEND = 10;
-    SAFE_TIME_TOO_OLD = 11;
-  }
-}
-
-message Cost {
-  optional int32 index_writes = 1;
-  optional int32 index_write_bytes = 2;
-  optional int32 entity_writes = 3;
-  optional int32 entity_write_bytes = 4;
-  optional group CommitCost = 5 {
-    optional int32 requested_entity_puts = 6;
-    optional int32 requested_entity_deletes = 7;
-  };
-  optional int32 approximate_storage_delta = 8;
-  optional int32 id_sequence_updates = 9;
-}
-
-message GetRequest {
-  optional InternalHeader header = 6;
-
-  repeated Reference key = 1;
-  optional Transaction transaction = 2;
-
-  optional int64 failover_ms = 3;
-
-  optional bool strong = 4;
-
-  optional bool allow_deferred = 5 [default=false];
-}
-
-message GetResponse {
-  repeated group Entity = 1 {
-    optional EntityProto entity = 2;
-    optional Reference key = 4;
-
-    optional int64 version = 3;
-  }
-
-  repeated Reference deferred = 5;
-
-  optional bool in_order = 6 [default=true];
-}
-
-message PutRequest {
-  optional InternalHeader header = 11;
-
-  repeated EntityProto entity = 1;
-  optional Transaction transaction = 2;
-  repeated CompositeIndex composite_index = 3;
-
-  optional bool trusted = 4 [default = false];
-
-  optional bool force = 7 [default = false];
-
-  optional bool mark_changes = 8 [default = false];
-  repeated Snapshot snapshot = 9;
-
-  enum AutoIdPolicy {
-    CURRENT = 0;
-    SEQUENTIAL = 1;
-  }
-  optional AutoIdPolicy auto_id_policy = 10 [default = CURRENT];
-}
-
-message PutResponse {
-  repeated Reference key = 1;
-  optional Cost cost = 2;
-  repeated int64 version = 3;
-}
-
-message TouchRequest {
-  optional InternalHeader header = 10;
-
-  repeated Reference key = 1;
-  repeated CompositeIndex composite_index = 2;
-  optional bool force = 3 [default = false];
-  repeated Snapshot snapshot = 9;
-}
-
-message TouchResponse {
-  optional Cost cost = 1;
-}
-
-message DeleteRequest {
-  optional InternalHeader header = 10;
-
-  repeated Reference key = 6;
-  optional Transaction transaction = 5;
-
-  optional bool trusted = 4 [default = false];
-
-  optional bool force = 7 [default = false];
-
-  optional bool mark_changes = 8 [default = false];
-  repeated Snapshot snapshot = 9;
-}
-
-message DeleteResponse {
-  optional Cost cost = 1;
-  repeated int64 version = 3;
-}
-
-message NextRequest {
-  optional InternalHeader header = 5;
-
-  required Cursor cursor = 1;
-  optional int32 count = 2;
-
-  optional int32 offset = 4 [default = 0];
-
-  optional bool compile = 3 [default = false];
-}
-
-message QueryResult {
-  optional Cursor cursor = 1;
-
-  repeated EntityProto result = 2;
-
-  optional int32 skipped_results = 7;
-
-  required bool more_results = 3;
-
-  optional bool keys_only = 4;
-
-  optional bool index_only = 9;
-
-  optional bool small_ops = 10;
-
-  optional CompiledQuery compiled_query = 5;
-
-  optional CompiledCursor compiled_cursor = 6;
-
-  repeated CompositeIndex index = 8;
-
-  repeated int64 version = 11;
-}
-
-message AllocateIdsRequest {
-  optional InternalHeader header = 4;
-
-  optional Reference model_key = 1;
-
-  optional int64 size = 2;
-
-  optional int64 max = 3;
-
-  repeated Reference reserve = 5;
-}
-
-message AllocateIdsResponse {
-  required int64 start = 1;
-  required int64 end = 2;
-  optional Cost cost = 3;
-}
-
-message CompositeIndices {
-  repeated CompositeIndex index = 1;
-}
-
-message AddActionsRequest {
-  optional InternalHeader header = 3;
-
-  required Transaction transaction = 1;
-  repeated Action action = 2;
-}
-
-message AddActionsResponse {
-}
-
-message BeginTransactionRequest {
-  optional InternalHeader header = 3;
-
-  required string app = 1;
-  optional bool allow_multiple_eg = 2 [default = false];
-}
-
-message CommitResponse {
-  optional Cost cost = 1;
-
-  repeated group Version = 3 {
-    required Reference root_entity_key = 4;
-    required int64 version = 5;
-  }
-}
diff --git a/vendor/google.golang.org/appengine/internal/log/log_service.proto b/vendor/google.golang.org/appengine/internal/log/log_service.proto
deleted file mode 100644
index 8981dc4..0000000
--- a/vendor/google.golang.org/appengine/internal/log/log_service.proto
+++ /dev/null
@@ -1,150 +0,0 @@
-syntax = "proto2";
-option go_package = "log";
-
-package appengine;
-
-message LogServiceError {
-  enum ErrorCode {
-    OK  = 0;
-    INVALID_REQUEST = 1;
-    STORAGE_ERROR = 2;
-  }
-}
-
-message UserAppLogLine {
-  required int64 timestamp_usec = 1;
-  required int64 level = 2;
-  required string message = 3;
-}
-
-message UserAppLogGroup {
-  repeated UserAppLogLine log_line = 2;
-}
-
-message FlushRequest {
-  optional bytes logs = 1;
-}
-
-message SetStatusRequest {
-  required string status = 1;
-}
-
-
-message LogOffset {
-  optional bytes request_id = 1;
-}
-
-message LogLine {
-  required int64 time = 1;
-  required int32 level = 2;
-  required string log_message = 3;
-}
-
-message RequestLog {
-  required string app_id = 1;
-  optional string module_id = 37 [default="default"];
-  required string version_id = 2;
-  required bytes request_id = 3;
-  optional LogOffset offset = 35;
-  required string ip = 4;
-  optional string nickname = 5;
-  required int64 start_time = 6;
-  required int64 end_time = 7;
-  required int64 latency = 8;
-  required int64 mcycles = 9;
-  required string method = 10;
-  required string resource = 11;
-  required string http_version = 12;
-  required int32 status = 13;
-  required int64 response_size = 14;
-  optional string referrer = 15;
-  optional string user_agent = 16;
-  required string url_map_entry = 17;
-  required string combined = 18;
-  optional int64 api_mcycles = 19;
-  optional string host = 20;
-  optional double cost = 21;
-
-  optional string task_queue_name = 22;
-  optional string task_name = 23;
-
-  optional bool was_loading_request = 24;
-  optional int64 pending_time = 25;
-  optional int32 replica_index = 26 [default = -1];
-  optional bool finished = 27 [default = true];
-  optional bytes clone_key = 28;
-
-  repeated LogLine line = 29;
-
-  optional bool lines_incomplete = 36;
-  optional bytes app_engine_release = 38;
-
-  optional int32 exit_reason = 30;
-  optional bool was_throttled_for_time = 31;
-  optional bool was_throttled_for_requests = 32;
-  optional int64 throttled_time = 33;
-
-  optional bytes server_name = 34;
-}
-
-message LogModuleVersion {
-  optional string module_id = 1 [default="default"];
-  optional string version_id = 2;
-}
-
-message LogReadRequest {
-  required string app_id = 1;
-  repeated string version_id = 2;
-  repeated LogModuleVersion module_version = 19;
-
-  optional int64 start_time = 3;
-  optional int64 end_time = 4;
-  optional LogOffset offset = 5;
-  repeated bytes request_id = 6;
-
-  optional int32 minimum_log_level = 7;
-  optional bool include_incomplete = 8;
-  optional int64 count = 9;
-
-  optional string combined_log_regex = 14;
-  optional string host_regex = 15;
-  optional int32 replica_index = 16;
-
-  optional bool include_app_logs = 10;
-  optional int32 app_logs_per_request = 17;
-  optional bool include_host = 11;
-  optional bool include_all = 12;
-  optional bool cache_iterator = 13;
-  optional int32 num_shards = 18;
-}
-
-message LogReadResponse {
-  repeated RequestLog log = 1;
-  optional LogOffset offset = 2;
-  optional int64 last_end_time = 3;
-}
-
-message LogUsageRecord {
-  optional string version_id = 1;
-  optional int32 start_time = 2;
-  optional int32 end_time = 3;
-  optional int64 count = 4;
-  optional int64 total_size = 5;
-  optional int32 records = 6;
-}
-
-message LogUsageRequest {
-  required string app_id = 1;
-  repeated string version_id = 2;
-  optional int32 start_time = 3;
-  optional int32 end_time = 4;
-  optional uint32 resolution_hours = 5 [default = 1];
-  optional bool combine_versions = 6;
-  optional int32 usage_version = 7;
-  optional bool versions_only = 8;
-}
-
-message LogUsageResponse {
-  repeated LogUsageRecord usage = 1;
-  optional LogUsageRecord summary = 2;
-}
diff --git a/vendor/google.golang.org/appengine/internal/modules/modules_service.proto b/vendor/google.golang.org/appengine/internal/modules/modules_service.proto
deleted file mode 100644
index d29f006..0000000
--- a/vendor/google.golang.org/appengine/internal/modules/modules_service.proto
+++ /dev/null
@@ -1,80 +0,0 @@
-syntax = "proto2";
-option go_package = "modules";
-
-package appengine;
-
-message ModulesServiceError {
-  enum ErrorCode {
-    OK  = 0;
-    INVALID_MODULE = 1;
-    INVALID_VERSION = 2;
-    INVALID_INSTANCES = 3;
-    TRANSIENT_ERROR = 4;
-    UNEXPECTED_STATE = 5;
-  }
-}
-
-message GetModulesRequest {
-}
-
-message GetModulesResponse {
-  repeated string module = 1;
-}
-
-message GetVersionsRequest {
-  optional string module = 1;
-}
-
-message GetVersionsResponse {
-  repeated string version = 1;
-}
-
-message GetDefaultVersionRequest {
-  optional string module = 1;
-}
-
-message GetDefaultVersionResponse {
-  required string version = 1;
-}
-
-message GetNumInstancesRequest {
-  optional string module = 1;
-  optional string version = 2;
-}
-
-message GetNumInstancesResponse {
-  required int64 instances = 1;
-}
-
-message SetNumInstancesRequest {
-  optional string module = 1;
-  optional string version = 2;
-  required int64 instances = 3;
-}
-
-message SetNumInstancesResponse {}
-
-message StartModuleRequest {
-  required string module = 1;
-  required string version = 2;
-}
-
-message StartModuleResponse {}
-
-message StopModuleRequest {
-  optional string module = 1;
-  optional string version = 2;
-}
-
-message StopModuleResponse {}
-
-message GetHostnameRequest {
-  optional string module = 1;
-  optional string version = 2;
-  optional string instance = 3;
-}
-
-message GetHostnameResponse {
-  required string hostname = 1;
-}
-
diff --git a/vendor/google.golang.org/appengine/internal/regen.sh b/vendor/google.golang.org/appengine/internal/regen.sh
deleted file mode 100755
index 2fdb546..0000000
--- a/vendor/google.golang.org/appengine/internal/regen.sh
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/bash -e
-#
-# This script rebuilds the generated code for the protocol buffers.
-# To run this you will need protoc and goprotobuf installed;
-# see https://github.com/golang/protobuf for instructions.
-
-PKG=google.golang.org/appengine
-
-function die() {
-	echo 1>&2 $*
-	exit 1
-}
-
-# Sanity check that the right tools are accessible.
-for tool in go protoc protoc-gen-go; do
-	q=$(which $tool) || die "didn't find $tool"
-	echo 1>&2 "$tool: $q"
-done
-
-echo -n 1>&2 "finding package dir... "
-pkgdir=$(go list -f '{{.Dir}}' $PKG)
-echo 1>&2 $pkgdir
-base=$(echo $pkgdir | sed "s,/$PKG\$,,")
-echo 1>&2 "base: $base"
-cd $base
-
-# Run protoc once per package.
-for dir in $(find $PKG/internal -name '*.proto' | xargs dirname | sort | uniq); do
-	echo 1>&2 "* $dir"
-	protoc --go_out=. $dir/*.proto
-done
-
-for f in $(find $PKG/internal -name '*.pb.go'); do
-  # Remove proto.RegisterEnum calls.
-  # These cause duplicate registration panics when these packages
-  # are used on classic App Engine. proto.RegisterEnum only affects
-  # parsing the text format; we don't care about that.
-  # https://code.google.com/p/googleappengine/issues/detail?id=11670#c17
-  sed -i '/proto.RegisterEnum/d' $f
-done
diff --git a/vendor/google.golang.org/appengine/internal/remote_api/remote_api.proto b/vendor/google.golang.org/appengine/internal/remote_api/remote_api.proto
deleted file mode 100644
index f21763a..0000000
--- a/vendor/google.golang.org/appengine/internal/remote_api/remote_api.proto
+++ /dev/null
@@ -1,44 +0,0 @@
-syntax = "proto2";
-option go_package = "remote_api";
-
-package remote_api;
-
-message Request {
-  required string service_name = 2;
-  required string method = 3;
-  required bytes request = 4;
-  optional string request_id = 5;
-}
-
-message ApplicationError {
-  required int32 code = 1;
-  required string detail = 2;
-}
-
-message RpcError {
-  enum ErrorCode {
-    UNKNOWN = 0;
-    CALL_NOT_FOUND = 1;
-    PARSE_ERROR = 2;
-    SECURITY_VIOLATION = 3;
-    OVER_QUOTA = 4;
-    REQUEST_TOO_LARGE = 5;
-    CAPABILITY_DISABLED = 6;
-    FEATURE_DISABLED = 7;
-    BAD_REQUEST = 8;
-    RESPONSE_TOO_LARGE = 9;
-    CANCELLED = 10;
-    REPLAY_ERROR = 11;
-    DEADLINE_EXCEEDED = 12;
-  }
-  required int32 code = 1;
-  optional string detail = 2;
-}
-
-message Response {
-  optional bytes response = 1;
-  optional bytes exception = 2;
-  optional ApplicationError application_error = 3;
-  optional bytes java_exception = 4;
-  optional RpcError rpc_error = 5;
-}
diff --git a/vendor/google.golang.org/appengine/internal/socket/socket_service.proto b/vendor/google.golang.org/appengine/internal/socket/socket_service.proto
deleted file mode 100644
index 2fcc795..0000000
--- a/vendor/google.golang.org/appengine/internal/socket/socket_service.proto
+++ /dev/null
@@ -1,460 +0,0 @@
-syntax = "proto2";
-option go_package = "socket";
-
-package appengine;
-
-message RemoteSocketServiceError {
-  enum ErrorCode {
-    SYSTEM_ERROR = 1;
-    GAI_ERROR = 2;
-    FAILURE = 4;
-    PERMISSION_DENIED = 5;
-    INVALID_REQUEST = 6;
-    SOCKET_CLOSED = 7;
-  }
-
-  enum SystemError {
-    option allow_alias = true;
-
-    SYS_SUCCESS = 0;
-    SYS_EPERM = 1;
-    SYS_ENOENT = 2;
-    SYS_ESRCH = 3;
-    SYS_EINTR = 4;
-    SYS_EIO = 5;
-    SYS_ENXIO = 6;
-    SYS_E2BIG = 7;
-    SYS_ENOEXEC = 8;
-    SYS_EBADF = 9;
-    SYS_ECHILD = 10;
-    SYS_EAGAIN = 11;
-    SYS_EWOULDBLOCK = 11;
-    SYS_ENOMEM = 12;
-    SYS_EACCES = 13;
-    SYS_EFAULT = 14;
-    SYS_ENOTBLK = 15;
-    SYS_EBUSY = 16;
-    SYS_EEXIST = 17;
-    SYS_EXDEV = 18;
-    SYS_ENODEV = 19;
-    SYS_ENOTDIR = 20;
-    SYS_EISDIR = 21;
-    SYS_EINVAL = 22;
-    SYS_ENFILE = 23;
-    SYS_EMFILE = 24;
-    SYS_ENOTTY = 25;
-    SYS_ETXTBSY = 26;
-    SYS_EFBIG = 27;
-    SYS_ENOSPC = 28;
-    SYS_ESPIPE = 29;
-    SYS_EROFS = 30;
-    SYS_EMLINK = 31;
-    SYS_EPIPE = 32;
-    SYS_EDOM = 33;
-    SYS_ERANGE = 34;
-    SYS_EDEADLK = 35;
-    SYS_EDEADLOCK = 35;
-    SYS_ENAMETOOLONG = 36;
-    SYS_ENOLCK = 37;
-    SYS_ENOSYS = 38;
-    SYS_ENOTEMPTY = 39;
-    SYS_ELOOP = 40;
-    SYS_ENOMSG = 42;
-    SYS_EIDRM = 43;
-    SYS_ECHRNG = 44;
-    SYS_EL2NSYNC = 45;
-    SYS_EL3HLT = 46;
-    SYS_EL3RST = 47;
-    SYS_ELNRNG = 48;
-    SYS_EUNATCH = 49;
-    SYS_ENOCSI = 50;
-    SYS_EL2HLT = 51;
-    SYS_EBADE = 52;
-    SYS_EBADR = 53;
-    SYS_EXFULL = 54;
-    SYS_ENOANO = 55;
-    SYS_EBADRQC = 56;
-    SYS_EBADSLT = 57;
-    SYS_EBFONT = 59;
-    SYS_ENOSTR = 60;
-    SYS_ENODATA = 61;
-    SYS_ETIME = 62;
-    SYS_ENOSR = 63;
-    SYS_ENONET = 64;
-    SYS_ENOPKG = 65;
-    SYS_EREMOTE = 66;
-    SYS_ENOLINK = 67;
-    SYS_EADV = 68;
-    SYS_ESRMNT = 69;
-    SYS_ECOMM = 70;
-    SYS_EPROTO = 71;
-    SYS_EMULTIHOP = 72;
-    SYS_EDOTDOT = 73;
-    SYS_EBADMSG = 74;
-    SYS_EOVERFLOW = 75;
-    SYS_ENOTUNIQ = 76;
-    SYS_EBADFD = 77;
-    SYS_EREMCHG = 78;
-    SYS_ELIBACC = 79;
-    SYS_ELIBBAD = 80;
-    SYS_ELIBSCN = 81;
-    SYS_ELIBMAX = 82;
-    SYS_ELIBEXEC = 83;
-    SYS_EILSEQ = 84;
-    SYS_ERESTART = 85;
-    SYS_ESTRPIPE = 86;
-    SYS_EUSERS = 87;
-    SYS_ENOTSOCK = 88;
-    SYS_EDESTADDRREQ = 89;
-    SYS_EMSGSIZE = 90;
-    SYS_EPROTOTYPE = 91;
-    SYS_ENOPROTOOPT = 92;
-    SYS_EPROTONOSUPPORT = 93;
-    SYS_ESOCKTNOSUPPORT = 94;
-    SYS_EOPNOTSUPP = 95;
-    SYS_ENOTSUP = 95;
-    SYS_EPFNOSUPPORT = 96;
-    SYS_EAFNOSUPPORT = 97;
-    SYS_EADDRINUSE = 98;
-    SYS_EADDRNOTAVAIL = 99;
-    SYS_ENETDOWN = 100;
-    SYS_ENETUNREACH = 101;
-    SYS_ENETRESET = 102;
-    SYS_ECONNABORTED = 103;
-    SYS_ECONNRESET = 104;
-    SYS_ENOBUFS = 105;
-    SYS_EISCONN = 106;
-    SYS_ENOTCONN = 107;
-    SYS_ESHUTDOWN = 108;
-    SYS_ETOOMANYREFS = 109;
-    SYS_ETIMEDOUT = 110;
-    SYS_ECONNREFUSED = 111;
-    SYS_EHOSTDOWN = 112;
-    SYS_EHOSTUNREACH = 113;
-    SYS_EALREADY = 114;
-    SYS_EINPROGRESS = 115;
-    SYS_ESTALE = 116;
-    SYS_EUCLEAN = 117;
-    SYS_ENOTNAM = 118;
-    SYS_ENAVAIL = 119;
-    SYS_EISNAM = 120;
-    SYS_EREMOTEIO = 121;
-    SYS_EDQUOT = 122;
-    SYS_ENOMEDIUM = 123;
-    SYS_EMEDIUMTYPE = 124;
-    SYS_ECANCELED = 125;
-    SYS_ENOKEY = 126;
-    SYS_EKEYEXPIRED = 127;
-    SYS_EKEYREVOKED = 128;
-    SYS_EKEYREJECTED = 129;
-    SYS_EOWNERDEAD = 130;
-    SYS_ENOTRECOVERABLE = 131;
-    SYS_ERFKILL = 132;
-  }
-
-  optional int32 system_error = 1 [default=0];
-  optional string error_detail = 2;
-}
-
-message AddressPort {
-  required int32 port = 1;
-  optional bytes packed_address = 2;
-
-  optional string hostname_hint = 3;
-}
-
-
-
-message CreateSocketRequest {
-  enum SocketFamily {
-    IPv4 = 1;
-    IPv6 = 2;
-  }
-
-  enum SocketProtocol {
-    TCP = 1;
-    UDP = 2;
-  }
-
-  required SocketFamily family = 1;
-  required SocketProtocol protocol = 2;
-
-  repeated SocketOption socket_options = 3;
-
-  optional AddressPort proxy_external_ip = 4;
-
-  optional int32 listen_backlog = 5 [default=0];
-
-  optional AddressPort remote_ip = 6;
-
-  optional string app_id = 9;
-
-  optional int64 project_id = 10;
-}
-
-message CreateSocketReply {
-  optional string socket_descriptor = 1;
-
-  optional AddressPort server_address = 3;
-
-  optional AddressPort proxy_external_ip = 4;
-
-  extensions 1000 to max;
-}
-
-
-
-message BindRequest {
-  required string socket_descriptor = 1;
-  required AddressPort proxy_external_ip = 2;
-}
-
-message BindReply {
-  optional AddressPort proxy_external_ip = 1;
-}
-
-
-
-message GetSocketNameRequest {
-  required string socket_descriptor = 1;
-}
-
-message GetSocketNameReply {
-  optional AddressPort proxy_external_ip = 2;
-}
-
-
-
-message GetPeerNameRequest {
-  required string socket_descriptor = 1;
-}
-
-message GetPeerNameReply {
-  optional AddressPort peer_ip = 2;
-}
-
-
-message SocketOption {
-
-  enum SocketOptionLevel {
-    SOCKET_SOL_IP = 0;
-    SOCKET_SOL_SOCKET = 1;
-    SOCKET_SOL_TCP = 6;
-    SOCKET_SOL_UDP = 17;
-  }
-
-  enum SocketOptionName {
-    option allow_alias = true;
-
-    SOCKET_SO_DEBUG = 1;
-    SOCKET_SO_REUSEADDR = 2;
-    SOCKET_SO_TYPE = 3;
-    SOCKET_SO_ERROR = 4;
-    SOCKET_SO_DONTROUTE = 5;
-    SOCKET_SO_BROADCAST = 6;
-    SOCKET_SO_SNDBUF = 7;
-    SOCKET_SO_RCVBUF = 8;
-    SOCKET_SO_KEEPALIVE = 9;
-    SOCKET_SO_OOBINLINE = 10;
-    SOCKET_SO_LINGER = 13;
-    SOCKET_SO_RCVTIMEO = 20;
-    SOCKET_SO_SNDTIMEO = 21;
-
-    SOCKET_IP_TOS = 1;
-    SOCKET_IP_TTL = 2;
-    SOCKET_IP_HDRINCL = 3;
-    SOCKET_IP_OPTIONS = 4;
-
-    SOCKET_TCP_NODELAY = 1;
-    SOCKET_TCP_MAXSEG = 2;
-    SOCKET_TCP_CORK = 3;
-    SOCKET_TCP_KEEPIDLE = 4;
-    SOCKET_TCP_KEEPINTVL = 5;
-    SOCKET_TCP_KEEPCNT = 6;
-    SOCKET_TCP_SYNCNT = 7;
-    SOCKET_TCP_LINGER2 = 8;
-    SOCKET_TCP_DEFER_ACCEPT = 9;
-    SOCKET_TCP_WINDOW_CLAMP = 10;
-    SOCKET_TCP_INFO = 11;
-    SOCKET_TCP_QUICKACK = 12;
-  }
-
-  required SocketOptionLevel level = 1;
-  required SocketOptionName option = 2;
-  required bytes value = 3;
-}
-
-
-message SetSocketOptionsRequest {
-  required string socket_descriptor = 1;
-  repeated SocketOption options = 2;
-}
-
-message SetSocketOptionsReply {
-}
-
-message GetSocketOptionsRequest {
-  required string socket_descriptor = 1;
-  repeated SocketOption options = 2;
-}
-
-message GetSocketOptionsReply {
-  repeated SocketOption options = 2;
-}
-
-
-message ConnectRequest {
-  required string socket_descriptor = 1;
-  required AddressPort remote_ip = 2;
-  optional double timeout_seconds = 3 [default=-1];
-}
-
-message ConnectReply {
-  optional AddressPort proxy_external_ip = 1;
-
-  extensions 1000 to max;
-}
-
-
-message ListenRequest {
-  required string socket_descriptor = 1;
-  required int32 backlog = 2;
-}
-
-message ListenReply {
-}
-
-
-message AcceptRequest {
-  required string socket_descriptor = 1;
-  optional double timeout_seconds = 2 [default=-1];
-}
-
-message AcceptReply {
-  optional bytes new_socket_descriptor = 2;
-  optional AddressPort remote_address = 3;
-}
-
-
-
-message ShutDownRequest {
-  enum How {
-    SOCKET_SHUT_RD = 1;
-    SOCKET_SHUT_WR = 2;
-    SOCKET_SHUT_RDWR = 3;
-  }
-  required string socket_descriptor = 1;
-  required How how = 2;
-  required int64 send_offset = 3;
-}
-
-message ShutDownReply {
-}
-
-
-
-message CloseRequest {
-  required string socket_descriptor = 1;
-  optional int64 send_offset = 2 [default=-1];
-}
-
-message CloseReply {
-}
-
-
-
-message SendRequest {
-  required string socket_descriptor = 1;
-  required bytes data = 2 [ctype=CORD];
-  required int64 stream_offset = 3;
-  optional int32 flags = 4 [default=0];
-  optional AddressPort send_to = 5;
-  optional double timeout_seconds = 6 [default=-1];
-}
-
-message SendReply {
-  optional int32 data_sent = 1;
-}
-
-
-message ReceiveRequest {
-  enum Flags {
-    MSG_OOB = 1;
-    MSG_PEEK = 2;
-  }
-  required string socket_descriptor = 1;
-  required int32 data_size = 2;
-  optional int32 flags = 3 [default=0];
-  optional double timeout_seconds = 5 [default=-1];
-}
-
-message ReceiveReply {
-  optional int64 stream_offset = 2;
-  optional bytes data = 3 [ctype=CORD];
-  optional AddressPort received_from = 4;
-  optional int32 buffer_size = 5;
-}
-
-
-
-message PollEvent {
-
-  enum PollEventFlag {
-    SOCKET_POLLNONE = 0;
-    SOCKET_POLLIN = 1;
-    SOCKET_POLLPRI = 2;
-    SOCKET_POLLOUT = 4;
-    SOCKET_POLLERR = 8;
-    SOCKET_POLLHUP = 16;
-    SOCKET_POLLNVAL = 32;
-    SOCKET_POLLRDNORM = 64;
-    SOCKET_POLLRDBAND = 128;
-    SOCKET_POLLWRNORM = 256;
-    SOCKET_POLLWRBAND = 512;
-    SOCKET_POLLMSG = 1024;
-    SOCKET_POLLREMOVE = 4096;
-    SOCKET_POLLRDHUP = 8192;
-  };
-
-  required string socket_descriptor = 1;
-  required int32 requested_events = 2;
-  required int32 observed_events = 3;
-}
-
-message PollRequest {
-  repeated PollEvent events = 1;
-  optional double timeout_seconds = 2 [default=-1];
-}
-
-message PollReply {
-  repeated PollEvent events = 2;
-}
-
-message ResolveRequest {
-  required string name = 1;
-  repeated CreateSocketRequest.SocketFamily address_families = 2;
-}
-
-message ResolveReply {
-  enum ErrorCode {
-    SOCKET_EAI_ADDRFAMILY = 1;
-    SOCKET_EAI_AGAIN = 2;
-    SOCKET_EAI_BADFLAGS = 3;
-    SOCKET_EAI_FAIL = 4;
-    SOCKET_EAI_FAMILY = 5;
-    SOCKET_EAI_MEMORY = 6;
-    SOCKET_EAI_NODATA = 7;
-    SOCKET_EAI_NONAME = 8;
-    SOCKET_EAI_SERVICE = 9;
-    SOCKET_EAI_SOCKTYPE = 10;
-    SOCKET_EAI_SYSTEM = 11;
-    SOCKET_EAI_BADHINTS = 12;
-    SOCKET_EAI_PROTOCOL = 13;
-    SOCKET_EAI_OVERFLOW = 14;
-    SOCKET_EAI_MAX = 15;
-  };
-
-  repeated bytes packed_address = 2;
-  optional string canonical_name = 3;
-  repeated string aliases = 4;
-}
diff --git a/vendor/google.golang.org/appengine/internal/urlfetch/urlfetch_service.proto b/vendor/google.golang.org/appengine/internal/urlfetch/urlfetch_service.proto
deleted file mode 100644
index f695edf..0000000
--- a/vendor/google.golang.org/appengine/internal/urlfetch/urlfetch_service.proto
+++ /dev/null
@@ -1,64 +0,0 @@
-syntax = "proto2";
-option go_package = "urlfetch";
-
-package appengine;
-
-message URLFetchServiceError {
-  enum ErrorCode {
-    OK = 0;
-    INVALID_URL = 1;
-    FETCH_ERROR = 2;
-    UNSPECIFIED_ERROR = 3;
-    RESPONSE_TOO_LARGE = 4;
-    DEADLINE_EXCEEDED = 5;
-    SSL_CERTIFICATE_ERROR = 6;
-    DNS_ERROR = 7;
-    CLOSED = 8;
-    INTERNAL_TRANSIENT_ERROR = 9;
-    TOO_MANY_REDIRECTS = 10;
-    MALFORMED_REPLY = 11;
-    CONNECTION_ERROR = 12;
-  }
-}
-
-message URLFetchRequest {
-  enum RequestMethod {
-    GET = 1;
-    POST = 2;
-    HEAD = 3;
-    PUT = 4;
-    DELETE = 5;
-    PATCH = 6;
-  }
-  required RequestMethod Method = 1;
-  required string Url = 2;
-  repeated group Header = 3 {
-    required string Key = 4;
-    required string Value = 5;
-  }
-  optional bytes Payload = 6 [ctype=CORD];
-
-  optional bool FollowRedirects = 7 [default=true];
-
-  optional double Deadline = 8;
-
-  optional bool MustValidateServerCertificate = 9 [default=true];
-}
-
-message URLFetchResponse {
-  optional bytes Content = 1;
-  required int32 StatusCode = 2;
-  repeated group Header = 3 {
-    required string Key = 4;
-    required string Value = 5;
-  }
-  optional bool ContentWasTruncated = 6 [default=false];
-  optional int64 ExternalBytesSent = 7;
-  optional int64 ExternalBytesReceived = 8;
-
-  optional string FinalUrl = 9;
-
-  optional int64 ApiCpuMilliseconds = 10 [default=0];
-  optional int64 ApiBytesSent = 11 [default=0];
-  optional int64 ApiBytesReceived = 12 [default=0];
-}
diff --git a/vendor/google.golang.org/genproto/.travis.yml b/vendor/google.golang.org/genproto/.travis.yml
deleted file mode 100644
index e673e05..0000000
--- a/vendor/google.golang.org/genproto/.travis.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-language: go
-go:
-  - 1.6
-  - 1.7
-  - 1.8
-go_import_path: google.golang.org/genproto
-
-script:
-- go test -v ./...
-- if [[ "$TRAVIS_BRANCH" == "master" &&  "$TRAVIS_PULL_REQUEST" == "false" ]]; then
-  go get -u -v cloud.google.com/go/...;
-  fi
diff --git a/vendor/google.golang.org/genproto/CONTRIBUTING.md b/vendor/google.golang.org/genproto/CONTRIBUTING.md
deleted file mode 100644
index 2827b7d..0000000
--- a/vendor/google.golang.org/genproto/CONTRIBUTING.md
+++ /dev/null
@@ -1,27 +0,0 @@
-Want to contribute? Great! First, read this page (including the small print at the end).
-
-### Before you contribute
-Before we can use your code, you must sign the
-[Google Individual Contributor License Agreement]
-(https://cla.developers.google.com/about/google-individual)
-(CLA), which you can do online. The CLA is necessary mainly because you own the
-copyright to your changes, even after your contribution becomes part of our
-codebase, so we need your permission to use and distribute your code. We also
-need to be sure of various other things—for instance that you'll tell us if you
-know that your code infringes on other people's patents. You don't have to sign
-the CLA until after you've submitted your code for review and a member has
-approved it, but you must do it before we can put your code into our codebase.
-Before you start working on a larger contribution, you should get in touch with
-us first through the issue tracker with your idea so that we can help out and
-possibly guide you. Coordinating up front makes it much easier to avoid
-frustration later on.
-
-### Code reviews
-All submissions, including submissions by project members, require review. We
-use Github pull requests for this purpose.
-
-### The small print
-Contributions made by corporations are covered by a different agreement than
-the one above, the
-[Software Grant and Corporate Contributor License Agreement]
-(https://cla.developers.google.com/about/google-corporate).
diff --git a/vendor/google.golang.org/genproto/README.md b/vendor/google.golang.org/genproto/README.md
deleted file mode 100644
index 51d0bae..0000000
--- a/vendor/google.golang.org/genproto/README.md
+++ /dev/null
@@ -1,28 +0,0 @@
-Go generated proto packages
-===========================
-
-[![Build Status](https://travis-ci.org/google/go-genproto.svg?branch=master)](https://travis-ci.org/google/go-genproto)
-[![GoDoc](https://godoc.org/google.golang.org/genproto?status.svg)](https://godoc.org/google.golang.org/genproto)
-
-> **IMPORTANT** This repository is currently experimental. The structure
-> of the contained packages is subject to change. Please see the original
-> source repositories (listed below) to find out the status of the each
-> protocol buffer's associated service.
-
-This repository contains the generated Go packages for common protocol buffer
-types, and the generated [gRPC][1] code necessary for interacting with Google's gRPC
-APIs.
-
-There are two sources for the proto files used in this repository:
-
-1. [google/protobuf][2]: the code in the `protobuf` and `ptypes` subdirectories
-   is derived from this repo. The messages in `protobuf` are used to describe
-   protocol buffer messages themselves. The messages under `ptypes` define the
-   common well-known types.
-2. [googleapis/googleapis][3]: the code in the `googleapis` is derived from this
-   repo. The packages here contain types specifically for interacting with Google
-   APIs.
-
-[1]: http://grpc.io
-[2]: https://github.com/google/protobuf/
-[3]: https://github.com/googleapis/googleapis/
diff --git a/vendor/google.golang.org/genproto/googleapis/api/authorization_config.pb.go b/vendor/google.golang.org/genproto/googleapis/api/authorization_config.pb.go
deleted file mode 100644
index 8062b96..0000000
--- a/vendor/google.golang.org/genproto/googleapis/api/authorization_config.pb.go
+++ /dev/null
@@ -1,80 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: google/api/experimental/authorization_config.proto
-
-/*
-Package api is a generated protocol buffer package.
-
-It is generated from these files:
-	google/api/experimental/authorization_config.proto
-	google/api/experimental/experimental.proto
-
-It has these top-level messages:
-	AuthorizationConfig
-	Experimental
-*/
-package api
-
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
-
-// 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
-
-// Configuration of authorization.
-//
-// This section determines the authorization provider, if unspecified, then no
-// authorization check will be done.
-//
-// Example:
-//
-//     experimental:
-//       authorization:
-//         provider: firebaserules.googleapis.com
-type AuthorizationConfig struct {
-	// The name of the authorization provider, such as
-	// firebaserules.googleapis.com.
-	Provider string `protobuf:"bytes,1,opt,name=provider" json:"provider,omitempty"`
-}
-
-func (m *AuthorizationConfig) Reset()                    { *m = AuthorizationConfig{} }
-func (m *AuthorizationConfig) String() string            { return proto.CompactTextString(m) }
-func (*AuthorizationConfig) ProtoMessage()               {}
-func (*AuthorizationConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
-
-func (m *AuthorizationConfig) GetProvider() string {
-	if m != nil {
-		return m.Provider
-	}
-	return ""
-}
-
-func init() {
-	proto.RegisterType((*AuthorizationConfig)(nil), "google.api.AuthorizationConfig")
-}
-
-func init() { proto.RegisterFile("google/api/experimental/authorization_config.proto", fileDescriptor0) }
-
-var fileDescriptor0 = []byte{
-	// 180 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x32, 0x4a, 0xcf, 0xcf, 0x4f,
-	0xcf, 0x49, 0xd5, 0x4f, 0x2c, 0xc8, 0xd4, 0x4f, 0xad, 0x28, 0x48, 0x2d, 0xca, 0xcc, 0x4d, 0xcd,
-	0x2b, 0x49, 0xcc, 0xd1, 0x4f, 0x2c, 0x2d, 0xc9, 0xc8, 0x2f, 0xca, 0xac, 0x4a, 0x2c, 0xc9, 0xcc,
-	0xcf, 0x8b, 0x4f, 0xce, 0xcf, 0x4b, 0xcb, 0x4c, 0xd7, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2,
-	0x82, 0xe8, 0xd1, 0x4b, 0x2c, 0xc8, 0x54, 0x32, 0xe4, 0x12, 0x76, 0x44, 0x56, 0xe9, 0x0c, 0x56,
-	0x28, 0x24, 0xc5, 0xc5, 0x51, 0x50, 0x94, 0x5f, 0x96, 0x99, 0x92, 0x5a, 0x24, 0xc1, 0xa8, 0xc0,
-	0xa8, 0xc1, 0x19, 0x04, 0xe7, 0x3b, 0x25, 0x71, 0xf1, 0x25, 0xe7, 0xe7, 0xea, 0x21, 0x0c, 0x71,
-	0x92, 0xc0, 0x62, 0x44, 0x00, 0xc8, 0xaa, 0x00, 0xc6, 0x28, 0x5d, 0xa8, 0xba, 0xf4, 0xfc, 0x9c,
-	0xc4, 0xbc, 0x74, 0xbd, 0xfc, 0xa2, 0x74, 0xfd, 0xf4, 0xd4, 0x3c, 0xb0, 0x43, 0xf4, 0x21, 0x52,
-	0x89, 0x05, 0x99, 0xc5, 0x20, 0xf7, 0x5b, 0x27, 0x16, 0x64, 0x2e, 0x62, 0x62, 0x71, 0x77, 0x0c,
-	0xf0, 0x4c, 0x62, 0x03, 0x2b, 0x30, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0x52, 0x27, 0x0c, 0xba,
-	0xdf, 0x00, 0x00, 0x00,
-}
diff --git a/vendor/google.golang.org/genproto/googleapis/api/experimental.pb.go b/vendor/google.golang.org/genproto/googleapis/api/experimental.pb.go
deleted file mode 100644
index a88df3d..0000000
--- a/vendor/google.golang.org/genproto/googleapis/api/experimental.pb.go
+++ /dev/null
@@ -1,56 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: google/api/experimental/experimental.proto
-
-package api
-
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-import _ "google.golang.org/genproto/googleapis/api/annotations"
-
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
-
-// Experimental service configuration. These configuration options can
-// only be used by whitelisted users.
-type Experimental struct {
-	// Authorization configuration.
-	Authorization *AuthorizationConfig `protobuf:"bytes,8,opt,name=authorization" json:"authorization,omitempty"`
-}
-
-func (m *Experimental) Reset()                    { *m = Experimental{} }
-func (m *Experimental) String() string            { return proto.CompactTextString(m) }
-func (*Experimental) ProtoMessage()               {}
-func (*Experimental) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} }
-
-func (m *Experimental) GetAuthorization() *AuthorizationConfig {
-	if m != nil {
-		return m.Authorization
-	}
-	return nil
-}
-
-func init() {
-	proto.RegisterType((*Experimental)(nil), "google.api.Experimental")
-}
-
-func init() { proto.RegisterFile("google/api/experimental/experimental.proto", fileDescriptor1) }
-
-var fileDescriptor1 = []byte{
-	// 204 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xd2, 0x4a, 0xcf, 0xcf, 0x4f,
-	0xcf, 0x49, 0xd5, 0x4f, 0x2c, 0xc8, 0xd4, 0x4f, 0xad, 0x28, 0x48, 0x2d, 0xca, 0xcc, 0x4d, 0xcd,
-	0x2b, 0x49, 0xcc, 0x41, 0xe1, 0xe8, 0x15, 0x14, 0xe5, 0x97, 0xe4, 0x0b, 0x71, 0x41, 0xd4, 0xea,
-	0x25, 0x16, 0x64, 0x4a, 0xc9, 0x20, 0xe9, 0x4b, 0xcc, 0xcb, 0xcb, 0x2f, 0x49, 0x2c, 0xc9, 0xcc,
-	0xcf, 0x2b, 0x86, 0xa8, 0x94, 0x32, 0xc2, 0x65, 0x6a, 0x62, 0x69, 0x49, 0x46, 0x7e, 0x51, 0x66,
-	0x15, 0x58, 0x75, 0x7c, 0x72, 0x7e, 0x5e, 0x5a, 0x66, 0x3a, 0x44, 0x8f, 0x52, 0x28, 0x17, 0x8f,
-	0x2b, 0x92, 0x52, 0x21, 0x57, 0x2e, 0x5e, 0x14, 0xd5, 0x12, 0x1c, 0x0a, 0x8c, 0x1a, 0xdc, 0x46,
-	0xf2, 0x7a, 0x08, 0x57, 0xe8, 0x39, 0x22, 0x2b, 0x70, 0x06, 0x9b, 0x16, 0x84, 0xaa, 0xcb, 0x29,
-	0x9a, 0x8b, 0x2f, 0x39, 0x3f, 0x17, 0x49, 0x93, 0x93, 0x20, 0xb2, 0x35, 0x01, 0x20, 0xbb, 0x03,
-	0x18, 0xa3, 0x74, 0xa1, 0x0a, 0xd2, 0xf3, 0x73, 0x12, 0xf3, 0xd2, 0xf5, 0xf2, 0x8b, 0xd2, 0xf5,
-	0xd3, 0x53, 0xf3, 0xc0, 0x2e, 0xd3, 0x87, 0x48, 0x25, 0x16, 0x64, 0x16, 0x83, 0x3c, 0x64, 0x9d,
-	0x58, 0x90, 0xb9, 0x88, 0x89, 0xc5, 0xdd, 0x31, 0xc0, 0x33, 0x89, 0x0d, 0xac, 0xc0, 0x18, 0x10,
-	0x00, 0x00, 0xff, 0xff, 0xa0, 0x95, 0x20, 0xe5, 0x46, 0x01, 0x00, 0x00,
-}
diff --git a/vendor/google.golang.org/genproto/regen.go b/vendor/google.golang.org/genproto/regen.go
deleted file mode 100644
index 9c906f2..0000000
--- a/vendor/google.golang.org/genproto/regen.go
+++ /dev/null
@@ -1,123 +0,0 @@
-// Copyright 2016 Google 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
-//
-//     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.
-
-// +build ignore
-
-// Regen.go regenerates the genproto repository.
-//
-// Regen.go recursively walks through each directory named by given arguments,
-// looking for all .proto files. (Symlinks are not followed.)
-// If the pkg_prefix flag is not an empty string,
-// any proto file without `go_package` option
-// or whose option does not begin with the prefix is ignored.
-// Protoc is executed on remaining files,
-// one invocation per set of files declaring the same Go package.
-package main
-
-import (
-	"flag"
-	"fmt"
-	"io/ioutil"
-	"log"
-	"os"
-	"os/exec"
-	"path/filepath"
-	"regexp"
-	"strconv"
-	"strings"
-)
-
-var goPkgOptRe = regexp.MustCompile(`(?m)^option go_package = (.*);`)
-
-func usage() {
-	fmt.Fprintln(os.Stderr, `usage: go run regen.go -go_out=path/to/output [-pkg_prefix=pkg/prefix] roots...
-
-Most users will not need to run this file directly.
-To regenerate this repository, run regen.sh instead.`)
-	flag.PrintDefaults()
-}
-
-func main() {
-	goOutDir := flag.String("go_out", "", "go_out argument to pass to protoc-gen-go")
-	pkgPrefix := flag.String("pkg_prefix", "", "only include proto files with go_package starting with this prefix")
-	flag.Usage = usage
-	flag.Parse()
-
-	if *goOutDir == "" {
-		log.Fatal("need go_out flag")
-	}
-
-	pkgFiles := make(map[string][]string)
-	walkFn := func(path string, info os.FileInfo, err error) error {
-		if err != nil {
-			return err
-		}
-		if !info.Mode().IsRegular() || !strings.HasSuffix(path, ".proto") {
-			return nil
-		}
-		pkg, err := goPkg(path)
-		if err != nil {
-			return err
-		}
-		pkgFiles[pkg] = append(pkgFiles[pkg], path)
-		return nil
-	}
-	for _, root := range flag.Args() {
-		if err := filepath.Walk(root, walkFn); err != nil {
-			log.Fatal(err)
-		}
-	}
-	for pkg, fnames := range pkgFiles {
-		if !strings.HasPrefix(pkg, *pkgPrefix) {
-			continue
-		}
-		if out, err := protoc(*goOutDir, flag.Args(), fnames); err != nil {
-			log.Fatalf("error executing protoc: %s\n%s", err, out)
-		}
-	}
-}
-
-// goPkg reports the import path declared in the given file's
-// `go_package` option. If the option is missing, goPkg returns empty string.
-func goPkg(fname string) (string, error) {
-	content, err := ioutil.ReadFile(fname)
-	if err != nil {
-		return "", err
-	}
-
-	var pkgName string
-	if match := goPkgOptRe.FindSubmatch(content); len(match) > 0 {
-		pn, err := strconv.Unquote(string(match[1]))
-		if err != nil {
-			return "", err
-		}
-		pkgName = pn
-	}
-	if p := strings.IndexRune(pkgName, ';'); p > 0 {
-		pkgName = pkgName[:p]
-	}
-	return pkgName, nil
-}
-
-// protoc executes the "protoc" command on files named in fnames,
-// passing go_out and include flags specified in goOut and includes respectively.
-// protoc returns combined output from stdout and stderr.
-func protoc(goOut string, includes, fnames []string) ([]byte, error) {
-	args := []string{"--go_out=plugins=grpc:" + goOut}
-	for _, inc := range includes {
-		args = append(args, "-I", inc)
-	}
-	args = append(args, fnames...)
-	return exec.Command("protoc", args...).CombinedOutput()
-}
diff --git a/vendor/google.golang.org/genproto/regen.sh b/vendor/google.golang.org/genproto/regen.sh
deleted file mode 100755
index 8d9c731..0000000
--- a/vendor/google.golang.org/genproto/regen.sh
+++ /dev/null
@@ -1,77 +0,0 @@
-#!/bin/bash
-#
-# Copyright 2016 Google 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
-#
-#     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 script rebuilds the generated code for the protocol buffers.
-# To run this you will need protoc and goprotobuf installed;
-# see https://github.com/golang/protobuf for instructions.
-# You also need Go and Git installed.
-
-set -e
-
-PKG=google.golang.org/genproto
-PROTO_REPO=https://github.com/google/protobuf
-PROTO_SUBDIR=src/google/protobuf
-API_REPO=https://github.com/googleapis/googleapis
-
-function die() {
-  echo 1>&2 $*
-  exit 1
-}
-
-# Sanity check that the right tools are accessible.
-for tool in go git protoc protoc-gen-go; do
-  q=$(which $tool) || die "didn't find $tool"
-  echo 1>&2 "$tool: $q"
-done
-
-root=$(go list -f '{{.Root}}' $PKG/... | head -n1)
-if [ -z "$root" ]; then
-  die "cannot find root of $PKG"
-fi
-
-remove_dirs=
-trap 'rm -rf $remove_dirs' EXIT
-
-if [ -z "$PROTOBUF" ]; then
-  proto_repo_dir=$(mktemp -d -t regen-cds-proto.XXXXXX)
-  git clone -q $PROTO_REPO $proto_repo_dir &
-  remove_dirs="$proto_repo_dir"
-  # The protoc include directory is actually the "src" directory of the repo.
-  protodir="$proto_repo_dir/src"
-else
-  protodir="$PROTOBUF/src"
-fi
-
-if [ -z "$GOOGLEAPIS" ]; then
-  apidir=$(mktemp -d -t regen-cds-api.XXXXXX)
-  git clone -q $API_REPO $apidir &
-  remove_dirs="$remove_dirs $apidir"
-else
-  apidir="$GOOGLEAPIS"
-fi
-
-wait
-
-# Nuke everything, we'll generate them back
-rm -r googleapis/ protobuf/
-
-go run regen.go -go_out "$root/src" -pkg_prefix "$PKG" "$apidir" "$protodir"
-
-# Sanity check the build.
-echo 1>&2 "Checking that the libraries build..."
-go build -v ./...
-
-echo 1>&2 "All done!"
diff --git a/vendor/google.golang.org/grpc/.please-update b/vendor/google.golang.org/grpc/.please-update
deleted file mode 100644
index e69de29..0000000
--- a/vendor/google.golang.org/grpc/.please-update
+++ /dev/null
diff --git a/vendor/google.golang.org/grpc/.travis.yml b/vendor/google.golang.org/grpc/.travis.yml
deleted file mode 100644
index 22bf250..0000000
--- a/vendor/google.golang.org/grpc/.travis.yml
+++ /dev/null
@@ -1,20 +0,0 @@
-language: go
-
-go:
-  - 1.7.x
-  - 1.8.x
-  - 1.9.x
-
-matrix:
-  include:
-  - go: 1.9.x
-    env: ARCH=386
-
-go_import_path: google.golang.org/grpc
-
-before_install:
-  - if [[ "$TRAVIS_GO_VERSION" = 1.9* && "$ARCH" != "386" ]]; then ./vet.sh -install || exit 1; fi
-
-script:
-  - if [[ "$TRAVIS_GO_VERSION" = 1.9* && "$ARCH" != "386" ]]; then ./vet.sh || exit 1; fi
-  - make test testrace
diff --git a/vendor/google.golang.org/grpc/CONTRIBUTING.md b/vendor/google.golang.org/grpc/CONTRIBUTING.md
deleted file mode 100644
index a5c6e06..0000000
--- a/vendor/google.golang.org/grpc/CONTRIBUTING.md
+++ /dev/null
@@ -1,32 +0,0 @@
-# How to contribute
-
-We definitely welcome your patches and contributions to gRPC!
-
-If you are new to github, please start by reading [Pull Request howto](https://help.github.com/articles/about-pull-requests/)
-
-## Legal requirements
-
-In order to protect both you and ourselves, you will need to sign the
-[Contributor License Agreement](https://cla.developers.google.com/clas).
-
-## 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.
-
-- Exceptions to the rules can be made if there's a compelling reason for doing so.
- 
diff --git a/vendor/google.golang.org/grpc/Makefile b/vendor/google.golang.org/grpc/Makefile
deleted file mode 100644
index 39606b5..0000000
--- a/vendor/google.golang.org/grpc/Makefile
+++ /dev/null
@@ -1,45 +0,0 @@
-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/...
-
-build: deps
-	go build google.golang.org/grpc/...
-
-proto:
-	@ if ! which protoc > /dev/null; then \
-		echo "error: protoc not installed" >&2; \
-		exit 1; \
-	fi
-	go generate google.golang.org/grpc/...
-
-test: testdeps
-	go test -cpu 1,4 google.golang.org/grpc/...
-
-testrace: testdeps
-	go test -race -cpu 1,4 google.golang.org/grpc/...
-
-clean:
-	go clean -i google.golang.org/grpc/...
-
-.PHONY: \
-	all \
-	deps \
-	updatedeps \
-	testdeps \
-	updatetestdeps \
-	build \
-	proto \
-	test \
-	testrace \
-	clean \
-	coverage
diff --git a/vendor/google.golang.org/grpc/README.md b/vendor/google.golang.org/grpc/README.md
deleted file mode 100644
index 622a5dc..0000000
--- a/vendor/google.golang.org/grpc/README.md
+++ /dev/null
@@ -1,45 +0,0 @@
-# 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)
-
-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:
-
-```
-$ go get -u google.golang.org/grpc
-```
-
-Prerequisites
--------------
-
-This requires Go 1.7 or later.
-
-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.
-
-Documentation
--------------
-See [API documentation](https://godoc.org/google.golang.org/grpc) for package and API descriptions and find examples 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).
-
-Status
-------
-General Availability [Google Cloud Platform Launch Stages](https://cloud.google.com/terms/launch-stages).
-
-FAQ
----
-
-#### 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`
diff --git a/vendor/google.golang.org/grpc/codegen.sh b/vendor/google.golang.org/grpc/codegen.sh
deleted file mode 100755
index 4cdc6ba..0000000
--- a/vendor/google.golang.org/grpc/codegen.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/usr/bin/env bash
-
-# This script serves as an example to demonstrate how to generate the gRPC-Go
-# interface and the related messages from .proto file.
-#
-# It assumes the installation of i) Google proto buffer compiler at
-# https://github.com/google/protobuf (after v2.6.1) and ii) the Go codegen
-# plugin at https://github.com/golang/protobuf (after 2015-02-20). If you have
-# not, please install them first.
-#
-# We recommend running this script at $GOPATH/src.
-#
-# If this is not what you need, feel free to make your own scripts. Again, this
-# script is for demonstration purpose.
-#
-proto=$1
-protoc --go_out=plugins=grpc:. $proto
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 2ed0455..0000000
--- 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 = "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/vet.sh b/vendor/google.golang.org/grpc/vet.sh
deleted file mode 100755
index 72ef329..0000000
--- a/vendor/google.golang.org/grpc/vet.sh
+++ /dev/null
@@ -1,78 +0,0 @@
-#!/bin/bash
-
-set -ex  # Exit on error; debugging enabled.
-set -o pipefail  # Fail a pipe if any sub-command fails.
-
-die() {
-  echo "$@" >&2
-  exit 1
-}
-
-# 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
-
-PATH="$GOPATH/bin:$GOROOT/bin:$PATH"
-
-# Check proto in manual runs or cron runs.
-if [[ "$TRAVIS" != "true" || "$TRAVIS_EVENT_TYPE" = "cron" ]]; then
-  check_proto="true"
-fi
-
-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/golang/protobuf/protoc-gen-go \
-    golang.org/x/tools/cmd/stringer
-  if [[ "$check_proto" = "true" ]]; then
-    if [[ "$TRAVIS" = "true" ]]; then
-      PROTOBUF_VERSION=3.3.0
-      PROTOC_FILENAME=protoc-${PROTOBUF_VERSION}-linux-x86_64.zip
-      pushd /home/travis
-      wget https://github.com/google/protobuf/releases/download/v${PROTOBUF_VERSION}/${PROTOC_FILENAME}
-      unzip ${PROTOC_FILENAME}
-      bin/protoc --version
-      popd
-    elif ! which protoc > /dev/null; then
-      die "Please install protoc into your path"
-    fi
-  fi
-  exit 0
-elif [[ "$#" -ne 0 ]]; then
-  die "Unknown argument(s): $*"
-fi
-
-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|_string|\.pb)\.go:" || true) | tee /dev/stderr | (! read)
-
-# Undo any edits made by this script.
-cleanup() {
-  git reset --hard HEAD
-}
-trap cleanup EXIT
-
-# 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 -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) || \
-    (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 ./...
diff --git a/vendor/gopkg.in/yaml.v2/.travis.yml b/vendor/gopkg.in/yaml.v2/.travis.yml
deleted file mode 100644
index 004172a..0000000
--- a/vendor/gopkg.in/yaml.v2/.travis.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-language: go
-
-go:
-    - 1.4
-    - 1.5
-    - 1.6
-    - tip
-
-go_import_path: gopkg.in/yaml.v2
diff --git a/vendor/gopkg.in/yaml.v2/README.md b/vendor/gopkg.in/yaml.v2/README.md
deleted file mode 100644
index 7a512d6..0000000
--- a/vendor/gopkg.in/yaml.v2/README.md
+++ /dev/null
@@ -1,133 +0,0 @@
-# YAML support for the Go language
-
-Introduction
-------------
-
-The yaml package enables Go programs to comfortably encode and decode YAML
-values. It was developed within [Canonical](https://www.canonical.com) as
-part of the [juju](https://juju.ubuntu.com) project, and is based on a
-pure Go port of the well-known [libyaml](http://pyyaml.org/wiki/LibYAML)
-C library to parse and generate YAML data quickly and reliably.
-
-Compatibility
--------------
-
-The yaml package supports most of YAML 1.1 and 1.2, including support for
-anchors, tags, map merging, etc. Multi-document unmarshalling is not yet
-implemented, and base-60 floats from YAML 1.1 are purposefully not
-supported since they're a poor design and are gone in YAML 1.2.
-
-Installation and usage
-----------------------
-
-The import path for the package is *gopkg.in/yaml.v2*.
-
-To install it, run:
-
-    go get gopkg.in/yaml.v2
-
-API documentation
------------------
-
-If opened in a browser, the import path itself leads to the API documentation:
-
-  * [https://gopkg.in/yaml.v2](https://gopkg.in/yaml.v2)
-
-API stability
--------------
-
-The package API for yaml v2 will remain stable as described in [gopkg.in](https://gopkg.in).
-
-
-License
--------
-
-The yaml package is licensed under the Apache License 2.0. Please see the LICENSE file for details.
-
-
-Example
--------
-
-Some more examples can be found in the "examples" folder.
-
-```Go
-package main
-
-import (
-        "fmt"
-        "log"
-
-        "gopkg.in/yaml.v2"
-)
-
-var data = `
-a: Easy!
-b:
-  c: 2
-  d: [3, 4]
-`
-
-type T struct {
-        A string
-        B struct {
-                RenamedC int   `yaml:"c"`
-                D        []int `yaml:",flow"`
-        }
-}
-
-func main() {
-        t := T{}
-    
-        err := yaml.Unmarshal([]byte(data), &t)
-        if err != nil {
-                log.Fatalf("error: %v", err)
-        }
-        fmt.Printf("--- t:\n%v\n\n", t)
-    
-        d, err := yaml.Marshal(&t)
-        if err != nil {
-                log.Fatalf("error: %v", err)
-        }
-        fmt.Printf("--- t dump:\n%s\n\n", string(d))
-    
-        m := make(map[interface{}]interface{})
-    
-        err = yaml.Unmarshal([]byte(data), &m)
-        if err != nil {
-                log.Fatalf("error: %v", err)
-        }
-        fmt.Printf("--- m:\n%v\n\n", m)
-    
-        d, err = yaml.Marshal(&m)
-        if err != nil {
-                log.Fatalf("error: %v", err)
-        }
-        fmt.Printf("--- m dump:\n%s\n\n", string(d))
-}
-```
-
-This example will generate the following output:
-
-```
---- t:
-{Easy! {2 [3 4]}}
-
---- t dump:
-a: Easy!
-b:
-  c: 2
-  d: [3, 4]
-
-
---- m:
-map[a:Easy! b:map[c:2 d:[3 4]]]
-
---- m dump:
-a: Easy!
-b:
-  c: 2
-  d:
-  - 3
-  - 4
-```
-
diff --git a/vendor/upspin.io/.travis.yml b/vendor/upspin.io/.travis.yml
deleted file mode 100644
index b276b92..0000000
--- a/vendor/upspin.io/.travis.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-os:
-- linux
-- osx
-language: go
-go:
-- 1.9.x
-go_import_path: upspin.io
-install: true
-script: go test -short -race ./...
-notifications:
-  email:
-  - upspin-reviews@googlegroups.com
diff --git a/vendor/upspin.io/AUTHORS b/vendor/upspin.io/AUTHORS
index fef38b6..f722f4f 100644
--- a/vendor/upspin.io/AUTHORS
+++ b/vendor/upspin.io/AUTHORS
@@ -10,4 +10,42 @@
 
 # Please keep the list sorted.
 
+Adrian Lopez <adrianlzt@gmail.com>
+Andrew O'Neill <foolusion@gmail.com>
+Benjamin Campbell <i@benjic.me>
+Borja Clemente <borja.clemente@gmail.com>
+Bruce Downs <bruce.downs@jivesoftware.com>
+Carl Henrik Lunde <chlunde@ifi.uio.no>
+Chris Morrow <morrowc@ops-netman.net>
+Christopher Waldon <christopher.waldon.dev@gmail.com>
+Dave Cohen <davecohen10@gmail.com>
+Derek Chiang <derekchiang93@gmail.com>
+Dmitri Shuralyov <shurcooL@gmail.com>
+Emil Hessman <emil@hessman.se>
+Eric Grosse <grosse@gmail.com>
+Fabian Wickborn <fabian@wickborn.net>
+Fazlul Shahriar <fshahriar@gmail.com>
+Frank Rehwinkel <frankrehwinkel@gmail.com>
+Gabriel Aszalos <gabriel.aszalos@gmail.com>
+Gildas Chabot <gildaschbt@gmail.com>
 Google Inc.
+Gurjant Kalsi <gurjantkalsi@gmail.com>
+Jacek Masiulaniec <jacek.masiulaniec@gmail.com>
+Jeff R. Allen <jra@nella.org>
+Kaviraj <kavirajkanagaraj@gmail.com>
+Kris Foster <kris.foster@gmail.com>
+Leon Klingele <git@leonklingele.de>
+Levi Gross <levi@levigross.com>
+Martin Palma <m@palma.bz>
+Mate Hajzso <ajz@lambd.ax>
+Mathieu Lonjaret <mathieu.lonjaret@gmail.com>
+Matt Croydon <mcroydon@gmail.com>
+Michaelian Ennis <mennis@corvus.net>
+Mikkel Oscar Lyderik Larsen <m@moscar.net>
+Nicola Girardi <idrarig.alocin@gmail.com>
+Rene Kaufmann <kaufmann.r@gmail.com>
+Sebastian Zaha <sebastian.zaha@gmail.com>
+Shawn Smith <shawnpsmith@gmail.com>
+Steven Hiscocks <steven@hiscocks.me.uk>
+Stuart Auld <sja@marsupialmusic.net>
+Xiang Li <xiangli.cs@gmail.com>
diff --git a/vendor/upspin.io/CONDUCT.md b/vendor/upspin.io/CONDUCT.md
deleted file mode 100644
index 9ae747a..0000000
--- a/vendor/upspin.io/CONDUCT.md
+++ /dev/null
@@ -1,76 +0,0 @@
-# Contributor Covenant Code of Conduct
-
-## Our Pledge
-
-In the interest of fostering an open and welcoming environment, we as
-contributors and maintainers pledge to making participation in our project and
-our community a harassment-free experience for everyone, regardless of age, body
-size, disability, ethnicity, gender identity and expression, level of experience,
-nationality, personal appearance, race, religion, or sexual identity and
-orientation.
-
-## Our Standards
-
-Examples of behavior that contributes to creating a positive environment
-include:
-
-* Using welcoming and inclusive language
-* Being respectful of differing viewpoints and experiences
-* Gracefully accepting constructive criticism
-* Focusing on what is best for the community
-* Showing empathy towards other community members
-
-Examples of unacceptable behavior by participants include:
-
-* The use of sexualized language or imagery and unwelcome sexual attention or
-advances
-* Trolling, insulting/derogatory comments, and personal or political attacks
-* Public or private harassment
-* Publishing others' private information, such as a physical or electronic
-  address, without explicit permission
-* Other conduct which could reasonably be considered inappropriate in a
-  professional setting
-
-## Our Responsibilities
-
-Project maintainers are responsible for clarifying the standards of acceptable
-behavior and are expected to take appropriate and fair corrective action in
-response to any instances of unacceptable behavior.
-
-Project maintainers have the right and responsibility to remove, edit, or
-reject comments, commits, code, wiki edits, issues, and other contributions
-that are not aligned to this Code of Conduct, or to ban temporarily or
-permanently any contributor for other behaviors that they deem inappropriate,
-threatening, offensive, or harmful.
-
-## Scope
-
-This Code of Conduct applies both within project spaces and in public spaces
-when an individual is representing the project or its community. Examples of
-representing a project or community include using an official project e-mail
-address, posting via an official social media account, or acting as an appointed
-representative at an online or offline event. Representation of a project may be
-further defined and clarified by project maintainers.
-
-## Enforcement
-
-Instances of abusive, harassing, or otherwise unacceptable behavior may be
-reported by privately contacting the project team at
-[upspin-team@googlegroups.com](mailto:upspin-team@googlegroups.com).
-All complaints will be reviewed and investigated and will result in a response
-that is deemed necessary and appropriate to the circumstances. The project team
-is obligated to maintain confidentiality with regard to the reporter of an
-incident. Further details of specific enforcement policies may be posted
-separately.
-
-Project maintainers who do not follow or enforce the Code of Conduct in good
-faith may face temporary or permanent repercussions as determined by other
-members of the project's leadership.
-
-## Attribution
-
-This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
-available at [http://contributor-covenant.org/version/1/4][version]
-
-[homepage]: http://contributor-covenant.org
-[version]: http://contributor-covenant.org/version/1/4/
diff --git a/vendor/upspin.io/CONTRIBUTING.md b/vendor/upspin.io/CONTRIBUTING.md
deleted file mode 100644
index f6ed4ee..0000000
--- a/vendor/upspin.io/CONTRIBUTING.md
+++ /dev/null
@@ -1,47 +0,0 @@
-# Contributing to Upspin
-
-Upspin is an open source project.
-
-It is the work of many contributors. We appreciate your help!
-
-
-## Filing issues
-
-When filing an issue, make sure to answer these five questions:
-
-1. What version of Upspin are you using?
-2. What operating system and processor architecture are you using?
-3. What did you do?
-4. What did you expect to see?
-5. What did you see instead?
-
-Sensitive security-related issues should be reported to the private
-[upspin-security@googlegroups.com](mailto:upspin-security@googlegroups.com)
-mailing list.
-
-
-## Contributing code
-
-We do not use GitHub pull requests
-(we use [an instance](https://upspin-review.googlesource.com/) of the
-[Gerrit](https://www.gerritcodereview.com/) code review system instead).
-
-Our code review process is the same as that used by the Go project.
-Please read the Code Review section of
-[Go's Contribution Guidelines](https://golang.org/doc/contribute.html#Code_review)
-to learn how to send patches to Upspin.
-That document covers registering with
-[our Gerrit instance]((https://upspin-review.googlesource.com/)),
-configuring the `git-codereview` tool,
-signing a Contributor License Agreement,
-and the process of creating, reviewing, and submitting changes.
-
-Unless otherwise noted, the Upspin source files are distributed under
-the BSD-style license found in the LICENSE file.
-
-
-## Code of Conduct
-
-Please note that this project is released with a [Contributor Code of Conduct](CONDUCT.md).
-By participating in this project you agree to abide by its terms.
-
diff --git a/vendor/upspin.io/CONTRIBUTORS b/vendor/upspin.io/CONTRIBUTORS
index 95c922b..0a2a9a2 100644
--- a/vendor/upspin.io/CONTRIBUTORS
+++ b/vendor/upspin.io/CONTRIBUTORS
@@ -32,11 +32,54 @@
 
 # Please keep the list sorted.
 
+Adrian Lopez <adrianlzt@gmail.com>
 Andrew Bonventre <andybons@gmail.com>
 Andrew Gerrand <adg@golang.org>
+Andrew Lytvynov <awly@google.com>
+Andrew O'Neill <foolusion@gmail.com>
+Andy Bursavich <bursavich@google.com>
+Axel Wagner <axel.wagner.hh@googlemail.com>
+Benjamin Campbell <i@benjic.me>
+Borja Clemente <borja.clemente@gmail.com>
+Bruce Downs <bruce.downs@jivesoftware.com>
+Carl Henrik Lunde <chlunde@ifi.uio.no>
+Chris Morrow <morrowc@ops-netman.net>
+Christopher Waldon <christopher.waldon.dev@gmail.com>
+Dave Cohen <davecohen10@gmail.com>
 David Presotto <presotto@gmail.com>
+Derek Chiang <derekchiang93@gmail.com>
+Dmitri Shuralyov <shurcooL@gmail.com>
 Ed Knapp <edknapp@google.com>
 Eduardo Pinheiro <edpin@edpin.com>
+Emil Hessman <emil@hessman.se>
 Eric Grosse <grosse@gmail.com>
-Rob Pike <r@golang.org>
+Fabian Wickborn <fabian@wickborn.net>
+Fazlul Shahriar <fshahriar@gmail.com>
+Frank Rehwinkel <frankrehwinkel@gmail.com>
+Gabriel Aszalos <gabriel.aszalos@gmail.com>
+Gildas Chabot <gildaschbt@gmail.com>
+Gurjant Kalsi <gurjantkalsi@gmail.com>
+Jacek Masiulaniec <jacek.masiulaniec@gmail.com>
+Jeff R. Allen <jra@nella.org>
+Kaviraj <kavirajkanagaraj@gmail.com>
+Kris Foster <kris.foster@gmail.com>
+Leon Klingele <git@leonklingele.de>
+Levi Gross <levi@levigross.com>
+Martin Palma <m@palma.bz>
+Mate Hajzso <ajz@lambd.ax>
+Mathieu Lonjaret <mathieu.lonjaret@gmail.com>
+Matt Croydon <mcroydon@gmail.com>
+Michaelian Ennis <mennis@corvus.net>
+Michael Stapelberg <stapelberg@google.com>
+Mikkel Oscar Lyderik Larsen <m@moscar.net>
+Nate Rosenblum <natr@google.com>
+Nicola Girardi <idrarig.alocin@gmail.com>
 Quan Nguyen <quannguyen@google.com>
+Rene Kaufmann <kaufmann.r@gmail.com>
+Rob Pike <r@golang.org>
+Ross Light <light@google.com>
+Sebastian Zaha <sebastian.zaha@gmail.com>
+Shawn Smith <shawnpsmith@gmail.com>
+Steven Hiscocks <steven@hiscocks.me.uk>
+Stuart Auld <sja@marsupialmusic.net>
+Xiang Li <xiangli.cs@gmail.com>
diff --git a/vendor/upspin.io/Gopkg.lock b/vendor/upspin.io/Gopkg.lock
deleted file mode 100644
index be77bcb..0000000
--- a/vendor/upspin.io/Gopkg.lock
+++ /dev/null
@@ -1,57 +0,0 @@
-# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'.
-
-
-[[projects]]
-  branch = "master"
-  name = "bazil.org/fuse"
-  packages = [".","fs","fuseutil"]
-  revision = "371fbbdaa8987b715bdd21d6adc4c9b20155f748"
-
-[[projects]]
-  branch = "master"
-  name = "github.com/NYTimes/gziphandler"
-  packages = ["."]
-  revision = "97ae7fbaf81620fe97840685304a78a306a39c64"
-
-[[projects]]
-  branch = "master"
-  name = "github.com/golang/protobuf"
-  packages = ["proto"]
-  revision = "1643683e1b54a9e88ad26d98f81400c8c9d9f4f9"
-
-[[projects]]
-  branch = "master"
-  name = "github.com/russross/blackfriday"
-  packages = ["."]
-  revision = "6d1ef893fcb01b4f50cb6e57ed7df3e2e627b6b2"
-
-[[projects]]
-  branch = "master"
-  name = "golang.org/x/crypto"
-  packages = ["acme","acme/autocert","hkdf"]
-  revision = "13931e22f9e72ea58bb73048bc752b48c6d4d4ac"
-
-[[projects]]
-  branch = "master"
-  name = "golang.org/x/net"
-  packages = ["context"]
-  revision = "4b14673ba32bee7f5ac0f990a48f033919fd418b"
-
-[[projects]]
-  branch = "master"
-  name = "golang.org/x/text"
-  packages = ["cases","internal","internal/gen","internal/tag","internal/triegen","internal/ucd","language","runes","secure/bidirule","secure/precis","transform","unicode/bidi","unicode/cldr","unicode/norm","unicode/rangetable","width"]
-  revision = "6eab0e8f74e86c598ec3b6fad4888e0c11482d48"
-
-[[projects]]
-  branch = "v2"
-  name = "gopkg.in/yaml.v2"
-  packages = ["."]
-  revision = "eb3733d160e74a9c7e442f435eb3bea458e1d19f"
-
-[solve-meta]
-  analyzer-name = "dep"
-  analyzer-version = 1
-  inputs-digest = "2246e647ba1c78b0b9f948f9fb072fff1467284fb138709c063e99736f646b90"
-  solver-name = "gps-cdcl"
-  solver-version = 1
diff --git a/vendor/upspin.io/Gopkg.toml b/vendor/upspin.io/Gopkg.toml
deleted file mode 100644
index df6c92d..0000000
--- a/vendor/upspin.io/Gopkg.toml
+++ /dev/null
@@ -1,34 +0,0 @@
-# golang.org/x/text/gen.go imports this package; we don't depend on it.
-ignored = ["golang.org/x/text/collate"]
-
-[[constraint]]
-  branch = "master"
-  name = "bazil.org/fuse"
-
-[[constraint]]
-  branch = "master"
-  name = "github.com/NYTimes/gziphandler"
-
-[[constraint]]
-  branch = "master"
-  name = "github.com/russross/blackfriday"
-
-[[constraint]]
-  branch = "master"
-  name = "github.com/golang/protobuf"
-
-[[constraint]]
-  branch = "master"
-  name = "golang.org/x/crypto"
-
-[[constraint]]
-  branch = "master"
-  name = "golang.org/x/net"
-
-[[constraint]]
-  branch = "master"
-  name = "golang.org/x/text"
-
-[[constraint]]
-  branch = "v2"
-  name = "gopkg.in/yaml.v2"
diff --git a/vendor/upspin.io/README.binary b/vendor/upspin.io/README.binary
deleted file mode 100644
index ce30f8a..0000000
--- a/vendor/upspin.io/README.binary
+++ /dev/null
@@ -1,47 +0,0 @@
-{{/* This file is interpreted as a template by serverutil/frontend/download.go. */}}
-Upspin
-
-Documentation: https://upspin.io/
-
-Upspin is an experimental project to build a framework for naming
-and sharing files and other data securely, uniformly, and globally:
-a global name system of sorts.
-
-It is not a file system, but a set of protocols and reference
-implementations that can be used to join things like file systems
-and other storage services to the name space.
-
-Performance is not a primary goal. Uniformity and security are.
-
-Tools included in this archive:
-
-upspin
-	The upspin command provides utilities for creating and
-	administering Upspin files, users, and servers.
-
-	https://godoc.org/upspin.io/cmd/upspin
-
-upspin-ui
-	The upspin-ui command presents a web interface to the Upspin name
-	space, and also provides a facility to sign up an Upspin user and
-	deploy an upspinserver to Google Cloud Platform.
-
-	https://godoc.org/augie.upspin.io/cmd/upspin-ui
-
-cacheserver
-	The cacheserver command implements a directory
-	and storage cache for Upspin.
-
-	https://godoc.org/upspin.io/cmd/cacheserver
-
-upspinfs (Linux and macOS only)
-	The upspinfs command is a FUSE interface for Upspin.
-
-	https://godoc.org/upspin.io/cmd/upspinfs
-
-upspin-audit
-	Audit provides subcommands for auditing storage consumption.
-
-	https://godoc.org/upspin.io/cmd/upspin-audit
-
-These binaries were built for {{.OSArch}} at{{range .Commits}} {{.Repo}}/{{.ShortHash}}{{end}}.
diff --git a/vendor/upspin.io/README.md b/vendor/upspin.io/README.md
deleted file mode 100644
index 9c3838c..0000000
--- a/vendor/upspin.io/README.md
+++ /dev/null
@@ -1,64 +0,0 @@
-# Upspin
-
-![Augie](doc/images/augie.jpg)
-
-Documentation: [upspin.io](https://upspin.io/)
-
-## About the project
-
-Upspin is an experimental project to build a framework for naming
-and sharing files and other data securely, uniformly, and globally:
-a global name system of sorts.
-
-It is not a file system, but a set of protocols and reference
-implementations that can be used to join things like file systems
-and other storage services to the name space.
-
-Performance is not a primary goal. Uniformity and security are.
-
-Upspin is not an official Google product.
-
-
-## Status
-
-Upspin has rough edges, and is not yet suitable for non-technical users.
-
-[![Build Status](https://travis-ci.org/upspin/upspin.svg?branch=master)](https://travis-ci.org/upspin/upspin)
-
-
-## Contributing
-
-The code repository lives at
-[upspin.googlesource.com](https://upspin.googlesource.com)
-and is mirrored to [GitHub](https://github.com/upspin/upspin).
-
-Note that the Upspin project does not use GitHub pull requests, and
-that we use the issue tracker for bug reports and proposals only.
-
-See the [Contribution Guidelines](CONTRIBUTING.md)
-for more information on contributing to the project.
-
-
-### Reporting issues
-
-Please report issues through
-[our issue tracker](https://github.com/upspin/upspin/issues).
-
-
-## Community
-
-All Upspin users should subscribe to the
-[Upspin Announcements mailing list](https://groups.google.com/forum/#!forum/upspin-announce)
-to receive critical information about the project.
-
-Use the [Upspin mailing list](https://groups.google.com/forum/#!forum/upspin)
-for discussion about Upspin use and development.
-
-
-### Code of Conduct
-
-Please note that this project is released with a [Contributor Code of Conduct](CONDUCT.md).
-By participating in this project you agree to abide by its terms.
-
-
-The Upspin mascot is Copyright 2017 Renee French. [All Rights Reserved](doc/mascot.md).
diff --git a/vendor/upspin.io/bind/bind.go b/vendor/upspin.io/bind/bind.go
index 23cb07c..df82cf7 100644
--- a/vendor/upspin.io/bind/bind.go
+++ b/vendor/upspin.io/bind/bind.go
@@ -14,8 +14,9 @@
 )
 
 type dialKey struct {
-	user     upspin.UserName
-	endpoint upspin.Endpoint
+	user        upspin.UserName
+	endpoint    upspin.Endpoint
+	cacheserver upspin.Endpoint
 }
 
 type dialers map[upspin.Transport]upspin.Dialer
@@ -155,7 +156,7 @@
 // reachableService finds a bound and reachable service in the cache or dials a
 // fresh one and saves it in the cache.
 func (s *servers) reachableService(cc upspin.Config, e upspin.Endpoint) (upspin.Service, error) {
-	key := dialKey{user: cc.UserName(), endpoint: e}
+	key := dialKey{user: cc.UserName(), endpoint: e, cacheserver: cc.CacheEndpoint()}
 	s.mu.Lock()
 	defer s.mu.Unlock()
 	service, cached := s.services[key]
@@ -183,9 +184,3 @@
 func (s *servers) serverOp() errors.Op {
 	return errors.Op("bind." + s.kind + "Server") // "bind.KeyServer"
 }
-
-// NoCache supresses the caching of dial results. This was added for
-// debugging.
-func NoCache() {
-	noCache = true
-}
diff --git a/vendor/upspin.io/client/client.go b/vendor/upspin.io/client/client.go
index ab67b2e..b082513 100644
--- a/vendor/upspin.io/client/client.go
+++ b/vendor/upspin.io/client/client.go
@@ -412,19 +412,6 @@
 	return readers, nil
 }
 
-// isReadableByAll returns true if all@upspin.io has read rights.
-// The default is false, for example if there are any errors in reading Access.
-// The access package restricts where the "all" word can appear; here we
-// trust that it has done its job.
-func (c *Client) isReadableByAll(readers []upspin.UserName) bool {
-	for _, reader := range readers {
-		if reader == access.AllUsers {
-			return true
-		}
-	}
-	return false
-}
-
 func makeDirectoryLookupFn(dir upspin.DirServer, entry *upspin.DirEntry, s *metric.Span) (*upspin.DirEntry, error) {
 	defer s.StartSpan("dir.makeDirectory").End()
 	entry.SignedName = entry.Name // Make sure they match as we step through links.
@@ -790,7 +777,7 @@
 
 	packer := pack.Lookup(entry.Packing)
 	if packer == nil {
-		return nil, errors.E(op, oldName, errors.Invalid, errors.Errorf("unrecognized Packing %d", c.config.Packing()))
+		return nil, errors.E(op, oldName, errors.Invalid, errors.Errorf("unrecognized Packing %d", entry.Packing))
 	}
 	if access.IsAccessControlFile(newName) {
 		return nil, errors.E(op, newName, errors.Invalid, "Access or Group files cannot be renamed")
diff --git a/vendor/upspin.io/cloud/https/https.go b/vendor/upspin.io/cloud/https/https.go
index d19e68f..3b8b501 100644
--- a/vendor/upspin.io/cloud/https/https.go
+++ b/vendor/upspin.io/cloud/https/https.go
@@ -213,6 +213,7 @@
 	}
 	shutdown.Handle(func() { ln.Close() })
 
+	httpLogger := log.NewStdLogger(log.Info)
 	if manager.Cache != nil {
 		// If we're using LetsEncrypt then we need to serve the http-01
 		// challenge by plain HTTP. We also serve a redirect to HTTPS
@@ -222,7 +223,10 @@
 			log.Fatalf("https: %v", err)
 		}
 		shutdown.Handle(func() { httpLn.Close() })
-		httpServer := &http.Server{Handler: manager.HTTPHandler(nil)}
+		httpServer := &http.Server{
+			Handler:  manager.HTTPHandler(nil),
+			ErrorLog: httpLogger,
+		}
 		go func() {
 			err := httpServer.Serve(httpLn)
 			log.Printf("https: %v", err)
@@ -250,6 +254,7 @@
 		WriteTimeout: 0,
 		IdleTimeout:  60 * time.Second,
 		TLSConfig:    config,
+		ErrorLog:     httpLogger,
 	}
 	// TODO(adg): enable HTTP/2 once it's fast enough
 	//err := http2.ConfigureServer(server, nil)
diff --git a/vendor/upspin.io/config/initconfig.go b/vendor/upspin.io/config/initconfig.go
index 98b002b..ac6e065 100644
--- a/vendor/upspin.io/config/initconfig.go
+++ b/vendor/upspin.io/config/initconfig.go
@@ -41,6 +41,7 @@
 func (base) KeyEndpoint() upspin.Endpoint   { return defaultKeyEndpoint }
 func (base) DirEndpoint() upspin.Endpoint   { return upspin.Endpoint{} }
 func (base) StoreEndpoint() upspin.Endpoint { return upspin.Endpoint{} }
+func (base) CacheEndpoint() upspin.Endpoint { return upspin.Endpoint{} }
 func (base) Value(string) string            { return "" }
 
 // New returns a config with all fields set as defaults.
@@ -65,6 +66,7 @@
 	storeserver = "storeserver"
 	packing     = "packing"
 	secrets     = "secrets"
+	cache       = "cache"
 )
 
 // ErrNoFactotum indicates that the returned config contains no Factotum, and
@@ -134,6 +136,7 @@
 		keyserver:   defaultKeyEndpoint.String(),
 		dirserver:   "",
 		storeserver: "",
+		cache:       "",
 	}
 	other := make(map[string]interface{})
 
@@ -208,6 +211,7 @@
 	cfg = SetKeyEndpoint(cfg, parseEndpoint(op, vals, keyserver, &err))
 	cfg = SetStoreEndpoint(cfg, parseEndpoint(op, vals, storeserver, &err))
 	cfg = SetDirEndpoint(cfg, parseEndpoint(op, vals, dirserver, &err))
+	cfg = parseCacheValue(op, cfg, vals, &err)
 
 	valueMap := make(map[string]string)
 	for k, v := range other {
@@ -291,6 +295,34 @@
 	return *ep
 }
 
+// parseCacheValue parses the cache value and returns a config containing the cacheserver endpoint.
+func parseCacheValue(op errors.Op, cfg upspin.Config, vals map[string]string, errorp *error) upspin.Config {
+	text := vals["cache"]
+	switch text {
+	case "", "n", "no", "false":
+		// nothing to do
+	case "y", "yes", "true":
+		name := "remote," + LocalName(cfg, "cacheserver") + ":80"
+		ep, err := upspin.ParseEndpoint(name)
+		if err != nil {
+			*errorp = errors.E(op, errors.Errorf("cannot parse cache value %q: %v", text, err))
+			break
+		}
+		cfg = SetCacheEndpoint(cfg, *ep)
+	default:
+		if !strings.Contains(text, ",") {
+			text = "remote," + text
+		}
+		ep, err := upspin.ParseEndpoint(text)
+		if err != nil {
+			*errorp = errors.E(op, errors.Errorf("cannot parse cache value %q: %v", text, err))
+			break
+		}
+		cfg = SetCacheEndpoint(cfg, *ep)
+	}
+	return cfg
+}
+
 type cfgUserName struct {
 	upspin.Config
 	userName upspin.UserName
@@ -399,6 +431,24 @@
 	}
 }
 
+type cfgCacheEndpoint struct {
+	upspin.Config
+	cacheEndpoint upspin.Endpoint
+}
+
+func (cfg cfgCacheEndpoint) CacheEndpoint() upspin.Endpoint {
+	return cfg.cacheEndpoint
+}
+
+// SetDirEndpoint returns a config derived from the given config
+// with the given dir endpoint.
+func SetCacheEndpoint(cfg upspin.Config, e upspin.Endpoint) upspin.Config {
+	return cfgCacheEndpoint{
+		Config:        cfg,
+		cacheEndpoint: e,
+	}
+}
+
 type cfgValue struct {
 	upspin.Config
 	key, val string
diff --git a/vendor/upspin.io/config/localname.go b/vendor/upspin.io/config/localname.go
new file mode 100644
index 0000000..e8c8e09
--- /dev/null
+++ b/vendor/upspin.io/config/localname.go
@@ -0,0 +1,33 @@
+// Copyright 2016 The Upspin 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 config
+
+import (
+	"fmt"
+	"net"
+	"strings"
+
+	"upspin.io/upspin"
+)
+
+const localSuffix = ".localhost."
+
+// LocalName constructs the host local name for a service.
+func LocalName(config upspin.Config, service string) string {
+	s := fmt.Sprintf("%s.%s%s", config.UserName(), service, localSuffix)
+	return strings.Replace(s, "@", ".", 1)
+}
+
+// IsLocal returns true if the address is host local.
+func IsLocal(address string) bool {
+	h, _, err := net.SplitHostPort(address)
+	if err != nil {
+		h = address
+	}
+	if !strings.HasSuffix(h, localSuffix) {
+		return false
+	}
+	return true
+}
diff --git a/vendor/upspin.io/dir/remote/remote.go b/vendor/upspin.io/dir/remote/remote.go
index 52dc0f3..6aefd12 100644
--- a/vendor/upspin.io/dir/remote/remote.go
+++ b/vendor/upspin.io/dir/remote/remote.go
@@ -180,11 +180,8 @@
 
 func dialCache(config upspin.Config, proxyFor upspin.Endpoint) (upspin.Service, error) {
 	// Are we using a cache?
-	ce, err := rpc.CacheEndpoint(config)
-	if err != nil {
-		return nil, err
-	}
-	if ce == nil {
+	ce := config.CacheEndpoint()
+	if ce.Unassigned() {
 		return nil, nil
 	}
 
diff --git a/vendor/upspin.io/dir/server/serverlog/log.go b/vendor/upspin.io/dir/server/serverlog/log.go
index 11e0ef2..e326aae 100644
--- a/vendor/upspin.io/dir/server/serverlog/log.go
+++ b/vendor/upspin.io/dir/server/serverlog/log.go
@@ -195,7 +195,7 @@
 
 func (r *root) saveLoop(s storage.Storage) {
 	defer close(r.saveDone)
-	for _ = range r.saveRoot {
+	for range r.saveRoot {
 		r.mu.Lock()
 		buf := r.root
 		r.mu.Unlock()
@@ -317,12 +317,12 @@
 		// Must create new file with current version.
 		// We can only write to files with the latest version.
 		file := u.files[last]
-		size, err := sizeOfFile(file.name)
+		var size int64
+		size, err = sizeOfFile(file.name)
 		if err != nil {
 			break
 		}
 		_, fd, err = u.createLogFile(file.offset + size)
-		fd, err = os.OpenFile(u.files[len(u.files)-1].name, os.O_APPEND|os.O_WRONLY, 0600)
 	case u.files[last].version > version:
 		// Cannot happen!
 		return nil, errors.E(errors.Internal, errors.Errorf("bad version number for log file %q", u.files[last].name))
diff --git a/vendor/upspin.io/dir/server/tree/blocks.go b/vendor/upspin.io/dir/server/tree/blocks.go
index 5156693..01c7791 100644
--- a/vendor/upspin.io/dir/server/tree/blocks.go
+++ b/vendor/upspin.io/dir/server/tree/blocks.go
@@ -84,11 +84,7 @@
 			return err
 		}
 	}
-	err = bp.Close()
-	if err != nil {
-		return err
-	}
-	return nil
+	return bp.Close()
 }
 
 // storeBlock stores a single block of data to the StoreServer as part of a block packing operation.
diff --git a/vendor/upspin.io/dir/server/tree/tree.go b/vendor/upspin.io/dir/server/tree/tree.go
index 5b1f02f..cc84f56 100644
--- a/vendor/upspin.io/dir/server/tree/tree.go
+++ b/vendor/upspin.io/dir/server/tree/tree.go
@@ -782,11 +782,7 @@
 		logEntry, next, err := lrd.ReadAt(curr)
 		if err != nil {
 			log.Error.Printf("recoverFromLog: Error in log recovery, possible data loss at offset %d: %s", lastProcessed, err)
-			err = t.user.Truncate(curr)
-			if err != nil {
-				return err
-			}
-			return nil
+			return t.user.Truncate(curr)
 		}
 		if next == curr {
 			break
diff --git a/vendor/upspin.io/log/log.go b/vendor/upspin.io/log/log.go
index a73abe8..ae4644b 100644
--- a/vendor/upspin.io/log/log.go
+++ b/vendor/upspin.io/log/log.go
@@ -7,6 +7,7 @@
 package log // import "upspin.io/log"
 
 import (
+	"bytes"
 	"fmt"
 	"io"
 	"log"
@@ -80,6 +81,38 @@
 	return log.New(w, "", log.Ldate|log.Ltime|log.LUTC|log.Lmicroseconds)
 }
 
+// logBridge augments the Logger type with the io.Writer interface enabling
+// NewStdLogger to connect Go's standard library logger to the logger provided
+// by this package.
+type logBridge struct {
+	Logger
+}
+
+// Write parses the standard logging line (configured with log.Lshortfile) and
+// passes its message component to the logger provided by this package.
+func (lb logBridge) Write(b []byte) (n int, err error) {
+	var message string
+	// Split "f.go:42: message" into "f.go", "42", and "message".
+	parts := bytes.SplitN(b, []byte{':'}, 3)
+	if len(parts) != 3 || len(parts[0]) < 1 || len(parts[2]) < 1 {
+		message = fmt.Sprintf("bad log format: %s", b)
+	} else {
+		message = string(parts[2][1:]) // Skip leading space.
+	}
+	lb.Print(message)
+	return len(b), nil
+}
+
+// NewStdLogger creates a *log.Logger ("log" is from the Go standard library)
+// that forwards messages to the provided upspin logger using a logBridge. The
+// standard logger is configured with log.Lshortfile, this log line
+// format which is parsed to extract the log message (skipping the filename,
+// line number) to forward it to the provided upspin logger.
+func NewStdLogger(l Logger) *log.Logger {
+	lb := logBridge{l}
+	return log.New(lb, "", log.Lshortfile)
+}
+
 // Register connects an ExternalLogger to the default logger. This may only be
 // called once.
 func Register(e ExternalLogger) {
diff --git a/vendor/upspin.io/pack/ee/ee.go b/vendor/upspin.io/pack/ee/ee.go
index 60443ad..52f3c79 100644
--- a/vendor/upspin.io/pack/ee/ee.go
+++ b/vendor/upspin.io/pack/ee/ee.go
@@ -58,7 +58,6 @@
 	errNoWrappedKey     = errors.Str("no wrapped key for me")
 	errKeyLength        = errors.Str("wrong key length for AES-256")
 	errSignedNameNotSet = errors.Str("empty SignedName")
-	sig0                upspin.Signature // for returning error of correct type
 )
 
 var errNotOnCurve = errors.Str("a crypto attack was attempted against you; see safecurves.cr.yp.to/twist.html for details")
diff --git a/vendor/upspin.io/rpc/cache.go b/vendor/upspin.io/rpc/cache.go
deleted file mode 100644
index 6db03d8..0000000
--- a/vendor/upspin.io/rpc/cache.go
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2016 The Upspin 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 rpc
-
-import (
-	"strings"
-
-	"upspin.io/errors"
-	"upspin.io/rpc/local"
-	"upspin.io/upspin"
-)
-
-func CacheEndpoint(cfg upspin.Config) (*upspin.Endpoint, error) {
-	const op errors.Op = "rpc.CacheEndpoint"
-
-	v := cfg.Value("cache")
-	switch v {
-	case "", "n", "no", "false":
-		return nil, nil
-	case "y", "yes", "true":
-		name := "remote," + local.LocalName(cfg, "cacheserver") + ":80"
-		ep, err := upspin.ParseEndpoint(name)
-		if err != nil {
-			return nil, errors.E(op, errors.Internal, err)
-		}
-		return ep, nil
-	default:
-		if !strings.Contains(v, ",") {
-			v = "remote," + v
-		}
-		ep, err := upspin.ParseEndpoint(v)
-		if err != nil {
-			return nil, errors.E(op, errors.Invalid, err)
-		}
-		return ep, nil
-	}
-}
diff --git a/vendor/upspin.io/rpc/local/local.go b/vendor/upspin.io/rpc/local/local.go
index d665ce9..5d1217f 100644
--- a/vendor/upspin.io/rpc/local/local.go
+++ b/vendor/upspin.io/rpc/local/local.go
@@ -7,39 +7,17 @@
 
 import (
 	"context"
-	"fmt"
 	"net"
-	"strings"
 
-	"upspin.io/upspin"
+	"upspin.io/config"
 )
 
-const localSuffix = ".localhost."
-
 type Dialer net.Dialer
 
-// LocalName constructs the host local name for a service.
-func LocalName(config upspin.Config, service string) string {
-	s := fmt.Sprintf("%s.%s%s", config.UserName(), service, localSuffix)
-	return strings.Replace(s, "@", ".", 1)
-}
-
-// IsLocal returns true if the address is host local.
-func IsLocal(address string) bool {
-	h, _, err := net.SplitHostPort(address)
-	if err != nil {
-		h = address
-	}
-	if !strings.HasSuffix(h, localSuffix) {
-		return false
-	}
-	return true
-}
-
 // DialContext dials a service. Use it instead of the standard net.DialContext
 // to use a local IPC for host names ending in localSuffix.
 func (d *Dialer) DialContext(ctx context.Context, network, address string) (net.Conn, error) {
-	if IsLocal(address) {
+	if config.IsLocal(address) {
 		return d.DialContextLocal(ctx, network, address)
 	}
 	nd := net.Dialer(*d)
@@ -49,7 +27,7 @@
 // Listen listens for calls to a service. Use it instead of the standard net.Listen
 // to use a local IPC for host names ending in localSuffix.
 func Listen(network, address string) (net.Listener, error) {
-	if IsLocal(address) {
+	if config.IsLocal(address) {
 		return ListenLocal(address)
 	}
 	return net.Listen(network, address)
diff --git a/vendor/upspin.io/serverutil/addr.go b/vendor/upspin.io/serverutil/addr.go
index 9c16a8c..180d5bc 100644
--- a/vendor/upspin.io/serverutil/addr.go
+++ b/vendor/upspin.io/serverutil/addr.go
@@ -7,7 +7,7 @@
 import (
 	"net"
 
-	"upspin.io/rpc/local"
+	"upspin.io/config"
 )
 
 // IsLoopback returns true if the name only resolves to loopback addresses.
@@ -20,7 +20,7 @@
 		return true
 	}
 	// Check for local IPC.
-	if local.IsLocal(host) {
+	if config.IsLocal(host) {
 		return true
 	}
 	// Check for loopback network.
diff --git a/vendor/upspin.io/store/.gitignore b/vendor/upspin.io/store/.gitignore
deleted file mode 100644
index 19b887e..0000000
--- a/vendor/upspin.io/store/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-*~
-c.out
diff --git a/vendor/upspin.io/store/remote/remote.go b/vendor/upspin.io/store/remote/remote.go
index 75fcb4e..3972822 100644
--- a/vendor/upspin.io/store/remote/remote.go
+++ b/vendor/upspin.io/store/remote/remote.go
@@ -127,11 +127,8 @@
 
 func dialCache(config upspin.Config, proxyFor upspin.Endpoint) (upspin.Service, error) {
 	// Are we using a cache?
-	ce, err := rpc.CacheEndpoint(config)
-	if err != nil {
-		return nil, err
-	}
-	if ce == nil {
+	ce := config.CacheEndpoint()
+	if ce.Unassigned() {
 		return nil, nil
 	}
 
diff --git a/vendor/upspin.io/upspin/code.go b/vendor/upspin.io/upspin/code.go
index b141c65..4aab6cd 100644
--- a/vendor/upspin.io/upspin/code.go
+++ b/vendor/upspin.io/upspin/code.go
@@ -402,29 +402,6 @@
 	return cons.remainder()
 }
 
-// getBytes unmarshals the byte slice at b (varint count followed by bytes)
-// and returns the slice followed by the remaining bytes.
-// If there is insufficient data, both return values will be nil.
-func getBytes(b []byte) (data, remaining []byte) {
-	u, n := binary.Varint(b)
-	// If n <= 0, Varint returned an error. Otherwise we know n <= len(b).
-	// We also test that u is good and u bytes remain in the buffer after the count.
-	if n <= 0 || u < 0 || len(b[n:]) < int(u) {
-		return nil, nil
-	}
-	return getNBytes(b[n:], int(u))
-}
-
-// getNBytes unmarshals n bytes from b and returns the slice followed by the
-// remaining bytes. If there is insufficient data, both return values will be
-// nil.
-func getNBytes(b []byte, n int) (data, remaining []byte) {
-	if len(b) < n {
-		return nil, nil
-	}
-	return b[:n], b[n:]
-}
-
 // String returns a default string representation of the time,
 // in the format similar to RFC 3339: "2006-01-02T15:04:05 UTC"
 // The time zone is always UTC.
diff --git a/vendor/upspin.io/upspin/endpoint.go b/vendor/upspin.io/upspin/endpoint.go
index cbad03a..92eda5a 100644
--- a/vendor/upspin.io/upspin/endpoint.go
+++ b/vendor/upspin.io/upspin/endpoint.go
@@ -98,3 +98,8 @@
 	*ep = *p
 	return nil
 }
+
+// Unassigned (sic) reports whether the endpoint is nil or has value Unassigned.
+func (ep *Endpoint) Unassigned() bool {
+	return ep == nil || ep.Transport == Unassigned
+}
diff --git a/vendor/upspin.io/upspin/proto/README b/vendor/upspin.io/upspin/proto/README
deleted file mode 100644
index 80472c4..0000000
--- a/vendor/upspin.io/upspin/proto/README
+++ /dev/null
@@ -1,23 +0,0 @@
-The upspin.io/upspin/proto package is generated from the upspin.proto file.
-
-To generate it, you need protoc 3.1.0 or later and the protoc-gen-go tools.
-
-Download the protoc build (version 3.x) for your platform
-and put it in your PATH.
-
-	https://github.com/google/protobuf/releases
-
-Use 'go get' to install the latest protoc-gen-go
-(git hash 6a1fa94 at time of writing, June 2017):
-
-	$ go get -u github.com/golang/protobuf/protoc-gen-go
-
-Then, run 'go generate' from this directory to re-generate the package:
-
-	$ go generate
-
-If you encounter unexpected diffs, such as changes to the
-"ProtoPackageIsVersion3" constants, then you may be using the wrong versions of
-protoc or protoc-gen-go.
-To debug, run 'which protoc' and 'which protoc-gen-go' and check that the
-commands in your path are the ones you just installed.
diff --git a/vendor/upspin.io/upspin/proto/upspin.proto b/vendor/upspin.io/upspin/proto/upspin.proto
deleted file mode 100644
index 8f8c59b..0000000
--- a/vendor/upspin.io/upspin/proto/upspin.proto
+++ /dev/null
@@ -1,174 +0,0 @@
-// Copyright 2016 The Upspin Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto3";
-
-package proto;
-
-// See proto.go for a description of these protocol buffers.
-
-// Endpoint mirrors upspin.Endpoint.
-message Endpoint {
-    int32 transport = 1;
-    string net_addr = 2;
-}
-
-// Location mirrors upspin.Location.
-message Location {
-    Endpoint endpoint = 1;
-    string reference = 2;
-}
-
-// Refdata mirrors upspin.Refdata.
-message Refdata {
-    string reference = 1;
-    bool volatile = 2;
-    int64 duration = 3;
-}
-
-// The Service interface.
-
-message EndpointRequest {
-}
-
-message EndpointResponse {
-    Endpoint endpoint = 1;
-}
-
-// The Store interface.
-
-message StoreGetRequest {
-    string reference = 1;
-}
-
-message StoreGetResponse {
-    bytes data = 1;
-    Refdata refdata = 2;
-    repeated Location locations = 3;
-    bytes error = 4;
-}
-
-message StorePutRequest {
-    bytes data = 1;
-}
-
-message StorePutResponse {
-    Refdata refdata = 1;
-    bytes error = 2;
-}
-
-message StoreDeleteRequest {
-    string reference = 1;
-}
-
-message StoreDeleteResponse {
-    bytes error = 1;
-}
-
-service Store {
-    // Service methods:
-    rpc Endpoint (EndpointRequest) returns (EndpointResponse) {}
-
-    rpc Get (StoreGetRequest) returns (StoreGetResponse) {}
-    rpc Put (StorePutRequest) returns (StorePutResponse) {}
-    rpc Delete (StoreDeleteRequest) returns (StoreDeleteResponse) {}
-}
-
-// The Key interface.
-
-message User {
-    string name = 1;
-    repeated Endpoint dirs = 2;
-    repeated Endpoint stores = 3;
-    string public_key = 4;
-}
-
-message KeyLookupRequest {
-    string user_name = 1;
-}
-
-message KeyLookupResponse {
-    User user = 1;
-    bytes error = 2;
-}
-
-message KeyPutRequest {
-    User user = 1;
-}
-
-message KeyPutResponse {
-    bytes error = 1;
-}
-
-service Key {
-    // Service methods:
-    rpc Endpoint (EndpointRequest) returns (EndpointResponse) {}
-
-    rpc Lookup (KeyLookupRequest) returns (KeyLookupResponse) {}
-    rpc Put(KeyPutRequest) returns (KeyPutResponse) {}
-}
-
-// The DirServer interface.
-// DirEntry values are stored as bytes, for simple and fast marshaling.
-// (The upspin.DirEntry type has a Marshal method that returns a []byte;
-// the alternative is to create a DirEntry proto message and copy the fields
-// from one struct to the other, which is needless busywork.)
-
-message EntryError {
-    bytes entry = 1;
-    bytes error = 2;
-}
-
-message EntriesError {
-    repeated bytes entries = 1;
-    bytes error = 2;
-}
-
-message DirLookupRequest {
-    string name = 1;
-}
-
-message DirPutRequest {
-    bytes entry = 1;
-}
-
-message DirGlobRequest {
-    string pattern = 1;
-}
-
-message DirDeleteRequest {
-    string name = 1;
-}
-
-message DirWhichAccessRequest {
-    string name = 1;
-}
-
-message DirWatchRequest {
-    string name = 1;
-    int64 sequence = 2;
-}
-
-// The first response in the stream is whether dir.Watch succeeded. If it
-// didn't, the error field contains the error and no streaming happens. If it
-// did succeed the error is nil and subsequent streams are from the Events
-// channel.
-message Event {
-    bytes entry = 1;
-    int64 sequence = 2;
-    bool delete = 3;
-    bytes error = 4;
-}
-
-service Dir{
-    // Service methods:
-    rpc Endpoint (EndpointRequest) returns (EndpointResponse) {}
-
-    rpc Lookup (DirLookupRequest) returns (EntryError) {}
-    rpc Put (DirPutRequest) returns (EntryError) {}
-    rpc Glob (DirGlobRequest) returns (EntriesError) {}
-    rpc Delete (DirDeleteRequest) returns (EntryError) {}
-    rpc WhichAccess (DirWhichAccessRequest) returns (EntryError) {}
-    rpc Watch (DirWatchRequest) returns (stream Event) {}
-}
diff --git a/vendor/upspin.io/upspin/upspin.go b/vendor/upspin.io/upspin/upspin.go
index 3241d17..975d7b6 100644
--- a/vendor/upspin.io/upspin/upspin.go
+++ b/vendor/upspin.io/upspin/upspin.go
@@ -834,6 +834,9 @@
 	// StoreEndpoint is the endpoint of the StoreServer in which to place new data items.
 	StoreEndpoint() Endpoint
 
+	// CacheEndpoint is the endpoint of the cache server between the client and the StoreServer and DirServers.
+	CacheEndpoint() Endpoint
+
 	// Value returns the value for the given configuration key.
 	Value(key string) string
 }