Browse Source

rm vendor and updating dockerfile

zach rice 6 years ago
parent
commit
4fd2f06a0d
100 changed files with 4 additions and 36710 deletions
  1. 3 3
      Dockerfile
  2. 1 1
      Makefile
  3. 0 5
      vendor/github.com/BurntSushi/toml/.gitignore
  4. 0 15
      vendor/github.com/BurntSushi/toml/.travis.yml
  5. 0 3
      vendor/github.com/BurntSushi/toml/COMPATIBLE
  6. 0 21
      vendor/github.com/BurntSushi/toml/COPYING
  7. 0 19
      vendor/github.com/BurntSushi/toml/Makefile
  8. 0 218
      vendor/github.com/BurntSushi/toml/README.md
  9. 0 509
      vendor/github.com/BurntSushi/toml/decode.go
  10. 0 121
      vendor/github.com/BurntSushi/toml/decode_meta.go
  11. 0 27
      vendor/github.com/BurntSushi/toml/doc.go
  12. 0 568
      vendor/github.com/BurntSushi/toml/encode.go
  13. 0 19
      vendor/github.com/BurntSushi/toml/encoding_types.go
  14. 0 18
      vendor/github.com/BurntSushi/toml/encoding_types_1.1.go
  15. 0 953
      vendor/github.com/BurntSushi/toml/lex.go
  16. 0 592
      vendor/github.com/BurntSushi/toml/parse.go
  17. 0 1
      vendor/github.com/BurntSushi/toml/session.vim
  18. 0 91
      vendor/github.com/BurntSushi/toml/type_check.go
  19. 0 242
      vendor/github.com/BurntSushi/toml/type_fields.go
  20. 0 41
      vendor/github.com/emirpasic/gods/LICENSE
  21. 0 35
      vendor/github.com/emirpasic/gods/containers/containers.go
  22. 0 61
      vendor/github.com/emirpasic/gods/containers/enumerable.go
  23. 0 109
      vendor/github.com/emirpasic/gods/containers/iterator.go
  24. 0 17
      vendor/github.com/emirpasic/gods/containers/serialization.go
  25. 0 228
      vendor/github.com/emirpasic/gods/lists/arraylist/arraylist.go
  26. 0 79
      vendor/github.com/emirpasic/gods/lists/arraylist/enumerable.go
  27. 0 83
      vendor/github.com/emirpasic/gods/lists/arraylist/iterator.go
  28. 0 29
      vendor/github.com/emirpasic/gods/lists/arraylist/serialization.go
  29. 0 33
      vendor/github.com/emirpasic/gods/lists/lists.go
  30. 0 163
      vendor/github.com/emirpasic/gods/trees/binaryheap/binaryheap.go
  31. 0 84
      vendor/github.com/emirpasic/gods/trees/binaryheap/iterator.go
  32. 0 22
      vendor/github.com/emirpasic/gods/trees/binaryheap/serialization.go
  33. 0 21
      vendor/github.com/emirpasic/gods/trees/trees.go
  34. 0 251
      vendor/github.com/emirpasic/gods/utils/comparator.go
  35. 0 29
      vendor/github.com/emirpasic/gods/utils/sort.go
  36. 0 47
      vendor/github.com/emirpasic/gods/utils/utils.go
  37. 0 3
      vendor/github.com/golang/protobuf/AUTHORS
  38. 0 3
      vendor/github.com/golang/protobuf/CONTRIBUTORS
  39. 0 28
      vendor/github.com/golang/protobuf/LICENSE
  40. 0 253
      vendor/github.com/golang/protobuf/proto/clone.go
  41. 0 428
      vendor/github.com/golang/protobuf/proto/decode.go
  42. 0 350
      vendor/github.com/golang/protobuf/proto/discard.go
  43. 0 203
      vendor/github.com/golang/protobuf/proto/encode.go
  44. 0 300
      vendor/github.com/golang/protobuf/proto/equal.go
  45. 0 543
      vendor/github.com/golang/protobuf/proto/extensions.go
  46. 0 979
      vendor/github.com/golang/protobuf/proto/lib.go
  47. 0 314
      vendor/github.com/golang/protobuf/proto/message_set.go
  48. 0 357
      vendor/github.com/golang/protobuf/proto/pointer_reflect.go
  49. 0 308
      vendor/github.com/golang/protobuf/proto/pointer_unsafe.go
  50. 0 544
      vendor/github.com/golang/protobuf/proto/properties.go
  51. 0 2767
      vendor/github.com/golang/protobuf/proto/table_marshal.go
  52. 0 654
      vendor/github.com/golang/protobuf/proto/table_merge.go
  53. 0 2051
      vendor/github.com/golang/protobuf/proto/table_unmarshal.go
  54. 0 843
      vendor/github.com/golang/protobuf/proto/text.go
  55. 0 880
      vendor/github.com/golang/protobuf/proto/text_parser.go
  56. 0 171
      vendor/github.com/google/go-github/AUTHORS
  57. 0 341
      vendor/github.com/google/go-github/LICENSE
  58. 0 69
      vendor/github.com/google/go-github/github/activity.go
  59. 0 324
      vendor/github.com/google/go-github/github/activity_events.go
  60. 0 223
      vendor/github.com/google/go-github/github/activity_notifications.go
  61. 0 135
      vendor/github.com/google/go-github/github/activity_star.go
  62. 0 146
      vendor/github.com/google/go-github/github/activity_watching.go
  63. 0 101
      vendor/github.com/google/go-github/github/admin.go
  64. 0 171
      vendor/github.com/google/go-github/github/admin_stats.go
  65. 0 169
      vendor/github.com/google/go-github/github/apps.go
  66. 0 114
      vendor/github.com/google/go-github/github/apps_installation.go
  67. 0 180
      vendor/github.com/google/go-github/github/apps_marketplace.go
  68. 0 435
      vendor/github.com/google/go-github/github/authorizations.go
  69. 0 191
      vendor/github.com/google/go-github/github/doc.go
  70. 0 748
      vendor/github.com/google/go-github/github/event_types.go
  71. 0 332
      vendor/github.com/google/go-github/github/gen-accessors.go
  72. 0 388
      vendor/github.com/google/go-github/github/gists.go
  73. 0 119
      vendor/github.com/google/go-github/github/gists_comments.go
  74. 0 12
      vendor/github.com/google/go-github/github/git.go
  75. 0 57
      vendor/github.com/google/go-github/github/git_blobs.go
  76. 0 139
      vendor/github.com/google/go-github/github/git_commits.go
  77. 0 233
      vendor/github.com/google/go-github/github/git_refs.go
  78. 0 84
      vendor/github.com/google/go-github/github/git_tags.go
  79. 0 93
      vendor/github.com/google/go-github/github/git_trees.go
  80. 0 10429
      vendor/github.com/google/go-github/github/github-accessors.go
  81. 0 980
      vendor/github.com/google/go-github/github/github.go
  82. 0 64
      vendor/github.com/google/go-github/github/gitignore.go
  83. 0 330
      vendor/github.com/google/go-github/github/issues.go
  84. 0 85
      vendor/github.com/google/go-github/github/issues_assignees.go
  85. 0 148
      vendor/github.com/google/go-github/github/issues_comments.go
  86. 0 151
      vendor/github.com/google/go-github/github/issues_events.go
  87. 0 251
      vendor/github.com/google/go-github/github/issues_labels.go
  88. 0 160
      vendor/github.com/google/go-github/github/issues_milestones.go
  89. 0 149
      vendor/github.com/google/go-github/github/issues_timeline.go
  90. 0 103
      vendor/github.com/google/go-github/github/licenses.go
  91. 0 245
      vendor/github.com/google/go-github/github/messages.go
  92. 0 224
      vendor/github.com/google/go-github/github/migrations.go
  93. 0 329
      vendor/github.com/google/go-github/github/migrations_source_import.go
  94. 0 253
      vendor/github.com/google/go-github/github/misc.go
  95. 0 209
      vendor/github.com/google/go-github/github/orgs.go
  96. 0 107
      vendor/github.com/google/go-github/github/orgs_hooks.go
  97. 0 299
      vendor/github.com/google/go-github/github/orgs_members.go
  98. 0 81
      vendor/github.com/google/go-github/github/orgs_outside_collaborators.go
  99. 0 60
      vendor/github.com/google/go-github/github/orgs_projects.go
  100. 0 512
      vendor/github.com/google/go-github/github/orgs_teams.go

+ 3 - 3
Dockerfile

@@ -1,7 +1,7 @@
-FROM golang:1.10.3 AS build
+FROM golang:1.11.6 AS build
 WORKDIR /go/src/github.com/zricethezav/gitleaks
 COPY . .
-RUN CGO_ENABLED=0 go build -o bin/gitleaks *.go
+RUN GO111MODULE=on CGO_ENABLED=0 go build -o bin/gitleaks *.go
 
 FROM alpine:3.7
 RUN apk add --no-cache bash git openssh
@@ -11,6 +11,6 @@ ENTRYPOINT ["gitleaks"]
 # How to use me :
 
 # docker build -t gitleaks .
-# docker run --rm --name=gitleaks gitleaks https://github.com/zricethezav/gitleaks
+# docker run --rm --name=gitleaks gitleaks --repo=https://github.com/zricethezav/gitleaks
 
 # This will check for secrets in https://github.com/zricethezav/gitleaks

+ 1 - 1
Makefile

@@ -4,7 +4,7 @@ test:
 	go get golang.org/x/lint/golint
 	go fmt
 	golint
-	go test --race --cover github.com/zricethezav/gitleaks/src
+	go test --race --cover github.com/zricethezav/gitleaks/src -v
 deploy:
 	@echo "$(DOCKER_PASSWORD)" | docker login -u "$(DOCKER_USERNAME)" --password-stdin
 	docker build -f Dockerfile -t $(REPO):$(TAG) .

+ 0 - 5
vendor/github.com/BurntSushi/toml/.gitignore

@@ -1,5 +0,0 @@
-TAGS
-tags
-.*.swp
-tomlcheck/tomlcheck
-toml.test

+ 0 - 15
vendor/github.com/BurntSushi/toml/.travis.yml

@@ -1,15 +0,0 @@
-language: go
-go:
-  - 1.1
-  - 1.2
-  - 1.3
-  - 1.4
-  - 1.5
-  - 1.6
-  - tip
-install:
-  - go install ./...
-  - go get github.com/BurntSushi/toml-test
-script:
-  - export PATH="$PATH:$HOME/gopath/bin"
-  - make test

+ 0 - 3
vendor/github.com/BurntSushi/toml/COMPATIBLE

@@ -1,3 +0,0 @@
-Compatible with TOML version
-[v0.4.0](https://github.com/toml-lang/toml/blob/v0.4.0/versions/en/toml-v0.4.0.md)
-

+ 0 - 21
vendor/github.com/BurntSushi/toml/COPYING

@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2013 TOML authors
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.

+ 0 - 19
vendor/github.com/BurntSushi/toml/Makefile

@@ -1,19 +0,0 @@
-install:
-	go install ./...
-
-test: install
-	go test -v
-	toml-test toml-test-decoder
-	toml-test -encoder toml-test-encoder
-
-fmt:
-	gofmt -w *.go */*.go
-	colcheck *.go */*.go
-
-tags:
-	find ./ -name '*.go' -print0 | xargs -0 gotags > TAGS
-
-push:
-	git push origin master
-	git push github master
-

+ 0 - 218
vendor/github.com/BurntSushi/toml/README.md

@@ -1,218 +0,0 @@
-## TOML parser and encoder for Go with reflection
-
-TOML stands for Tom's Obvious, Minimal Language. This Go package provides a
-reflection interface similar to Go's standard library `json` and `xml`
-packages. This package also supports the `encoding.TextUnmarshaler` and
-`encoding.TextMarshaler` interfaces so that you can define custom data
-representations. (There is an example of this below.)
-
-Spec: https://github.com/toml-lang/toml
-
-Compatible with TOML version
-[v0.4.0](https://github.com/toml-lang/toml/blob/master/versions/en/toml-v0.4.0.md)
-
-Documentation: https://godoc.org/github.com/BurntSushi/toml
-
-Installation:
-
-```bash
-go get github.com/BurntSushi/toml
-```
-
-Try the toml validator:
-
-```bash
-go get github.com/BurntSushi/toml/cmd/tomlv
-tomlv some-toml-file.toml
-```
-
-[![Build Status](https://travis-ci.org/BurntSushi/toml.svg?branch=master)](https://travis-ci.org/BurntSushi/toml) [![GoDoc](https://godoc.org/github.com/BurntSushi/toml?status.svg)](https://godoc.org/github.com/BurntSushi/toml)
-
-### Testing
-
-This package passes all tests in
-[toml-test](https://github.com/BurntSushi/toml-test) for both the decoder
-and the encoder.
-
-### Examples
-
-This package works similarly to how the Go standard library handles `XML`
-and `JSON`. Namely, data is loaded into Go values via reflection.
-
-For the simplest example, consider some TOML file as just a list of keys
-and values:
-
-```toml
-Age = 25
-Cats = [ "Cauchy", "Plato" ]
-Pi = 3.14
-Perfection = [ 6, 28, 496, 8128 ]
-DOB = 1987-07-05T05:45:00Z
-```
-
-Which could be defined in Go as:
-
-```go
-type Config struct {
-  Age int
-  Cats []string
-  Pi float64
-  Perfection []int
-  DOB time.Time // requires `import time`
-}
-```
-
-And then decoded with:
-
-```go
-var conf Config
-if _, err := toml.Decode(tomlData, &conf); err != nil {
-  // handle error
-}
-```
-
-You can also use struct tags if your struct field name doesn't map to a TOML
-key value directly:
-
-```toml
-some_key_NAME = "wat"
-```
-
-```go
-type TOML struct {
-  ObscureKey string `toml:"some_key_NAME"`
-}
-```
-
-### Using the `encoding.TextUnmarshaler` interface
-
-Here's an example that automatically parses duration strings into
-`time.Duration` values:
-
-```toml
-[[song]]
-name = "Thunder Road"
-duration = "4m49s"
-
-[[song]]
-name = "Stairway to Heaven"
-duration = "8m03s"
-```
-
-Which can be decoded with:
-
-```go
-type song struct {
-  Name     string
-  Duration duration
-}
-type songs struct {
-  Song []song
-}
-var favorites songs
-if _, err := toml.Decode(blob, &favorites); err != nil {
-  log.Fatal(err)
-}
-
-for _, s := range favorites.Song {
-  fmt.Printf("%s (%s)\n", s.Name, s.Duration)
-}
-```
-
-And you'll also need a `duration` type that satisfies the
-`encoding.TextUnmarshaler` interface:
-
-```go
-type duration struct {
-	time.Duration
-}
-
-func (d *duration) UnmarshalText(text []byte) error {
-	var err error
-	d.Duration, err = time.ParseDuration(string(text))
-	return err
-}
-```
-
-### More complex usage
-
-Here's an example of how to load the example from the official spec page:
-
-```toml
-# This is a TOML document. Boom.
-
-title = "TOML Example"
-
-[owner]
-name = "Tom Preston-Werner"
-organization = "GitHub"
-bio = "GitHub Cofounder & CEO\nLikes tater tots and beer."
-dob = 1979-05-27T07:32:00Z # First class dates? Why not?
-
-[database]
-server = "192.168.1.1"
-ports = [ 8001, 8001, 8002 ]
-connection_max = 5000
-enabled = true
-
-[servers]
-
-  # You can indent as you please. Tabs or spaces. TOML don't care.
-  [servers.alpha]
-  ip = "10.0.0.1"
-  dc = "eqdc10"
-
-  [servers.beta]
-  ip = "10.0.0.2"
-  dc = "eqdc10"
-
-[clients]
-data = [ ["gamma", "delta"], [1, 2] ] # just an update to make sure parsers support it
-
-# Line breaks are OK when inside arrays
-hosts = [
-  "alpha",
-  "omega"
-]
-```
-
-And the corresponding Go types are:
-
-```go
-type tomlConfig struct {
-	Title string
-	Owner ownerInfo
-	DB database `toml:"database"`
-	Servers map[string]server
-	Clients clients
-}
-
-type ownerInfo struct {
-	Name string
-	Org string `toml:"organization"`
-	Bio string
-	DOB time.Time
-}
-
-type database struct {
-	Server string
-	Ports []int
-	ConnMax int `toml:"connection_max"`
-	Enabled bool
-}
-
-type server struct {
-	IP string
-	DC string
-}
-
-type clients struct {
-	Data [][]interface{}
-	Hosts []string
-}
-```
-
-Note that a case insensitive match will be tried if an exact match can't be
-found.
-
-A working example of the above can be found in `_examples/example.{go,toml}`.

+ 0 - 509
vendor/github.com/BurntSushi/toml/decode.go

@@ -1,509 +0,0 @@
-package toml
-
-import (
-	"fmt"
-	"io"
-	"io/ioutil"
-	"math"
-	"reflect"
-	"strings"
-	"time"
-)
-
-func e(format string, args ...interface{}) error {
-	return fmt.Errorf("toml: "+format, args...)
-}
-
-// Unmarshaler is the interface implemented by objects that can unmarshal a
-// TOML description of themselves.
-type Unmarshaler interface {
-	UnmarshalTOML(interface{}) error
-}
-
-// Unmarshal decodes the contents of `p` in TOML format into a pointer `v`.
-func Unmarshal(p []byte, v interface{}) error {
-	_, err := Decode(string(p), v)
-	return err
-}
-
-// Primitive is a TOML value that hasn't been decoded into a Go value.
-// When using the various `Decode*` functions, the type `Primitive` may
-// be given to any value, and its decoding will be delayed.
-//
-// A `Primitive` value can be decoded using the `PrimitiveDecode` function.
-//
-// The underlying representation of a `Primitive` value is subject to change.
-// Do not rely on it.
-//
-// N.B. Primitive values are still parsed, so using them will only avoid
-// the overhead of reflection. They can be useful when you don't know the
-// exact type of TOML data until run time.
-type Primitive struct {
-	undecoded interface{}
-	context   Key
-}
-
-// DEPRECATED!
-//
-// Use MetaData.PrimitiveDecode instead.
-func PrimitiveDecode(primValue Primitive, v interface{}) error {
-	md := MetaData{decoded: make(map[string]bool)}
-	return md.unify(primValue.undecoded, rvalue(v))
-}
-
-// PrimitiveDecode is just like the other `Decode*` functions, except it
-// decodes a TOML value that has already been parsed. Valid primitive values
-// can *only* be obtained from values filled by the decoder functions,
-// including this method. (i.e., `v` may contain more `Primitive`
-// values.)
-//
-// Meta data for primitive values is included in the meta data returned by
-// the `Decode*` functions with one exception: keys returned by the Undecoded
-// method will only reflect keys that were decoded. Namely, any keys hidden
-// behind a Primitive will be considered undecoded. Executing this method will
-// update the undecoded keys in the meta data. (See the example.)
-func (md *MetaData) PrimitiveDecode(primValue Primitive, v interface{}) error {
-	md.context = primValue.context
-	defer func() { md.context = nil }()
-	return md.unify(primValue.undecoded, rvalue(v))
-}
-
-// Decode will decode the contents of `data` in TOML format into a pointer
-// `v`.
-//
-// TOML hashes correspond to Go structs or maps. (Dealer's choice. They can be
-// used interchangeably.)
-//
-// TOML arrays of tables correspond to either a slice of structs or a slice
-// of maps.
-//
-// TOML datetimes correspond to Go `time.Time` values.
-//
-// All other TOML types (float, string, int, bool and array) correspond
-// to the obvious Go types.
-//
-// An exception to the above rules is if a type implements the
-// encoding.TextUnmarshaler interface. In this case, any primitive TOML value
-// (floats, strings, integers, booleans and datetimes) will be converted to
-// a byte string and given to the value's UnmarshalText method. See the
-// Unmarshaler example for a demonstration with time duration strings.
-//
-// Key mapping
-//
-// TOML keys can map to either keys in a Go map or field names in a Go
-// struct. The special `toml` struct tag may be used to map TOML keys to
-// struct fields that don't match the key name exactly. (See the example.)
-// A case insensitive match to struct names will be tried if an exact match
-// can't be found.
-//
-// The mapping between TOML values and Go values is loose. That is, there
-// may exist TOML values that cannot be placed into your representation, and
-// there may be parts of your representation that do not correspond to
-// TOML values. This loose mapping can be made stricter by using the IsDefined
-// and/or Undecoded methods on the MetaData returned.
-//
-// This decoder will not handle cyclic types. If a cyclic type is passed,
-// `Decode` will not terminate.
-func Decode(data string, v interface{}) (MetaData, error) {
-	rv := reflect.ValueOf(v)
-	if rv.Kind() != reflect.Ptr {
-		return MetaData{}, e("Decode of non-pointer %s", reflect.TypeOf(v))
-	}
-	if rv.IsNil() {
-		return MetaData{}, e("Decode of nil %s", reflect.TypeOf(v))
-	}
-	p, err := parse(data)
-	if err != nil {
-		return MetaData{}, err
-	}
-	md := MetaData{
-		p.mapping, p.types, p.ordered,
-		make(map[string]bool, len(p.ordered)), nil,
-	}
-	return md, md.unify(p.mapping, indirect(rv))
-}
-
-// DecodeFile is just like Decode, except it will automatically read the
-// contents of the file at `fpath` and decode it for you.
-func DecodeFile(fpath string, v interface{}) (MetaData, error) {
-	bs, err := ioutil.ReadFile(fpath)
-	if err != nil {
-		return MetaData{}, err
-	}
-	return Decode(string(bs), v)
-}
-
-// DecodeReader is just like Decode, except it will consume all bytes
-// from the reader and decode it for you.
-func DecodeReader(r io.Reader, v interface{}) (MetaData, error) {
-	bs, err := ioutil.ReadAll(r)
-	if err != nil {
-		return MetaData{}, err
-	}
-	return Decode(string(bs), v)
-}
-
-// unify performs a sort of type unification based on the structure of `rv`,
-// which is the client representation.
-//
-// Any type mismatch produces an error. Finding a type that we don't know
-// how to handle produces an unsupported type error.
-func (md *MetaData) unify(data interface{}, rv reflect.Value) error {
-
-	// Special case. Look for a `Primitive` value.
-	if rv.Type() == reflect.TypeOf((*Primitive)(nil)).Elem() {
-		// Save the undecoded data and the key context into the primitive
-		// value.
-		context := make(Key, len(md.context))
-		copy(context, md.context)
-		rv.Set(reflect.ValueOf(Primitive{
-			undecoded: data,
-			context:   context,
-		}))
-		return nil
-	}
-
-	// Special case. Unmarshaler Interface support.
-	if rv.CanAddr() {
-		if v, ok := rv.Addr().Interface().(Unmarshaler); ok {
-			return v.UnmarshalTOML(data)
-		}
-	}
-
-	// Special case. Handle time.Time values specifically.
-	// TODO: Remove this code when we decide to drop support for Go 1.1.
-	// This isn't necessary in Go 1.2 because time.Time satisfies the encoding
-	// interfaces.
-	if rv.Type().AssignableTo(rvalue(time.Time{}).Type()) {
-		return md.unifyDatetime(data, rv)
-	}
-
-	// Special case. Look for a value satisfying the TextUnmarshaler interface.
-	if v, ok := rv.Interface().(TextUnmarshaler); ok {
-		return md.unifyText(data, v)
-	}
-	// BUG(burntsushi)
-	// The behavior here is incorrect whenever a Go type satisfies the
-	// encoding.TextUnmarshaler interface but also corresponds to a TOML
-	// hash or array. In particular, the unmarshaler should only be applied
-	// to primitive TOML values. But at this point, it will be applied to
-	// all kinds of values and produce an incorrect error whenever those values
-	// are hashes or arrays (including arrays of tables).
-
-	k := rv.Kind()
-
-	// laziness
-	if k >= reflect.Int && k <= reflect.Uint64 {
-		return md.unifyInt(data, rv)
-	}
-	switch k {
-	case reflect.Ptr:
-		elem := reflect.New(rv.Type().Elem())
-		err := md.unify(data, reflect.Indirect(elem))
-		if err != nil {
-			return err
-		}
-		rv.Set(elem)
-		return nil
-	case reflect.Struct:
-		return md.unifyStruct(data, rv)
-	case reflect.Map:
-		return md.unifyMap(data, rv)
-	case reflect.Array:
-		return md.unifyArray(data, rv)
-	case reflect.Slice:
-		return md.unifySlice(data, rv)
-	case reflect.String:
-		return md.unifyString(data, rv)
-	case reflect.Bool:
-		return md.unifyBool(data, rv)
-	case reflect.Interface:
-		// we only support empty interfaces.
-		if rv.NumMethod() > 0 {
-			return e("unsupported type %s", rv.Type())
-		}
-		return md.unifyAnything(data, rv)
-	case reflect.Float32:
-		fallthrough
-	case reflect.Float64:
-		return md.unifyFloat64(data, rv)
-	}
-	return e("unsupported type %s", rv.Kind())
-}
-
-func (md *MetaData) unifyStruct(mapping interface{}, rv reflect.Value) error {
-	tmap, ok := mapping.(map[string]interface{})
-	if !ok {
-		if mapping == nil {
-			return nil
-		}
-		return e("type mismatch for %s: expected table but found %T",
-			rv.Type().String(), mapping)
-	}
-
-	for key, datum := range tmap {
-		var f *field
-		fields := cachedTypeFields(rv.Type())
-		for i := range fields {
-			ff := &fields[i]
-			if ff.name == key {
-				f = ff
-				break
-			}
-			if f == nil && strings.EqualFold(ff.name, key) {
-				f = ff
-			}
-		}
-		if f != nil {
-			subv := rv
-			for _, i := range f.index {
-				subv = indirect(subv.Field(i))
-			}
-			if isUnifiable(subv) {
-				md.decoded[md.context.add(key).String()] = true
-				md.context = append(md.context, key)
-				if err := md.unify(datum, subv); err != nil {
-					return err
-				}
-				md.context = md.context[0 : len(md.context)-1]
-			} else if f.name != "" {
-				// Bad user! No soup for you!
-				return e("cannot write unexported field %s.%s",
-					rv.Type().String(), f.name)
-			}
-		}
-	}
-	return nil
-}
-
-func (md *MetaData) unifyMap(mapping interface{}, rv reflect.Value) error {
-	tmap, ok := mapping.(map[string]interface{})
-	if !ok {
-		if tmap == nil {
-			return nil
-		}
-		return badtype("map", mapping)
-	}
-	if rv.IsNil() {
-		rv.Set(reflect.MakeMap(rv.Type()))
-	}
-	for k, v := range tmap {
-		md.decoded[md.context.add(k).String()] = true
-		md.context = append(md.context, k)
-
-		rvkey := indirect(reflect.New(rv.Type().Key()))
-		rvval := reflect.Indirect(reflect.New(rv.Type().Elem()))
-		if err := md.unify(v, rvval); err != nil {
-			return err
-		}
-		md.context = md.context[0 : len(md.context)-1]
-
-		rvkey.SetString(k)
-		rv.SetMapIndex(rvkey, rvval)
-	}
-	return nil
-}
-
-func (md *MetaData) unifyArray(data interface{}, rv reflect.Value) error {
-	datav := reflect.ValueOf(data)
-	if datav.Kind() != reflect.Slice {
-		if !datav.IsValid() {
-			return nil
-		}
-		return badtype("slice", data)
-	}
-	sliceLen := datav.Len()
-	if sliceLen != rv.Len() {
-		return e("expected array length %d; got TOML array of length %d",
-			rv.Len(), sliceLen)
-	}
-	return md.unifySliceArray(datav, rv)
-}
-
-func (md *MetaData) unifySlice(data interface{}, rv reflect.Value) error {
-	datav := reflect.ValueOf(data)
-	if datav.Kind() != reflect.Slice {
-		if !datav.IsValid() {
-			return nil
-		}
-		return badtype("slice", data)
-	}
-	n := datav.Len()
-	if rv.IsNil() || rv.Cap() < n {
-		rv.Set(reflect.MakeSlice(rv.Type(), n, n))
-	}
-	rv.SetLen(n)
-	return md.unifySliceArray(datav, rv)
-}
-
-func (md *MetaData) unifySliceArray(data, rv reflect.Value) error {
-	sliceLen := data.Len()
-	for i := 0; i < sliceLen; i++ {
-		v := data.Index(i).Interface()
-		sliceval := indirect(rv.Index(i))
-		if err := md.unify(v, sliceval); err != nil {
-			return err
-		}
-	}
-	return nil
-}
-
-func (md *MetaData) unifyDatetime(data interface{}, rv reflect.Value) error {
-	if _, ok := data.(time.Time); ok {
-		rv.Set(reflect.ValueOf(data))
-		return nil
-	}
-	return badtype("time.Time", data)
-}
-
-func (md *MetaData) unifyString(data interface{}, rv reflect.Value) error {
-	if s, ok := data.(string); ok {
-		rv.SetString(s)
-		return nil
-	}
-	return badtype("string", data)
-}
-
-func (md *MetaData) unifyFloat64(data interface{}, rv reflect.Value) error {
-	if num, ok := data.(float64); ok {
-		switch rv.Kind() {
-		case reflect.Float32:
-			fallthrough
-		case reflect.Float64:
-			rv.SetFloat(num)
-		default:
-			panic("bug")
-		}
-		return nil
-	}
-	return badtype("float", data)
-}
-
-func (md *MetaData) unifyInt(data interface{}, rv reflect.Value) error {
-	if num, ok := data.(int64); ok {
-		if rv.Kind() >= reflect.Int && rv.Kind() <= reflect.Int64 {
-			switch rv.Kind() {
-			case reflect.Int, reflect.Int64:
-				// No bounds checking necessary.
-			case reflect.Int8:
-				if num < math.MinInt8 || num > math.MaxInt8 {
-					return e("value %d is out of range for int8", num)
-				}
-			case reflect.Int16:
-				if num < math.MinInt16 || num > math.MaxInt16 {
-					return e("value %d is out of range for int16", num)
-				}
-			case reflect.Int32:
-				if num < math.MinInt32 || num > math.MaxInt32 {
-					return e("value %d is out of range for int32", num)
-				}
-			}
-			rv.SetInt(num)
-		} else if rv.Kind() >= reflect.Uint && rv.Kind() <= reflect.Uint64 {
-			unum := uint64(num)
-			switch rv.Kind() {
-			case reflect.Uint, reflect.Uint64:
-				// No bounds checking necessary.
-			case reflect.Uint8:
-				if num < 0 || unum > math.MaxUint8 {
-					return e("value %d is out of range for uint8", num)
-				}
-			case reflect.Uint16:
-				if num < 0 || unum > math.MaxUint16 {
-					return e("value %d is out of range for uint16", num)
-				}
-			case reflect.Uint32:
-				if num < 0 || unum > math.MaxUint32 {
-					return e("value %d is out of range for uint32", num)
-				}
-			}
-			rv.SetUint(unum)
-		} else {
-			panic("unreachable")
-		}
-		return nil
-	}
-	return badtype("integer", data)
-}
-
-func (md *MetaData) unifyBool(data interface{}, rv reflect.Value) error {
-	if b, ok := data.(bool); ok {
-		rv.SetBool(b)
-		return nil
-	}
-	return badtype("boolean", data)
-}
-
-func (md *MetaData) unifyAnything(data interface{}, rv reflect.Value) error {
-	rv.Set(reflect.ValueOf(data))
-	return nil
-}
-
-func (md *MetaData) unifyText(data interface{}, v TextUnmarshaler) error {
-	var s string
-	switch sdata := data.(type) {
-	case TextMarshaler:
-		text, err := sdata.MarshalText()
-		if err != nil {
-			return err
-		}
-		s = string(text)
-	case fmt.Stringer:
-		s = sdata.String()
-	case string:
-		s = sdata
-	case bool:
-		s = fmt.Sprintf("%v", sdata)
-	case int64:
-		s = fmt.Sprintf("%d", sdata)
-	case float64:
-		s = fmt.Sprintf("%f", sdata)
-	default:
-		return badtype("primitive (string-like)", data)
-	}
-	if err := v.UnmarshalText([]byte(s)); err != nil {
-		return err
-	}
-	return nil
-}
-
-// rvalue returns a reflect.Value of `v`. All pointers are resolved.
-func rvalue(v interface{}) reflect.Value {
-	return indirect(reflect.ValueOf(v))
-}
-
-// indirect returns the value pointed to by a pointer.
-// Pointers are followed until the value is not a pointer.
-// New values are allocated for each nil pointer.
-//
-// An exception to this rule is if the value satisfies an interface of
-// interest to us (like encoding.TextUnmarshaler).
-func indirect(v reflect.Value) reflect.Value {
-	if v.Kind() != reflect.Ptr {
-		if v.CanSet() {
-			pv := v.Addr()
-			if _, ok := pv.Interface().(TextUnmarshaler); ok {
-				return pv
-			}
-		}
-		return v
-	}
-	if v.IsNil() {
-		v.Set(reflect.New(v.Type().Elem()))
-	}
-	return indirect(reflect.Indirect(v))
-}
-
-func isUnifiable(rv reflect.Value) bool {
-	if rv.CanSet() {
-		return true
-	}
-	if _, ok := rv.Interface().(TextUnmarshaler); ok {
-		return true
-	}
-	return false
-}
-
-func badtype(expected string, data interface{}) error {
-	return e("cannot load TOML value of type %T into a Go %s", data, expected)
-}

+ 0 - 121
vendor/github.com/BurntSushi/toml/decode_meta.go

@@ -1,121 +0,0 @@
-package toml
-
-import "strings"
-
-// MetaData allows access to meta information about TOML data that may not
-// be inferrable via reflection. In particular, whether a key has been defined
-// and the TOML type of a key.
-type MetaData struct {
-	mapping map[string]interface{}
-	types   map[string]tomlType
-	keys    []Key
-	decoded map[string]bool
-	context Key // Used only during decoding.
-}
-
-// IsDefined returns true if the key given exists in the TOML data. The key
-// should be specified hierarchially. e.g.,
-//
-//	// access the TOML key 'a.b.c'
-//	IsDefined("a", "b", "c")
-//
-// IsDefined will return false if an empty key given. Keys are case sensitive.
-func (md *MetaData) IsDefined(key ...string) bool {
-	if len(key) == 0 {
-		return false
-	}
-
-	var hash map[string]interface{}
-	var ok bool
-	var hashOrVal interface{} = md.mapping
-	for _, k := range key {
-		if hash, ok = hashOrVal.(map[string]interface{}); !ok {
-			return false
-		}
-		if hashOrVal, ok = hash[k]; !ok {
-			return false
-		}
-	}
-	return true
-}
-
-// Type returns a string representation of the type of the key specified.
-//
-// Type will return the empty string if given an empty key or a key that
-// does not exist. Keys are case sensitive.
-func (md *MetaData) Type(key ...string) string {
-	fullkey := strings.Join(key, ".")
-	if typ, ok := md.types[fullkey]; ok {
-		return typ.typeString()
-	}
-	return ""
-}
-
-// Key is the type of any TOML key, including key groups. Use (MetaData).Keys
-// to get values of this type.
-type Key []string
-
-func (k Key) String() string {
-	return strings.Join(k, ".")
-}
-
-func (k Key) maybeQuotedAll() string {
-	var ss []string
-	for i := range k {
-		ss = append(ss, k.maybeQuoted(i))
-	}
-	return strings.Join(ss, ".")
-}
-
-func (k Key) maybeQuoted(i int) string {
-	quote := false
-	for _, c := range k[i] {
-		if !isBareKeyChar(c) {
-			quote = true
-			break
-		}
-	}
-	if quote {
-		return "\"" + strings.Replace(k[i], "\"", "\\\"", -1) + "\""
-	}
-	return k[i]
-}
-
-func (k Key) add(piece string) Key {
-	newKey := make(Key, len(k)+1)
-	copy(newKey, k)
-	newKey[len(k)] = piece
-	return newKey
-}
-
-// Keys returns a slice of every key in the TOML data, including key groups.
-// Each key is itself a slice, where the first element is the top of the
-// hierarchy and the last is the most specific.
-//
-// The list will have the same order as the keys appeared in the TOML data.
-//
-// All keys returned are non-empty.
-func (md *MetaData) Keys() []Key {
-	return md.keys
-}
-
-// Undecoded returns all keys that have not been decoded in the order in which
-// they appear in the original TOML document.
-//
-// This includes keys that haven't been decoded because of a Primitive value.
-// Once the Primitive value is decoded, the keys will be considered decoded.
-//
-// Also note that decoding into an empty interface will result in no decoding,
-// and so no keys will be considered decoded.
-//
-// In this sense, the Undecoded keys correspond to keys in the TOML document
-// that do not have a concrete type in your representation.
-func (md *MetaData) Undecoded() []Key {
-	undecoded := make([]Key, 0, len(md.keys))
-	for _, key := range md.keys {
-		if !md.decoded[key.String()] {
-			undecoded = append(undecoded, key)
-		}
-	}
-	return undecoded
-}

+ 0 - 27
vendor/github.com/BurntSushi/toml/doc.go

@@ -1,27 +0,0 @@
-/*
-Package toml provides facilities for decoding and encoding TOML configuration
-files via reflection. There is also support for delaying decoding with
-the Primitive type, and querying the set of keys in a TOML document with the
-MetaData type.
-
-The specification implemented: https://github.com/toml-lang/toml
-
-The sub-command github.com/BurntSushi/toml/cmd/tomlv can be used to verify
-whether a file is a valid TOML document. It can also be used to print the
-type of each key in a TOML document.
-
-Testing
-
-There are two important types of tests used for this package. The first is
-contained inside '*_test.go' files and uses the standard Go unit testing
-framework. These tests are primarily devoted to holistically testing the
-decoder and encoder.
-
-The second type of testing is used to verify the implementation's adherence
-to the TOML specification. These tests have been factored into their own
-project: https://github.com/BurntSushi/toml-test
-
-The reason the tests are in a separate project is so that they can be used by
-any implementation of TOML. Namely, it is language agnostic.
-*/
-package toml

+ 0 - 568
vendor/github.com/BurntSushi/toml/encode.go

@@ -1,568 +0,0 @@
-package toml
-
-import (
-	"bufio"
-	"errors"
-	"fmt"
-	"io"
-	"reflect"
-	"sort"
-	"strconv"
-	"strings"
-	"time"
-)
-
-type tomlEncodeError struct{ error }
-
-var (
-	errArrayMixedElementTypes = errors.New(
-		"toml: cannot encode array with mixed element types")
-	errArrayNilElement = errors.New(
-		"toml: cannot encode array with nil element")
-	errNonString = errors.New(
-		"toml: cannot encode a map with non-string key type")
-	errAnonNonStruct = errors.New(
-		"toml: cannot encode an anonymous field that is not a struct")
-	errArrayNoTable = errors.New(
-		"toml: TOML array element cannot contain a table")
-	errNoKey = errors.New(
-		"toml: top-level values must be Go maps or structs")
-	errAnything = errors.New("") // used in testing
-)
-
-var quotedReplacer = strings.NewReplacer(
-	"\t", "\\t",
-	"\n", "\\n",
-	"\r", "\\r",
-	"\"", "\\\"",
-	"\\", "\\\\",
-)
-
-// Encoder controls the encoding of Go values to a TOML document to some
-// io.Writer.
-//
-// The indentation level can be controlled with the Indent field.
-type Encoder struct {
-	// A single indentation level. By default it is two spaces.
-	Indent string
-
-	// hasWritten is whether we have written any output to w yet.
-	hasWritten bool
-	w          *bufio.Writer
-}
-
-// NewEncoder returns a TOML encoder that encodes Go values to the io.Writer
-// given. By default, a single indentation level is 2 spaces.
-func NewEncoder(w io.Writer) *Encoder {
-	return &Encoder{
-		w:      bufio.NewWriter(w),
-		Indent: "  ",
-	}
-}
-
-// Encode writes a TOML representation of the Go value to the underlying
-// io.Writer. If the value given cannot be encoded to a valid TOML document,
-// then an error is returned.
-//
-// The mapping between Go values and TOML values should be precisely the same
-// as for the Decode* functions. Similarly, the TextMarshaler interface is
-// supported by encoding the resulting bytes as strings. (If you want to write
-// arbitrary binary data then you will need to use something like base64 since
-// TOML does not have any binary types.)
-//
-// When encoding TOML hashes (i.e., Go maps or structs), keys without any
-// sub-hashes are encoded first.
-//
-// If a Go map is encoded, then its keys are sorted alphabetically for
-// deterministic output. More control over this behavior may be provided if
-// there is demand for it.
-//
-// Encoding Go values without a corresponding TOML representation---like map
-// types with non-string keys---will cause an error to be returned. Similarly
-// for mixed arrays/slices, arrays/slices with nil elements, embedded
-// non-struct types and nested slices containing maps or structs.
-// (e.g., [][]map[string]string is not allowed but []map[string]string is OK
-// and so is []map[string][]string.)
-func (enc *Encoder) Encode(v interface{}) error {
-	rv := eindirect(reflect.ValueOf(v))
-	if err := enc.safeEncode(Key([]string{}), rv); err != nil {
-		return err
-	}
-	return enc.w.Flush()
-}
-
-func (enc *Encoder) safeEncode(key Key, rv reflect.Value) (err error) {
-	defer func() {
-		if r := recover(); r != nil {
-			if terr, ok := r.(tomlEncodeError); ok {
-				err = terr.error
-				return
-			}
-			panic(r)
-		}
-	}()
-	enc.encode(key, rv)
-	return nil
-}
-
-func (enc *Encoder) encode(key Key, rv reflect.Value) {
-	// Special case. Time needs to be in ISO8601 format.
-	// Special case. If we can marshal the type to text, then we used that.
-	// Basically, this prevents the encoder for handling these types as
-	// generic structs (or whatever the underlying type of a TextMarshaler is).
-	switch rv.Interface().(type) {
-	case time.Time, TextMarshaler:
-		enc.keyEqElement(key, rv)
-		return
-	}
-
-	k := rv.Kind()
-	switch k {
-	case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32,
-		reflect.Int64,
-		reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32,
-		reflect.Uint64,
-		reflect.Float32, reflect.Float64, reflect.String, reflect.Bool:
-		enc.keyEqElement(key, rv)
-	case reflect.Array, reflect.Slice:
-		if typeEqual(tomlArrayHash, tomlTypeOfGo(rv)) {
-			enc.eArrayOfTables(key, rv)
-		} else {
-			enc.keyEqElement(key, rv)
-		}
-	case reflect.Interface:
-		if rv.IsNil() {
-			return
-		}
-		enc.encode(key, rv.Elem())
-	case reflect.Map:
-		if rv.IsNil() {
-			return
-		}
-		enc.eTable(key, rv)
-	case reflect.Ptr:
-		if rv.IsNil() {
-			return
-		}
-		enc.encode(key, rv.Elem())
-	case reflect.Struct:
-		enc.eTable(key, rv)
-	default:
-		panic(e("unsupported type for key '%s': %s", key, k))
-	}
-}
-
-// eElement encodes any value that can be an array element (primitives and
-// arrays).
-func (enc *Encoder) eElement(rv reflect.Value) {
-	switch v := rv.Interface().(type) {
-	case time.Time:
-		// Special case time.Time as a primitive. Has to come before
-		// TextMarshaler below because time.Time implements
-		// encoding.TextMarshaler, but we need to always use UTC.
-		enc.wf(v.UTC().Format("2006-01-02T15:04:05Z"))
-		return
-	case TextMarshaler:
-		// Special case. Use text marshaler if it's available for this value.
-		if s, err := v.MarshalText(); err != nil {
-			encPanic(err)
-		} else {
-			enc.writeQuoted(string(s))
-		}
-		return
-	}
-	switch rv.Kind() {
-	case reflect.Bool:
-		enc.wf(strconv.FormatBool(rv.Bool()))
-	case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32,
-		reflect.Int64:
-		enc.wf(strconv.FormatInt(rv.Int(), 10))
-	case reflect.Uint, reflect.Uint8, reflect.Uint16,
-		reflect.Uint32, reflect.Uint64:
-		enc.wf(strconv.FormatUint(rv.Uint(), 10))
-	case reflect.Float32:
-		enc.wf(floatAddDecimal(strconv.FormatFloat(rv.Float(), 'f', -1, 32)))
-	case reflect.Float64:
-		enc.wf(floatAddDecimal(strconv.FormatFloat(rv.Float(), 'f', -1, 64)))
-	case reflect.Array, reflect.Slice:
-		enc.eArrayOrSliceElement(rv)
-	case reflect.Interface:
-		enc.eElement(rv.Elem())
-	case reflect.String:
-		enc.writeQuoted(rv.String())
-	default:
-		panic(e("unexpected primitive type: %s", rv.Kind()))
-	}
-}
-
-// By the TOML spec, all floats must have a decimal with at least one
-// number on either side.
-func floatAddDecimal(fstr string) string {
-	if !strings.Contains(fstr, ".") {
-		return fstr + ".0"
-	}
-	return fstr
-}
-
-func (enc *Encoder) writeQuoted(s string) {
-	enc.wf("\"%s\"", quotedReplacer.Replace(s))
-}
-
-func (enc *Encoder) eArrayOrSliceElement(rv reflect.Value) {
-	length := rv.Len()
-	enc.wf("[")
-	for i := 0; i < length; i++ {
-		elem := rv.Index(i)
-		enc.eElement(elem)
-		if i != length-1 {
-			enc.wf(", ")
-		}
-	}
-	enc.wf("]")
-}
-
-func (enc *Encoder) eArrayOfTables(key Key, rv reflect.Value) {
-	if len(key) == 0 {
-		encPanic(errNoKey)
-	}
-	for i := 0; i < rv.Len(); i++ {
-		trv := rv.Index(i)
-		if isNil(trv) {
-			continue
-		}
-		panicIfInvalidKey(key)
-		enc.newline()
-		enc.wf("%s[[%s]]", enc.indentStr(key), key.maybeQuotedAll())
-		enc.newline()
-		enc.eMapOrStruct(key, trv)
-	}
-}
-
-func (enc *Encoder) eTable(key Key, rv reflect.Value) {
-	panicIfInvalidKey(key)
-	if len(key) == 1 {
-		// Output an extra newline between top-level tables.
-		// (The newline isn't written if nothing else has been written though.)
-		enc.newline()
-	}
-	if len(key) > 0 {
-		enc.wf("%s[%s]", enc.indentStr(key), key.maybeQuotedAll())
-		enc.newline()
-	}
-	enc.eMapOrStruct(key, rv)
-}
-
-func (enc *Encoder) eMapOrStruct(key Key, rv reflect.Value) {
-	switch rv := eindirect(rv); rv.Kind() {
-	case reflect.Map:
-		enc.eMap(key, rv)
-	case reflect.Struct:
-		enc.eStruct(key, rv)
-	default:
-		panic("eTable: unhandled reflect.Value Kind: " + rv.Kind().String())
-	}
-}
-
-func (enc *Encoder) eMap(key Key, rv reflect.Value) {
-	rt := rv.Type()
-	if rt.Key().Kind() != reflect.String {
-		encPanic(errNonString)
-	}
-
-	// Sort keys so that we have deterministic output. And write keys directly
-	// underneath this key first, before writing sub-structs or sub-maps.
-	var mapKeysDirect, mapKeysSub []string
-	for _, mapKey := range rv.MapKeys() {
-		k := mapKey.String()
-		if typeIsHash(tomlTypeOfGo(rv.MapIndex(mapKey))) {
-			mapKeysSub = append(mapKeysSub, k)
-		} else {
-			mapKeysDirect = append(mapKeysDirect, k)
-		}
-	}
-
-	var writeMapKeys = func(mapKeys []string) {
-		sort.Strings(mapKeys)
-		for _, mapKey := range mapKeys {
-			mrv := rv.MapIndex(reflect.ValueOf(mapKey))
-			if isNil(mrv) {
-				// Don't write anything for nil fields.
-				continue
-			}
-			enc.encode(key.add(mapKey), mrv)
-		}
-	}
-	writeMapKeys(mapKeysDirect)
-	writeMapKeys(mapKeysSub)
-}
-
-func (enc *Encoder) eStruct(key Key, rv reflect.Value) {
-	// Write keys for fields directly under this key first, because if we write
-	// a field that creates a new table, then all keys under it will be in that
-	// table (not the one we're writing here).
-	rt := rv.Type()
-	var fieldsDirect, fieldsSub [][]int
-	var addFields func(rt reflect.Type, rv reflect.Value, start []int)
-	addFields = func(rt reflect.Type, rv reflect.Value, start []int) {
-		for i := 0; i < rt.NumField(); i++ {
-			f := rt.Field(i)
-			// skip unexported fields
-			if f.PkgPath != "" && !f.Anonymous {
-				continue
-			}
-			frv := rv.Field(i)
-			if f.Anonymous {
-				t := f.Type
-				switch t.Kind() {
-				case reflect.Struct:
-					// Treat anonymous struct fields with
-					// tag names as though they are not
-					// anonymous, like encoding/json does.
-					if getOptions(f.Tag).name == "" {
-						addFields(t, frv, f.Index)
-						continue
-					}
-				case reflect.Ptr:
-					if t.Elem().Kind() == reflect.Struct &&
-						getOptions(f.Tag).name == "" {
-						if !frv.IsNil() {
-							addFields(t.Elem(), frv.Elem(), f.Index)
-						}
-						continue
-					}
-					// Fall through to the normal field encoding logic below
-					// for non-struct anonymous fields.
-				}
-			}
-
-			if typeIsHash(tomlTypeOfGo(frv)) {
-				fieldsSub = append(fieldsSub, append(start, f.Index...))
-			} else {
-				fieldsDirect = append(fieldsDirect, append(start, f.Index...))
-			}
-		}
-	}
-	addFields(rt, rv, nil)
-
-	var writeFields = func(fields [][]int) {
-		for _, fieldIndex := range fields {
-			sft := rt.FieldByIndex(fieldIndex)
-			sf := rv.FieldByIndex(fieldIndex)
-			if isNil(sf) {
-				// Don't write anything for nil fields.
-				continue
-			}
-
-			opts := getOptions(sft.Tag)
-			if opts.skip {
-				continue
-			}
-			keyName := sft.Name
-			if opts.name != "" {
-				keyName = opts.name
-			}
-			if opts.omitempty && isEmpty(sf) {
-				continue
-			}
-			if opts.omitzero && isZero(sf) {
-				continue
-			}
-
-			enc.encode(key.add(keyName), sf)
-		}
-	}
-	writeFields(fieldsDirect)
-	writeFields(fieldsSub)
-}
-
-// tomlTypeName returns the TOML type name of the Go value's type. It is
-// used to determine whether the types of array elements are mixed (which is
-// forbidden). If the Go value is nil, then it is illegal for it to be an array
-// element, and valueIsNil is returned as true.
-
-// Returns the TOML type of a Go value. The type may be `nil`, which means
-// no concrete TOML type could be found.
-func tomlTypeOfGo(rv reflect.Value) tomlType {
-	if isNil(rv) || !rv.IsValid() {
-		return nil
-	}
-	switch rv.Kind() {
-	case reflect.Bool:
-		return tomlBool
-	case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32,
-		reflect.Int64,
-		reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32,
-		reflect.Uint64:
-		return tomlInteger
-	case reflect.Float32, reflect.Float64:
-		return tomlFloat
-	case reflect.Array, reflect.Slice:
-		if typeEqual(tomlHash, tomlArrayType(rv)) {
-			return tomlArrayHash
-		}
-		return tomlArray
-	case reflect.Ptr, reflect.Interface:
-		return tomlTypeOfGo(rv.Elem())
-	case reflect.String:
-		return tomlString
-	case reflect.Map:
-		return tomlHash
-	case reflect.Struct:
-		switch rv.Interface().(type) {
-		case time.Time:
-			return tomlDatetime
-		case TextMarshaler:
-			return tomlString
-		default:
-			return tomlHash
-		}
-	default:
-		panic("unexpected reflect.Kind: " + rv.Kind().String())
-	}
-}
-
-// tomlArrayType returns the element type of a TOML array. The type returned
-// may be nil if it cannot be determined (e.g., a nil slice or a zero length
-// slize). This function may also panic if it finds a type that cannot be
-// expressed in TOML (such as nil elements, heterogeneous arrays or directly
-// nested arrays of tables).
-func tomlArrayType(rv reflect.Value) tomlType {
-	if isNil(rv) || !rv.IsValid() || rv.Len() == 0 {
-		return nil
-	}
-	firstType := tomlTypeOfGo(rv.Index(0))
-	if firstType == nil {
-		encPanic(errArrayNilElement)
-	}
-
-	rvlen := rv.Len()
-	for i := 1; i < rvlen; i++ {
-		elem := rv.Index(i)
-		switch elemType := tomlTypeOfGo(elem); {
-		case elemType == nil:
-			encPanic(errArrayNilElement)
-		case !typeEqual(firstType, elemType):
-			encPanic(errArrayMixedElementTypes)
-		}
-	}
-	// If we have a nested array, then we must make sure that the nested
-	// array contains ONLY primitives.
-	// This checks arbitrarily nested arrays.
-	if typeEqual(firstType, tomlArray) || typeEqual(firstType, tomlArrayHash) {
-		nest := tomlArrayType(eindirect(rv.Index(0)))
-		if typeEqual(nest, tomlHash) || typeEqual(nest, tomlArrayHash) {
-			encPanic(errArrayNoTable)
-		}
-	}
-	return firstType
-}
-
-type tagOptions struct {
-	skip      bool // "-"
-	name      string
-	omitempty bool
-	omitzero  bool
-}
-
-func getOptions(tag reflect.StructTag) tagOptions {
-	t := tag.Get("toml")
-	if t == "-" {
-		return tagOptions{skip: true}
-	}
-	var opts tagOptions
-	parts := strings.Split(t, ",")
-	opts.name = parts[0]
-	for _, s := range parts[1:] {
-		switch s {
-		case "omitempty":
-			opts.omitempty = true
-		case "omitzero":
-			opts.omitzero = true
-		}
-	}
-	return opts
-}
-
-func isZero(rv reflect.Value) bool {
-	switch rv.Kind() {
-	case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
-		return rv.Int() == 0
-	case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
-		return rv.Uint() == 0
-	case reflect.Float32, reflect.Float64:
-		return rv.Float() == 0.0
-	}
-	return false
-}
-
-func isEmpty(rv reflect.Value) bool {
-	switch rv.Kind() {
-	case reflect.Array, reflect.Slice, reflect.Map, reflect.String:
-		return rv.Len() == 0
-	case reflect.Bool:
-		return !rv.Bool()
-	}
-	return false
-}
-
-func (enc *Encoder) newline() {
-	if enc.hasWritten {
-		enc.wf("\n")
-	}
-}
-
-func (enc *Encoder) keyEqElement(key Key, val reflect.Value) {
-	if len(key) == 0 {
-		encPanic(errNoKey)
-	}
-	panicIfInvalidKey(key)
-	enc.wf("%s%s = ", enc.indentStr(key), key.maybeQuoted(len(key)-1))
-	enc.eElement(val)
-	enc.newline()
-}
-
-func (enc *Encoder) wf(format string, v ...interface{}) {
-	if _, err := fmt.Fprintf(enc.w, format, v...); err != nil {
-		encPanic(err)
-	}
-	enc.hasWritten = true
-}
-
-func (enc *Encoder) indentStr(key Key) string {
-	return strings.Repeat(enc.Indent, len(key)-1)
-}
-
-func encPanic(err error) {
-	panic(tomlEncodeError{err})
-}
-
-func eindirect(v reflect.Value) reflect.Value {
-	switch v.Kind() {
-	case reflect.Ptr, reflect.Interface:
-		return eindirect(v.Elem())
-	default:
-		return v
-	}
-}
-
-func isNil(rv reflect.Value) bool {
-	switch rv.Kind() {
-	case reflect.Interface, reflect.Map, reflect.Ptr, reflect.Slice:
-		return rv.IsNil()
-	default:
-		return false
-	}
-}
-
-func panicIfInvalidKey(key Key) {
-	for _, k := range key {
-		if len(k) == 0 {
-			encPanic(e("Key '%s' is not a valid table name. Key names "+
-				"cannot be empty.", key.maybeQuotedAll()))
-		}
-	}
-}
-
-func isValidKeyName(s string) bool {
-	return len(s) != 0
-}

+ 0 - 19
vendor/github.com/BurntSushi/toml/encoding_types.go

@@ -1,19 +0,0 @@
-// +build go1.2
-
-package toml
-
-// In order to support Go 1.1, we define our own TextMarshaler and
-// TextUnmarshaler types. For Go 1.2+, we just alias them with the
-// standard library interfaces.
-
-import (
-	"encoding"
-)
-
-// TextMarshaler is a synonym for encoding.TextMarshaler. It is defined here
-// so that Go 1.1 can be supported.
-type TextMarshaler encoding.TextMarshaler
-
-// TextUnmarshaler is a synonym for encoding.TextUnmarshaler. It is defined
-// here so that Go 1.1 can be supported.
-type TextUnmarshaler encoding.TextUnmarshaler

+ 0 - 18
vendor/github.com/BurntSushi/toml/encoding_types_1.1.go

@@ -1,18 +0,0 @@
-// +build !go1.2
-
-package toml
-
-// These interfaces were introduced in Go 1.2, so we add them manually when
-// compiling for Go 1.1.
-
-// TextMarshaler is a synonym for encoding.TextMarshaler. It is defined here
-// so that Go 1.1 can be supported.
-type TextMarshaler interface {
-	MarshalText() (text []byte, err error)
-}
-
-// TextUnmarshaler is a synonym for encoding.TextUnmarshaler. It is defined
-// here so that Go 1.1 can be supported.
-type TextUnmarshaler interface {
-	UnmarshalText(text []byte) error
-}

+ 0 - 953
vendor/github.com/BurntSushi/toml/lex.go

@@ -1,953 +0,0 @@
-package toml
-
-import (
-	"fmt"
-	"strings"
-	"unicode"
-	"unicode/utf8"
-)
-
-type itemType int
-
-const (
-	itemError itemType = iota
-	itemNIL            // used in the parser to indicate no type
-	itemEOF
-	itemText
-	itemString
-	itemRawString
-	itemMultilineString
-	itemRawMultilineString
-	itemBool
-	itemInteger
-	itemFloat
-	itemDatetime
-	itemArray // the start of an array
-	itemArrayEnd
-	itemTableStart
-	itemTableEnd
-	itemArrayTableStart
-	itemArrayTableEnd
-	itemKeyStart
-	itemCommentStart
-	itemInlineTableStart
-	itemInlineTableEnd
-)
-
-const (
-	eof              = 0
-	comma            = ','
-	tableStart       = '['
-	tableEnd         = ']'
-	arrayTableStart  = '['
-	arrayTableEnd    = ']'
-	tableSep         = '.'
-	keySep           = '='
-	arrayStart       = '['
-	arrayEnd         = ']'
-	commentStart     = '#'
-	stringStart      = '"'
-	stringEnd        = '"'
-	rawStringStart   = '\''
-	rawStringEnd     = '\''
-	inlineTableStart = '{'
-	inlineTableEnd   = '}'
-)
-
-type stateFn func(lx *lexer) stateFn
-
-type lexer struct {
-	input string
-	start int
-	pos   int
-	line  int
-	state stateFn
-	items chan item
-
-	// Allow for backing up up to three runes.
-	// This is necessary because TOML contains 3-rune tokens (""" and ''').
-	prevWidths [3]int
-	nprev      int // how many of prevWidths are in use
-	// If we emit an eof, we can still back up, but it is not OK to call
-	// next again.
-	atEOF bool
-
-	// A stack of state functions used to maintain context.
-	// The idea is to reuse parts of the state machine in various places.
-	// For example, values can appear at the top level or within arbitrarily
-	// nested arrays. The last state on the stack is used after a value has
-	// been lexed. Similarly for comments.
-	stack []stateFn
-}
-
-type item struct {
-	typ  itemType
-	val  string
-	line int
-}
-
-func (lx *lexer) nextItem() item {
-	for {
-		select {
-		case item := <-lx.items:
-			return item
-		default:
-			lx.state = lx.state(lx)
-		}
-	}
-}
-
-func lex(input string) *lexer {
-	lx := &lexer{
-		input: input,
-		state: lexTop,
-		line:  1,
-		items: make(chan item, 10),
-		stack: make([]stateFn, 0, 10),
-	}
-	return lx
-}
-
-func (lx *lexer) push(state stateFn) {
-	lx.stack = append(lx.stack, state)
-}
-
-func (lx *lexer) pop() stateFn {
-	if len(lx.stack) == 0 {
-		return lx.errorf("BUG in lexer: no states to pop")
-	}
-	last := lx.stack[len(lx.stack)-1]
-	lx.stack = lx.stack[0 : len(lx.stack)-1]
-	return last
-}
-
-func (lx *lexer) current() string {
-	return lx.input[lx.start:lx.pos]
-}
-
-func (lx *lexer) emit(typ itemType) {
-	lx.items <- item{typ, lx.current(), lx.line}
-	lx.start = lx.pos
-}
-
-func (lx *lexer) emitTrim(typ itemType) {
-	lx.items <- item{typ, strings.TrimSpace(lx.current()), lx.line}
-	lx.start = lx.pos
-}
-
-func (lx *lexer) next() (r rune) {
-	if lx.atEOF {
-		panic("next called after EOF")
-	}
-	if lx.pos >= len(lx.input) {
-		lx.atEOF = true
-		return eof
-	}
-
-	if lx.input[lx.pos] == '\n' {
-		lx.line++
-	}
-	lx.prevWidths[2] = lx.prevWidths[1]
-	lx.prevWidths[1] = lx.prevWidths[0]
-	if lx.nprev < 3 {
-		lx.nprev++
-	}
-	r, w := utf8.DecodeRuneInString(lx.input[lx.pos:])
-	lx.prevWidths[0] = w
-	lx.pos += w
-	return r
-}
-
-// ignore skips over the pending input before this point.
-func (lx *lexer) ignore() {
-	lx.start = lx.pos
-}
-
-// backup steps back one rune. Can be called only twice between calls to next.
-func (lx *lexer) backup() {
-	if lx.atEOF {
-		lx.atEOF = false
-		return
-	}
-	if lx.nprev < 1 {
-		panic("backed up too far")
-	}
-	w := lx.prevWidths[0]
-	lx.prevWidths[0] = lx.prevWidths[1]
-	lx.prevWidths[1] = lx.prevWidths[2]
-	lx.nprev--
-	lx.pos -= w
-	if lx.pos < len(lx.input) && lx.input[lx.pos] == '\n' {
-		lx.line--
-	}
-}
-
-// accept consumes the next rune if it's equal to `valid`.
-func (lx *lexer) accept(valid rune) bool {
-	if lx.next() == valid {
-		return true
-	}
-	lx.backup()
-	return false
-}
-
-// peek returns but does not consume the next rune in the input.
-func (lx *lexer) peek() rune {
-	r := lx.next()
-	lx.backup()
-	return r
-}
-
-// skip ignores all input that matches the given predicate.
-func (lx *lexer) skip(pred func(rune) bool) {
-	for {
-		r := lx.next()
-		if pred(r) {
-			continue
-		}
-		lx.backup()
-		lx.ignore()
-		return
-	}
-}
-
-// errorf stops all lexing by emitting an error and returning `nil`.
-// Note that any value that is a character is escaped if it's a special
-// character (newlines, tabs, etc.).
-func (lx *lexer) errorf(format string, values ...interface{}) stateFn {
-	lx.items <- item{
-		itemError,
-		fmt.Sprintf(format, values...),
-		lx.line,
-	}
-	return nil
-}
-
-// lexTop consumes elements at the top level of TOML data.
-func lexTop(lx *lexer) stateFn {
-	r := lx.next()
-	if isWhitespace(r) || isNL(r) {
-		return lexSkip(lx, lexTop)
-	}
-	switch r {
-	case commentStart:
-		lx.push(lexTop)
-		return lexCommentStart
-	case tableStart:
-		return lexTableStart
-	case eof:
-		if lx.pos > lx.start {
-			return lx.errorf("unexpected EOF")
-		}
-		lx.emit(itemEOF)
-		return nil
-	}
-
-	// At this point, the only valid item can be a key, so we back up
-	// and let the key lexer do the rest.
-	lx.backup()
-	lx.push(lexTopEnd)
-	return lexKeyStart
-}
-
-// lexTopEnd is entered whenever a top-level item has been consumed. (A value
-// or a table.) It must see only whitespace, and will turn back to lexTop
-// upon a newline. If it sees EOF, it will quit the lexer successfully.
-func lexTopEnd(lx *lexer) stateFn {
-	r := lx.next()
-	switch {
-	case r == commentStart:
-		// a comment will read to a newline for us.
-		lx.push(lexTop)
-		return lexCommentStart
-	case isWhitespace(r):
-		return lexTopEnd
-	case isNL(r):
-		lx.ignore()
-		return lexTop
-	case r == eof:
-		lx.emit(itemEOF)
-		return nil
-	}
-	return lx.errorf("expected a top-level item to end with a newline, "+
-		"comment, or EOF, but got %q instead", r)
-}
-
-// lexTable lexes the beginning of a table. Namely, it makes sure that
-// it starts with a character other than '.' and ']'.
-// It assumes that '[' has already been consumed.
-// It also handles the case that this is an item in an array of tables.
-// e.g., '[[name]]'.
-func lexTableStart(lx *lexer) stateFn {
-	if lx.peek() == arrayTableStart {
-		lx.next()
-		lx.emit(itemArrayTableStart)
-		lx.push(lexArrayTableEnd)
-	} else {
-		lx.emit(itemTableStart)
-		lx.push(lexTableEnd)
-	}
-	return lexTableNameStart
-}
-
-func lexTableEnd(lx *lexer) stateFn {
-	lx.emit(itemTableEnd)
-	return lexTopEnd
-}
-
-func lexArrayTableEnd(lx *lexer) stateFn {
-	if r := lx.next(); r != arrayTableEnd {
-		return lx.errorf("expected end of table array name delimiter %q, "+
-			"but got %q instead", arrayTableEnd, r)
-	}
-	lx.emit(itemArrayTableEnd)
-	return lexTopEnd
-}
-
-func lexTableNameStart(lx *lexer) stateFn {
-	lx.skip(isWhitespace)
-	switch r := lx.peek(); {
-	case r == tableEnd || r == eof:
-		return lx.errorf("unexpected end of table name " +
-			"(table names cannot be empty)")
-	case r == tableSep:
-		return lx.errorf("unexpected table separator " +
-			"(table names cannot be empty)")
-	case r == stringStart || r == rawStringStart:
-		lx.ignore()
-		lx.push(lexTableNameEnd)
-		return lexValue // reuse string lexing
-	default:
-		return lexBareTableName
-	}
-}
-
-// lexBareTableName lexes the name of a table. It assumes that at least one
-// valid character for the table has already been read.
-func lexBareTableName(lx *lexer) stateFn {
-	r := lx.next()
-	if isBareKeyChar(r) {
-		return lexBareTableName
-	}
-	lx.backup()
-	lx.emit(itemText)
-	return lexTableNameEnd
-}
-
-// lexTableNameEnd reads the end of a piece of a table name, optionally
-// consuming whitespace.
-func lexTableNameEnd(lx *lexer) stateFn {
-	lx.skip(isWhitespace)
-	switch r := lx.next(); {
-	case isWhitespace(r):
-		return lexTableNameEnd
-	case r == tableSep:
-		lx.ignore()
-		return lexTableNameStart
-	case r == tableEnd:
-		return lx.pop()
-	default:
-		return lx.errorf("expected '.' or ']' to end table name, "+
-			"but got %q instead", r)
-	}
-}
-
-// lexKeyStart consumes a key name up until the first non-whitespace character.
-// lexKeyStart will ignore whitespace.
-func lexKeyStart(lx *lexer) stateFn {
-	r := lx.peek()
-	switch {
-	case r == keySep:
-		return lx.errorf("unexpected key separator %q", keySep)
-	case isWhitespace(r) || isNL(r):
-		lx.next()
-		return lexSkip(lx, lexKeyStart)
-	case r == stringStart || r == rawStringStart:
-		lx.ignore()
-		lx.emit(itemKeyStart)
-		lx.push(lexKeyEnd)
-		return lexValue // reuse string lexing
-	default:
-		lx.ignore()
-		lx.emit(itemKeyStart)
-		return lexBareKey
-	}
-}
-
-// lexBareKey consumes the text of a bare key. Assumes that the first character
-// (which is not whitespace) has not yet been consumed.
-func lexBareKey(lx *lexer) stateFn {
-	switch r := lx.next(); {
-	case isBareKeyChar(r):
-		return lexBareKey
-	case isWhitespace(r):
-		lx.backup()
-		lx.emit(itemText)
-		return lexKeyEnd
-	case r == keySep:
-		lx.backup()
-		lx.emit(itemText)
-		return lexKeyEnd
-	default:
-		return lx.errorf("bare keys cannot contain %q", r)
-	}
-}
-
-// lexKeyEnd consumes the end of a key and trims whitespace (up to the key
-// separator).
-func lexKeyEnd(lx *lexer) stateFn {
-	switch r := lx.next(); {
-	case r == keySep:
-		return lexSkip(lx, lexValue)
-	case isWhitespace(r):
-		return lexSkip(lx, lexKeyEnd)
-	default:
-		return lx.errorf("expected key separator %q, but got %q instead",
-			keySep, r)
-	}
-}
-
-// lexValue starts the consumption of a value anywhere a value is expected.
-// lexValue will ignore whitespace.
-// After a value is lexed, the last state on the next is popped and returned.
-func lexValue(lx *lexer) stateFn {
-	// We allow whitespace to precede a value, but NOT newlines.
-	// In array syntax, the array states are responsible for ignoring newlines.
-	r := lx.next()
-	switch {
-	case isWhitespace(r):
-		return lexSkip(lx, lexValue)
-	case isDigit(r):
-		lx.backup() // avoid an extra state and use the same as above
-		return lexNumberOrDateStart
-	}
-	switch r {
-	case arrayStart:
-		lx.ignore()
-		lx.emit(itemArray)
-		return lexArrayValue
-	case inlineTableStart:
-		lx.ignore()
-		lx.emit(itemInlineTableStart)
-		return lexInlineTableValue
-	case stringStart:
-		if lx.accept(stringStart) {
-			if lx.accept(stringStart) {
-				lx.ignore() // Ignore """
-				return lexMultilineString
-			}
-			lx.backup()
-		}
-		lx.ignore() // ignore the '"'
-		return lexString
-	case rawStringStart:
-		if lx.accept(rawStringStart) {
-			if lx.accept(rawStringStart) {
-				lx.ignore() // Ignore """
-				return lexMultilineRawString
-			}
-			lx.backup()
-		}
-		lx.ignore() // ignore the "'"
-		return lexRawString
-	case '+', '-':
-		return lexNumberStart
-	case '.': // special error case, be kind to users
-		return lx.errorf("floats must start with a digit, not '.'")
-	}
-	if unicode.IsLetter(r) {
-		// Be permissive here; lexBool will give a nice error if the
-		// user wrote something like
-		//   x = foo
-		// (i.e. not 'true' or 'false' but is something else word-like.)
-		lx.backup()
-		return lexBool
-	}
-	return lx.errorf("expected value but found %q instead", r)
-}
-
-// lexArrayValue consumes one value in an array. It assumes that '[' or ','
-// have already been consumed. All whitespace and newlines are ignored.
-func lexArrayValue(lx *lexer) stateFn {
-	r := lx.next()
-	switch {
-	case isWhitespace(r) || isNL(r):
-		return lexSkip(lx, lexArrayValue)
-	case r == commentStart:
-		lx.push(lexArrayValue)
-		return lexCommentStart
-	case r == comma:
-		return lx.errorf("unexpected comma")
-	case r == arrayEnd:
-		// NOTE(caleb): The spec isn't clear about whether you can have
-		// a trailing comma or not, so we'll allow it.
-		return lexArrayEnd
-	}
-
-	lx.backup()
-	lx.push(lexArrayValueEnd)
-	return lexValue
-}
-
-// lexArrayValueEnd consumes everything between the end of an array value and
-// the next value (or the end of the array): it ignores whitespace and newlines
-// and expects either a ',' or a ']'.
-func lexArrayValueEnd(lx *lexer) stateFn {
-	r := lx.next()
-	switch {
-	case isWhitespace(r) || isNL(r):
-		return lexSkip(lx, lexArrayValueEnd)
-	case r == commentStart:
-		lx.push(lexArrayValueEnd)
-		return lexCommentStart
-	case r == comma:
-		lx.ignore()
-		return lexArrayValue // move on to the next value
-	case r == arrayEnd:
-		return lexArrayEnd
-	}
-	return lx.errorf(
-		"expected a comma or array terminator %q, but got %q instead",
-		arrayEnd, r,
-	)
-}
-
-// lexArrayEnd finishes the lexing of an array.
-// It assumes that a ']' has just been consumed.
-func lexArrayEnd(lx *lexer) stateFn {
-	lx.ignore()
-	lx.emit(itemArrayEnd)
-	return lx.pop()
-}
-
-// lexInlineTableValue consumes one key/value pair in an inline table.
-// It assumes that '{' or ',' have already been consumed. Whitespace is ignored.
-func lexInlineTableValue(lx *lexer) stateFn {
-	r := lx.next()
-	switch {
-	case isWhitespace(r):
-		return lexSkip(lx, lexInlineTableValue)
-	case isNL(r):
-		return lx.errorf("newlines not allowed within inline tables")
-	case r == commentStart:
-		lx.push(lexInlineTableValue)
-		return lexCommentStart
-	case r == comma:
-		return lx.errorf("unexpected comma")
-	case r == inlineTableEnd:
-		return lexInlineTableEnd
-	}
-	lx.backup()
-	lx.push(lexInlineTableValueEnd)
-	return lexKeyStart
-}
-
-// lexInlineTableValueEnd consumes everything between the end of an inline table
-// key/value pair and the next pair (or the end of the table):
-// it ignores whitespace and expects either a ',' or a '}'.
-func lexInlineTableValueEnd(lx *lexer) stateFn {
-	r := lx.next()
-	switch {
-	case isWhitespace(r):
-		return lexSkip(lx, lexInlineTableValueEnd)
-	case isNL(r):
-		return lx.errorf("newlines not allowed within inline tables")
-	case r == commentStart:
-		lx.push(lexInlineTableValueEnd)
-		return lexCommentStart
-	case r == comma:
-		lx.ignore()
-		return lexInlineTableValue
-	case r == inlineTableEnd:
-		return lexInlineTableEnd
-	}
-	return lx.errorf("expected a comma or an inline table terminator %q, "+
-		"but got %q instead", inlineTableEnd, r)
-}
-
-// lexInlineTableEnd finishes the lexing of an inline table.
-// It assumes that a '}' has just been consumed.
-func lexInlineTableEnd(lx *lexer) stateFn {
-	lx.ignore()
-	lx.emit(itemInlineTableEnd)
-	return lx.pop()
-}
-
-// lexString consumes the inner contents of a string. It assumes that the
-// beginning '"' has already been consumed and ignored.
-func lexString(lx *lexer) stateFn {
-	r := lx.next()
-	switch {
-	case r == eof:
-		return lx.errorf("unexpected EOF")
-	case isNL(r):
-		return lx.errorf("strings cannot contain newlines")
-	case r == '\\':
-		lx.push(lexString)
-		return lexStringEscape
-	case r == stringEnd:
-		lx.backup()
-		lx.emit(itemString)
-		lx.next()
-		lx.ignore()
-		return lx.pop()
-	}
-	return lexString
-}
-
-// lexMultilineString consumes the inner contents of a string. It assumes that
-// the beginning '"""' has already been consumed and ignored.
-func lexMultilineString(lx *lexer) stateFn {
-	switch lx.next() {
-	case eof:
-		return lx.errorf("unexpected EOF")
-	case '\\':
-		return lexMultilineStringEscape
-	case stringEnd:
-		if lx.accept(stringEnd) {
-			if lx.accept(stringEnd) {
-				lx.backup()
-				lx.backup()
-				lx.backup()
-				lx.emit(itemMultilineString)
-				lx.next()
-				lx.next()
-				lx.next()
-				lx.ignore()
-				return lx.pop()
-			}
-			lx.backup()
-		}
-	}
-	return lexMultilineString
-}
-
-// lexRawString consumes a raw string. Nothing can be escaped in such a string.
-// It assumes that the beginning "'" has already been consumed and ignored.
-func lexRawString(lx *lexer) stateFn {
-	r := lx.next()
-	switch {
-	case r == eof:
-		return lx.errorf("unexpected EOF")
-	case isNL(r):
-		return lx.errorf("strings cannot contain newlines")
-	case r == rawStringEnd:
-		lx.backup()
-		lx.emit(itemRawString)
-		lx.next()
-		lx.ignore()
-		return lx.pop()
-	}
-	return lexRawString
-}
-
-// lexMultilineRawString consumes a raw string. Nothing can be escaped in such
-// a string. It assumes that the beginning "'''" has already been consumed and
-// ignored.
-func lexMultilineRawString(lx *lexer) stateFn {
-	switch lx.next() {
-	case eof:
-		return lx.errorf("unexpected EOF")
-	case rawStringEnd:
-		if lx.accept(rawStringEnd) {
-			if lx.accept(rawStringEnd) {
-				lx.backup()
-				lx.backup()
-				lx.backup()
-				lx.emit(itemRawMultilineString)
-				lx.next()
-				lx.next()
-				lx.next()
-				lx.ignore()
-				return lx.pop()
-			}
-			lx.backup()
-		}
-	}
-	return lexMultilineRawString
-}
-
-// lexMultilineStringEscape consumes an escaped character. It assumes that the
-// preceding '\\' has already been consumed.
-func lexMultilineStringEscape(lx *lexer) stateFn {
-	// Handle the special case first:
-	if isNL(lx.next()) {
-		return lexMultilineString
-	}
-	lx.backup()
-	lx.push(lexMultilineString)
-	return lexStringEscape(lx)
-}
-
-func lexStringEscape(lx *lexer) stateFn {
-	r := lx.next()
-	switch r {
-	case 'b':
-		fallthrough
-	case 't':
-		fallthrough
-	case 'n':
-		fallthrough
-	case 'f':
-		fallthrough
-	case 'r':
-		fallthrough
-	case '"':
-		fallthrough
-	case '\\':
-		return lx.pop()
-	case 'u':
-		return lexShortUnicodeEscape
-	case 'U':
-		return lexLongUnicodeEscape
-	}
-	return lx.errorf("invalid escape character %q; only the following "+
-		"escape characters are allowed: "+
-		`\b, \t, \n, \f, \r, \", \\, \uXXXX, and \UXXXXXXXX`, r)
-}
-
-func lexShortUnicodeEscape(lx *lexer) stateFn {
-	var r rune
-	for i := 0; i < 4; i++ {
-		r = lx.next()
-		if !isHexadecimal(r) {
-			return lx.errorf(`expected four hexadecimal digits after '\u', `+
-				"but got %q instead", lx.current())
-		}
-	}
-	return lx.pop()
-}
-
-func lexLongUnicodeEscape(lx *lexer) stateFn {
-	var r rune
-	for i := 0; i < 8; i++ {
-		r = lx.next()
-		if !isHexadecimal(r) {
-			return lx.errorf(`expected eight hexadecimal digits after '\U', `+
-				"but got %q instead", lx.current())
-		}
-	}
-	return lx.pop()
-}
-
-// lexNumberOrDateStart consumes either an integer, a float, or datetime.
-func lexNumberOrDateStart(lx *lexer) stateFn {
-	r := lx.next()
-	if isDigit(r) {
-		return lexNumberOrDate
-	}
-	switch r {
-	case '_':
-		return lexNumber
-	case 'e', 'E':
-		return lexFloat
-	case '.':
-		return lx.errorf("floats must start with a digit, not '.'")
-	}
-	return lx.errorf("expected a digit but got %q", r)
-}
-
-// lexNumberOrDate consumes either an integer, float or datetime.
-func lexNumberOrDate(lx *lexer) stateFn {
-	r := lx.next()
-	if isDigit(r) {
-		return lexNumberOrDate
-	}
-	switch r {
-	case '-':
-		return lexDatetime
-	case '_':
-		return lexNumber
-	case '.', 'e', 'E':
-		return lexFloat
-	}
-
-	lx.backup()
-	lx.emit(itemInteger)
-	return lx.pop()
-}
-
-// lexDatetime consumes a Datetime, to a first approximation.
-// The parser validates that it matches one of the accepted formats.
-func lexDatetime(lx *lexer) stateFn {
-	r := lx.next()
-	if isDigit(r) {
-		return lexDatetime
-	}
-	switch r {
-	case '-', 'T', ':', '.', 'Z', '+':
-		return lexDatetime
-	}
-
-	lx.backup()
-	lx.emit(itemDatetime)
-	return lx.pop()
-}
-
-// lexNumberStart consumes either an integer or a float. It assumes that a sign
-// has already been read, but that *no* digits have been consumed.
-// lexNumberStart will move to the appropriate integer or float states.
-func lexNumberStart(lx *lexer) stateFn {
-	// We MUST see a digit. Even floats have to start with a digit.
-	r := lx.next()
-	if !isDigit(r) {
-		if r == '.' {
-			return lx.errorf("floats must start with a digit, not '.'")
-		}
-		return lx.errorf("expected a digit but got %q", r)
-	}
-	return lexNumber
-}
-
-// lexNumber consumes an integer or a float after seeing the first digit.
-func lexNumber(lx *lexer) stateFn {
-	r := lx.next()
-	if isDigit(r) {
-		return lexNumber
-	}
-	switch r {
-	case '_':
-		return lexNumber
-	case '.', 'e', 'E':
-		return lexFloat
-	}
-
-	lx.backup()
-	lx.emit(itemInteger)
-	return lx.pop()
-}
-
-// lexFloat consumes the elements of a float. It allows any sequence of
-// float-like characters, so floats emitted by the lexer are only a first
-// approximation and must be validated by the parser.
-func lexFloat(lx *lexer) stateFn {
-	r := lx.next()
-	if isDigit(r) {
-		return lexFloat
-	}
-	switch r {
-	case '_', '.', '-', '+', 'e', 'E':
-		return lexFloat
-	}
-
-	lx.backup()
-	lx.emit(itemFloat)
-	return lx.pop()
-}
-
-// lexBool consumes a bool string: 'true' or 'false.
-func lexBool(lx *lexer) stateFn {
-	var rs []rune
-	for {
-		r := lx.next()
-		if !unicode.IsLetter(r) {
-			lx.backup()
-			break
-		}
-		rs = append(rs, r)
-	}
-	s := string(rs)
-	switch s {
-	case "true", "false":
-		lx.emit(itemBool)
-		return lx.pop()
-	}
-	return lx.errorf("expected value but found %q instead", s)
-}
-
-// lexCommentStart begins the lexing of a comment. It will emit
-// itemCommentStart and consume no characters, passing control to lexComment.
-func lexCommentStart(lx *lexer) stateFn {
-	lx.ignore()
-	lx.emit(itemCommentStart)
-	return lexComment
-}
-
-// lexComment lexes an entire comment. It assumes that '#' has been consumed.
-// It will consume *up to* the first newline character, and pass control
-// back to the last state on the stack.
-func lexComment(lx *lexer) stateFn {
-	r := lx.peek()
-	if isNL(r) || r == eof {
-		lx.emit(itemText)
-		return lx.pop()
-	}
-	lx.next()
-	return lexComment
-}
-
-// lexSkip ignores all slurped input and moves on to the next state.
-func lexSkip(lx *lexer, nextState stateFn) stateFn {
-	return func(lx *lexer) stateFn {
-		lx.ignore()
-		return nextState
-	}
-}
-
-// isWhitespace returns true if `r` is a whitespace character according
-// to the spec.
-func isWhitespace(r rune) bool {
-	return r == '\t' || r == ' '
-}
-
-func isNL(r rune) bool {
-	return r == '\n' || r == '\r'
-}
-
-func isDigit(r rune) bool {
-	return r >= '0' && r <= '9'
-}
-
-func isHexadecimal(r rune) bool {
-	return (r >= '0' && r <= '9') ||
-		(r >= 'a' && r <= 'f') ||
-		(r >= 'A' && r <= 'F')
-}
-
-func isBareKeyChar(r rune) bool {
-	return (r >= 'A' && r <= 'Z') ||
-		(r >= 'a' && r <= 'z') ||
-		(r >= '0' && r <= '9') ||
-		r == '_' ||
-		r == '-'
-}
-
-func (itype itemType) String() string {
-	switch itype {
-	case itemError:
-		return "Error"
-	case itemNIL:
-		return "NIL"
-	case itemEOF:
-		return "EOF"
-	case itemText:
-		return "Text"
-	case itemString, itemRawString, itemMultilineString, itemRawMultilineString:
-		return "String"
-	case itemBool:
-		return "Bool"
-	case itemInteger:
-		return "Integer"
-	case itemFloat:
-		return "Float"
-	case itemDatetime:
-		return "DateTime"
-	case itemTableStart:
-		return "TableStart"
-	case itemTableEnd:
-		return "TableEnd"
-	case itemKeyStart:
-		return "KeyStart"
-	case itemArray:
-		return "Array"
-	case itemArrayEnd:
-		return "ArrayEnd"
-	case itemCommentStart:
-		return "CommentStart"
-	}
-	panic(fmt.Sprintf("BUG: Unknown type '%d'.", int(itype)))
-}
-
-func (item item) String() string {
-	return fmt.Sprintf("(%s, %s)", item.typ.String(), item.val)
-}

+ 0 - 592
vendor/github.com/BurntSushi/toml/parse.go

@@ -1,592 +0,0 @@
-package toml
-
-import (
-	"fmt"
-	"strconv"
-	"strings"
-	"time"
-	"unicode"
-	"unicode/utf8"
-)
-
-type parser struct {
-	mapping map[string]interface{}
-	types   map[string]tomlType
-	lx      *lexer
-
-	// A list of keys in the order that they appear in the TOML data.
-	ordered []Key
-
-	// the full key for the current hash in scope
-	context Key
-
-	// the base key name for everything except hashes
-	currentKey string
-
-	// rough approximation of line number
-	approxLine int
-
-	// A map of 'key.group.names' to whether they were created implicitly.
-	implicits map[string]bool
-}
-
-type parseError string
-
-func (pe parseError) Error() string {
-	return string(pe)
-}
-
-func parse(data string) (p *parser, err error) {
-	defer func() {
-		if r := recover(); r != nil {
-			var ok bool
-			if err, ok = r.(parseError); ok {
-				return
-			}
-			panic(r)
-		}
-	}()
-
-	p = &parser{
-		mapping:   make(map[string]interface{}),
-		types:     make(map[string]tomlType),
-		lx:        lex(data),
-		ordered:   make([]Key, 0),
-		implicits: make(map[string]bool),
-	}
-	for {
-		item := p.next()
-		if item.typ == itemEOF {
-			break
-		}
-		p.topLevel(item)
-	}
-
-	return p, nil
-}
-
-func (p *parser) panicf(format string, v ...interface{}) {
-	msg := fmt.Sprintf("Near line %d (last key parsed '%s'): %s",
-		p.approxLine, p.current(), fmt.Sprintf(format, v...))
-	panic(parseError(msg))
-}
-
-func (p *parser) next() item {
-	it := p.lx.nextItem()
-	if it.typ == itemError {
-		p.panicf("%s", it.val)
-	}
-	return it
-}
-
-func (p *parser) bug(format string, v ...interface{}) {
-	panic(fmt.Sprintf("BUG: "+format+"\n\n", v...))
-}
-
-func (p *parser) expect(typ itemType) item {
-	it := p.next()
-	p.assertEqual(typ, it.typ)
-	return it
-}
-
-func (p *parser) assertEqual(expected, got itemType) {
-	if expected != got {
-		p.bug("Expected '%s' but got '%s'.", expected, got)
-	}
-}
-
-func (p *parser) topLevel(item item) {
-	switch item.typ {
-	case itemCommentStart:
-		p.approxLine = item.line
-		p.expect(itemText)
-	case itemTableStart:
-		kg := p.next()
-		p.approxLine = kg.line
-
-		var key Key
-		for ; kg.typ != itemTableEnd && kg.typ != itemEOF; kg = p.next() {
-			key = append(key, p.keyString(kg))
-		}
-		p.assertEqual(itemTableEnd, kg.typ)
-
-		p.establishContext(key, false)
-		p.setType("", tomlHash)
-		p.ordered = append(p.ordered, key)
-	case itemArrayTableStart:
-		kg := p.next()
-		p.approxLine = kg.line
-
-		var key Key
-		for ; kg.typ != itemArrayTableEnd && kg.typ != itemEOF; kg = p.next() {
-			key = append(key, p.keyString(kg))
-		}
-		p.assertEqual(itemArrayTableEnd, kg.typ)
-
-		p.establishContext(key, true)
-		p.setType("", tomlArrayHash)
-		p.ordered = append(p.ordered, key)
-	case itemKeyStart:
-		kname := p.next()
-		p.approxLine = kname.line
-		p.currentKey = p.keyString(kname)
-
-		val, typ := p.value(p.next())
-		p.setValue(p.currentKey, val)
-		p.setType(p.currentKey, typ)
-		p.ordered = append(p.ordered, p.context.add(p.currentKey))
-		p.currentKey = ""
-	default:
-		p.bug("Unexpected type at top level: %s", item.typ)
-	}
-}
-
-// Gets a string for a key (or part of a key in a table name).
-func (p *parser) keyString(it item) string {
-	switch it.typ {
-	case itemText:
-		return it.val
-	case itemString, itemMultilineString,
-		itemRawString, itemRawMultilineString:
-		s, _ := p.value(it)
-		return s.(string)
-	default:
-		p.bug("Unexpected key type: %s", it.typ)
-		panic("unreachable")
-	}
-}
-
-// value translates an expected value from the lexer into a Go value wrapped
-// as an empty interface.
-func (p *parser) value(it item) (interface{}, tomlType) {
-	switch it.typ {
-	case itemString:
-		return p.replaceEscapes(it.val), p.typeOfPrimitive(it)
-	case itemMultilineString:
-		trimmed := stripFirstNewline(stripEscapedWhitespace(it.val))
-		return p.replaceEscapes(trimmed), p.typeOfPrimitive(it)
-	case itemRawString:
-		return it.val, p.typeOfPrimitive(it)
-	case itemRawMultilineString:
-		return stripFirstNewline(it.val), p.typeOfPrimitive(it)
-	case itemBool:
-		switch it.val {
-		case "true":
-			return true, p.typeOfPrimitive(it)
-		case "false":
-			return false, p.typeOfPrimitive(it)
-		}
-		p.bug("Expected boolean value, but got '%s'.", it.val)
-	case itemInteger:
-		if !numUnderscoresOK(it.val) {
-			p.panicf("Invalid integer %q: underscores must be surrounded by digits",
-				it.val)
-		}
-		val := strings.Replace(it.val, "_", "", -1)
-		num, err := strconv.ParseInt(val, 10, 64)
-		if err != nil {
-			// Distinguish integer values. Normally, it'd be a bug if the lexer
-			// provides an invalid integer, but it's possible that the number is
-			// out of range of valid values (which the lexer cannot determine).
-			// So mark the former as a bug but the latter as a legitimate user
-			// error.
-			if e, ok := err.(*strconv.NumError); ok &&
-				e.Err == strconv.ErrRange {
-
-				p.panicf("Integer '%s' is out of the range of 64-bit "+
-					"signed integers.", it.val)
-			} else {
-				p.bug("Expected integer value, but got '%s'.", it.val)
-			}
-		}
-		return num, p.typeOfPrimitive(it)
-	case itemFloat:
-		parts := strings.FieldsFunc(it.val, func(r rune) bool {
-			switch r {
-			case '.', 'e', 'E':
-				return true
-			}
-			return false
-		})
-		for _, part := range parts {
-			if !numUnderscoresOK(part) {
-				p.panicf("Invalid float %q: underscores must be "+
-					"surrounded by digits", it.val)
-			}
-		}
-		if !numPeriodsOK(it.val) {
-			// As a special case, numbers like '123.' or '1.e2',
-			// which are valid as far as Go/strconv are concerned,
-			// must be rejected because TOML says that a fractional
-			// part consists of '.' followed by 1+ digits.
-			p.panicf("Invalid float %q: '.' must be followed "+
-				"by one or more digits", it.val)
-		}
-		val := strings.Replace(it.val, "_", "", -1)
-		num, err := strconv.ParseFloat(val, 64)
-		if err != nil {
-			if e, ok := err.(*strconv.NumError); ok &&
-				e.Err == strconv.ErrRange {
-
-				p.panicf("Float '%s' is out of the range of 64-bit "+
-					"IEEE-754 floating-point numbers.", it.val)
-			} else {
-				p.panicf("Invalid float value: %q", it.val)
-			}
-		}
-		return num, p.typeOfPrimitive(it)
-	case itemDatetime:
-		var t time.Time
-		var ok bool
-		var err error
-		for _, format := range []string{
-			"2006-01-02T15:04:05Z07:00",
-			"2006-01-02T15:04:05",
-			"2006-01-02",
-		} {
-			t, err = time.ParseInLocation(format, it.val, time.Local)
-			if err == nil {
-				ok = true
-				break
-			}
-		}
-		if !ok {
-			p.panicf("Invalid TOML Datetime: %q.", it.val)
-		}
-		return t, p.typeOfPrimitive(it)
-	case itemArray:
-		array := make([]interface{}, 0)
-		types := make([]tomlType, 0)
-
-		for it = p.next(); it.typ != itemArrayEnd; it = p.next() {
-			if it.typ == itemCommentStart {
-				p.expect(itemText)
-				continue
-			}
-
-			val, typ := p.value(it)
-			array = append(array, val)
-			types = append(types, typ)
-		}
-		return array, p.typeOfArray(types)
-	case itemInlineTableStart:
-		var (
-			hash         = make(map[string]interface{})
-			outerContext = p.context
-			outerKey     = p.currentKey
-		)
-
-		p.context = append(p.context, p.currentKey)
-		p.currentKey = ""
-		for it := p.next(); it.typ != itemInlineTableEnd; it = p.next() {
-			if it.typ != itemKeyStart {
-				p.bug("Expected key start but instead found %q, around line %d",
-					it.val, p.approxLine)
-			}
-			if it.typ == itemCommentStart {
-				p.expect(itemText)
-				continue
-			}
-
-			// retrieve key
-			k := p.next()
-			p.approxLine = k.line
-			kname := p.keyString(k)
-
-			// retrieve value
-			p.currentKey = kname
-			val, typ := p.value(p.next())
-			// make sure we keep metadata up to date
-			p.setType(kname, typ)
-			p.ordered = append(p.ordered, p.context.add(p.currentKey))
-			hash[kname] = val
-		}
-		p.context = outerContext
-		p.currentKey = outerKey
-		return hash, tomlHash
-	}
-	p.bug("Unexpected value type: %s", it.typ)
-	panic("unreachable")
-}
-
-// numUnderscoresOK checks whether each underscore in s is surrounded by
-// characters that are not underscores.
-func numUnderscoresOK(s string) bool {
-	accept := false
-	for _, r := range s {
-		if r == '_' {
-			if !accept {
-				return false
-			}
-			accept = false
-			continue
-		}
-		accept = true
-	}
-	return accept
-}
-
-// numPeriodsOK checks whether every period in s is followed by a digit.
-func numPeriodsOK(s string) bool {
-	period := false
-	for _, r := range s {
-		if period && !isDigit(r) {
-			return false
-		}
-		period = r == '.'
-	}
-	return !period
-}
-
-// establishContext sets the current context of the parser,
-// where the context is either a hash or an array of hashes. Which one is
-// set depends on the value of the `array` parameter.
-//
-// Establishing the context also makes sure that the key isn't a duplicate, and
-// will create implicit hashes automatically.
-func (p *parser) establishContext(key Key, array bool) {
-	var ok bool
-
-	// Always start at the top level and drill down for our context.
-	hashContext := p.mapping
-	keyContext := make(Key, 0)
-
-	// We only need implicit hashes for key[0:-1]
-	for _, k := range key[0 : len(key)-1] {
-		_, ok = hashContext[k]
-		keyContext = append(keyContext, k)
-
-		// No key? Make an implicit hash and move on.
-		if !ok {
-			p.addImplicit(keyContext)
-			hashContext[k] = make(map[string]interface{})
-		}
-
-		// If the hash context is actually an array of tables, then set
-		// the hash context to the last element in that array.
-		//
-		// Otherwise, it better be a table, since this MUST be a key group (by
-		// virtue of it not being the last element in a key).
-		switch t := hashContext[k].(type) {
-		case []map[string]interface{}:
-			hashContext = t[len(t)-1]
-		case map[string]interface{}:
-			hashContext = t
-		default:
-			p.panicf("Key '%s' was already created as a hash.", keyContext)
-		}
-	}
-
-	p.context = keyContext
-	if array {
-		// If this is the first element for this array, then allocate a new
-		// list of tables for it.
-		k := key[len(key)-1]
-		if _, ok := hashContext[k]; !ok {
-			hashContext[k] = make([]map[string]interface{}, 0, 5)
-		}
-
-		// Add a new table. But make sure the key hasn't already been used
-		// for something else.
-		if hash, ok := hashContext[k].([]map[string]interface{}); ok {
-			hashContext[k] = append(hash, make(map[string]interface{}))
-		} else {
-			p.panicf("Key '%s' was already created and cannot be used as "+
-				"an array.", keyContext)
-		}
-	} else {
-		p.setValue(key[len(key)-1], make(map[string]interface{}))
-	}
-	p.context = append(p.context, key[len(key)-1])
-}
-
-// setValue sets the given key to the given value in the current context.
-// It will make sure that the key hasn't already been defined, account for
-// implicit key groups.
-func (p *parser) setValue(key string, value interface{}) {
-	var tmpHash interface{}
-	var ok bool
-
-	hash := p.mapping
-	keyContext := make(Key, 0)
-	for _, k := range p.context {
-		keyContext = append(keyContext, k)
-		if tmpHash, ok = hash[k]; !ok {
-			p.bug("Context for key '%s' has not been established.", keyContext)
-		}
-		switch t := tmpHash.(type) {
-		case []map[string]interface{}:
-			// The context is a table of hashes. Pick the most recent table
-			// defined as the current hash.
-			hash = t[len(t)-1]
-		case map[string]interface{}:
-			hash = t
-		default:
-			p.bug("Expected hash to have type 'map[string]interface{}', but "+
-				"it has '%T' instead.", tmpHash)
-		}
-	}
-	keyContext = append(keyContext, key)
-
-	if _, ok := hash[key]; ok {
-		// Typically, if the given key has already been set, then we have
-		// to raise an error since duplicate keys are disallowed. However,
-		// it's possible that a key was previously defined implicitly. In this
-		// case, it is allowed to be redefined concretely. (See the
-		// `tests/valid/implicit-and-explicit-after.toml` test in `toml-test`.)
-		//
-		// But we have to make sure to stop marking it as an implicit. (So that
-		// another redefinition provokes an error.)
-		//
-		// Note that since it has already been defined (as a hash), we don't
-		// want to overwrite it. So our business is done.
-		if p.isImplicit(keyContext) {
-			p.removeImplicit(keyContext)
-			return
-		}
-
-		// Otherwise, we have a concrete key trying to override a previous
-		// key, which is *always* wrong.
-		p.panicf("Key '%s' has already been defined.", keyContext)
-	}
-	hash[key] = value
-}
-
-// setType sets the type of a particular value at a given key.
-// It should be called immediately AFTER setValue.
-//
-// Note that if `key` is empty, then the type given will be applied to the
-// current context (which is either a table or an array of tables).
-func (p *parser) setType(key string, typ tomlType) {
-	keyContext := make(Key, 0, len(p.context)+1)
-	for _, k := range p.context {
-		keyContext = append(keyContext, k)
-	}
-	if len(key) > 0 { // allow type setting for hashes
-		keyContext = append(keyContext, key)
-	}
-	p.types[keyContext.String()] = typ
-}
-
-// addImplicit sets the given Key as having been created implicitly.
-func (p *parser) addImplicit(key Key) {
-	p.implicits[key.String()] = true
-}
-
-// removeImplicit stops tagging the given key as having been implicitly
-// created.
-func (p *parser) removeImplicit(key Key) {
-	p.implicits[key.String()] = false
-}
-
-// isImplicit returns true if the key group pointed to by the key was created
-// implicitly.
-func (p *parser) isImplicit(key Key) bool {
-	return p.implicits[key.String()]
-}
-
-// current returns the full key name of the current context.
-func (p *parser) current() string {
-	if len(p.currentKey) == 0 {
-		return p.context.String()
-	}
-	if len(p.context) == 0 {
-		return p.currentKey
-	}
-	return fmt.Sprintf("%s.%s", p.context, p.currentKey)
-}
-
-func stripFirstNewline(s string) string {
-	if len(s) == 0 || s[0] != '\n' {
-		return s
-	}
-	return s[1:]
-}
-
-func stripEscapedWhitespace(s string) string {
-	esc := strings.Split(s, "\\\n")
-	if len(esc) > 1 {
-		for i := 1; i < len(esc); i++ {
-			esc[i] = strings.TrimLeftFunc(esc[i], unicode.IsSpace)
-		}
-	}
-	return strings.Join(esc, "")
-}
-
-func (p *parser) replaceEscapes(str string) string {
-	var replaced []rune
-	s := []byte(str)
-	r := 0
-	for r < len(s) {
-		if s[r] != '\\' {
-			c, size := utf8.DecodeRune(s[r:])
-			r += size
-			replaced = append(replaced, c)
-			continue
-		}
-		r += 1
-		if r >= len(s) {
-			p.bug("Escape sequence at end of string.")
-			return ""
-		}
-		switch s[r] {
-		default:
-			p.bug("Expected valid escape code after \\, but got %q.", s[r])
-			return ""
-		case 'b':
-			replaced = append(replaced, rune(0x0008))
-			r += 1
-		case 't':
-			replaced = append(replaced, rune(0x0009))
-			r += 1
-		case 'n':
-			replaced = append(replaced, rune(0x000A))
-			r += 1
-		case 'f':
-			replaced = append(replaced, rune(0x000C))
-			r += 1
-		case 'r':
-			replaced = append(replaced, rune(0x000D))
-			r += 1
-		case '"':
-			replaced = append(replaced, rune(0x0022))
-			r += 1
-		case '\\':
-			replaced = append(replaced, rune(0x005C))
-			r += 1
-		case 'u':
-			// At this point, we know we have a Unicode escape of the form
-			// `uXXXX` at [r, r+5). (Because the lexer guarantees this
-			// for us.)
-			escaped := p.asciiEscapeToUnicode(s[r+1 : r+5])
-			replaced = append(replaced, escaped)
-			r += 5
-		case 'U':
-			// At this point, we know we have a Unicode escape of the form
-			// `uXXXX` at [r, r+9). (Because the lexer guarantees this
-			// for us.)
-			escaped := p.asciiEscapeToUnicode(s[r+1 : r+9])
-			replaced = append(replaced, escaped)
-			r += 9
-		}
-	}
-	return string(replaced)
-}
-
-func (p *parser) asciiEscapeToUnicode(bs []byte) rune {
-	s := string(bs)
-	hex, err := strconv.ParseUint(strings.ToLower(s), 16, 32)
-	if err != nil {
-		p.bug("Could not parse '%s' as a hexadecimal number, but the "+
-			"lexer claims it's OK: %s", s, err)
-	}
-	if !utf8.ValidRune(rune(hex)) {
-		p.panicf("Escaped character '\\u%s' is not valid UTF-8.", s)
-	}
-	return rune(hex)
-}
-
-func isStringType(ty itemType) bool {
-	return ty == itemString || ty == itemMultilineString ||
-		ty == itemRawString || ty == itemRawMultilineString
-}

+ 0 - 1
vendor/github.com/BurntSushi/toml/session.vim

@@ -1 +0,0 @@
-au BufWritePost *.go silent!make tags > /dev/null 2>&1

+ 0 - 91
vendor/github.com/BurntSushi/toml/type_check.go

@@ -1,91 +0,0 @@
-package toml
-
-// tomlType represents any Go type that corresponds to a TOML type.
-// While the first draft of the TOML spec has a simplistic type system that
-// probably doesn't need this level of sophistication, we seem to be militating
-// toward adding real composite types.
-type tomlType interface {
-	typeString() string
-}
-
-// typeEqual accepts any two types and returns true if they are equal.
-func typeEqual(t1, t2 tomlType) bool {
-	if t1 == nil || t2 == nil {
-		return false
-	}
-	return t1.typeString() == t2.typeString()
-}
-
-func typeIsHash(t tomlType) bool {
-	return typeEqual(t, tomlHash) || typeEqual(t, tomlArrayHash)
-}
-
-type tomlBaseType string
-
-func (btype tomlBaseType) typeString() string {
-	return string(btype)
-}
-
-func (btype tomlBaseType) String() string {
-	return btype.typeString()
-}
-
-var (
-	tomlInteger   tomlBaseType = "Integer"
-	tomlFloat     tomlBaseType = "Float"
-	tomlDatetime  tomlBaseType = "Datetime"
-	tomlString    tomlBaseType = "String"
-	tomlBool      tomlBaseType = "Bool"
-	tomlArray     tomlBaseType = "Array"
-	tomlHash      tomlBaseType = "Hash"
-	tomlArrayHash tomlBaseType = "ArrayHash"
-)
-
-// typeOfPrimitive returns a tomlType of any primitive value in TOML.
-// Primitive values are: Integer, Float, Datetime, String and Bool.
-//
-// Passing a lexer item other than the following will cause a BUG message
-// to occur: itemString, itemBool, itemInteger, itemFloat, itemDatetime.
-func (p *parser) typeOfPrimitive(lexItem item) tomlType {
-	switch lexItem.typ {
-	case itemInteger:
-		return tomlInteger
-	case itemFloat:
-		return tomlFloat
-	case itemDatetime:
-		return tomlDatetime
-	case itemString:
-		return tomlString
-	case itemMultilineString:
-		return tomlString
-	case itemRawString:
-		return tomlString
-	case itemRawMultilineString:
-		return tomlString
-	case itemBool:
-		return tomlBool
-	}
-	p.bug("Cannot infer primitive type of lex item '%s'.", lexItem)
-	panic("unreachable")
-}
-
-// typeOfArray returns a tomlType for an array given a list of types of its
-// values.
-//
-// In the current spec, if an array is homogeneous, then its type is always
-// "Array". If the array is not homogeneous, an error is generated.
-func (p *parser) typeOfArray(types []tomlType) tomlType {
-	// Empty arrays are cool.
-	if len(types) == 0 {
-		return tomlArray
-	}
-
-	theType := types[0]
-	for _, t := range types[1:] {
-		if !typeEqual(theType, t) {
-			p.panicf("Array contains values of type '%s' and '%s', but "+
-				"arrays must be homogeneous.", theType, t)
-		}
-	}
-	return tomlArray
-}

+ 0 - 242
vendor/github.com/BurntSushi/toml/type_fields.go

@@ -1,242 +0,0 @@
-package toml
-
-// Struct field handling is adapted from code in encoding/json:
-//
-// Copyright 2010 The Go Authors.  All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the Go distribution.
-
-import (
-	"reflect"
-	"sort"
-	"sync"
-)
-
-// A field represents a single field found in a struct.
-type field struct {
-	name  string       // the name of the field (`toml` tag included)
-	tag   bool         // whether field has a `toml` tag
-	index []int        // represents the depth of an anonymous field
-	typ   reflect.Type // the type of the field
-}
-
-// byName sorts field by name, breaking ties with depth,
-// then breaking ties with "name came from toml tag", then
-// breaking ties with index sequence.
-type byName []field
-
-func (x byName) Len() int { return len(x) }
-
-func (x byName) Swap(i, j int) { x[i], x[j] = x[j], x[i] }
-
-func (x byName) Less(i, j int) bool {
-	if x[i].name != x[j].name {
-		return x[i].name < x[j].name
-	}
-	if len(x[i].index) != len(x[j].index) {
-		return len(x[i].index) < len(x[j].index)
-	}
-	if x[i].tag != x[j].tag {
-		return x[i].tag
-	}
-	return byIndex(x).Less(i, j)
-}
-
-// byIndex sorts field by index sequence.
-type byIndex []field
-
-func (x byIndex) Len() int { return len(x) }
-
-func (x byIndex) Swap(i, j int) { x[i], x[j] = x[j], x[i] }
-
-func (x byIndex) Less(i, j int) bool {
-	for k, xik := range x[i].index {
-		if k >= len(x[j].index) {
-			return false
-		}
-		if xik != x[j].index[k] {
-			return xik < x[j].index[k]
-		}
-	}
-	return len(x[i].index) < len(x[j].index)
-}
-
-// typeFields returns a list of fields that TOML should recognize for the given
-// type. The algorithm is breadth-first search over the set of structs to
-// include - the top struct and then any reachable anonymous structs.
-func typeFields(t reflect.Type) []field {
-	// Anonymous fields to explore at the current level and the next.
-	current := []field{}
-	next := []field{{typ: t}}
-
-	// Count of queued names for current level and the next.
-	count := map[reflect.Type]int{}
-	nextCount := map[reflect.Type]int{}
-
-	// Types already visited at an earlier level.
-	visited := map[reflect.Type]bool{}
-
-	// Fields found.
-	var fields []field
-
-	for len(next) > 0 {
-		current, next = next, current[:0]
-		count, nextCount = nextCount, map[reflect.Type]int{}
-
-		for _, f := range current {
-			if visited[f.typ] {
-				continue
-			}
-			visited[f.typ] = true
-
-			// Scan f.typ for fields to include.
-			for i := 0; i < f.typ.NumField(); i++ {
-				sf := f.typ.Field(i)
-				if sf.PkgPath != "" && !sf.Anonymous { // unexported
-					continue
-				}
-				opts := getOptions(sf.Tag)
-				if opts.skip {
-					continue
-				}
-				index := make([]int, len(f.index)+1)
-				copy(index, f.index)
-				index[len(f.index)] = i
-
-				ft := sf.Type
-				if ft.Name() == "" && ft.Kind() == reflect.Ptr {
-					// Follow pointer.
-					ft = ft.Elem()
-				}
-
-				// Record found field and index sequence.
-				if opts.name != "" || !sf.Anonymous || ft.Kind() != reflect.Struct {
-					tagged := opts.name != ""
-					name := opts.name
-					if name == "" {
-						name = sf.Name
-					}
-					fields = append(fields, field{name, tagged, index, ft})
-					if count[f.typ] > 1 {
-						// If there were multiple instances, add a second,
-						// so that the annihilation code will see a duplicate.
-						// It only cares about the distinction between 1 or 2,
-						// so don't bother generating any more copies.
-						fields = append(fields, fields[len(fields)-1])
-					}
-					continue
-				}
-
-				// Record new anonymous struct to explore in next round.
-				nextCount[ft]++
-				if nextCount[ft] == 1 {
-					f := field{name: ft.Name(), index: index, typ: ft}
-					next = append(next, f)
-				}
-			}
-		}
-	}
-
-	sort.Sort(byName(fields))
-
-	// Delete all fields that are hidden by the Go rules for embedded fields,
-	// except that fields with TOML tags are promoted.
-
-	// The fields are sorted in primary order of name, secondary order
-	// of field index length. Loop over names; for each name, delete
-	// hidden fields by choosing the one dominant field that survives.
-	out := fields[:0]
-	for advance, i := 0, 0; i < len(fields); i += advance {
-		// One iteration per name.
-		// Find the sequence of fields with the name of this first field.
-		fi := fields[i]
-		name := fi.name
-		for advance = 1; i+advance < len(fields); advance++ {
-			fj := fields[i+advance]
-			if fj.name != name {
-				break
-			}
-		}
-		if advance == 1 { // Only one field with this name
-			out = append(out, fi)
-			continue
-		}
-		dominant, ok := dominantField(fields[i : i+advance])
-		if ok {
-			out = append(out, dominant)
-		}
-	}
-
-	fields = out
-	sort.Sort(byIndex(fields))
-
-	return fields
-}
-
-// dominantField looks through the fields, all of which are known to
-// have the same name, to find the single field that dominates the
-// others using Go's embedding rules, modified by the presence of
-// TOML tags. If there are multiple top-level fields, the boolean
-// will be false: This condition is an error in Go and we skip all
-// the fields.
-func dominantField(fields []field) (field, bool) {
-	// The fields are sorted in increasing index-length order. The winner
-	// must therefore be one with the shortest index length. Drop all
-	// longer entries, which is easy: just truncate the slice.
-	length := len(fields[0].index)
-	tagged := -1 // Index of first tagged field.
-	for i, f := range fields {
-		if len(f.index) > length {
-			fields = fields[:i]
-			break
-		}
-		if f.tag {
-			if tagged >= 0 {
-				// Multiple tagged fields at the same level: conflict.
-				// Return no field.
-				return field{}, false
-			}
-			tagged = i
-		}
-	}
-	if tagged >= 0 {
-		return fields[tagged], true
-	}
-	// All remaining fields have the same length. If there's more than one,
-	// we have a conflict (two fields named "X" at the same level) and we
-	// return no field.
-	if len(fields) > 1 {
-		return field{}, false
-	}
-	return fields[0], true
-}
-
-var fieldCache struct {
-	sync.RWMutex
-	m map[reflect.Type][]field
-}
-
-// cachedTypeFields is like typeFields but uses a cache to avoid repeated work.
-func cachedTypeFields(t reflect.Type) []field {
-	fieldCache.RLock()
-	f := fieldCache.m[t]
-	fieldCache.RUnlock()
-	if f != nil {
-		return f
-	}
-
-	// Compute fields without lock.
-	// Might duplicate effort but won't hold other computations back.
-	f = typeFields(t)
-	if f == nil {
-		f = []field{}
-	}
-
-	fieldCache.Lock()
-	if fieldCache.m == nil {
-		fieldCache.m = map[reflect.Type][]field{}
-	}
-	fieldCache.m[t] = f
-	fieldCache.Unlock()
-	return f
-}

+ 0 - 41
vendor/github.com/emirpasic/gods/LICENSE

@@ -1,41 +0,0 @@
-Copyright (c) 2015, Emir Pasic
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright notice,
-  this list of conditions and the following disclaimer in the documentation
-  and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER 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.
-
--------------------------------------------------------------------------------
-
-AVL Tree:
-
-Copyright (c) 2017 Benjamin Scher Purcell <benjapurcell@gmail.com>
-
-Permission to use, copy, modify, and distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

+ 0 - 35
vendor/github.com/emirpasic/gods/containers/containers.go

@@ -1,35 +0,0 @@
-// Copyright (c) 2015, Emir Pasic. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package containers provides core interfaces and functions for data structures.
-//
-// Container is the base interface for all data structures to implement.
-//
-// Iterators provide stateful iterators.
-//
-// Enumerable provides Ruby inspired (each, select, map, find, any?, etc.) container functions.
-//
-// Serialization provides serializers (marshalers) and deserializers (unmarshalers).
-package containers
-
-import "github.com/emirpasic/gods/utils"
-
-// Container is base interface that all data structures implement.
-type Container interface {
-	Empty() bool
-	Size() int
-	Clear()
-	Values() []interface{}
-}
-
-// GetSortedValues returns sorted container's elements with respect to the passed comparator.
-// Does not effect the ordering of elements within the container.
-func GetSortedValues(container Container, comparator utils.Comparator) []interface{} {
-	values := container.Values()
-	if len(values) < 2 {
-		return values
-	}
-	utils.Sort(values, comparator)
-	return values
-}

+ 0 - 61
vendor/github.com/emirpasic/gods/containers/enumerable.go

@@ -1,61 +0,0 @@
-// Copyright (c) 2015, Emir Pasic. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package containers
-
-// EnumerableWithIndex provides functions for ordered containers whose values can be fetched by an index.
-type EnumerableWithIndex interface {
-	// Each calls the given function once for each element, passing that element's index and value.
-	Each(func(index int, value interface{}))
-
-	// Map invokes the given function once for each element and returns a
-	// container containing the values returned by the given function.
-	// TODO would appreciate help on how to enforce this in containers (don't want to type assert when chaining)
-	// Map(func(index int, value interface{}) interface{}) Container
-
-	// Select returns a new container containing all elements for which the given function returns a true value.
-	// TODO need help on how to enforce this in containers (don't want to type assert when chaining)
-	// Select(func(index int, value interface{}) bool) Container
-
-	// Any passes each element of the container to the given function and
-	// returns true if the function ever returns true for any element.
-	Any(func(index int, value interface{}) bool) bool
-
-	// All passes each element of the container to the given function and
-	// returns true if the function returns true for all elements.
-	All(func(index int, value interface{}) bool) bool
-
-	// Find passes each element of the container to the given function and returns
-	// the first (index,value) for which the function is true or -1,nil otherwise
-	// if no element matches the criteria.
-	Find(func(index int, value interface{}) bool) (int, interface{})
-}
-
-// EnumerableWithKey provides functions for ordered containers whose values whose elements are key/value pairs.
-type EnumerableWithKey interface {
-	// Each calls the given function once for each element, passing that element's key and value.
-	Each(func(key interface{}, value interface{}))
-
-	// Map invokes the given function once for each element and returns a container
-	// containing the values returned by the given function as key/value pairs.
-	// TODO need help on how to enforce this in containers (don't want to type assert when chaining)
-	// Map(func(key interface{}, value interface{}) (interface{}, interface{})) Container
-
-	// Select returns a new container containing all elements for which the given function returns a true value.
-	// TODO need help on how to enforce this in containers (don't want to type assert when chaining)
-	// Select(func(key interface{}, value interface{}) bool) Container
-
-	// Any passes each element of the container to the given function and
-	// returns true if the function ever returns true for any element.
-	Any(func(key interface{}, value interface{}) bool) bool
-
-	// All passes each element of the container to the given function and
-	// returns true if the function returns true for all elements.
-	All(func(key interface{}, value interface{}) bool) bool
-
-	// Find passes each element of the container to the given function and returns
-	// the first (key,value) for which the function is true or nil,nil otherwise if no element
-	// matches the criteria.
-	Find(func(key interface{}, value interface{}) bool) (interface{}, interface{})
-}

+ 0 - 109
vendor/github.com/emirpasic/gods/containers/iterator.go

@@ -1,109 +0,0 @@
-// Copyright (c) 2015, Emir Pasic. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package containers
-
-// IteratorWithIndex is stateful iterator for ordered containers whose values can be fetched by an index.
-type IteratorWithIndex interface {
-	// Next moves the iterator to the next element and returns true if there was a next element in the container.
-	// If Next() returns true, then next element's index and value can be retrieved by Index() and Value().
-	// If Next() was called for the first time, then it will point the iterator to the first element if it exists.
-	// Modifies the state of the iterator.
-	Next() bool
-
-	// Value returns the current element's value.
-	// Does not modify the state of the iterator.
-	Value() interface{}
-
-	// Index returns the current element's index.
-	// Does not modify the state of the iterator.
-	Index() int
-
-	// Begin resets the iterator to its initial state (one-before-first)
-	// Call Next() to fetch the first element if any.
-	Begin()
-
-	// First moves the iterator to the first element and returns true if there was a first element in the container.
-	// If First() returns true, then first element's index and value can be retrieved by Index() and Value().
-	// Modifies the state of the iterator.
-	First() bool
-}
-
-// IteratorWithKey is a stateful iterator for ordered containers whose elements are key value pairs.
-type IteratorWithKey interface {
-	// Next moves the iterator to the next element and returns true if there was a next element in the container.
-	// If Next() returns true, then next element's key and value can be retrieved by Key() and Value().
-	// If Next() was called for the first time, then it will point the iterator to the first element if it exists.
-	// Modifies the state of the iterator.
-	Next() bool
-
-	// Value returns the current element's value.
-	// Does not modify the state of the iterator.
-	Value() interface{}
-
-	// Key returns the current element's key.
-	// Does not modify the state of the iterator.
-	Key() interface{}
-
-	// Begin resets the iterator to its initial state (one-before-first)
-	// Call Next() to fetch the first element if any.
-	Begin()
-
-	// First moves the iterator to the first element and returns true if there was a first element in the container.
-	// If First() returns true, then first element's key and value can be retrieved by Key() and Value().
-	// Modifies the state of the iterator.
-	First() bool
-}
-
-// ReverseIteratorWithIndex is stateful iterator for ordered containers whose values can be fetched by an index.
-//
-// Essentially it is the same as IteratorWithIndex, but provides additional:
-//
-// Prev() function to enable traversal in reverse
-//
-// Last() function to move the iterator to the last element.
-//
-// End() function to move the iterator past the last element (one-past-the-end).
-type ReverseIteratorWithIndex interface {
-	// Prev moves the iterator to the previous element and returns true if there was a previous element in the container.
-	// If Prev() returns true, then previous element's index and value can be retrieved by Index() and Value().
-	// Modifies the state of the iterator.
-	Prev() bool
-
-	// End moves the iterator past the last element (one-past-the-end).
-	// Call Prev() to fetch the last element if any.
-	End()
-
-	// Last moves the iterator to the last element and returns true if there was a last element in the container.
-	// If Last() returns true, then last element's index and value can be retrieved by Index() and Value().
-	// Modifies the state of the iterator.
-	Last() bool
-
-	IteratorWithIndex
-}
-
-// ReverseIteratorWithKey is a stateful iterator for ordered containers whose elements are key value pairs.
-//
-// Essentially it is the same as IteratorWithKey, but provides additional:
-//
-// Prev() function to enable traversal in reverse
-//
-// Last() function to move the iterator to the last element.
-type ReverseIteratorWithKey interface {
-	// Prev moves the iterator to the previous element and returns true if there was a previous element in the container.
-	// If Prev() returns true, then previous element's key and value can be retrieved by Key() and Value().
-	// Modifies the state of the iterator.
-	Prev() bool
-
-	// End moves the iterator past the last element (one-past-the-end).
-	// Call Prev() to fetch the last element if any.
-	End()
-
-	// Last moves the iterator to the last element and returns true if there was a last element in the container.
-	// If Last() returns true, then last element's key and value can be retrieved by Key() and Value().
-	// Modifies the state of the iterator.
-	Last() bool
-
-	IteratorWithKey
-}

+ 0 - 17
vendor/github.com/emirpasic/gods/containers/serialization.go

@@ -1,17 +0,0 @@
-// Copyright (c) 2015, Emir Pasic. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package containers
-
-// JSONSerializer provides JSON serialization
-type JSONSerializer interface {
-	// ToJSON outputs the JSON representation of containers's elements.
-	ToJSON() ([]byte, error)
-}
-
-// JSONDeserializer provides JSON deserialization
-type JSONDeserializer interface {
-	// FromJSON populates containers's elements from the input JSON representation.
-	FromJSON([]byte) error
-}

+ 0 - 228
vendor/github.com/emirpasic/gods/lists/arraylist/arraylist.go

@@ -1,228 +0,0 @@
-// Copyright (c) 2015, Emir Pasic. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package arraylist implements the array list.
-//
-// Structure is not thread safe.
-//
-// Reference: https://en.wikipedia.org/wiki/List_%28abstract_data_type%29
-package arraylist
-
-import (
-	"fmt"
-	"strings"
-
-	"github.com/emirpasic/gods/lists"
-	"github.com/emirpasic/gods/utils"
-)
-
-func assertListImplementation() {
-	var _ lists.List = (*List)(nil)
-}
-
-// List holds the elements in a slice
-type List struct {
-	elements []interface{}
-	size     int
-}
-
-const (
-	growthFactor = float32(2.0)  // growth by 100%
-	shrinkFactor = float32(0.25) // shrink when size is 25% of capacity (0 means never shrink)
-)
-
-// New instantiates a new list and adds the passed values, if any, to the list
-func New(values ...interface{}) *List {
-	list := &List{}
-	if len(values) > 0 {
-		list.Add(values...)
-	}
-	return list
-}
-
-// Add appends a value at the end of the list
-func (list *List) Add(values ...interface{}) {
-	list.growBy(len(values))
-	for _, value := range values {
-		list.elements[list.size] = value
-		list.size++
-	}
-}
-
-// Get returns the element at index.
-// Second return parameter is true if index is within bounds of the array and array is not empty, otherwise false.
-func (list *List) Get(index int) (interface{}, bool) {
-
-	if !list.withinRange(index) {
-		return nil, false
-	}
-
-	return list.elements[index], true
-}
-
-// Remove removes the element at the given index from the list.
-func (list *List) Remove(index int) {
-
-	if !list.withinRange(index) {
-		return
-	}
-
-	list.elements[index] = nil                                    // cleanup reference
-	copy(list.elements[index:], list.elements[index+1:list.size]) // shift to the left by one (slow operation, need ways to optimize this)
-	list.size--
-
-	list.shrink()
-}
-
-// Contains checks if elements (one or more) are present in the set.
-// All elements have to be present in the set for the method to return true.
-// Performance time complexity of n^2.
-// Returns true if no arguments are passed at all, i.e. set is always super-set of empty set.
-func (list *List) Contains(values ...interface{}) bool {
-
-	for _, searchValue := range values {
-		found := false
-		for _, element := range list.elements {
-			if element == searchValue {
-				found = true
-				break
-			}
-		}
-		if !found {
-			return false
-		}
-	}
-	return true
-}
-
-// Values returns all elements in the list.
-func (list *List) Values() []interface{} {
-	newElements := make([]interface{}, list.size, list.size)
-	copy(newElements, list.elements[:list.size])
-	return newElements
-}
-
-//IndexOf returns index of provided element
-func (list *List) IndexOf(value interface{}) int {
-	if list.size == 0 {
-		return -1
-	}
-	for index, element := range list.elements {
-		if element == value {
-			return index
-		}
-	}
-	return -1
-}
-
-// Empty returns true if list does not contain any elements.
-func (list *List) Empty() bool {
-	return list.size == 0
-}
-
-// Size returns number of elements within the list.
-func (list *List) Size() int {
-	return list.size
-}
-
-// Clear removes all elements from the list.
-func (list *List) Clear() {
-	list.size = 0
-	list.elements = []interface{}{}
-}
-
-// Sort sorts values (in-place) using.
-func (list *List) Sort(comparator utils.Comparator) {
-	if len(list.elements) < 2 {
-		return
-	}
-	utils.Sort(list.elements[:list.size], comparator)
-}
-
-// Swap swaps the two values at the specified positions.
-func (list *List) Swap(i, j int) {
-	if list.withinRange(i) && list.withinRange(j) {
-		list.elements[i], list.elements[j] = list.elements[j], list.elements[i]
-	}
-}
-
-// Insert inserts values at specified index position shifting the value at that position (if any) and any subsequent elements to the right.
-// Does not do anything if position is negative or bigger than list's size
-// Note: position equal to list's size is valid, i.e. append.
-func (list *List) Insert(index int, values ...interface{}) {
-
-	if !list.withinRange(index) {
-		// Append
-		if index == list.size {
-			list.Add(values...)
-		}
-		return
-	}
-
-	l := len(values)
-	list.growBy(l)
-	list.size += l
-	copy(list.elements[index+l:], list.elements[index:list.size-l])
-	copy(list.elements[index:], values)
-}
-
-// Set the value at specified index
-// Does not do anything if position is negative or bigger than list's size
-// Note: position equal to list's size is valid, i.e. append.
-func (list *List) Set(index int, value interface{}) {
-
-	if !list.withinRange(index) {
-		// Append
-		if index == list.size {
-			list.Add(value)
-		}
-		return
-	}
-
-	list.elements[index] = value
-}
-
-// String returns a string representation of container
-func (list *List) String() string {
-	str := "ArrayList\n"
-	values := []string{}
-	for _, value := range list.elements[:list.size] {
-		values = append(values, fmt.Sprintf("%v", value))
-	}
-	str += strings.Join(values, ", ")
-	return str
-}
-
-// Check that the index is within bounds of the list
-func (list *List) withinRange(index int) bool {
-	return index >= 0 && index < list.size
-}
-
-func (list *List) resize(cap int) {
-	newElements := make([]interface{}, cap, cap)
-	copy(newElements, list.elements)
-	list.elements = newElements
-}
-
-// Expand the array if necessary, i.e. capacity will be reached if we add n elements
-func (list *List) growBy(n int) {
-	// When capacity is reached, grow by a factor of growthFactor and add number of elements
-	currentCapacity := cap(list.elements)
-	if list.size+n >= currentCapacity {
-		newCapacity := int(growthFactor * float32(currentCapacity+n))
-		list.resize(newCapacity)
-	}
-}
-
-// Shrink the array if necessary, i.e. when size is shrinkFactor percent of current capacity
-func (list *List) shrink() {
-	if shrinkFactor == 0.0 {
-		return
-	}
-	// Shrink when size is at shrinkFactor * capacity
-	currentCapacity := cap(list.elements)
-	if list.size <= int(float32(currentCapacity)*shrinkFactor) {
-		list.resize(list.size)
-	}
-}

+ 0 - 79
vendor/github.com/emirpasic/gods/lists/arraylist/enumerable.go

@@ -1,79 +0,0 @@
-// Copyright (c) 2015, Emir Pasic. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package arraylist
-
-import "github.com/emirpasic/gods/containers"
-
-func assertEnumerableImplementation() {
-	var _ containers.EnumerableWithIndex = (*List)(nil)
-}
-
-// Each calls the given function once for each element, passing that element's index and value.
-func (list *List) Each(f func(index int, value interface{})) {
-	iterator := list.Iterator()
-	for iterator.Next() {
-		f(iterator.Index(), iterator.Value())
-	}
-}
-
-// Map invokes the given function once for each element and returns a
-// container containing the values returned by the given function.
-func (list *List) Map(f func(index int, value interface{}) interface{}) *List {
-	newList := &List{}
-	iterator := list.Iterator()
-	for iterator.Next() {
-		newList.Add(f(iterator.Index(), iterator.Value()))
-	}
-	return newList
-}
-
-// Select returns a new container containing all elements for which the given function returns a true value.
-func (list *List) Select(f func(index int, value interface{}) bool) *List {
-	newList := &List{}
-	iterator := list.Iterator()
-	for iterator.Next() {
-		if f(iterator.Index(), iterator.Value()) {
-			newList.Add(iterator.Value())
-		}
-	}
-	return newList
-}
-
-// Any passes each element of the collection to the given function and
-// returns true if the function ever returns true for any element.
-func (list *List) Any(f func(index int, value interface{}) bool) bool {
-	iterator := list.Iterator()
-	for iterator.Next() {
-		if f(iterator.Index(), iterator.Value()) {
-			return true
-		}
-	}
-	return false
-}
-
-// All passes each element of the collection to the given function and
-// returns true if the function returns true for all elements.
-func (list *List) All(f func(index int, value interface{}) bool) bool {
-	iterator := list.Iterator()
-	for iterator.Next() {
-		if !f(iterator.Index(), iterator.Value()) {
-			return false
-		}
-	}
-	return true
-}
-
-// Find passes each element of the container to the given function and returns
-// the first (index,value) for which the function is true or -1,nil otherwise
-// if no element matches the criteria.
-func (list *List) Find(f func(index int, value interface{}) bool) (int, interface{}) {
-	iterator := list.Iterator()
-	for iterator.Next() {
-		if f(iterator.Index(), iterator.Value()) {
-			return iterator.Index(), iterator.Value()
-		}
-	}
-	return -1, nil
-}

+ 0 - 83
vendor/github.com/emirpasic/gods/lists/arraylist/iterator.go

@@ -1,83 +0,0 @@
-// Copyright (c) 2015, Emir Pasic. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package arraylist
-
-import "github.com/emirpasic/gods/containers"
-
-func assertIteratorImplementation() {
-	var _ containers.ReverseIteratorWithIndex = (*Iterator)(nil)
-}
-
-// Iterator holding the iterator's state
-type Iterator struct {
-	list  *List
-	index int
-}
-
-// Iterator returns a stateful iterator whose values can be fetched by an index.
-func (list *List) Iterator() Iterator {
-	return Iterator{list: list, index: -1}
-}
-
-// Next moves the iterator to the next element and returns true if there was a next element in the container.
-// If Next() returns true, then next element's index and value can be retrieved by Index() and Value().
-// If Next() was called for the first time, then it will point the iterator to the first element if it exists.
-// Modifies the state of the iterator.
-func (iterator *Iterator) Next() bool {
-	if iterator.index < iterator.list.size {
-		iterator.index++
-	}
-	return iterator.list.withinRange(iterator.index)
-}
-
-// Prev moves the iterator to the previous element and returns true if there was a previous element in the container.
-// If Prev() returns true, then previous element's index and value can be retrieved by Index() and Value().
-// Modifies the state of the iterator.
-func (iterator *Iterator) Prev() bool {
-	if iterator.index >= 0 {
-		iterator.index--
-	}
-	return iterator.list.withinRange(iterator.index)
-}
-
-// Value returns the current element's value.
-// Does not modify the state of the iterator.
-func (iterator *Iterator) Value() interface{} {
-	return iterator.list.elements[iterator.index]
-}
-
-// Index returns the current element's index.
-// Does not modify the state of the iterator.
-func (iterator *Iterator) Index() int {
-	return iterator.index
-}
-
-// Begin resets the iterator to its initial state (one-before-first)
-// Call Next() to fetch the first element if any.
-func (iterator *Iterator) Begin() {
-	iterator.index = -1
-}
-
-// End moves the iterator past the last element (one-past-the-end).
-// Call Prev() to fetch the last element if any.
-func (iterator *Iterator) End() {
-	iterator.index = iterator.list.size
-}
-
-// First moves the iterator to the first element and returns true if there was a first element in the container.
-// If First() returns true, then first element's index and value can be retrieved by Index() and Value().
-// Modifies the state of the iterator.
-func (iterator *Iterator) First() bool {
-	iterator.Begin()
-	return iterator.Next()
-}
-
-// Last moves the iterator to the last element and returns true if there was a last element in the container.
-// If Last() returns true, then last element's index and value can be retrieved by Index() and Value().
-// Modifies the state of the iterator.
-func (iterator *Iterator) Last() bool {
-	iterator.End()
-	return iterator.Prev()
-}

+ 0 - 29
vendor/github.com/emirpasic/gods/lists/arraylist/serialization.go

@@ -1,29 +0,0 @@
-// Copyright (c) 2015, Emir Pasic. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package arraylist
-
-import (
-	"encoding/json"
-	"github.com/emirpasic/gods/containers"
-)
-
-func assertSerializationImplementation() {
-	var _ containers.JSONSerializer = (*List)(nil)
-	var _ containers.JSONDeserializer = (*List)(nil)
-}
-
-// ToJSON outputs the JSON representation of list's elements.
-func (list *List) ToJSON() ([]byte, error) {
-	return json.Marshal(list.elements[:list.size])
-}
-
-// FromJSON populates list's elements from the input JSON representation.
-func (list *List) FromJSON(data []byte) error {
-	err := json.Unmarshal(data, &list.elements)
-	if err == nil {
-		list.size = len(list.elements)
-	}
-	return err
-}

+ 0 - 33
vendor/github.com/emirpasic/gods/lists/lists.go

@@ -1,33 +0,0 @@
-// Copyright (c) 2015, Emir Pasic. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package lists provides an abstract List interface.
-//
-// In computer science, a list or sequence is an abstract data type that represents an ordered sequence of values, where the same value may occur more than once. An instance of a list is a computer representation of the mathematical concept of a finite sequence; the (potentially) infinite analog of a list is a stream.  Lists are a basic example of containers, as they contain other values. If the same value occurs multiple times, each occurrence is considered a distinct item.
-//
-// Reference: https://en.wikipedia.org/wiki/List_%28abstract_data_type%29
-package lists
-
-import (
-	"github.com/emirpasic/gods/containers"
-	"github.com/emirpasic/gods/utils"
-)
-
-// List interface that all lists implement
-type List interface {
-	Get(index int) (interface{}, bool)
-	Remove(index int)
-	Add(values ...interface{})
-	Contains(values ...interface{}) bool
-	Sort(comparator utils.Comparator)
-	Swap(index1, index2 int)
-	Insert(index int, values ...interface{})
-	Set(index int, value interface{})
-
-	containers.Container
-	// Empty() bool
-	// Size() int
-	// Clear()
-	// Values() []interface{}
-}

+ 0 - 163
vendor/github.com/emirpasic/gods/trees/binaryheap/binaryheap.go

@@ -1,163 +0,0 @@
-// Copyright (c) 2015, Emir Pasic. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package binaryheap implements a binary heap backed by array list.
-//
-// Comparator defines this heap as either min or max heap.
-//
-// Structure is not thread safe.
-//
-// References: http://en.wikipedia.org/wiki/Binary_heap
-package binaryheap
-
-import (
-	"fmt"
-	"github.com/emirpasic/gods/lists/arraylist"
-	"github.com/emirpasic/gods/trees"
-	"github.com/emirpasic/gods/utils"
-	"strings"
-)
-
-func assertTreeImplementation() {
-	var _ trees.Tree = (*Heap)(nil)
-}
-
-// Heap holds elements in an array-list
-type Heap struct {
-	list       *arraylist.List
-	Comparator utils.Comparator
-}
-
-// NewWith instantiates a new empty heap tree with the custom comparator.
-func NewWith(comparator utils.Comparator) *Heap {
-	return &Heap{list: arraylist.New(), Comparator: comparator}
-}
-
-// NewWithIntComparator instantiates a new empty heap with the IntComparator, i.e. elements are of type int.
-func NewWithIntComparator() *Heap {
-	return &Heap{list: arraylist.New(), Comparator: utils.IntComparator}
-}
-
-// NewWithStringComparator instantiates a new empty heap with the StringComparator, i.e. elements are of type string.
-func NewWithStringComparator() *Heap {
-	return &Heap{list: arraylist.New(), Comparator: utils.StringComparator}
-}
-
-// Push adds a value onto the heap and bubbles it up accordingly.
-func (heap *Heap) Push(values ...interface{}) {
-	if len(values) == 1 {
-		heap.list.Add(values[0])
-		heap.bubbleUp()
-	} else {
-		// Reference: https://en.wikipedia.org/wiki/Binary_heap#Building_a_heap
-		for _, value := range values {
-			heap.list.Add(value)
-		}
-		size := heap.list.Size()/2 + 1
-		for i := size; i >= 0; i-- {
-			heap.bubbleDownIndex(i)
-		}
-	}
-}
-
-// Pop removes top element on heap and returns it, or nil if heap is empty.
-// Second return parameter is true, unless the heap was empty and there was nothing to pop.
-func (heap *Heap) Pop() (value interface{}, ok bool) {
-	value, ok = heap.list.Get(0)
-	if !ok {
-		return
-	}
-	lastIndex := heap.list.Size() - 1
-	heap.list.Swap(0, lastIndex)
-	heap.list.Remove(lastIndex)
-	heap.bubbleDown()
-	return
-}
-
-// Peek returns top element on the heap without removing it, or nil if heap is empty.
-// Second return parameter is true, unless the heap was empty and there was nothing to peek.
-func (heap *Heap) Peek() (value interface{}, ok bool) {
-	return heap.list.Get(0)
-}
-
-// Empty returns true if heap does not contain any elements.
-func (heap *Heap) Empty() bool {
-	return heap.list.Empty()
-}
-
-// Size returns number of elements within the heap.
-func (heap *Heap) Size() int {
-	return heap.list.Size()
-}
-
-// Clear removes all elements from the heap.
-func (heap *Heap) Clear() {
-	heap.list.Clear()
-}
-
-// Values returns all elements in the heap.
-func (heap *Heap) Values() []interface{} {
-	return heap.list.Values()
-}
-
-// String returns a string representation of container
-func (heap *Heap) String() string {
-	str := "BinaryHeap\n"
-	values := []string{}
-	for _, value := range heap.list.Values() {
-		values = append(values, fmt.Sprintf("%v", value))
-	}
-	str += strings.Join(values, ", ")
-	return str
-}
-
-// Performs the "bubble down" operation. This is to place the element that is at the root
-// of the heap in its correct place so that the heap maintains the min/max-heap order property.
-func (heap *Heap) bubbleDown() {
-	heap.bubbleDownIndex(0)
-}
-
-// Performs the "bubble down" operation. This is to place the element that is at the index
-// of the heap in its correct place so that the heap maintains the min/max-heap order property.
-func (heap *Heap) bubbleDownIndex(index int) {
-	size := heap.list.Size()
-	for leftIndex := index<<1 + 1; leftIndex < size; leftIndex = index<<1 + 1 {
-		rightIndex := index<<1 + 2
-		smallerIndex := leftIndex
-		leftValue, _ := heap.list.Get(leftIndex)
-		rightValue, _ := heap.list.Get(rightIndex)
-		if rightIndex < size && heap.Comparator(leftValue, rightValue) > 0 {
-			smallerIndex = rightIndex
-		}
-		indexValue, _ := heap.list.Get(index)
-		smallerValue, _ := heap.list.Get(smallerIndex)
-		if heap.Comparator(indexValue, smallerValue) > 0 {
-			heap.list.Swap(index, smallerIndex)
-		} else {
-			break
-		}
-		index = smallerIndex
-	}
-}
-
-// Performs the "bubble up" operation. This is to place a newly inserted
-// element (i.e. last element in the list) in its correct place so that
-// the heap maintains the min/max-heap order property.
-func (heap *Heap) bubbleUp() {
-	index := heap.list.Size() - 1
-	for parentIndex := (index - 1) >> 1; index > 0; parentIndex = (index - 1) >> 1 {
-		indexValue, _ := heap.list.Get(index)
-		parentValue, _ := heap.list.Get(parentIndex)
-		if heap.Comparator(parentValue, indexValue) <= 0 {
-			break
-		}
-		heap.list.Swap(index, parentIndex)
-		index = parentIndex
-	}
-}
-
-// Check that the index is within bounds of the list
-func (heap *Heap) withinRange(index int) bool {
-	return index >= 0 && index < heap.list.Size()
-}

+ 0 - 84
vendor/github.com/emirpasic/gods/trees/binaryheap/iterator.go

@@ -1,84 +0,0 @@
-// Copyright (c) 2015, Emir Pasic. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package binaryheap
-
-import "github.com/emirpasic/gods/containers"
-
-func assertIteratorImplementation() {
-	var _ containers.ReverseIteratorWithIndex = (*Iterator)(nil)
-}
-
-// Iterator returns a stateful iterator whose values can be fetched by an index.
-type Iterator struct {
-	heap  *Heap
-	index int
-}
-
-// Iterator returns a stateful iterator whose values can be fetched by an index.
-func (heap *Heap) Iterator() Iterator {
-	return Iterator{heap: heap, index: -1}
-}
-
-// Next moves the iterator to the next element and returns true if there was a next element in the container.
-// If Next() returns true, then next element's index and value can be retrieved by Index() and Value().
-// If Next() was called for the first time, then it will point the iterator to the first element if it exists.
-// Modifies the state of the iterator.
-func (iterator *Iterator) Next() bool {
-	if iterator.index < iterator.heap.Size() {
-		iterator.index++
-	}
-	return iterator.heap.withinRange(iterator.index)
-}
-
-// Prev moves the iterator to the previous element and returns true if there was a previous element in the container.
-// If Prev() returns true, then previous element's index and value can be retrieved by Index() and Value().
-// Modifies the state of the iterator.
-func (iterator *Iterator) Prev() bool {
-	if iterator.index >= 0 {
-		iterator.index--
-	}
-	return iterator.heap.withinRange(iterator.index)
-}
-
-// Value returns the current element's value.
-// Does not modify the state of the iterator.
-func (iterator *Iterator) Value() interface{} {
-	value, _ := iterator.heap.list.Get(iterator.index)
-	return value
-}
-
-// Index returns the current element's index.
-// Does not modify the state of the iterator.
-func (iterator *Iterator) Index() int {
-	return iterator.index
-}
-
-// Begin resets the iterator to its initial state (one-before-first)
-// Call Next() to fetch the first element if any.
-func (iterator *Iterator) Begin() {
-	iterator.index = -1
-}
-
-// End moves the iterator past the last element (one-past-the-end).
-// Call Prev() to fetch the last element if any.
-func (iterator *Iterator) End() {
-	iterator.index = iterator.heap.Size()
-}
-
-// First moves the iterator to the first element and returns true if there was a first element in the container.
-// If First() returns true, then first element's index and value can be retrieved by Index() and Value().
-// Modifies the state of the iterator.
-func (iterator *Iterator) First() bool {
-	iterator.Begin()
-	return iterator.Next()
-}
-
-// Last moves the iterator to the last element and returns true if there was a last element in the container.
-// If Last() returns true, then last element's index and value can be retrieved by Index() and Value().
-// Modifies the state of the iterator.
-func (iterator *Iterator) Last() bool {
-	iterator.End()
-	return iterator.Prev()
-}

+ 0 - 22
vendor/github.com/emirpasic/gods/trees/binaryheap/serialization.go

@@ -1,22 +0,0 @@
-// Copyright (c) 2015, Emir Pasic. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package binaryheap
-
-import "github.com/emirpasic/gods/containers"
-
-func assertSerializationImplementation() {
-	var _ containers.JSONSerializer = (*Heap)(nil)
-	var _ containers.JSONDeserializer = (*Heap)(nil)
-}
-
-// ToJSON outputs the JSON representation of the heap.
-func (heap *Heap) ToJSON() ([]byte, error) {
-	return heap.list.ToJSON()
-}
-
-// FromJSON populates the heap from the input JSON representation.
-func (heap *Heap) FromJSON(data []byte) error {
-	return heap.list.FromJSON(data)
-}

+ 0 - 21
vendor/github.com/emirpasic/gods/trees/trees.go

@@ -1,21 +0,0 @@
-// Copyright (c) 2015, Emir Pasic. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package trees provides an abstract Tree interface.
-//
-// In computer science, a tree is a widely used abstract data type (ADT) or data structure implementing this ADT that simulates a hierarchical tree structure, with a root value and subtrees of children with a parent node, represented as a set of linked nodes.
-//
-// Reference: https://en.wikipedia.org/wiki/Tree_%28data_structure%29
-package trees
-
-import "github.com/emirpasic/gods/containers"
-
-// Tree interface that all trees implement
-type Tree interface {
-	containers.Container
-	// Empty() bool
-	// Size() int
-	// Clear()
-	// Values() []interface{}
-}

+ 0 - 251
vendor/github.com/emirpasic/gods/utils/comparator.go

@@ -1,251 +0,0 @@
-// Copyright (c) 2015, Emir Pasic. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package utils
-
-import "time"
-
-// Comparator will make type assertion (see IntComparator for example),
-// which will panic if a or b are not of the asserted type.
-//
-// Should return a number:
-//    negative , if a < b
-//    zero     , if a == b
-//    positive , if a > b
-type Comparator func(a, b interface{}) int
-
-// StringComparator provides a fast comparison on strings
-func StringComparator(a, b interface{}) int {
-	s1 := a.(string)
-	s2 := b.(string)
-	min := len(s2)
-	if len(s1) < len(s2) {
-		min = len(s1)
-	}
-	diff := 0
-	for i := 0; i < min && diff == 0; i++ {
-		diff = int(s1[i]) - int(s2[i])
-	}
-	if diff == 0 {
-		diff = len(s1) - len(s2)
-	}
-	if diff < 0 {
-		return -1
-	}
-	if diff > 0 {
-		return 1
-	}
-	return 0
-}
-
-// IntComparator provides a basic comparison on int
-func IntComparator(a, b interface{}) int {
-	aAsserted := a.(int)
-	bAsserted := b.(int)
-	switch {
-	case aAsserted > bAsserted:
-		return 1
-	case aAsserted < bAsserted:
-		return -1
-	default:
-		return 0
-	}
-}
-
-// Int8Comparator provides a basic comparison on int8
-func Int8Comparator(a, b interface{}) int {
-	aAsserted := a.(int8)
-	bAsserted := b.(int8)
-	switch {
-	case aAsserted > bAsserted:
-		return 1
-	case aAsserted < bAsserted:
-		return -1
-	default:
-		return 0
-	}
-}
-
-// Int16Comparator provides a basic comparison on int16
-func Int16Comparator(a, b interface{}) int {
-	aAsserted := a.(int16)
-	bAsserted := b.(int16)
-	switch {
-	case aAsserted > bAsserted:
-		return 1
-	case aAsserted < bAsserted:
-		return -1
-	default:
-		return 0
-	}
-}
-
-// Int32Comparator provides a basic comparison on int32
-func Int32Comparator(a, b interface{}) int {
-	aAsserted := a.(int32)
-	bAsserted := b.(int32)
-	switch {
-	case aAsserted > bAsserted:
-		return 1
-	case aAsserted < bAsserted:
-		return -1
-	default:
-		return 0
-	}
-}
-
-// Int64Comparator provides a basic comparison on int64
-func Int64Comparator(a, b interface{}) int {
-	aAsserted := a.(int64)
-	bAsserted := b.(int64)
-	switch {
-	case aAsserted > bAsserted:
-		return 1
-	case aAsserted < bAsserted:
-		return -1
-	default:
-		return 0
-	}
-}
-
-// UIntComparator provides a basic comparison on uint
-func UIntComparator(a, b interface{}) int {
-	aAsserted := a.(uint)
-	bAsserted := b.(uint)
-	switch {
-	case aAsserted > bAsserted:
-		return 1
-	case aAsserted < bAsserted:
-		return -1
-	default:
-		return 0
-	}
-}
-
-// UInt8Comparator provides a basic comparison on uint8
-func UInt8Comparator(a, b interface{}) int {
-	aAsserted := a.(uint8)
-	bAsserted := b.(uint8)
-	switch {
-	case aAsserted > bAsserted:
-		return 1
-	case aAsserted < bAsserted:
-		return -1
-	default:
-		return 0
-	}
-}
-
-// UInt16Comparator provides a basic comparison on uint16
-func UInt16Comparator(a, b interface{}) int {
-	aAsserted := a.(uint16)
-	bAsserted := b.(uint16)
-	switch {
-	case aAsserted > bAsserted:
-		return 1
-	case aAsserted < bAsserted:
-		return -1
-	default:
-		return 0
-	}
-}
-
-// UInt32Comparator provides a basic comparison on uint32
-func UInt32Comparator(a, b interface{}) int {
-	aAsserted := a.(uint32)
-	bAsserted := b.(uint32)
-	switch {
-	case aAsserted > bAsserted:
-		return 1
-	case aAsserted < bAsserted:
-		return -1
-	default:
-		return 0
-	}
-}
-
-// UInt64Comparator provides a basic comparison on uint64
-func UInt64Comparator(a, b interface{}) int {
-	aAsserted := a.(uint64)
-	bAsserted := b.(uint64)
-	switch {
-	case aAsserted > bAsserted:
-		return 1
-	case aAsserted < bAsserted:
-		return -1
-	default:
-		return 0
-	}
-}
-
-// Float32Comparator provides a basic comparison on float32
-func Float32Comparator(a, b interface{}) int {
-	aAsserted := a.(float32)
-	bAsserted := b.(float32)
-	switch {
-	case aAsserted > bAsserted:
-		return 1
-	case aAsserted < bAsserted:
-		return -1
-	default:
-		return 0
-	}
-}
-
-// Float64Comparator provides a basic comparison on float64
-func Float64Comparator(a, b interface{}) int {
-	aAsserted := a.(float64)
-	bAsserted := b.(float64)
-	switch {
-	case aAsserted > bAsserted:
-		return 1
-	case aAsserted < bAsserted:
-		return -1
-	default:
-		return 0
-	}
-}
-
-// ByteComparator provides a basic comparison on byte
-func ByteComparator(a, b interface{}) int {
-	aAsserted := a.(byte)
-	bAsserted := b.(byte)
-	switch {
-	case aAsserted > bAsserted:
-		return 1
-	case aAsserted < bAsserted:
-		return -1
-	default:
-		return 0
-	}
-}
-
-// RuneComparator provides a basic comparison on rune
-func RuneComparator(a, b interface{}) int {
-	aAsserted := a.(rune)
-	bAsserted := b.(rune)
-	switch {
-	case aAsserted > bAsserted:
-		return 1
-	case aAsserted < bAsserted:
-		return -1
-	default:
-		return 0
-	}
-}
-
-// TimeComparator provides a basic comparison on time.Time
-func TimeComparator(a, b interface{}) int {
-	aAsserted := a.(time.Time)
-	bAsserted := b.(time.Time)
-
-	switch {
-	case aAsserted.After(bAsserted):
-		return 1
-	case aAsserted.Before(bAsserted):
-		return -1
-	default:
-		return 0
-	}
-}

+ 0 - 29
vendor/github.com/emirpasic/gods/utils/sort.go

@@ -1,29 +0,0 @@
-// Copyright (c) 2015, Emir Pasic. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package utils
-
-import "sort"
-
-// Sort sorts values (in-place) with respect to the given comparator.
-//
-// Uses Go's sort (hybrid of quicksort for large and then insertion sort for smaller slices).
-func Sort(values []interface{}, comparator Comparator) {
-	sort.Sort(sortable{values, comparator})
-}
-
-type sortable struct {
-	values     []interface{}
-	comparator Comparator
-}
-
-func (s sortable) Len() int {
-	return len(s.values)
-}
-func (s sortable) Swap(i, j int) {
-	s.values[i], s.values[j] = s.values[j], s.values[i]
-}
-func (s sortable) Less(i, j int) bool {
-	return s.comparator(s.values[i], s.values[j]) < 0
-}

+ 0 - 47
vendor/github.com/emirpasic/gods/utils/utils.go

@@ -1,47 +0,0 @@
-// Copyright (c) 2015, Emir Pasic. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package utils provides common utility functions.
-//
-// Provided functionalities:
-// - sorting
-// - comparators
-package utils
-
-import (
-	"fmt"
-	"strconv"
-)
-
-// ToString converts a value to string.
-func ToString(value interface{}) string {
-	switch value.(type) {
-	case string:
-		return value.(string)
-	case int8:
-		return strconv.FormatInt(int64(value.(int8)), 10)
-	case int16:
-		return strconv.FormatInt(int64(value.(int16)), 10)
-	case int32:
-		return strconv.FormatInt(int64(value.(int32)), 10)
-	case int64:
-		return strconv.FormatInt(int64(value.(int64)), 10)
-	case uint8:
-		return strconv.FormatUint(uint64(value.(uint8)), 10)
-	case uint16:
-		return strconv.FormatUint(uint64(value.(uint16)), 10)
-	case uint32:
-		return strconv.FormatUint(uint64(value.(uint32)), 10)
-	case uint64:
-		return strconv.FormatUint(uint64(value.(uint64)), 10)
-	case float32:
-		return strconv.FormatFloat(float64(value.(float32)), 'g', -1, 64)
-	case float64:
-		return strconv.FormatFloat(float64(value.(float64)), 'g', -1, 64)
-	case bool:
-		return strconv.FormatBool(value.(bool))
-	default:
-		return fmt.Sprintf("%+v", value)
-	}
-}

+ 0 - 3
vendor/github.com/golang/protobuf/AUTHORS

@@ -1,3 +0,0 @@
-# This source code refers to The Go Authors for copyright purposes.
-# The master list of authors is in the main Go distribution,
-# visible at http://tip.golang.org/AUTHORS.

+ 0 - 3
vendor/github.com/golang/protobuf/CONTRIBUTORS

@@ -1,3 +0,0 @@
-# This source code was written by the Go contributors.
-# The master list of contributors is in the main Go distribution,
-# visible at http://tip.golang.org/CONTRIBUTORS.

+ 0 - 28
vendor/github.com/golang/protobuf/LICENSE

@@ -1,28 +0,0 @@
-Copyright 2010 The Go Authors.  All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-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.
-

+ 0 - 253
vendor/github.com/golang/protobuf/proto/clone.go

@@ -1,253 +0,0 @@
-// Go support for Protocol Buffers - Google's data interchange format
-//
-// Copyright 2011 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.
-
-// Protocol buffer deep copy and merge.
-// TODO: RawMessage.
-
-package proto
-
-import (
-	"fmt"
-	"log"
-	"reflect"
-	"strings"
-)
-
-// Clone returns a deep copy of a protocol buffer.
-func Clone(src Message) Message {
-	in := reflect.ValueOf(src)
-	if in.IsNil() {
-		return src
-	}
-	out := reflect.New(in.Type().Elem())
-	dst := out.Interface().(Message)
-	Merge(dst, src)
-	return dst
-}
-
-// Merger is the interface representing objects that can merge messages of the same type.
-type Merger interface {
-	// Merge merges src into this message.
-	// Required and optional fields that are set in src will be set to that value in dst.
-	// Elements of repeated fields will be appended.
-	//
-	// Merge may panic if called with a different argument type than the receiver.
-	Merge(src Message)
-}
-
-// generatedMerger is the custom merge method that generated protos will have.
-// We must add this method since a generate Merge method will conflict with
-// many existing protos that have a Merge data field already defined.
-type generatedMerger interface {
-	XXX_Merge(src Message)
-}
-
-// Merge merges src into dst.
-// Required and optional fields that are set in src will be set to that value in dst.
-// Elements of repeated fields will be appended.
-// Merge panics if src and dst are not the same type, or if dst is nil.
-func Merge(dst, src Message) {
-	if m, ok := dst.(Merger); ok {
-		m.Merge(src)
-		return
-	}
-
-	in := reflect.ValueOf(src)
-	out := reflect.ValueOf(dst)
-	if out.IsNil() {
-		panic("proto: nil destination")
-	}
-	if in.Type() != out.Type() {
-		panic(fmt.Sprintf("proto.Merge(%T, %T) type mismatch", dst, src))
-	}
-	if in.IsNil() {
-		return // Merge from nil src is a noop
-	}
-	if m, ok := dst.(generatedMerger); ok {
-		m.XXX_Merge(src)
-		return
-	}
-	mergeStruct(out.Elem(), in.Elem())
-}
-
-func mergeStruct(out, in reflect.Value) {
-	sprop := GetProperties(in.Type())
-	for i := 0; i < in.NumField(); i++ {
-		f := in.Type().Field(i)
-		if strings.HasPrefix(f.Name, "XXX_") {
-			continue
-		}
-		mergeAny(out.Field(i), in.Field(i), false, sprop.Prop[i])
-	}
-
-	if emIn, err := extendable(in.Addr().Interface()); err == nil {
-		emOut, _ := extendable(out.Addr().Interface())
-		mIn, muIn := emIn.extensionsRead()
-		if mIn != nil {
-			mOut := emOut.extensionsWrite()
-			muIn.Lock()
-			mergeExtension(mOut, mIn)
-			muIn.Unlock()
-		}
-	}
-
-	uf := in.FieldByName("XXX_unrecognized")
-	if !uf.IsValid() {
-		return
-	}
-	uin := uf.Bytes()
-	if len(uin) > 0 {
-		out.FieldByName("XXX_unrecognized").SetBytes(append([]byte(nil), uin...))
-	}
-}
-
-// mergeAny performs a merge between two values of the same type.
-// viaPtr indicates whether the values were indirected through a pointer (implying proto2).
-// prop is set if this is a struct field (it may be nil).
-func mergeAny(out, in reflect.Value, viaPtr bool, prop *Properties) {
-	if in.Type() == protoMessageType {
-		if !in.IsNil() {
-			if out.IsNil() {
-				out.Set(reflect.ValueOf(Clone(in.Interface().(Message))))
-			} else {
-				Merge(out.Interface().(Message), in.Interface().(Message))
-			}
-		}
-		return
-	}
-	switch in.Kind() {
-	case reflect.Bool, reflect.Float32, reflect.Float64, reflect.Int32, reflect.Int64,
-		reflect.String, reflect.Uint32, reflect.Uint64:
-		if !viaPtr && isProto3Zero(in) {
-			return
-		}
-		out.Set(in)
-	case reflect.Interface:
-		// Probably a oneof field; copy non-nil values.
-		if in.IsNil() {
-			return
-		}
-		// Allocate destination if it is not set, or set to a different type.
-		// Otherwise we will merge as normal.
-		if out.IsNil() || out.Elem().Type() != in.Elem().Type() {
-			out.Set(reflect.New(in.Elem().Elem().Type())) // interface -> *T -> T -> new(T)
-		}
-		mergeAny(out.Elem(), in.Elem(), false, nil)
-	case reflect.Map:
-		if in.Len() == 0 {
-			return
-		}
-		if out.IsNil() {
-			out.Set(reflect.MakeMap(in.Type()))
-		}
-		// For maps with value types of *T or []byte we need to deep copy each value.
-		elemKind := in.Type().Elem().Kind()
-		for _, key := range in.MapKeys() {
-			var val reflect.Value
-			switch elemKind {
-			case reflect.Ptr:
-				val = reflect.New(in.Type().Elem().Elem())
-				mergeAny(val, in.MapIndex(key), false, nil)
-			case reflect.Slice:
-				val = in.MapIndex(key)
-				val = reflect.ValueOf(append([]byte{}, val.Bytes()...))
-			default:
-				val = in.MapIndex(key)
-			}
-			out.SetMapIndex(key, val)
-		}
-	case reflect.Ptr:
-		if in.IsNil() {
-			return
-		}
-		if out.IsNil() {
-			out.Set(reflect.New(in.Elem().Type()))
-		}
-		mergeAny(out.Elem(), in.Elem(), true, nil)
-	case reflect.Slice:
-		if in.IsNil() {
-			return
-		}
-		if in.Type().Elem().Kind() == reflect.Uint8 {
-			// []byte is a scalar bytes field, not a repeated field.
-
-			// Edge case: if this is in a proto3 message, a zero length
-			// bytes field is considered the zero value, and should not
-			// be merged.
-			if prop != nil && prop.proto3 && in.Len() == 0 {
-				return
-			}
-
-			// Make a deep copy.
-			// Append to []byte{} instead of []byte(nil) so that we never end up
-			// with a nil result.
-			out.SetBytes(append([]byte{}, in.Bytes()...))
-			return
-		}
-		n := in.Len()
-		if out.IsNil() {
-			out.Set(reflect.MakeSlice(in.Type(), 0, n))
-		}
-		switch in.Type().Elem().Kind() {
-		case reflect.Bool, reflect.Float32, reflect.Float64, reflect.Int32, reflect.Int64,
-			reflect.String, reflect.Uint32, reflect.Uint64:
-			out.Set(reflect.AppendSlice(out, in))
-		default:
-			for i := 0; i < n; i++ {
-				x := reflect.Indirect(reflect.New(in.Type().Elem()))
-				mergeAny(x, in.Index(i), false, nil)
-				out.Set(reflect.Append(out, x))
-			}
-		}
-	case reflect.Struct:
-		mergeStruct(out, in)
-	default:
-		// unknown type, so not a protocol buffer
-		log.Printf("proto: don't know how to copy %v", in)
-	}
-}
-
-func mergeExtension(out, in map[int32]Extension) {
-	for extNum, eIn := range in {
-		eOut := Extension{desc: eIn.desc}
-		if eIn.value != nil {
-			v := reflect.New(reflect.TypeOf(eIn.value)).Elem()
-			mergeAny(v, reflect.ValueOf(eIn.value), false, nil)
-			eOut.value = v.Interface()
-		}
-		if eIn.enc != nil {
-			eOut.enc = make([]byte, len(eIn.enc))
-			copy(eOut.enc, eIn.enc)
-		}
-
-		out[extNum] = eOut
-	}
-}

+ 0 - 428
vendor/github.com/golang/protobuf/proto/decode.go

@@ -1,428 +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.
-
-package proto
-
-/*
- * Routines for decoding protocol buffer data to construct in-memory representations.
- */
-
-import (
-	"errors"
-	"fmt"
-	"io"
-)
-
-// errOverflow is returned when an integer is too large to be represented.
-var errOverflow = errors.New("proto: integer overflow")
-
-// ErrInternalBadWireType is returned by generated code when an incorrect
-// wire type is encountered. It does not get returned to user code.
-var ErrInternalBadWireType = errors.New("proto: internal error: bad wiretype for oneof")
-
-// DecodeVarint reads a varint-encoded integer from the slice.
-// It returns the integer and the number of bytes consumed, or
-// zero if there is not enough.
-// This is the format for the
-// int32, int64, uint32, uint64, bool, and enum
-// protocol buffer types.
-func DecodeVarint(buf []byte) (x uint64, n int) {
-	for shift := uint(0); shift < 64; shift += 7 {
-		if n >= len(buf) {
-			return 0, 0
-		}
-		b := uint64(buf[n])
-		n++
-		x |= (b & 0x7F) << shift
-		if (b & 0x80) == 0 {
-			return x, n
-		}
-	}
-
-	// The number is too large to represent in a 64-bit value.
-	return 0, 0
-}
-
-func (p *Buffer) decodeVarintSlow() (x uint64, err error) {
-	i := p.index
-	l := len(p.buf)
-
-	for shift := uint(0); shift < 64; shift += 7 {
-		if i >= l {
-			err = io.ErrUnexpectedEOF
-			return
-		}
-		b := p.buf[i]
-		i++
-		x |= (uint64(b) & 0x7F) << shift
-		if b < 0x80 {
-			p.index = i
-			return
-		}
-	}
-
-	// The number is too large to represent in a 64-bit value.
-	err = errOverflow
-	return
-}
-
-// DecodeVarint reads a varint-encoded integer from the Buffer.
-// This is the format for the
-// int32, int64, uint32, uint64, bool, and enum
-// protocol buffer types.
-func (p *Buffer) DecodeVarint() (x uint64, err error) {
-	i := p.index
-	buf := p.buf
-
-	if i >= len(buf) {
-		return 0, io.ErrUnexpectedEOF
-	} else if buf[i] < 0x80 {
-		p.index++
-		return uint64(buf[i]), nil
-	} else if len(buf)-i < 10 {
-		return p.decodeVarintSlow()
-	}
-
-	var b uint64
-	// we already checked the first byte
-	x = uint64(buf[i]) - 0x80
-	i++
-
-	b = uint64(buf[i])
-	i++
-	x += b << 7
-	if b&0x80 == 0 {
-		goto done
-	}
-	x -= 0x80 << 7
-
-	b = uint64(buf[i])
-	i++
-	x += b << 14
-	if b&0x80 == 0 {
-		goto done
-	}
-	x -= 0x80 << 14
-
-	b = uint64(buf[i])
-	i++
-	x += b << 21
-	if b&0x80 == 0 {
-		goto done
-	}
-	x -= 0x80 << 21
-
-	b = uint64(buf[i])
-	i++
-	x += b << 28
-	if b&0x80 == 0 {
-		goto done
-	}
-	x -= 0x80 << 28
-
-	b = uint64(buf[i])
-	i++
-	x += b << 35
-	if b&0x80 == 0 {
-		goto done
-	}
-	x -= 0x80 << 35
-
-	b = uint64(buf[i])
-	i++
-	x += b << 42
-	if b&0x80 == 0 {
-		goto done
-	}
-	x -= 0x80 << 42
-
-	b = uint64(buf[i])
-	i++
-	x += b << 49
-	if b&0x80 == 0 {
-		goto done
-	}
-	x -= 0x80 << 49
-
-	b = uint64(buf[i])
-	i++
-	x += b << 56
-	if b&0x80 == 0 {
-		goto done
-	}
-	x -= 0x80 << 56
-
-	b = uint64(buf[i])
-	i++
-	x += b << 63
-	if b&0x80 == 0 {
-		goto done
-	}
-	// x -= 0x80 << 63 // Always zero.
-
-	return 0, errOverflow
-
-done:
-	p.index = i
-	return x, nil
-}
-
-// DecodeFixed64 reads a 64-bit integer from the Buffer.
-// This is the format for the
-// fixed64, sfixed64, and double protocol buffer types.
-func (p *Buffer) DecodeFixed64() (x uint64, err error) {
-	// x, err already 0
-	i := p.index + 8
-	if i < 0 || i > len(p.buf) {
-		err = io.ErrUnexpectedEOF
-		return
-	}
-	p.index = i
-
-	x = uint64(p.buf[i-8])
-	x |= uint64(p.buf[i-7]) << 8
-	x |= uint64(p.buf[i-6]) << 16
-	x |= uint64(p.buf[i-5]) << 24
-	x |= uint64(p.buf[i-4]) << 32
-	x |= uint64(p.buf[i-3]) << 40
-	x |= uint64(p.buf[i-2]) << 48
-	x |= uint64(p.buf[i-1]) << 56
-	return
-}
-
-// DecodeFixed32 reads a 32-bit integer from the Buffer.
-// This is the format for the
-// fixed32, sfixed32, and float protocol buffer types.
-func (p *Buffer) DecodeFixed32() (x uint64, err error) {
-	// x, err already 0
-	i := p.index + 4
-	if i < 0 || i > len(p.buf) {
-		err = io.ErrUnexpectedEOF
-		return
-	}
-	p.index = i
-
-	x = uint64(p.buf[i-4])
-	x |= uint64(p.buf[i-3]) << 8
-	x |= uint64(p.buf[i-2]) << 16
-	x |= uint64(p.buf[i-1]) << 24
-	return
-}
-
-// DecodeZigzag64 reads a zigzag-encoded 64-bit integer
-// from the Buffer.
-// This is the format used for the sint64 protocol buffer type.
-func (p *Buffer) DecodeZigzag64() (x uint64, err error) {
-	x, err = p.DecodeVarint()
-	if err != nil {
-		return
-	}
-	x = (x >> 1) ^ uint64((int64(x&1)<<63)>>63)
-	return
-}
-
-// DecodeZigzag32 reads a zigzag-encoded 32-bit integer
-// from  the Buffer.
-// This is the format used for the sint32 protocol buffer type.
-func (p *Buffer) DecodeZigzag32() (x uint64, err error) {
-	x, err = p.DecodeVarint()
-	if err != nil {
-		return
-	}
-	x = uint64((uint32(x) >> 1) ^ uint32((int32(x&1)<<31)>>31))
-	return
-}
-
-// DecodeRawBytes reads a count-delimited byte buffer from the Buffer.
-// This is the format used for the bytes protocol buffer
-// type and for embedded messages.
-func (p *Buffer) DecodeRawBytes(alloc bool) (buf []byte, err error) {
-	n, err := p.DecodeVarint()
-	if err != nil {
-		return nil, err
-	}
-
-	nb := int(n)
-	if nb < 0 {
-		return nil, fmt.Errorf("proto: bad byte length %d", nb)
-	}
-	end := p.index + nb
-	if end < p.index || end > len(p.buf) {
-		return nil, io.ErrUnexpectedEOF
-	}
-
-	if !alloc {
-		// todo: check if can get more uses of alloc=false
-		buf = p.buf[p.index:end]
-		p.index += nb
-		return
-	}
-
-	buf = make([]byte, nb)
-	copy(buf, p.buf[p.index:])
-	p.index += nb
-	return
-}
-
-// DecodeStringBytes reads an encoded string from the Buffer.
-// This is the format used for the proto2 string type.
-func (p *Buffer) DecodeStringBytes() (s string, err error) {
-	buf, err := p.DecodeRawBytes(false)
-	if err != nil {
-		return
-	}
-	return string(buf), nil
-}
-
-// Unmarshaler is the interface representing objects that can
-// unmarshal themselves.  The argument points to data that may be
-// overwritten, so implementations should not keep references to the
-// buffer.
-// Unmarshal implementations should not clear the receiver.
-// Any unmarshaled data should be merged into the receiver.
-// Callers of Unmarshal that do not want to retain existing data
-// should Reset the receiver before calling Unmarshal.
-type Unmarshaler interface {
-	Unmarshal([]byte) error
-}
-
-// newUnmarshaler is the interface representing objects that can
-// unmarshal themselves. The semantics are identical to Unmarshaler.
-//
-// This exists to support protoc-gen-go generated messages.
-// The proto package will stop type-asserting to this interface in the future.
-//
-// DO NOT DEPEND ON THIS.
-type newUnmarshaler interface {
-	XXX_Unmarshal([]byte) error
-}
-
-// Unmarshal parses the protocol buffer representation in buf and places the
-// decoded result in pb.  If the struct underlying pb does not match
-// the data in buf, the results can be unpredictable.
-//
-// Unmarshal resets pb before starting to unmarshal, so any
-// existing data in pb is always removed. Use UnmarshalMerge
-// to preserve and append to existing data.
-func Unmarshal(buf []byte, pb Message) error {
-	pb.Reset()
-	if u, ok := pb.(newUnmarshaler); ok {
-		return u.XXX_Unmarshal(buf)
-	}
-	if u, ok := pb.(Unmarshaler); ok {
-		return u.Unmarshal(buf)
-	}
-	return NewBuffer(buf).Unmarshal(pb)
-}
-
-// UnmarshalMerge parses the protocol buffer representation in buf and
-// writes the decoded result to pb.  If the struct underlying pb does not match
-// the data in buf, the results can be unpredictable.
-//
-// UnmarshalMerge merges into existing data in pb.
-// Most code should use Unmarshal instead.
-func UnmarshalMerge(buf []byte, pb Message) error {
-	if u, ok := pb.(newUnmarshaler); ok {
-		return u.XXX_Unmarshal(buf)
-	}
-	if u, ok := pb.(Unmarshaler); ok {
-		// NOTE: The history of proto have unfortunately been inconsistent
-		// whether Unmarshaler should or should not implicitly clear itself.
-		// Some implementations do, most do not.
-		// Thus, calling this here may or may not do what people want.
-		//
-		// See https://github.com/golang/protobuf/issues/424
-		return u.Unmarshal(buf)
-	}
-	return NewBuffer(buf).Unmarshal(pb)
-}
-
-// DecodeMessage reads a count-delimited message from the Buffer.
-func (p *Buffer) DecodeMessage(pb Message) error {
-	enc, err := p.DecodeRawBytes(false)
-	if err != nil {
-		return err
-	}
-	return NewBuffer(enc).Unmarshal(pb)
-}
-
-// DecodeGroup reads a tag-delimited group from the Buffer.
-// StartGroup tag is already consumed. This function consumes
-// EndGroup tag.
-func (p *Buffer) DecodeGroup(pb Message) error {
-	b := p.buf[p.index:]
-	x, y := findEndGroup(b)
-	if x < 0 {
-		return io.ErrUnexpectedEOF
-	}
-	err := Unmarshal(b[:x], pb)
-	p.index += y
-	return err
-}
-
-// Unmarshal parses the protocol buffer representation in the
-// Buffer and places the decoded result in pb.  If the struct
-// underlying pb does not match the data in the buffer, the results can be
-// unpredictable.
-//
-// Unlike proto.Unmarshal, this does not reset pb before starting to unmarshal.
-func (p *Buffer) Unmarshal(pb Message) error {
-	// If the object can unmarshal itself, let it.
-	if u, ok := pb.(newUnmarshaler); ok {
-		err := u.XXX_Unmarshal(p.buf[p.index:])
-		p.index = len(p.buf)
-		return err
-	}
-	if u, ok := pb.(Unmarshaler); ok {
-		// NOTE: The history of proto have unfortunately been inconsistent
-		// whether Unmarshaler should or should not implicitly clear itself.
-		// Some implementations do, most do not.
-		// Thus, calling this here may or may not do what people want.
-		//
-		// See https://github.com/golang/protobuf/issues/424
-		err := u.Unmarshal(p.buf[p.index:])
-		p.index = len(p.buf)
-		return err
-	}
-
-	// Slow workaround for messages that aren't Unmarshalers.
-	// This includes some hand-coded .pb.go files and
-	// bootstrap protos.
-	// TODO: fix all of those and then add Unmarshal to
-	// the Message interface. Then:
-	// The cast above and code below can be deleted.
-	// The old unmarshaler can be deleted.
-	// Clients can call Unmarshal directly (can already do that, actually).
-	var info InternalMessageInfo
-	err := info.Unmarshal(pb, p.buf[p.index:])
-	p.index = len(p.buf)
-	return err
-}

+ 0 - 350
vendor/github.com/golang/protobuf/proto/discard.go

@@ -1,350 +0,0 @@
-// Go support for Protocol Buffers - Google's data interchange format
-//
-// Copyright 2017 The Go Authors.  All rights reserved.
-// https://github.com/golang/protobuf
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-package proto
-
-import (
-	"fmt"
-	"reflect"
-	"strings"
-	"sync"
-	"sync/atomic"
-)
-
-type generatedDiscarder interface {
-	XXX_DiscardUnknown()
-}
-
-// DiscardUnknown recursively discards all unknown fields from this message
-// and all embedded messages.
-//
-// When unmarshaling a message with unrecognized fields, the tags and values
-// of such fields are preserved in the Message. This allows a later call to
-// marshal to be able to produce a message that continues to have those
-// unrecognized fields. To avoid this, DiscardUnknown is used to
-// explicitly clear the unknown fields after unmarshaling.
-//
-// For proto2 messages, the unknown fields of message extensions are only
-// discarded from messages that have been accessed via GetExtension.
-func DiscardUnknown(m Message) {
-	if m, ok := m.(generatedDiscarder); ok {
-		m.XXX_DiscardUnknown()
-		return
-	}
-	// TODO: Dynamically populate a InternalMessageInfo for legacy messages,
-	// but the master branch has no implementation for InternalMessageInfo,
-	// so it would be more work to replicate that approach.
-	discardLegacy(m)
-}
-
-// DiscardUnknown recursively discards all unknown fields.
-func (a *InternalMessageInfo) DiscardUnknown(m Message) {
-	di := atomicLoadDiscardInfo(&a.discard)
-	if di == nil {
-		di = getDiscardInfo(reflect.TypeOf(m).Elem())
-		atomicStoreDiscardInfo(&a.discard, di)
-	}
-	di.discard(toPointer(&m))
-}
-
-type discardInfo struct {
-	typ reflect.Type
-
-	initialized int32 // 0: only typ is valid, 1: everything is valid
-	lock        sync.Mutex
-
-	fields       []discardFieldInfo
-	unrecognized field
-}
-
-type discardFieldInfo struct {
-	field   field // Offset of field, guaranteed to be valid
-	discard func(src pointer)
-}
-
-var (
-	discardInfoMap  = map[reflect.Type]*discardInfo{}
-	discardInfoLock sync.Mutex
-)
-
-func getDiscardInfo(t reflect.Type) *discardInfo {
-	discardInfoLock.Lock()
-	defer discardInfoLock.Unlock()
-	di := discardInfoMap[t]
-	if di == nil {
-		di = &discardInfo{typ: t}
-		discardInfoMap[t] = di
-	}
-	return di
-}
-
-func (di *discardInfo) discard(src pointer) {
-	if src.isNil() {
-		return // Nothing to do.
-	}
-
-	if atomic.LoadInt32(&di.initialized) == 0 {
-		di.computeDiscardInfo()
-	}
-
-	for _, fi := range di.fields {
-		sfp := src.offset(fi.field)
-		fi.discard(sfp)
-	}
-
-	// For proto2 messages, only discard unknown fields in message extensions
-	// that have been accessed via GetExtension.
-	if em, err := extendable(src.asPointerTo(di.typ).Interface()); err == nil {
-		// Ignore lock since DiscardUnknown is not concurrency safe.
-		emm, _ := em.extensionsRead()
-		for _, mx := range emm {
-			if m, ok := mx.value.(Message); ok {
-				DiscardUnknown(m)
-			}
-		}
-	}
-
-	if di.unrecognized.IsValid() {
-		*src.offset(di.unrecognized).toBytes() = nil
-	}
-}
-
-func (di *discardInfo) computeDiscardInfo() {
-	di.lock.Lock()
-	defer di.lock.Unlock()
-	if di.initialized != 0 {
-		return
-	}
-	t := di.typ
-	n := t.NumField()
-
-	for i := 0; i < n; i++ {
-		f := t.Field(i)
-		if strings.HasPrefix(f.Name, "XXX_") {
-			continue
-		}
-
-		dfi := discardFieldInfo{field: toField(&f)}
-		tf := f.Type
-
-		// Unwrap tf to get its most basic type.
-		var isPointer, isSlice bool
-		if tf.Kind() == reflect.Slice && tf.Elem().Kind() != reflect.Uint8 {
-			isSlice = true
-			tf = tf.Elem()
-		}
-		if tf.Kind() == reflect.Ptr {
-			isPointer = true
-			tf = tf.Elem()
-		}
-		if isPointer && isSlice && tf.Kind() != reflect.Struct {
-			panic(fmt.Sprintf("%v.%s cannot be a slice of pointers to primitive types", t, f.Name))
-		}
-
-		switch tf.Kind() {
-		case reflect.Struct:
-			switch {
-			case !isPointer:
-				panic(fmt.Sprintf("%v.%s cannot be a direct struct value", t, f.Name))
-			case isSlice: // E.g., []*pb.T
-				di := getDiscardInfo(tf)
-				dfi.discard = func(src pointer) {
-					sps := src.getPointerSlice()
-					for _, sp := range sps {
-						if !sp.isNil() {
-							di.discard(sp)
-						}
-					}
-				}
-			default: // E.g., *pb.T
-				di := getDiscardInfo(tf)
-				dfi.discard = func(src pointer) {
-					sp := src.getPointer()
-					if !sp.isNil() {
-						di.discard(sp)
-					}
-				}
-			}
-		case reflect.Map:
-			switch {
-			case isPointer || isSlice:
-				panic(fmt.Sprintf("%v.%s cannot be a pointer to a map or a slice of map values", t, f.Name))
-			default: // E.g., map[K]V
-				if tf.Elem().Kind() == reflect.Ptr { // Proto struct (e.g., *T)
-					dfi.discard = func(src pointer) {
-						sm := src.asPointerTo(tf).Elem()
-						if sm.Len() == 0 {
-							return
-						}
-						for _, key := range sm.MapKeys() {
-							val := sm.MapIndex(key)
-							DiscardUnknown(val.Interface().(Message))
-						}
-					}
-				} else {
-					dfi.discard = func(pointer) {} // Noop
-				}
-			}
-		case reflect.Interface:
-			// Must be oneof field.
-			switch {
-			case isPointer || isSlice:
-				panic(fmt.Sprintf("%v.%s cannot be a pointer to a interface or a slice of interface values", t, f.Name))
-			default: // E.g., interface{}
-				// TODO: Make this faster?
-				dfi.discard = func(src pointer) {
-					su := src.asPointerTo(tf).Elem()
-					if !su.IsNil() {
-						sv := su.Elem().Elem().Field(0)
-						if sv.Kind() == reflect.Ptr && sv.IsNil() {
-							return
-						}
-						switch sv.Type().Kind() {
-						case reflect.Ptr: // Proto struct (e.g., *T)
-							DiscardUnknown(sv.Interface().(Message))
-						}
-					}
-				}
-			}
-		default:
-			continue
-		}
-		di.fields = append(di.fields, dfi)
-	}
-
-	di.unrecognized = invalidField
-	if f, ok := t.FieldByName("XXX_unrecognized"); ok {
-		if f.Type != reflect.TypeOf([]byte{}) {
-			panic("expected XXX_unrecognized to be of type []byte")
-		}
-		di.unrecognized = toField(&f)
-	}
-
-	atomic.StoreInt32(&di.initialized, 1)
-}
-
-func discardLegacy(m Message) {
-	v := reflect.ValueOf(m)
-	if v.Kind() != reflect.Ptr || v.IsNil() {
-		return
-	}
-	v = v.Elem()
-	if v.Kind() != reflect.Struct {
-		return
-	}
-	t := v.Type()
-
-	for i := 0; i < v.NumField(); i++ {
-		f := t.Field(i)
-		if strings.HasPrefix(f.Name, "XXX_") {
-			continue
-		}
-		vf := v.Field(i)
-		tf := f.Type
-
-		// Unwrap tf to get its most basic type.
-		var isPointer, isSlice bool
-		if tf.Kind() == reflect.Slice && tf.Elem().Kind() != reflect.Uint8 {
-			isSlice = true
-			tf = tf.Elem()
-		}
-		if tf.Kind() == reflect.Ptr {
-			isPointer = true
-			tf = tf.Elem()
-		}
-		if isPointer && isSlice && tf.Kind() != reflect.Struct {
-			panic(fmt.Sprintf("%T.%s cannot be a slice of pointers to primitive types", m, f.Name))
-		}
-
-		switch tf.Kind() {
-		case reflect.Struct:
-			switch {
-			case !isPointer:
-				panic(fmt.Sprintf("%T.%s cannot be a direct struct value", m, f.Name))
-			case isSlice: // E.g., []*pb.T
-				for j := 0; j < vf.Len(); j++ {
-					discardLegacy(vf.Index(j).Interface().(Message))
-				}
-			default: // E.g., *pb.T
-				discardLegacy(vf.Interface().(Message))
-			}
-		case reflect.Map:
-			switch {
-			case isPointer || isSlice:
-				panic(fmt.Sprintf("%T.%s cannot be a pointer to a map or a slice of map values", m, f.Name))
-			default: // E.g., map[K]V
-				tv := vf.Type().Elem()
-				if tv.Kind() == reflect.Ptr && tv.Implements(protoMessageType) { // Proto struct (e.g., *T)
-					for _, key := range vf.MapKeys() {
-						val := vf.MapIndex(key)
-						discardLegacy(val.Interface().(Message))
-					}
-				}
-			}
-		case reflect.Interface:
-			// Must be oneof field.
-			switch {
-			case isPointer || isSlice:
-				panic(fmt.Sprintf("%T.%s cannot be a pointer to a interface or a slice of interface values", m, f.Name))
-			default: // E.g., test_proto.isCommunique_Union interface
-				if !vf.IsNil() && f.Tag.Get("protobuf_oneof") != "" {
-					vf = vf.Elem() // E.g., *test_proto.Communique_Msg
-					if !vf.IsNil() {
-						vf = vf.Elem()   // E.g., test_proto.Communique_Msg
-						vf = vf.Field(0) // E.g., Proto struct (e.g., *T) or primitive value
-						if vf.Kind() == reflect.Ptr {
-							discardLegacy(vf.Interface().(Message))
-						}
-					}
-				}
-			}
-		}
-	}
-
-	if vf := v.FieldByName("XXX_unrecognized"); vf.IsValid() {
-		if vf.Type() != reflect.TypeOf([]byte{}) {
-			panic("expected XXX_unrecognized to be of type []byte")
-		}
-		vf.Set(reflect.ValueOf([]byte(nil)))
-	}
-
-	// For proto2 messages, only discard unknown fields in message extensions
-	// that have been accessed via GetExtension.
-	if em, err := extendable(m); err == nil {
-		// Ignore lock since discardLegacy is not concurrency safe.
-		emm, _ := em.extensionsRead()
-		for _, mx := range emm {
-			if m, ok := mx.value.(Message); ok {
-				discardLegacy(m)
-			}
-		}
-	}
-}

+ 0 - 203
vendor/github.com/golang/protobuf/proto/encode.go

@@ -1,203 +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.
-
-package proto
-
-/*
- * Routines for encoding data into the wire format for protocol buffers.
- */
-
-import (
-	"errors"
-	"reflect"
-)
-
-var (
-	// errRepeatedHasNil is the error returned if Marshal is called with
-	// a struct with a repeated field containing a nil element.
-	errRepeatedHasNil = errors.New("proto: repeated field has nil element")
-
-	// errOneofHasNil is the error returned if Marshal is called with
-	// a struct with a oneof field containing a nil element.
-	errOneofHasNil = errors.New("proto: oneof field has nil value")
-
-	// ErrNil is the error returned if Marshal is called with nil.
-	ErrNil = errors.New("proto: Marshal called with nil")
-
-	// ErrTooLarge is the error returned if Marshal is called with a
-	// message that encodes to >2GB.
-	ErrTooLarge = errors.New("proto: message encodes to over 2 GB")
-)
-
-// The fundamental encoders that put bytes on the wire.
-// Those that take integer types all accept uint64 and are
-// therefore of type valueEncoder.
-
-const maxVarintBytes = 10 // maximum length of a varint
-
-// EncodeVarint returns the varint encoding of x.
-// This is the format for the
-// int32, int64, uint32, uint64, bool, and enum
-// protocol buffer types.
-// Not used by the package itself, but helpful to clients
-// wishing to use the same encoding.
-func EncodeVarint(x uint64) []byte {
-	var buf [maxVarintBytes]byte
-	var n int
-	for n = 0; x > 127; n++ {
-		buf[n] = 0x80 | uint8(x&0x7F)
-		x >>= 7
-	}
-	buf[n] = uint8(x)
-	n++
-	return buf[0:n]
-}
-
-// EncodeVarint writes a varint-encoded integer to the Buffer.
-// This is the format for the
-// int32, int64, uint32, uint64, bool, and enum
-// protocol buffer types.
-func (p *Buffer) EncodeVarint(x uint64) error {
-	for x >= 1<<7 {
-		p.buf = append(p.buf, uint8(x&0x7f|0x80))
-		x >>= 7
-	}
-	p.buf = append(p.buf, uint8(x))
-	return nil
-}
-
-// SizeVarint returns the varint encoding size of an integer.
-func SizeVarint(x uint64) int {
-	switch {
-	case x < 1<<7:
-		return 1
-	case x < 1<<14:
-		return 2
-	case x < 1<<21:
-		return 3
-	case x < 1<<28:
-		return 4
-	case x < 1<<35:
-		return 5
-	case x < 1<<42:
-		return 6
-	case x < 1<<49:
-		return 7
-	case x < 1<<56:
-		return 8
-	case x < 1<<63:
-		return 9
-	}
-	return 10
-}
-
-// EncodeFixed64 writes a 64-bit integer to the Buffer.
-// This is the format for the
-// fixed64, sfixed64, and double protocol buffer types.
-func (p *Buffer) EncodeFixed64(x uint64) error {
-	p.buf = append(p.buf,
-		uint8(x),
-		uint8(x>>8),
-		uint8(x>>16),
-		uint8(x>>24),
-		uint8(x>>32),
-		uint8(x>>40),
-		uint8(x>>48),
-		uint8(x>>56))
-	return nil
-}
-
-// EncodeFixed32 writes a 32-bit integer to the Buffer.
-// This is the format for the
-// fixed32, sfixed32, and float protocol buffer types.
-func (p *Buffer) EncodeFixed32(x uint64) error {
-	p.buf = append(p.buf,
-		uint8(x),
-		uint8(x>>8),
-		uint8(x>>16),
-		uint8(x>>24))
-	return nil
-}
-
-// EncodeZigzag64 writes a zigzag-encoded 64-bit integer
-// to the Buffer.
-// This is the format used for the sint64 protocol buffer type.
-func (p *Buffer) EncodeZigzag64(x uint64) error {
-	// use signed number to get arithmetic right shift.
-	return p.EncodeVarint(uint64((x << 1) ^ uint64((int64(x) >> 63))))
-}
-
-// EncodeZigzag32 writes a zigzag-encoded 32-bit integer
-// to the Buffer.
-// This is the format used for the sint32 protocol buffer type.
-func (p *Buffer) EncodeZigzag32(x uint64) error {
-	// use signed number to get arithmetic right shift.
-	return p.EncodeVarint(uint64((uint32(x) << 1) ^ uint32((int32(x) >> 31))))
-}
-
-// EncodeRawBytes writes a count-delimited byte buffer to the Buffer.
-// This is the format used for the bytes protocol buffer
-// type and for embedded messages.
-func (p *Buffer) EncodeRawBytes(b []byte) error {
-	p.EncodeVarint(uint64(len(b)))
-	p.buf = append(p.buf, b...)
-	return nil
-}
-
-// EncodeStringBytes writes an encoded string to the Buffer.
-// This is the format used for the proto2 string type.
-func (p *Buffer) EncodeStringBytes(s string) error {
-	p.EncodeVarint(uint64(len(s)))
-	p.buf = append(p.buf, s...)
-	return nil
-}
-
-// Marshaler is the interface representing objects that can marshal themselves.
-type Marshaler interface {
-	Marshal() ([]byte, error)
-}
-
-// EncodeMessage writes the protocol buffer to the Buffer,
-// prefixed by a varint-encoded length.
-func (p *Buffer) EncodeMessage(pb Message) error {
-	siz := Size(pb)
-	p.EncodeVarint(uint64(siz))
-	return p.Marshal(pb)
-}
-
-// All protocol buffer fields are nillable, but be careful.
-func isNil(v reflect.Value) bool {
-	switch v.Kind() {
-	case reflect.Interface, reflect.Map, reflect.Ptr, reflect.Slice:
-		return v.IsNil()
-	}
-	return false
-}

+ 0 - 300
vendor/github.com/golang/protobuf/proto/equal.go

@@ -1,300 +0,0 @@
-// Go support for Protocol Buffers - Google's data interchange format
-//
-// Copyright 2011 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.
-
-// Protocol buffer comparison.
-
-package proto
-
-import (
-	"bytes"
-	"log"
-	"reflect"
-	"strings"
-)
-
-/*
-Equal returns true iff protocol buffers a and b are equal.
-The arguments must both be pointers to protocol buffer structs.
-
-Equality is defined in this way:
-  - Two messages are equal iff they are the same type,
-    corresponding fields are equal, unknown field sets
-    are equal, and extensions sets are equal.
-  - Two set scalar fields are equal iff their values are equal.
-    If the fields are of a floating-point type, remember that
-    NaN != x for all x, including NaN. If the message is defined
-    in a proto3 .proto file, fields are not "set"; specifically,
-    zero length proto3 "bytes" fields are equal (nil == {}).
-  - Two repeated fields are equal iff their lengths are the same,
-    and their corresponding elements are equal. Note a "bytes" field,
-    although represented by []byte, is not a repeated field and the
-    rule for the scalar fields described above applies.
-  - Two unset fields are equal.
-  - Two unknown field sets are equal if their current
-    encoded state is equal.
-  - Two extension sets are equal iff they have corresponding
-    elements that are pairwise equal.
-  - Two map fields are equal iff their lengths are the same,
-    and they contain the same set of elements. Zero-length map
-    fields are equal.
-  - Every other combination of things are not equal.
-
-The return value is undefined if a and b are not protocol buffers.
-*/
-func Equal(a, b Message) bool {
-	if a == nil || b == nil {
-		return a == b
-	}
-	v1, v2 := reflect.ValueOf(a), reflect.ValueOf(b)
-	if v1.Type() != v2.Type() {
-		return false
-	}
-	if v1.Kind() == reflect.Ptr {
-		if v1.IsNil() {
-			return v2.IsNil()
-		}
-		if v2.IsNil() {
-			return false
-		}
-		v1, v2 = v1.Elem(), v2.Elem()
-	}
-	if v1.Kind() != reflect.Struct {
-		return false
-	}
-	return equalStruct(v1, v2)
-}
-
-// v1 and v2 are known to have the same type.
-func equalStruct(v1, v2 reflect.Value) bool {
-	sprop := GetProperties(v1.Type())
-	for i := 0; i < v1.NumField(); i++ {
-		f := v1.Type().Field(i)
-		if strings.HasPrefix(f.Name, "XXX_") {
-			continue
-		}
-		f1, f2 := v1.Field(i), v2.Field(i)
-		if f.Type.Kind() == reflect.Ptr {
-			if n1, n2 := f1.IsNil(), f2.IsNil(); n1 && n2 {
-				// both unset
-				continue
-			} else if n1 != n2 {
-				// set/unset mismatch
-				return false
-			}
-			f1, f2 = f1.Elem(), f2.Elem()
-		}
-		if !equalAny(f1, f2, sprop.Prop[i]) {
-			return false
-		}
-	}
-
-	if em1 := v1.FieldByName("XXX_InternalExtensions"); em1.IsValid() {
-		em2 := v2.FieldByName("XXX_InternalExtensions")
-		if !equalExtensions(v1.Type(), em1.Interface().(XXX_InternalExtensions), em2.Interface().(XXX_InternalExtensions)) {
-			return false
-		}
-	}
-
-	if em1 := v1.FieldByName("XXX_extensions"); em1.IsValid() {
-		em2 := v2.FieldByName("XXX_extensions")
-		if !equalExtMap(v1.Type(), em1.Interface().(map[int32]Extension), em2.Interface().(map[int32]Extension)) {
-			return false
-		}
-	}
-
-	uf := v1.FieldByName("XXX_unrecognized")
-	if !uf.IsValid() {
-		return true
-	}
-
-	u1 := uf.Bytes()
-	u2 := v2.FieldByName("XXX_unrecognized").Bytes()
-	return bytes.Equal(u1, u2)
-}
-
-// v1 and v2 are known to have the same type.
-// prop may be nil.
-func equalAny(v1, v2 reflect.Value, prop *Properties) bool {
-	if v1.Type() == protoMessageType {
-		m1, _ := v1.Interface().(Message)
-		m2, _ := v2.Interface().(Message)
-		return Equal(m1, m2)
-	}
-	switch v1.Kind() {
-	case reflect.Bool:
-		return v1.Bool() == v2.Bool()
-	case reflect.Float32, reflect.Float64:
-		return v1.Float() == v2.Float()
-	case reflect.Int32, reflect.Int64:
-		return v1.Int() == v2.Int()
-	case reflect.Interface:
-		// Probably a oneof field; compare the inner values.
-		n1, n2 := v1.IsNil(), v2.IsNil()
-		if n1 || n2 {
-			return n1 == n2
-		}
-		e1, e2 := v1.Elem(), v2.Elem()
-		if e1.Type() != e2.Type() {
-			return false
-		}
-		return equalAny(e1, e2, nil)
-	case reflect.Map:
-		if v1.Len() != v2.Len() {
-			return false
-		}
-		for _, key := range v1.MapKeys() {
-			val2 := v2.MapIndex(key)
-			if !val2.IsValid() {
-				// This key was not found in the second map.
-				return false
-			}
-			if !equalAny(v1.MapIndex(key), val2, nil) {
-				return false
-			}
-		}
-		return true
-	case reflect.Ptr:
-		// Maps may have nil values in them, so check for nil.
-		if v1.IsNil() && v2.IsNil() {
-			return true
-		}
-		if v1.IsNil() != v2.IsNil() {
-			return false
-		}
-		return equalAny(v1.Elem(), v2.Elem(), prop)
-	case reflect.Slice:
-		if v1.Type().Elem().Kind() == reflect.Uint8 {
-			// short circuit: []byte
-
-			// Edge case: if this is in a proto3 message, a zero length
-			// bytes field is considered the zero value.
-			if prop != nil && prop.proto3 && v1.Len() == 0 && v2.Len() == 0 {
-				return true
-			}
-			if v1.IsNil() != v2.IsNil() {
-				return false
-			}
-			return bytes.Equal(v1.Interface().([]byte), v2.Interface().([]byte))
-		}
-
-		if v1.Len() != v2.Len() {
-			return false
-		}
-		for i := 0; i < v1.Len(); i++ {
-			if !equalAny(v1.Index(i), v2.Index(i), prop) {
-				return false
-			}
-		}
-		return true
-	case reflect.String:
-		return v1.Interface().(string) == v2.Interface().(string)
-	case reflect.Struct:
-		return equalStruct(v1, v2)
-	case reflect.Uint32, reflect.Uint64:
-		return v1.Uint() == v2.Uint()
-	}
-
-	// unknown type, so not a protocol buffer
-	log.Printf("proto: don't know how to compare %v", v1)
-	return false
-}
-
-// base is the struct type that the extensions are based on.
-// x1 and x2 are InternalExtensions.
-func equalExtensions(base reflect.Type, x1, x2 XXX_InternalExtensions) bool {
-	em1, _ := x1.extensionsRead()
-	em2, _ := x2.extensionsRead()
-	return equalExtMap(base, em1, em2)
-}
-
-func equalExtMap(base reflect.Type, em1, em2 map[int32]Extension) bool {
-	if len(em1) != len(em2) {
-		return false
-	}
-
-	for extNum, e1 := range em1 {
-		e2, ok := em2[extNum]
-		if !ok {
-			return false
-		}
-
-		m1, m2 := e1.value, e2.value
-
-		if m1 == nil && m2 == nil {
-			// Both have only encoded form.
-			if bytes.Equal(e1.enc, e2.enc) {
-				continue
-			}
-			// The bytes are different, but the extensions might still be
-			// equal. We need to decode them to compare.
-		}
-
-		if m1 != nil && m2 != nil {
-			// Both are unencoded.
-			if !equalAny(reflect.ValueOf(m1), reflect.ValueOf(m2), nil) {
-				return false
-			}
-			continue
-		}
-
-		// At least one is encoded. To do a semantically correct comparison
-		// we need to unmarshal them first.
-		var desc *ExtensionDesc
-		if m := extensionMaps[base]; m != nil {
-			desc = m[extNum]
-		}
-		if desc == nil {
-			// If both have only encoded form and the bytes are the same,
-			// it is handled above. We get here when the bytes are different.
-			// We don't know how to decode it, so just compare them as byte
-			// slices.
-			log.Printf("proto: don't know how to compare extension %d of %v", extNum, base)
-			return false
-		}
-		var err error
-		if m1 == nil {
-			m1, err = decodeExtension(e1.enc, desc)
-		}
-		if m2 == nil && err == nil {
-			m2, err = decodeExtension(e2.enc, desc)
-		}
-		if err != nil {
-			// The encoded form is invalid.
-			log.Printf("proto: badly encoded extension %d of %v: %v", extNum, base, err)
-			return false
-		}
-		if !equalAny(reflect.ValueOf(m1), reflect.ValueOf(m2), nil) {
-			return false
-		}
-	}
-
-	return true
-}

+ 0 - 543
vendor/github.com/golang/protobuf/proto/extensions.go

@@ -1,543 +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.
-
-package proto
-
-/*
- * Types and routines for supporting protocol buffer extensions.
- */
-
-import (
-	"errors"
-	"fmt"
-	"io"
-	"reflect"
-	"strconv"
-	"sync"
-)
-
-// ErrMissingExtension is the error returned by GetExtension if the named extension is not in the message.
-var ErrMissingExtension = errors.New("proto: missing extension")
-
-// ExtensionRange represents a range of message extensions for a protocol buffer.
-// Used in code generated by the protocol compiler.
-type ExtensionRange struct {
-	Start, End int32 // both inclusive
-}
-
-// extendableProto is an interface implemented by any protocol buffer generated by the current
-// proto compiler that may be extended.
-type extendableProto interface {
-	Message
-	ExtensionRangeArray() []ExtensionRange
-	extensionsWrite() map[int32]Extension
-	extensionsRead() (map[int32]Extension, sync.Locker)
-}
-
-// extendableProtoV1 is an interface implemented by a protocol buffer generated by the previous
-// version of the proto compiler that may be extended.
-type extendableProtoV1 interface {
-	Message
-	ExtensionRangeArray() []ExtensionRange
-	ExtensionMap() map[int32]Extension
-}
-
-// extensionAdapter is a wrapper around extendableProtoV1 that implements extendableProto.
-type extensionAdapter struct {
-	extendableProtoV1
-}
-
-func (e extensionAdapter) extensionsWrite() map[int32]Extension {
-	return e.ExtensionMap()
-}
-
-func (e extensionAdapter) extensionsRead() (map[int32]Extension, sync.Locker) {
-	return e.ExtensionMap(), notLocker{}
-}
-
-// notLocker is a sync.Locker whose Lock and Unlock methods are nops.
-type notLocker struct{}
-
-func (n notLocker) Lock()   {}
-func (n notLocker) Unlock() {}
-
-// extendable returns the extendableProto interface for the given generated proto message.
-// If the proto message has the old extension format, it returns a wrapper that implements
-// the extendableProto interface.
-func extendable(p interface{}) (extendableProto, error) {
-	switch p := p.(type) {
-	case extendableProto:
-		if isNilPtr(p) {
-			return nil, fmt.Errorf("proto: nil %T is not extendable", p)
-		}
-		return p, nil
-	case extendableProtoV1:
-		if isNilPtr(p) {
-			return nil, fmt.Errorf("proto: nil %T is not extendable", p)
-		}
-		return extensionAdapter{p}, nil
-	}
-	// Don't allocate a specific error containing %T:
-	// this is the hot path for Clone and MarshalText.
-	return nil, errNotExtendable
-}
-
-var errNotExtendable = errors.New("proto: not an extendable proto.Message")
-
-func isNilPtr(x interface{}) bool {
-	v := reflect.ValueOf(x)
-	return v.Kind() == reflect.Ptr && v.IsNil()
-}
-
-// XXX_InternalExtensions is an internal representation of proto extensions.
-//
-// Each generated message struct type embeds an anonymous XXX_InternalExtensions field,
-// thus gaining the unexported 'extensions' method, which can be called only from the proto package.
-//
-// The methods of XXX_InternalExtensions are not concurrency safe in general,
-// but calls to logically read-only methods such as has and get may be executed concurrently.
-type XXX_InternalExtensions struct {
-	// The struct must be indirect so that if a user inadvertently copies a
-	// generated message and its embedded XXX_InternalExtensions, they
-	// avoid the mayhem of a copied mutex.
-	//
-	// The mutex serializes all logically read-only operations to p.extensionMap.
-	// It is up to the client to ensure that write operations to p.extensionMap are
-	// mutually exclusive with other accesses.
-	p *struct {
-		mu           sync.Mutex
-		extensionMap map[int32]Extension
-	}
-}
-
-// extensionsWrite returns the extension map, creating it on first use.
-func (e *XXX_InternalExtensions) extensionsWrite() map[int32]Extension {
-	if e.p == nil {
-		e.p = new(struct {
-			mu           sync.Mutex
-			extensionMap map[int32]Extension
-		})
-		e.p.extensionMap = make(map[int32]Extension)
-	}
-	return e.p.extensionMap
-}
-
-// extensionsRead returns the extensions map for read-only use.  It may be nil.
-// The caller must hold the returned mutex's lock when accessing Elements within the map.
-func (e *XXX_InternalExtensions) extensionsRead() (map[int32]Extension, sync.Locker) {
-	if e.p == nil {
-		return nil, nil
-	}
-	return e.p.extensionMap, &e.p.mu
-}
-
-// ExtensionDesc represents an extension specification.
-// Used in generated code from the protocol compiler.
-type ExtensionDesc struct {
-	ExtendedType  Message     // nil pointer to the type that is being extended
-	ExtensionType interface{} // nil pointer to the extension type
-	Field         int32       // field number
-	Name          string      // fully-qualified name of extension, for text formatting
-	Tag           string      // protobuf tag style
-	Filename      string      // name of the file in which the extension is defined
-}
-
-func (ed *ExtensionDesc) repeated() bool {
-	t := reflect.TypeOf(ed.ExtensionType)
-	return t.Kind() == reflect.Slice && t.Elem().Kind() != reflect.Uint8
-}
-
-// Extension represents an extension in a message.
-type Extension struct {
-	// When an extension is stored in a message using SetExtension
-	// only desc and value are set. When the message is marshaled
-	// enc will be set to the encoded form of the message.
-	//
-	// When a message is unmarshaled and contains extensions, each
-	// extension will have only enc set. When such an extension is
-	// accessed using GetExtension (or GetExtensions) desc and value
-	// will be set.
-	desc  *ExtensionDesc
-	value interface{}
-	enc   []byte
-}
-
-// SetRawExtension is for testing only.
-func SetRawExtension(base Message, id int32, b []byte) {
-	epb, err := extendable(base)
-	if err != nil {
-		return
-	}
-	extmap := epb.extensionsWrite()
-	extmap[id] = Extension{enc: b}
-}
-
-// isExtensionField returns true iff the given field number is in an extension range.
-func isExtensionField(pb extendableProto, field int32) bool {
-	for _, er := range pb.ExtensionRangeArray() {
-		if er.Start <= field && field <= er.End {
-			return true
-		}
-	}
-	return false
-}
-
-// checkExtensionTypes checks that the given extension is valid for pb.
-func checkExtensionTypes(pb extendableProto, extension *ExtensionDesc) error {
-	var pbi interface{} = pb
-	// Check the extended type.
-	if ea, ok := pbi.(extensionAdapter); ok {
-		pbi = ea.extendableProtoV1
-	}
-	if a, b := reflect.TypeOf(pbi), reflect.TypeOf(extension.ExtendedType); a != b {
-		return fmt.Errorf("proto: bad extended type; %v does not extend %v", b, a)
-	}
-	// Check the range.
-	if !isExtensionField(pb, extension.Field) {
-		return errors.New("proto: bad extension number; not in declared ranges")
-	}
-	return nil
-}
-
-// extPropKey is sufficient to uniquely identify an extension.
-type extPropKey struct {
-	base  reflect.Type
-	field int32
-}
-
-var extProp = struct {
-	sync.RWMutex
-	m map[extPropKey]*Properties
-}{
-	m: make(map[extPropKey]*Properties),
-}
-
-func extensionProperties(ed *ExtensionDesc) *Properties {
-	key := extPropKey{base: reflect.TypeOf(ed.ExtendedType), field: ed.Field}
-
-	extProp.RLock()
-	if prop, ok := extProp.m[key]; ok {
-		extProp.RUnlock()
-		return prop
-	}
-	extProp.RUnlock()
-
-	extProp.Lock()
-	defer extProp.Unlock()
-	// Check again.
-	if prop, ok := extProp.m[key]; ok {
-		return prop
-	}
-
-	prop := new(Properties)
-	prop.Init(reflect.TypeOf(ed.ExtensionType), "unknown_name", ed.Tag, nil)
-	extProp.m[key] = prop
-	return prop
-}
-
-// HasExtension returns whether the given extension is present in pb.
-func HasExtension(pb Message, extension *ExtensionDesc) bool {
-	// TODO: Check types, field numbers, etc.?
-	epb, err := extendable(pb)
-	if err != nil {
-		return false
-	}
-	extmap, mu := epb.extensionsRead()
-	if extmap == nil {
-		return false
-	}
-	mu.Lock()
-	_, ok := extmap[extension.Field]
-	mu.Unlock()
-	return ok
-}
-
-// ClearExtension removes the given extension from pb.
-func ClearExtension(pb Message, extension *ExtensionDesc) {
-	epb, err := extendable(pb)
-	if err != nil {
-		return
-	}
-	// TODO: Check types, field numbers, etc.?
-	extmap := epb.extensionsWrite()
-	delete(extmap, extension.Field)
-}
-
-// GetExtension retrieves a proto2 extended field from pb.
-//
-// If the descriptor is type complete (i.e., ExtensionDesc.ExtensionType is non-nil),
-// then GetExtension parses the encoded field and returns a Go value of the specified type.
-// If the field is not present, then the default value is returned (if one is specified),
-// otherwise ErrMissingExtension is reported.
-//
-// If the descriptor is not type complete (i.e., ExtensionDesc.ExtensionType is nil),
-// then GetExtension returns the raw encoded bytes of the field extension.
-func GetExtension(pb Message, extension *ExtensionDesc) (interface{}, error) {
-	epb, err := extendable(pb)
-	if err != nil {
-		return nil, err
-	}
-
-	if extension.ExtendedType != nil {
-		// can only check type if this is a complete descriptor
-		if err := checkExtensionTypes(epb, extension); err != nil {
-			return nil, err
-		}
-	}
-
-	emap, mu := epb.extensionsRead()
-	if emap == nil {
-		return defaultExtensionValue(extension)
-	}
-	mu.Lock()
-	defer mu.Unlock()
-	e, ok := emap[extension.Field]
-	if !ok {
-		// defaultExtensionValue returns the default value or
-		// ErrMissingExtension if there is no default.
-		return defaultExtensionValue(extension)
-	}
-
-	if e.value != nil {
-		// Already decoded. Check the descriptor, though.
-		if e.desc != extension {
-			// This shouldn't happen. If it does, it means that
-			// GetExtension was called twice with two different
-			// descriptors with the same field number.
-			return nil, errors.New("proto: descriptor conflict")
-		}
-		return e.value, nil
-	}
-
-	if extension.ExtensionType == nil {
-		// incomplete descriptor
-		return e.enc, nil
-	}
-
-	v, err := decodeExtension(e.enc, extension)
-	if err != nil {
-		return nil, err
-	}
-
-	// Remember the decoded version and drop the encoded version.
-	// That way it is safe to mutate what we return.
-	e.value = v
-	e.desc = extension
-	e.enc = nil
-	emap[extension.Field] = e
-	return e.value, nil
-}
-
-// defaultExtensionValue returns the default value for extension.
-// If no default for an extension is defined ErrMissingExtension is returned.
-func defaultExtensionValue(extension *ExtensionDesc) (interface{}, error) {
-	if extension.ExtensionType == nil {
-		// incomplete descriptor, so no default
-		return nil, ErrMissingExtension
-	}
-
-	t := reflect.TypeOf(extension.ExtensionType)
-	props := extensionProperties(extension)
-
-	sf, _, err := fieldDefault(t, props)
-	if err != nil {
-		return nil, err
-	}
-
-	if sf == nil || sf.value == nil {
-		// There is no default value.
-		return nil, ErrMissingExtension
-	}
-
-	if t.Kind() != reflect.Ptr {
-		// We do not need to return a Ptr, we can directly return sf.value.
-		return sf.value, nil
-	}
-
-	// We need to return an interface{} that is a pointer to sf.value.
-	value := reflect.New(t).Elem()
-	value.Set(reflect.New(value.Type().Elem()))
-	if sf.kind == reflect.Int32 {
-		// We may have an int32 or an enum, but the underlying data is int32.
-		// Since we can't set an int32 into a non int32 reflect.value directly
-		// set it as a int32.
-		value.Elem().SetInt(int64(sf.value.(int32)))
-	} else {
-		value.Elem().Set(reflect.ValueOf(sf.value))
-	}
-	return value.Interface(), nil
-}
-
-// decodeExtension decodes an extension encoded in b.
-func decodeExtension(b []byte, extension *ExtensionDesc) (interface{}, error) {
-	t := reflect.TypeOf(extension.ExtensionType)
-	unmarshal := typeUnmarshaler(t, extension.Tag)
-
-	// t is a pointer to a struct, pointer to basic type or a slice.
-	// Allocate space to store the pointer/slice.
-	value := reflect.New(t).Elem()
-
-	var err error
-	for {
-		x, n := decodeVarint(b)
-		if n == 0 {
-			return nil, io.ErrUnexpectedEOF
-		}
-		b = b[n:]
-		wire := int(x) & 7
-
-		b, err = unmarshal(b, valToPointer(value.Addr()), wire)
-		if err != nil {
-			return nil, err
-		}
-
-		if len(b) == 0 {
-			break
-		}
-	}
-	return value.Interface(), nil
-}
-
-// GetExtensions returns a slice of the extensions present in pb that are also listed in es.
-// The returned slice has the same length as es; missing extensions will appear as nil elements.
-func GetExtensions(pb Message, es []*ExtensionDesc) (extensions []interface{}, err error) {
-	epb, err := extendable(pb)
-	if err != nil {
-		return nil, err
-	}
-	extensions = make([]interface{}, len(es))
-	for i, e := range es {
-		extensions[i], err = GetExtension(epb, e)
-		if err == ErrMissingExtension {
-			err = nil
-		}
-		if err != nil {
-			return
-		}
-	}
-	return
-}
-
-// ExtensionDescs returns a new slice containing pb's extension descriptors, in undefined order.
-// For non-registered extensions, ExtensionDescs returns an incomplete descriptor containing
-// just the Field field, which defines the extension's field number.
-func ExtensionDescs(pb Message) ([]*ExtensionDesc, error) {
-	epb, err := extendable(pb)
-	if err != nil {
-		return nil, err
-	}
-	registeredExtensions := RegisteredExtensions(pb)
-
-	emap, mu := epb.extensionsRead()
-	if emap == nil {
-		return nil, nil
-	}
-	mu.Lock()
-	defer mu.Unlock()
-	extensions := make([]*ExtensionDesc, 0, len(emap))
-	for extid, e := range emap {
-		desc := e.desc
-		if desc == nil {
-			desc = registeredExtensions[extid]
-			if desc == nil {
-				desc = &ExtensionDesc{Field: extid}
-			}
-		}
-
-		extensions = append(extensions, desc)
-	}
-	return extensions, nil
-}
-
-// SetExtension sets the specified extension of pb to the specified value.
-func SetExtension(pb Message, extension *ExtensionDesc, value interface{}) error {
-	epb, err := extendable(pb)
-	if err != nil {
-		return err
-	}
-	if err := checkExtensionTypes(epb, extension); err != nil {
-		return err
-	}
-	typ := reflect.TypeOf(extension.ExtensionType)
-	if typ != reflect.TypeOf(value) {
-		return errors.New("proto: bad extension value type")
-	}
-	// nil extension values need to be caught early, because the
-	// encoder can't distinguish an ErrNil due to a nil extension
-	// from an ErrNil due to a missing field. Extensions are
-	// always optional, so the encoder would just swallow the error
-	// and drop all the extensions from the encoded message.
-	if reflect.ValueOf(value).IsNil() {
-		return fmt.Errorf("proto: SetExtension called with nil value of type %T", value)
-	}
-
-	extmap := epb.extensionsWrite()
-	extmap[extension.Field] = Extension{desc: extension, value: value}
-	return nil
-}
-
-// ClearAllExtensions clears all extensions from pb.
-func ClearAllExtensions(pb Message) {
-	epb, err := extendable(pb)
-	if err != nil {
-		return
-	}
-	m := epb.extensionsWrite()
-	for k := range m {
-		delete(m, k)
-	}
-}
-
-// A global registry of extensions.
-// The generated code will register the generated descriptors by calling RegisterExtension.
-
-var extensionMaps = make(map[reflect.Type]map[int32]*ExtensionDesc)
-
-// RegisterExtension is called from the generated code.
-func RegisterExtension(desc *ExtensionDesc) {
-	st := reflect.TypeOf(desc.ExtendedType).Elem()
-	m := extensionMaps[st]
-	if m == nil {
-		m = make(map[int32]*ExtensionDesc)
-		extensionMaps[st] = m
-	}
-	if _, ok := m[desc.Field]; ok {
-		panic("proto: duplicate extension registered: " + st.String() + " " + strconv.Itoa(int(desc.Field)))
-	}
-	m[desc.Field] = desc
-}
-
-// RegisteredExtensions returns a map of the registered extensions of a
-// protocol buffer struct, indexed by the extension number.
-// The argument pb should be a nil pointer to the struct type.
-func RegisteredExtensions(pb Message) map[int32]*ExtensionDesc {
-	return extensionMaps[reflect.TypeOf(pb).Elem()]
-}

+ 0 - 979
vendor/github.com/golang/protobuf/proto/lib.go

@@ -1,979 +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.
-
-/*
-Package proto 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.
-	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 by the enclosing message's name, or by the
-	enum's type name if it is a top-level enum. Enum types have a String
-	method, and a Enum method to assist in message construction.
-  - Nested messages, 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.
-
-The simplest way to describe this is to see an example.
-Given file test.proto, containing
-
-	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;
-	  }
-	  oneof union {
-	    int32 number = 6;
-	    string name = 7;
-	  }
-	}
-
-The resulting file, test.pb.go, is:
-
-	package example
-
-	import proto "github.com/golang/protobuf/proto"
-	import math "math"
-
-	type FOO int32
-	const (
-		FOO_X FOO = 17
-	)
-	var FOO_name = map[int32]string{
-		17: "X",
-	}
-	var FOO_value = map[string]int32{
-		"X": 17,
-	}
-
-	func (x FOO) Enum() *FOO {
-		p := new(FOO)
-		*p = x
-		return p
-	}
-	func (x FOO) String() string {
-		return proto.EnumName(FOO_name, int32(x))
-	}
-	func (x *FOO) UnmarshalJSON(data []byte) error {
-		value, err := proto.UnmarshalJSONEnum(FOO_value, data)
-		if err != nil {
-			return err
-		}
-		*x = FOO(value)
-		return nil
-	}
-
-	type Test struct {
-		Label         *string             `protobuf:"bytes,1,req,name=label" json:"label,omitempty"`
-		Type          *int32              `protobuf:"varint,2,opt,name=type,def=77" json:"type,omitempty"`
-		Reps          []int64             `protobuf:"varint,3,rep,name=reps" json:"reps,omitempty"`
-		Optionalgroup *Test_OptionalGroup `protobuf:"group,4,opt,name=OptionalGroup" json:"optionalgroup,omitempty"`
-		// Types that are valid to be assigned to Union:
-		//	*Test_Number
-		//	*Test_Name
-		Union            isTest_Union `protobuf_oneof:"union"`
-		XXX_unrecognized []byte       `json:"-"`
-	}
-	func (m *Test) Reset()         { *m = Test{} }
-	func (m *Test) String() string { return proto.CompactTextString(m) }
-	func (*Test) ProtoMessage() {}
-
-	type isTest_Union interface {
-		isTest_Union()
-	}
-
-	type Test_Number struct {
-		Number int32 `protobuf:"varint,6,opt,name=number"`
-	}
-	type Test_Name struct {
-		Name string `protobuf:"bytes,7,opt,name=name"`
-	}
-
-	func (*Test_Number) isTest_Union() {}
-	func (*Test_Name) isTest_Union()   {}
-
-	func (m *Test) GetUnion() isTest_Union {
-		if m != nil {
-			return m.Union
-		}
-		return nil
-	}
-	const Default_Test_Type int32 = 77
-
-	func (m *Test) GetLabel() string {
-		if m != nil && m.Label != nil {
-			return *m.Label
-		}
-		return ""
-	}
-
-	func (m *Test) GetType() int32 {
-		if m != nil && m.Type != nil {
-			return *m.Type
-		}
-		return Default_Test_Type
-	}
-
-	func (m *Test) GetOptionalgroup() *Test_OptionalGroup {
-		if m != nil {
-			return m.Optionalgroup
-		}
-		return nil
-	}
-
-	type Test_OptionalGroup struct {
-		RequiredField *string `protobuf:"bytes,5,req" json:"RequiredField,omitempty"`
-	}
-	func (m *Test_OptionalGroup) Reset()         { *m = Test_OptionalGroup{} }
-	func (m *Test_OptionalGroup) String() string { return proto.CompactTextString(m) }
-
-	func (m *Test_OptionalGroup) GetRequiredField() string {
-		if m != nil && m.RequiredField != nil {
-			return *m.RequiredField
-		}
-		return ""
-	}
-
-	func (m *Test) GetNumber() int32 {
-		if x, ok := m.GetUnion().(*Test_Number); ok {
-			return x.Number
-		}
-		return 0
-	}
-
-	func (m *Test) GetName() string {
-		if x, ok := m.GetUnion().(*Test_Name); ok {
-			return x.Name
-		}
-		return ""
-	}
-
-	func init() {
-		proto.RegisterEnum("example.FOO", FOO_name, FOO_value)
-	}
-
-To create and play with a Test object:
-
-	package main
-
-	import (
-		"log"
-
-		"github.com/golang/protobuf/proto"
-		pb "./example.pb"
-	)
-
-	func main() {
-		test := &pb.Test{
-			Label: proto.String("hello"),
-			Type:  proto.Int32(17),
-			Reps:  []int64{1, 2, 3},
-			Optionalgroup: &pb.Test_OptionalGroup{
-				RequiredField: proto.String("good bye"),
-			},
-			Union: &pb.Test_Name{"fred"},
-		}
-		data, err := proto.Marshal(test)
-		if err != nil {
-			log.Fatal("marshaling error: ", err)
-		}
-		newTest := &pb.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())
-		}
-		// Use a type switch to determine which oneof was set.
-		switch u := test.Union.(type) {
-		case *pb.Test_Number: // u.Number contains the number.
-		case *pb.Test_Name: // u.Name contains the string.
-		}
-		// etc.
-	}
-*/
-package proto
-
-import (
-	"encoding/json"
-	"fmt"
-	"log"
-	"reflect"
-	"sort"
-	"strconv"
-	"sync"
-)
-
-// RequiredNotSetError is an error type returned by either Marshal or Unmarshal.
-// Marshal reports this when a required field is not initialized.
-// Unmarshal reports this when a required field is missing from the wire data.
-type RequiredNotSetError struct{ field string }
-
-func (e *RequiredNotSetError) Error() string {
-	if e.field == "" {
-		return fmt.Sprintf("proto: required field not set")
-	}
-	return fmt.Sprintf("proto: required field %q not set", e.field)
-}
-func (e *RequiredNotSetError) RequiredNotSet() bool {
-	return true
-}
-
-type invalidUTF8Error struct{ field string }
-
-func (e *invalidUTF8Error) Error() string {
-	if e.field == "" {
-		return "proto: invalid UTF-8 detected"
-	}
-	return fmt.Sprintf("proto: field %q contains invalid UTF-8", e.field)
-}
-func (e *invalidUTF8Error) InvalidUTF8() bool {
-	return true
-}
-
-// errInvalidUTF8 is a sentinel error to identify fields with invalid UTF-8.
-// This error should not be exposed to the external API as such errors should
-// be recreated with the field information.
-var errInvalidUTF8 = &invalidUTF8Error{}
-
-// isNonFatal reports whether the error is either a RequiredNotSet error
-// or a InvalidUTF8 error.
-func isNonFatal(err error) bool {
-	if re, ok := err.(interface{ RequiredNotSet() bool }); ok && re.RequiredNotSet() {
-		return true
-	}
-	if re, ok := err.(interface{ InvalidUTF8() bool }); ok && re.InvalidUTF8() {
-		return true
-	}
-	return false
-}
-
-type nonFatal struct{ E error }
-
-// Merge merges err into nf and reports whether it was successful.
-// Otherwise it returns false for any fatal non-nil errors.
-func (nf *nonFatal) Merge(err error) (ok bool) {
-	if err == nil {
-		return true // not an error
-	}
-	if !isNonFatal(err) {
-		return false // fatal error
-	}
-	if nf.E == nil {
-		nf.E = err // store first instance of non-fatal error
-	}
-	return true
-}
-
-// Message is implemented by generated protocol buffer messages.
-type Message interface {
-	Reset()
-	String() string
-	ProtoMessage()
-}
-
-// Stats records allocation details about the protocol buffer encoders
-// and decoders.  Useful for tuning the library itself.
-type Stats struct {
-	Emalloc uint64 // mallocs in encode
-	Dmalloc uint64 // mallocs in decode
-	Encode  uint64 // number of encodes
-	Decode  uint64 // number of decodes
-	Chit    uint64 // number of cache hits
-	Cmiss   uint64 // number of cache misses
-	Size    uint64 // number of sizes
-}
-
-// Set to true to enable stats collection.
-const collectStats = false
-
-var stats Stats
-
-// GetStats returns a copy of the global Stats structure.
-func GetStats() Stats { return stats }
-
-// A Buffer is a buffer manager for marshaling and unmarshaling
-// protocol buffers.  It may be reused between invocations to
-// reduce memory usage.  It is not necessary to use a Buffer;
-// the global functions Marshal and Unmarshal create a
-// temporary Buffer and are fine for most applications.
-type Buffer struct {
-	buf   []byte // encode/decode byte stream
-	index int    // read point
-
-	deterministic bool
-}
-
-// NewBuffer allocates a new Buffer and initializes its internal data to
-// the contents of the argument slice.
-func NewBuffer(e []byte) *Buffer {
-	return &Buffer{buf: e}
-}
-
-// Reset resets the Buffer, ready for marshaling a new protocol buffer.
-func (p *Buffer) Reset() {
-	p.buf = p.buf[0:0] // for reading/writing
-	p.index = 0        // for reading
-}
-
-// SetBuf replaces the internal buffer with the slice,
-// ready for unmarshaling the contents of the slice.
-func (p *Buffer) SetBuf(s []byte) {
-	p.buf = s
-	p.index = 0
-}
-
-// Bytes returns the contents of the Buffer.
-func (p *Buffer) Bytes() []byte { return p.buf }
-
-// SetDeterministic sets whether to use deterministic serialization.
-//
-// Deterministic serialization guarantees that for a given binary, equal
-// messages will always be serialized to the same bytes. This implies:
-//
-//   - Repeated serialization of a message will return the same bytes.
-//   - Different processes of the same binary (which may be executing on
-//     different machines) will serialize equal messages to the same bytes.
-//
-// Note that the deterministic serialization is NOT canonical across
-// languages. It is not guaranteed to remain stable over time. It is unstable
-// across different builds with schema changes due to unknown fields.
-// Users who need canonical serialization (e.g., persistent storage in a
-// canonical form, fingerprinting, etc.) should define their own
-// canonicalization specification and implement their own serializer rather
-// than relying on this API.
-//
-// If deterministic serialization is requested, map entries will be sorted
-// by keys in lexographical order. This is an implementation detail and
-// subject to change.
-func (p *Buffer) SetDeterministic(deterministic bool) {
-	p.deterministic = deterministic
-}
-
-/*
- * Helper routines for simplifying the creation of optional fields of basic type.
- */
-
-// Bool is a helper routine that allocates a new bool value
-// to store v and returns a pointer to it.
-func Bool(v bool) *bool {
-	return &v
-}
-
-// Int32 is a helper routine that allocates a new int32 value
-// to store v and returns a pointer to it.
-func Int32(v int32) *int32 {
-	return &v
-}
-
-// Int is a helper routine that allocates a new int32 value
-// to store v and returns a pointer to it, but unlike Int32
-// its argument value is an int.
-func Int(v int) *int32 {
-	p := new(int32)
-	*p = int32(v)
-	return p
-}
-
-// Int64 is a helper routine that allocates a new int64 value
-// to store v and returns a pointer to it.
-func Int64(v int64) *int64 {
-	return &v
-}
-
-// Float32 is a helper routine that allocates a new float32 value
-// to store v and returns a pointer to it.
-func Float32(v float32) *float32 {
-	return &v
-}
-
-// Float64 is a helper routine that allocates a new float64 value
-// to store v and returns a pointer to it.
-func Float64(v float64) *float64 {
-	return &v
-}
-
-// Uint32 is a helper routine that allocates a new uint32 value
-// to store v and returns a pointer to it.
-func Uint32(v uint32) *uint32 {
-	return &v
-}
-
-// Uint64 is a helper routine that allocates a new uint64 value
-// to store v and returns a pointer to it.
-func Uint64(v uint64) *uint64 {
-	return &v
-}
-
-// String is a helper routine that allocates a new string value
-// to store v and returns a pointer to it.
-func String(v string) *string {
-	return &v
-}
-
-// EnumName is a helper function to simplify printing protocol buffer enums
-// by name.  Given an enum map and a value, it returns a useful string.
-func EnumName(m map[int32]string, v int32) string {
-	s, ok := m[v]
-	if ok {
-		return s
-	}
-	return strconv.Itoa(int(v))
-}
-
-// UnmarshalJSONEnum is a helper function to simplify recovering enum int values
-// from their JSON-encoded representation. Given a map from the enum's symbolic
-// names to its int values, and a byte buffer containing the JSON-encoded
-// value, it returns an int32 that can be cast to the enum type by the caller.
-//
-// The function can deal with both JSON representations, numeric and symbolic.
-func UnmarshalJSONEnum(m map[string]int32, data []byte, enumName string) (int32, error) {
-	if data[0] == '"' {
-		// New style: enums are strings.
-		var repr string
-		if err := json.Unmarshal(data, &repr); err != nil {
-			return -1, err
-		}
-		val, ok := m[repr]
-		if !ok {
-			return 0, fmt.Errorf("unrecognized enum %s value %q", enumName, repr)
-		}
-		return val, nil
-	}
-	// Old style: enums are ints.
-	var val int32
-	if err := json.Unmarshal(data, &val); err != nil {
-		return 0, fmt.Errorf("cannot unmarshal %#q into enum %s", data, enumName)
-	}
-	return val, nil
-}
-
-// DebugPrint dumps the encoded data in b in a debugging format with a header
-// including the string s. Used in testing but made available for general debugging.
-func (p *Buffer) DebugPrint(s string, b []byte) {
-	var u uint64
-
-	obuf := p.buf
-	index := p.index
-	p.buf = b
-	p.index = 0
-	depth := 0
-
-	fmt.Printf("\n--- %s ---\n", s)
-
-out:
-	for {
-		for i := 0; i < depth; i++ {
-			fmt.Print("  ")
-		}
-
-		index := p.index
-		if index == len(p.buf) {
-			break
-		}
-
-		op, err := p.DecodeVarint()
-		if err != nil {
-			fmt.Printf("%3d: fetching op err %v\n", index, err)
-			break out
-		}
-		tag := op >> 3
-		wire := op & 7
-
-		switch wire {
-		default:
-			fmt.Printf("%3d: t=%3d unknown wire=%d\n",
-				index, tag, wire)
-			break out
-
-		case WireBytes:
-			var r []byte
-
-			r, err = p.DecodeRawBytes(false)
-			if err != nil {
-				break out
-			}
-			fmt.Printf("%3d: t=%3d bytes [%d]", index, tag, len(r))
-			if len(r) <= 6 {
-				for i := 0; i < len(r); i++ {
-					fmt.Printf(" %.2x", r[i])
-				}
-			} else {
-				for i := 0; i < 3; i++ {
-					fmt.Printf(" %.2x", r[i])
-				}
-				fmt.Printf(" ..")
-				for i := len(r) - 3; i < len(r); i++ {
-					fmt.Printf(" %.2x", r[i])
-				}
-			}
-			fmt.Printf("\n")
-
-		case WireFixed32:
-			u, err = p.DecodeFixed32()
-			if err != nil {
-				fmt.Printf("%3d: t=%3d fix32 err %v\n", index, tag, err)
-				break out
-			}
-			fmt.Printf("%3d: t=%3d fix32 %d\n", index, tag, u)
-
-		case WireFixed64:
-			u, err = p.DecodeFixed64()
-			if err != nil {
-				fmt.Printf("%3d: t=%3d fix64 err %v\n", index, tag, err)
-				break out
-			}
-			fmt.Printf("%3d: t=%3d fix64 %d\n", index, tag, u)
-
-		case WireVarint:
-			u, err = p.DecodeVarint()
-			if err != nil {
-				fmt.Printf("%3d: t=%3d varint err %v\n", index, tag, err)
-				break out
-			}
-			fmt.Printf("%3d: t=%3d varint %d\n", index, tag, u)
-
-		case WireStartGroup:
-			fmt.Printf("%3d: t=%3d start\n", index, tag)
-			depth++
-
-		case WireEndGroup:
-			depth--
-			fmt.Printf("%3d: t=%3d end\n", index, tag)
-		}
-	}
-
-	if depth != 0 {
-		fmt.Printf("%3d: start-end not balanced %d\n", p.index, depth)
-	}
-	fmt.Printf("\n")
-
-	p.buf = obuf
-	p.index = index
-}
-
-// SetDefaults sets unset protocol buffer fields to their default values.
-// It only modifies fields that are both unset and have defined defaults.
-// It recursively sets default values in any non-nil sub-messages.
-func SetDefaults(pb Message) {
-	setDefaults(reflect.ValueOf(pb), true, false)
-}
-
-// v is a pointer to a struct.
-func setDefaults(v reflect.Value, recur, zeros bool) {
-	v = v.Elem()
-
-	defaultMu.RLock()
-	dm, ok := defaults[v.Type()]
-	defaultMu.RUnlock()
-	if !ok {
-		dm = buildDefaultMessage(v.Type())
-		defaultMu.Lock()
-		defaults[v.Type()] = dm
-		defaultMu.Unlock()
-	}
-
-	for _, sf := range dm.scalars {
-		f := v.Field(sf.index)
-		if !f.IsNil() {
-			// field already set
-			continue
-		}
-		dv := sf.value
-		if dv == nil && !zeros {
-			// no explicit default, and don't want to set zeros
-			continue
-		}
-		fptr := f.Addr().Interface() // **T
-		// TODO: Consider batching the allocations we do here.
-		switch sf.kind {
-		case reflect.Bool:
-			b := new(bool)
-			if dv != nil {
-				*b = dv.(bool)
-			}
-			*(fptr.(**bool)) = b
-		case reflect.Float32:
-			f := new(float32)
-			if dv != nil {
-				*f = dv.(float32)
-			}
-			*(fptr.(**float32)) = f
-		case reflect.Float64:
-			f := new(float64)
-			if dv != nil {
-				*f = dv.(float64)
-			}
-			*(fptr.(**float64)) = f
-		case reflect.Int32:
-			// might be an enum
-			if ft := f.Type(); ft != int32PtrType {
-				// enum
-				f.Set(reflect.New(ft.Elem()))
-				if dv != nil {
-					f.Elem().SetInt(int64(dv.(int32)))
-				}
-			} else {
-				// int32 field
-				i := new(int32)
-				if dv != nil {
-					*i = dv.(int32)
-				}
-				*(fptr.(**int32)) = i
-			}
-		case reflect.Int64:
-			i := new(int64)
-			if dv != nil {
-				*i = dv.(int64)
-			}
-			*(fptr.(**int64)) = i
-		case reflect.String:
-			s := new(string)
-			if dv != nil {
-				*s = dv.(string)
-			}
-			*(fptr.(**string)) = s
-		case reflect.Uint8:
-			// exceptional case: []byte
-			var b []byte
-			if dv != nil {
-				db := dv.([]byte)
-				b = make([]byte, len(db))
-				copy(b, db)
-			} else {
-				b = []byte{}
-			}
-			*(fptr.(*[]byte)) = b
-		case reflect.Uint32:
-			u := new(uint32)
-			if dv != nil {
-				*u = dv.(uint32)
-			}
-			*(fptr.(**uint32)) = u
-		case reflect.Uint64:
-			u := new(uint64)
-			if dv != nil {
-				*u = dv.(uint64)
-			}
-			*(fptr.(**uint64)) = u
-		default:
-			log.Printf("proto: can't set default for field %v (sf.kind=%v)", f, sf.kind)
-		}
-	}
-
-	for _, ni := range dm.nested {
-		f := v.Field(ni)
-		// f is *T or []*T or map[T]*T
-		switch f.Kind() {
-		case reflect.Ptr:
-			if f.IsNil() {
-				continue
-			}
-			setDefaults(f, recur, zeros)
-
-		case reflect.Slice:
-			for i := 0; i < f.Len(); i++ {
-				e := f.Index(i)
-				if e.IsNil() {
-					continue
-				}
-				setDefaults(e, recur, zeros)
-			}
-
-		case reflect.Map:
-			for _, k := range f.MapKeys() {
-				e := f.MapIndex(k)
-				if e.IsNil() {
-					continue
-				}
-				setDefaults(e, recur, zeros)
-			}
-		}
-	}
-}
-
-var (
-	// defaults maps a protocol buffer struct type to a slice of the fields,
-	// with its scalar fields set to their proto-declared non-zero default values.
-	defaultMu sync.RWMutex
-	defaults  = make(map[reflect.Type]defaultMessage)
-
-	int32PtrType = reflect.TypeOf((*int32)(nil))
-)
-
-// defaultMessage represents information about the default values of a message.
-type defaultMessage struct {
-	scalars []scalarField
-	nested  []int // struct field index of nested messages
-}
-
-type scalarField struct {
-	index int          // struct field index
-	kind  reflect.Kind // element type (the T in *T or []T)
-	value interface{}  // the proto-declared default value, or nil
-}
-
-// t is a struct type.
-func buildDefaultMessage(t reflect.Type) (dm defaultMessage) {
-	sprop := GetProperties(t)
-	for _, prop := range sprop.Prop {
-		fi, ok := sprop.decoderTags.get(prop.Tag)
-		if !ok {
-			// XXX_unrecognized
-			continue
-		}
-		ft := t.Field(fi).Type
-
-		sf, nested, err := fieldDefault(ft, prop)
-		switch {
-		case err != nil:
-			log.Print(err)
-		case nested:
-			dm.nested = append(dm.nested, fi)
-		case sf != nil:
-			sf.index = fi
-			dm.scalars = append(dm.scalars, *sf)
-		}
-	}
-
-	return dm
-}
-
-// fieldDefault returns the scalarField for field type ft.
-// sf will be nil if the field can not have a default.
-// nestedMessage will be true if this is a nested message.
-// Note that sf.index is not set on return.
-func fieldDefault(ft reflect.Type, prop *Properties) (sf *scalarField, nestedMessage bool, err error) {
-	var canHaveDefault bool
-	switch ft.Kind() {
-	case reflect.Ptr:
-		if ft.Elem().Kind() == reflect.Struct {
-			nestedMessage = true
-		} else {
-			canHaveDefault = true // proto2 scalar field
-		}
-
-	case reflect.Slice:
-		switch ft.Elem().Kind() {
-		case reflect.Ptr:
-			nestedMessage = true // repeated message
-		case reflect.Uint8:
-			canHaveDefault = true // bytes field
-		}
-
-	case reflect.Map:
-		if ft.Elem().Kind() == reflect.Ptr {
-			nestedMessage = true // map with message values
-		}
-	}
-
-	if !canHaveDefault {
-		if nestedMessage {
-			return nil, true, nil
-		}
-		return nil, false, nil
-	}
-
-	// We now know that ft is a pointer or slice.
-	sf = &scalarField{kind: ft.Elem().Kind()}
-
-	// scalar fields without defaults
-	if !prop.HasDefault {
-		return sf, false, nil
-	}
-
-	// a scalar field: either *T or []byte
-	switch ft.Elem().Kind() {
-	case reflect.Bool:
-		x, err := strconv.ParseBool(prop.Default)
-		if err != nil {
-			return nil, false, fmt.Errorf("proto: bad default bool %q: %v", prop.Default, err)
-		}
-		sf.value = x
-	case reflect.Float32:
-		x, err := strconv.ParseFloat(prop.Default, 32)
-		if err != nil {
-			return nil, false, fmt.Errorf("proto: bad default float32 %q: %v", prop.Default, err)
-		}
-		sf.value = float32(x)
-	case reflect.Float64:
-		x, err := strconv.ParseFloat(prop.Default, 64)
-		if err != nil {
-			return nil, false, fmt.Errorf("proto: bad default float64 %q: %v", prop.Default, err)
-		}
-		sf.value = x
-	case reflect.Int32:
-		x, err := strconv.ParseInt(prop.Default, 10, 32)
-		if err != nil {
-			return nil, false, fmt.Errorf("proto: bad default int32 %q: %v", prop.Default, err)
-		}
-		sf.value = int32(x)
-	case reflect.Int64:
-		x, err := strconv.ParseInt(prop.Default, 10, 64)
-		if err != nil {
-			return nil, false, fmt.Errorf("proto: bad default int64 %q: %v", prop.Default, err)
-		}
-		sf.value = x
-	case reflect.String:
-		sf.value = prop.Default
-	case reflect.Uint8:
-		// []byte (not *uint8)
-		sf.value = []byte(prop.Default)
-	case reflect.Uint32:
-		x, err := strconv.ParseUint(prop.Default, 10, 32)
-		if err != nil {
-			return nil, false, fmt.Errorf("proto: bad default uint32 %q: %v", prop.Default, err)
-		}
-		sf.value = uint32(x)
-	case reflect.Uint64:
-		x, err := strconv.ParseUint(prop.Default, 10, 64)
-		if err != nil {
-			return nil, false, fmt.Errorf("proto: bad default uint64 %q: %v", prop.Default, err)
-		}
-		sf.value = x
-	default:
-		return nil, false, fmt.Errorf("proto: unhandled def kind %v", ft.Elem().Kind())
-	}
-
-	return sf, false, nil
-}
-
-// mapKeys returns a sort.Interface to be used for sorting the map keys.
-// Map fields may have key types of non-float scalars, strings and enums.
-func mapKeys(vs []reflect.Value) sort.Interface {
-	s := mapKeySorter{vs: vs}
-
-	// Type specialization per https://developers.google.com/protocol-buffers/docs/proto#maps.
-	if len(vs) == 0 {
-		return s
-	}
-	switch vs[0].Kind() {
-	case reflect.Int32, reflect.Int64:
-		s.less = func(a, b reflect.Value) bool { return a.Int() < b.Int() }
-	case reflect.Uint32, reflect.Uint64:
-		s.less = func(a, b reflect.Value) bool { return a.Uint() < b.Uint() }
-	case reflect.Bool:
-		s.less = func(a, b reflect.Value) bool { return !a.Bool() && b.Bool() } // false < true
-	case reflect.String:
-		s.less = func(a, b reflect.Value) bool { return a.String() < b.String() }
-	default:
-		panic(fmt.Sprintf("unsupported map key type: %v", vs[0].Kind()))
-	}
-
-	return s
-}
-
-type mapKeySorter struct {
-	vs   []reflect.Value
-	less func(a, b reflect.Value) bool
-}
-
-func (s mapKeySorter) Len() int      { return len(s.vs) }
-func (s mapKeySorter) Swap(i, j int) { s.vs[i], s.vs[j] = s.vs[j], s.vs[i] }
-func (s mapKeySorter) Less(i, j int) bool {
-	return s.less(s.vs[i], s.vs[j])
-}
-
-// isProto3Zero reports whether v is a zero proto3 value.
-func isProto3Zero(v reflect.Value) bool {
-	switch v.Kind() {
-	case reflect.Bool:
-		return !v.Bool()
-	case reflect.Int32, reflect.Int64:
-		return v.Int() == 0
-	case reflect.Uint32, reflect.Uint64:
-		return v.Uint() == 0
-	case reflect.Float32, reflect.Float64:
-		return v.Float() == 0
-	case reflect.String:
-		return v.String() == ""
-	}
-	return false
-}
-
-// ProtoPackageIsVersion2 is referenced from generated protocol buffer files
-// to assert that that code is compatible with this version of the proto package.
-const ProtoPackageIsVersion2 = true
-
-// ProtoPackageIsVersion1 is referenced from generated protocol buffer files
-// to assert that that code is compatible with this version of the proto package.
-const ProtoPackageIsVersion1 = true
-
-// InternalMessageInfo is a type used internally by generated .pb.go files.
-// This type is not intended to be used by non-generated code.
-// This type is not subject to any compatibility guarantee.
-type InternalMessageInfo struct {
-	marshal   *marshalInfo
-	unmarshal *unmarshalInfo
-	merge     *mergeInfo
-	discard   *discardInfo
-}

+ 0 - 314
vendor/github.com/golang/protobuf/proto/message_set.go

@@ -1,314 +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.
-
-package proto
-
-/*
- * Support for message sets.
- */
-
-import (
-	"bytes"
-	"encoding/json"
-	"errors"
-	"fmt"
-	"reflect"
-	"sort"
-	"sync"
-)
-
-// errNoMessageTypeID occurs when a protocol buffer does not have a message type ID.
-// A message type ID is required for storing a protocol buffer in a message set.
-var errNoMessageTypeID = errors.New("proto does not have a message type ID")
-
-// The first two types (_MessageSet_Item and messageSet)
-// model what the protocol compiler produces for the following protocol message:
-//   message MessageSet {
-//     repeated group Item = 1 {
-//       required int32 type_id = 2;
-//       required string message = 3;
-//     };
-//   }
-// That is the MessageSet wire format. We can't use a proto to generate these
-// because that would introduce a circular dependency between it and this package.
-
-type _MessageSet_Item struct {
-	TypeId  *int32 `protobuf:"varint,2,req,name=type_id"`
-	Message []byte `protobuf:"bytes,3,req,name=message"`
-}
-
-type messageSet struct {
-	Item             []*_MessageSet_Item `protobuf:"group,1,rep"`
-	XXX_unrecognized []byte
-	// TODO: caching?
-}
-
-// Make sure messageSet is a Message.
-var _ Message = (*messageSet)(nil)
-
-// messageTypeIder is an interface satisfied by a protocol buffer type
-// that may be stored in a MessageSet.
-type messageTypeIder interface {
-	MessageTypeId() int32
-}
-
-func (ms *messageSet) find(pb Message) *_MessageSet_Item {
-	mti, ok := pb.(messageTypeIder)
-	if !ok {
-		return nil
-	}
-	id := mti.MessageTypeId()
-	for _, item := range ms.Item {
-		if *item.TypeId == id {
-			return item
-		}
-	}
-	return nil
-}
-
-func (ms *messageSet) Has(pb Message) bool {
-	return ms.find(pb) != nil
-}
-
-func (ms *messageSet) Unmarshal(pb Message) error {
-	if item := ms.find(pb); item != nil {
-		return Unmarshal(item.Message, pb)
-	}
-	if _, ok := pb.(messageTypeIder); !ok {
-		return errNoMessageTypeID
-	}
-	return nil // TODO: return error instead?
-}
-
-func (ms *messageSet) Marshal(pb Message) error {
-	msg, err := Marshal(pb)
-	if err != nil {
-		return err
-	}
-	if item := ms.find(pb); item != nil {
-		// reuse existing item
-		item.Message = msg
-		return nil
-	}
-
-	mti, ok := pb.(messageTypeIder)
-	if !ok {
-		return errNoMessageTypeID
-	}
-
-	mtid := mti.MessageTypeId()
-	ms.Item = append(ms.Item, &_MessageSet_Item{
-		TypeId:  &mtid,
-		Message: msg,
-	})
-	return nil
-}
-
-func (ms *messageSet) Reset()         { *ms = messageSet{} }
-func (ms *messageSet) String() string { return CompactTextString(ms) }
-func (*messageSet) ProtoMessage()     {}
-
-// Support for the message_set_wire_format message option.
-
-func skipVarint(buf []byte) []byte {
-	i := 0
-	for ; buf[i]&0x80 != 0; i++ {
-	}
-	return buf[i+1:]
-}
-
-// MarshalMessageSet encodes the extension map represented by m in the message set wire format.
-// It is called by generated Marshal methods on protocol buffer messages with the message_set_wire_format option.
-func MarshalMessageSet(exts interface{}) ([]byte, error) {
-	return marshalMessageSet(exts, false)
-}
-
-// marshaMessageSet implements above function, with the opt to turn on / off deterministic during Marshal.
-func marshalMessageSet(exts interface{}, deterministic bool) ([]byte, error) {
-	switch exts := exts.(type) {
-	case *XXX_InternalExtensions:
-		var u marshalInfo
-		siz := u.sizeMessageSet(exts)
-		b := make([]byte, 0, siz)
-		return u.appendMessageSet(b, exts, deterministic)
-
-	case map[int32]Extension:
-		// This is an old-style extension map.
-		// Wrap it in a new-style XXX_InternalExtensions.
-		ie := XXX_InternalExtensions{
-			p: &struct {
-				mu           sync.Mutex
-				extensionMap map[int32]Extension
-			}{
-				extensionMap: exts,
-			},
-		}
-
-		var u marshalInfo
-		siz := u.sizeMessageSet(&ie)
-		b := make([]byte, 0, siz)
-		return u.appendMessageSet(b, &ie, deterministic)
-
-	default:
-		return nil, errors.New("proto: not an extension map")
-	}
-}
-
-// UnmarshalMessageSet decodes the extension map encoded in buf in the message set wire format.
-// It is called by Unmarshal methods on protocol buffer messages with the message_set_wire_format option.
-func UnmarshalMessageSet(buf []byte, exts interface{}) error {
-	var m map[int32]Extension
-	switch exts := exts.(type) {
-	case *XXX_InternalExtensions:
-		m = exts.extensionsWrite()
-	case map[int32]Extension:
-		m = exts
-	default:
-		return errors.New("proto: not an extension map")
-	}
-
-	ms := new(messageSet)
-	if err := Unmarshal(buf, ms); err != nil {
-		return err
-	}
-	for _, item := range ms.Item {
-		id := *item.TypeId
-		msg := item.Message
-
-		// Restore wire type and field number varint, plus length varint.
-		// Be careful to preserve duplicate items.
-		b := EncodeVarint(uint64(id)<<3 | WireBytes)
-		if ext, ok := m[id]; ok {
-			// Existing data; rip off the tag and length varint
-			// so we join the new data correctly.
-			// We can assume that ext.enc is set because we are unmarshaling.
-			o := ext.enc[len(b):]   // skip wire type and field number
-			_, n := DecodeVarint(o) // calculate length of length varint
-			o = o[n:]               // skip length varint
-			msg = append(o, msg...) // join old data and new data
-		}
-		b = append(b, EncodeVarint(uint64(len(msg)))...)
-		b = append(b, msg...)
-
-		m[id] = Extension{enc: b}
-	}
-	return nil
-}
-
-// MarshalMessageSetJSON encodes the extension map represented by m in JSON format.
-// It is called by generated MarshalJSON methods on protocol buffer messages with the message_set_wire_format option.
-func MarshalMessageSetJSON(exts interface{}) ([]byte, error) {
-	var m map[int32]Extension
-	switch exts := exts.(type) {
-	case *XXX_InternalExtensions:
-		var mu sync.Locker
-		m, mu = exts.extensionsRead()
-		if m != nil {
-			// Keep the extensions map locked until we're done marshaling to prevent
-			// races between marshaling and unmarshaling the lazily-{en,de}coded
-			// values.
-			mu.Lock()
-			defer mu.Unlock()
-		}
-	case map[int32]Extension:
-		m = exts
-	default:
-		return nil, errors.New("proto: not an extension map")
-	}
-	var b bytes.Buffer
-	b.WriteByte('{')
-
-	// Process the map in key order for deterministic output.
-	ids := make([]int32, 0, len(m))
-	for id := range m {
-		ids = append(ids, id)
-	}
-	sort.Sort(int32Slice(ids)) // int32Slice defined in text.go
-
-	for i, id := range ids {
-		ext := m[id]
-		msd, ok := messageSetMap[id]
-		if !ok {
-			// Unknown type; we can't render it, so skip it.
-			continue
-		}
-
-		if i > 0 && b.Len() > 1 {
-			b.WriteByte(',')
-		}
-
-		fmt.Fprintf(&b, `"[%s]":`, msd.name)
-
-		x := ext.value
-		if x == nil {
-			x = reflect.New(msd.t.Elem()).Interface()
-			if err := Unmarshal(ext.enc, x.(Message)); err != nil {
-				return nil, err
-			}
-		}
-		d, err := json.Marshal(x)
-		if err != nil {
-			return nil, err
-		}
-		b.Write(d)
-	}
-	b.WriteByte('}')
-	return b.Bytes(), nil
-}
-
-// UnmarshalMessageSetJSON decodes the extension map encoded in buf in JSON format.
-// It is called by generated UnmarshalJSON methods on protocol buffer messages with the message_set_wire_format option.
-func UnmarshalMessageSetJSON(buf []byte, exts interface{}) error {
-	// Common-case fast path.
-	if len(buf) == 0 || bytes.Equal(buf, []byte("{}")) {
-		return nil
-	}
-
-	// This is fairly tricky, and it's not clear that it is needed.
-	return errors.New("TODO: UnmarshalMessageSetJSON not yet implemented")
-}
-
-// A global registry of types that can be used in a MessageSet.
-
-var messageSetMap = make(map[int32]messageSetDesc)
-
-type messageSetDesc struct {
-	t    reflect.Type // pointer to struct
-	name string
-}
-
-// RegisterMessageSetType is called from the generated code.
-func RegisterMessageSetType(m Message, fieldNum int32, name string) {
-	messageSetMap[fieldNum] = messageSetDesc{
-		t:    reflect.TypeOf(m),
-		name: name,
-	}
-}

+ 0 - 357
vendor/github.com/golang/protobuf/proto/pointer_reflect.go

@@ -1,357 +0,0 @@
-// Go support for Protocol Buffers - Google's data interchange format
-//
-// Copyright 2012 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.
-
-// +build purego appengine js
-
-// This file contains an implementation of proto field accesses using package reflect.
-// It is slower than the code in pointer_unsafe.go but it avoids package unsafe and can
-// be used on App Engine.
-
-package proto
-
-import (
-	"reflect"
-	"sync"
-)
-
-const unsafeAllowed = false
-
-// A field identifies a field in a struct, accessible from a pointer.
-// In this implementation, a field is identified by the sequence of field indices
-// passed to reflect's FieldByIndex.
-type field []int
-
-// toField returns a field equivalent to the given reflect field.
-func toField(f *reflect.StructField) field {
-	return f.Index
-}
-
-// invalidField is an invalid field identifier.
-var invalidField = field(nil)
-
-// zeroField is a noop when calling pointer.offset.
-var zeroField = field([]int{})
-
-// IsValid reports whether the field identifier is valid.
-func (f field) IsValid() bool { return f != nil }
-
-// The pointer type is for the table-driven decoder.
-// The implementation here uses a reflect.Value of pointer type to
-// create a generic pointer. In pointer_unsafe.go we use unsafe
-// instead of reflect to implement the same (but faster) interface.
-type pointer struct {
-	v reflect.Value
-}
-
-// toPointer converts an interface of pointer type to a pointer
-// that points to the same target.
-func toPointer(i *Message) pointer {
-	return pointer{v: reflect.ValueOf(*i)}
-}
-
-// toAddrPointer converts an interface to a pointer that points to
-// the interface data.
-func toAddrPointer(i *interface{}, isptr bool) pointer {
-	v := reflect.ValueOf(*i)
-	u := reflect.New(v.Type())
-	u.Elem().Set(v)
-	return pointer{v: u}
-}
-
-// valToPointer converts v to a pointer.  v must be of pointer type.
-func valToPointer(v reflect.Value) pointer {
-	return pointer{v: v}
-}
-
-// offset converts from a pointer to a structure to a pointer to
-// one of its fields.
-func (p pointer) offset(f field) pointer {
-	return pointer{v: p.v.Elem().FieldByIndex(f).Addr()}
-}
-
-func (p pointer) isNil() bool {
-	return p.v.IsNil()
-}
-
-// grow updates the slice s in place to make it one element longer.
-// s must be addressable.
-// Returns the (addressable) new element.
-func grow(s reflect.Value) reflect.Value {
-	n, m := s.Len(), s.Cap()
-	if n < m {
-		s.SetLen(n + 1)
-	} else {
-		s.Set(reflect.Append(s, reflect.Zero(s.Type().Elem())))
-	}
-	return s.Index(n)
-}
-
-func (p pointer) toInt64() *int64 {
-	return p.v.Interface().(*int64)
-}
-func (p pointer) toInt64Ptr() **int64 {
-	return p.v.Interface().(**int64)
-}
-func (p pointer) toInt64Slice() *[]int64 {
-	return p.v.Interface().(*[]int64)
-}
-
-var int32ptr = reflect.TypeOf((*int32)(nil))
-
-func (p pointer) toInt32() *int32 {
-	return p.v.Convert(int32ptr).Interface().(*int32)
-}
-
-// The toInt32Ptr/Slice methods don't work because of enums.
-// Instead, we must use set/get methods for the int32ptr/slice case.
-/*
-	func (p pointer) toInt32Ptr() **int32 {
-		return p.v.Interface().(**int32)
-}
-	func (p pointer) toInt32Slice() *[]int32 {
-		return p.v.Interface().(*[]int32)
-}
-*/
-func (p pointer) getInt32Ptr() *int32 {
-	if p.v.Type().Elem().Elem() == reflect.TypeOf(int32(0)) {
-		// raw int32 type
-		return p.v.Elem().Interface().(*int32)
-	}
-	// an enum
-	return p.v.Elem().Convert(int32PtrType).Interface().(*int32)
-}
-func (p pointer) setInt32Ptr(v int32) {
-	// Allocate value in a *int32. Possibly convert that to a *enum.
-	// Then assign it to a **int32 or **enum.
-	// Note: we can convert *int32 to *enum, but we can't convert
-	// **int32 to **enum!
-	p.v.Elem().Set(reflect.ValueOf(&v).Convert(p.v.Type().Elem()))
-}
-
-// getInt32Slice copies []int32 from p as a new slice.
-// This behavior differs from the implementation in pointer_unsafe.go.
-func (p pointer) getInt32Slice() []int32 {
-	if p.v.Type().Elem().Elem() == reflect.TypeOf(int32(0)) {
-		// raw int32 type
-		return p.v.Elem().Interface().([]int32)
-	}
-	// an enum
-	// Allocate a []int32, then assign []enum's values into it.
-	// Note: we can't convert []enum to []int32.
-	slice := p.v.Elem()
-	s := make([]int32, slice.Len())
-	for i := 0; i < slice.Len(); i++ {
-		s[i] = int32(slice.Index(i).Int())
-	}
-	return s
-}
-
-// setInt32Slice copies []int32 into p as a new slice.
-// This behavior differs from the implementation in pointer_unsafe.go.
-func (p pointer) setInt32Slice(v []int32) {
-	if p.v.Type().Elem().Elem() == reflect.TypeOf(int32(0)) {
-		// raw int32 type
-		p.v.Elem().Set(reflect.ValueOf(v))
-		return
-	}
-	// an enum
-	// Allocate a []enum, then assign []int32's values into it.
-	// Note: we can't convert []enum to []int32.
-	slice := reflect.MakeSlice(p.v.Type().Elem(), len(v), cap(v))
-	for i, x := range v {
-		slice.Index(i).SetInt(int64(x))
-	}
-	p.v.Elem().Set(slice)
-}
-func (p pointer) appendInt32Slice(v int32) {
-	grow(p.v.Elem()).SetInt(int64(v))
-}
-
-func (p pointer) toUint64() *uint64 {
-	return p.v.Interface().(*uint64)
-}
-func (p pointer) toUint64Ptr() **uint64 {
-	return p.v.Interface().(**uint64)
-}
-func (p pointer) toUint64Slice() *[]uint64 {
-	return p.v.Interface().(*[]uint64)
-}
-func (p pointer) toUint32() *uint32 {
-	return p.v.Interface().(*uint32)
-}
-func (p pointer) toUint32Ptr() **uint32 {
-	return p.v.Interface().(**uint32)
-}
-func (p pointer) toUint32Slice() *[]uint32 {
-	return p.v.Interface().(*[]uint32)
-}
-func (p pointer) toBool() *bool {
-	return p.v.Interface().(*bool)
-}
-func (p pointer) toBoolPtr() **bool {
-	return p.v.Interface().(**bool)
-}
-func (p pointer) toBoolSlice() *[]bool {
-	return p.v.Interface().(*[]bool)
-}
-func (p pointer) toFloat64() *float64 {
-	return p.v.Interface().(*float64)
-}
-func (p pointer) toFloat64Ptr() **float64 {
-	return p.v.Interface().(**float64)
-}
-func (p pointer) toFloat64Slice() *[]float64 {
-	return p.v.Interface().(*[]float64)
-}
-func (p pointer) toFloat32() *float32 {
-	return p.v.Interface().(*float32)
-}
-func (p pointer) toFloat32Ptr() **float32 {
-	return p.v.Interface().(**float32)
-}
-func (p pointer) toFloat32Slice() *[]float32 {
-	return p.v.Interface().(*[]float32)
-}
-func (p pointer) toString() *string {
-	return p.v.Interface().(*string)
-}
-func (p pointer) toStringPtr() **string {
-	return p.v.Interface().(**string)
-}
-func (p pointer) toStringSlice() *[]string {
-	return p.v.Interface().(*[]string)
-}
-func (p pointer) toBytes() *[]byte {
-	return p.v.Interface().(*[]byte)
-}
-func (p pointer) toBytesSlice() *[][]byte {
-	return p.v.Interface().(*[][]byte)
-}
-func (p pointer) toExtensions() *XXX_InternalExtensions {
-	return p.v.Interface().(*XXX_InternalExtensions)
-}
-func (p pointer) toOldExtensions() *map[int32]Extension {
-	return p.v.Interface().(*map[int32]Extension)
-}
-func (p pointer) getPointer() pointer {
-	return pointer{v: p.v.Elem()}
-}
-func (p pointer) setPointer(q pointer) {
-	p.v.Elem().Set(q.v)
-}
-func (p pointer) appendPointer(q pointer) {
-	grow(p.v.Elem()).Set(q.v)
-}
-
-// getPointerSlice copies []*T from p as a new []pointer.
-// This behavior differs from the implementation in pointer_unsafe.go.
-func (p pointer) getPointerSlice() []pointer {
-	if p.v.IsNil() {
-		return nil
-	}
-	n := p.v.Elem().Len()
-	s := make([]pointer, n)
-	for i := 0; i < n; i++ {
-		s[i] = pointer{v: p.v.Elem().Index(i)}
-	}
-	return s
-}
-
-// setPointerSlice copies []pointer into p as a new []*T.
-// This behavior differs from the implementation in pointer_unsafe.go.
-func (p pointer) setPointerSlice(v []pointer) {
-	if v == nil {
-		p.v.Elem().Set(reflect.New(p.v.Elem().Type()).Elem())
-		return
-	}
-	s := reflect.MakeSlice(p.v.Elem().Type(), 0, len(v))
-	for _, p := range v {
-		s = reflect.Append(s, p.v)
-	}
-	p.v.Elem().Set(s)
-}
-
-// getInterfacePointer returns a pointer that points to the
-// interface data of the interface pointed by p.
-func (p pointer) getInterfacePointer() pointer {
-	if p.v.Elem().IsNil() {
-		return pointer{v: p.v.Elem()}
-	}
-	return pointer{v: p.v.Elem().Elem().Elem().Field(0).Addr()} // *interface -> interface -> *struct -> struct
-}
-
-func (p pointer) asPointerTo(t reflect.Type) reflect.Value {
-	// TODO: check that p.v.Type().Elem() == t?
-	return p.v
-}
-
-func atomicLoadUnmarshalInfo(p **unmarshalInfo) *unmarshalInfo {
-	atomicLock.Lock()
-	defer atomicLock.Unlock()
-	return *p
-}
-func atomicStoreUnmarshalInfo(p **unmarshalInfo, v *unmarshalInfo) {
-	atomicLock.Lock()
-	defer atomicLock.Unlock()
-	*p = v
-}
-func atomicLoadMarshalInfo(p **marshalInfo) *marshalInfo {
-	atomicLock.Lock()
-	defer atomicLock.Unlock()
-	return *p
-}
-func atomicStoreMarshalInfo(p **marshalInfo, v *marshalInfo) {
-	atomicLock.Lock()
-	defer atomicLock.Unlock()
-	*p = v
-}
-func atomicLoadMergeInfo(p **mergeInfo) *mergeInfo {
-	atomicLock.Lock()
-	defer atomicLock.Unlock()
-	return *p
-}
-func atomicStoreMergeInfo(p **mergeInfo, v *mergeInfo) {
-	atomicLock.Lock()
-	defer atomicLock.Unlock()
-	*p = v
-}
-func atomicLoadDiscardInfo(p **discardInfo) *discardInfo {
-	atomicLock.Lock()
-	defer atomicLock.Unlock()
-	return *p
-}
-func atomicStoreDiscardInfo(p **discardInfo, v *discardInfo) {
-	atomicLock.Lock()
-	defer atomicLock.Unlock()
-	*p = v
-}
-
-var atomicLock sync.Mutex

+ 0 - 308
vendor/github.com/golang/protobuf/proto/pointer_unsafe.go

@@ -1,308 +0,0 @@
-// Go support for Protocol Buffers - Google's data interchange format
-//
-// Copyright 2012 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.
-
-// +build !purego,!appengine,!js
-
-// This file contains the implementation of the proto field accesses using package unsafe.
-
-package proto
-
-import (
-	"reflect"
-	"sync/atomic"
-	"unsafe"
-)
-
-const unsafeAllowed = true
-
-// A field identifies a field in a struct, accessible from a pointer.
-// In this implementation, a field is identified by its byte offset from the start of the struct.
-type field uintptr
-
-// toField returns a field equivalent to the given reflect field.
-func toField(f *reflect.StructField) field {
-	return field(f.Offset)
-}
-
-// invalidField is an invalid field identifier.
-const invalidField = ^field(0)
-
-// zeroField is a noop when calling pointer.offset.
-const zeroField = field(0)
-
-// IsValid reports whether the field identifier is valid.
-func (f field) IsValid() bool {
-	return f != invalidField
-}
-
-// The pointer type below is for the new table-driven encoder/decoder.
-// The implementation here uses unsafe.Pointer to create a generic pointer.
-// In pointer_reflect.go we use reflect instead of unsafe to implement
-// the same (but slower) interface.
-type pointer struct {
-	p unsafe.Pointer
-}
-
-// size of pointer
-var ptrSize = unsafe.Sizeof(uintptr(0))
-
-// toPointer converts an interface of pointer type to a pointer
-// that points to the same target.
-func toPointer(i *Message) pointer {
-	// Super-tricky - read pointer out of data word of interface value.
-	// Saves ~25ns over the equivalent:
-	// return valToPointer(reflect.ValueOf(*i))
-	return pointer{p: (*[2]unsafe.Pointer)(unsafe.Pointer(i))[1]}
-}
-
-// toAddrPointer converts an interface to a pointer that points to
-// the interface data.
-func toAddrPointer(i *interface{}, isptr bool) pointer {
-	// Super-tricky - read or get the address of data word of interface value.
-	if isptr {
-		// The interface is of pointer type, thus it is a direct interface.
-		// The data word is the pointer data itself. We take its address.
-		return pointer{p: unsafe.Pointer(uintptr(unsafe.Pointer(i)) + ptrSize)}
-	}
-	// The interface is not of pointer type. The data word is the pointer
-	// to the data.
-	return pointer{p: (*[2]unsafe.Pointer)(unsafe.Pointer(i))[1]}
-}
-
-// valToPointer converts v to a pointer. v must be of pointer type.
-func valToPointer(v reflect.Value) pointer {
-	return pointer{p: unsafe.Pointer(v.Pointer())}
-}
-
-// offset converts from a pointer to a structure to a pointer to
-// one of its fields.
-func (p pointer) offset(f field) pointer {
-	// For safety, we should panic if !f.IsValid, however calling panic causes
-	// this to no longer be inlineable, which is a serious performance cost.
-	/*
-		if !f.IsValid() {
-			panic("invalid field")
-		}
-	*/
-	return pointer{p: unsafe.Pointer(uintptr(p.p) + uintptr(f))}
-}
-
-func (p pointer) isNil() bool {
-	return p.p == nil
-}
-
-func (p pointer) toInt64() *int64 {
-	return (*int64)(p.p)
-}
-func (p pointer) toInt64Ptr() **int64 {
-	return (**int64)(p.p)
-}
-func (p pointer) toInt64Slice() *[]int64 {
-	return (*[]int64)(p.p)
-}
-func (p pointer) toInt32() *int32 {
-	return (*int32)(p.p)
-}
-
-// See pointer_reflect.go for why toInt32Ptr/Slice doesn't exist.
-/*
-	func (p pointer) toInt32Ptr() **int32 {
-		return (**int32)(p.p)
-	}
-	func (p pointer) toInt32Slice() *[]int32 {
-		return (*[]int32)(p.p)
-	}
-*/
-func (p pointer) getInt32Ptr() *int32 {
-	return *(**int32)(p.p)
-}
-func (p pointer) setInt32Ptr(v int32) {
-	*(**int32)(p.p) = &v
-}
-
-// getInt32Slice loads a []int32 from p.
-// The value returned is aliased with the original slice.
-// This behavior differs from the implementation in pointer_reflect.go.
-func (p pointer) getInt32Slice() []int32 {
-	return *(*[]int32)(p.p)
-}
-
-// setInt32Slice stores a []int32 to p.
-// The value set is aliased with the input slice.
-// This behavior differs from the implementation in pointer_reflect.go.
-func (p pointer) setInt32Slice(v []int32) {
-	*(*[]int32)(p.p) = v
-}
-
-// TODO: Can we get rid of appendInt32Slice and use setInt32Slice instead?
-func (p pointer) appendInt32Slice(v int32) {
-	s := (*[]int32)(p.p)
-	*s = append(*s, v)
-}
-
-func (p pointer) toUint64() *uint64 {
-	return (*uint64)(p.p)
-}
-func (p pointer) toUint64Ptr() **uint64 {
-	return (**uint64)(p.p)
-}
-func (p pointer) toUint64Slice() *[]uint64 {
-	return (*[]uint64)(p.p)
-}
-func (p pointer) toUint32() *uint32 {
-	return (*uint32)(p.p)
-}
-func (p pointer) toUint32Ptr() **uint32 {
-	return (**uint32)(p.p)
-}
-func (p pointer) toUint32Slice() *[]uint32 {
-	return (*[]uint32)(p.p)
-}
-func (p pointer) toBool() *bool {
-	return (*bool)(p.p)
-}
-func (p pointer) toBoolPtr() **bool {
-	return (**bool)(p.p)
-}
-func (p pointer) toBoolSlice() *[]bool {
-	return (*[]bool)(p.p)
-}
-func (p pointer) toFloat64() *float64 {
-	return (*float64)(p.p)
-}
-func (p pointer) toFloat64Ptr() **float64 {
-	return (**float64)(p.p)
-}
-func (p pointer) toFloat64Slice() *[]float64 {
-	return (*[]float64)(p.p)
-}
-func (p pointer) toFloat32() *float32 {
-	return (*float32)(p.p)
-}
-func (p pointer) toFloat32Ptr() **float32 {
-	return (**float32)(p.p)
-}
-func (p pointer) toFloat32Slice() *[]float32 {
-	return (*[]float32)(p.p)
-}
-func (p pointer) toString() *string {
-	return (*string)(p.p)
-}
-func (p pointer) toStringPtr() **string {
-	return (**string)(p.p)
-}
-func (p pointer) toStringSlice() *[]string {
-	return (*[]string)(p.p)
-}
-func (p pointer) toBytes() *[]byte {
-	return (*[]byte)(p.p)
-}
-func (p pointer) toBytesSlice() *[][]byte {
-	return (*[][]byte)(p.p)
-}
-func (p pointer) toExtensions() *XXX_InternalExtensions {
-	return (*XXX_InternalExtensions)(p.p)
-}
-func (p pointer) toOldExtensions() *map[int32]Extension {
-	return (*map[int32]Extension)(p.p)
-}
-
-// getPointerSlice loads []*T from p as a []pointer.
-// The value returned is aliased with the original slice.
-// This behavior differs from the implementation in pointer_reflect.go.
-func (p pointer) getPointerSlice() []pointer {
-	// Super-tricky - p should point to a []*T where T is a
-	// message type. We load it as []pointer.
-	return *(*[]pointer)(p.p)
-}
-
-// setPointerSlice stores []pointer into p as a []*T.
-// The value set is aliased with the input slice.
-// This behavior differs from the implementation in pointer_reflect.go.
-func (p pointer) setPointerSlice(v []pointer) {
-	// Super-tricky - p should point to a []*T where T is a
-	// message type. We store it as []pointer.
-	*(*[]pointer)(p.p) = v
-}
-
-// getPointer loads the pointer at p and returns it.
-func (p pointer) getPointer() pointer {
-	return pointer{p: *(*unsafe.Pointer)(p.p)}
-}
-
-// setPointer stores the pointer q at p.
-func (p pointer) setPointer(q pointer) {
-	*(*unsafe.Pointer)(p.p) = q.p
-}
-
-// append q to the slice pointed to by p.
-func (p pointer) appendPointer(q pointer) {
-	s := (*[]unsafe.Pointer)(p.p)
-	*s = append(*s, q.p)
-}
-
-// getInterfacePointer returns a pointer that points to the
-// interface data of the interface pointed by p.
-func (p pointer) getInterfacePointer() pointer {
-	// Super-tricky - read pointer out of data word of interface value.
-	return pointer{p: (*(*[2]unsafe.Pointer)(p.p))[1]}
-}
-
-// asPointerTo returns a reflect.Value that is a pointer to an
-// object of type t stored at p.
-func (p pointer) asPointerTo(t reflect.Type) reflect.Value {
-	return reflect.NewAt(t, p.p)
-}
-
-func atomicLoadUnmarshalInfo(p **unmarshalInfo) *unmarshalInfo {
-	return (*unmarshalInfo)(atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(p))))
-}
-func atomicStoreUnmarshalInfo(p **unmarshalInfo, v *unmarshalInfo) {
-	atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(p)), unsafe.Pointer(v))
-}
-func atomicLoadMarshalInfo(p **marshalInfo) *marshalInfo {
-	return (*marshalInfo)(atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(p))))
-}
-func atomicStoreMarshalInfo(p **marshalInfo, v *marshalInfo) {
-	atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(p)), unsafe.Pointer(v))
-}
-func atomicLoadMergeInfo(p **mergeInfo) *mergeInfo {
-	return (*mergeInfo)(atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(p))))
-}
-func atomicStoreMergeInfo(p **mergeInfo, v *mergeInfo) {
-	atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(p)), unsafe.Pointer(v))
-}
-func atomicLoadDiscardInfo(p **discardInfo) *discardInfo {
-	return (*discardInfo)(atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(p))))
-}
-func atomicStoreDiscardInfo(p **discardInfo, v *discardInfo) {
-	atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(p)), unsafe.Pointer(v))
-}

+ 0 - 544
vendor/github.com/golang/protobuf/proto/properties.go

@@ -1,544 +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.
-
-package proto
-
-/*
- * Routines for encoding data into the wire format for protocol buffers.
- */
-
-import (
-	"fmt"
-	"log"
-	"os"
-	"reflect"
-	"sort"
-	"strconv"
-	"strings"
-	"sync"
-)
-
-const debug bool = false
-
-// Constants that identify the encoding of a value on the wire.
-const (
-	WireVarint     = 0
-	WireFixed64    = 1
-	WireBytes      = 2
-	WireStartGroup = 3
-	WireEndGroup   = 4
-	WireFixed32    = 5
-)
-
-// tagMap is an optimization over map[int]int for typical protocol buffer
-// use-cases. Encoded protocol buffers are often in tag order with small tag
-// numbers.
-type tagMap struct {
-	fastTags []int
-	slowTags map[int]int
-}
-
-// tagMapFastLimit is the upper bound on the tag number that will be stored in
-// the tagMap slice rather than its map.
-const tagMapFastLimit = 1024
-
-func (p *tagMap) get(t int) (int, bool) {
-	if t > 0 && t < tagMapFastLimit {
-		if t >= len(p.fastTags) {
-			return 0, false
-		}
-		fi := p.fastTags[t]
-		return fi, fi >= 0
-	}
-	fi, ok := p.slowTags[t]
-	return fi, ok
-}
-
-func (p *tagMap) put(t int, fi int) {
-	if t > 0 && t < tagMapFastLimit {
-		for len(p.fastTags) < t+1 {
-			p.fastTags = append(p.fastTags, -1)
-		}
-		p.fastTags[t] = fi
-		return
-	}
-	if p.slowTags == nil {
-		p.slowTags = make(map[int]int)
-	}
-	p.slowTags[t] = fi
-}
-
-// StructProperties represents properties for all the fields of a struct.
-// decoderTags and decoderOrigNames should only be used by the decoder.
-type StructProperties struct {
-	Prop             []*Properties  // properties for each field
-	reqCount         int            // required count
-	decoderTags      tagMap         // map from proto tag to struct field number
-	decoderOrigNames map[string]int // map from original name to struct field number
-	order            []int          // list of struct field numbers in tag order
-
-	// OneofTypes contains information about the oneof fields in this message.
-	// It is keyed by the original name of a field.
-	OneofTypes map[string]*OneofProperties
-}
-
-// OneofProperties represents information about a specific field in a oneof.
-type OneofProperties struct {
-	Type  reflect.Type // pointer to generated struct type for this oneof field
-	Field int          // struct field number of the containing oneof in the message
-	Prop  *Properties
-}
-
-// Implement the sorting interface so we can sort the fields in tag order, as recommended by the spec.
-// See encode.go, (*Buffer).enc_struct.
-
-func (sp *StructProperties) Len() int { return len(sp.order) }
-func (sp *StructProperties) Less(i, j int) bool {
-	return sp.Prop[sp.order[i]].Tag < sp.Prop[sp.order[j]].Tag
-}
-func (sp *StructProperties) Swap(i, j int) { sp.order[i], sp.order[j] = sp.order[j], sp.order[i] }
-
-// Properties represents the protocol-specific behavior of a single struct field.
-type Properties struct {
-	Name     string // name of the field, for error messages
-	OrigName string // original name before protocol compiler (always set)
-	JSONName string // name to use for JSON; determined by protoc
-	Wire     string
-	WireType int
-	Tag      int
-	Required bool
-	Optional bool
-	Repeated bool
-	Packed   bool   // relevant for repeated primitives only
-	Enum     string // set for enum types only
-	proto3   bool   // whether this is known to be a proto3 field
-	oneof    bool   // whether this is a oneof field
-
-	Default    string // default value
-	HasDefault bool   // whether an explicit default was provided
-
-	stype reflect.Type      // set for struct types only
-	sprop *StructProperties // set for struct types only
-
-	mtype      reflect.Type // set for map types only
-	MapKeyProp *Properties  // set for map types only
-	MapValProp *Properties  // set for map types only
-}
-
-// String formats the properties in the protobuf struct field tag style.
-func (p *Properties) String() string {
-	s := p.Wire
-	s += ","
-	s += strconv.Itoa(p.Tag)
-	if p.Required {
-		s += ",req"
-	}
-	if p.Optional {
-		s += ",opt"
-	}
-	if p.Repeated {
-		s += ",rep"
-	}
-	if p.Packed {
-		s += ",packed"
-	}
-	s += ",name=" + p.OrigName
-	if p.JSONName != p.OrigName {
-		s += ",json=" + p.JSONName
-	}
-	if p.proto3 {
-		s += ",proto3"
-	}
-	if p.oneof {
-		s += ",oneof"
-	}
-	if len(p.Enum) > 0 {
-		s += ",enum=" + p.Enum
-	}
-	if p.HasDefault {
-		s += ",def=" + p.Default
-	}
-	return s
-}
-
-// Parse populates p by parsing a string in the protobuf struct field tag style.
-func (p *Properties) Parse(s string) {
-	// "bytes,49,opt,name=foo,def=hello!"
-	fields := strings.Split(s, ",") // breaks def=, but handled below.
-	if len(fields) < 2 {
-		fmt.Fprintf(os.Stderr, "proto: tag has too few fields: %q\n", s)
-		return
-	}
-
-	p.Wire = fields[0]
-	switch p.Wire {
-	case "varint":
-		p.WireType = WireVarint
-	case "fixed32":
-		p.WireType = WireFixed32
-	case "fixed64":
-		p.WireType = WireFixed64
-	case "zigzag32":
-		p.WireType = WireVarint
-	case "zigzag64":
-		p.WireType = WireVarint
-	case "bytes", "group":
-		p.WireType = WireBytes
-		// no numeric converter for non-numeric types
-	default:
-		fmt.Fprintf(os.Stderr, "proto: tag has unknown wire type: %q\n", s)
-		return
-	}
-
-	var err error
-	p.Tag, err = strconv.Atoi(fields[1])
-	if err != nil {
-		return
-	}
-
-outer:
-	for i := 2; i < len(fields); i++ {
-		f := fields[i]
-		switch {
-		case f == "req":
-			p.Required = true
-		case f == "opt":
-			p.Optional = true
-		case f == "rep":
-			p.Repeated = true
-		case f == "packed":
-			p.Packed = true
-		case strings.HasPrefix(f, "name="):
-			p.OrigName = f[5:]
-		case strings.HasPrefix(f, "json="):
-			p.JSONName = f[5:]
-		case strings.HasPrefix(f, "enum="):
-			p.Enum = f[5:]
-		case f == "proto3":
-			p.proto3 = true
-		case f == "oneof":
-			p.oneof = true
-		case strings.HasPrefix(f, "def="):
-			p.HasDefault = true
-			p.Default = f[4:] // rest of string
-			if i+1 < len(fields) {
-				// Commas aren't escaped, and def is always last.
-				p.Default += "," + strings.Join(fields[i+1:], ",")
-				break outer
-			}
-		}
-	}
-}
-
-var protoMessageType = reflect.TypeOf((*Message)(nil)).Elem()
-
-// setFieldProps initializes the field properties for submessages and maps.
-func (p *Properties) setFieldProps(typ reflect.Type, f *reflect.StructField, lockGetProp bool) {
-	switch t1 := typ; t1.Kind() {
-	case reflect.Ptr:
-		if t1.Elem().Kind() == reflect.Struct {
-			p.stype = t1.Elem()
-		}
-
-	case reflect.Slice:
-		if t2 := t1.Elem(); t2.Kind() == reflect.Ptr && t2.Elem().Kind() == reflect.Struct {
-			p.stype = t2.Elem()
-		}
-
-	case reflect.Map:
-		p.mtype = t1
-		p.MapKeyProp = &Properties{}
-		p.MapKeyProp.init(reflect.PtrTo(p.mtype.Key()), "Key", f.Tag.Get("protobuf_key"), nil, lockGetProp)
-		p.MapValProp = &Properties{}
-		vtype := p.mtype.Elem()
-		if vtype.Kind() != reflect.Ptr && vtype.Kind() != reflect.Slice {
-			// The value type is not a message (*T) or bytes ([]byte),
-			// so we need encoders for the pointer to this type.
-			vtype = reflect.PtrTo(vtype)
-		}
-		p.MapValProp.init(vtype, "Value", f.Tag.Get("protobuf_val"), nil, lockGetProp)
-	}
-
-	if p.stype != nil {
-		if lockGetProp {
-			p.sprop = GetProperties(p.stype)
-		} else {
-			p.sprop = getPropertiesLocked(p.stype)
-		}
-	}
-}
-
-var (
-	marshalerType = reflect.TypeOf((*Marshaler)(nil)).Elem()
-)
-
-// Init populates the properties from a protocol buffer struct tag.
-func (p *Properties) Init(typ reflect.Type, name, tag string, f *reflect.StructField) {
-	p.init(typ, name, tag, f, true)
-}
-
-func (p *Properties) init(typ reflect.Type, name, tag string, f *reflect.StructField, lockGetProp bool) {
-	// "bytes,49,opt,def=hello!"
-	p.Name = name
-	p.OrigName = name
-	if tag == "" {
-		return
-	}
-	p.Parse(tag)
-	p.setFieldProps(typ, f, lockGetProp)
-}
-
-var (
-	propertiesMu  sync.RWMutex
-	propertiesMap = make(map[reflect.Type]*StructProperties)
-)
-
-// GetProperties returns the list of properties for the type represented by t.
-// t must represent a generated struct type of a protocol message.
-func GetProperties(t reflect.Type) *StructProperties {
-	if t.Kind() != reflect.Struct {
-		panic("proto: type must have kind struct")
-	}
-
-	// Most calls to GetProperties in a long-running program will be
-	// retrieving details for types we have seen before.
-	propertiesMu.RLock()
-	sprop, ok := propertiesMap[t]
-	propertiesMu.RUnlock()
-	if ok {
-		if collectStats {
-			stats.Chit++
-		}
-		return sprop
-	}
-
-	propertiesMu.Lock()
-	sprop = getPropertiesLocked(t)
-	propertiesMu.Unlock()
-	return sprop
-}
-
-// getPropertiesLocked requires that propertiesMu is held.
-func getPropertiesLocked(t reflect.Type) *StructProperties {
-	if prop, ok := propertiesMap[t]; ok {
-		if collectStats {
-			stats.Chit++
-		}
-		return prop
-	}
-	if collectStats {
-		stats.Cmiss++
-	}
-
-	prop := new(StructProperties)
-	// in case of recursive protos, fill this in now.
-	propertiesMap[t] = prop
-
-	// build properties
-	prop.Prop = make([]*Properties, t.NumField())
-	prop.order = make([]int, t.NumField())
-
-	for i := 0; i < t.NumField(); i++ {
-		f := t.Field(i)
-		p := new(Properties)
-		name := f.Name
-		p.init(f.Type, name, f.Tag.Get("protobuf"), &f, false)
-
-		oneof := f.Tag.Get("protobuf_oneof") // special case
-		if oneof != "" {
-			// Oneof fields don't use the traditional protobuf tag.
-			p.OrigName = oneof
-		}
-		prop.Prop[i] = p
-		prop.order[i] = i
-		if debug {
-			print(i, " ", f.Name, " ", t.String(), " ")
-			if p.Tag > 0 {
-				print(p.String())
-			}
-			print("\n")
-		}
-	}
-
-	// Re-order prop.order.
-	sort.Sort(prop)
-
-	type oneofMessage interface {
-		XXX_OneofFuncs() (func(Message, *Buffer) error, func(Message, int, int, *Buffer) (bool, error), func(Message) int, []interface{})
-	}
-	if om, ok := reflect.Zero(reflect.PtrTo(t)).Interface().(oneofMessage); ok {
-		var oots []interface{}
-		_, _, _, oots = om.XXX_OneofFuncs()
-
-		// Interpret oneof metadata.
-		prop.OneofTypes = make(map[string]*OneofProperties)
-		for _, oot := range oots {
-			oop := &OneofProperties{
-				Type: reflect.ValueOf(oot).Type(), // *T
-				Prop: new(Properties),
-			}
-			sft := oop.Type.Elem().Field(0)
-			oop.Prop.Name = sft.Name
-			oop.Prop.Parse(sft.Tag.Get("protobuf"))
-			// There will be exactly one interface field that
-			// this new value is assignable to.
-			for i := 0; i < t.NumField(); i++ {
-				f := t.Field(i)
-				if f.Type.Kind() != reflect.Interface {
-					continue
-				}
-				if !oop.Type.AssignableTo(f.Type) {
-					continue
-				}
-				oop.Field = i
-				break
-			}
-			prop.OneofTypes[oop.Prop.OrigName] = oop
-		}
-	}
-
-	// build required counts
-	// build tags
-	reqCount := 0
-	prop.decoderOrigNames = make(map[string]int)
-	for i, p := range prop.Prop {
-		if strings.HasPrefix(p.Name, "XXX_") {
-			// Internal fields should not appear in tags/origNames maps.
-			// They are handled specially when encoding and decoding.
-			continue
-		}
-		if p.Required {
-			reqCount++
-		}
-		prop.decoderTags.put(p.Tag, i)
-		prop.decoderOrigNames[p.OrigName] = i
-	}
-	prop.reqCount = reqCount
-
-	return prop
-}
-
-// A global registry of enum types.
-// The generated code will register the generated maps by calling RegisterEnum.
-
-var enumValueMaps = make(map[string]map[string]int32)
-
-// RegisterEnum is called from the generated code to install the enum descriptor
-// maps into the global table to aid parsing text format protocol buffers.
-func RegisterEnum(typeName string, unusedNameMap map[int32]string, valueMap map[string]int32) {
-	if _, ok := enumValueMaps[typeName]; ok {
-		panic("proto: duplicate enum registered: " + typeName)
-	}
-	enumValueMaps[typeName] = valueMap
-}
-
-// EnumValueMap returns the mapping from names to integers of the
-// enum type enumType, or a nil if not found.
-func EnumValueMap(enumType string) map[string]int32 {
-	return enumValueMaps[enumType]
-}
-
-// A registry of all linked message types.
-// The string is a fully-qualified proto name ("pkg.Message").
-var (
-	protoTypedNils = make(map[string]Message)      // a map from proto names to typed nil pointers
-	protoMapTypes  = make(map[string]reflect.Type) // a map from proto names to map types
-	revProtoTypes  = make(map[reflect.Type]string)
-)
-
-// RegisterType is called from generated code and maps from the fully qualified
-// proto name to the type (pointer to struct) of the protocol buffer.
-func RegisterType(x Message, name string) {
-	if _, ok := protoTypedNils[name]; ok {
-		// TODO: Some day, make this a panic.
-		log.Printf("proto: duplicate proto type registered: %s", name)
-		return
-	}
-	t := reflect.TypeOf(x)
-	if v := reflect.ValueOf(x); v.Kind() == reflect.Ptr && v.Pointer() == 0 {
-		// Generated code always calls RegisterType with nil x.
-		// This check is just for extra safety.
-		protoTypedNils[name] = x
-	} else {
-		protoTypedNils[name] = reflect.Zero(t).Interface().(Message)
-	}
-	revProtoTypes[t] = name
-}
-
-// RegisterMapType is called from generated code and maps from the fully qualified
-// proto name to the native map type of the proto map definition.
-func RegisterMapType(x interface{}, name string) {
-	if reflect.TypeOf(x).Kind() != reflect.Map {
-		panic(fmt.Sprintf("RegisterMapType(%T, %q); want map", x, name))
-	}
-	if _, ok := protoMapTypes[name]; ok {
-		log.Printf("proto: duplicate proto type registered: %s", name)
-		return
-	}
-	t := reflect.TypeOf(x)
-	protoMapTypes[name] = t
-	revProtoTypes[t] = name
-}
-
-// MessageName returns the fully-qualified proto name for the given message type.
-func MessageName(x Message) string {
-	type xname interface {
-		XXX_MessageName() string
-	}
-	if m, ok := x.(xname); ok {
-		return m.XXX_MessageName()
-	}
-	return revProtoTypes[reflect.TypeOf(x)]
-}
-
-// MessageType returns the message type (pointer to struct) for a named message.
-// The type is not guaranteed to implement proto.Message if the name refers to a
-// map entry.
-func MessageType(name string) reflect.Type {
-	if t, ok := protoTypedNils[name]; ok {
-		return reflect.TypeOf(t)
-	}
-	return protoMapTypes[name]
-}
-
-// A registry of all linked proto files.
-var (
-	protoFiles = make(map[string][]byte) // file name => fileDescriptor
-)
-
-// RegisterFile is called from generated code and maps from the
-// full file name of a .proto file to its compressed FileDescriptorProto.
-func RegisterFile(filename string, fileDescriptor []byte) {
-	protoFiles[filename] = fileDescriptor
-}
-
-// FileDescriptor returns the compressed FileDescriptorProto for a .proto file.
-func FileDescriptor(filename string) []byte { return protoFiles[filename] }

+ 0 - 2767
vendor/github.com/golang/protobuf/proto/table_marshal.go

@@ -1,2767 +0,0 @@
-// Go support for Protocol Buffers - Google's data interchange format
-//
-// Copyright 2016 The Go Authors.  All rights reserved.
-// https://github.com/golang/protobuf
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-package proto
-
-import (
-	"errors"
-	"fmt"
-	"math"
-	"reflect"
-	"sort"
-	"strconv"
-	"strings"
-	"sync"
-	"sync/atomic"
-	"unicode/utf8"
-)
-
-// a sizer takes a pointer to a field and the size of its tag, computes the size of
-// the encoded data.
-type sizer func(pointer, int) int
-
-// a marshaler takes a byte slice, a pointer to a field, and its tag (in wire format),
-// marshals the field to the end of the slice, returns the slice and error (if any).
-type marshaler func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error)
-
-// marshalInfo is the information used for marshaling a message.
-type marshalInfo struct {
-	typ          reflect.Type
-	fields       []*marshalFieldInfo
-	unrecognized field                      // offset of XXX_unrecognized
-	extensions   field                      // offset of XXX_InternalExtensions
-	v1extensions field                      // offset of XXX_extensions
-	sizecache    field                      // offset of XXX_sizecache
-	initialized  int32                      // 0 -- only typ is set, 1 -- fully initialized
-	messageset   bool                       // uses message set wire format
-	hasmarshaler bool                       // has custom marshaler
-	sync.RWMutex                            // protect extElems map, also for initialization
-	extElems     map[int32]*marshalElemInfo // info of extension elements
-}
-
-// marshalFieldInfo is the information used for marshaling a field of a message.
-type marshalFieldInfo struct {
-	field      field
-	wiretag    uint64 // tag in wire format
-	tagsize    int    // size of tag in wire format
-	sizer      sizer
-	marshaler  marshaler
-	isPointer  bool
-	required   bool                              // field is required
-	name       string                            // name of the field, for error reporting
-	oneofElems map[reflect.Type]*marshalElemInfo // info of oneof elements
-}
-
-// marshalElemInfo is the information used for marshaling an extension or oneof element.
-type marshalElemInfo struct {
-	wiretag   uint64 // tag in wire format
-	tagsize   int    // size of tag in wire format
-	sizer     sizer
-	marshaler marshaler
-	isptr     bool // elem is pointer typed, thus interface of this type is a direct interface (extension only)
-}
-
-var (
-	marshalInfoMap  = map[reflect.Type]*marshalInfo{}
-	marshalInfoLock sync.Mutex
-)
-
-// getMarshalInfo returns the information to marshal a given type of message.
-// The info it returns may not necessarily initialized.
-// t is the type of the message (NOT the pointer to it).
-func getMarshalInfo(t reflect.Type) *marshalInfo {
-	marshalInfoLock.Lock()
-	u, ok := marshalInfoMap[t]
-	if !ok {
-		u = &marshalInfo{typ: t}
-		marshalInfoMap[t] = u
-	}
-	marshalInfoLock.Unlock()
-	return u
-}
-
-// Size is the entry point from generated code,
-// and should be ONLY called by generated code.
-// It computes the size of encoded data of msg.
-// a is a pointer to a place to store cached marshal info.
-func (a *InternalMessageInfo) Size(msg Message) int {
-	u := getMessageMarshalInfo(msg, a)
-	ptr := toPointer(&msg)
-	if ptr.isNil() {
-		// We get here if msg is a typed nil ((*SomeMessage)(nil)),
-		// so it satisfies the interface, and msg == nil wouldn't
-		// catch it. We don't want crash in this case.
-		return 0
-	}
-	return u.size(ptr)
-}
-
-// Marshal is the entry point from generated code,
-// and should be ONLY called by generated code.
-// It marshals msg to the end of b.
-// a is a pointer to a place to store cached marshal info.
-func (a *InternalMessageInfo) Marshal(b []byte, msg Message, deterministic bool) ([]byte, error) {
-	u := getMessageMarshalInfo(msg, a)
-	ptr := toPointer(&msg)
-	if ptr.isNil() {
-		// We get here if msg is a typed nil ((*SomeMessage)(nil)),
-		// so it satisfies the interface, and msg == nil wouldn't
-		// catch it. We don't want crash in this case.
-		return b, ErrNil
-	}
-	return u.marshal(b, ptr, deterministic)
-}
-
-func getMessageMarshalInfo(msg interface{}, a *InternalMessageInfo) *marshalInfo {
-	// u := a.marshal, but atomically.
-	// We use an atomic here to ensure memory consistency.
-	u := atomicLoadMarshalInfo(&a.marshal)
-	if u == nil {
-		// Get marshal information from type of message.
-		t := reflect.ValueOf(msg).Type()
-		if t.Kind() != reflect.Ptr {
-			panic(fmt.Sprintf("cannot handle non-pointer message type %v", t))
-		}
-		u = getMarshalInfo(t.Elem())
-		// Store it in the cache for later users.
-		// a.marshal = u, but atomically.
-		atomicStoreMarshalInfo(&a.marshal, u)
-	}
-	return u
-}
-
-// size is the main function to compute the size of the encoded data of a message.
-// ptr is the pointer to the message.
-func (u *marshalInfo) size(ptr pointer) int {
-	if atomic.LoadInt32(&u.initialized) == 0 {
-		u.computeMarshalInfo()
-	}
-
-	// If the message can marshal itself, let it do it, for compatibility.
-	// NOTE: This is not efficient.
-	if u.hasmarshaler {
-		m := ptr.asPointerTo(u.typ).Interface().(Marshaler)
-		b, _ := m.Marshal()
-		return len(b)
-	}
-
-	n := 0
-	for _, f := range u.fields {
-		if f.isPointer && ptr.offset(f.field).getPointer().isNil() {
-			// nil pointer always marshals to nothing
-			continue
-		}
-		n += f.sizer(ptr.offset(f.field), f.tagsize)
-	}
-	if u.extensions.IsValid() {
-		e := ptr.offset(u.extensions).toExtensions()
-		if u.messageset {
-			n += u.sizeMessageSet(e)
-		} else {
-			n += u.sizeExtensions(e)
-		}
-	}
-	if u.v1extensions.IsValid() {
-		m := *ptr.offset(u.v1extensions).toOldExtensions()
-		n += u.sizeV1Extensions(m)
-	}
-	if u.unrecognized.IsValid() {
-		s := *ptr.offset(u.unrecognized).toBytes()
-		n += len(s)
-	}
-	// cache the result for use in marshal
-	if u.sizecache.IsValid() {
-		atomic.StoreInt32(ptr.offset(u.sizecache).toInt32(), int32(n))
-	}
-	return n
-}
-
-// cachedsize gets the size from cache. If there is no cache (i.e. message is not generated),
-// fall back to compute the size.
-func (u *marshalInfo) cachedsize(ptr pointer) int {
-	if u.sizecache.IsValid() {
-		return int(atomic.LoadInt32(ptr.offset(u.sizecache).toInt32()))
-	}
-	return u.size(ptr)
-}
-
-// marshal is the main function to marshal a message. It takes a byte slice and appends
-// the encoded data to the end of the slice, returns the slice and error (if any).
-// ptr is the pointer to the message.
-// If deterministic is true, map is marshaled in deterministic order.
-func (u *marshalInfo) marshal(b []byte, ptr pointer, deterministic bool) ([]byte, error) {
-	if atomic.LoadInt32(&u.initialized) == 0 {
-		u.computeMarshalInfo()
-	}
-
-	// If the message can marshal itself, let it do it, for compatibility.
-	// NOTE: This is not efficient.
-	if u.hasmarshaler {
-		m := ptr.asPointerTo(u.typ).Interface().(Marshaler)
-		b1, err := m.Marshal()
-		b = append(b, b1...)
-		return b, err
-	}
-
-	var err, errLater error
-	// The old marshaler encodes extensions at beginning.
-	if u.extensions.IsValid() {
-		e := ptr.offset(u.extensions).toExtensions()
-		if u.messageset {
-			b, err = u.appendMessageSet(b, e, deterministic)
-		} else {
-			b, err = u.appendExtensions(b, e, deterministic)
-		}
-		if err != nil {
-			return b, err
-		}
-	}
-	if u.v1extensions.IsValid() {
-		m := *ptr.offset(u.v1extensions).toOldExtensions()
-		b, err = u.appendV1Extensions(b, m, deterministic)
-		if err != nil {
-			return b, err
-		}
-	}
-	for _, f := range u.fields {
-		if f.required {
-			if ptr.offset(f.field).getPointer().isNil() {
-				// Required field is not set.
-				// We record the error but keep going, to give a complete marshaling.
-				if errLater == nil {
-					errLater = &RequiredNotSetError{f.name}
-				}
-				continue
-			}
-		}
-		if f.isPointer && ptr.offset(f.field).getPointer().isNil() {
-			// nil pointer always marshals to nothing
-			continue
-		}
-		b, err = f.marshaler(b, ptr.offset(f.field), f.wiretag, deterministic)
-		if err != nil {
-			if err1, ok := err.(*RequiredNotSetError); ok {
-				// Required field in submessage is not set.
-				// We record the error but keep going, to give a complete marshaling.
-				if errLater == nil {
-					errLater = &RequiredNotSetError{f.name + "." + err1.field}
-				}
-				continue
-			}
-			if err == errRepeatedHasNil {
-				err = errors.New("proto: repeated field " + f.name + " has nil element")
-			}
-			if err == errInvalidUTF8 {
-				if errLater == nil {
-					fullName := revProtoTypes[reflect.PtrTo(u.typ)] + "." + f.name
-					errLater = &invalidUTF8Error{fullName}
-				}
-				continue
-			}
-			return b, err
-		}
-	}
-	if u.unrecognized.IsValid() {
-		s := *ptr.offset(u.unrecognized).toBytes()
-		b = append(b, s...)
-	}
-	return b, errLater
-}
-
-// computeMarshalInfo initializes the marshal info.
-func (u *marshalInfo) computeMarshalInfo() {
-	u.Lock()
-	defer u.Unlock()
-	if u.initialized != 0 { // non-atomic read is ok as it is protected by the lock
-		return
-	}
-
-	t := u.typ
-	u.unrecognized = invalidField
-	u.extensions = invalidField
-	u.v1extensions = invalidField
-	u.sizecache = invalidField
-
-	// If the message can marshal itself, let it do it, for compatibility.
-	// NOTE: This is not efficient.
-	if reflect.PtrTo(t).Implements(marshalerType) {
-		u.hasmarshaler = true
-		atomic.StoreInt32(&u.initialized, 1)
-		return
-	}
-
-	// get oneof implementers
-	var oneofImplementers []interface{}
-	if m, ok := reflect.Zero(reflect.PtrTo(t)).Interface().(oneofMessage); ok {
-		_, _, _, oneofImplementers = m.XXX_OneofFuncs()
-	}
-
-	n := t.NumField()
-
-	// deal with XXX fields first
-	for i := 0; i < t.NumField(); i++ {
-		f := t.Field(i)
-		if !strings.HasPrefix(f.Name, "XXX_") {
-			continue
-		}
-		switch f.Name {
-		case "XXX_sizecache":
-			u.sizecache = toField(&f)
-		case "XXX_unrecognized":
-			u.unrecognized = toField(&f)
-		case "XXX_InternalExtensions":
-			u.extensions = toField(&f)
-			u.messageset = f.Tag.Get("protobuf_messageset") == "1"
-		case "XXX_extensions":
-			u.v1extensions = toField(&f)
-		case "XXX_NoUnkeyedLiteral":
-			// nothing to do
-		default:
-			panic("unknown XXX field: " + f.Name)
-		}
-		n--
-	}
-
-	// normal fields
-	fields := make([]marshalFieldInfo, n) // batch allocation
-	u.fields = make([]*marshalFieldInfo, 0, n)
-	for i, j := 0, 0; i < t.NumField(); i++ {
-		f := t.Field(i)
-
-		if strings.HasPrefix(f.Name, "XXX_") {
-			continue
-		}
-		field := &fields[j]
-		j++
-		field.name = f.Name
-		u.fields = append(u.fields, field)
-		if f.Tag.Get("protobuf_oneof") != "" {
-			field.computeOneofFieldInfo(&f, oneofImplementers)
-			continue
-		}
-		if f.Tag.Get("protobuf") == "" {
-			// field has no tag (not in generated message), ignore it
-			u.fields = u.fields[:len(u.fields)-1]
-			j--
-			continue
-		}
-		field.computeMarshalFieldInfo(&f)
-	}
-
-	// fields are marshaled in tag order on the wire.
-	sort.Sort(byTag(u.fields))
-
-	atomic.StoreInt32(&u.initialized, 1)
-}
-
-// helper for sorting fields by tag
-type byTag []*marshalFieldInfo
-
-func (a byTag) Len() int           { return len(a) }
-func (a byTag) Swap(i, j int)      { a[i], a[j] = a[j], a[i] }
-func (a byTag) Less(i, j int) bool { return a[i].wiretag < a[j].wiretag }
-
-// getExtElemInfo returns the information to marshal an extension element.
-// The info it returns is initialized.
-func (u *marshalInfo) getExtElemInfo(desc *ExtensionDesc) *marshalElemInfo {
-	// get from cache first
-	u.RLock()
-	e, ok := u.extElems[desc.Field]
-	u.RUnlock()
-	if ok {
-		return e
-	}
-
-	t := reflect.TypeOf(desc.ExtensionType) // pointer or slice to basic type or struct
-	tags := strings.Split(desc.Tag, ",")
-	tag, err := strconv.Atoi(tags[1])
-	if err != nil {
-		panic("tag is not an integer")
-	}
-	wt := wiretype(tags[0])
-	sizer, marshaler := typeMarshaler(t, tags, false, false)
-	e = &marshalElemInfo{
-		wiretag:   uint64(tag)<<3 | wt,
-		tagsize:   SizeVarint(uint64(tag) << 3),
-		sizer:     sizer,
-		marshaler: marshaler,
-		isptr:     t.Kind() == reflect.Ptr,
-	}
-
-	// update cache
-	u.Lock()
-	if u.extElems == nil {
-		u.extElems = make(map[int32]*marshalElemInfo)
-	}
-	u.extElems[desc.Field] = e
-	u.Unlock()
-	return e
-}
-
-// computeMarshalFieldInfo fills up the information to marshal a field.
-func (fi *marshalFieldInfo) computeMarshalFieldInfo(f *reflect.StructField) {
-	// parse protobuf tag of the field.
-	// tag has format of "bytes,49,opt,name=foo,def=hello!"
-	tags := strings.Split(f.Tag.Get("protobuf"), ",")
-	if tags[0] == "" {
-		return
-	}
-	tag, err := strconv.Atoi(tags[1])
-	if err != nil {
-		panic("tag is not an integer")
-	}
-	wt := wiretype(tags[0])
-	if tags[2] == "req" {
-		fi.required = true
-	}
-	fi.setTag(f, tag, wt)
-	fi.setMarshaler(f, tags)
-}
-
-func (fi *marshalFieldInfo) computeOneofFieldInfo(f *reflect.StructField, oneofImplementers []interface{}) {
-	fi.field = toField(f)
-	fi.wiretag = 1<<31 - 1 // Use a large tag number, make oneofs sorted at the end. This tag will not appear on the wire.
-	fi.isPointer = true
-	fi.sizer, fi.marshaler = makeOneOfMarshaler(fi, f)
-	fi.oneofElems = make(map[reflect.Type]*marshalElemInfo)
-
-	ityp := f.Type // interface type
-	for _, o := range oneofImplementers {
-		t := reflect.TypeOf(o)
-		if !t.Implements(ityp) {
-			continue
-		}
-		sf := t.Elem().Field(0) // oneof implementer is a struct with a single field
-		tags := strings.Split(sf.Tag.Get("protobuf"), ",")
-		tag, err := strconv.Atoi(tags[1])
-		if err != nil {
-			panic("tag is not an integer")
-		}
-		wt := wiretype(tags[0])
-		sizer, marshaler := typeMarshaler(sf.Type, tags, false, true) // oneof should not omit any zero value
-		fi.oneofElems[t.Elem()] = &marshalElemInfo{
-			wiretag:   uint64(tag)<<3 | wt,
-			tagsize:   SizeVarint(uint64(tag) << 3),
-			sizer:     sizer,
-			marshaler: marshaler,
-		}
-	}
-}
-
-type oneofMessage interface {
-	XXX_OneofFuncs() (func(Message, *Buffer) error, func(Message, int, int, *Buffer) (bool, error), func(Message) int, []interface{})
-}
-
-// wiretype returns the wire encoding of the type.
-func wiretype(encoding string) uint64 {
-	switch encoding {
-	case "fixed32":
-		return WireFixed32
-	case "fixed64":
-		return WireFixed64
-	case "varint", "zigzag32", "zigzag64":
-		return WireVarint
-	case "bytes":
-		return WireBytes
-	case "group":
-		return WireStartGroup
-	}
-	panic("unknown wire type " + encoding)
-}
-
-// setTag fills up the tag (in wire format) and its size in the info of a field.
-func (fi *marshalFieldInfo) setTag(f *reflect.StructField, tag int, wt uint64) {
-	fi.field = toField(f)
-	fi.wiretag = uint64(tag)<<3 | wt
-	fi.tagsize = SizeVarint(uint64(tag) << 3)
-}
-
-// setMarshaler fills up the sizer and marshaler in the info of a field.
-func (fi *marshalFieldInfo) setMarshaler(f *reflect.StructField, tags []string) {
-	switch f.Type.Kind() {
-	case reflect.Map:
-		// map field
-		fi.isPointer = true
-		fi.sizer, fi.marshaler = makeMapMarshaler(f)
-		return
-	case reflect.Ptr, reflect.Slice:
-		fi.isPointer = true
-	}
-	fi.sizer, fi.marshaler = typeMarshaler(f.Type, tags, true, false)
-}
-
-// typeMarshaler returns the sizer and marshaler of a given field.
-// t is the type of the field.
-// tags is the generated "protobuf" tag of the field.
-// If nozero is true, zero value is not marshaled to the wire.
-// If oneof is true, it is a oneof field.
-func typeMarshaler(t reflect.Type, tags []string, nozero, oneof bool) (sizer, marshaler) {
-	encoding := tags[0]
-
-	pointer := false
-	slice := false
-	if t.Kind() == reflect.Slice && t.Elem().Kind() != reflect.Uint8 {
-		slice = true
-		t = t.Elem()
-	}
-	if t.Kind() == reflect.Ptr {
-		pointer = true
-		t = t.Elem()
-	}
-
-	packed := false
-	proto3 := false
-	validateUTF8 := true
-	for i := 2; i < len(tags); i++ {
-		if tags[i] == "packed" {
-			packed = true
-		}
-		if tags[i] == "proto3" {
-			proto3 = true
-		}
-	}
-	validateUTF8 = validateUTF8 && proto3
-
-	switch t.Kind() {
-	case reflect.Bool:
-		if pointer {
-			return sizeBoolPtr, appendBoolPtr
-		}
-		if slice {
-			if packed {
-				return sizeBoolPackedSlice, appendBoolPackedSlice
-			}
-			return sizeBoolSlice, appendBoolSlice
-		}
-		if nozero {
-			return sizeBoolValueNoZero, appendBoolValueNoZero
-		}
-		return sizeBoolValue, appendBoolValue
-	case reflect.Uint32:
-		switch encoding {
-		case "fixed32":
-			if pointer {
-				return sizeFixed32Ptr, appendFixed32Ptr
-			}
-			if slice {
-				if packed {
-					return sizeFixed32PackedSlice, appendFixed32PackedSlice
-				}
-				return sizeFixed32Slice, appendFixed32Slice
-			}
-			if nozero {
-				return sizeFixed32ValueNoZero, appendFixed32ValueNoZero
-			}
-			return sizeFixed32Value, appendFixed32Value
-		case "varint":
-			if pointer {
-				return sizeVarint32Ptr, appendVarint32Ptr
-			}
-			if slice {
-				if packed {
-					return sizeVarint32PackedSlice, appendVarint32PackedSlice
-				}
-				return sizeVarint32Slice, appendVarint32Slice
-			}
-			if nozero {
-				return sizeVarint32ValueNoZero, appendVarint32ValueNoZero
-			}
-			return sizeVarint32Value, appendVarint32Value
-		}
-	case reflect.Int32:
-		switch encoding {
-		case "fixed32":
-			if pointer {
-				return sizeFixedS32Ptr, appendFixedS32Ptr
-			}
-			if slice {
-				if packed {
-					return sizeFixedS32PackedSlice, appendFixedS32PackedSlice
-				}
-				return sizeFixedS32Slice, appendFixedS32Slice
-			}
-			if nozero {
-				return sizeFixedS32ValueNoZero, appendFixedS32ValueNoZero
-			}
-			return sizeFixedS32Value, appendFixedS32Value
-		case "varint":
-			if pointer {
-				return sizeVarintS32Ptr, appendVarintS32Ptr
-			}
-			if slice {
-				if packed {
-					return sizeVarintS32PackedSlice, appendVarintS32PackedSlice
-				}
-				return sizeVarintS32Slice, appendVarintS32Slice
-			}
-			if nozero {
-				return sizeVarintS32ValueNoZero, appendVarintS32ValueNoZero
-			}
-			return sizeVarintS32Value, appendVarintS32Value
-		case "zigzag32":
-			if pointer {
-				return sizeZigzag32Ptr, appendZigzag32Ptr
-			}
-			if slice {
-				if packed {
-					return sizeZigzag32PackedSlice, appendZigzag32PackedSlice
-				}
-				return sizeZigzag32Slice, appendZigzag32Slice
-			}
-			if nozero {
-				return sizeZigzag32ValueNoZero, appendZigzag32ValueNoZero
-			}
-			return sizeZigzag32Value, appendZigzag32Value
-		}
-	case reflect.Uint64:
-		switch encoding {
-		case "fixed64":
-			if pointer {
-				return sizeFixed64Ptr, appendFixed64Ptr
-			}
-			if slice {
-				if packed {
-					return sizeFixed64PackedSlice, appendFixed64PackedSlice
-				}
-				return sizeFixed64Slice, appendFixed64Slice
-			}
-			if nozero {
-				return sizeFixed64ValueNoZero, appendFixed64ValueNoZero
-			}
-			return sizeFixed64Value, appendFixed64Value
-		case "varint":
-			if pointer {
-				return sizeVarint64Ptr, appendVarint64Ptr
-			}
-			if slice {
-				if packed {
-					return sizeVarint64PackedSlice, appendVarint64PackedSlice
-				}
-				return sizeVarint64Slice, appendVarint64Slice
-			}
-			if nozero {
-				return sizeVarint64ValueNoZero, appendVarint64ValueNoZero
-			}
-			return sizeVarint64Value, appendVarint64Value
-		}
-	case reflect.Int64:
-		switch encoding {
-		case "fixed64":
-			if pointer {
-				return sizeFixedS64Ptr, appendFixedS64Ptr
-			}
-			if slice {
-				if packed {
-					return sizeFixedS64PackedSlice, appendFixedS64PackedSlice
-				}
-				return sizeFixedS64Slice, appendFixedS64Slice
-			}
-			if nozero {
-				return sizeFixedS64ValueNoZero, appendFixedS64ValueNoZero
-			}
-			return sizeFixedS64Value, appendFixedS64Value
-		case "varint":
-			if pointer {
-				return sizeVarintS64Ptr, appendVarintS64Ptr
-			}
-			if slice {
-				if packed {
-					return sizeVarintS64PackedSlice, appendVarintS64PackedSlice
-				}
-				return sizeVarintS64Slice, appendVarintS64Slice
-			}
-			if nozero {
-				return sizeVarintS64ValueNoZero, appendVarintS64ValueNoZero
-			}
-			return sizeVarintS64Value, appendVarintS64Value
-		case "zigzag64":
-			if pointer {
-				return sizeZigzag64Ptr, appendZigzag64Ptr
-			}
-			if slice {
-				if packed {
-					return sizeZigzag64PackedSlice, appendZigzag64PackedSlice
-				}
-				return sizeZigzag64Slice, appendZigzag64Slice
-			}
-			if nozero {
-				return sizeZigzag64ValueNoZero, appendZigzag64ValueNoZero
-			}
-			return sizeZigzag64Value, appendZigzag64Value
-		}
-	case reflect.Float32:
-		if pointer {
-			return sizeFloat32Ptr, appendFloat32Ptr
-		}
-		if slice {
-			if packed {
-				return sizeFloat32PackedSlice, appendFloat32PackedSlice
-			}
-			return sizeFloat32Slice, appendFloat32Slice
-		}
-		if nozero {
-			return sizeFloat32ValueNoZero, appendFloat32ValueNoZero
-		}
-		return sizeFloat32Value, appendFloat32Value
-	case reflect.Float64:
-		if pointer {
-			return sizeFloat64Ptr, appendFloat64Ptr
-		}
-		if slice {
-			if packed {
-				return sizeFloat64PackedSlice, appendFloat64PackedSlice
-			}
-			return sizeFloat64Slice, appendFloat64Slice
-		}
-		if nozero {
-			return sizeFloat64ValueNoZero, appendFloat64ValueNoZero
-		}
-		return sizeFloat64Value, appendFloat64Value
-	case reflect.String:
-		if validateUTF8 {
-			if pointer {
-				return sizeStringPtr, appendUTF8StringPtr
-			}
-			if slice {
-				return sizeStringSlice, appendUTF8StringSlice
-			}
-			if nozero {
-				return sizeStringValueNoZero, appendUTF8StringValueNoZero
-			}
-			return sizeStringValue, appendUTF8StringValue
-		}
-		if pointer {
-			return sizeStringPtr, appendStringPtr
-		}
-		if slice {
-			return sizeStringSlice, appendStringSlice
-		}
-		if nozero {
-			return sizeStringValueNoZero, appendStringValueNoZero
-		}
-		return sizeStringValue, appendStringValue
-	case reflect.Slice:
-		if slice {
-			return sizeBytesSlice, appendBytesSlice
-		}
-		if oneof {
-			// Oneof bytes field may also have "proto3" tag.
-			// We want to marshal it as a oneof field. Do this
-			// check before the proto3 check.
-			return sizeBytesOneof, appendBytesOneof
-		}
-		if proto3 {
-			return sizeBytes3, appendBytes3
-		}
-		return sizeBytes, appendBytes
-	case reflect.Struct:
-		switch encoding {
-		case "group":
-			if slice {
-				return makeGroupSliceMarshaler(getMarshalInfo(t))
-			}
-			return makeGroupMarshaler(getMarshalInfo(t))
-		case "bytes":
-			if slice {
-				return makeMessageSliceMarshaler(getMarshalInfo(t))
-			}
-			return makeMessageMarshaler(getMarshalInfo(t))
-		}
-	}
-	panic(fmt.Sprintf("unknown or mismatched type: type: %v, wire type: %v", t, encoding))
-}
-
-// Below are functions to size/marshal a specific type of a field.
-// They are stored in the field's info, and called by function pointers.
-// They have type sizer or marshaler.
-
-func sizeFixed32Value(_ pointer, tagsize int) int {
-	return 4 + tagsize
-}
-func sizeFixed32ValueNoZero(ptr pointer, tagsize int) int {
-	v := *ptr.toUint32()
-	if v == 0 {
-		return 0
-	}
-	return 4 + tagsize
-}
-func sizeFixed32Ptr(ptr pointer, tagsize int) int {
-	p := *ptr.toUint32Ptr()
-	if p == nil {
-		return 0
-	}
-	return 4 + tagsize
-}
-func sizeFixed32Slice(ptr pointer, tagsize int) int {
-	s := *ptr.toUint32Slice()
-	return (4 + tagsize) * len(s)
-}
-func sizeFixed32PackedSlice(ptr pointer, tagsize int) int {
-	s := *ptr.toUint32Slice()
-	if len(s) == 0 {
-		return 0
-	}
-	return 4*len(s) + SizeVarint(uint64(4*len(s))) + tagsize
-}
-func sizeFixedS32Value(_ pointer, tagsize int) int {
-	return 4 + tagsize
-}
-func sizeFixedS32ValueNoZero(ptr pointer, tagsize int) int {
-	v := *ptr.toInt32()
-	if v == 0 {
-		return 0
-	}
-	return 4 + tagsize
-}
-func sizeFixedS32Ptr(ptr pointer, tagsize int) int {
-	p := ptr.getInt32Ptr()
-	if p == nil {
-		return 0
-	}
-	return 4 + tagsize
-}
-func sizeFixedS32Slice(ptr pointer, tagsize int) int {
-	s := ptr.getInt32Slice()
-	return (4 + tagsize) * len(s)
-}
-func sizeFixedS32PackedSlice(ptr pointer, tagsize int) int {
-	s := ptr.getInt32Slice()
-	if len(s) == 0 {
-		return 0
-	}
-	return 4*len(s) + SizeVarint(uint64(4*len(s))) + tagsize
-}
-func sizeFloat32Value(_ pointer, tagsize int) int {
-	return 4 + tagsize
-}
-func sizeFloat32ValueNoZero(ptr pointer, tagsize int) int {
-	v := math.Float32bits(*ptr.toFloat32())
-	if v == 0 {
-		return 0
-	}
-	return 4 + tagsize
-}
-func sizeFloat32Ptr(ptr pointer, tagsize int) int {
-	p := *ptr.toFloat32Ptr()
-	if p == nil {
-		return 0
-	}
-	return 4 + tagsize
-}
-func sizeFloat32Slice(ptr pointer, tagsize int) int {
-	s := *ptr.toFloat32Slice()
-	return (4 + tagsize) * len(s)
-}
-func sizeFloat32PackedSlice(ptr pointer, tagsize int) int {
-	s := *ptr.toFloat32Slice()
-	if len(s) == 0 {
-		return 0
-	}
-	return 4*len(s) + SizeVarint(uint64(4*len(s))) + tagsize
-}
-func sizeFixed64Value(_ pointer, tagsize int) int {
-	return 8 + tagsize
-}
-func sizeFixed64ValueNoZero(ptr pointer, tagsize int) int {
-	v := *ptr.toUint64()
-	if v == 0 {
-		return 0
-	}
-	return 8 + tagsize
-}
-func sizeFixed64Ptr(ptr pointer, tagsize int) int {
-	p := *ptr.toUint64Ptr()
-	if p == nil {
-		return 0
-	}
-	return 8 + tagsize
-}
-func sizeFixed64Slice(ptr pointer, tagsize int) int {
-	s := *ptr.toUint64Slice()
-	return (8 + tagsize) * len(s)
-}
-func sizeFixed64PackedSlice(ptr pointer, tagsize int) int {
-	s := *ptr.toUint64Slice()
-	if len(s) == 0 {
-		return 0
-	}
-	return 8*len(s) + SizeVarint(uint64(8*len(s))) + tagsize
-}
-func sizeFixedS64Value(_ pointer, tagsize int) int {
-	return 8 + tagsize
-}
-func sizeFixedS64ValueNoZero(ptr pointer, tagsize int) int {
-	v := *ptr.toInt64()
-	if v == 0 {
-		return 0
-	}
-	return 8 + tagsize
-}
-func sizeFixedS64Ptr(ptr pointer, tagsize int) int {
-	p := *ptr.toInt64Ptr()
-	if p == nil {
-		return 0
-	}
-	return 8 + tagsize
-}
-func sizeFixedS64Slice(ptr pointer, tagsize int) int {
-	s := *ptr.toInt64Slice()
-	return (8 + tagsize) * len(s)
-}
-func sizeFixedS64PackedSlice(ptr pointer, tagsize int) int {
-	s := *ptr.toInt64Slice()
-	if len(s) == 0 {
-		return 0
-	}
-	return 8*len(s) + SizeVarint(uint64(8*len(s))) + tagsize
-}
-func sizeFloat64Value(_ pointer, tagsize int) int {
-	return 8 + tagsize
-}
-func sizeFloat64ValueNoZero(ptr pointer, tagsize int) int {
-	v := math.Float64bits(*ptr.toFloat64())
-	if v == 0 {
-		return 0
-	}
-	return 8 + tagsize
-}
-func sizeFloat64Ptr(ptr pointer, tagsize int) int {
-	p := *ptr.toFloat64Ptr()
-	if p == nil {
-		return 0
-	}
-	return 8 + tagsize
-}
-func sizeFloat64Slice(ptr pointer, tagsize int) int {
-	s := *ptr.toFloat64Slice()
-	return (8 + tagsize) * len(s)
-}
-func sizeFloat64PackedSlice(ptr pointer, tagsize int) int {
-	s := *ptr.toFloat64Slice()
-	if len(s) == 0 {
-		return 0
-	}
-	return 8*len(s) + SizeVarint(uint64(8*len(s))) + tagsize
-}
-func sizeVarint32Value(ptr pointer, tagsize int) int {
-	v := *ptr.toUint32()
-	return SizeVarint(uint64(v)) + tagsize
-}
-func sizeVarint32ValueNoZero(ptr pointer, tagsize int) int {
-	v := *ptr.toUint32()
-	if v == 0 {
-		return 0
-	}
-	return SizeVarint(uint64(v)) + tagsize
-}
-func sizeVarint32Ptr(ptr pointer, tagsize int) int {
-	p := *ptr.toUint32Ptr()
-	if p == nil {
-		return 0
-	}
-	return SizeVarint(uint64(*p)) + tagsize
-}
-func sizeVarint32Slice(ptr pointer, tagsize int) int {
-	s := *ptr.toUint32Slice()
-	n := 0
-	for _, v := range s {
-		n += SizeVarint(uint64(v)) + tagsize
-	}
-	return n
-}
-func sizeVarint32PackedSlice(ptr pointer, tagsize int) int {
-	s := *ptr.toUint32Slice()
-	if len(s) == 0 {
-		return 0
-	}
-	n := 0
-	for _, v := range s {
-		n += SizeVarint(uint64(v))
-	}
-	return n + SizeVarint(uint64(n)) + tagsize
-}
-func sizeVarintS32Value(ptr pointer, tagsize int) int {
-	v := *ptr.toInt32()
-	return SizeVarint(uint64(v)) + tagsize
-}
-func sizeVarintS32ValueNoZero(ptr pointer, tagsize int) int {
-	v := *ptr.toInt32()
-	if v == 0 {
-		return 0
-	}
-	return SizeVarint(uint64(v)) + tagsize
-}
-func sizeVarintS32Ptr(ptr pointer, tagsize int) int {
-	p := ptr.getInt32Ptr()
-	if p == nil {
-		return 0
-	}
-	return SizeVarint(uint64(*p)) + tagsize
-}
-func sizeVarintS32Slice(ptr pointer, tagsize int) int {
-	s := ptr.getInt32Slice()
-	n := 0
-	for _, v := range s {
-		n += SizeVarint(uint64(v)) + tagsize
-	}
-	return n
-}
-func sizeVarintS32PackedSlice(ptr pointer, tagsize int) int {
-	s := ptr.getInt32Slice()
-	if len(s) == 0 {
-		return 0
-	}
-	n := 0
-	for _, v := range s {
-		n += SizeVarint(uint64(v))
-	}
-	return n + SizeVarint(uint64(n)) + tagsize
-}
-func sizeVarint64Value(ptr pointer, tagsize int) int {
-	v := *ptr.toUint64()
-	return SizeVarint(v) + tagsize
-}
-func sizeVarint64ValueNoZero(ptr pointer, tagsize int) int {
-	v := *ptr.toUint64()
-	if v == 0 {
-		return 0
-	}
-	return SizeVarint(v) + tagsize
-}
-func sizeVarint64Ptr(ptr pointer, tagsize int) int {
-	p := *ptr.toUint64Ptr()
-	if p == nil {
-		return 0
-	}
-	return SizeVarint(*p) + tagsize
-}
-func sizeVarint64Slice(ptr pointer, tagsize int) int {
-	s := *ptr.toUint64Slice()
-	n := 0
-	for _, v := range s {
-		n += SizeVarint(v) + tagsize
-	}
-	return n
-}
-func sizeVarint64PackedSlice(ptr pointer, tagsize int) int {
-	s := *ptr.toUint64Slice()
-	if len(s) == 0 {
-		return 0
-	}
-	n := 0
-	for _, v := range s {
-		n += SizeVarint(v)
-	}
-	return n + SizeVarint(uint64(n)) + tagsize
-}
-func sizeVarintS64Value(ptr pointer, tagsize int) int {
-	v := *ptr.toInt64()
-	return SizeVarint(uint64(v)) + tagsize
-}
-func sizeVarintS64ValueNoZero(ptr pointer, tagsize int) int {
-	v := *ptr.toInt64()
-	if v == 0 {
-		return 0
-	}
-	return SizeVarint(uint64(v)) + tagsize
-}
-func sizeVarintS64Ptr(ptr pointer, tagsize int) int {
-	p := *ptr.toInt64Ptr()
-	if p == nil {
-		return 0
-	}
-	return SizeVarint(uint64(*p)) + tagsize
-}
-func sizeVarintS64Slice(ptr pointer, tagsize int) int {
-	s := *ptr.toInt64Slice()
-	n := 0
-	for _, v := range s {
-		n += SizeVarint(uint64(v)) + tagsize
-	}
-	return n
-}
-func sizeVarintS64PackedSlice(ptr pointer, tagsize int) int {
-	s := *ptr.toInt64Slice()
-	if len(s) == 0 {
-		return 0
-	}
-	n := 0
-	for _, v := range s {
-		n += SizeVarint(uint64(v))
-	}
-	return n + SizeVarint(uint64(n)) + tagsize
-}
-func sizeZigzag32Value(ptr pointer, tagsize int) int {
-	v := *ptr.toInt32()
-	return SizeVarint(uint64((uint32(v)<<1)^uint32((int32(v)>>31)))) + tagsize
-}
-func sizeZigzag32ValueNoZero(ptr pointer, tagsize int) int {
-	v := *ptr.toInt32()
-	if v == 0 {
-		return 0
-	}
-	return SizeVarint(uint64((uint32(v)<<1)^uint32((int32(v)>>31)))) + tagsize
-}
-func sizeZigzag32Ptr(ptr pointer, tagsize int) int {
-	p := ptr.getInt32Ptr()
-	if p == nil {
-		return 0
-	}
-	v := *p
-	return SizeVarint(uint64((uint32(v)<<1)^uint32((int32(v)>>31)))) + tagsize
-}
-func sizeZigzag32Slice(ptr pointer, tagsize int) int {
-	s := ptr.getInt32Slice()
-	n := 0
-	for _, v := range s {
-		n += SizeVarint(uint64((uint32(v)<<1)^uint32((int32(v)>>31)))) + tagsize
-	}
-	return n
-}
-func sizeZigzag32PackedSlice(ptr pointer, tagsize int) int {
-	s := ptr.getInt32Slice()
-	if len(s) == 0 {
-		return 0
-	}
-	n := 0
-	for _, v := range s {
-		n += SizeVarint(uint64((uint32(v) << 1) ^ uint32((int32(v) >> 31))))
-	}
-	return n + SizeVarint(uint64(n)) + tagsize
-}
-func sizeZigzag64Value(ptr pointer, tagsize int) int {
-	v := *ptr.toInt64()
-	return SizeVarint(uint64(v<<1)^uint64((int64(v)>>63))) + tagsize
-}
-func sizeZigzag64ValueNoZero(ptr pointer, tagsize int) int {
-	v := *ptr.toInt64()
-	if v == 0 {
-		return 0
-	}
-	return SizeVarint(uint64(v<<1)^uint64((int64(v)>>63))) + tagsize
-}
-func sizeZigzag64Ptr(ptr pointer, tagsize int) int {
-	p := *ptr.toInt64Ptr()
-	if p == nil {
-		return 0
-	}
-	v := *p
-	return SizeVarint(uint64(v<<1)^uint64((int64(v)>>63))) + tagsize
-}
-func sizeZigzag64Slice(ptr pointer, tagsize int) int {
-	s := *ptr.toInt64Slice()
-	n := 0
-	for _, v := range s {
-		n += SizeVarint(uint64(v<<1)^uint64((int64(v)>>63))) + tagsize
-	}
-	return n
-}
-func sizeZigzag64PackedSlice(ptr pointer, tagsize int) int {
-	s := *ptr.toInt64Slice()
-	if len(s) == 0 {
-		return 0
-	}
-	n := 0
-	for _, v := range s {
-		n += SizeVarint(uint64(v<<1) ^ uint64((int64(v) >> 63)))
-	}
-	return n + SizeVarint(uint64(n)) + tagsize
-}
-func sizeBoolValue(_ pointer, tagsize int) int {
-	return 1 + tagsize
-}
-func sizeBoolValueNoZero(ptr pointer, tagsize int) int {
-	v := *ptr.toBool()
-	if !v {
-		return 0
-	}
-	return 1 + tagsize
-}
-func sizeBoolPtr(ptr pointer, tagsize int) int {
-	p := *ptr.toBoolPtr()
-	if p == nil {
-		return 0
-	}
-	return 1 + tagsize
-}
-func sizeBoolSlice(ptr pointer, tagsize int) int {
-	s := *ptr.toBoolSlice()
-	return (1 + tagsize) * len(s)
-}
-func sizeBoolPackedSlice(ptr pointer, tagsize int) int {
-	s := *ptr.toBoolSlice()
-	if len(s) == 0 {
-		return 0
-	}
-	return len(s) + SizeVarint(uint64(len(s))) + tagsize
-}
-func sizeStringValue(ptr pointer, tagsize int) int {
-	v := *ptr.toString()
-	return len(v) + SizeVarint(uint64(len(v))) + tagsize
-}
-func sizeStringValueNoZero(ptr pointer, tagsize int) int {
-	v := *ptr.toString()
-	if v == "" {
-		return 0
-	}
-	return len(v) + SizeVarint(uint64(len(v))) + tagsize
-}
-func sizeStringPtr(ptr pointer, tagsize int) int {
-	p := *ptr.toStringPtr()
-	if p == nil {
-		return 0
-	}
-	v := *p
-	return len(v) + SizeVarint(uint64(len(v))) + tagsize
-}
-func sizeStringSlice(ptr pointer, tagsize int) int {
-	s := *ptr.toStringSlice()
-	n := 0
-	for _, v := range s {
-		n += len(v) + SizeVarint(uint64(len(v))) + tagsize
-	}
-	return n
-}
-func sizeBytes(ptr pointer, tagsize int) int {
-	v := *ptr.toBytes()
-	if v == nil {
-		return 0
-	}
-	return len(v) + SizeVarint(uint64(len(v))) + tagsize
-}
-func sizeBytes3(ptr pointer, tagsize int) int {
-	v := *ptr.toBytes()
-	if len(v) == 0 {
-		return 0
-	}
-	return len(v) + SizeVarint(uint64(len(v))) + tagsize
-}
-func sizeBytesOneof(ptr pointer, tagsize int) int {
-	v := *ptr.toBytes()
-	return len(v) + SizeVarint(uint64(len(v))) + tagsize
-}
-func sizeBytesSlice(ptr pointer, tagsize int) int {
-	s := *ptr.toBytesSlice()
-	n := 0
-	for _, v := range s {
-		n += len(v) + SizeVarint(uint64(len(v))) + tagsize
-	}
-	return n
-}
-
-// appendFixed32 appends an encoded fixed32 to b.
-func appendFixed32(b []byte, v uint32) []byte {
-	b = append(b,
-		byte(v),
-		byte(v>>8),
-		byte(v>>16),
-		byte(v>>24))
-	return b
-}
-
-// appendFixed64 appends an encoded fixed64 to b.
-func appendFixed64(b []byte, v uint64) []byte {
-	b = append(b,
-		byte(v),
-		byte(v>>8),
-		byte(v>>16),
-		byte(v>>24),
-		byte(v>>32),
-		byte(v>>40),
-		byte(v>>48),
-		byte(v>>56))
-	return b
-}
-
-// appendVarint appends an encoded varint to b.
-func appendVarint(b []byte, v uint64) []byte {
-	// TODO: make 1-byte (maybe 2-byte) case inline-able, once we
-	// have non-leaf inliner.
-	switch {
-	case v < 1<<7:
-		b = append(b, byte(v))
-	case v < 1<<14:
-		b = append(b,
-			byte(v&0x7f|0x80),
-			byte(v>>7))
-	case v < 1<<21:
-		b = append(b,
-			byte(v&0x7f|0x80),
-			byte((v>>7)&0x7f|0x80),
-			byte(v>>14))
-	case v < 1<<28:
-		b = append(b,
-			byte(v&0x7f|0x80),
-			byte((v>>7)&0x7f|0x80),
-			byte((v>>14)&0x7f|0x80),
-			byte(v>>21))
-	case v < 1<<35:
-		b = append(b,
-			byte(v&0x7f|0x80),
-			byte((v>>7)&0x7f|0x80),
-			byte((v>>14)&0x7f|0x80),
-			byte((v>>21)&0x7f|0x80),
-			byte(v>>28))
-	case v < 1<<42:
-		b = append(b,
-			byte(v&0x7f|0x80),
-			byte((v>>7)&0x7f|0x80),
-			byte((v>>14)&0x7f|0x80),
-			byte((v>>21)&0x7f|0x80),
-			byte((v>>28)&0x7f|0x80),
-			byte(v>>35))
-	case v < 1<<49:
-		b = append(b,
-			byte(v&0x7f|0x80),
-			byte((v>>7)&0x7f|0x80),
-			byte((v>>14)&0x7f|0x80),
-			byte((v>>21)&0x7f|0x80),
-			byte((v>>28)&0x7f|0x80),
-			byte((v>>35)&0x7f|0x80),
-			byte(v>>42))
-	case v < 1<<56:
-		b = append(b,
-			byte(v&0x7f|0x80),
-			byte((v>>7)&0x7f|0x80),
-			byte((v>>14)&0x7f|0x80),
-			byte((v>>21)&0x7f|0x80),
-			byte((v>>28)&0x7f|0x80),
-			byte((v>>35)&0x7f|0x80),
-			byte((v>>42)&0x7f|0x80),
-			byte(v>>49))
-	case v < 1<<63:
-		b = append(b,
-			byte(v&0x7f|0x80),
-			byte((v>>7)&0x7f|0x80),
-			byte((v>>14)&0x7f|0x80),
-			byte((v>>21)&0x7f|0x80),
-			byte((v>>28)&0x7f|0x80),
-			byte((v>>35)&0x7f|0x80),
-			byte((v>>42)&0x7f|0x80),
-			byte((v>>49)&0x7f|0x80),
-			byte(v>>56))
-	default:
-		b = append(b,
-			byte(v&0x7f|0x80),
-			byte((v>>7)&0x7f|0x80),
-			byte((v>>14)&0x7f|0x80),
-			byte((v>>21)&0x7f|0x80),
-			byte((v>>28)&0x7f|0x80),
-			byte((v>>35)&0x7f|0x80),
-			byte((v>>42)&0x7f|0x80),
-			byte((v>>49)&0x7f|0x80),
-			byte((v>>56)&0x7f|0x80),
-			1)
-	}
-	return b
-}
-
-func appendFixed32Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	v := *ptr.toUint32()
-	b = appendVarint(b, wiretag)
-	b = appendFixed32(b, v)
-	return b, nil
-}
-func appendFixed32ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	v := *ptr.toUint32()
-	if v == 0 {
-		return b, nil
-	}
-	b = appendVarint(b, wiretag)
-	b = appendFixed32(b, v)
-	return b, nil
-}
-func appendFixed32Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	p := *ptr.toUint32Ptr()
-	if p == nil {
-		return b, nil
-	}
-	b = appendVarint(b, wiretag)
-	b = appendFixed32(b, *p)
-	return b, nil
-}
-func appendFixed32Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	s := *ptr.toUint32Slice()
-	for _, v := range s {
-		b = appendVarint(b, wiretag)
-		b = appendFixed32(b, v)
-	}
-	return b, nil
-}
-func appendFixed32PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	s := *ptr.toUint32Slice()
-	if len(s) == 0 {
-		return b, nil
-	}
-	b = appendVarint(b, wiretag&^7|WireBytes)
-	b = appendVarint(b, uint64(4*len(s)))
-	for _, v := range s {
-		b = appendFixed32(b, v)
-	}
-	return b, nil
-}
-func appendFixedS32Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	v := *ptr.toInt32()
-	b = appendVarint(b, wiretag)
-	b = appendFixed32(b, uint32(v))
-	return b, nil
-}
-func appendFixedS32ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	v := *ptr.toInt32()
-	if v == 0 {
-		return b, nil
-	}
-	b = appendVarint(b, wiretag)
-	b = appendFixed32(b, uint32(v))
-	return b, nil
-}
-func appendFixedS32Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	p := ptr.getInt32Ptr()
-	if p == nil {
-		return b, nil
-	}
-	b = appendVarint(b, wiretag)
-	b = appendFixed32(b, uint32(*p))
-	return b, nil
-}
-func appendFixedS32Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	s := ptr.getInt32Slice()
-	for _, v := range s {
-		b = appendVarint(b, wiretag)
-		b = appendFixed32(b, uint32(v))
-	}
-	return b, nil
-}
-func appendFixedS32PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	s := ptr.getInt32Slice()
-	if len(s) == 0 {
-		return b, nil
-	}
-	b = appendVarint(b, wiretag&^7|WireBytes)
-	b = appendVarint(b, uint64(4*len(s)))
-	for _, v := range s {
-		b = appendFixed32(b, uint32(v))
-	}
-	return b, nil
-}
-func appendFloat32Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	v := math.Float32bits(*ptr.toFloat32())
-	b = appendVarint(b, wiretag)
-	b = appendFixed32(b, v)
-	return b, nil
-}
-func appendFloat32ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	v := math.Float32bits(*ptr.toFloat32())
-	if v == 0 {
-		return b, nil
-	}
-	b = appendVarint(b, wiretag)
-	b = appendFixed32(b, v)
-	return b, nil
-}
-func appendFloat32Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	p := *ptr.toFloat32Ptr()
-	if p == nil {
-		return b, nil
-	}
-	b = appendVarint(b, wiretag)
-	b = appendFixed32(b, math.Float32bits(*p))
-	return b, nil
-}
-func appendFloat32Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	s := *ptr.toFloat32Slice()
-	for _, v := range s {
-		b = appendVarint(b, wiretag)
-		b = appendFixed32(b, math.Float32bits(v))
-	}
-	return b, nil
-}
-func appendFloat32PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	s := *ptr.toFloat32Slice()
-	if len(s) == 0 {
-		return b, nil
-	}
-	b = appendVarint(b, wiretag&^7|WireBytes)
-	b = appendVarint(b, uint64(4*len(s)))
-	for _, v := range s {
-		b = appendFixed32(b, math.Float32bits(v))
-	}
-	return b, nil
-}
-func appendFixed64Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	v := *ptr.toUint64()
-	b = appendVarint(b, wiretag)
-	b = appendFixed64(b, v)
-	return b, nil
-}
-func appendFixed64ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	v := *ptr.toUint64()
-	if v == 0 {
-		return b, nil
-	}
-	b = appendVarint(b, wiretag)
-	b = appendFixed64(b, v)
-	return b, nil
-}
-func appendFixed64Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	p := *ptr.toUint64Ptr()
-	if p == nil {
-		return b, nil
-	}
-	b = appendVarint(b, wiretag)
-	b = appendFixed64(b, *p)
-	return b, nil
-}
-func appendFixed64Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	s := *ptr.toUint64Slice()
-	for _, v := range s {
-		b = appendVarint(b, wiretag)
-		b = appendFixed64(b, v)
-	}
-	return b, nil
-}
-func appendFixed64PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	s := *ptr.toUint64Slice()
-	if len(s) == 0 {
-		return b, nil
-	}
-	b = appendVarint(b, wiretag&^7|WireBytes)
-	b = appendVarint(b, uint64(8*len(s)))
-	for _, v := range s {
-		b = appendFixed64(b, v)
-	}
-	return b, nil
-}
-func appendFixedS64Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	v := *ptr.toInt64()
-	b = appendVarint(b, wiretag)
-	b = appendFixed64(b, uint64(v))
-	return b, nil
-}
-func appendFixedS64ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	v := *ptr.toInt64()
-	if v == 0 {
-		return b, nil
-	}
-	b = appendVarint(b, wiretag)
-	b = appendFixed64(b, uint64(v))
-	return b, nil
-}
-func appendFixedS64Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	p := *ptr.toInt64Ptr()
-	if p == nil {
-		return b, nil
-	}
-	b = appendVarint(b, wiretag)
-	b = appendFixed64(b, uint64(*p))
-	return b, nil
-}
-func appendFixedS64Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	s := *ptr.toInt64Slice()
-	for _, v := range s {
-		b = appendVarint(b, wiretag)
-		b = appendFixed64(b, uint64(v))
-	}
-	return b, nil
-}
-func appendFixedS64PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	s := *ptr.toInt64Slice()
-	if len(s) == 0 {
-		return b, nil
-	}
-	b = appendVarint(b, wiretag&^7|WireBytes)
-	b = appendVarint(b, uint64(8*len(s)))
-	for _, v := range s {
-		b = appendFixed64(b, uint64(v))
-	}
-	return b, nil
-}
-func appendFloat64Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	v := math.Float64bits(*ptr.toFloat64())
-	b = appendVarint(b, wiretag)
-	b = appendFixed64(b, v)
-	return b, nil
-}
-func appendFloat64ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	v := math.Float64bits(*ptr.toFloat64())
-	if v == 0 {
-		return b, nil
-	}
-	b = appendVarint(b, wiretag)
-	b = appendFixed64(b, v)
-	return b, nil
-}
-func appendFloat64Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	p := *ptr.toFloat64Ptr()
-	if p == nil {
-		return b, nil
-	}
-	b = appendVarint(b, wiretag)
-	b = appendFixed64(b, math.Float64bits(*p))
-	return b, nil
-}
-func appendFloat64Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	s := *ptr.toFloat64Slice()
-	for _, v := range s {
-		b = appendVarint(b, wiretag)
-		b = appendFixed64(b, math.Float64bits(v))
-	}
-	return b, nil
-}
-func appendFloat64PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	s := *ptr.toFloat64Slice()
-	if len(s) == 0 {
-		return b, nil
-	}
-	b = appendVarint(b, wiretag&^7|WireBytes)
-	b = appendVarint(b, uint64(8*len(s)))
-	for _, v := range s {
-		b = appendFixed64(b, math.Float64bits(v))
-	}
-	return b, nil
-}
-func appendVarint32Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	v := *ptr.toUint32()
-	b = appendVarint(b, wiretag)
-	b = appendVarint(b, uint64(v))
-	return b, nil
-}
-func appendVarint32ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	v := *ptr.toUint32()
-	if v == 0 {
-		return b, nil
-	}
-	b = appendVarint(b, wiretag)
-	b = appendVarint(b, uint64(v))
-	return b, nil
-}
-func appendVarint32Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	p := *ptr.toUint32Ptr()
-	if p == nil {
-		return b, nil
-	}
-	b = appendVarint(b, wiretag)
-	b = appendVarint(b, uint64(*p))
-	return b, nil
-}
-func appendVarint32Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	s := *ptr.toUint32Slice()
-	for _, v := range s {
-		b = appendVarint(b, wiretag)
-		b = appendVarint(b, uint64(v))
-	}
-	return b, nil
-}
-func appendVarint32PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	s := *ptr.toUint32Slice()
-	if len(s) == 0 {
-		return b, nil
-	}
-	b = appendVarint(b, wiretag&^7|WireBytes)
-	// compute size
-	n := 0
-	for _, v := range s {
-		n += SizeVarint(uint64(v))
-	}
-	b = appendVarint(b, uint64(n))
-	for _, v := range s {
-		b = appendVarint(b, uint64(v))
-	}
-	return b, nil
-}
-func appendVarintS32Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	v := *ptr.toInt32()
-	b = appendVarint(b, wiretag)
-	b = appendVarint(b, uint64(v))
-	return b, nil
-}
-func appendVarintS32ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	v := *ptr.toInt32()
-	if v == 0 {
-		return b, nil
-	}
-	b = appendVarint(b, wiretag)
-	b = appendVarint(b, uint64(v))
-	return b, nil
-}
-func appendVarintS32Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	p := ptr.getInt32Ptr()
-	if p == nil {
-		return b, nil
-	}
-	b = appendVarint(b, wiretag)
-	b = appendVarint(b, uint64(*p))
-	return b, nil
-}
-func appendVarintS32Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	s := ptr.getInt32Slice()
-	for _, v := range s {
-		b = appendVarint(b, wiretag)
-		b = appendVarint(b, uint64(v))
-	}
-	return b, nil
-}
-func appendVarintS32PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	s := ptr.getInt32Slice()
-	if len(s) == 0 {
-		return b, nil
-	}
-	b = appendVarint(b, wiretag&^7|WireBytes)
-	// compute size
-	n := 0
-	for _, v := range s {
-		n += SizeVarint(uint64(v))
-	}
-	b = appendVarint(b, uint64(n))
-	for _, v := range s {
-		b = appendVarint(b, uint64(v))
-	}
-	return b, nil
-}
-func appendVarint64Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	v := *ptr.toUint64()
-	b = appendVarint(b, wiretag)
-	b = appendVarint(b, v)
-	return b, nil
-}
-func appendVarint64ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	v := *ptr.toUint64()
-	if v == 0 {
-		return b, nil
-	}
-	b = appendVarint(b, wiretag)
-	b = appendVarint(b, v)
-	return b, nil
-}
-func appendVarint64Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	p := *ptr.toUint64Ptr()
-	if p == nil {
-		return b, nil
-	}
-	b = appendVarint(b, wiretag)
-	b = appendVarint(b, *p)
-	return b, nil
-}
-func appendVarint64Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	s := *ptr.toUint64Slice()
-	for _, v := range s {
-		b = appendVarint(b, wiretag)
-		b = appendVarint(b, v)
-	}
-	return b, nil
-}
-func appendVarint64PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	s := *ptr.toUint64Slice()
-	if len(s) == 0 {
-		return b, nil
-	}
-	b = appendVarint(b, wiretag&^7|WireBytes)
-	// compute size
-	n := 0
-	for _, v := range s {
-		n += SizeVarint(v)
-	}
-	b = appendVarint(b, uint64(n))
-	for _, v := range s {
-		b = appendVarint(b, v)
-	}
-	return b, nil
-}
-func appendVarintS64Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	v := *ptr.toInt64()
-	b = appendVarint(b, wiretag)
-	b = appendVarint(b, uint64(v))
-	return b, nil
-}
-func appendVarintS64ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	v := *ptr.toInt64()
-	if v == 0 {
-		return b, nil
-	}
-	b = appendVarint(b, wiretag)
-	b = appendVarint(b, uint64(v))
-	return b, nil
-}
-func appendVarintS64Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	p := *ptr.toInt64Ptr()
-	if p == nil {
-		return b, nil
-	}
-	b = appendVarint(b, wiretag)
-	b = appendVarint(b, uint64(*p))
-	return b, nil
-}
-func appendVarintS64Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	s := *ptr.toInt64Slice()
-	for _, v := range s {
-		b = appendVarint(b, wiretag)
-		b = appendVarint(b, uint64(v))
-	}
-	return b, nil
-}
-func appendVarintS64PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	s := *ptr.toInt64Slice()
-	if len(s) == 0 {
-		return b, nil
-	}
-	b = appendVarint(b, wiretag&^7|WireBytes)
-	// compute size
-	n := 0
-	for _, v := range s {
-		n += SizeVarint(uint64(v))
-	}
-	b = appendVarint(b, uint64(n))
-	for _, v := range s {
-		b = appendVarint(b, uint64(v))
-	}
-	return b, nil
-}
-func appendZigzag32Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	v := *ptr.toInt32()
-	b = appendVarint(b, wiretag)
-	b = appendVarint(b, uint64((uint32(v)<<1)^uint32((int32(v)>>31))))
-	return b, nil
-}
-func appendZigzag32ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	v := *ptr.toInt32()
-	if v == 0 {
-		return b, nil
-	}
-	b = appendVarint(b, wiretag)
-	b = appendVarint(b, uint64((uint32(v)<<1)^uint32((int32(v)>>31))))
-	return b, nil
-}
-func appendZigzag32Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	p := ptr.getInt32Ptr()
-	if p == nil {
-		return b, nil
-	}
-	b = appendVarint(b, wiretag)
-	v := *p
-	b = appendVarint(b, uint64((uint32(v)<<1)^uint32((int32(v)>>31))))
-	return b, nil
-}
-func appendZigzag32Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	s := ptr.getInt32Slice()
-	for _, v := range s {
-		b = appendVarint(b, wiretag)
-		b = appendVarint(b, uint64((uint32(v)<<1)^uint32((int32(v)>>31))))
-	}
-	return b, nil
-}
-func appendZigzag32PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	s := ptr.getInt32Slice()
-	if len(s) == 0 {
-		return b, nil
-	}
-	b = appendVarint(b, wiretag&^7|WireBytes)
-	// compute size
-	n := 0
-	for _, v := range s {
-		n += SizeVarint(uint64((uint32(v) << 1) ^ uint32((int32(v) >> 31))))
-	}
-	b = appendVarint(b, uint64(n))
-	for _, v := range s {
-		b = appendVarint(b, uint64((uint32(v)<<1)^uint32((int32(v)>>31))))
-	}
-	return b, nil
-}
-func appendZigzag64Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	v := *ptr.toInt64()
-	b = appendVarint(b, wiretag)
-	b = appendVarint(b, uint64(v<<1)^uint64((int64(v)>>63)))
-	return b, nil
-}
-func appendZigzag64ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	v := *ptr.toInt64()
-	if v == 0 {
-		return b, nil
-	}
-	b = appendVarint(b, wiretag)
-	b = appendVarint(b, uint64(v<<1)^uint64((int64(v)>>63)))
-	return b, nil
-}
-func appendZigzag64Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	p := *ptr.toInt64Ptr()
-	if p == nil {
-		return b, nil
-	}
-	b = appendVarint(b, wiretag)
-	v := *p
-	b = appendVarint(b, uint64(v<<1)^uint64((int64(v)>>63)))
-	return b, nil
-}
-func appendZigzag64Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	s := *ptr.toInt64Slice()
-	for _, v := range s {
-		b = appendVarint(b, wiretag)
-		b = appendVarint(b, uint64(v<<1)^uint64((int64(v)>>63)))
-	}
-	return b, nil
-}
-func appendZigzag64PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	s := *ptr.toInt64Slice()
-	if len(s) == 0 {
-		return b, nil
-	}
-	b = appendVarint(b, wiretag&^7|WireBytes)
-	// compute size
-	n := 0
-	for _, v := range s {
-		n += SizeVarint(uint64(v<<1) ^ uint64((int64(v) >> 63)))
-	}
-	b = appendVarint(b, uint64(n))
-	for _, v := range s {
-		b = appendVarint(b, uint64(v<<1)^uint64((int64(v)>>63)))
-	}
-	return b, nil
-}
-func appendBoolValue(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	v := *ptr.toBool()
-	b = appendVarint(b, wiretag)
-	if v {
-		b = append(b, 1)
-	} else {
-		b = append(b, 0)
-	}
-	return b, nil
-}
-func appendBoolValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	v := *ptr.toBool()
-	if !v {
-		return b, nil
-	}
-	b = appendVarint(b, wiretag)
-	b = append(b, 1)
-	return b, nil
-}
-
-func appendBoolPtr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	p := *ptr.toBoolPtr()
-	if p == nil {
-		return b, nil
-	}
-	b = appendVarint(b, wiretag)
-	if *p {
-		b = append(b, 1)
-	} else {
-		b = append(b, 0)
-	}
-	return b, nil
-}
-func appendBoolSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	s := *ptr.toBoolSlice()
-	for _, v := range s {
-		b = appendVarint(b, wiretag)
-		if v {
-			b = append(b, 1)
-		} else {
-			b = append(b, 0)
-		}
-	}
-	return b, nil
-}
-func appendBoolPackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	s := *ptr.toBoolSlice()
-	if len(s) == 0 {
-		return b, nil
-	}
-	b = appendVarint(b, wiretag&^7|WireBytes)
-	b = appendVarint(b, uint64(len(s)))
-	for _, v := range s {
-		if v {
-			b = append(b, 1)
-		} else {
-			b = append(b, 0)
-		}
-	}
-	return b, nil
-}
-func appendStringValue(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	v := *ptr.toString()
-	b = appendVarint(b, wiretag)
-	b = appendVarint(b, uint64(len(v)))
-	b = append(b, v...)
-	return b, nil
-}
-func appendStringValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	v := *ptr.toString()
-	if v == "" {
-		return b, nil
-	}
-	b = appendVarint(b, wiretag)
-	b = appendVarint(b, uint64(len(v)))
-	b = append(b, v...)
-	return b, nil
-}
-func appendStringPtr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	p := *ptr.toStringPtr()
-	if p == nil {
-		return b, nil
-	}
-	v := *p
-	b = appendVarint(b, wiretag)
-	b = appendVarint(b, uint64(len(v)))
-	b = append(b, v...)
-	return b, nil
-}
-func appendStringSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	s := *ptr.toStringSlice()
-	for _, v := range s {
-		b = appendVarint(b, wiretag)
-		b = appendVarint(b, uint64(len(v)))
-		b = append(b, v...)
-	}
-	return b, nil
-}
-func appendUTF8StringValue(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	var invalidUTF8 bool
-	v := *ptr.toString()
-	if !utf8.ValidString(v) {
-		invalidUTF8 = true
-	}
-	b = appendVarint(b, wiretag)
-	b = appendVarint(b, uint64(len(v)))
-	b = append(b, v...)
-	if invalidUTF8 {
-		return b, errInvalidUTF8
-	}
-	return b, nil
-}
-func appendUTF8StringValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	var invalidUTF8 bool
-	v := *ptr.toString()
-	if v == "" {
-		return b, nil
-	}
-	if !utf8.ValidString(v) {
-		invalidUTF8 = true
-	}
-	b = appendVarint(b, wiretag)
-	b = appendVarint(b, uint64(len(v)))
-	b = append(b, v...)
-	if invalidUTF8 {
-		return b, errInvalidUTF8
-	}
-	return b, nil
-}
-func appendUTF8StringPtr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	var invalidUTF8 bool
-	p := *ptr.toStringPtr()
-	if p == nil {
-		return b, nil
-	}
-	v := *p
-	if !utf8.ValidString(v) {
-		invalidUTF8 = true
-	}
-	b = appendVarint(b, wiretag)
-	b = appendVarint(b, uint64(len(v)))
-	b = append(b, v...)
-	if invalidUTF8 {
-		return b, errInvalidUTF8
-	}
-	return b, nil
-}
-func appendUTF8StringSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	var invalidUTF8 bool
-	s := *ptr.toStringSlice()
-	for _, v := range s {
-		if !utf8.ValidString(v) {
-			invalidUTF8 = true
-		}
-		b = appendVarint(b, wiretag)
-		b = appendVarint(b, uint64(len(v)))
-		b = append(b, v...)
-	}
-	if invalidUTF8 {
-		return b, errInvalidUTF8
-	}
-	return b, nil
-}
-func appendBytes(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	v := *ptr.toBytes()
-	if v == nil {
-		return b, nil
-	}
-	b = appendVarint(b, wiretag)
-	b = appendVarint(b, uint64(len(v)))
-	b = append(b, v...)
-	return b, nil
-}
-func appendBytes3(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	v := *ptr.toBytes()
-	if len(v) == 0 {
-		return b, nil
-	}
-	b = appendVarint(b, wiretag)
-	b = appendVarint(b, uint64(len(v)))
-	b = append(b, v...)
-	return b, nil
-}
-func appendBytesOneof(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	v := *ptr.toBytes()
-	b = appendVarint(b, wiretag)
-	b = appendVarint(b, uint64(len(v)))
-	b = append(b, v...)
-	return b, nil
-}
-func appendBytesSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
-	s := *ptr.toBytesSlice()
-	for _, v := range s {
-		b = appendVarint(b, wiretag)
-		b = appendVarint(b, uint64(len(v)))
-		b = append(b, v...)
-	}
-	return b, nil
-}
-
-// makeGroupMarshaler returns the sizer and marshaler for a group.
-// u is the marshal info of the underlying message.
-func makeGroupMarshaler(u *marshalInfo) (sizer, marshaler) {
-	return func(ptr pointer, tagsize int) int {
-			p := ptr.getPointer()
-			if p.isNil() {
-				return 0
-			}
-			return u.size(p) + 2*tagsize
-		},
-		func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {
-			p := ptr.getPointer()
-			if p.isNil() {
-				return b, nil
-			}
-			var err error
-			b = appendVarint(b, wiretag) // start group
-			b, err = u.marshal(b, p, deterministic)
-			b = appendVarint(b, wiretag+(WireEndGroup-WireStartGroup)) // end group
-			return b, err
-		}
-}
-
-// makeGroupSliceMarshaler returns the sizer and marshaler for a group slice.
-// u is the marshal info of the underlying message.
-func makeGroupSliceMarshaler(u *marshalInfo) (sizer, marshaler) {
-	return func(ptr pointer, tagsize int) int {
-			s := ptr.getPointerSlice()
-			n := 0
-			for _, v := range s {
-				if v.isNil() {
-					continue
-				}
-				n += u.size(v) + 2*tagsize
-			}
-			return n
-		},
-		func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {
-			s := ptr.getPointerSlice()
-			var err error
-			var nerr nonFatal
-			for _, v := range s {
-				if v.isNil() {
-					return b, errRepeatedHasNil
-				}
-				b = appendVarint(b, wiretag) // start group
-				b, err = u.marshal(b, v, deterministic)
-				b = appendVarint(b, wiretag+(WireEndGroup-WireStartGroup)) // end group
-				if !nerr.Merge(err) {
-					if err == ErrNil {
-						err = errRepeatedHasNil
-					}
-					return b, err
-				}
-			}
-			return b, nerr.E
-		}
-}
-
-// makeMessageMarshaler returns the sizer and marshaler for a message field.
-// u is the marshal info of the message.
-func makeMessageMarshaler(u *marshalInfo) (sizer, marshaler) {
-	return func(ptr pointer, tagsize int) int {
-			p := ptr.getPointer()
-			if p.isNil() {
-				return 0
-			}
-			siz := u.size(p)
-			return siz + SizeVarint(uint64(siz)) + tagsize
-		},
-		func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {
-			p := ptr.getPointer()
-			if p.isNil() {
-				return b, nil
-			}
-			b = appendVarint(b, wiretag)
-			siz := u.cachedsize(p)
-			b = appendVarint(b, uint64(siz))
-			return u.marshal(b, p, deterministic)
-		}
-}
-
-// makeMessageSliceMarshaler returns the sizer and marshaler for a message slice.
-// u is the marshal info of the message.
-func makeMessageSliceMarshaler(u *marshalInfo) (sizer, marshaler) {
-	return func(ptr pointer, tagsize int) int {
-			s := ptr.getPointerSlice()
-			n := 0
-			for _, v := range s {
-				if v.isNil() {
-					continue
-				}
-				siz := u.size(v)
-				n += siz + SizeVarint(uint64(siz)) + tagsize
-			}
-			return n
-		},
-		func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {
-			s := ptr.getPointerSlice()
-			var err error
-			var nerr nonFatal
-			for _, v := range s {
-				if v.isNil() {
-					return b, errRepeatedHasNil
-				}
-				b = appendVarint(b, wiretag)
-				siz := u.cachedsize(v)
-				b = appendVarint(b, uint64(siz))
-				b, err = u.marshal(b, v, deterministic)
-
-				if !nerr.Merge(err) {
-					if err == ErrNil {
-						err = errRepeatedHasNil
-					}
-					return b, err
-				}
-			}
-			return b, nerr.E
-		}
-}
-
-// makeMapMarshaler returns the sizer and marshaler for a map field.
-// f is the pointer to the reflect data structure of the field.
-func makeMapMarshaler(f *reflect.StructField) (sizer, marshaler) {
-	// figure out key and value type
-	t := f.Type
-	keyType := t.Key()
-	valType := t.Elem()
-	keyTags := strings.Split(f.Tag.Get("protobuf_key"), ",")
-	valTags := strings.Split(f.Tag.Get("protobuf_val"), ",")
-	keySizer, keyMarshaler := typeMarshaler(keyType, keyTags, false, false) // don't omit zero value in map
-	valSizer, valMarshaler := typeMarshaler(valType, valTags, false, false) // don't omit zero value in map
-	keyWireTag := 1<<3 | wiretype(keyTags[0])
-	valWireTag := 2<<3 | wiretype(valTags[0])
-
-	// We create an interface to get the addresses of the map key and value.
-	// If value is pointer-typed, the interface is a direct interface, the
-	// idata itself is the value. Otherwise, the idata is the pointer to the
-	// value.
-	// Key cannot be pointer-typed.
-	valIsPtr := valType.Kind() == reflect.Ptr
-
-	// If value is a message with nested maps, calling
-	// valSizer in marshal may be quadratic. We should use
-	// cached version in marshal (but not in size).
-	// If value is not message type, we don't have size cache,
-	// but it cannot be nested either. Just use valSizer.
-	valCachedSizer := valSizer
-	if valIsPtr && valType.Elem().Kind() == reflect.Struct {
-		u := getMarshalInfo(valType.Elem())
-		valCachedSizer = func(ptr pointer, tagsize int) int {
-			// Same as message sizer, but use cache.
-			p := ptr.getPointer()
-			if p.isNil() {
-				return 0
-			}
-			siz := u.cachedsize(p)
-			return siz + SizeVarint(uint64(siz)) + tagsize
-		}
-	}
-	return func(ptr pointer, tagsize int) int {
-			m := ptr.asPointerTo(t).Elem() // the map
-			n := 0
-			for _, k := range m.MapKeys() {
-				ki := k.Interface()
-				vi := m.MapIndex(k).Interface()
-				kaddr := toAddrPointer(&ki, false)             // pointer to key
-				vaddr := toAddrPointer(&vi, valIsPtr)          // pointer to value
-				siz := keySizer(kaddr, 1) + valSizer(vaddr, 1) // tag of key = 1 (size=1), tag of val = 2 (size=1)
-				n += siz + SizeVarint(uint64(siz)) + tagsize
-			}
-			return n
-		},
-		func(b []byte, ptr pointer, tag uint64, deterministic bool) ([]byte, error) {
-			m := ptr.asPointerTo(t).Elem() // the map
-			var err error
-			keys := m.MapKeys()
-			if len(keys) > 1 && deterministic {
-				sort.Sort(mapKeys(keys))
-			}
-
-			var nerr nonFatal
-			for _, k := range keys {
-				ki := k.Interface()
-				vi := m.MapIndex(k).Interface()
-				kaddr := toAddrPointer(&ki, false)    // pointer to key
-				vaddr := toAddrPointer(&vi, valIsPtr) // pointer to value
-				b = appendVarint(b, tag)
-				siz := keySizer(kaddr, 1) + valCachedSizer(vaddr, 1) // tag of key = 1 (size=1), tag of val = 2 (size=1)
-				b = appendVarint(b, uint64(siz))
-				b, err = keyMarshaler(b, kaddr, keyWireTag, deterministic)
-				if !nerr.Merge(err) {
-					return b, err
-				}
-				b, err = valMarshaler(b, vaddr, valWireTag, deterministic)
-				if err != ErrNil && !nerr.Merge(err) { // allow nil value in map
-					return b, err
-				}
-			}
-			return b, nerr.E
-		}
-}
-
-// makeOneOfMarshaler returns the sizer and marshaler for a oneof field.
-// fi is the marshal info of the field.
-// f is the pointer to the reflect data structure of the field.
-func makeOneOfMarshaler(fi *marshalFieldInfo, f *reflect.StructField) (sizer, marshaler) {
-	// Oneof field is an interface. We need to get the actual data type on the fly.
-	t := f.Type
-	return func(ptr pointer, _ int) int {
-			p := ptr.getInterfacePointer()
-			if p.isNil() {
-				return 0
-			}
-			v := ptr.asPointerTo(t).Elem().Elem().Elem() // *interface -> interface -> *struct -> struct
-			telem := v.Type()
-			e := fi.oneofElems[telem]
-			return e.sizer(p, e.tagsize)
-		},
-		func(b []byte, ptr pointer, _ uint64, deterministic bool) ([]byte, error) {
-			p := ptr.getInterfacePointer()
-			if p.isNil() {
-				return b, nil
-			}
-			v := ptr.asPointerTo(t).Elem().Elem().Elem() // *interface -> interface -> *struct -> struct
-			telem := v.Type()
-			if telem.Field(0).Type.Kind() == reflect.Ptr && p.getPointer().isNil() {
-				return b, errOneofHasNil
-			}
-			e := fi.oneofElems[telem]
-			return e.marshaler(b, p, e.wiretag, deterministic)
-		}
-}
-
-// sizeExtensions computes the size of encoded data for a XXX_InternalExtensions field.
-func (u *marshalInfo) sizeExtensions(ext *XXX_InternalExtensions) int {
-	m, mu := ext.extensionsRead()
-	if m == nil {
-		return 0
-	}
-	mu.Lock()
-
-	n := 0
-	for _, e := range m {
-		if e.value == nil || e.desc == nil {
-			// Extension is only in its encoded form.
-			n += len(e.enc)
-			continue
-		}
-
-		// We don't skip extensions that have an encoded form set,
-		// because the extension value may have been mutated after
-		// the last time this function was called.
-		ei := u.getExtElemInfo(e.desc)
-		v := e.value
-		p := toAddrPointer(&v, ei.isptr)
-		n += ei.sizer(p, ei.tagsize)
-	}
-	mu.Unlock()
-	return n
-}
-
-// appendExtensions marshals a XXX_InternalExtensions field to the end of byte slice b.
-func (u *marshalInfo) appendExtensions(b []byte, ext *XXX_InternalExtensions, deterministic bool) ([]byte, error) {
-	m, mu := ext.extensionsRead()
-	if m == nil {
-		return b, nil
-	}
-	mu.Lock()
-	defer mu.Unlock()
-
-	var err error
-	var nerr nonFatal
-
-	// Fast-path for common cases: zero or one extensions.
-	// Don't bother sorting the keys.
-	if len(m) <= 1 {
-		for _, e := range m {
-			if e.value == nil || e.desc == nil {
-				// Extension is only in its encoded form.
-				b = append(b, e.enc...)
-				continue
-			}
-
-			// We don't skip extensions that have an encoded form set,
-			// because the extension value may have been mutated after
-			// the last time this function was called.
-
-			ei := u.getExtElemInfo(e.desc)
-			v := e.value
-			p := toAddrPointer(&v, ei.isptr)
-			b, err = ei.marshaler(b, p, ei.wiretag, deterministic)
-			if !nerr.Merge(err) {
-				return b, err
-			}
-		}
-		return b, nerr.E
-	}
-
-	// Sort the keys to provide a deterministic encoding.
-	// Not sure this is required, but the old code does it.
-	keys := make([]int, 0, len(m))
-	for k := range m {
-		keys = append(keys, int(k))
-	}
-	sort.Ints(keys)
-
-	for _, k := range keys {
-		e := m[int32(k)]
-		if e.value == nil || e.desc == nil {
-			// Extension is only in its encoded form.
-			b = append(b, e.enc...)
-			continue
-		}
-
-		// We don't skip extensions that have an encoded form set,
-		// because the extension value may have been mutated after
-		// the last time this function was called.
-
-		ei := u.getExtElemInfo(e.desc)
-		v := e.value
-		p := toAddrPointer(&v, ei.isptr)
-		b, err = ei.marshaler(b, p, ei.wiretag, deterministic)
-		if !nerr.Merge(err) {
-			return b, err
-		}
-	}
-	return b, nerr.E
-}
-
-// message set format is:
-//   message MessageSet {
-//     repeated group Item = 1 {
-//       required int32 type_id = 2;
-//       required string message = 3;
-//     };
-//   }
-
-// sizeMessageSet computes the size of encoded data for a XXX_InternalExtensions field
-// in message set format (above).
-func (u *marshalInfo) sizeMessageSet(ext *XXX_InternalExtensions) int {
-	m, mu := ext.extensionsRead()
-	if m == nil {
-		return 0
-	}
-	mu.Lock()
-
-	n := 0
-	for id, e := range m {
-		n += 2                          // start group, end group. tag = 1 (size=1)
-		n += SizeVarint(uint64(id)) + 1 // type_id, tag = 2 (size=1)
-
-		if e.value == nil || e.desc == nil {
-			// Extension is only in its encoded form.
-			msgWithLen := skipVarint(e.enc) // skip old tag, but leave the length varint
-			siz := len(msgWithLen)
-			n += siz + 1 // message, tag = 3 (size=1)
-			continue
-		}
-
-		// We don't skip extensions that have an encoded form set,
-		// because the extension value may have been mutated after
-		// the last time this function was called.
-
-		ei := u.getExtElemInfo(e.desc)
-		v := e.value
-		p := toAddrPointer(&v, ei.isptr)
-		n += ei.sizer(p, 1) // message, tag = 3 (size=1)
-	}
-	mu.Unlock()
-	return n
-}
-
-// appendMessageSet marshals a XXX_InternalExtensions field in message set format (above)
-// to the end of byte slice b.
-func (u *marshalInfo) appendMessageSet(b []byte, ext *XXX_InternalExtensions, deterministic bool) ([]byte, error) {
-	m, mu := ext.extensionsRead()
-	if m == nil {
-		return b, nil
-	}
-	mu.Lock()
-	defer mu.Unlock()
-
-	var err error
-	var nerr nonFatal
-
-	// Fast-path for common cases: zero or one extensions.
-	// Don't bother sorting the keys.
-	if len(m) <= 1 {
-		for id, e := range m {
-			b = append(b, 1<<3|WireStartGroup)
-			b = append(b, 2<<3|WireVarint)
-			b = appendVarint(b, uint64(id))
-
-			if e.value == nil || e.desc == nil {
-				// Extension is only in its encoded form.
-				msgWithLen := skipVarint(e.enc) // skip old tag, but leave the length varint
-				b = append(b, 3<<3|WireBytes)
-				b = append(b, msgWithLen...)
-				b = append(b, 1<<3|WireEndGroup)
-				continue
-			}
-
-			// We don't skip extensions that have an encoded form set,
-			// because the extension value may have been mutated after
-			// the last time this function was called.
-
-			ei := u.getExtElemInfo(e.desc)
-			v := e.value
-			p := toAddrPointer(&v, ei.isptr)
-			b, err = ei.marshaler(b, p, 3<<3|WireBytes, deterministic)
-			if !nerr.Merge(err) {
-				return b, err
-			}
-			b = append(b, 1<<3|WireEndGroup)
-		}
-		return b, nerr.E
-	}
-
-	// Sort the keys to provide a deterministic encoding.
-	keys := make([]int, 0, len(m))
-	for k := range m {
-		keys = append(keys, int(k))
-	}
-	sort.Ints(keys)
-
-	for _, id := range keys {
-		e := m[int32(id)]
-		b = append(b, 1<<3|WireStartGroup)
-		b = append(b, 2<<3|WireVarint)
-		b = appendVarint(b, uint64(id))
-
-		if e.value == nil || e.desc == nil {
-			// Extension is only in its encoded form.
-			msgWithLen := skipVarint(e.enc) // skip old tag, but leave the length varint
-			b = append(b, 3<<3|WireBytes)
-			b = append(b, msgWithLen...)
-			b = append(b, 1<<3|WireEndGroup)
-			continue
-		}
-
-		// We don't skip extensions that have an encoded form set,
-		// because the extension value may have been mutated after
-		// the last time this function was called.
-
-		ei := u.getExtElemInfo(e.desc)
-		v := e.value
-		p := toAddrPointer(&v, ei.isptr)
-		b, err = ei.marshaler(b, p, 3<<3|WireBytes, deterministic)
-		b = append(b, 1<<3|WireEndGroup)
-		if !nerr.Merge(err) {
-			return b, err
-		}
-	}
-	return b, nerr.E
-}
-
-// sizeV1Extensions computes the size of encoded data for a V1-API extension field.
-func (u *marshalInfo) sizeV1Extensions(m map[int32]Extension) int {
-	if m == nil {
-		return 0
-	}
-
-	n := 0
-	for _, e := range m {
-		if e.value == nil || e.desc == nil {
-			// Extension is only in its encoded form.
-			n += len(e.enc)
-			continue
-		}
-
-		// We don't skip extensions that have an encoded form set,
-		// because the extension value may have been mutated after
-		// the last time this function was called.
-
-		ei := u.getExtElemInfo(e.desc)
-		v := e.value
-		p := toAddrPointer(&v, ei.isptr)
-		n += ei.sizer(p, ei.tagsize)
-	}
-	return n
-}
-
-// appendV1Extensions marshals a V1-API extension field to the end of byte slice b.
-func (u *marshalInfo) appendV1Extensions(b []byte, m map[int32]Extension, deterministic bool) ([]byte, error) {
-	if m == nil {
-		return b, nil
-	}
-
-	// Sort the keys to provide a deterministic encoding.
-	keys := make([]int, 0, len(m))
-	for k := range m {
-		keys = append(keys, int(k))
-	}
-	sort.Ints(keys)
-
-	var err error
-	var nerr nonFatal
-	for _, k := range keys {
-		e := m[int32(k)]
-		if e.value == nil || e.desc == nil {
-			// Extension is only in its encoded form.
-			b = append(b, e.enc...)
-			continue
-		}
-
-		// We don't skip extensions that have an encoded form set,
-		// because the extension value may have been mutated after
-		// the last time this function was called.
-
-		ei := u.getExtElemInfo(e.desc)
-		v := e.value
-		p := toAddrPointer(&v, ei.isptr)
-		b, err = ei.marshaler(b, p, ei.wiretag, deterministic)
-		if !nerr.Merge(err) {
-			return b, err
-		}
-	}
-	return b, nerr.E
-}
-
-// newMarshaler is the interface representing objects that can marshal themselves.
-//
-// This exists to support protoc-gen-go generated messages.
-// The proto package will stop type-asserting to this interface in the future.
-//
-// DO NOT DEPEND ON THIS.
-type newMarshaler interface {
-	XXX_Size() int
-	XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
-}
-
-// Size returns the encoded size of a protocol buffer message.
-// This is the main entry point.
-func Size(pb Message) int {
-	if m, ok := pb.(newMarshaler); ok {
-		return m.XXX_Size()
-	}
-	if m, ok := pb.(Marshaler); ok {
-		// If the message can marshal itself, let it do it, for compatibility.
-		// NOTE: This is not efficient.
-		b, _ := m.Marshal()
-		return len(b)
-	}
-	// in case somehow we didn't generate the wrapper
-	if pb == nil {
-		return 0
-	}
-	var info InternalMessageInfo
-	return info.Size(pb)
-}
-
-// Marshal takes a protocol buffer message
-// and encodes it into the wire format, returning the data.
-// This is the main entry point.
-func Marshal(pb Message) ([]byte, error) {
-	if m, ok := pb.(newMarshaler); ok {
-		siz := m.XXX_Size()
-		b := make([]byte, 0, siz)
-		return m.XXX_Marshal(b, false)
-	}
-	if m, ok := pb.(Marshaler); ok {
-		// If the message can marshal itself, let it do it, for compatibility.
-		// NOTE: This is not efficient.
-		return m.Marshal()
-	}
-	// in case somehow we didn't generate the wrapper
-	if pb == nil {
-		return nil, ErrNil
-	}
-	var info InternalMessageInfo
-	siz := info.Size(pb)
-	b := make([]byte, 0, siz)
-	return info.Marshal(b, pb, false)
-}
-
-// Marshal takes a protocol buffer message
-// and encodes it into the wire format, writing the result to the
-// Buffer.
-// This is an alternative entry point. It is not necessary to use
-// a Buffer for most applications.
-func (p *Buffer) Marshal(pb Message) error {
-	var err error
-	if m, ok := pb.(newMarshaler); ok {
-		siz := m.XXX_Size()
-		p.grow(siz) // make sure buf has enough capacity
-		p.buf, err = m.XXX_Marshal(p.buf, p.deterministic)
-		return err
-	}
-	if m, ok := pb.(Marshaler); ok {
-		// If the message can marshal itself, let it do it, for compatibility.
-		// NOTE: This is not efficient.
-		b, err := m.Marshal()
-		p.buf = append(p.buf, b...)
-		return err
-	}
-	// in case somehow we didn't generate the wrapper
-	if pb == nil {
-		return ErrNil
-	}
-	var info InternalMessageInfo
-	siz := info.Size(pb)
-	p.grow(siz) // make sure buf has enough capacity
-	p.buf, err = info.Marshal(p.buf, pb, p.deterministic)
-	return err
-}
-
-// grow grows the buffer's capacity, if necessary, to guarantee space for
-// another n bytes. After grow(n), at least n bytes can be written to the
-// buffer without another allocation.
-func (p *Buffer) grow(n int) {
-	need := len(p.buf) + n
-	if need <= cap(p.buf) {
-		return
-	}
-	newCap := len(p.buf) * 2
-	if newCap < need {
-		newCap = need
-	}
-	p.buf = append(make([]byte, 0, newCap), p.buf...)
-}

+ 0 - 654
vendor/github.com/golang/protobuf/proto/table_merge.go

@@ -1,654 +0,0 @@
-// Go support for Protocol Buffers - Google's data interchange format
-//
-// Copyright 2016 The Go Authors.  All rights reserved.
-// https://github.com/golang/protobuf
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-package proto
-
-import (
-	"fmt"
-	"reflect"
-	"strings"
-	"sync"
-	"sync/atomic"
-)
-
-// Merge merges the src message into dst.
-// This assumes that dst and src of the same type and are non-nil.
-func (a *InternalMessageInfo) Merge(dst, src Message) {
-	mi := atomicLoadMergeInfo(&a.merge)
-	if mi == nil {
-		mi = getMergeInfo(reflect.TypeOf(dst).Elem())
-		atomicStoreMergeInfo(&a.merge, mi)
-	}
-	mi.merge(toPointer(&dst), toPointer(&src))
-}
-
-type mergeInfo struct {
-	typ reflect.Type
-
-	initialized int32 // 0: only typ is valid, 1: everything is valid
-	lock        sync.Mutex
-
-	fields       []mergeFieldInfo
-	unrecognized field // Offset of XXX_unrecognized
-}
-
-type mergeFieldInfo struct {
-	field field // Offset of field, guaranteed to be valid
-
-	// isPointer reports whether the value in the field is a pointer.
-	// This is true for the following situations:
-	//	* Pointer to struct
-	//	* Pointer to basic type (proto2 only)
-	//	* Slice (first value in slice header is a pointer)
-	//	* String (first value in string header is a pointer)
-	isPointer bool
-
-	// basicWidth reports the width of the field assuming that it is directly
-	// embedded in the struct (as is the case for basic types in proto3).
-	// The possible values are:
-	// 	0: invalid
-	//	1: bool
-	//	4: int32, uint32, float32
-	//	8: int64, uint64, float64
-	basicWidth int
-
-	// Where dst and src are pointers to the types being merged.
-	merge func(dst, src pointer)
-}
-
-var (
-	mergeInfoMap  = map[reflect.Type]*mergeInfo{}
-	mergeInfoLock sync.Mutex
-)
-
-func getMergeInfo(t reflect.Type) *mergeInfo {
-	mergeInfoLock.Lock()
-	defer mergeInfoLock.Unlock()
-	mi := mergeInfoMap[t]
-	if mi == nil {
-		mi = &mergeInfo{typ: t}
-		mergeInfoMap[t] = mi
-	}
-	return mi
-}
-
-// merge merges src into dst assuming they are both of type *mi.typ.
-func (mi *mergeInfo) merge(dst, src pointer) {
-	if dst.isNil() {
-		panic("proto: nil destination")
-	}
-	if src.isNil() {
-		return // Nothing to do.
-	}
-
-	if atomic.LoadInt32(&mi.initialized) == 0 {
-		mi.computeMergeInfo()
-	}
-
-	for _, fi := range mi.fields {
-		sfp := src.offset(fi.field)
-
-		// As an optimization, we can avoid the merge function call cost
-		// if we know for sure that the source will have no effect
-		// by checking if it is the zero value.
-		if unsafeAllowed {
-			if fi.isPointer && sfp.getPointer().isNil() { // Could be slice or string
-				continue
-			}
-			if fi.basicWidth > 0 {
-				switch {
-				case fi.basicWidth == 1 && !*sfp.toBool():
-					continue
-				case fi.basicWidth == 4 && *sfp.toUint32() == 0:
-					continue
-				case fi.basicWidth == 8 && *sfp.toUint64() == 0:
-					continue
-				}
-			}
-		}
-
-		dfp := dst.offset(fi.field)
-		fi.merge(dfp, sfp)
-	}
-
-	// TODO: Make this faster?
-	out := dst.asPointerTo(mi.typ).Elem()
-	in := src.asPointerTo(mi.typ).Elem()
-	if emIn, err := extendable(in.Addr().Interface()); err == nil {
-		emOut, _ := extendable(out.Addr().Interface())
-		mIn, muIn := emIn.extensionsRead()
-		if mIn != nil {
-			mOut := emOut.extensionsWrite()
-			muIn.Lock()
-			mergeExtension(mOut, mIn)
-			muIn.Unlock()
-		}
-	}
-
-	if mi.unrecognized.IsValid() {
-		if b := *src.offset(mi.unrecognized).toBytes(); len(b) > 0 {
-			*dst.offset(mi.unrecognized).toBytes() = append([]byte(nil), b...)
-		}
-	}
-}
-
-func (mi *mergeInfo) computeMergeInfo() {
-	mi.lock.Lock()
-	defer mi.lock.Unlock()
-	if mi.initialized != 0 {
-		return
-	}
-	t := mi.typ
-	n := t.NumField()
-
-	props := GetProperties(t)
-	for i := 0; i < n; i++ {
-		f := t.Field(i)
-		if strings.HasPrefix(f.Name, "XXX_") {
-			continue
-		}
-
-		mfi := mergeFieldInfo{field: toField(&f)}
-		tf := f.Type
-
-		// As an optimization, we can avoid the merge function call cost
-		// if we know for sure that the source will have no effect
-		// by checking if it is the zero value.
-		if unsafeAllowed {
-			switch tf.Kind() {
-			case reflect.Ptr, reflect.Slice, reflect.String:
-				// As a special case, we assume slices and strings are pointers
-				// since we know that the first field in the SliceSlice or
-				// StringHeader is a data pointer.
-				mfi.isPointer = true
-			case reflect.Bool:
-				mfi.basicWidth = 1
-			case reflect.Int32, reflect.Uint32, reflect.Float32:
-				mfi.basicWidth = 4
-			case reflect.Int64, reflect.Uint64, reflect.Float64:
-				mfi.basicWidth = 8
-			}
-		}
-
-		// Unwrap tf to get at its most basic type.
-		var isPointer, isSlice bool
-		if tf.Kind() == reflect.Slice && tf.Elem().Kind() != reflect.Uint8 {
-			isSlice = true
-			tf = tf.Elem()
-		}
-		if tf.Kind() == reflect.Ptr {
-			isPointer = true
-			tf = tf.Elem()
-		}
-		if isPointer && isSlice && tf.Kind() != reflect.Struct {
-			panic("both pointer and slice for basic type in " + tf.Name())
-		}
-
-		switch tf.Kind() {
-		case reflect.Int32:
-			switch {
-			case isSlice: // E.g., []int32
-				mfi.merge = func(dst, src pointer) {
-					// NOTE: toInt32Slice is not defined (see pointer_reflect.go).
-					/*
-						sfsp := src.toInt32Slice()
-						if *sfsp != nil {
-							dfsp := dst.toInt32Slice()
-							*dfsp = append(*dfsp, *sfsp...)
-							if *dfsp == nil {
-								*dfsp = []int64{}
-							}
-						}
-					*/
-					sfs := src.getInt32Slice()
-					if sfs != nil {
-						dfs := dst.getInt32Slice()
-						dfs = append(dfs, sfs...)
-						if dfs == nil {
-							dfs = []int32{}
-						}
-						dst.setInt32Slice(dfs)
-					}
-				}
-			case isPointer: // E.g., *int32
-				mfi.merge = func(dst, src pointer) {
-					// NOTE: toInt32Ptr is not defined (see pointer_reflect.go).
-					/*
-						sfpp := src.toInt32Ptr()
-						if *sfpp != nil {
-							dfpp := dst.toInt32Ptr()
-							if *dfpp == nil {
-								*dfpp = Int32(**sfpp)
-							} else {
-								**dfpp = **sfpp
-							}
-						}
-					*/
-					sfp := src.getInt32Ptr()
-					if sfp != nil {
-						dfp := dst.getInt32Ptr()
-						if dfp == nil {
-							dst.setInt32Ptr(*sfp)
-						} else {
-							*dfp = *sfp
-						}
-					}
-				}
-			default: // E.g., int32
-				mfi.merge = func(dst, src pointer) {
-					if v := *src.toInt32(); v != 0 {
-						*dst.toInt32() = v
-					}
-				}
-			}
-		case reflect.Int64:
-			switch {
-			case isSlice: // E.g., []int64
-				mfi.merge = func(dst, src pointer) {
-					sfsp := src.toInt64Slice()
-					if *sfsp != nil {
-						dfsp := dst.toInt64Slice()
-						*dfsp = append(*dfsp, *sfsp...)
-						if *dfsp == nil {
-							*dfsp = []int64{}
-						}
-					}
-				}
-			case isPointer: // E.g., *int64
-				mfi.merge = func(dst, src pointer) {
-					sfpp := src.toInt64Ptr()
-					if *sfpp != nil {
-						dfpp := dst.toInt64Ptr()
-						if *dfpp == nil {
-							*dfpp = Int64(**sfpp)
-						} else {
-							**dfpp = **sfpp
-						}
-					}
-				}
-			default: // E.g., int64
-				mfi.merge = func(dst, src pointer) {
-					if v := *src.toInt64(); v != 0 {
-						*dst.toInt64() = v
-					}
-				}
-			}
-		case reflect.Uint32:
-			switch {
-			case isSlice: // E.g., []uint32
-				mfi.merge = func(dst, src pointer) {
-					sfsp := src.toUint32Slice()
-					if *sfsp != nil {
-						dfsp := dst.toUint32Slice()
-						*dfsp = append(*dfsp, *sfsp...)
-						if *dfsp == nil {
-							*dfsp = []uint32{}
-						}
-					}
-				}
-			case isPointer: // E.g., *uint32
-				mfi.merge = func(dst, src pointer) {
-					sfpp := src.toUint32Ptr()
-					if *sfpp != nil {
-						dfpp := dst.toUint32Ptr()
-						if *dfpp == nil {
-							*dfpp = Uint32(**sfpp)
-						} else {
-							**dfpp = **sfpp
-						}
-					}
-				}
-			default: // E.g., uint32
-				mfi.merge = func(dst, src pointer) {
-					if v := *src.toUint32(); v != 0 {
-						*dst.toUint32() = v
-					}
-				}
-			}
-		case reflect.Uint64:
-			switch {
-			case isSlice: // E.g., []uint64
-				mfi.merge = func(dst, src pointer) {
-					sfsp := src.toUint64Slice()
-					if *sfsp != nil {
-						dfsp := dst.toUint64Slice()
-						*dfsp = append(*dfsp, *sfsp...)
-						if *dfsp == nil {
-							*dfsp = []uint64{}
-						}
-					}
-				}
-			case isPointer: // E.g., *uint64
-				mfi.merge = func(dst, src pointer) {
-					sfpp := src.toUint64Ptr()
-					if *sfpp != nil {
-						dfpp := dst.toUint64Ptr()
-						if *dfpp == nil {
-							*dfpp = Uint64(**sfpp)
-						} else {
-							**dfpp = **sfpp
-						}
-					}
-				}
-			default: // E.g., uint64
-				mfi.merge = func(dst, src pointer) {
-					if v := *src.toUint64(); v != 0 {
-						*dst.toUint64() = v
-					}
-				}
-			}
-		case reflect.Float32:
-			switch {
-			case isSlice: // E.g., []float32
-				mfi.merge = func(dst, src pointer) {
-					sfsp := src.toFloat32Slice()
-					if *sfsp != nil {
-						dfsp := dst.toFloat32Slice()
-						*dfsp = append(*dfsp, *sfsp...)
-						if *dfsp == nil {
-							*dfsp = []float32{}
-						}
-					}
-				}
-			case isPointer: // E.g., *float32
-				mfi.merge = func(dst, src pointer) {
-					sfpp := src.toFloat32Ptr()
-					if *sfpp != nil {
-						dfpp := dst.toFloat32Ptr()
-						if *dfpp == nil {
-							*dfpp = Float32(**sfpp)
-						} else {
-							**dfpp = **sfpp
-						}
-					}
-				}
-			default: // E.g., float32
-				mfi.merge = func(dst, src pointer) {
-					if v := *src.toFloat32(); v != 0 {
-						*dst.toFloat32() = v
-					}
-				}
-			}
-		case reflect.Float64:
-			switch {
-			case isSlice: // E.g., []float64
-				mfi.merge = func(dst, src pointer) {
-					sfsp := src.toFloat64Slice()
-					if *sfsp != nil {
-						dfsp := dst.toFloat64Slice()
-						*dfsp = append(*dfsp, *sfsp...)
-						if *dfsp == nil {
-							*dfsp = []float64{}
-						}
-					}
-				}
-			case isPointer: // E.g., *float64
-				mfi.merge = func(dst, src pointer) {
-					sfpp := src.toFloat64Ptr()
-					if *sfpp != nil {
-						dfpp := dst.toFloat64Ptr()
-						if *dfpp == nil {
-							*dfpp = Float64(**sfpp)
-						} else {
-							**dfpp = **sfpp
-						}
-					}
-				}
-			default: // E.g., float64
-				mfi.merge = func(dst, src pointer) {
-					if v := *src.toFloat64(); v != 0 {
-						*dst.toFloat64() = v
-					}
-				}
-			}
-		case reflect.Bool:
-			switch {
-			case isSlice: // E.g., []bool
-				mfi.merge = func(dst, src pointer) {
-					sfsp := src.toBoolSlice()
-					if *sfsp != nil {
-						dfsp := dst.toBoolSlice()
-						*dfsp = append(*dfsp, *sfsp...)
-						if *dfsp == nil {
-							*dfsp = []bool{}
-						}
-					}
-				}
-			case isPointer: // E.g., *bool
-				mfi.merge = func(dst, src pointer) {
-					sfpp := src.toBoolPtr()
-					if *sfpp != nil {
-						dfpp := dst.toBoolPtr()
-						if *dfpp == nil {
-							*dfpp = Bool(**sfpp)
-						} else {
-							**dfpp = **sfpp
-						}
-					}
-				}
-			default: // E.g., bool
-				mfi.merge = func(dst, src pointer) {
-					if v := *src.toBool(); v {
-						*dst.toBool() = v
-					}
-				}
-			}
-		case reflect.String:
-			switch {
-			case isSlice: // E.g., []string
-				mfi.merge = func(dst, src pointer) {
-					sfsp := src.toStringSlice()
-					if *sfsp != nil {
-						dfsp := dst.toStringSlice()
-						*dfsp = append(*dfsp, *sfsp...)
-						if *dfsp == nil {
-							*dfsp = []string{}
-						}
-					}
-				}
-			case isPointer: // E.g., *string
-				mfi.merge = func(dst, src pointer) {
-					sfpp := src.toStringPtr()
-					if *sfpp != nil {
-						dfpp := dst.toStringPtr()
-						if *dfpp == nil {
-							*dfpp = String(**sfpp)
-						} else {
-							**dfpp = **sfpp
-						}
-					}
-				}
-			default: // E.g., string
-				mfi.merge = func(dst, src pointer) {
-					if v := *src.toString(); v != "" {
-						*dst.toString() = v
-					}
-				}
-			}
-		case reflect.Slice:
-			isProto3 := props.Prop[i].proto3
-			switch {
-			case isPointer:
-				panic("bad pointer in byte slice case in " + tf.Name())
-			case tf.Elem().Kind() != reflect.Uint8:
-				panic("bad element kind in byte slice case in " + tf.Name())
-			case isSlice: // E.g., [][]byte
-				mfi.merge = func(dst, src pointer) {
-					sbsp := src.toBytesSlice()
-					if *sbsp != nil {
-						dbsp := dst.toBytesSlice()
-						for _, sb := range *sbsp {
-							if sb == nil {
-								*dbsp = append(*dbsp, nil)
-							} else {
-								*dbsp = append(*dbsp, append([]byte{}, sb...))
-							}
-						}
-						if *dbsp == nil {
-							*dbsp = [][]byte{}
-						}
-					}
-				}
-			default: // E.g., []byte
-				mfi.merge = func(dst, src pointer) {
-					sbp := src.toBytes()
-					if *sbp != nil {
-						dbp := dst.toBytes()
-						if !isProto3 || len(*sbp) > 0 {
-							*dbp = append([]byte{}, *sbp...)
-						}
-					}
-				}
-			}
-		case reflect.Struct:
-			switch {
-			case !isPointer:
-				panic(fmt.Sprintf("message field %s without pointer", tf))
-			case isSlice: // E.g., []*pb.T
-				mi := getMergeInfo(tf)
-				mfi.merge = func(dst, src pointer) {
-					sps := src.getPointerSlice()
-					if sps != nil {
-						dps := dst.getPointerSlice()
-						for _, sp := range sps {
-							var dp pointer
-							if !sp.isNil() {
-								dp = valToPointer(reflect.New(tf))
-								mi.merge(dp, sp)
-							}
-							dps = append(dps, dp)
-						}
-						if dps == nil {
-							dps = []pointer{}
-						}
-						dst.setPointerSlice(dps)
-					}
-				}
-			default: // E.g., *pb.T
-				mi := getMergeInfo(tf)
-				mfi.merge = func(dst, src pointer) {
-					sp := src.getPointer()
-					if !sp.isNil() {
-						dp := dst.getPointer()
-						if dp.isNil() {
-							dp = valToPointer(reflect.New(tf))
-							dst.setPointer(dp)
-						}
-						mi.merge(dp, sp)
-					}
-				}
-			}
-		case reflect.Map:
-			switch {
-			case isPointer || isSlice:
-				panic("bad pointer or slice in map case in " + tf.Name())
-			default: // E.g., map[K]V
-				mfi.merge = func(dst, src pointer) {
-					sm := src.asPointerTo(tf).Elem()
-					if sm.Len() == 0 {
-						return
-					}
-					dm := dst.asPointerTo(tf).Elem()
-					if dm.IsNil() {
-						dm.Set(reflect.MakeMap(tf))
-					}
-
-					switch tf.Elem().Kind() {
-					case reflect.Ptr: // Proto struct (e.g., *T)
-						for _, key := range sm.MapKeys() {
-							val := sm.MapIndex(key)
-							val = reflect.ValueOf(Clone(val.Interface().(Message)))
-							dm.SetMapIndex(key, val)
-						}
-					case reflect.Slice: // E.g. Bytes type (e.g., []byte)
-						for _, key := range sm.MapKeys() {
-							val := sm.MapIndex(key)
-							val = reflect.ValueOf(append([]byte{}, val.Bytes()...))
-							dm.SetMapIndex(key, val)
-						}
-					default: // Basic type (e.g., string)
-						for _, key := range sm.MapKeys() {
-							val := sm.MapIndex(key)
-							dm.SetMapIndex(key, val)
-						}
-					}
-				}
-			}
-		case reflect.Interface:
-			// Must be oneof field.
-			switch {
-			case isPointer || isSlice:
-				panic("bad pointer or slice in interface case in " + tf.Name())
-			default: // E.g., interface{}
-				// TODO: Make this faster?
-				mfi.merge = func(dst, src pointer) {
-					su := src.asPointerTo(tf).Elem()
-					if !su.IsNil() {
-						du := dst.asPointerTo(tf).Elem()
-						typ := su.Elem().Type()
-						if du.IsNil() || du.Elem().Type() != typ {
-							du.Set(reflect.New(typ.Elem())) // Initialize interface if empty
-						}
-						sv := su.Elem().Elem().Field(0)
-						if sv.Kind() == reflect.Ptr && sv.IsNil() {
-							return
-						}
-						dv := du.Elem().Elem().Field(0)
-						if dv.Kind() == reflect.Ptr && dv.IsNil() {
-							dv.Set(reflect.New(sv.Type().Elem())) // Initialize proto message if empty
-						}
-						switch sv.Type().Kind() {
-						case reflect.Ptr: // Proto struct (e.g., *T)
-							Merge(dv.Interface().(Message), sv.Interface().(Message))
-						case reflect.Slice: // E.g. Bytes type (e.g., []byte)
-							dv.Set(reflect.ValueOf(append([]byte{}, sv.Bytes()...)))
-						default: // Basic type (e.g., string)
-							dv.Set(sv)
-						}
-					}
-				}
-			}
-		default:
-			panic(fmt.Sprintf("merger not found for type:%s", tf))
-		}
-		mi.fields = append(mi.fields, mfi)
-	}
-
-	mi.unrecognized = invalidField
-	if f, ok := t.FieldByName("XXX_unrecognized"); ok {
-		if f.Type != reflect.TypeOf([]byte{}) {
-			panic("expected XXX_unrecognized to be of type []byte")
-		}
-		mi.unrecognized = toField(&f)
-	}
-
-	atomic.StoreInt32(&mi.initialized, 1)
-}

+ 0 - 2051
vendor/github.com/golang/protobuf/proto/table_unmarshal.go

@@ -1,2051 +0,0 @@
-// Go support for Protocol Buffers - Google's data interchange format
-//
-// Copyright 2016 The Go Authors.  All rights reserved.
-// https://github.com/golang/protobuf
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-package proto
-
-import (
-	"errors"
-	"fmt"
-	"io"
-	"math"
-	"reflect"
-	"strconv"
-	"strings"
-	"sync"
-	"sync/atomic"
-	"unicode/utf8"
-)
-
-// Unmarshal is the entry point from the generated .pb.go files.
-// This function is not intended to be used by non-generated code.
-// This function is not subject to any compatibility guarantee.
-// msg contains a pointer to a protocol buffer struct.
-// b is the data to be unmarshaled into the protocol buffer.
-// a is a pointer to a place to store cached unmarshal information.
-func (a *InternalMessageInfo) Unmarshal(msg Message, b []byte) error {
-	// Load the unmarshal information for this message type.
-	// The atomic load ensures memory consistency.
-	u := atomicLoadUnmarshalInfo(&a.unmarshal)
-	if u == nil {
-		// Slow path: find unmarshal info for msg, update a with it.
-		u = getUnmarshalInfo(reflect.TypeOf(msg).Elem())
-		atomicStoreUnmarshalInfo(&a.unmarshal, u)
-	}
-	// Then do the unmarshaling.
-	err := u.unmarshal(toPointer(&msg), b)
-	return err
-}
-
-type unmarshalInfo struct {
-	typ reflect.Type // type of the protobuf struct
-
-	// 0 = only typ field is initialized
-	// 1 = completely initialized
-	initialized     int32
-	lock            sync.Mutex                    // prevents double initialization
-	dense           []unmarshalFieldInfo          // fields indexed by tag #
-	sparse          map[uint64]unmarshalFieldInfo // fields indexed by tag #
-	reqFields       []string                      // names of required fields
-	reqMask         uint64                        // 1<<len(reqFields)-1
-	unrecognized    field                         // offset of []byte to put unrecognized data (or invalidField if we should throw it away)
-	extensions      field                         // offset of extensions field (of type proto.XXX_InternalExtensions), or invalidField if it does not exist
-	oldExtensions   field                         // offset of old-form extensions field (of type map[int]Extension)
-	extensionRanges []ExtensionRange              // if non-nil, implies extensions field is valid
-	isMessageSet    bool                          // if true, implies extensions field is valid
-}
-
-// An unmarshaler takes a stream of bytes and a pointer to a field of a message.
-// It decodes the field, stores it at f, and returns the unused bytes.
-// w is the wire encoding.
-// b is the data after the tag and wire encoding have been read.
-type unmarshaler func(b []byte, f pointer, w int) ([]byte, error)
-
-type unmarshalFieldInfo struct {
-	// location of the field in the proto message structure.
-	field field
-
-	// function to unmarshal the data for the field.
-	unmarshal unmarshaler
-
-	// if a required field, contains a single set bit at this field's index in the required field list.
-	reqMask uint64
-
-	name string // name of the field, for error reporting
-}
-
-var (
-	unmarshalInfoMap  = map[reflect.Type]*unmarshalInfo{}
-	unmarshalInfoLock sync.Mutex
-)
-
-// getUnmarshalInfo returns the data structure which can be
-// subsequently used to unmarshal a message of the given type.
-// t is the type of the message (note: not pointer to message).
-func getUnmarshalInfo(t reflect.Type) *unmarshalInfo {
-	// It would be correct to return a new unmarshalInfo
-	// unconditionally. We would end up allocating one
-	// per occurrence of that type as a message or submessage.
-	// We use a cache here just to reduce memory usage.
-	unmarshalInfoLock.Lock()
-	defer unmarshalInfoLock.Unlock()
-	u := unmarshalInfoMap[t]
-	if u == nil {
-		u = &unmarshalInfo{typ: t}
-		// Note: we just set the type here. The rest of the fields
-		// will be initialized on first use.
-		unmarshalInfoMap[t] = u
-	}
-	return u
-}
-
-// unmarshal does the main work of unmarshaling a message.
-// u provides type information used to unmarshal the message.
-// m is a pointer to a protocol buffer message.
-// b is a byte stream to unmarshal into m.
-// This is top routine used when recursively unmarshaling submessages.
-func (u *unmarshalInfo) unmarshal(m pointer, b []byte) error {
-	if atomic.LoadInt32(&u.initialized) == 0 {
-		u.computeUnmarshalInfo()
-	}
-	if u.isMessageSet {
-		return UnmarshalMessageSet(b, m.offset(u.extensions).toExtensions())
-	}
-	var reqMask uint64 // bitmask of required fields we've seen.
-	var errLater error
-	for len(b) > 0 {
-		// Read tag and wire type.
-		// Special case 1 and 2 byte varints.
-		var x uint64
-		if b[0] < 128 {
-			x = uint64(b[0])
-			b = b[1:]
-		} else if len(b) >= 2 && b[1] < 128 {
-			x = uint64(b[0]&0x7f) + uint64(b[1])<<7
-			b = b[2:]
-		} else {
-			var n int
-			x, n = decodeVarint(b)
-			if n == 0 {
-				return io.ErrUnexpectedEOF
-			}
-			b = b[n:]
-		}
-		tag := x >> 3
-		wire := int(x) & 7
-
-		// Dispatch on the tag to one of the unmarshal* functions below.
-		var f unmarshalFieldInfo
-		if tag < uint64(len(u.dense)) {
-			f = u.dense[tag]
-		} else {
-			f = u.sparse[tag]
-		}
-		if fn := f.unmarshal; fn != nil {
-			var err error
-			b, err = fn(b, m.offset(f.field), wire)
-			if err == nil {
-				reqMask |= f.reqMask
-				continue
-			}
-			if r, ok := err.(*RequiredNotSetError); ok {
-				// Remember this error, but keep parsing. We need to produce
-				// a full parse even if a required field is missing.
-				if errLater == nil {
-					errLater = r
-				}
-				reqMask |= f.reqMask
-				continue
-			}
-			if err != errInternalBadWireType {
-				if err == errInvalidUTF8 {
-					if errLater == nil {
-						fullName := revProtoTypes[reflect.PtrTo(u.typ)] + "." + f.name
-						errLater = &invalidUTF8Error{fullName}
-					}
-					continue
-				}
-				return err
-			}
-			// Fragments with bad wire type are treated as unknown fields.
-		}
-
-		// Unknown tag.
-		if !u.unrecognized.IsValid() {
-			// Don't keep unrecognized data; just skip it.
-			var err error
-			b, err = skipField(b, wire)
-			if err != nil {
-				return err
-			}
-			continue
-		}
-		// Keep unrecognized data around.
-		// maybe in extensions, maybe in the unrecognized field.
-		z := m.offset(u.unrecognized).toBytes()
-		var emap map[int32]Extension
-		var e Extension
-		for _, r := range u.extensionRanges {
-			if uint64(r.Start) <= tag && tag <= uint64(r.End) {
-				if u.extensions.IsValid() {
-					mp := m.offset(u.extensions).toExtensions()
-					emap = mp.extensionsWrite()
-					e = emap[int32(tag)]
-					z = &e.enc
-					break
-				}
-				if u.oldExtensions.IsValid() {
-					p := m.offset(u.oldExtensions).toOldExtensions()
-					emap = *p
-					if emap == nil {
-						emap = map[int32]Extension{}
-						*p = emap
-					}
-					e = emap[int32(tag)]
-					z = &e.enc
-					break
-				}
-				panic("no extensions field available")
-			}
-		}
-
-		// Use wire type to skip data.
-		var err error
-		b0 := b
-		b, err = skipField(b, wire)
-		if err != nil {
-			return err
-		}
-		*z = encodeVarint(*z, tag<<3|uint64(wire))
-		*z = append(*z, b0[:len(b0)-len(b)]...)
-
-		if emap != nil {
-			emap[int32(tag)] = e
-		}
-	}
-	if reqMask != u.reqMask && errLater == nil {
-		// A required field of this message is missing.
-		for _, n := range u.reqFields {
-			if reqMask&1 == 0 {
-				errLater = &RequiredNotSetError{n}
-			}
-			reqMask >>= 1
-		}
-	}
-	return errLater
-}
-
-// computeUnmarshalInfo fills in u with information for use
-// in unmarshaling protocol buffers of type u.typ.
-func (u *unmarshalInfo) computeUnmarshalInfo() {
-	u.lock.Lock()
-	defer u.lock.Unlock()
-	if u.initialized != 0 {
-		return
-	}
-	t := u.typ
-	n := t.NumField()
-
-	// Set up the "not found" value for the unrecognized byte buffer.
-	// This is the default for proto3.
-	u.unrecognized = invalidField
-	u.extensions = invalidField
-	u.oldExtensions = invalidField
-
-	// List of the generated type and offset for each oneof field.
-	type oneofField struct {
-		ityp  reflect.Type // interface type of oneof field
-		field field        // offset in containing message
-	}
-	var oneofFields []oneofField
-
-	for i := 0; i < n; i++ {
-		f := t.Field(i)
-		if f.Name == "XXX_unrecognized" {
-			// The byte slice used to hold unrecognized input is special.
-			if f.Type != reflect.TypeOf(([]byte)(nil)) {
-				panic("bad type for XXX_unrecognized field: " + f.Type.Name())
-			}
-			u.unrecognized = toField(&f)
-			continue
-		}
-		if f.Name == "XXX_InternalExtensions" {
-			// Ditto here.
-			if f.Type != reflect.TypeOf(XXX_InternalExtensions{}) {
-				panic("bad type for XXX_InternalExtensions field: " + f.Type.Name())
-			}
-			u.extensions = toField(&f)
-			if f.Tag.Get("protobuf_messageset") == "1" {
-				u.isMessageSet = true
-			}
-			continue
-		}
-		if f.Name == "XXX_extensions" {
-			// An older form of the extensions field.
-			if f.Type != reflect.TypeOf((map[int32]Extension)(nil)) {
-				panic("bad type for XXX_extensions field: " + f.Type.Name())
-			}
-			u.oldExtensions = toField(&f)
-			continue
-		}
-		if f.Name == "XXX_NoUnkeyedLiteral" || f.Name == "XXX_sizecache" {
-			continue
-		}
-
-		oneof := f.Tag.Get("protobuf_oneof")
-		if oneof != "" {
-			oneofFields = append(oneofFields, oneofField{f.Type, toField(&f)})
-			// The rest of oneof processing happens below.
-			continue
-		}
-
-		tags := f.Tag.Get("protobuf")
-		tagArray := strings.Split(tags, ",")
-		if len(tagArray) < 2 {
-			panic("protobuf tag not enough fields in " + t.Name() + "." + f.Name + ": " + tags)
-		}
-		tag, err := strconv.Atoi(tagArray[1])
-		if err != nil {
-			panic("protobuf tag field not an integer: " + tagArray[1])
-		}
-
-		name := ""
-		for _, tag := range tagArray[3:] {
-			if strings.HasPrefix(tag, "name=") {
-				name = tag[5:]
-			}
-		}
-
-		// Extract unmarshaling function from the field (its type and tags).
-		unmarshal := fieldUnmarshaler(&f)
-
-		// Required field?
-		var reqMask uint64
-		if tagArray[2] == "req" {
-			bit := len(u.reqFields)
-			u.reqFields = append(u.reqFields, name)
-			reqMask = uint64(1) << uint(bit)
-			// TODO: if we have more than 64 required fields, we end up
-			// not verifying that all required fields are present.
-			// Fix this, perhaps using a count of required fields?
-		}
-
-		// Store the info in the correct slot in the message.
-		u.setTag(tag, toField(&f), unmarshal, reqMask, name)
-	}
-
-	// Find any types associated with oneof fields.
-	// TODO: XXX_OneofFuncs returns more info than we need.  Get rid of some of it?
-	fn := reflect.Zero(reflect.PtrTo(t)).MethodByName("XXX_OneofFuncs")
-	if fn.IsValid() {
-		res := fn.Call(nil)[3] // last return value from XXX_OneofFuncs: []interface{}
-		for i := res.Len() - 1; i >= 0; i-- {
-			v := res.Index(i)                             // interface{}
-			tptr := reflect.ValueOf(v.Interface()).Type() // *Msg_X
-			typ := tptr.Elem()                            // Msg_X
-
-			f := typ.Field(0) // oneof implementers have one field
-			baseUnmarshal := fieldUnmarshaler(&f)
-			tags := strings.Split(f.Tag.Get("protobuf"), ",")
-			fieldNum, err := strconv.Atoi(tags[1])
-			if err != nil {
-				panic("protobuf tag field not an integer: " + tags[1])
-			}
-			var name string
-			for _, tag := range tags {
-				if strings.HasPrefix(tag, "name=") {
-					name = strings.TrimPrefix(tag, "name=")
-					break
-				}
-			}
-
-			// Find the oneof field that this struct implements.
-			// Might take O(n^2) to process all of the oneofs, but who cares.
-			for _, of := range oneofFields {
-				if tptr.Implements(of.ityp) {
-					// We have found the corresponding interface for this struct.
-					// That lets us know where this struct should be stored
-					// when we encounter it during unmarshaling.
-					unmarshal := makeUnmarshalOneof(typ, of.ityp, baseUnmarshal)
-					u.setTag(fieldNum, of.field, unmarshal, 0, name)
-				}
-			}
-		}
-	}
-
-	// Get extension ranges, if any.
-	fn = reflect.Zero(reflect.PtrTo(t)).MethodByName("ExtensionRangeArray")
-	if fn.IsValid() {
-		if !u.extensions.IsValid() && !u.oldExtensions.IsValid() {
-			panic("a message with extensions, but no extensions field in " + t.Name())
-		}
-		u.extensionRanges = fn.Call(nil)[0].Interface().([]ExtensionRange)
-	}
-
-	// Explicitly disallow tag 0. This will ensure we flag an error
-	// when decoding a buffer of all zeros. Without this code, we
-	// would decode and skip an all-zero buffer of even length.
-	// [0 0] is [tag=0/wiretype=varint varint-encoded-0].
-	u.setTag(0, zeroField, func(b []byte, f pointer, w int) ([]byte, error) {
-		return nil, fmt.Errorf("proto: %s: illegal tag 0 (wire type %d)", t, w)
-	}, 0, "")
-
-	// Set mask for required field check.
-	u.reqMask = uint64(1)<<uint(len(u.reqFields)) - 1
-
-	atomic.StoreInt32(&u.initialized, 1)
-}
-
-// setTag stores the unmarshal information for the given tag.
-// tag = tag # for field
-// field/unmarshal = unmarshal info for that field.
-// reqMask = if required, bitmask for field position in required field list. 0 otherwise.
-// name = short name of the field.
-func (u *unmarshalInfo) setTag(tag int, field field, unmarshal unmarshaler, reqMask uint64, name string) {
-	i := unmarshalFieldInfo{field: field, unmarshal: unmarshal, reqMask: reqMask, name: name}
-	n := u.typ.NumField()
-	if tag >= 0 && (tag < 16 || tag < 2*n) { // TODO: what are the right numbers here?
-		for len(u.dense) <= tag {
-			u.dense = append(u.dense, unmarshalFieldInfo{})
-		}
-		u.dense[tag] = i
-		return
-	}
-	if u.sparse == nil {
-		u.sparse = map[uint64]unmarshalFieldInfo{}
-	}
-	u.sparse[uint64(tag)] = i
-}
-
-// fieldUnmarshaler returns an unmarshaler for the given field.
-func fieldUnmarshaler(f *reflect.StructField) unmarshaler {
-	if f.Type.Kind() == reflect.Map {
-		return makeUnmarshalMap(f)
-	}
-	return typeUnmarshaler(f.Type, f.Tag.Get("protobuf"))
-}
-
-// typeUnmarshaler returns an unmarshaler for the given field type / field tag pair.
-func typeUnmarshaler(t reflect.Type, tags string) unmarshaler {
-	tagArray := strings.Split(tags, ",")
-	encoding := tagArray[0]
-	name := "unknown"
-	proto3 := false
-	validateUTF8 := true
-	for _, tag := range tagArray[3:] {
-		if strings.HasPrefix(tag, "name=") {
-			name = tag[5:]
-		}
-		if tag == "proto3" {
-			proto3 = true
-		}
-	}
-	validateUTF8 = validateUTF8 && proto3
-
-	// Figure out packaging (pointer, slice, or both)
-	slice := false
-	pointer := false
-	if t.Kind() == reflect.Slice && t.Elem().Kind() != reflect.Uint8 {
-		slice = true
-		t = t.Elem()
-	}
-	if t.Kind() == reflect.Ptr {
-		pointer = true
-		t = t.Elem()
-	}
-
-	// We'll never have both pointer and slice for basic types.
-	if pointer && slice && t.Kind() != reflect.Struct {
-		panic("both pointer and slice for basic type in " + t.Name())
-	}
-
-	switch t.Kind() {
-	case reflect.Bool:
-		if pointer {
-			return unmarshalBoolPtr
-		}
-		if slice {
-			return unmarshalBoolSlice
-		}
-		return unmarshalBoolValue
-	case reflect.Int32:
-		switch encoding {
-		case "fixed32":
-			if pointer {
-				return unmarshalFixedS32Ptr
-			}
-			if slice {
-				return unmarshalFixedS32Slice
-			}
-			return unmarshalFixedS32Value
-		case "varint":
-			// this could be int32 or enum
-			if pointer {
-				return unmarshalInt32Ptr
-			}
-			if slice {
-				return unmarshalInt32Slice
-			}
-			return unmarshalInt32Value
-		case "zigzag32":
-			if pointer {
-				return unmarshalSint32Ptr
-			}
-			if slice {
-				return unmarshalSint32Slice
-			}
-			return unmarshalSint32Value
-		}
-	case reflect.Int64:
-		switch encoding {
-		case "fixed64":
-			if pointer {
-				return unmarshalFixedS64Ptr
-			}
-			if slice {
-				return unmarshalFixedS64Slice
-			}
-			return unmarshalFixedS64Value
-		case "varint":
-			if pointer {
-				return unmarshalInt64Ptr
-			}
-			if slice {
-				return unmarshalInt64Slice
-			}
-			return unmarshalInt64Value
-		case "zigzag64":
-			if pointer {
-				return unmarshalSint64Ptr
-			}
-			if slice {
-				return unmarshalSint64Slice
-			}
-			return unmarshalSint64Value
-		}
-	case reflect.Uint32:
-		switch encoding {
-		case "fixed32":
-			if pointer {
-				return unmarshalFixed32Ptr
-			}
-			if slice {
-				return unmarshalFixed32Slice
-			}
-			return unmarshalFixed32Value
-		case "varint":
-			if pointer {
-				return unmarshalUint32Ptr
-			}
-			if slice {
-				return unmarshalUint32Slice
-			}
-			return unmarshalUint32Value
-		}
-	case reflect.Uint64:
-		switch encoding {
-		case "fixed64":
-			if pointer {
-				return unmarshalFixed64Ptr
-			}
-			if slice {
-				return unmarshalFixed64Slice
-			}
-			return unmarshalFixed64Value
-		case "varint":
-			if pointer {
-				return unmarshalUint64Ptr
-			}
-			if slice {
-				return unmarshalUint64Slice
-			}
-			return unmarshalUint64Value
-		}
-	case reflect.Float32:
-		if pointer {
-			return unmarshalFloat32Ptr
-		}
-		if slice {
-			return unmarshalFloat32Slice
-		}
-		return unmarshalFloat32Value
-	case reflect.Float64:
-		if pointer {
-			return unmarshalFloat64Ptr
-		}
-		if slice {
-			return unmarshalFloat64Slice
-		}
-		return unmarshalFloat64Value
-	case reflect.Map:
-		panic("map type in typeUnmarshaler in " + t.Name())
-	case reflect.Slice:
-		if pointer {
-			panic("bad pointer in slice case in " + t.Name())
-		}
-		if slice {
-			return unmarshalBytesSlice
-		}
-		return unmarshalBytesValue
-	case reflect.String:
-		if validateUTF8 {
-			if pointer {
-				return unmarshalUTF8StringPtr
-			}
-			if slice {
-				return unmarshalUTF8StringSlice
-			}
-			return unmarshalUTF8StringValue
-		}
-		if pointer {
-			return unmarshalStringPtr
-		}
-		if slice {
-			return unmarshalStringSlice
-		}
-		return unmarshalStringValue
-	case reflect.Struct:
-		// message or group field
-		if !pointer {
-			panic(fmt.Sprintf("message/group field %s:%s without pointer", t, encoding))
-		}
-		switch encoding {
-		case "bytes":
-			if slice {
-				return makeUnmarshalMessageSlicePtr(getUnmarshalInfo(t), name)
-			}
-			return makeUnmarshalMessagePtr(getUnmarshalInfo(t), name)
-		case "group":
-			if slice {
-				return makeUnmarshalGroupSlicePtr(getUnmarshalInfo(t), name)
-			}
-			return makeUnmarshalGroupPtr(getUnmarshalInfo(t), name)
-		}
-	}
-	panic(fmt.Sprintf("unmarshaler not found type:%s encoding:%s", t, encoding))
-}
-
-// Below are all the unmarshalers for individual fields of various types.
-
-func unmarshalInt64Value(b []byte, f pointer, w int) ([]byte, error) {
-	if w != WireVarint {
-		return b, errInternalBadWireType
-	}
-	x, n := decodeVarint(b)
-	if n == 0 {
-		return nil, io.ErrUnexpectedEOF
-	}
-	b = b[n:]
-	v := int64(x)
-	*f.toInt64() = v
-	return b, nil
-}
-
-func unmarshalInt64Ptr(b []byte, f pointer, w int) ([]byte, error) {
-	if w != WireVarint {
-		return b, errInternalBadWireType
-	}
-	x, n := decodeVarint(b)
-	if n == 0 {
-		return nil, io.ErrUnexpectedEOF
-	}
-	b = b[n:]
-	v := int64(x)
-	*f.toInt64Ptr() = &v
-	return b, nil
-}
-
-func unmarshalInt64Slice(b []byte, f pointer, w int) ([]byte, error) {
-	if w == WireBytes { // packed
-		x, n := decodeVarint(b)
-		if n == 0 {
-			return nil, io.ErrUnexpectedEOF
-		}
-		b = b[n:]
-		if x > uint64(len(b)) {
-			return nil, io.ErrUnexpectedEOF
-		}
-		res := b[x:]
-		b = b[:x]
-		for len(b) > 0 {
-			x, n = decodeVarint(b)
-			if n == 0 {
-				return nil, io.ErrUnexpectedEOF
-			}
-			b = b[n:]
-			v := int64(x)
-			s := f.toInt64Slice()
-			*s = append(*s, v)
-		}
-		return res, nil
-	}
-	if w != WireVarint {
-		return b, errInternalBadWireType
-	}
-	x, n := decodeVarint(b)
-	if n == 0 {
-		return nil, io.ErrUnexpectedEOF
-	}
-	b = b[n:]
-	v := int64(x)
-	s := f.toInt64Slice()
-	*s = append(*s, v)
-	return b, nil
-}
-
-func unmarshalSint64Value(b []byte, f pointer, w int) ([]byte, error) {
-	if w != WireVarint {
-		return b, errInternalBadWireType
-	}
-	x, n := decodeVarint(b)
-	if n == 0 {
-		return nil, io.ErrUnexpectedEOF
-	}
-	b = b[n:]
-	v := int64(x>>1) ^ int64(x)<<63>>63
-	*f.toInt64() = v
-	return b, nil
-}
-
-func unmarshalSint64Ptr(b []byte, f pointer, w int) ([]byte, error) {
-	if w != WireVarint {
-		return b, errInternalBadWireType
-	}
-	x, n := decodeVarint(b)
-	if n == 0 {
-		return nil, io.ErrUnexpectedEOF
-	}
-	b = b[n:]
-	v := int64(x>>1) ^ int64(x)<<63>>63
-	*f.toInt64Ptr() = &v
-	return b, nil
-}
-
-func unmarshalSint64Slice(b []byte, f pointer, w int) ([]byte, error) {
-	if w == WireBytes { // packed
-		x, n := decodeVarint(b)
-		if n == 0 {
-			return nil, io.ErrUnexpectedEOF
-		}
-		b = b[n:]
-		if x > uint64(len(b)) {
-			return nil, io.ErrUnexpectedEOF
-		}
-		res := b[x:]
-		b = b[:x]
-		for len(b) > 0 {
-			x, n = decodeVarint(b)
-			if n == 0 {
-				return nil, io.ErrUnexpectedEOF
-			}
-			b = b[n:]
-			v := int64(x>>1) ^ int64(x)<<63>>63
-			s := f.toInt64Slice()
-			*s = append(*s, v)
-		}
-		return res, nil
-	}
-	if w != WireVarint {
-		return b, errInternalBadWireType
-	}
-	x, n := decodeVarint(b)
-	if n == 0 {
-		return nil, io.ErrUnexpectedEOF
-	}
-	b = b[n:]
-	v := int64(x>>1) ^ int64(x)<<63>>63
-	s := f.toInt64Slice()
-	*s = append(*s, v)
-	return b, nil
-}
-
-func unmarshalUint64Value(b []byte, f pointer, w int) ([]byte, error) {
-	if w != WireVarint {
-		return b, errInternalBadWireType
-	}
-	x, n := decodeVarint(b)
-	if n == 0 {
-		return nil, io.ErrUnexpectedEOF
-	}
-	b = b[n:]
-	v := uint64(x)
-	*f.toUint64() = v
-	return b, nil
-}
-
-func unmarshalUint64Ptr(b []byte, f pointer, w int) ([]byte, error) {
-	if w != WireVarint {
-		return b, errInternalBadWireType
-	}
-	x, n := decodeVarint(b)
-	if n == 0 {
-		return nil, io.ErrUnexpectedEOF
-	}
-	b = b[n:]
-	v := uint64(x)
-	*f.toUint64Ptr() = &v
-	return b, nil
-}
-
-func unmarshalUint64Slice(b []byte, f pointer, w int) ([]byte, error) {
-	if w == WireBytes { // packed
-		x, n := decodeVarint(b)
-		if n == 0 {
-			return nil, io.ErrUnexpectedEOF
-		}
-		b = b[n:]
-		if x > uint64(len(b)) {
-			return nil, io.ErrUnexpectedEOF
-		}
-		res := b[x:]
-		b = b[:x]
-		for len(b) > 0 {
-			x, n = decodeVarint(b)
-			if n == 0 {
-				return nil, io.ErrUnexpectedEOF
-			}
-			b = b[n:]
-			v := uint64(x)
-			s := f.toUint64Slice()
-			*s = append(*s, v)
-		}
-		return res, nil
-	}
-	if w != WireVarint {
-		return b, errInternalBadWireType
-	}
-	x, n := decodeVarint(b)
-	if n == 0 {
-		return nil, io.ErrUnexpectedEOF
-	}
-	b = b[n:]
-	v := uint64(x)
-	s := f.toUint64Slice()
-	*s = append(*s, v)
-	return b, nil
-}
-
-func unmarshalInt32Value(b []byte, f pointer, w int) ([]byte, error) {
-	if w != WireVarint {
-		return b, errInternalBadWireType
-	}
-	x, n := decodeVarint(b)
-	if n == 0 {
-		return nil, io.ErrUnexpectedEOF
-	}
-	b = b[n:]
-	v := int32(x)
-	*f.toInt32() = v
-	return b, nil
-}
-
-func unmarshalInt32Ptr(b []byte, f pointer, w int) ([]byte, error) {
-	if w != WireVarint {
-		return b, errInternalBadWireType
-	}
-	x, n := decodeVarint(b)
-	if n == 0 {
-		return nil, io.ErrUnexpectedEOF
-	}
-	b = b[n:]
-	v := int32(x)
-	f.setInt32Ptr(v)
-	return b, nil
-}
-
-func unmarshalInt32Slice(b []byte, f pointer, w int) ([]byte, error) {
-	if w == WireBytes { // packed
-		x, n := decodeVarint(b)
-		if n == 0 {
-			return nil, io.ErrUnexpectedEOF
-		}
-		b = b[n:]
-		if x > uint64(len(b)) {
-			return nil, io.ErrUnexpectedEOF
-		}
-		res := b[x:]
-		b = b[:x]
-		for len(b) > 0 {
-			x, n = decodeVarint(b)
-			if n == 0 {
-				return nil, io.ErrUnexpectedEOF
-			}
-			b = b[n:]
-			v := int32(x)
-			f.appendInt32Slice(v)
-		}
-		return res, nil
-	}
-	if w != WireVarint {
-		return b, errInternalBadWireType
-	}
-	x, n := decodeVarint(b)
-	if n == 0 {
-		return nil, io.ErrUnexpectedEOF
-	}
-	b = b[n:]
-	v := int32(x)
-	f.appendInt32Slice(v)
-	return b, nil
-}
-
-func unmarshalSint32Value(b []byte, f pointer, w int) ([]byte, error) {
-	if w != WireVarint {
-		return b, errInternalBadWireType
-	}
-	x, n := decodeVarint(b)
-	if n == 0 {
-		return nil, io.ErrUnexpectedEOF
-	}
-	b = b[n:]
-	v := int32(x>>1) ^ int32(x)<<31>>31
-	*f.toInt32() = v
-	return b, nil
-}
-
-func unmarshalSint32Ptr(b []byte, f pointer, w int) ([]byte, error) {
-	if w != WireVarint {
-		return b, errInternalBadWireType
-	}
-	x, n := decodeVarint(b)
-	if n == 0 {
-		return nil, io.ErrUnexpectedEOF
-	}
-	b = b[n:]
-	v := int32(x>>1) ^ int32(x)<<31>>31
-	f.setInt32Ptr(v)
-	return b, nil
-}
-
-func unmarshalSint32Slice(b []byte, f pointer, w int) ([]byte, error) {
-	if w == WireBytes { // packed
-		x, n := decodeVarint(b)
-		if n == 0 {
-			return nil, io.ErrUnexpectedEOF
-		}
-		b = b[n:]
-		if x > uint64(len(b)) {
-			return nil, io.ErrUnexpectedEOF
-		}
-		res := b[x:]
-		b = b[:x]
-		for len(b) > 0 {
-			x, n = decodeVarint(b)
-			if n == 0 {
-				return nil, io.ErrUnexpectedEOF
-			}
-			b = b[n:]
-			v := int32(x>>1) ^ int32(x)<<31>>31
-			f.appendInt32Slice(v)
-		}
-		return res, nil
-	}
-	if w != WireVarint {
-		return b, errInternalBadWireType
-	}
-	x, n := decodeVarint(b)
-	if n == 0 {
-		return nil, io.ErrUnexpectedEOF
-	}
-	b = b[n:]
-	v := int32(x>>1) ^ int32(x)<<31>>31
-	f.appendInt32Slice(v)
-	return b, nil
-}
-
-func unmarshalUint32Value(b []byte, f pointer, w int) ([]byte, error) {
-	if w != WireVarint {
-		return b, errInternalBadWireType
-	}
-	x, n := decodeVarint(b)
-	if n == 0 {
-		return nil, io.ErrUnexpectedEOF
-	}
-	b = b[n:]
-	v := uint32(x)
-	*f.toUint32() = v
-	return b, nil
-}
-
-func unmarshalUint32Ptr(b []byte, f pointer, w int) ([]byte, error) {
-	if w != WireVarint {
-		return b, errInternalBadWireType
-	}
-	x, n := decodeVarint(b)
-	if n == 0 {
-		return nil, io.ErrUnexpectedEOF
-	}
-	b = b[n:]
-	v := uint32(x)
-	*f.toUint32Ptr() = &v
-	return b, nil
-}
-
-func unmarshalUint32Slice(b []byte, f pointer, w int) ([]byte, error) {
-	if w == WireBytes { // packed
-		x, n := decodeVarint(b)
-		if n == 0 {
-			return nil, io.ErrUnexpectedEOF
-		}
-		b = b[n:]
-		if x > uint64(len(b)) {
-			return nil, io.ErrUnexpectedEOF
-		}
-		res := b[x:]
-		b = b[:x]
-		for len(b) > 0 {
-			x, n = decodeVarint(b)
-			if n == 0 {
-				return nil, io.ErrUnexpectedEOF
-			}
-			b = b[n:]
-			v := uint32(x)
-			s := f.toUint32Slice()
-			*s = append(*s, v)
-		}
-		return res, nil
-	}
-	if w != WireVarint {
-		return b, errInternalBadWireType
-	}
-	x, n := decodeVarint(b)
-	if n == 0 {
-		return nil, io.ErrUnexpectedEOF
-	}
-	b = b[n:]
-	v := uint32(x)
-	s := f.toUint32Slice()
-	*s = append(*s, v)
-	return b, nil
-}
-
-func unmarshalFixed64Value(b []byte, f pointer, w int) ([]byte, error) {
-	if w != WireFixed64 {
-		return b, errInternalBadWireType
-	}
-	if len(b) < 8 {
-		return nil, io.ErrUnexpectedEOF
-	}
-	v := uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56
-	*f.toUint64() = v
-	return b[8:], nil
-}
-
-func unmarshalFixed64Ptr(b []byte, f pointer, w int) ([]byte, error) {
-	if w != WireFixed64 {
-		return b, errInternalBadWireType
-	}
-	if len(b) < 8 {
-		return nil, io.ErrUnexpectedEOF
-	}
-	v := uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56
-	*f.toUint64Ptr() = &v
-	return b[8:], nil
-}
-
-func unmarshalFixed64Slice(b []byte, f pointer, w int) ([]byte, error) {
-	if w == WireBytes { // packed
-		x, n := decodeVarint(b)
-		if n == 0 {
-			return nil, io.ErrUnexpectedEOF
-		}
-		b = b[n:]
-		if x > uint64(len(b)) {
-			return nil, io.ErrUnexpectedEOF
-		}
-		res := b[x:]
-		b = b[:x]
-		for len(b) > 0 {
-			if len(b) < 8 {
-				return nil, io.ErrUnexpectedEOF
-			}
-			v := uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56
-			s := f.toUint64Slice()
-			*s = append(*s, v)
-			b = b[8:]
-		}
-		return res, nil
-	}
-	if w != WireFixed64 {
-		return b, errInternalBadWireType
-	}
-	if len(b) < 8 {
-		return nil, io.ErrUnexpectedEOF
-	}
-	v := uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56
-	s := f.toUint64Slice()
-	*s = append(*s, v)
-	return b[8:], nil
-}
-
-func unmarshalFixedS64Value(b []byte, f pointer, w int) ([]byte, error) {
-	if w != WireFixed64 {
-		return b, errInternalBadWireType
-	}
-	if len(b) < 8 {
-		return nil, io.ErrUnexpectedEOF
-	}
-	v := int64(b[0]) | int64(b[1])<<8 | int64(b[2])<<16 | int64(b[3])<<24 | int64(b[4])<<32 | int64(b[5])<<40 | int64(b[6])<<48 | int64(b[7])<<56
-	*f.toInt64() = v
-	return b[8:], nil
-}
-
-func unmarshalFixedS64Ptr(b []byte, f pointer, w int) ([]byte, error) {
-	if w != WireFixed64 {
-		return b, errInternalBadWireType
-	}
-	if len(b) < 8 {
-		return nil, io.ErrUnexpectedEOF
-	}
-	v := int64(b[0]) | int64(b[1])<<8 | int64(b[2])<<16 | int64(b[3])<<24 | int64(b[4])<<32 | int64(b[5])<<40 | int64(b[6])<<48 | int64(b[7])<<56
-	*f.toInt64Ptr() = &v
-	return b[8:], nil
-}
-
-func unmarshalFixedS64Slice(b []byte, f pointer, w int) ([]byte, error) {
-	if w == WireBytes { // packed
-		x, n := decodeVarint(b)
-		if n == 0 {
-			return nil, io.ErrUnexpectedEOF
-		}
-		b = b[n:]
-		if x > uint64(len(b)) {
-			return nil, io.ErrUnexpectedEOF
-		}
-		res := b[x:]
-		b = b[:x]
-		for len(b) > 0 {
-			if len(b) < 8 {
-				return nil, io.ErrUnexpectedEOF
-			}
-			v := int64(b[0]) | int64(b[1])<<8 | int64(b[2])<<16 | int64(b[3])<<24 | int64(b[4])<<32 | int64(b[5])<<40 | int64(b[6])<<48 | int64(b[7])<<56
-			s := f.toInt64Slice()
-			*s = append(*s, v)
-			b = b[8:]
-		}
-		return res, nil
-	}
-	if w != WireFixed64 {
-		return b, errInternalBadWireType
-	}
-	if len(b) < 8 {
-		return nil, io.ErrUnexpectedEOF
-	}
-	v := int64(b[0]) | int64(b[1])<<8 | int64(b[2])<<16 | int64(b[3])<<24 | int64(b[4])<<32 | int64(b[5])<<40 | int64(b[6])<<48 | int64(b[7])<<56
-	s := f.toInt64Slice()
-	*s = append(*s, v)
-	return b[8:], nil
-}
-
-func unmarshalFixed32Value(b []byte, f pointer, w int) ([]byte, error) {
-	if w != WireFixed32 {
-		return b, errInternalBadWireType
-	}
-	if len(b) < 4 {
-		return nil, io.ErrUnexpectedEOF
-	}
-	v := uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24
-	*f.toUint32() = v
-	return b[4:], nil
-}
-
-func unmarshalFixed32Ptr(b []byte, f pointer, w int) ([]byte, error) {
-	if w != WireFixed32 {
-		return b, errInternalBadWireType
-	}
-	if len(b) < 4 {
-		return nil, io.ErrUnexpectedEOF
-	}
-	v := uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24
-	*f.toUint32Ptr() = &v
-	return b[4:], nil
-}
-
-func unmarshalFixed32Slice(b []byte, f pointer, w int) ([]byte, error) {
-	if w == WireBytes { // packed
-		x, n := decodeVarint(b)
-		if n == 0 {
-			return nil, io.ErrUnexpectedEOF
-		}
-		b = b[n:]
-		if x > uint64(len(b)) {
-			return nil, io.ErrUnexpectedEOF
-		}
-		res := b[x:]
-		b = b[:x]
-		for len(b) > 0 {
-			if len(b) < 4 {
-				return nil, io.ErrUnexpectedEOF
-			}
-			v := uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24
-			s := f.toUint32Slice()
-			*s = append(*s, v)
-			b = b[4:]
-		}
-		return res, nil
-	}
-	if w != WireFixed32 {
-		return b, errInternalBadWireType
-	}
-	if len(b) < 4 {
-		return nil, io.ErrUnexpectedEOF
-	}
-	v := uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24
-	s := f.toUint32Slice()
-	*s = append(*s, v)
-	return b[4:], nil
-}
-
-func unmarshalFixedS32Value(b []byte, f pointer, w int) ([]byte, error) {
-	if w != WireFixed32 {
-		return b, errInternalBadWireType
-	}
-	if len(b) < 4 {
-		return nil, io.ErrUnexpectedEOF
-	}
-	v := int32(b[0]) | int32(b[1])<<8 | int32(b[2])<<16 | int32(b[3])<<24
-	*f.toInt32() = v
-	return b[4:], nil
-}
-
-func unmarshalFixedS32Ptr(b []byte, f pointer, w int) ([]byte, error) {
-	if w != WireFixed32 {
-		return b, errInternalBadWireType
-	}
-	if len(b) < 4 {
-		return nil, io.ErrUnexpectedEOF
-	}
-	v := int32(b[0]) | int32(b[1])<<8 | int32(b[2])<<16 | int32(b[3])<<24
-	f.setInt32Ptr(v)
-	return b[4:], nil
-}
-
-func unmarshalFixedS32Slice(b []byte, f pointer, w int) ([]byte, error) {
-	if w == WireBytes { // packed
-		x, n := decodeVarint(b)
-		if n == 0 {
-			return nil, io.ErrUnexpectedEOF
-		}
-		b = b[n:]
-		if x > uint64(len(b)) {
-			return nil, io.ErrUnexpectedEOF
-		}
-		res := b[x:]
-		b = b[:x]
-		for len(b) > 0 {
-			if len(b) < 4 {
-				return nil, io.ErrUnexpectedEOF
-			}
-			v := int32(b[0]) | int32(b[1])<<8 | int32(b[2])<<16 | int32(b[3])<<24
-			f.appendInt32Slice(v)
-			b = b[4:]
-		}
-		return res, nil
-	}
-	if w != WireFixed32 {
-		return b, errInternalBadWireType
-	}
-	if len(b) < 4 {
-		return nil, io.ErrUnexpectedEOF
-	}
-	v := int32(b[0]) | int32(b[1])<<8 | int32(b[2])<<16 | int32(b[3])<<24
-	f.appendInt32Slice(v)
-	return b[4:], nil
-}
-
-func unmarshalBoolValue(b []byte, f pointer, w int) ([]byte, error) {
-	if w != WireVarint {
-		return b, errInternalBadWireType
-	}
-	// Note: any length varint is allowed, even though any sane
-	// encoder will use one byte.
-	// See https://github.com/golang/protobuf/issues/76
-	x, n := decodeVarint(b)
-	if n == 0 {
-		return nil, io.ErrUnexpectedEOF
-	}
-	// TODO: check if x>1? Tests seem to indicate no.
-	v := x != 0
-	*f.toBool() = v
-	return b[n:], nil
-}
-
-func unmarshalBoolPtr(b []byte, f pointer, w int) ([]byte, error) {
-	if w != WireVarint {
-		return b, errInternalBadWireType
-	}
-	x, n := decodeVarint(b)
-	if n == 0 {
-		return nil, io.ErrUnexpectedEOF
-	}
-	v := x != 0
-	*f.toBoolPtr() = &v
-	return b[n:], nil
-}
-
-func unmarshalBoolSlice(b []byte, f pointer, w int) ([]byte, error) {
-	if w == WireBytes { // packed
-		x, n := decodeVarint(b)
-		if n == 0 {
-			return nil, io.ErrUnexpectedEOF
-		}
-		b = b[n:]
-		if x > uint64(len(b)) {
-			return nil, io.ErrUnexpectedEOF
-		}
-		res := b[x:]
-		b = b[:x]
-		for len(b) > 0 {
-			x, n = decodeVarint(b)
-			if n == 0 {
-				return nil, io.ErrUnexpectedEOF
-			}
-			v := x != 0
-			s := f.toBoolSlice()
-			*s = append(*s, v)
-			b = b[n:]
-		}
-		return res, nil
-	}
-	if w != WireVarint {
-		return b, errInternalBadWireType
-	}
-	x, n := decodeVarint(b)
-	if n == 0 {
-		return nil, io.ErrUnexpectedEOF
-	}
-	v := x != 0
-	s := f.toBoolSlice()
-	*s = append(*s, v)
-	return b[n:], nil
-}
-
-func unmarshalFloat64Value(b []byte, f pointer, w int) ([]byte, error) {
-	if w != WireFixed64 {
-		return b, errInternalBadWireType
-	}
-	if len(b) < 8 {
-		return nil, io.ErrUnexpectedEOF
-	}
-	v := math.Float64frombits(uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56)
-	*f.toFloat64() = v
-	return b[8:], nil
-}
-
-func unmarshalFloat64Ptr(b []byte, f pointer, w int) ([]byte, error) {
-	if w != WireFixed64 {
-		return b, errInternalBadWireType
-	}
-	if len(b) < 8 {
-		return nil, io.ErrUnexpectedEOF
-	}
-	v := math.Float64frombits(uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56)
-	*f.toFloat64Ptr() = &v
-	return b[8:], nil
-}
-
-func unmarshalFloat64Slice(b []byte, f pointer, w int) ([]byte, error) {
-	if w == WireBytes { // packed
-		x, n := decodeVarint(b)
-		if n == 0 {
-			return nil, io.ErrUnexpectedEOF
-		}
-		b = b[n:]
-		if x > uint64(len(b)) {
-			return nil, io.ErrUnexpectedEOF
-		}
-		res := b[x:]
-		b = b[:x]
-		for len(b) > 0 {
-			if len(b) < 8 {
-				return nil, io.ErrUnexpectedEOF
-			}
-			v := math.Float64frombits(uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56)
-			s := f.toFloat64Slice()
-			*s = append(*s, v)
-			b = b[8:]
-		}
-		return res, nil
-	}
-	if w != WireFixed64 {
-		return b, errInternalBadWireType
-	}
-	if len(b) < 8 {
-		return nil, io.ErrUnexpectedEOF
-	}
-	v := math.Float64frombits(uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56)
-	s := f.toFloat64Slice()
-	*s = append(*s, v)
-	return b[8:], nil
-}
-
-func unmarshalFloat32Value(b []byte, f pointer, w int) ([]byte, error) {
-	if w != WireFixed32 {
-		return b, errInternalBadWireType
-	}
-	if len(b) < 4 {
-		return nil, io.ErrUnexpectedEOF
-	}
-	v := math.Float32frombits(uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24)
-	*f.toFloat32() = v
-	return b[4:], nil
-}
-
-func unmarshalFloat32Ptr(b []byte, f pointer, w int) ([]byte, error) {
-	if w != WireFixed32 {
-		return b, errInternalBadWireType
-	}
-	if len(b) < 4 {
-		return nil, io.ErrUnexpectedEOF
-	}
-	v := math.Float32frombits(uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24)
-	*f.toFloat32Ptr() = &v
-	return b[4:], nil
-}
-
-func unmarshalFloat32Slice(b []byte, f pointer, w int) ([]byte, error) {
-	if w == WireBytes { // packed
-		x, n := decodeVarint(b)
-		if n == 0 {
-			return nil, io.ErrUnexpectedEOF
-		}
-		b = b[n:]
-		if x > uint64(len(b)) {
-			return nil, io.ErrUnexpectedEOF
-		}
-		res := b[x:]
-		b = b[:x]
-		for len(b) > 0 {
-			if len(b) < 4 {
-				return nil, io.ErrUnexpectedEOF
-			}
-			v := math.Float32frombits(uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24)
-			s := f.toFloat32Slice()
-			*s = append(*s, v)
-			b = b[4:]
-		}
-		return res, nil
-	}
-	if w != WireFixed32 {
-		return b, errInternalBadWireType
-	}
-	if len(b) < 4 {
-		return nil, io.ErrUnexpectedEOF
-	}
-	v := math.Float32frombits(uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24)
-	s := f.toFloat32Slice()
-	*s = append(*s, v)
-	return b[4:], nil
-}
-
-func unmarshalStringValue(b []byte, f pointer, w int) ([]byte, error) {
-	if w != WireBytes {
-		return b, errInternalBadWireType
-	}
-	x, n := decodeVarint(b)
-	if n == 0 {
-		return nil, io.ErrUnexpectedEOF
-	}
-	b = b[n:]
-	if x > uint64(len(b)) {
-		return nil, io.ErrUnexpectedEOF
-	}
-	v := string(b[:x])
-	*f.toString() = v
-	return b[x:], nil
-}
-
-func unmarshalStringPtr(b []byte, f pointer, w int) ([]byte, error) {
-	if w != WireBytes {
-		return b, errInternalBadWireType
-	}
-	x, n := decodeVarint(b)
-	if n == 0 {
-		return nil, io.ErrUnexpectedEOF
-	}
-	b = b[n:]
-	if x > uint64(len(b)) {
-		return nil, io.ErrUnexpectedEOF
-	}
-	v := string(b[:x])
-	*f.toStringPtr() = &v
-	return b[x:], nil
-}
-
-func unmarshalStringSlice(b []byte, f pointer, w int) ([]byte, error) {
-	if w != WireBytes {
-		return b, errInternalBadWireType
-	}
-	x, n := decodeVarint(b)
-	if n == 0 {
-		return nil, io.ErrUnexpectedEOF
-	}
-	b = b[n:]
-	if x > uint64(len(b)) {
-		return nil, io.ErrUnexpectedEOF
-	}
-	v := string(b[:x])
-	s := f.toStringSlice()
-	*s = append(*s, v)
-	return b[x:], nil
-}
-
-func unmarshalUTF8StringValue(b []byte, f pointer, w int) ([]byte, error) {
-	if w != WireBytes {
-		return b, errInternalBadWireType
-	}
-	x, n := decodeVarint(b)
-	if n == 0 {
-		return nil, io.ErrUnexpectedEOF
-	}
-	b = b[n:]
-	if x > uint64(len(b)) {
-		return nil, io.ErrUnexpectedEOF
-	}
-	v := string(b[:x])
-	*f.toString() = v
-	if !utf8.ValidString(v) {
-		return b[x:], errInvalidUTF8
-	}
-	return b[x:], nil
-}
-
-func unmarshalUTF8StringPtr(b []byte, f pointer, w int) ([]byte, error) {
-	if w != WireBytes {
-		return b, errInternalBadWireType
-	}
-	x, n := decodeVarint(b)
-	if n == 0 {
-		return nil, io.ErrUnexpectedEOF
-	}
-	b = b[n:]
-	if x > uint64(len(b)) {
-		return nil, io.ErrUnexpectedEOF
-	}
-	v := string(b[:x])
-	*f.toStringPtr() = &v
-	if !utf8.ValidString(v) {
-		return b[x:], errInvalidUTF8
-	}
-	return b[x:], nil
-}
-
-func unmarshalUTF8StringSlice(b []byte, f pointer, w int) ([]byte, error) {
-	if w != WireBytes {
-		return b, errInternalBadWireType
-	}
-	x, n := decodeVarint(b)
-	if n == 0 {
-		return nil, io.ErrUnexpectedEOF
-	}
-	b = b[n:]
-	if x > uint64(len(b)) {
-		return nil, io.ErrUnexpectedEOF
-	}
-	v := string(b[:x])
-	s := f.toStringSlice()
-	*s = append(*s, v)
-	if !utf8.ValidString(v) {
-		return b[x:], errInvalidUTF8
-	}
-	return b[x:], nil
-}
-
-var emptyBuf [0]byte
-
-func unmarshalBytesValue(b []byte, f pointer, w int) ([]byte, error) {
-	if w != WireBytes {
-		return b, errInternalBadWireType
-	}
-	x, n := decodeVarint(b)
-	if n == 0 {
-		return nil, io.ErrUnexpectedEOF
-	}
-	b = b[n:]
-	if x > uint64(len(b)) {
-		return nil, io.ErrUnexpectedEOF
-	}
-	// The use of append here is a trick which avoids the zeroing
-	// that would be required if we used a make/copy pair.
-	// We append to emptyBuf instead of nil because we want
-	// a non-nil result even when the length is 0.
-	v := append(emptyBuf[:], b[:x]...)
-	*f.toBytes() = v
-	return b[x:], nil
-}
-
-func unmarshalBytesSlice(b []byte, f pointer, w int) ([]byte, error) {
-	if w != WireBytes {
-		return b, errInternalBadWireType
-	}
-	x, n := decodeVarint(b)
-	if n == 0 {
-		return nil, io.ErrUnexpectedEOF
-	}
-	b = b[n:]
-	if x > uint64(len(b)) {
-		return nil, io.ErrUnexpectedEOF
-	}
-	v := append(emptyBuf[:], b[:x]...)
-	s := f.toBytesSlice()
-	*s = append(*s, v)
-	return b[x:], nil
-}
-
-func makeUnmarshalMessagePtr(sub *unmarshalInfo, name string) unmarshaler {
-	return func(b []byte, f pointer, w int) ([]byte, error) {
-		if w != WireBytes {
-			return b, errInternalBadWireType
-		}
-		x, n := decodeVarint(b)
-		if n == 0 {
-			return nil, io.ErrUnexpectedEOF
-		}
-		b = b[n:]
-		if x > uint64(len(b)) {
-			return nil, io.ErrUnexpectedEOF
-		}
-		// First read the message field to see if something is there.
-		// The semantics of multiple submessages are weird.  Instead of
-		// the last one winning (as it is for all other fields), multiple
-		// submessages are merged.
-		v := f.getPointer()
-		if v.isNil() {
-			v = valToPointer(reflect.New(sub.typ))
-			f.setPointer(v)
-		}
-		err := sub.unmarshal(v, b[:x])
-		if err != nil {
-			if r, ok := err.(*RequiredNotSetError); ok {
-				r.field = name + "." + r.field
-			} else {
-				return nil, err
-			}
-		}
-		return b[x:], err
-	}
-}
-
-func makeUnmarshalMessageSlicePtr(sub *unmarshalInfo, name string) unmarshaler {
-	return func(b []byte, f pointer, w int) ([]byte, error) {
-		if w != WireBytes {
-			return b, errInternalBadWireType
-		}
-		x, n := decodeVarint(b)
-		if n == 0 {
-			return nil, io.ErrUnexpectedEOF
-		}
-		b = b[n:]
-		if x > uint64(len(b)) {
-			return nil, io.ErrUnexpectedEOF
-		}
-		v := valToPointer(reflect.New(sub.typ))
-		err := sub.unmarshal(v, b[:x])
-		if err != nil {
-			if r, ok := err.(*RequiredNotSetError); ok {
-				r.field = name + "." + r.field
-			} else {
-				return nil, err
-			}
-		}
-		f.appendPointer(v)
-		return b[x:], err
-	}
-}
-
-func makeUnmarshalGroupPtr(sub *unmarshalInfo, name string) unmarshaler {
-	return func(b []byte, f pointer, w int) ([]byte, error) {
-		if w != WireStartGroup {
-			return b, errInternalBadWireType
-		}
-		x, y := findEndGroup(b)
-		if x < 0 {
-			return nil, io.ErrUnexpectedEOF
-		}
-		v := f.getPointer()
-		if v.isNil() {
-			v = valToPointer(reflect.New(sub.typ))
-			f.setPointer(v)
-		}
-		err := sub.unmarshal(v, b[:x])
-		if err != nil {
-			if r, ok := err.(*RequiredNotSetError); ok {
-				r.field = name + "." + r.field
-			} else {
-				return nil, err
-			}
-		}
-		return b[y:], err
-	}
-}
-
-func makeUnmarshalGroupSlicePtr(sub *unmarshalInfo, name string) unmarshaler {
-	return func(b []byte, f pointer, w int) ([]byte, error) {
-		if w != WireStartGroup {
-			return b, errInternalBadWireType
-		}
-		x, y := findEndGroup(b)
-		if x < 0 {
-			return nil, io.ErrUnexpectedEOF
-		}
-		v := valToPointer(reflect.New(sub.typ))
-		err := sub.unmarshal(v, b[:x])
-		if err != nil {
-			if r, ok := err.(*RequiredNotSetError); ok {
-				r.field = name + "." + r.field
-			} else {
-				return nil, err
-			}
-		}
-		f.appendPointer(v)
-		return b[y:], err
-	}
-}
-
-func makeUnmarshalMap(f *reflect.StructField) unmarshaler {
-	t := f.Type
-	kt := t.Key()
-	vt := t.Elem()
-	unmarshalKey := typeUnmarshaler(kt, f.Tag.Get("protobuf_key"))
-	unmarshalVal := typeUnmarshaler(vt, f.Tag.Get("protobuf_val"))
-	return func(b []byte, f pointer, w int) ([]byte, error) {
-		// The map entry is a submessage. Figure out how big it is.
-		if w != WireBytes {
-			return nil, fmt.Errorf("proto: bad wiretype for map field: got %d want %d", w, WireBytes)
-		}
-		x, n := decodeVarint(b)
-		if n == 0 {
-			return nil, io.ErrUnexpectedEOF
-		}
-		b = b[n:]
-		if x > uint64(len(b)) {
-			return nil, io.ErrUnexpectedEOF
-		}
-		r := b[x:] // unused data to return
-		b = b[:x]  // data for map entry
-
-		// Note: we could use #keys * #values ~= 200 functions
-		// to do map decoding without reflection. Probably not worth it.
-		// Maps will be somewhat slow. Oh well.
-
-		// Read key and value from data.
-		var nerr nonFatal
-		k := reflect.New(kt)
-		v := reflect.New(vt)
-		for len(b) > 0 {
-			x, n := decodeVarint(b)
-			if n == 0 {
-				return nil, io.ErrUnexpectedEOF
-			}
-			wire := int(x) & 7
-			b = b[n:]
-
-			var err error
-			switch x >> 3 {
-			case 1:
-				b, err = unmarshalKey(b, valToPointer(k), wire)
-			case 2:
-				b, err = unmarshalVal(b, valToPointer(v), wire)
-			default:
-				err = errInternalBadWireType // skip unknown tag
-			}
-
-			if nerr.Merge(err) {
-				continue
-			}
-			if err != errInternalBadWireType {
-				return nil, err
-			}
-
-			// Skip past unknown fields.
-			b, err = skipField(b, wire)
-			if err != nil {
-				return nil, err
-			}
-		}
-
-		// Get map, allocate if needed.
-		m := f.asPointerTo(t).Elem() // an addressable map[K]T
-		if m.IsNil() {
-			m.Set(reflect.MakeMap(t))
-		}
-
-		// Insert into map.
-		m.SetMapIndex(k.Elem(), v.Elem())
-
-		return r, nerr.E
-	}
-}
-
-// makeUnmarshalOneof makes an unmarshaler for oneof fields.
-// for:
-// message Msg {
-//   oneof F {
-//     int64 X = 1;
-//     float64 Y = 2;
-//   }
-// }
-// typ is the type of the concrete entry for a oneof case (e.g. Msg_X).
-// ityp is the interface type of the oneof field (e.g. isMsg_F).
-// unmarshal is the unmarshaler for the base type of the oneof case (e.g. int64).
-// Note that this function will be called once for each case in the oneof.
-func makeUnmarshalOneof(typ, ityp reflect.Type, unmarshal unmarshaler) unmarshaler {
-	sf := typ.Field(0)
-	field0 := toField(&sf)
-	return func(b []byte, f pointer, w int) ([]byte, error) {
-		// Allocate holder for value.
-		v := reflect.New(typ)
-
-		// Unmarshal data into holder.
-		// We unmarshal into the first field of the holder object.
-		var err error
-		var nerr nonFatal
-		b, err = unmarshal(b, valToPointer(v).offset(field0), w)
-		if !nerr.Merge(err) {
-			return nil, err
-		}
-
-		// Write pointer to holder into target field.
-		f.asPointerTo(ityp).Elem().Set(v)
-
-		return b, nerr.E
-	}
-}
-
-// Error used by decode internally.
-var errInternalBadWireType = errors.New("proto: internal error: bad wiretype")
-
-// skipField skips past a field of type wire and returns the remaining bytes.
-func skipField(b []byte, wire int) ([]byte, error) {
-	switch wire {
-	case WireVarint:
-		_, k := decodeVarint(b)
-		if k == 0 {
-			return b, io.ErrUnexpectedEOF
-		}
-		b = b[k:]
-	case WireFixed32:
-		if len(b) < 4 {
-			return b, io.ErrUnexpectedEOF
-		}
-		b = b[4:]
-	case WireFixed64:
-		if len(b) < 8 {
-			return b, io.ErrUnexpectedEOF
-		}
-		b = b[8:]
-	case WireBytes:
-		m, k := decodeVarint(b)
-		if k == 0 || uint64(len(b)-k) < m {
-			return b, io.ErrUnexpectedEOF
-		}
-		b = b[uint64(k)+m:]
-	case WireStartGroup:
-		_, i := findEndGroup(b)
-		if i == -1 {
-			return b, io.ErrUnexpectedEOF
-		}
-		b = b[i:]
-	default:
-		return b, fmt.Errorf("proto: can't skip unknown wire type %d", wire)
-	}
-	return b, nil
-}
-
-// findEndGroup finds the index of the next EndGroup tag.
-// Groups may be nested, so the "next" EndGroup tag is the first
-// unpaired EndGroup.
-// findEndGroup returns the indexes of the start and end of the EndGroup tag.
-// Returns (-1,-1) if it can't find one.
-func findEndGroup(b []byte) (int, int) {
-	depth := 1
-	i := 0
-	for {
-		x, n := decodeVarint(b[i:])
-		if n == 0 {
-			return -1, -1
-		}
-		j := i
-		i += n
-		switch x & 7 {
-		case WireVarint:
-			_, k := decodeVarint(b[i:])
-			if k == 0 {
-				return -1, -1
-			}
-			i += k
-		case WireFixed32:
-			if len(b)-4 < i {
-				return -1, -1
-			}
-			i += 4
-		case WireFixed64:
-			if len(b)-8 < i {
-				return -1, -1
-			}
-			i += 8
-		case WireBytes:
-			m, k := decodeVarint(b[i:])
-			if k == 0 {
-				return -1, -1
-			}
-			i += k
-			if uint64(len(b)-i) < m {
-				return -1, -1
-			}
-			i += int(m)
-		case WireStartGroup:
-			depth++
-		case WireEndGroup:
-			depth--
-			if depth == 0 {
-				return j, i
-			}
-		default:
-			return -1, -1
-		}
-	}
-}
-
-// encodeVarint appends a varint-encoded integer to b and returns the result.
-func encodeVarint(b []byte, x uint64) []byte {
-	for x >= 1<<7 {
-		b = append(b, byte(x&0x7f|0x80))
-		x >>= 7
-	}
-	return append(b, byte(x))
-}
-
-// decodeVarint reads a varint-encoded integer from b.
-// Returns the decoded integer and the number of bytes read.
-// If there is an error, it returns 0,0.
-func decodeVarint(b []byte) (uint64, int) {
-	var x, y uint64
-	if len(b) <= 0 {
-		goto bad
-	}
-	x = uint64(b[0])
-	if x < 0x80 {
-		return x, 1
-	}
-	x -= 0x80
-
-	if len(b) <= 1 {
-		goto bad
-	}
-	y = uint64(b[1])
-	x += y << 7
-	if y < 0x80 {
-		return x, 2
-	}
-	x -= 0x80 << 7
-
-	if len(b) <= 2 {
-		goto bad
-	}
-	y = uint64(b[2])
-	x += y << 14
-	if y < 0x80 {
-		return x, 3
-	}
-	x -= 0x80 << 14
-
-	if len(b) <= 3 {
-		goto bad
-	}
-	y = uint64(b[3])
-	x += y << 21
-	if y < 0x80 {
-		return x, 4
-	}
-	x -= 0x80 << 21
-
-	if len(b) <= 4 {
-		goto bad
-	}
-	y = uint64(b[4])
-	x += y << 28
-	if y < 0x80 {
-		return x, 5
-	}
-	x -= 0x80 << 28
-
-	if len(b) <= 5 {
-		goto bad
-	}
-	y = uint64(b[5])
-	x += y << 35
-	if y < 0x80 {
-		return x, 6
-	}
-	x -= 0x80 << 35
-
-	if len(b) <= 6 {
-		goto bad
-	}
-	y = uint64(b[6])
-	x += y << 42
-	if y < 0x80 {
-		return x, 7
-	}
-	x -= 0x80 << 42
-
-	if len(b) <= 7 {
-		goto bad
-	}
-	y = uint64(b[7])
-	x += y << 49
-	if y < 0x80 {
-		return x, 8
-	}
-	x -= 0x80 << 49
-
-	if len(b) <= 8 {
-		goto bad
-	}
-	y = uint64(b[8])
-	x += y << 56
-	if y < 0x80 {
-		return x, 9
-	}
-	x -= 0x80 << 56
-
-	if len(b) <= 9 {
-		goto bad
-	}
-	y = uint64(b[9])
-	x += y << 63
-	if y < 2 {
-		return x, 10
-	}
-
-bad:
-	return 0, 0
-}

+ 0 - 843
vendor/github.com/golang/protobuf/proto/text.go

@@ -1,843 +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.
-
-package proto
-
-// Functions for writing the text protocol buffer format.
-
-import (
-	"bufio"
-	"bytes"
-	"encoding"
-	"errors"
-	"fmt"
-	"io"
-	"log"
-	"math"
-	"reflect"
-	"sort"
-	"strings"
-)
-
-var (
-	newline         = []byte("\n")
-	spaces          = []byte("                                        ")
-	endBraceNewline = []byte("}\n")
-	backslashN      = []byte{'\\', 'n'}
-	backslashR      = []byte{'\\', 'r'}
-	backslashT      = []byte{'\\', 't'}
-	backslashDQ     = []byte{'\\', '"'}
-	backslashBS     = []byte{'\\', '\\'}
-	posInf          = []byte("inf")
-	negInf          = []byte("-inf")
-	nan             = []byte("nan")
-)
-
-type writer interface {
-	io.Writer
-	WriteByte(byte) error
-}
-
-// textWriter is an io.Writer that tracks its indentation level.
-type textWriter struct {
-	ind      int
-	complete bool // if the current position is a complete line
-	compact  bool // whether to write out as a one-liner
-	w        writer
-}
-
-func (w *textWriter) WriteString(s string) (n int, err error) {
-	if !strings.Contains(s, "\n") {
-		if !w.compact && w.complete {
-			w.writeIndent()
-		}
-		w.complete = false
-		return io.WriteString(w.w, s)
-	}
-	// WriteString is typically called without newlines, so this
-	// codepath and its copy are rare.  We copy to avoid
-	// duplicating all of Write's logic here.
-	return w.Write([]byte(s))
-}
-
-func (w *textWriter) Write(p []byte) (n int, err error) {
-	newlines := bytes.Count(p, newline)
-	if newlines == 0 {
-		if !w.compact && w.complete {
-			w.writeIndent()
-		}
-		n, err = w.w.Write(p)
-		w.complete = false
-		return n, err
-	}
-
-	frags := bytes.SplitN(p, newline, newlines+1)
-	if w.compact {
-		for i, frag := range frags {
-			if i > 0 {
-				if err := w.w.WriteByte(' '); err != nil {
-					return n, err
-				}
-				n++
-			}
-			nn, err := w.w.Write(frag)
-			n += nn
-			if err != nil {
-				return n, err
-			}
-		}
-		return n, nil
-	}
-
-	for i, frag := range frags {
-		if w.complete {
-			w.writeIndent()
-		}
-		nn, err := w.w.Write(frag)
-		n += nn
-		if err != nil {
-			return n, err
-		}
-		if i+1 < len(frags) {
-			if err := w.w.WriteByte('\n'); err != nil {
-				return n, err
-			}
-			n++
-		}
-	}
-	w.complete = len(frags[len(frags)-1]) == 0
-	return n, nil
-}
-
-func (w *textWriter) WriteByte(c byte) error {
-	if w.compact && c == '\n' {
-		c = ' '
-	}
-	if !w.compact && w.complete {
-		w.writeIndent()
-	}
-	err := w.w.WriteByte(c)
-	w.complete = c == '\n'
-	return err
-}
-
-func (w *textWriter) indent() { w.ind++ }
-
-func (w *textWriter) unindent() {
-	if w.ind == 0 {
-		log.Print("proto: textWriter unindented too far")
-		return
-	}
-	w.ind--
-}
-
-func writeName(w *textWriter, props *Properties) error {
-	if _, err := w.WriteString(props.OrigName); err != nil {
-		return err
-	}
-	if props.Wire != "group" {
-		return w.WriteByte(':')
-	}
-	return nil
-}
-
-func requiresQuotes(u string) bool {
-	// When type URL contains any characters except [0-9A-Za-z./\-]*, it must be quoted.
-	for _, ch := range u {
-		switch {
-		case ch == '.' || ch == '/' || ch == '_':
-			continue
-		case '0' <= ch && ch <= '9':
-			continue
-		case 'A' <= ch && ch <= 'Z':
-			continue
-		case 'a' <= ch && ch <= 'z':
-			continue
-		default:
-			return true
-		}
-	}
-	return false
-}
-
-// isAny reports whether sv is a google.protobuf.Any message
-func isAny(sv reflect.Value) bool {
-	type wkt interface {
-		XXX_WellKnownType() string
-	}
-	t, ok := sv.Addr().Interface().(wkt)
-	return ok && t.XXX_WellKnownType() == "Any"
-}
-
-// writeProto3Any writes an expanded google.protobuf.Any message.
-//
-// It returns (false, nil) if sv value can't be unmarshaled (e.g. because
-// required messages are not linked in).
-//
-// It returns (true, error) when sv was written in expanded format or an error
-// was encountered.
-func (tm *TextMarshaler) writeProto3Any(w *textWriter, sv reflect.Value) (bool, error) {
-	turl := sv.FieldByName("TypeUrl")
-	val := sv.FieldByName("Value")
-	if !turl.IsValid() || !val.IsValid() {
-		return true, errors.New("proto: invalid google.protobuf.Any message")
-	}
-
-	b, ok := val.Interface().([]byte)
-	if !ok {
-		return true, errors.New("proto: invalid google.protobuf.Any message")
-	}
-
-	parts := strings.Split(turl.String(), "/")
-	mt := MessageType(parts[len(parts)-1])
-	if mt == nil {
-		return false, nil
-	}
-	m := reflect.New(mt.Elem())
-	if err := Unmarshal(b, m.Interface().(Message)); err != nil {
-		return false, nil
-	}
-	w.Write([]byte("["))
-	u := turl.String()
-	if requiresQuotes(u) {
-		writeString(w, u)
-	} else {
-		w.Write([]byte(u))
-	}
-	if w.compact {
-		w.Write([]byte("]:<"))
-	} else {
-		w.Write([]byte("]: <\n"))
-		w.ind++
-	}
-	if err := tm.writeStruct(w, m.Elem()); err != nil {
-		return true, err
-	}
-	if w.compact {
-		w.Write([]byte("> "))
-	} else {
-		w.ind--
-		w.Write([]byte(">\n"))
-	}
-	return true, nil
-}
-
-func (tm *TextMarshaler) writeStruct(w *textWriter, sv reflect.Value) error {
-	if tm.ExpandAny && isAny(sv) {
-		if canExpand, err := tm.writeProto3Any(w, sv); canExpand {
-			return err
-		}
-	}
-	st := sv.Type()
-	sprops := GetProperties(st)
-	for i := 0; i < sv.NumField(); i++ {
-		fv := sv.Field(i)
-		props := sprops.Prop[i]
-		name := st.Field(i).Name
-
-		if name == "XXX_NoUnkeyedLiteral" {
-			continue
-		}
-
-		if strings.HasPrefix(name, "XXX_") {
-			// There are two XXX_ fields:
-			//   XXX_unrecognized []byte
-			//   XXX_extensions   map[int32]proto.Extension
-			// The first is handled here;
-			// the second is handled at the bottom of this function.
-			if name == "XXX_unrecognized" && !fv.IsNil() {
-				if err := writeUnknownStruct(w, fv.Interface().([]byte)); err != nil {
-					return err
-				}
-			}
-			continue
-		}
-		if fv.Kind() == reflect.Ptr && fv.IsNil() {
-			// Field not filled in. This could be an optional field or
-			// a required field that wasn't filled in. Either way, there
-			// isn't anything we can show for it.
-			continue
-		}
-		if fv.Kind() == reflect.Slice && fv.IsNil() {
-			// Repeated field that is empty, or a bytes field that is unused.
-			continue
-		}
-
-		if props.Repeated && fv.Kind() == reflect.Slice {
-			// Repeated field.
-			for j := 0; j < fv.Len(); j++ {
-				if err := writeName(w, props); err != nil {
-					return err
-				}
-				if !w.compact {
-					if err := w.WriteByte(' '); err != nil {
-						return err
-					}
-				}
-				v := fv.Index(j)
-				if v.Kind() == reflect.Ptr && v.IsNil() {
-					// A nil message in a repeated field is not valid,
-					// but we can handle that more gracefully than panicking.
-					if _, err := w.Write([]byte("<nil>\n")); err != nil {
-						return err
-					}
-					continue
-				}
-				if err := tm.writeAny(w, v, props); err != nil {
-					return err
-				}
-				if err := w.WriteByte('\n'); err != nil {
-					return err
-				}
-			}
-			continue
-		}
-		if fv.Kind() == reflect.Map {
-			// Map fields are rendered as a repeated struct with key/value fields.
-			keys := fv.MapKeys()
-			sort.Sort(mapKeys(keys))
-			for _, key := range keys {
-				val := fv.MapIndex(key)
-				if err := writeName(w, props); err != nil {
-					return err
-				}
-				if !w.compact {
-					if err := w.WriteByte(' '); err != nil {
-						return err
-					}
-				}
-				// open struct
-				if err := w.WriteByte('<'); err != nil {
-					return err
-				}
-				if !w.compact {
-					if err := w.WriteByte('\n'); err != nil {
-						return err
-					}
-				}
-				w.indent()
-				// key
-				if _, err := w.WriteString("key:"); err != nil {
-					return err
-				}
-				if !w.compact {
-					if err := w.WriteByte(' '); err != nil {
-						return err
-					}
-				}
-				if err := tm.writeAny(w, key, props.MapKeyProp); err != nil {
-					return err
-				}
-				if err := w.WriteByte('\n'); err != nil {
-					return err
-				}
-				// nil values aren't legal, but we can avoid panicking because of them.
-				if val.Kind() != reflect.Ptr || !val.IsNil() {
-					// value
-					if _, err := w.WriteString("value:"); err != nil {
-						return err
-					}
-					if !w.compact {
-						if err := w.WriteByte(' '); err != nil {
-							return err
-						}
-					}
-					if err := tm.writeAny(w, val, props.MapValProp); err != nil {
-						return err
-					}
-					if err := w.WriteByte('\n'); err != nil {
-						return err
-					}
-				}
-				// close struct
-				w.unindent()
-				if err := w.WriteByte('>'); err != nil {
-					return err
-				}
-				if err := w.WriteByte('\n'); err != nil {
-					return err
-				}
-			}
-			continue
-		}
-		if props.proto3 && fv.Kind() == reflect.Slice && fv.Len() == 0 {
-			// empty bytes field
-			continue
-		}
-		if fv.Kind() != reflect.Ptr && fv.Kind() != reflect.Slice {
-			// proto3 non-repeated scalar field; skip if zero value
-			if isProto3Zero(fv) {
-				continue
-			}
-		}
-
-		if fv.Kind() == reflect.Interface {
-			// Check if it is a oneof.
-			if st.Field(i).Tag.Get("protobuf_oneof") != "" {
-				// fv is nil, or holds a pointer to generated struct.
-				// That generated struct has exactly one field,
-				// which has a protobuf struct tag.
-				if fv.IsNil() {
-					continue
-				}
-				inner := fv.Elem().Elem() // interface -> *T -> T
-				tag := inner.Type().Field(0).Tag.Get("protobuf")
-				props = new(Properties) // Overwrite the outer props var, but not its pointee.
-				props.Parse(tag)
-				// Write the value in the oneof, not the oneof itself.
-				fv = inner.Field(0)
-
-				// Special case to cope with malformed messages gracefully:
-				// If the value in the oneof is a nil pointer, don't panic
-				// in writeAny.
-				if fv.Kind() == reflect.Ptr && fv.IsNil() {
-					// Use errors.New so writeAny won't render quotes.
-					msg := errors.New("/* nil */")
-					fv = reflect.ValueOf(&msg).Elem()
-				}
-			}
-		}
-
-		if err := writeName(w, props); err != nil {
-			return err
-		}
-		if !w.compact {
-			if err := w.WriteByte(' '); err != nil {
-				return err
-			}
-		}
-
-		// Enums have a String method, so writeAny will work fine.
-		if err := tm.writeAny(w, fv, props); err != nil {
-			return err
-		}
-
-		if err := w.WriteByte('\n'); err != nil {
-			return err
-		}
-	}
-
-	// Extensions (the XXX_extensions field).
-	pv := sv.Addr()
-	if _, err := extendable(pv.Interface()); err == nil {
-		if err := tm.writeExtensions(w, pv); err != nil {
-			return err
-		}
-	}
-
-	return nil
-}
-
-// writeAny writes an arbitrary field.
-func (tm *TextMarshaler) writeAny(w *textWriter, v reflect.Value, props *Properties) error {
-	v = reflect.Indirect(v)
-
-	// Floats have special cases.
-	if v.Kind() == reflect.Float32 || v.Kind() == reflect.Float64 {
-		x := v.Float()
-		var b []byte
-		switch {
-		case math.IsInf(x, 1):
-			b = posInf
-		case math.IsInf(x, -1):
-			b = negInf
-		case math.IsNaN(x):
-			b = nan
-		}
-		if b != nil {
-			_, err := w.Write(b)
-			return err
-		}
-		// Other values are handled below.
-	}
-
-	// We don't attempt to serialise every possible value type; only those
-	// that can occur in protocol buffers.
-	switch v.Kind() {
-	case reflect.Slice:
-		// Should only be a []byte; repeated fields are handled in writeStruct.
-		if err := writeString(w, string(v.Bytes())); err != nil {
-			return err
-		}
-	case reflect.String:
-		if err := writeString(w, v.String()); err != nil {
-			return err
-		}
-	case reflect.Struct:
-		// Required/optional group/message.
-		var bra, ket byte = '<', '>'
-		if props != nil && props.Wire == "group" {
-			bra, ket = '{', '}'
-		}
-		if err := w.WriteByte(bra); err != nil {
-			return err
-		}
-		if !w.compact {
-			if err := w.WriteByte('\n'); err != nil {
-				return err
-			}
-		}
-		w.indent()
-		if v.CanAddr() {
-			// Calling v.Interface on a struct causes the reflect package to
-			// copy the entire struct. This is racy with the new Marshaler
-			// since we atomically update the XXX_sizecache.
-			//
-			// Thus, we retrieve a pointer to the struct if possible to avoid
-			// a race since v.Interface on the pointer doesn't copy the struct.
-			//
-			// If v is not addressable, then we are not worried about a race
-			// since it implies that the binary Marshaler cannot possibly be
-			// mutating this value.
-			v = v.Addr()
-		}
-		if etm, ok := v.Interface().(encoding.TextMarshaler); ok {
-			text, err := etm.MarshalText()
-			if err != nil {
-				return err
-			}
-			if _, err = w.Write(text); err != nil {
-				return err
-			}
-		} else {
-			if v.Kind() == reflect.Ptr {
-				v = v.Elem()
-			}
-			if err := tm.writeStruct(w, v); err != nil {
-				return err
-			}
-		}
-		w.unindent()
-		if err := w.WriteByte(ket); err != nil {
-			return err
-		}
-	default:
-		_, err := fmt.Fprint(w, v.Interface())
-		return err
-	}
-	return nil
-}
-
-// equivalent to C's isprint.
-func isprint(c byte) bool {
-	return c >= 0x20 && c < 0x7f
-}
-
-// writeString writes a string in the protocol buffer text format.
-// It is similar to strconv.Quote except we don't use Go escape sequences,
-// we treat the string as a byte sequence, and we use octal escapes.
-// These differences are to maintain interoperability with the other
-// languages' implementations of the text format.
-func writeString(w *textWriter, s string) error {
-	// use WriteByte here to get any needed indent
-	if err := w.WriteByte('"'); err != nil {
-		return err
-	}
-	// Loop over the bytes, not the runes.
-	for i := 0; i < len(s); i++ {
-		var err error
-		// Divergence from C++: we don't escape apostrophes.
-		// There's no need to escape them, and the C++ parser
-		// copes with a naked apostrophe.
-		switch c := s[i]; c {
-		case '\n':
-			_, err = w.w.Write(backslashN)
-		case '\r':
-			_, err = w.w.Write(backslashR)
-		case '\t':
-			_, err = w.w.Write(backslashT)
-		case '"':
-			_, err = w.w.Write(backslashDQ)
-		case '\\':
-			_, err = w.w.Write(backslashBS)
-		default:
-			if isprint(c) {
-				err = w.w.WriteByte(c)
-			} else {
-				_, err = fmt.Fprintf(w.w, "\\%03o", c)
-			}
-		}
-		if err != nil {
-			return err
-		}
-	}
-	return w.WriteByte('"')
-}
-
-func writeUnknownStruct(w *textWriter, data []byte) (err error) {
-	if !w.compact {
-		if _, err := fmt.Fprintf(w, "/* %d unknown bytes */\n", len(data)); err != nil {
-			return err
-		}
-	}
-	b := NewBuffer(data)
-	for b.index < len(b.buf) {
-		x, err := b.DecodeVarint()
-		if err != nil {
-			_, err := fmt.Fprintf(w, "/* %v */\n", err)
-			return err
-		}
-		wire, tag := x&7, x>>3
-		if wire == WireEndGroup {
-			w.unindent()
-			if _, err := w.Write(endBraceNewline); err != nil {
-				return err
-			}
-			continue
-		}
-		if _, err := fmt.Fprint(w, tag); err != nil {
-			return err
-		}
-		if wire != WireStartGroup {
-			if err := w.WriteByte(':'); err != nil {
-				return err
-			}
-		}
-		if !w.compact || wire == WireStartGroup {
-			if err := w.WriteByte(' '); err != nil {
-				return err
-			}
-		}
-		switch wire {
-		case WireBytes:
-			buf, e := b.DecodeRawBytes(false)
-			if e == nil {
-				_, err = fmt.Fprintf(w, "%q", buf)
-			} else {
-				_, err = fmt.Fprintf(w, "/* %v */", e)
-			}
-		case WireFixed32:
-			x, err = b.DecodeFixed32()
-			err = writeUnknownInt(w, x, err)
-		case WireFixed64:
-			x, err = b.DecodeFixed64()
-			err = writeUnknownInt(w, x, err)
-		case WireStartGroup:
-			err = w.WriteByte('{')
-			w.indent()
-		case WireVarint:
-			x, err = b.DecodeVarint()
-			err = writeUnknownInt(w, x, err)
-		default:
-			_, err = fmt.Fprintf(w, "/* unknown wire type %d */", wire)
-		}
-		if err != nil {
-			return err
-		}
-		if err = w.WriteByte('\n'); err != nil {
-			return err
-		}
-	}
-	return nil
-}
-
-func writeUnknownInt(w *textWriter, x uint64, err error) error {
-	if err == nil {
-		_, err = fmt.Fprint(w, x)
-	} else {
-		_, err = fmt.Fprintf(w, "/* %v */", err)
-	}
-	return err
-}
-
-type int32Slice []int32
-
-func (s int32Slice) Len() int           { return len(s) }
-func (s int32Slice) Less(i, j int) bool { return s[i] < s[j] }
-func (s int32Slice) Swap(i, j int)      { s[i], s[j] = s[j], s[i] }
-
-// writeExtensions writes all the extensions in pv.
-// pv is assumed to be a pointer to a protocol message struct that is extendable.
-func (tm *TextMarshaler) writeExtensions(w *textWriter, pv reflect.Value) error {
-	emap := extensionMaps[pv.Type().Elem()]
-	ep, _ := extendable(pv.Interface())
-
-	// Order the extensions by ID.
-	// This isn't strictly necessary, but it will give us
-	// canonical output, which will also make testing easier.
-	m, mu := ep.extensionsRead()
-	if m == nil {
-		return nil
-	}
-	mu.Lock()
-	ids := make([]int32, 0, len(m))
-	for id := range m {
-		ids = append(ids, id)
-	}
-	sort.Sort(int32Slice(ids))
-	mu.Unlock()
-
-	for _, extNum := range ids {
-		ext := m[extNum]
-		var desc *ExtensionDesc
-		if emap != nil {
-			desc = emap[extNum]
-		}
-		if desc == nil {
-			// Unknown extension.
-			if err := writeUnknownStruct(w, ext.enc); err != nil {
-				return err
-			}
-			continue
-		}
-
-		pb, err := GetExtension(ep, desc)
-		if err != nil {
-			return fmt.Errorf("failed getting extension: %v", err)
-		}
-
-		// Repeated extensions will appear as a slice.
-		if !desc.repeated() {
-			if err := tm.writeExtension(w, desc.Name, pb); err != nil {
-				return err
-			}
-		} else {
-			v := reflect.ValueOf(pb)
-			for i := 0; i < v.Len(); i++ {
-				if err := tm.writeExtension(w, desc.Name, v.Index(i).Interface()); err != nil {
-					return err
-				}
-			}
-		}
-	}
-	return nil
-}
-
-func (tm *TextMarshaler) writeExtension(w *textWriter, name string, pb interface{}) error {
-	if _, err := fmt.Fprintf(w, "[%s]:", name); err != nil {
-		return err
-	}
-	if !w.compact {
-		if err := w.WriteByte(' '); err != nil {
-			return err
-		}
-	}
-	if err := tm.writeAny(w, reflect.ValueOf(pb), nil); err != nil {
-		return err
-	}
-	if err := w.WriteByte('\n'); err != nil {
-		return err
-	}
-	return nil
-}
-
-func (w *textWriter) writeIndent() {
-	if !w.complete {
-		return
-	}
-	remain := w.ind * 2
-	for remain > 0 {
-		n := remain
-		if n > len(spaces) {
-			n = len(spaces)
-		}
-		w.w.Write(spaces[:n])
-		remain -= n
-	}
-	w.complete = false
-}
-
-// TextMarshaler is a configurable text format marshaler.
-type TextMarshaler struct {
-	Compact   bool // use compact text format (one line).
-	ExpandAny bool // expand google.protobuf.Any messages of known types
-}
-
-// Marshal writes a given protocol buffer in text format.
-// The only errors returned are from w.
-func (tm *TextMarshaler) Marshal(w io.Writer, pb Message) error {
-	val := reflect.ValueOf(pb)
-	if pb == nil || val.IsNil() {
-		w.Write([]byte("<nil>"))
-		return nil
-	}
-	var bw *bufio.Writer
-	ww, ok := w.(writer)
-	if !ok {
-		bw = bufio.NewWriter(w)
-		ww = bw
-	}
-	aw := &textWriter{
-		w:        ww,
-		complete: true,
-		compact:  tm.Compact,
-	}
-
-	if etm, ok := pb.(encoding.TextMarshaler); ok {
-		text, err := etm.MarshalText()
-		if err != nil {
-			return err
-		}
-		if _, err = aw.Write(text); err != nil {
-			return err
-		}
-		if bw != nil {
-			return bw.Flush()
-		}
-		return nil
-	}
-	// Dereference the received pointer so we don't have outer < and >.
-	v := reflect.Indirect(val)
-	if err := tm.writeStruct(aw, v); err != nil {
-		return err
-	}
-	if bw != nil {
-		return bw.Flush()
-	}
-	return nil
-}
-
-// Text is the same as Marshal, but returns the string directly.
-func (tm *TextMarshaler) Text(pb Message) string {
-	var buf bytes.Buffer
-	tm.Marshal(&buf, pb)
-	return buf.String()
-}
-
-var (
-	defaultTextMarshaler = TextMarshaler{}
-	compactTextMarshaler = TextMarshaler{Compact: true}
-)
-
-// TODO: consider removing some of the Marshal functions below.
-
-// MarshalText writes a given protocol buffer in text format.
-// The only errors returned are from w.
-func MarshalText(w io.Writer, pb Message) error { return defaultTextMarshaler.Marshal(w, pb) }
-
-// MarshalTextString is the same as MarshalText, but returns the string directly.
-func MarshalTextString(pb Message) string { return defaultTextMarshaler.Text(pb) }
-
-// CompactText writes a given protocol buffer in compact text format (one line).
-func CompactText(w io.Writer, pb Message) error { return compactTextMarshaler.Marshal(w, pb) }
-
-// CompactTextString is the same as CompactText, but returns the string directly.
-func CompactTextString(pb Message) string { return compactTextMarshaler.Text(pb) }

+ 0 - 880
vendor/github.com/golang/protobuf/proto/text_parser.go

@@ -1,880 +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.
-
-package proto
-
-// Functions for parsing the Text protocol buffer format.
-// TODO: message sets.
-
-import (
-	"encoding"
-	"errors"
-	"fmt"
-	"reflect"
-	"strconv"
-	"strings"
-	"unicode/utf8"
-)
-
-// Error string emitted when deserializing Any and fields are already set
-const anyRepeatedlyUnpacked = "Any message unpacked multiple times, or %q already set"
-
-type ParseError struct {
-	Message string
-	Line    int // 1-based line number
-	Offset  int // 0-based byte offset from start of input
-}
-
-func (p *ParseError) Error() string {
-	if p.Line == 1 {
-		// show offset only for first line
-		return fmt.Sprintf("line 1.%d: %v", p.Offset, p.Message)
-	}
-	return fmt.Sprintf("line %d: %v", p.Line, p.Message)
-}
-
-type token struct {
-	value    string
-	err      *ParseError
-	line     int    // line number
-	offset   int    // byte number from start of input, not start of line
-	unquoted string // the unquoted version of value, if it was a quoted string
-}
-
-func (t *token) String() string {
-	if t.err == nil {
-		return fmt.Sprintf("%q (line=%d, offset=%d)", t.value, t.line, t.offset)
-	}
-	return fmt.Sprintf("parse error: %v", t.err)
-}
-
-type textParser struct {
-	s            string // remaining input
-	done         bool   // whether the parsing is finished (success or error)
-	backed       bool   // whether back() was called
-	offset, line int
-	cur          token
-}
-
-func newTextParser(s string) *textParser {
-	p := new(textParser)
-	p.s = s
-	p.line = 1
-	p.cur.line = 1
-	return p
-}
-
-func (p *textParser) errorf(format string, a ...interface{}) *ParseError {
-	pe := &ParseError{fmt.Sprintf(format, a...), p.cur.line, p.cur.offset}
-	p.cur.err = pe
-	p.done = true
-	return pe
-}
-
-// Numbers and identifiers are matched by [-+._A-Za-z0-9]
-func isIdentOrNumberChar(c byte) bool {
-	switch {
-	case 'A' <= c && c <= 'Z', 'a' <= c && c <= 'z':
-		return true
-	case '0' <= c && c <= '9':
-		return true
-	}
-	switch c {
-	case '-', '+', '.', '_':
-		return true
-	}
-	return false
-}
-
-func isWhitespace(c byte) bool {
-	switch c {
-	case ' ', '\t', '\n', '\r':
-		return true
-	}
-	return false
-}
-
-func isQuote(c byte) bool {
-	switch c {
-	case '"', '\'':
-		return true
-	}
-	return false
-}
-
-func (p *textParser) skipWhitespace() {
-	i := 0
-	for i < len(p.s) && (isWhitespace(p.s[i]) || p.s[i] == '#') {
-		if p.s[i] == '#' {
-			// comment; skip to end of line or input
-			for i < len(p.s) && p.s[i] != '\n' {
-				i++
-			}
-			if i == len(p.s) {
-				break
-			}
-		}
-		if p.s[i] == '\n' {
-			p.line++
-		}
-		i++
-	}
-	p.offset += i
-	p.s = p.s[i:len(p.s)]
-	if len(p.s) == 0 {
-		p.done = true
-	}
-}
-
-func (p *textParser) advance() {
-	// Skip whitespace
-	p.skipWhitespace()
-	if p.done {
-		return
-	}
-
-	// Start of non-whitespace
-	p.cur.err = nil
-	p.cur.offset, p.cur.line = p.offset, p.line
-	p.cur.unquoted = ""
-	switch p.s[0] {
-	case '<', '>', '{', '}', ':', '[', ']', ';', ',', '/':
-		// Single symbol
-		p.cur.value, p.s = p.s[0:1], p.s[1:len(p.s)]
-	case '"', '\'':
-		// Quoted string
-		i := 1
-		for i < len(p.s) && p.s[i] != p.s[0] && p.s[i] != '\n' {
-			if p.s[i] == '\\' && i+1 < len(p.s) {
-				// skip escaped char
-				i++
-			}
-			i++
-		}
-		if i >= len(p.s) || p.s[i] != p.s[0] {
-			p.errorf("unmatched quote")
-			return
-		}
-		unq, err := unquoteC(p.s[1:i], rune(p.s[0]))
-		if err != nil {
-			p.errorf("invalid quoted string %s: %v", p.s[0:i+1], err)
-			return
-		}
-		p.cur.value, p.s = p.s[0:i+1], p.s[i+1:len(p.s)]
-		p.cur.unquoted = unq
-	default:
-		i := 0
-		for i < len(p.s) && isIdentOrNumberChar(p.s[i]) {
-			i++
-		}
-		if i == 0 {
-			p.errorf("unexpected byte %#x", p.s[0])
-			return
-		}
-		p.cur.value, p.s = p.s[0:i], p.s[i:len(p.s)]
-	}
-	p.offset += len(p.cur.value)
-}
-
-var (
-	errBadUTF8 = errors.New("proto: bad UTF-8")
-)
-
-func unquoteC(s string, quote rune) (string, error) {
-	// This is based on C++'s tokenizer.cc.
-	// Despite its name, this is *not* parsing C syntax.
-	// For instance, "\0" is an invalid quoted string.
-
-	// Avoid allocation in trivial cases.
-	simple := true
-	for _, r := range s {
-		if r == '\\' || r == quote {
-			simple = false
-			break
-		}
-	}
-	if simple {
-		return s, nil
-	}
-
-	buf := make([]byte, 0, 3*len(s)/2)
-	for len(s) > 0 {
-		r, n := utf8.DecodeRuneInString(s)
-		if r == utf8.RuneError && n == 1 {
-			return "", errBadUTF8
-		}
-		s = s[n:]
-		if r != '\\' {
-			if r < utf8.RuneSelf {
-				buf = append(buf, byte(r))
-			} else {
-				buf = append(buf, string(r)...)
-			}
-			continue
-		}
-
-		ch, tail, err := unescape(s)
-		if err != nil {
-			return "", err
-		}
-		buf = append(buf, ch...)
-		s = tail
-	}
-	return string(buf), nil
-}
-
-func unescape(s string) (ch string, tail string, err error) {
-	r, n := utf8.DecodeRuneInString(s)
-	if r == utf8.RuneError && n == 1 {
-		return "", "", errBadUTF8
-	}
-	s = s[n:]
-	switch r {
-	case 'a':
-		return "\a", s, nil
-	case 'b':
-		return "\b", s, nil
-	case 'f':
-		return "\f", s, nil
-	case 'n':
-		return "\n", s, nil
-	case 'r':
-		return "\r", s, nil
-	case 't':
-		return "\t", s, nil
-	case 'v':
-		return "\v", s, nil
-	case '?':
-		return "?", s, nil // trigraph workaround
-	case '\'', '"', '\\':
-		return string(r), s, nil
-	case '0', '1', '2', '3', '4', '5', '6', '7':
-		if len(s) < 2 {
-			return "", "", fmt.Errorf(`\%c requires 2 following digits`, r)
-		}
-		ss := string(r) + s[:2]
-		s = s[2:]
-		i, err := strconv.ParseUint(ss, 8, 8)
-		if err != nil {
-			return "", "", fmt.Errorf(`\%s contains non-octal digits`, ss)
-		}
-		return string([]byte{byte(i)}), s, nil
-	case 'x', 'X', 'u', 'U':
-		var n int
-		switch r {
-		case 'x', 'X':
-			n = 2
-		case 'u':
-			n = 4
-		case 'U':
-			n = 8
-		}
-		if len(s) < n {
-			return "", "", fmt.Errorf(`\%c requires %d following digits`, r, n)
-		}
-		ss := s[:n]
-		s = s[n:]
-		i, err := strconv.ParseUint(ss, 16, 64)
-		if err != nil {
-			return "", "", fmt.Errorf(`\%c%s contains non-hexadecimal digits`, r, ss)
-		}
-		if r == 'x' || r == 'X' {
-			return string([]byte{byte(i)}), s, nil
-		}
-		if i > utf8.MaxRune {
-			return "", "", fmt.Errorf(`\%c%s is not a valid Unicode code point`, r, ss)
-		}
-		return string(i), s, nil
-	}
-	return "", "", fmt.Errorf(`unknown escape \%c`, r)
-}
-
-// Back off the parser by one token. Can only be done between calls to next().
-// It makes the next advance() a no-op.
-func (p *textParser) back() { p.backed = true }
-
-// Advances the parser and returns the new current token.
-func (p *textParser) next() *token {
-	if p.backed || p.done {
-		p.backed = false
-		return &p.cur
-	}
-	p.advance()
-	if p.done {
-		p.cur.value = ""
-	} else if len(p.cur.value) > 0 && isQuote(p.cur.value[0]) {
-		// Look for multiple quoted strings separated by whitespace,
-		// and concatenate them.
-		cat := p.cur
-		for {
-			p.skipWhitespace()
-			if p.done || !isQuote(p.s[0]) {
-				break
-			}
-			p.advance()
-			if p.cur.err != nil {
-				return &p.cur
-			}
-			cat.value += " " + p.cur.value
-			cat.unquoted += p.cur.unquoted
-		}
-		p.done = false // parser may have seen EOF, but we want to return cat
-		p.cur = cat
-	}
-	return &p.cur
-}
-
-func (p *textParser) consumeToken(s string) error {
-	tok := p.next()
-	if tok.err != nil {
-		return tok.err
-	}
-	if tok.value != s {
-		p.back()
-		return p.errorf("expected %q, found %q", s, tok.value)
-	}
-	return nil
-}
-
-// Return a RequiredNotSetError indicating which required field was not set.
-func (p *textParser) missingRequiredFieldError(sv reflect.Value) *RequiredNotSetError {
-	st := sv.Type()
-	sprops := GetProperties(st)
-	for i := 0; i < st.NumField(); i++ {
-		if !isNil(sv.Field(i)) {
-			continue
-		}
-
-		props := sprops.Prop[i]
-		if props.Required {
-			return &RequiredNotSetError{fmt.Sprintf("%v.%v", st, props.OrigName)}
-		}
-	}
-	return &RequiredNotSetError{fmt.Sprintf("%v.<unknown field name>", st)} // should not happen
-}
-
-// Returns the index in the struct for the named field, as well as the parsed tag properties.
-func structFieldByName(sprops *StructProperties, name string) (int, *Properties, bool) {
-	i, ok := sprops.decoderOrigNames[name]
-	if ok {
-		return i, sprops.Prop[i], true
-	}
-	return -1, nil, false
-}
-
-// Consume a ':' from the input stream (if the next token is a colon),
-// returning an error if a colon is needed but not present.
-func (p *textParser) checkForColon(props *Properties, typ reflect.Type) *ParseError {
-	tok := p.next()
-	if tok.err != nil {
-		return tok.err
-	}
-	if tok.value != ":" {
-		// Colon is optional when the field is a group or message.
-		needColon := true
-		switch props.Wire {
-		case "group":
-			needColon = false
-		case "bytes":
-			// A "bytes" field is either a message, a string, or a repeated field;
-			// those three become *T, *string and []T respectively, so we can check for
-			// this field being a pointer to a non-string.
-			if typ.Kind() == reflect.Ptr {
-				// *T or *string
-				if typ.Elem().Kind() == reflect.String {
-					break
-				}
-			} else if typ.Kind() == reflect.Slice {
-				// []T or []*T
-				if typ.Elem().Kind() != reflect.Ptr {
-					break
-				}
-			} else if typ.Kind() == reflect.String {
-				// The proto3 exception is for a string field,
-				// which requires a colon.
-				break
-			}
-			needColon = false
-		}
-		if needColon {
-			return p.errorf("expected ':', found %q", tok.value)
-		}
-		p.back()
-	}
-	return nil
-}
-
-func (p *textParser) readStruct(sv reflect.Value, terminator string) error {
-	st := sv.Type()
-	sprops := GetProperties(st)
-	reqCount := sprops.reqCount
-	var reqFieldErr error
-	fieldSet := make(map[string]bool)
-	// A struct is a sequence of "name: value", terminated by one of
-	// '>' or '}', or the end of the input.  A name may also be
-	// "[extension]" or "[type/url]".
-	//
-	// The whole struct can also be an expanded Any message, like:
-	// [type/url] < ... struct contents ... >
-	for {
-		tok := p.next()
-		if tok.err != nil {
-			return tok.err
-		}
-		if tok.value == terminator {
-			break
-		}
-		if tok.value == "[" {
-			// Looks like an extension or an Any.
-			//
-			// TODO: Check whether we need to handle
-			// namespace rooted names (e.g. ".something.Foo").
-			extName, err := p.consumeExtName()
-			if err != nil {
-				return err
-			}
-
-			if s := strings.LastIndex(extName, "/"); s >= 0 {
-				// If it contains a slash, it's an Any type URL.
-				messageName := extName[s+1:]
-				mt := MessageType(messageName)
-				if mt == nil {
-					return p.errorf("unrecognized message %q in google.protobuf.Any", messageName)
-				}
-				tok = p.next()
-				if tok.err != nil {
-					return tok.err
-				}
-				// consume an optional colon
-				if tok.value == ":" {
-					tok = p.next()
-					if tok.err != nil {
-						return tok.err
-					}
-				}
-				var terminator string
-				switch tok.value {
-				case "<":
-					terminator = ">"
-				case "{":
-					terminator = "}"
-				default:
-					return p.errorf("expected '{' or '<', found %q", tok.value)
-				}
-				v := reflect.New(mt.Elem())
-				if pe := p.readStruct(v.Elem(), terminator); pe != nil {
-					return pe
-				}
-				b, err := Marshal(v.Interface().(Message))
-				if err != nil {
-					return p.errorf("failed to marshal message of type %q: %v", messageName, err)
-				}
-				if fieldSet["type_url"] {
-					return p.errorf(anyRepeatedlyUnpacked, "type_url")
-				}
-				if fieldSet["value"] {
-					return p.errorf(anyRepeatedlyUnpacked, "value")
-				}
-				sv.FieldByName("TypeUrl").SetString(extName)
-				sv.FieldByName("Value").SetBytes(b)
-				fieldSet["type_url"] = true
-				fieldSet["value"] = true
-				continue
-			}
-
-			var desc *ExtensionDesc
-			// This could be faster, but it's functional.
-			// TODO: Do something smarter than a linear scan.
-			for _, d := range RegisteredExtensions(reflect.New(st).Interface().(Message)) {
-				if d.Name == extName {
-					desc = d
-					break
-				}
-			}
-			if desc == nil {
-				return p.errorf("unrecognized extension %q", extName)
-			}
-
-			props := &Properties{}
-			props.Parse(desc.Tag)
-
-			typ := reflect.TypeOf(desc.ExtensionType)
-			if err := p.checkForColon(props, typ); err != nil {
-				return err
-			}
-
-			rep := desc.repeated()
-
-			// Read the extension structure, and set it in
-			// the value we're constructing.
-			var ext reflect.Value
-			if !rep {
-				ext = reflect.New(typ).Elem()
-			} else {
-				ext = reflect.New(typ.Elem()).Elem()
-			}
-			if err := p.readAny(ext, props); err != nil {
-				if _, ok := err.(*RequiredNotSetError); !ok {
-					return err
-				}
-				reqFieldErr = err
-			}
-			ep := sv.Addr().Interface().(Message)
-			if !rep {
-				SetExtension(ep, desc, ext.Interface())
-			} else {
-				old, err := GetExtension(ep, desc)
-				var sl reflect.Value
-				if err == nil {
-					sl = reflect.ValueOf(old) // existing slice
-				} else {
-					sl = reflect.MakeSlice(typ, 0, 1)
-				}
-				sl = reflect.Append(sl, ext)
-				SetExtension(ep, desc, sl.Interface())
-			}
-			if err := p.consumeOptionalSeparator(); err != nil {
-				return err
-			}
-			continue
-		}
-
-		// This is a normal, non-extension field.
-		name := tok.value
-		var dst reflect.Value
-		fi, props, ok := structFieldByName(sprops, name)
-		if ok {
-			dst = sv.Field(fi)
-		} else if oop, ok := sprops.OneofTypes[name]; ok {
-			// It is a oneof.
-			props = oop.Prop
-			nv := reflect.New(oop.Type.Elem())
-			dst = nv.Elem().Field(0)
-			field := sv.Field(oop.Field)
-			if !field.IsNil() {
-				return p.errorf("field '%s' would overwrite already parsed oneof '%s'", name, sv.Type().Field(oop.Field).Name)
-			}
-			field.Set(nv)
-		}
-		if !dst.IsValid() {
-			return p.errorf("unknown field name %q in %v", name, st)
-		}
-
-		if dst.Kind() == reflect.Map {
-			// Consume any colon.
-			if err := p.checkForColon(props, dst.Type()); err != nil {
-				return err
-			}
-
-			// Construct the map if it doesn't already exist.
-			if dst.IsNil() {
-				dst.Set(reflect.MakeMap(dst.Type()))
-			}
-			key := reflect.New(dst.Type().Key()).Elem()
-			val := reflect.New(dst.Type().Elem()).Elem()
-
-			// The map entry should be this sequence of tokens:
-			//	< key : KEY value : VALUE >
-			// However, implementations may omit key or value, and technically
-			// we should support them in any order.  See b/28924776 for a time
-			// this went wrong.
-
-			tok := p.next()
-			var terminator string
-			switch tok.value {
-			case "<":
-				terminator = ">"
-			case "{":
-				terminator = "}"
-			default:
-				return p.errorf("expected '{' or '<', found %q", tok.value)
-			}
-			for {
-				tok := p.next()
-				if tok.err != nil {
-					return tok.err
-				}
-				if tok.value == terminator {
-					break
-				}
-				switch tok.value {
-				case "key":
-					if err := p.consumeToken(":"); err != nil {
-						return err
-					}
-					if err := p.readAny(key, props.MapKeyProp); err != nil {
-						return err
-					}
-					if err := p.consumeOptionalSeparator(); err != nil {
-						return err
-					}
-				case "value":
-					if err := p.checkForColon(props.MapValProp, dst.Type().Elem()); err != nil {
-						return err
-					}
-					if err := p.readAny(val, props.MapValProp); err != nil {
-						return err
-					}
-					if err := p.consumeOptionalSeparator(); err != nil {
-						return err
-					}
-				default:
-					p.back()
-					return p.errorf(`expected "key", "value", or %q, found %q`, terminator, tok.value)
-				}
-			}
-
-			dst.SetMapIndex(key, val)
-			continue
-		}
-
-		// Check that it's not already set if it's not a repeated field.
-		if !props.Repeated && fieldSet[name] {
-			return p.errorf("non-repeated field %q was repeated", name)
-		}
-
-		if err := p.checkForColon(props, dst.Type()); err != nil {
-			return err
-		}
-
-		// Parse into the field.
-		fieldSet[name] = true
-		if err := p.readAny(dst, props); err != nil {
-			if _, ok := err.(*RequiredNotSetError); !ok {
-				return err
-			}
-			reqFieldErr = err
-		}
-		if props.Required {
-			reqCount--
-		}
-
-		if err := p.consumeOptionalSeparator(); err != nil {
-			return err
-		}
-
-	}
-
-	if reqCount > 0 {
-		return p.missingRequiredFieldError(sv)
-	}
-	return reqFieldErr
-}
-
-// consumeExtName consumes extension name or expanded Any type URL and the
-// following ']'. It returns the name or URL consumed.
-func (p *textParser) consumeExtName() (string, error) {
-	tok := p.next()
-	if tok.err != nil {
-		return "", tok.err
-	}
-
-	// If extension name or type url is quoted, it's a single token.
-	if len(tok.value) > 2 && isQuote(tok.value[0]) && tok.value[len(tok.value)-1] == tok.value[0] {
-		name, err := unquoteC(tok.value[1:len(tok.value)-1], rune(tok.value[0]))
-		if err != nil {
-			return "", err
-		}
-		return name, p.consumeToken("]")
-	}
-
-	// Consume everything up to "]"
-	var parts []string
-	for tok.value != "]" {
-		parts = append(parts, tok.value)
-		tok = p.next()
-		if tok.err != nil {
-			return "", p.errorf("unrecognized type_url or extension name: %s", tok.err)
-		}
-		if p.done && tok.value != "]" {
-			return "", p.errorf("unclosed type_url or extension name")
-		}
-	}
-	return strings.Join(parts, ""), nil
-}
-
-// consumeOptionalSeparator consumes an optional semicolon or comma.
-// It is used in readStruct to provide backward compatibility.
-func (p *textParser) consumeOptionalSeparator() error {
-	tok := p.next()
-	if tok.err != nil {
-		return tok.err
-	}
-	if tok.value != ";" && tok.value != "," {
-		p.back()
-	}
-	return nil
-}
-
-func (p *textParser) readAny(v reflect.Value, props *Properties) error {
-	tok := p.next()
-	if tok.err != nil {
-		return tok.err
-	}
-	if tok.value == "" {
-		return p.errorf("unexpected EOF")
-	}
-
-	switch fv := v; fv.Kind() {
-	case reflect.Slice:
-		at := v.Type()
-		if at.Elem().Kind() == reflect.Uint8 {
-			// Special case for []byte
-			if tok.value[0] != '"' && tok.value[0] != '\'' {
-				// Deliberately written out here, as the error after
-				// this switch statement would write "invalid []byte: ...",
-				// which is not as user-friendly.
-				return p.errorf("invalid string: %v", tok.value)
-			}
-			bytes := []byte(tok.unquoted)
-			fv.Set(reflect.ValueOf(bytes))
-			return nil
-		}
-		// Repeated field.
-		if tok.value == "[" {
-			// Repeated field with list notation, like [1,2,3].
-			for {
-				fv.Set(reflect.Append(fv, reflect.New(at.Elem()).Elem()))
-				err := p.readAny(fv.Index(fv.Len()-1), props)
-				if err != nil {
-					return err
-				}
-				tok := p.next()
-				if tok.err != nil {
-					return tok.err
-				}
-				if tok.value == "]" {
-					break
-				}
-				if tok.value != "," {
-					return p.errorf("Expected ']' or ',' found %q", tok.value)
-				}
-			}
-			return nil
-		}
-		// One value of the repeated field.
-		p.back()
-		fv.Set(reflect.Append(fv, reflect.New(at.Elem()).Elem()))
-		return p.readAny(fv.Index(fv.Len()-1), props)
-	case reflect.Bool:
-		// true/1/t/True or false/f/0/False.
-		switch tok.value {
-		case "true", "1", "t", "True":
-			fv.SetBool(true)
-			return nil
-		case "false", "0", "f", "False":
-			fv.SetBool(false)
-			return nil
-		}
-	case reflect.Float32, reflect.Float64:
-		v := tok.value
-		// Ignore 'f' for compatibility with output generated by C++, but don't
-		// remove 'f' when the value is "-inf" or "inf".
-		if strings.HasSuffix(v, "f") && tok.value != "-inf" && tok.value != "inf" {
-			v = v[:len(v)-1]
-		}
-		if f, err := strconv.ParseFloat(v, fv.Type().Bits()); err == nil {
-			fv.SetFloat(f)
-			return nil
-		}
-	case reflect.Int32:
-		if x, err := strconv.ParseInt(tok.value, 0, 32); err == nil {
-			fv.SetInt(x)
-			return nil
-		}
-
-		if len(props.Enum) == 0 {
-			break
-		}
-		m, ok := enumValueMaps[props.Enum]
-		if !ok {
-			break
-		}
-		x, ok := m[tok.value]
-		if !ok {
-			break
-		}
-		fv.SetInt(int64(x))
-		return nil
-	case reflect.Int64:
-		if x, err := strconv.ParseInt(tok.value, 0, 64); err == nil {
-			fv.SetInt(x)
-			return nil
-		}
-
-	case reflect.Ptr:
-		// A basic field (indirected through pointer), or a repeated message/group
-		p.back()
-		fv.Set(reflect.New(fv.Type().Elem()))
-		return p.readAny(fv.Elem(), props)
-	case reflect.String:
-		if tok.value[0] == '"' || tok.value[0] == '\'' {
-			fv.SetString(tok.unquoted)
-			return nil
-		}
-	case reflect.Struct:
-		var terminator string
-		switch tok.value {
-		case "{":
-			terminator = "}"
-		case "<":
-			terminator = ">"
-		default:
-			return p.errorf("expected '{' or '<', found %q", tok.value)
-		}
-		// TODO: Handle nested messages which implement encoding.TextUnmarshaler.
-		return p.readStruct(fv, terminator)
-	case reflect.Uint32:
-		if x, err := strconv.ParseUint(tok.value, 0, 32); err == nil {
-			fv.SetUint(uint64(x))
-			return nil
-		}
-	case reflect.Uint64:
-		if x, err := strconv.ParseUint(tok.value, 0, 64); err == nil {
-			fv.SetUint(x)
-			return nil
-		}
-	}
-	return p.errorf("invalid %v: %v", v.Type(), tok.value)
-}
-
-// UnmarshalText reads a protocol buffer in Text format. UnmarshalText resets pb
-// before starting to unmarshal, so any existing data in pb is always removed.
-// If a required field is not set and no other error occurs,
-// UnmarshalText returns *RequiredNotSetError.
-func UnmarshalText(s string, pb Message) error {
-	if um, ok := pb.(encoding.TextUnmarshaler); ok {
-		return um.UnmarshalText([]byte(s))
-	}
-	pb.Reset()
-	v := reflect.ValueOf(pb)
-	return newTextParser(s).readStruct(v.Elem(), "")
-}

+ 0 - 171
vendor/github.com/google/go-github/AUTHORS

@@ -1,171 +0,0 @@
-# This is the official list of go-github authors for copyright purposes.
-#
-# This does not necessarily list everyone who has contributed code, since in
-# some cases, their employer may be the copyright holder. To see the full list
-# of contributors, see the revision history in source control or
-# https://github.com/google/go-github/graphs/contributors.
-#
-# Authors who wish to be recognized in this file should add themselves (or
-# their employer, as appropriate).
-
-178inaba <masahiro.furudate@gmail.com>
-Abhinav Gupta <mail@abhinavg.net>
-Ahmed Hagy <a.akram93@gmail.com>
-Ainsley Chong <ainsley.chong@gmail.com>
-Akeda Bagus <akeda@x-team.com>
-Alec Thomas <alec@swapoff.org>
-Aleks Clark <aleks.clark@gmail.com>
-Alex Bramley <a.bramley@gmail.com>
-Alexander Harkness <me@bearbin.net>
-Allen Sun <shlallen1990@gmail.com>
-Amey Sakhadeo <me@ameyms.com>
-Andreas Garnæs <https://github.com/andreas>
-Andrew Ryabchun <aryabchun@mail.ua>
-Andy Hume <andyhume@gmail.com>
-Andy Lindeman <andy@lindeman.io>
-Anshuman Bhartiya <anshuman.bhartiya@gmail.com>
-Antoine Pelisse <apelisse@gmail.com>
-Anubha Kushwaha <anubha_bt2k14@dtu.ac.in>
-Aravind <aravindkp@outlook.in>
-Arıl Bozoluk <arilbozoluk@hotmail.com>
-Austin Dizzy <dizzy@wow.com>
-Beshr Kayali <beshrkayali@gmail.com>
-Beyang Liu <beyang.liu@gmail.com>
-Billy Lynch <wlynch92@gmail.com>
-Björn Häuser <b.haeuser@rebuy.de>
-Brad Harris <bmharris@gmail.com>
-Bradley Falzon <brad@teambrad.net>
-Brian Egizi <brian@mojotech.com>
-Bryan Boreham <bryan@weave.works>
-Cami Diez <diezcami@gmail.com>
-Carlos Alexandro Becker <caarlos0@gmail.com>
-chandresh-pancholi <chandreshpancholi007@gmail.com>
-Charlie Yan <charlieyan08@gmail.com>
-Chris King <chriskingnet@gmail.com>
-Chris Roche <chris@vsco.co>
-Chris Schaefer <chris@dtzq.com>
-Christoph Sassenberg <defsprite@gmail.com>
-Colin Misare <github.com/cmisare>
-Craig Peterson <cpeterson@stackoverflow.com>
-Cristian Maglie <c.maglie@bug.st>
-Daehyeok Mun <daehyeok@gmail.com>
-Daniel Leavitt <daniel.leavitt@gmail.com>
-Dave Du Cros <davidducros@gmail.com>
-Dave Henderson <dhenderson@gmail.com>
-David Deng <daviddengcn@gmail.com>
-Dennis Webb <dennis@bluesentryit.com>
-Diego Lapiduz <diego.lapiduz@cfpb.gov>
-Dmitri Shuralyov <shurcooL@gmail.com>
-dmnlk <seikima2demon@gmail.com>
-Don Petersen <don@donpetersen.net>
-Doug Turner <doug.turner@gmail.com>
-Drew Fradette <drew.fradette@gmail.com>
-Eli Uriegas <seemethere101@gmail.com>
-Elliott Beach <elliott2.71828@gmail.com>
-erwinvaneyk <erwinvaneyk@gmail.com>
-Fabrice <fabrice.vaillant@student.ecp.fr>
-Filippo Valsorda <hi@filippo.io>
-Florian Forster <ff@octo.it>
-Francesc Gil <xescugil@gmail.com>
-Francis <hello@francismakes.com>
-Fredrik Jönsson <fredrik.jonsson@izettle.com>
-Garrett Squire <garrettsquire@gmail.com>
-Georgy Buranov <gburanov@gmail.com>
-Gnahz <p@oath.pl>
-Google Inc.
-griffin_stewie <panterathefamilyguy@gmail.com>
-Guz Alexander <kalimatas@gmail.com>
-Hanno Hecker <hanno.hecker@zalando.de>
-Hari haran <hariharan.uno@gmail.com>
-haya14busa <hayabusa1419@gmail.com>
-Huy Tr <kingbazoka@gmail.com>
-huydx <doxuanhuy@gmail.com>
-i2bskn <i2bskn@gmail.com>
-Isao Jonas <isao.jonas@gmail.com>
-isqua <isqua@isqua.ru>
-Jameel Haffejee <RC1140@republiccommandos.co.za>
-Jan Kosecki <jan.kosecki91@gmail.com>
-Jeremy Morris <jeremylevanmorris@gmail.com>
-Jihoon Chung <j.c@navercorp.com>
-Jimmi Dyson <jimmidyson@gmail.com>
-Joe Tsai <joetsai@digital-static.net>
-John Barton <jrbarton@gmail.com>
-John Engelman <john.r.engelman@gmail.com>
-jpbelanger-mtl <jp.belanger@gmail.com>
-Juan Basso <jrbasso@gmail.com>
-Julien Rostand <jrostand@users.noreply.github.com>
-Justin Abrahms <justin@abrah.ms>
-jzhoucliqr <jzhou@cliqr.com>
-Katrina Owen <kytrinyx@github.com>
-Keita Urashima <ursm@ursm.jp>
-Kevin Burke <kev@inburke.com>
-Konrad Malawski <konrad.malawski@project13.pl>
-Kookheon Kwon <kucuny@gmail.com>
-Krzysztof Kowalczyk <kkowalczyk@gmail.com>
-Kshitij Saraogi <KshitijSaraogi@gmail.com>
-kyokomi <kyoko1220adword@gmail.com>
-Lucas Alcantara <lucasalcantaraf@gmail.com>
-Luke Evers <me@lukevers.com>
-Luke Kysow <lkysow@gmail.com>
-Luke Roberts <email@luke-roberts.co.uk>
-Luke Young <luke@hydrantlabs.org>
-Maksim Zhylinski <uzzable@gmail.com>
-Martin-Louis Bright <mlbright@gmail.com>
-Mat Geist <matgeist@gmail.com>
-Matt Brender <mjbrender@gmail.com>
-Matt Landis <landis.matt@gmail.com>
-Maxime Bury <maxime.bury@gmail.com>
-Michael Tiller <michael.tiller@gmail.com>
-Michał Glapa <michal.glapa@gmail.com>
-Nathan VanBenschoten <nvanbenschoten@gmail.com>
-Neil O'Toole <neilotoole@apache.org>
-Nick Miyake <nmiyake@palantir.com>
-Nick Spragg <nick.spragg@bbc.co.uk>
-Nikhita Raghunath <nikitaraghunath@gmail.com>
-Noah Zoschke <noah+sso2@convox.com>
-ns-cweber <cweber@narrativescience.com>
-Ondřej Kupka <ondra.cap@gmail.com>
-Panagiotis Moustafellos <pmoust@gmail.com>
-Parker Moore <parkrmoore@gmail.com>
-Pavel Shtanko <pavel.shtanko@gmail.com>
-Petr Shevtsov <petr.shevtsov@gmail.com>
-Pierre Carrier <pierre@meteor.com>
-Piotr Zurek <p.zurek@gmail.com>
-Quinn Slack <qslack@qslack.com>
-Rackspace US, Inc.
-RaviTeja Pothana <ravi-teja@live.com>
-rc1140 <jameel@republiccommandos.co.za>
-Red Hat, Inc.
-Rob Figueiredo <robfig@yext.com>
-Ronak Jain <ronakjain@outlook.in>
-Ruben Vereecken <rubenvereecken@gmail.com>
-Ryan Lower <rpjlower@gmail.com>
-Sahil Dua <sahildua2305@gmail.com>
-saisi <saisi@users.noreply.github.com>
-Sam Minnée <sam@silverstripe.com>
-Sander van Harmelen <svanharmelen@schubergphilis.com>
-Sarasa Kisaragi <lingsamuelgrace@gmail.com>
-Sean Wang <sean@decrypted.org>
-Sebastian Mandrean <sebastian.mandrean@gmail.com>
-Sebastian Mæland Pedersen <sem.pedersen@stud.uis.no>
-Sevki <s@sevki.org>
-Shawn Catanzarite <me@shawncatz.com>
-Shawn Smith <shawnpsmith@gmail.com>
-sona-tar <sona.zip@gmail.com>
-SoundCloud, Ltd.
-Stian Eikeland <stian@eikeland.se>
-Thomas Bruyelle <thomas.bruyelle@gmail.com>
-Timothée Peignier <timothee.peignier@tryphon.org>
-Trey Tacon <ttacon@gmail.com>
-ttacon <ttacon@gmail.com>
-Varadarajan Aravamudhan <varadaraajan@gmail.com>
-Victor Castell <victor@victorcastell.com>
-Victor Vrantchan <vrancean+github@gmail.com>
-Vlad Ungureanu <vladu@palantir.com>
-Will Maier <wcmaier@gmail.com>
-William Bailey <mail@williambailey.org.uk>
-Yann Malet <yann.malet@gmail.com>
-Yannick Utard <yannickutard@gmail.com>
-Yicheng Qin <qycqycqycqycqyc@gmail.com>
-Yumikiyo Osanai <yumios.art@gmail.com>
-Zach Latta <zach@zachlatta.com>

+ 0 - 341
vendor/github.com/google/go-github/LICENSE

@@ -1,341 +0,0 @@
-Copyright (c) 2013 The go-github AUTHORS. All rights reserved.
-
-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.
-
-----------
-
-Some documentation is taken from the GitHub Developer site
-<https://developer.github.com/>, which is available under the following Creative
-Commons Attribution 3.0 License. This applies only to the go-github source
-code and would not apply to any compiled binaries.
-
-THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE
-COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY
-COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS
-AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
-
-BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE
-TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY
-BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS
-CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND
-CONDITIONS.
-
-1. Definitions
-
- a. "Adaptation" means a work based upon the Work, or upon the Work and
-    other pre-existing works, such as a translation, adaptation,
-    derivative work, arrangement of music or other alterations of a
-    literary or artistic work, or phonogram or performance and includes
-    cinematographic adaptations or any other form in which the Work may be
-    recast, transformed, or adapted including in any form recognizably
-    derived from the original, except that a work that constitutes a
-    Collection will not be considered an Adaptation for the purpose of
-    this License. For the avoidance of doubt, where the Work is a musical
-    work, performance or phonogram, the synchronization of the Work in
-    timed-relation with a moving image ("synching") will be considered an
-    Adaptation for the purpose of this License.
- b. "Collection" means a collection of literary or artistic works, such as
-    encyclopedias and anthologies, or performances, phonograms or
-    broadcasts, or other works or subject matter other than works listed
-    in Section 1(f) below, which, by reason of the selection and
-    arrangement of their contents, constitute intellectual creations, in
-    which the Work is included in its entirety in unmodified form along
-    with one or more other contributions, each constituting separate and
-    independent works in themselves, which together are assembled into a
-    collective whole. A work that constitutes a Collection will not be
-    considered an Adaptation (as defined above) for the purposes of this
-    License.
- c. "Distribute" means to make available to the public the original and
-    copies of the Work or Adaptation, as appropriate, through sale or
-    other transfer of ownership.
- d. "Licensor" means the individual, individuals, entity or entities that
-    offer(s) the Work under the terms of this License.
- e. "Original Author" means, in the case of a literary or artistic work,
-    the individual, individuals, entity or entities who created the Work
-    or if no individual or entity can be identified, the publisher; and in
-    addition (i) in the case of a performance the actors, singers,
-    musicians, dancers, and other persons who act, sing, deliver, declaim,
-    play in, interpret or otherwise perform literary or artistic works or
-    expressions of folklore; (ii) in the case of a phonogram the producer
-    being the person or legal entity who first fixes the sounds of a
-    performance or other sounds; and, (iii) in the case of broadcasts, the
-    organization that transmits the broadcast.
- f. "Work" means the literary and/or artistic work offered under the terms
-    of this License including without limitation any production in the
-    literary, scientific and artistic domain, whatever may be the mode or
-    form of its expression including digital form, such as a book,
-    pamphlet and other writing; a lecture, address, sermon or other work
-    of the same nature; a dramatic or dramatico-musical work; a
-    choreographic work or entertainment in dumb show; a musical
-    composition with or without words; a cinematographic work to which are
-    assimilated works expressed by a process analogous to cinematography;
-    a work of drawing, painting, architecture, sculpture, engraving or
-    lithography; a photographic work to which are assimilated works
-    expressed by a process analogous to photography; a work of applied
-    art; an illustration, map, plan, sketch or three-dimensional work
-    relative to geography, topography, architecture or science; a
-    performance; a broadcast; a phonogram; a compilation of data to the
-    extent it is protected as a copyrightable work; or a work performed by
-    a variety or circus performer to the extent it is not otherwise
-    considered a literary or artistic work.
- g. "You" means an individual or entity exercising rights under this
-    License who has not previously violated the terms of this License with
-    respect to the Work, or who has received express permission from the
-    Licensor to exercise rights under this License despite a previous
-    violation.
- h. "Publicly Perform" means to perform public recitations of the Work and
-    to communicate to the public those public recitations, by any means or
-    process, including by wire or wireless means or public digital
-    performances; to make available to the public Works in such a way that
-    members of the public may access these Works from a place and at a
-    place individually chosen by them; to perform the Work to the public
-    by any means or process and the communication to the public of the
-    performances of the Work, including by public digital performance; to
-    broadcast and rebroadcast the Work by any means including signs,
-    sounds or images.
- i. "Reproduce" means to make copies of the Work by any means including
-    without limitation by sound or visual recordings and the right of
-    fixation and reproducing fixations of the Work, including storage of a
-    protected performance or phonogram in digital form or other electronic
-    medium.
-
-2. Fair Dealing Rights. Nothing in this License is intended to reduce,
-limit, or restrict any uses free from copyright or rights arising from
-limitations or exceptions that are provided for in connection with the
-copyright protection under copyright law or other applicable laws.
-
-3. License Grant. Subject to the terms and conditions of this License,
-Licensor hereby grants You a worldwide, royalty-free, non-exclusive,
-perpetual (for the duration of the applicable copyright) license to
-exercise the rights in the Work as stated below:
-
- a. to Reproduce the Work, to incorporate the Work into one or more
-    Collections, and to Reproduce the Work as incorporated in the
-    Collections;
- b. to create and Reproduce Adaptations provided that any such Adaptation,
-    including any translation in any medium, takes reasonable steps to
-    clearly label, demarcate or otherwise identify that changes were made
-    to the original Work. For example, a translation could be marked "The
-    original work was translated from English to Spanish," or a
-    modification could indicate "The original work has been modified.";
- c. to Distribute and Publicly Perform the Work including as incorporated
-    in Collections; and,
- d. to Distribute and Publicly Perform Adaptations.
- e. For the avoidance of doubt:
-
-     i. Non-waivable Compulsory License Schemes. In those jurisdictions in
-        which the right to collect royalties through any statutory or
-        compulsory licensing scheme cannot be waived, the Licensor
-        reserves the exclusive right to collect such royalties for any
-        exercise by You of the rights granted under this License;
-    ii. Waivable Compulsory License Schemes. In those jurisdictions in
-        which the right to collect royalties through any statutory or
-        compulsory licensing scheme can be waived, the Licensor waives the
-        exclusive right to collect such royalties for any exercise by You
-        of the rights granted under this License; and,
-   iii. Voluntary License Schemes. The Licensor waives the right to
-        collect royalties, whether individually or, in the event that the
-        Licensor is a member of a collecting society that administers
-        voluntary licensing schemes, via that society, from any exercise
-        by You of the rights granted under this License.
-
-The above rights may be exercised in all media and formats whether now
-known or hereafter devised. The above rights include the right to make
-such modifications as are technically necessary to exercise the rights in
-other media and formats. Subject to Section 8(f), all rights not expressly
-granted by Licensor are hereby reserved.
-
-4. Restrictions. The license granted in Section 3 above is expressly made
-subject to and limited by the following restrictions:
-
- a. You may Distribute or Publicly Perform the Work only under the terms
-    of this License. You must include a copy of, or the Uniform Resource
-    Identifier (URI) for, this License with every copy of the Work You
-    Distribute or Publicly Perform. You may not offer or impose any terms
-    on the Work that restrict the terms of this License or the ability of
-    the recipient of the Work to exercise the rights granted to that
-    recipient under the terms of the License. You may not sublicense the
-    Work. You must keep intact all notices that refer to this License and
-    to the disclaimer of warranties with every copy of the Work You
-    Distribute or Publicly Perform. When You Distribute or Publicly
-    Perform the Work, You may not impose any effective technological
-    measures on the Work that restrict the ability of a recipient of the
-    Work from You to exercise the rights granted to that recipient under
-    the terms of the License. This Section 4(a) applies to the Work as
-    incorporated in a Collection, but this does not require the Collection
-    apart from the Work itself to be made subject to the terms of this
-    License. If You create a Collection, upon notice from any Licensor You
-    must, to the extent practicable, remove from the Collection any credit
-    as required by Section 4(b), as requested. If You create an
-    Adaptation, upon notice from any Licensor You must, to the extent
-    practicable, remove from the Adaptation any credit as required by
-    Section 4(b), as requested.
- b. If You Distribute, or Publicly Perform the Work or any Adaptations or
-    Collections, You must, unless a request has been made pursuant to
-    Section 4(a), keep intact all copyright notices for the Work and
-    provide, reasonable to the medium or means You are utilizing: (i) the
-    name of the Original Author (or pseudonym, if applicable) if supplied,
-    and/or if the Original Author and/or Licensor designate another party
-    or parties (e.g., a sponsor institute, publishing entity, journal) for
-    attribution ("Attribution Parties") in Licensor's copyright notice,
-    terms of service or by other reasonable means, the name of such party
-    or parties; (ii) the title of the Work if supplied; (iii) to the
-    extent reasonably practicable, the URI, if any, that Licensor
-    specifies to be associated with the Work, unless such URI does not
-    refer to the copyright notice or licensing information for the Work;
-    and (iv) , consistent with Section 3(b), in the case of an Adaptation,
-    a credit identifying the use of the Work in the Adaptation (e.g.,
-    "French translation of the Work by Original Author," or "Screenplay
-    based on original Work by Original Author"). The credit required by
-    this Section 4 (b) may be implemented in any reasonable manner;
-    provided, however, that in the case of a Adaptation or Collection, at
-    a minimum such credit will appear, if a credit for all contributing
-    authors of the Adaptation or Collection appears, then as part of these
-    credits and in a manner at least as prominent as the credits for the
-    other contributing authors. For the avoidance of doubt, You may only
-    use the credit required by this Section for the purpose of attribution
-    in the manner set out above and, by exercising Your rights under this
-    License, You may not implicitly or explicitly assert or imply any
-    connection with, sponsorship or endorsement by the Original Author,
-    Licensor and/or Attribution Parties, as appropriate, of You or Your
-    use of the Work, without the separate, express prior written
-    permission of the Original Author, Licensor and/or Attribution
-    Parties.
- c. Except as otherwise agreed in writing by the Licensor or as may be
-    otherwise permitted by applicable law, if You Reproduce, Distribute or
-    Publicly Perform the Work either by itself or as part of any
-    Adaptations or Collections, You must not distort, mutilate, modify or
-    take other derogatory action in relation to the Work which would be
-    prejudicial to the Original Author's honor or reputation. Licensor
-    agrees that in those jurisdictions (e.g. Japan), in which any exercise
-    of the right granted in Section 3(b) of this License (the right to
-    make Adaptations) would be deemed to be a distortion, mutilation,
-    modification or other derogatory action prejudicial to the Original
-    Author's honor and reputation, the Licensor will waive or not assert,
-    as appropriate, this Section, to the fullest extent permitted by the
-    applicable national law, to enable You to reasonably exercise Your
-    right under Section 3(b) of this License (right to make Adaptations)
-    but not otherwise.
-
-5. Representations, Warranties and Disclaimer
-
-UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR
-OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY
-KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE,
-INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY,
-FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF
-LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS,
-WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION
-OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.
-
-6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE
-LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR
-ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES
-ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS
-BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-7. Termination
-
- a. This License and the rights granted hereunder will terminate
-    automatically upon any breach by You of the terms of this License.
-    Individuals or entities who have received Adaptations or Collections
-    from You under this License, however, will not have their licenses
-    terminated provided such individuals or entities remain in full
-    compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will
-    survive any termination of this License.
- b. Subject to the above terms and conditions, the license granted here is
-    perpetual (for the duration of the applicable copyright in the Work).
-    Notwithstanding the above, Licensor reserves the right to release the
-    Work under different license terms or to stop distributing the Work at
-    any time; provided, however that any such election will not serve to
-    withdraw this License (or any other license that has been, or is
-    required to be, granted under the terms of this License), and this
-    License will continue in full force and effect unless terminated as
-    stated above.
-
-8. Miscellaneous
-
- a. Each time You Distribute or Publicly Perform the Work or a Collection,
-    the Licensor offers to the recipient a license to the Work on the same
-    terms and conditions as the license granted to You under this License.
- b. Each time You Distribute or Publicly Perform an Adaptation, Licensor
-    offers to the recipient a license to the original Work on the same
-    terms and conditions as the license granted to You under this License.
- c. If any provision of this License is invalid or unenforceable under
-    applicable law, it shall not affect the validity or enforceability of
-    the remainder of the terms of this License, and without further action
-    by the parties to this agreement, such provision shall be reformed to
-    the minimum extent necessary to make such provision valid and
-    enforceable.
- d. No term or provision of this License shall be deemed waived and no
-    breach consented to unless such waiver or consent shall be in writing
-    and signed by the party to be charged with such waiver or consent.
- e. This License constitutes the entire agreement between the parties with
-    respect to the Work licensed here. There are no understandings,
-    agreements or representations with respect to the Work not specified
-    here. Licensor shall not be bound by any additional provisions that
-    may appear in any communication from You. This License may not be
-    modified without the mutual written agreement of the Licensor and You.
- f. The rights granted under, and the subject matter referenced, in this
-    License were drafted utilizing the terminology of the Berne Convention
-    for the Protection of Literary and Artistic Works (as amended on
-    September 28, 1979), the Rome Convention of 1961, the WIPO Copyright
-    Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996
-    and the Universal Copyright Convention (as revised on July 24, 1971).
-    These rights and subject matter take effect in the relevant
-    jurisdiction in which the License terms are sought to be enforced
-    according to the corresponding provisions of the implementation of
-    those treaty provisions in the applicable national law. If the
-    standard suite of rights granted under applicable copyright law
-    includes additional rights not granted under this License, such
-    additional rights are deemed to be included in the License; this
-    License is not intended to restrict the license of any rights under
-    applicable law.
-
-
-Creative Commons Notice
-
-    Creative Commons is not a party to this License, and makes no warranty
-    whatsoever in connection with the Work. Creative Commons will not be
-    liable to You or any party on any legal theory for any damages
-    whatsoever, including without limitation any general, special,
-    incidental or consequential damages arising in connection to this
-    license. Notwithstanding the foregoing two (2) sentences, if Creative
-    Commons has expressly identified itself as the Licensor hereunder, it
-    shall have all rights and obligations of Licensor.
-
-    Except for the limited purpose of indicating to the public that the
-    Work is licensed under the CCPL, Creative Commons does not authorize
-    the use by either party of the trademark "Creative Commons" or any
-    related trademark or logo of Creative Commons without the prior
-    written consent of Creative Commons. Any permitted use will be in
-    compliance with Creative Commons' then-current trademark usage
-    guidelines, as may be published on its website or otherwise made
-    available upon request from time to time. For the avoidance of doubt,
-    this trademark restriction does not form part of this License.
-
-    Creative Commons may be contacted at http://creativecommons.org/.

+ 0 - 69
vendor/github.com/google/go-github/github/activity.go

@@ -1,69 +0,0 @@
-// Copyright 2013 The go-github 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 github
-
-import "context"
-
-// ActivityService handles communication with the activity related
-// methods of the GitHub API.
-//
-// GitHub API docs: https://developer.github.com/v3/activity/
-type ActivityService service
-
-// FeedLink represents a link to a related resource.
-type FeedLink struct {
-	HRef *string `json:"href,omitempty"`
-	Type *string `json:"type,omitempty"`
-}
-
-// Feeds represents timeline resources in Atom format.
-type Feeds struct {
-	TimelineURL                 *string  `json:"timeline_url,omitempty"`
-	UserURL                     *string  `json:"user_url,omitempty"`
-	CurrentUserPublicURL        *string  `json:"current_user_public_url,omitempty"`
-	CurrentUserURL              *string  `json:"current_user_url,omitempty"`
-	CurrentUserActorURL         *string  `json:"current_user_actor_url,omitempty"`
-	CurrentUserOrganizationURL  *string  `json:"current_user_organization_url,omitempty"`
-	CurrentUserOrganizationURLs []string `json:"current_user_organization_urls,omitempty"`
-	Links                       *struct {
-		Timeline                 *FeedLink  `json:"timeline,omitempty"`
-		User                     *FeedLink  `json:"user,omitempty"`
-		CurrentUserPublic        *FeedLink  `json:"current_user_public,omitempty"`
-		CurrentUser              *FeedLink  `json:"current_user,omitempty"`
-		CurrentUserActor         *FeedLink  `json:"current_user_actor,omitempty"`
-		CurrentUserOrganization  *FeedLink  `json:"current_user_organization,omitempty"`
-		CurrentUserOrganizations []FeedLink `json:"current_user_organizations,omitempty"`
-	} `json:"_links,omitempty"`
-}
-
-// ListFeeds lists all the feeds available to the authenticated user.
-//
-// GitHub provides several timeline resources in Atom format:
-//     Timeline: The GitHub global public timeline
-//     User: The public timeline for any user, using URI template
-//     Current user public: The public timeline for the authenticated user
-//     Current user: The private timeline for the authenticated user
-//     Current user actor: The private timeline for activity created by the
-//         authenticated user
-//     Current user organizations: The private timeline for the organizations
-//         the authenticated user is a member of.
-//
-// Note: Private feeds are only returned when authenticating via Basic Auth
-// since current feed URIs use the older, non revocable auth tokens.
-func (s *ActivityService) ListFeeds(ctx context.Context) (*Feeds, *Response, error) {
-	req, err := s.client.NewRequest("GET", "feeds", nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	f := &Feeds{}
-	resp, err := s.client.Do(ctx, req, f)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return f, resp, nil
-}

+ 0 - 324
vendor/github.com/google/go-github/github/activity_events.go

@@ -1,324 +0,0 @@
-// Copyright 2013 The go-github 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 github
-
-import (
-	"context"
-	"encoding/json"
-	"fmt"
-	"time"
-)
-
-// Event represents a GitHub event.
-type Event struct {
-	Type       *string          `json:"type,omitempty"`
-	Public     *bool            `json:"public,omitempty"`
-	RawPayload *json.RawMessage `json:"payload,omitempty"`
-	Repo       *Repository      `json:"repo,omitempty"`
-	Actor      *User            `json:"actor,omitempty"`
-	Org        *Organization    `json:"org,omitempty"`
-	CreatedAt  *time.Time       `json:"created_at,omitempty"`
-	ID         *string          `json:"id,omitempty"`
-}
-
-func (e Event) String() string {
-	return Stringify(e)
-}
-
-// ParsePayload parses the event payload. For recognized event types,
-// a value of the corresponding struct type will be returned.
-func (e *Event) ParsePayload() (payload interface{}, err error) {
-	switch *e.Type {
-	case "CommitCommentEvent":
-		payload = &CommitCommentEvent{}
-	case "CreateEvent":
-		payload = &CreateEvent{}
-	case "DeleteEvent":
-		payload = &DeleteEvent{}
-	case "DeploymentEvent":
-		payload = &DeploymentEvent{}
-	case "DeploymentStatusEvent":
-		payload = &DeploymentStatusEvent{}
-	case "ForkEvent":
-		payload = &ForkEvent{}
-	case "GollumEvent":
-		payload = &GollumEvent{}
-	case "InstallationEvent":
-		payload = &InstallationEvent{}
-	case "InstallationRepositoriesEvent":
-		payload = &InstallationRepositoriesEvent{}
-	case "IssueCommentEvent":
-		payload = &IssueCommentEvent{}
-	case "IssuesEvent":
-		payload = &IssuesEvent{}
-	case "LabelEvent":
-		payload = &LabelEvent{}
-	case "MarketplacePurchaseEvent":
-		payload = &MarketplacePurchaseEvent{}
-	case "MemberEvent":
-		payload = &MemberEvent{}
-	case "MembershipEvent":
-		payload = &MembershipEvent{}
-	case "MilestoneEvent":
-		payload = &MilestoneEvent{}
-	case "OrganizationEvent":
-		payload = &OrganizationEvent{}
-	case "OrgBlockEvent":
-		payload = &OrgBlockEvent{}
-	case "PageBuildEvent":
-		payload = &PageBuildEvent{}
-	case "PingEvent":
-		payload = &PingEvent{}
-	case "ProjectEvent":
-		payload = &ProjectEvent{}
-	case "ProjectCardEvent":
-		payload = &ProjectCardEvent{}
-	case "ProjectColumnEvent":
-		payload = &ProjectColumnEvent{}
-	case "PublicEvent":
-		payload = &PublicEvent{}
-	case "PullRequestEvent":
-		payload = &PullRequestEvent{}
-	case "PullRequestReviewEvent":
-		payload = &PullRequestReviewEvent{}
-	case "PullRequestReviewCommentEvent":
-		payload = &PullRequestReviewCommentEvent{}
-	case "PushEvent":
-		payload = &PushEvent{}
-	case "ReleaseEvent":
-		payload = &ReleaseEvent{}
-	case "RepositoryEvent":
-		payload = &RepositoryEvent{}
-	case "StatusEvent":
-		payload = &StatusEvent{}
-	case "TeamEvent":
-		payload = &TeamEvent{}
-	case "TeamAddEvent":
-		payload = &TeamAddEvent{}
-	case "WatchEvent":
-		payload = &WatchEvent{}
-	}
-	err = json.Unmarshal(*e.RawPayload, &payload)
-	return payload, err
-}
-
-// Payload returns the parsed event payload. For recognized event types,
-// a value of the corresponding struct type will be returned.
-//
-// Deprecated: Use ParsePayload instead, which returns an error
-// rather than panics if JSON unmarshaling raw payload fails.
-func (e *Event) Payload() (payload interface{}) {
-	var err error
-	payload, err = e.ParsePayload()
-	if err != nil {
-		panic(err)
-	}
-	return payload
-}
-
-// ListEvents drinks from the firehose of all public events across GitHub.
-//
-// GitHub API docs: https://developer.github.com/v3/activity/events/#list-public-events
-func (s *ActivityService) ListEvents(ctx context.Context, opt *ListOptions) ([]*Event, *Response, error) {
-	u, err := addOptions("events", opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	var events []*Event
-	resp, err := s.client.Do(ctx, req, &events)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return events, resp, nil
-}
-
-// ListRepositoryEvents lists events for a repository.
-//
-// GitHub API docs: https://developer.github.com/v3/activity/events/#list-repository-events
-func (s *ActivityService) ListRepositoryEvents(ctx context.Context, owner, repo string, opt *ListOptions) ([]*Event, *Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/events", owner, repo)
-	u, err := addOptions(u, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	var events []*Event
-	resp, err := s.client.Do(ctx, req, &events)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return events, resp, nil
-}
-
-// ListIssueEventsForRepository lists issue events for a repository.
-//
-// GitHub API docs: https://developer.github.com/v3/activity/events/#list-issue-events-for-a-repository
-func (s *ActivityService) ListIssueEventsForRepository(ctx context.Context, owner, repo string, opt *ListOptions) ([]*IssueEvent, *Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/issues/events", owner, repo)
-	u, err := addOptions(u, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	var events []*IssueEvent
-	resp, err := s.client.Do(ctx, req, &events)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return events, resp, nil
-}
-
-// ListEventsForRepoNetwork lists public events for a network of repositories.
-//
-// GitHub API docs: https://developer.github.com/v3/activity/events/#list-public-events-for-a-network-of-repositories
-func (s *ActivityService) ListEventsForRepoNetwork(ctx context.Context, owner, repo string, opt *ListOptions) ([]*Event, *Response, error) {
-	u := fmt.Sprintf("networks/%v/%v/events", owner, repo)
-	u, err := addOptions(u, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	var events []*Event
-	resp, err := s.client.Do(ctx, req, &events)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return events, resp, nil
-}
-
-// ListEventsForOrganization lists public events for an organization.
-//
-// GitHub API docs: https://developer.github.com/v3/activity/events/#list-public-events-for-an-organization
-func (s *ActivityService) ListEventsForOrganization(ctx context.Context, org string, opt *ListOptions) ([]*Event, *Response, error) {
-	u := fmt.Sprintf("orgs/%v/events", org)
-	u, err := addOptions(u, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	var events []*Event
-	resp, err := s.client.Do(ctx, req, &events)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return events, resp, nil
-}
-
-// ListEventsPerformedByUser lists the events performed by a user. If publicOnly is
-// true, only public events will be returned.
-//
-// GitHub API docs: https://developer.github.com/v3/activity/events/#list-events-performed-by-a-user
-func (s *ActivityService) ListEventsPerformedByUser(ctx context.Context, user string, publicOnly bool, opt *ListOptions) ([]*Event, *Response, error) {
-	var u string
-	if publicOnly {
-		u = fmt.Sprintf("users/%v/events/public", user)
-	} else {
-		u = fmt.Sprintf("users/%v/events", user)
-	}
-	u, err := addOptions(u, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	var events []*Event
-	resp, err := s.client.Do(ctx, req, &events)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return events, resp, nil
-}
-
-// ListEventsReceivedByUser lists the events received by a user. If publicOnly is
-// true, only public events will be returned.
-//
-// GitHub API docs: https://developer.github.com/v3/activity/events/#list-events-that-a-user-has-received
-func (s *ActivityService) ListEventsReceivedByUser(ctx context.Context, user string, publicOnly bool, opt *ListOptions) ([]*Event, *Response, error) {
-	var u string
-	if publicOnly {
-		u = fmt.Sprintf("users/%v/received_events/public", user)
-	} else {
-		u = fmt.Sprintf("users/%v/received_events", user)
-	}
-	u, err := addOptions(u, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	var events []*Event
-	resp, err := s.client.Do(ctx, req, &events)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return events, resp, nil
-}
-
-// ListUserEventsForOrganization provides the user’s organization dashboard. You
-// must be authenticated as the user to view this.
-//
-// GitHub API docs: https://developer.github.com/v3/activity/events/#list-events-for-an-organization
-func (s *ActivityService) ListUserEventsForOrganization(ctx context.Context, org, user string, opt *ListOptions) ([]*Event, *Response, error) {
-	u := fmt.Sprintf("users/%v/events/orgs/%v", user, org)
-	u, err := addOptions(u, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	var events []*Event
-	resp, err := s.client.Do(ctx, req, &events)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return events, resp, nil
-}

+ 0 - 223
vendor/github.com/google/go-github/github/activity_notifications.go

@@ -1,223 +0,0 @@
-// Copyright 2014 The go-github 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 github
-
-import (
-	"context"
-	"fmt"
-	"time"
-)
-
-// Notification identifies a GitHub notification for a user.
-type Notification struct {
-	ID         *string              `json:"id,omitempty"`
-	Repository *Repository          `json:"repository,omitempty"`
-	Subject    *NotificationSubject `json:"subject,omitempty"`
-
-	// Reason identifies the event that triggered the notification.
-	//
-	// GitHub API docs: https://developer.github.com/v3/activity/notifications/#notification-reasons
-	Reason *string `json:"reason,omitempty"`
-
-	Unread     *bool      `json:"unread,omitempty"`
-	UpdatedAt  *time.Time `json:"updated_at,omitempty"`
-	LastReadAt *time.Time `json:"last_read_at,omitempty"`
-	URL        *string    `json:"url,omitempty"`
-}
-
-// NotificationSubject identifies the subject of a notification.
-type NotificationSubject struct {
-	Title            *string `json:"title,omitempty"`
-	URL              *string `json:"url,omitempty"`
-	LatestCommentURL *string `json:"latest_comment_url,omitempty"`
-	Type             *string `json:"type,omitempty"`
-}
-
-// NotificationListOptions specifies the optional parameters to the
-// ActivityService.ListNotifications method.
-type NotificationListOptions struct {
-	All           bool      `url:"all,omitempty"`
-	Participating bool      `url:"participating,omitempty"`
-	Since         time.Time `url:"since,omitempty"`
-	Before        time.Time `url:"before,omitempty"`
-
-	ListOptions
-}
-
-// ListNotifications lists all notifications for the authenticated user.
-//
-// GitHub API docs: https://developer.github.com/v3/activity/notifications/#list-your-notifications
-func (s *ActivityService) ListNotifications(ctx context.Context, opt *NotificationListOptions) ([]*Notification, *Response, error) {
-	u := fmt.Sprintf("notifications")
-	u, err := addOptions(u, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	var notifications []*Notification
-	resp, err := s.client.Do(ctx, req, &notifications)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return notifications, resp, nil
-}
-
-// ListRepositoryNotifications lists all notifications in a given repository
-// for the authenticated user.
-//
-// GitHub API docs: https://developer.github.com/v3/activity/notifications/#list-your-notifications-in-a-repository
-func (s *ActivityService) ListRepositoryNotifications(ctx context.Context, owner, repo string, opt *NotificationListOptions) ([]*Notification, *Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/notifications", owner, repo)
-	u, err := addOptions(u, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	var notifications []*Notification
-	resp, err := s.client.Do(ctx, req, &notifications)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return notifications, resp, nil
-}
-
-type markReadOptions struct {
-	LastReadAt time.Time `json:"last_read_at,omitempty"`
-}
-
-// MarkNotificationsRead marks all notifications up to lastRead as read.
-//
-// GitHub API docs: https://developer.github.com/v3/activity/notifications/#mark-as-read
-func (s *ActivityService) MarkNotificationsRead(ctx context.Context, lastRead time.Time) (*Response, error) {
-	opts := &markReadOptions{
-		LastReadAt: lastRead,
-	}
-	req, err := s.client.NewRequest("PUT", "notifications", opts)
-	if err != nil {
-		return nil, err
-	}
-
-	return s.client.Do(ctx, req, nil)
-}
-
-// MarkRepositoryNotificationsRead marks all notifications up to lastRead in
-// the specified repository as read.
-//
-// GitHub API docs: https://developer.github.com/v3/activity/notifications/#mark-notifications-as-read-in-a-repository
-func (s *ActivityService) MarkRepositoryNotificationsRead(ctx context.Context, owner, repo string, lastRead time.Time) (*Response, error) {
-	opts := &markReadOptions{
-		LastReadAt: lastRead,
-	}
-	u := fmt.Sprintf("repos/%v/%v/notifications", owner, repo)
-	req, err := s.client.NewRequest("PUT", u, opts)
-	if err != nil {
-		return nil, err
-	}
-
-	return s.client.Do(ctx, req, nil)
-}
-
-// GetThread gets the specified notification thread.
-//
-// GitHub API docs: https://developer.github.com/v3/activity/notifications/#view-a-single-thread
-func (s *ActivityService) GetThread(ctx context.Context, id string) (*Notification, *Response, error) {
-	u := fmt.Sprintf("notifications/threads/%v", id)
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	notification := new(Notification)
-	resp, err := s.client.Do(ctx, req, notification)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return notification, resp, nil
-}
-
-// MarkThreadRead marks the specified thread as read.
-//
-// GitHub API docs: https://developer.github.com/v3/activity/notifications/#mark-a-thread-as-read
-func (s *ActivityService) MarkThreadRead(ctx context.Context, id string) (*Response, error) {
-	u := fmt.Sprintf("notifications/threads/%v", id)
-
-	req, err := s.client.NewRequest("PATCH", u, nil)
-	if err != nil {
-		return nil, err
-	}
-
-	return s.client.Do(ctx, req, nil)
-}
-
-// GetThreadSubscription checks to see if the authenticated user is subscribed
-// to a thread.
-//
-// GitHub API docs: https://developer.github.com/v3/activity/notifications/#get-a-thread-subscription
-func (s *ActivityService) GetThreadSubscription(ctx context.Context, id string) (*Subscription, *Response, error) {
-	u := fmt.Sprintf("notifications/threads/%v/subscription", id)
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	sub := new(Subscription)
-	resp, err := s.client.Do(ctx, req, sub)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return sub, resp, nil
-}
-
-// SetThreadSubscription sets the subscription for the specified thread for the
-// authenticated user.
-//
-// GitHub API docs: https://developer.github.com/v3/activity/notifications/#set-a-thread-subscription
-func (s *ActivityService) SetThreadSubscription(ctx context.Context, id string, subscription *Subscription) (*Subscription, *Response, error) {
-	u := fmt.Sprintf("notifications/threads/%v/subscription", id)
-
-	req, err := s.client.NewRequest("PUT", u, subscription)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	sub := new(Subscription)
-	resp, err := s.client.Do(ctx, req, sub)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return sub, resp, nil
-}
-
-// DeleteThreadSubscription deletes the subscription for the specified thread
-// for the authenticated user.
-//
-// GitHub API docs: https://developer.github.com/v3/activity/notifications/#delete-a-thread-subscription
-func (s *ActivityService) DeleteThreadSubscription(ctx context.Context, id string) (*Response, error) {
-	u := fmt.Sprintf("notifications/threads/%v/subscription", id)
-	req, err := s.client.NewRequest("DELETE", u, nil)
-	if err != nil {
-		return nil, err
-	}
-
-	return s.client.Do(ctx, req, nil)
-}

+ 0 - 135
vendor/github.com/google/go-github/github/activity_star.go

@@ -1,135 +0,0 @@
-// Copyright 2013 The go-github 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 github
-
-import (
-	"context"
-	"fmt"
-)
-
-// StarredRepository is returned by ListStarred.
-type StarredRepository struct {
-	StarredAt  *Timestamp  `json:"starred_at,omitempty"`
-	Repository *Repository `json:"repo,omitempty"`
-}
-
-// Stargazer represents a user that has starred a repository.
-type Stargazer struct {
-	StarredAt *Timestamp `json:"starred_at,omitempty"`
-	User      *User      `json:"user,omitempty"`
-}
-
-// ListStargazers lists people who have starred the specified repo.
-//
-// GitHub API docs: https://developer.github.com/v3/activity/starring/#list-stargazers
-func (s *ActivityService) ListStargazers(ctx context.Context, owner, repo string, opt *ListOptions) ([]*Stargazer, *Response, error) {
-	u := fmt.Sprintf("repos/%s/%s/stargazers", owner, repo)
-	u, err := addOptions(u, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches
-	req.Header.Set("Accept", mediaTypeStarringPreview)
-
-	var stargazers []*Stargazer
-	resp, err := s.client.Do(ctx, req, &stargazers)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return stargazers, resp, nil
-}
-
-// ActivityListStarredOptions specifies the optional parameters to the
-// ActivityService.ListStarred method.
-type ActivityListStarredOptions struct {
-	// How to sort the repository list. Possible values are: created, updated,
-	// pushed, full_name. Default is "full_name".
-	Sort string `url:"sort,omitempty"`
-
-	// Direction in which to sort repositories. Possible values are: asc, desc.
-	// Default is "asc" when sort is "full_name", otherwise default is "desc".
-	Direction string `url:"direction,omitempty"`
-
-	ListOptions
-}
-
-// ListStarred lists all the repos starred by a user. Passing the empty string
-// will list the starred repositories for the authenticated user.
-//
-// GitHub API docs: https://developer.github.com/v3/activity/starring/#list-repositories-being-starred
-func (s *ActivityService) ListStarred(ctx context.Context, user string, opt *ActivityListStarredOptions) ([]*StarredRepository, *Response, error) {
-	var u string
-	if user != "" {
-		u = fmt.Sprintf("users/%v/starred", user)
-	} else {
-		u = "user/starred"
-	}
-	u, err := addOptions(u, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches
-	req.Header.Set("Accept", mediaTypeStarringPreview)
-
-	var repos []*StarredRepository
-	resp, err := s.client.Do(ctx, req, &repos)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return repos, resp, nil
-}
-
-// IsStarred checks if a repository is starred by authenticated user.
-//
-// GitHub API docs: https://developer.github.com/v3/activity/starring/#check-if-you-are-starring-a-repository
-func (s *ActivityService) IsStarred(ctx context.Context, owner, repo string) (bool, *Response, error) {
-	u := fmt.Sprintf("user/starred/%v/%v", owner, repo)
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return false, nil, err
-	}
-	resp, err := s.client.Do(ctx, req, nil)
-	starred, err := parseBoolResponse(err)
-	return starred, resp, err
-}
-
-// Star a repository as the authenticated user.
-//
-// GitHub API docs: https://developer.github.com/v3/activity/starring/#star-a-repository
-func (s *ActivityService) Star(ctx context.Context, owner, repo string) (*Response, error) {
-	u := fmt.Sprintf("user/starred/%v/%v", owner, repo)
-	req, err := s.client.NewRequest("PUT", u, nil)
-	if err != nil {
-		return nil, err
-	}
-	return s.client.Do(ctx, req, nil)
-}
-
-// Unstar a repository as the authenticated user.
-//
-// GitHub API docs: https://developer.github.com/v3/activity/starring/#unstar-a-repository
-func (s *ActivityService) Unstar(ctx context.Context, owner, repo string) (*Response, error) {
-	u := fmt.Sprintf("user/starred/%v/%v", owner, repo)
-	req, err := s.client.NewRequest("DELETE", u, nil)
-	if err != nil {
-		return nil, err
-	}
-	return s.client.Do(ctx, req, nil)
-}

+ 0 - 146
vendor/github.com/google/go-github/github/activity_watching.go

@@ -1,146 +0,0 @@
-// Copyright 2014 The go-github 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 github
-
-import (
-	"context"
-	"fmt"
-)
-
-// Subscription identifies a repository or thread subscription.
-type Subscription struct {
-	Subscribed *bool      `json:"subscribed,omitempty"`
-	Ignored    *bool      `json:"ignored,omitempty"`
-	Reason     *string    `json:"reason,omitempty"`
-	CreatedAt  *Timestamp `json:"created_at,omitempty"`
-	URL        *string    `json:"url,omitempty"`
-
-	// only populated for repository subscriptions
-	RepositoryURL *string `json:"repository_url,omitempty"`
-
-	// only populated for thread subscriptions
-	ThreadURL *string `json:"thread_url,omitempty"`
-}
-
-// ListWatchers lists watchers of a particular repo.
-//
-// GitHub API docs: https://developer.github.com/v3/activity/watching/#list-watchers
-func (s *ActivityService) ListWatchers(ctx context.Context, owner, repo string, opt *ListOptions) ([]*User, *Response, error) {
-	u := fmt.Sprintf("repos/%s/%s/subscribers", owner, repo)
-	u, err := addOptions(u, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	var watchers []*User
-	resp, err := s.client.Do(ctx, req, &watchers)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return watchers, resp, nil
-}
-
-// ListWatched lists the repositories the specified user is watching. Passing
-// the empty string will fetch watched repos for the authenticated user.
-//
-// GitHub API docs: https://developer.github.com/v3/activity/watching/#list-repositories-being-watched
-func (s *ActivityService) ListWatched(ctx context.Context, user string, opt *ListOptions) ([]*Repository, *Response, error) {
-	var u string
-	if user != "" {
-		u = fmt.Sprintf("users/%v/subscriptions", user)
-	} else {
-		u = "user/subscriptions"
-	}
-	u, err := addOptions(u, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	var watched []*Repository
-	resp, err := s.client.Do(ctx, req, &watched)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return watched, resp, nil
-}
-
-// GetRepositorySubscription returns the subscription for the specified
-// repository for the authenticated user. If the authenticated user is not
-// watching the repository, a nil Subscription is returned.
-//
-// GitHub API docs: https://developer.github.com/v3/activity/watching/#get-a-repository-subscription
-func (s *ActivityService) GetRepositorySubscription(ctx context.Context, owner, repo string) (*Subscription, *Response, error) {
-	u := fmt.Sprintf("repos/%s/%s/subscription", owner, repo)
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	sub := new(Subscription)
-	resp, err := s.client.Do(ctx, req, sub)
-	if err != nil {
-		// if it's just a 404, don't return that as an error
-		_, err = parseBoolResponse(err)
-		return nil, resp, err
-	}
-
-	return sub, resp, nil
-}
-
-// SetRepositorySubscription sets the subscription for the specified repository
-// for the authenticated user.
-//
-// To watch a repository, set subscription.Subscribed to true.
-// To ignore notifications made within a repository, set subscription.Ignored to true.
-// To stop watching a repository, use DeleteRepositorySubscription.
-//
-// GitHub API docs: https://developer.github.com/v3/activity/watching/#set-a-repository-subscription
-func (s *ActivityService) SetRepositorySubscription(ctx context.Context, owner, repo string, subscription *Subscription) (*Subscription, *Response, error) {
-	u := fmt.Sprintf("repos/%s/%s/subscription", owner, repo)
-
-	req, err := s.client.NewRequest("PUT", u, subscription)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	sub := new(Subscription)
-	resp, err := s.client.Do(ctx, req, sub)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return sub, resp, nil
-}
-
-// DeleteRepositorySubscription deletes the subscription for the specified
-// repository for the authenticated user.
-//
-// This is used to stop watching a repository. To control whether or not to
-// receive notifications from a repository, use SetRepositorySubscription.
-//
-// GitHub API docs: https://developer.github.com/v3/activity/watching/#delete-a-repository-subscription
-func (s *ActivityService) DeleteRepositorySubscription(ctx context.Context, owner, repo string) (*Response, error) {
-	u := fmt.Sprintf("repos/%s/%s/subscription", owner, repo)
-	req, err := s.client.NewRequest("DELETE", u, nil)
-	if err != nil {
-		return nil, err
-	}
-
-	return s.client.Do(ctx, req, nil)
-}

+ 0 - 101
vendor/github.com/google/go-github/github/admin.go

@@ -1,101 +0,0 @@
-// Copyright 2016 The go-github 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 github
-
-import (
-	"context"
-	"fmt"
-)
-
-// AdminService handles communication with the admin related methods of the
-// GitHub API. These API routes are normally only accessible for GitHub
-// Enterprise installations.
-//
-// GitHub API docs: https://developer.github.com/v3/enterprise/
-type AdminService service
-
-// TeamLDAPMapping represents the mapping between a GitHub team and an LDAP group.
-type TeamLDAPMapping struct {
-	ID          *int64  `json:"id,omitempty"`
-	LDAPDN      *string `json:"ldap_dn,omitempty"`
-	URL         *string `json:"url,omitempty"`
-	Name        *string `json:"name,omitempty"`
-	Slug        *string `json:"slug,omitempty"`
-	Description *string `json:"description,omitempty"`
-	Privacy     *string `json:"privacy,omitempty"`
-	Permission  *string `json:"permission,omitempty"`
-
-	MembersURL      *string `json:"members_url,omitempty"`
-	RepositoriesURL *string `json:"repositories_url,omitempty"`
-}
-
-func (m TeamLDAPMapping) String() string {
-	return Stringify(m)
-}
-
-// UserLDAPMapping represents the mapping between a GitHub user and an LDAP user.
-type UserLDAPMapping struct {
-	ID         *int64  `json:"id,omitempty"`
-	LDAPDN     *string `json:"ldap_dn,omitempty"`
-	Login      *string `json:"login,omitempty"`
-	AvatarURL  *string `json:"avatar_url,omitempty"`
-	GravatarID *string `json:"gravatar_id,omitempty"`
-	Type       *string `json:"type,omitempty"`
-	SiteAdmin  *bool   `json:"site_admin,omitempty"`
-
-	URL               *string `json:"url,omitempty"`
-	EventsURL         *string `json:"events_url,omitempty"`
-	FollowingURL      *string `json:"following_url,omitempty"`
-	FollowersURL      *string `json:"followers_url,omitempty"`
-	GistsURL          *string `json:"gists_url,omitempty"`
-	OrganizationsURL  *string `json:"organizations_url,omitempty"`
-	ReceivedEventsURL *string `json:"received_events_url,omitempty"`
-	ReposURL          *string `json:"repos_url,omitempty"`
-	StarredURL        *string `json:"starred_url,omitempty"`
-	SubscriptionsURL  *string `json:"subscriptions_url,omitempty"`
-}
-
-func (m UserLDAPMapping) String() string {
-	return Stringify(m)
-}
-
-// UpdateUserLDAPMapping updates the mapping between a GitHub user and an LDAP user.
-//
-// GitHub API docs: https://developer.github.com/v3/enterprise/ldap/#update-ldap-mapping-for-a-user
-func (s *AdminService) UpdateUserLDAPMapping(ctx context.Context, user string, mapping *UserLDAPMapping) (*UserLDAPMapping, *Response, error) {
-	u := fmt.Sprintf("admin/ldap/users/%v/mapping", user)
-	req, err := s.client.NewRequest("PATCH", u, mapping)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	m := new(UserLDAPMapping)
-	resp, err := s.client.Do(ctx, req, m)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return m, resp, nil
-}
-
-// UpdateTeamLDAPMapping updates the mapping between a GitHub team and an LDAP group.
-//
-// GitHub API docs: https://developer.github.com/v3/enterprise/ldap/#update-ldap-mapping-for-a-team
-func (s *AdminService) UpdateTeamLDAPMapping(ctx context.Context, team int64, mapping *TeamLDAPMapping) (*TeamLDAPMapping, *Response, error) {
-	u := fmt.Sprintf("admin/ldap/teams/%v/mapping", team)
-	req, err := s.client.NewRequest("PATCH", u, mapping)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	m := new(TeamLDAPMapping)
-	resp, err := s.client.Do(ctx, req, m)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return m, resp, nil
-}

+ 0 - 171
vendor/github.com/google/go-github/github/admin_stats.go

@@ -1,171 +0,0 @@
-// Copyright 2017 The go-github 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 github
-
-import (
-	"context"
-	"fmt"
-)
-
-// AdminStats represents a variety of stats of a Github Enterprise
-// installation.
-type AdminStats struct {
-	Issues     *IssueStats     `json:"issues,omitempty"`
-	Hooks      *HookStats      `json:"hooks,omitempty"`
-	Milestones *MilestoneStats `json:"milestones,omitempty"`
-	Orgs       *OrgStats       `json:"orgs,omitempty"`
-	Comments   *CommentStats   `json:"comments,omitempty"`
-	Pages      *PageStats      `json:"pages,omitempty"`
-	Users      *UserStats      `json:"users,omitempty"`
-	Gists      *GistStats      `json:"gists,omitempty"`
-	Pulls      *PullStats      `json:"pulls,omitempty"`
-	Repos      *RepoStats      `json:"repos,omitempty"`
-}
-
-func (s AdminStats) String() string {
-	return Stringify(s)
-}
-
-// IssueStats represents the number of total, open and closed issues.
-type IssueStats struct {
-	TotalIssues  *int `json:"total_issues,omitempty"`
-	OpenIssues   *int `json:"open_issues,omitempty"`
-	ClosedIssues *int `json:"closed_issues,omitempty"`
-}
-
-func (s IssueStats) String() string {
-	return Stringify(s)
-}
-
-// HookStats represents the number of total, active and inactive hooks.
-type HookStats struct {
-	TotalHooks    *int `json:"total_hooks,omitempty"`
-	ActiveHooks   *int `json:"active_hooks,omitempty"`
-	InactiveHooks *int `json:"inactive_hooks,omitempty"`
-}
-
-func (s HookStats) String() string {
-	return Stringify(s)
-}
-
-// MilestoneStats represents the number of total, open and close milestones.
-type MilestoneStats struct {
-	TotalMilestones  *int `json:"total_milestones,omitempty"`
-	OpenMilestones   *int `json:"open_milestones,omitempty"`
-	ClosedMilestones *int `json:"closed_milestones,omitempty"`
-}
-
-func (s MilestoneStats) String() string {
-	return Stringify(s)
-}
-
-// OrgStats represents the number of total, disabled organizations and the team
-// and team member count.
-type OrgStats struct {
-	TotalOrgs        *int `json:"total_orgs,omitempty"`
-	DisabledOrgs     *int `json:"disabled_orgs,omitempty"`
-	TotalTeams       *int `json:"total_teams,omitempty"`
-	TotalTeamMembers *int `json:"total_team_members,omitempty"`
-}
-
-func (s OrgStats) String() string {
-	return Stringify(s)
-}
-
-// CommentStats represents the number of total comments on commits, gists, issues
-// and pull requests.
-type CommentStats struct {
-	TotalCommitComments      *int `json:"total_commit_comments,omitempty"`
-	TotalGistComments        *int `json:"total_gist_comments,omitempty"`
-	TotalIssueComments       *int `json:"total_issue_comments,omitempty"`
-	TotalPullRequestComments *int `json:"total_pull_request_comments,omitempty"`
-}
-
-func (s CommentStats) String() string {
-	return Stringify(s)
-}
-
-// PageStats represents the total number of github pages.
-type PageStats struct {
-	TotalPages *int `json:"total_pages,omitempty"`
-}
-
-func (s PageStats) String() string {
-	return Stringify(s)
-}
-
-// UserStats represents the number of total, admin and suspended users.
-type UserStats struct {
-	TotalUsers     *int `json:"total_users,omitempty"`
-	AdminUsers     *int `json:"admin_users,omitempty"`
-	SuspendedUsers *int `json:"suspended_users,omitempty"`
-}
-
-func (s UserStats) String() string {
-	return Stringify(s)
-}
-
-//GistStats represents the number of total, private and public gists.
-type GistStats struct {
-	TotalGists   *int `json:"total_gists,omitempty"`
-	PrivateGists *int `json:"private_gists,omitempty"`
-	PublicGists  *int `json:"public_gists,omitempty"`
-}
-
-func (s GistStats) String() string {
-	return Stringify(s)
-}
-
-// PullStats represents the number of total, merged, mergable and unmergeable
-// pull-requests.
-type PullStats struct {
-	TotalPulls      *int `json:"total_pulls,omitempty"`
-	MergedPulls     *int `json:"merged_pulls,omitempty"`
-	MergablePulls   *int `json:"mergeable_pulls,omitempty"`
-	UnmergablePulls *int `json:"unmergeable_pulls,omitempty"`
-}
-
-func (s PullStats) String() string {
-	return Stringify(s)
-}
-
-// RepoStats represents the number of total, root, fork, organization repositories
-// together with the total number of pushes and wikis.
-type RepoStats struct {
-	TotalRepos  *int `json:"total_repos,omitempty"`
-	RootRepos   *int `json:"root_repos,omitempty"`
-	ForkRepos   *int `json:"fork_repos,omitempty"`
-	OrgRepos    *int `json:"org_repos,omitempty"`
-	TotalPushes *int `json:"total_pushes,omitempty"`
-	TotalWikis  *int `json:"total_wikis,omitempty"`
-}
-
-func (s RepoStats) String() string {
-	return Stringify(s)
-}
-
-// GetAdminStats returns a variety of metrics about a Github Enterprise
-// installation.
-//
-// Please note that this is only available to site administrators,
-// otherwise it will error with a 404 not found (instead of 401 or 403).
-//
-// GitHub API docs: https://developer.github.com/v3/enterprise-admin/admin_stats/
-func (s *AdminService) GetAdminStats(ctx context.Context) (*AdminStats, *Response, error) {
-	u := fmt.Sprintf("enterprise/stats/all")
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	m := new(AdminStats)
-	resp, err := s.client.Do(ctx, req, m)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return m, resp, nil
-}

+ 0 - 169
vendor/github.com/google/go-github/github/apps.go

@@ -1,169 +0,0 @@
-// Copyright 2016 The go-github 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 github
-
-import (
-	"context"
-	"fmt"
-	"time"
-)
-
-// AppsService provides access to the installation related functions
-// in the GitHub API.
-//
-// GitHub API docs: https://developer.github.com/v3/apps/
-type AppsService service
-
-// App represents a GitHub App.
-type App struct {
-	ID          *int64     `json:"id,omitempty"`
-	Owner       *User      `json:"owner,omitempty"`
-	Name        *string    `json:"name,omitempty"`
-	Description *string    `json:"description,omitempty"`
-	ExternalURL *string    `json:"external_url,omitempty"`
-	HTMLURL     *string    `json:"html_url,omitempty"`
-	CreatedAt   *time.Time `json:"created_at,omitempty"`
-	UpdatedAt   *time.Time `json:"updated_at,omitempty"`
-}
-
-// InstallationToken represents an installation token.
-type InstallationToken struct {
-	Token     *string    `json:"token,omitempty"`
-	ExpiresAt *time.Time `json:"expires_at,omitempty"`
-}
-
-// Get a single GitHub App. Passing the empty string will get
-// the authenticated GitHub App.
-//
-// Note: appSlug is just the URL-friendly name of your GitHub App.
-// You can find this on the settings page for your GitHub App
-// (e.g., https://github.com/settings/apps/:app_slug).
-//
-// GitHub API docs: https://developer.github.com/v3/apps/#get-a-single-github-app
-func (s *AppsService) Get(ctx context.Context, appSlug string) (*App, *Response, error) {
-	var u string
-	if appSlug != "" {
-		u = fmt.Sprintf("apps/%v", appSlug)
-	} else {
-		u = "app"
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeIntegrationPreview)
-
-	app := new(App)
-	resp, err := s.client.Do(ctx, req, app)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return app, resp, nil
-}
-
-// ListInstallations lists the installations that the current GitHub App has.
-//
-// GitHub API docs: https://developer.github.com/v3/apps/#find-installations
-func (s *AppsService) ListInstallations(ctx context.Context, opt *ListOptions) ([]*Installation, *Response, error) {
-	u, err := addOptions("app/installations", opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeIntegrationPreview)
-
-	var i []*Installation
-	resp, err := s.client.Do(ctx, req, &i)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return i, resp, nil
-}
-
-// GetInstallation returns the specified installation.
-//
-// GitHub API docs: https://developer.github.com/v3/apps/#get-a-single-installation
-func (s *AppsService) GetInstallation(ctx context.Context, id int64) (*Installation, *Response, error) {
-	u := fmt.Sprintf("app/installations/%v", id)
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeIntegrationPreview)
-
-	i := new(Installation)
-	resp, err := s.client.Do(ctx, req, i)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return i, resp, nil
-}
-
-// ListUserInstallations lists installations that are accessible to the authenticated user.
-//
-// GitHub API docs: https://developer.github.com/v3/apps/#list-installations-for-user
-func (s *AppsService) ListUserInstallations(ctx context.Context, opt *ListOptions) ([]*Installation, *Response, error) {
-	u, err := addOptions("user/installations", opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeIntegrationPreview)
-
-	var i struct {
-		Installations []*Installation `json:"installations"`
-	}
-	resp, err := s.client.Do(ctx, req, &i)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return i.Installations, resp, nil
-}
-
-// CreateInstallationToken creates a new installation token.
-//
-// GitHub API docs: https://developer.github.com/v3/apps/#create-a-new-installation-token
-func (s *AppsService) CreateInstallationToken(ctx context.Context, id int64) (*InstallationToken, *Response, error) {
-	u := fmt.Sprintf("installations/%v/access_tokens", id)
-
-	req, err := s.client.NewRequest("POST", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeIntegrationPreview)
-
-	t := new(InstallationToken)
-	resp, err := s.client.Do(ctx, req, t)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return t, resp, nil
-}

+ 0 - 114
vendor/github.com/google/go-github/github/apps_installation.go

@@ -1,114 +0,0 @@
-// Copyright 2016 The go-github 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 github
-
-import (
-	"context"
-	"fmt"
-)
-
-// Installation represents a GitHub Apps installation.
-type Installation struct {
-	ID              *int64  `json:"id,omitempty"`
-	Account         *User   `json:"account,omitempty"`
-	AccessTokensURL *string `json:"access_tokens_url,omitempty"`
-	RepositoriesURL *string `json:"repositories_url,omitempty"`
-	HTMLURL         *string `json:"html_url,omitempty"`
-}
-
-func (i Installation) String() string {
-	return Stringify(i)
-}
-
-// ListRepos lists the repositories that are accessible to the authenticated installation.
-//
-// GitHub API docs: https://developer.github.com/v3/apps/installations/#list-repositories
-func (s *AppsService) ListRepos(ctx context.Context, opt *ListOptions) ([]*Repository, *Response, error) {
-	u, err := addOptions("installation/repositories", opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeIntegrationPreview)
-
-	var r struct {
-		Repositories []*Repository `json:"repositories"`
-	}
-	resp, err := s.client.Do(ctx, req, &r)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return r.Repositories, resp, nil
-}
-
-// ListUserRepos lists repositories that are accessible
-// to the authenticated user for an installation.
-//
-// GitHub API docs: https://developer.github.com/v3/apps/installations/#list-repositories-accessible-to-the-user-for-an-installation
-func (s *AppsService) ListUserRepos(ctx context.Context, id int64, opt *ListOptions) ([]*Repository, *Response, error) {
-	u := fmt.Sprintf("user/installations/%v/repositories", id)
-	u, err := addOptions(u, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeIntegrationPreview)
-
-	var r struct {
-		Repositories []*Repository `json:"repositories"`
-	}
-	resp, err := s.client.Do(ctx, req, &r)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return r.Repositories, resp, nil
-}
-
-// AddRepository adds a single repository to an installation.
-//
-// GitHub API docs: https://developer.github.com/v3/apps/installations/#add-repository-to-installation
-func (s *AppsService) AddRepository(ctx context.Context, instID, repoID int64) (*Repository, *Response, error) {
-	u := fmt.Sprintf("apps/installations/%v/repositories/%v", instID, repoID)
-	req, err := s.client.NewRequest("PUT", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	r := new(Repository)
-	resp, err := s.client.Do(ctx, req, r)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return r, resp, nil
-}
-
-// RemoveRepository removes a single repository from an installation.
-//
-// GitHub docs: https://developer.github.com/v3/apps/installations/#remove-repository-from-installation
-func (s *AppsService) RemoveRepository(ctx context.Context, instID, repoID int64) (*Response, error) {
-	u := fmt.Sprintf("apps/installations/%v/repositories/%v", instID, repoID)
-	req, err := s.client.NewRequest("DELETE", u, nil)
-	if err != nil {
-		return nil, err
-	}
-
-	return s.client.Do(ctx, req, nil)
-}

+ 0 - 180
vendor/github.com/google/go-github/github/apps_marketplace.go

@@ -1,180 +0,0 @@
-// Copyright 2017 The go-github 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 github
-
-import (
-	"context"
-	"fmt"
-)
-
-// MarketplaceService handles communication with the marketplace related
-// methods of the GitHub API.
-//
-// GitHub API docs: https://developer.github.com/v3/apps/marketplace/
-type MarketplaceService struct {
-	client *Client
-	// Stubbed controls whether endpoints that return stubbed data are used
-	// instead of production endpoints. Stubbed data is fake data that's useful
-	// for testing your GitHub Apps. Stubbed data is hard-coded and will not
-	// change based on actual subscriptions.
-	//
-	// GitHub API docs: https://developer.github.com/v3/apps/marketplace/
-	Stubbed bool
-}
-
-// MarketplacePlan represents a GitHub Apps Marketplace Listing Plan.
-type MarketplacePlan struct {
-	URL                 *string   `json:"url,omitempty"`
-	AccountsURL         *string   `json:"accounts_url,omitempty"`
-	ID                  *int64    `json:"id,omitempty"`
-	Name                *string   `json:"name,omitempty"`
-	Description         *string   `json:"description,omitempty"`
-	MonthlyPriceInCents *int      `json:"monthly_price_in_cents,omitempty"`
-	YearlyPriceInCents  *int      `json:"yearly_price_in_cents,omitempty"`
-	PriceModel          *string   `json:"price_model,omitempty"`
-	UnitName            *string   `json:"unit_name,omitempty"`
-	Bullets             *[]string `json:"bullets,omitempty"`
-}
-
-// MarketplacePurchase represents a GitHub Apps Marketplace Purchase.
-type MarketplacePurchase struct {
-	BillingCycle    *string                 `json:"billing_cycle,omitempty"`
-	NextBillingDate *string                 `json:"next_billing_date,omitempty"`
-	UnitCount       *int                    `json:"unit_count,omitempty"`
-	Plan            *MarketplacePlan        `json:"plan,omitempty"`
-	Account         *MarketplacePlanAccount `json:"account,omitempty"`
-}
-
-// MarketplacePlanAccount represents a GitHub Account (user or organization) on a specific plan.
-type MarketplacePlanAccount struct {
-	URL                      *string              `json:"url,omitempty"`
-	Type                     *string              `json:"type,omitempty"`
-	ID                       *int64               `json:"id,omitempty"`
-	Login                    *string              `json:"login,omitempty"`
-	Email                    *string              `json:"email,omitempty"`
-	OrganizationBillingEmail *string              `json:"organization_billing_email,omitempty"`
-	MarketplacePurchase      *MarketplacePurchase `json:"marketplace_purchase,omitempty"`
-}
-
-// ListPlans lists all plans for your Marketplace listing.
-//
-// GitHub API docs: https://developer.github.com/v3/apps/marketplace/#list-all-plans-for-your-marketplace-listing
-func (s *MarketplaceService) ListPlans(ctx context.Context, opt *ListOptions) ([]*MarketplacePlan, *Response, error) {
-	uri := s.marketplaceURI("plans")
-	u, err := addOptions(uri, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeMarketplacePreview)
-
-	var plans []*MarketplacePlan
-	resp, err := s.client.Do(ctx, req, &plans)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return plans, resp, nil
-}
-
-// ListPlanAccountsForPlan lists all GitHub accounts (user or organization) on a specific plan.
-//
-// GitHub API docs: https://developer.github.com/v3/apps/marketplace/#list-all-github-accounts-user-or-organization-on-a-specific-plan
-func (s *MarketplaceService) ListPlanAccountsForPlan(ctx context.Context, planID int64, opt *ListOptions) ([]*MarketplacePlanAccount, *Response, error) {
-	uri := s.marketplaceURI(fmt.Sprintf("plans/%v/accounts", planID))
-	u, err := addOptions(uri, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeMarketplacePreview)
-
-	var accounts []*MarketplacePlanAccount
-	resp, err := s.client.Do(ctx, req, &accounts)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return accounts, resp, nil
-}
-
-// ListPlanAccountsForAccount lists all GitHub accounts (user or organization) associated with an account.
-//
-// GitHub API docs: https://developer.github.com/v3/apps/marketplace/#check-if-a-github-account-is-associated-with-any-marketplace-listing
-func (s *MarketplaceService) ListPlanAccountsForAccount(ctx context.Context, accountID int64, opt *ListOptions) ([]*MarketplacePlanAccount, *Response, error) {
-	uri := s.marketplaceURI(fmt.Sprintf("accounts/%v", accountID))
-	u, err := addOptions(uri, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeMarketplacePreview)
-
-	var accounts []*MarketplacePlanAccount
-	resp, err := s.client.Do(ctx, req, &accounts)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return accounts, resp, nil
-}
-
-// ListMarketplacePurchasesForUser lists all GitHub marketplace purchases made by a user.
-//
-// GitHub API docs: https://developer.github.com/v3/apps/marketplace/#get-a-users-marketplace-purchases
-func (s *MarketplaceService) ListMarketplacePurchasesForUser(ctx context.Context, opt *ListOptions) ([]*MarketplacePurchase, *Response, error) {
-	uri := "user/marketplace_purchases"
-	if s.Stubbed {
-		uri = "user/marketplace_purchases/stubbed"
-	}
-
-	u, err := addOptions(uri, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeMarketplacePreview)
-
-	var purchases []*MarketplacePurchase
-	resp, err := s.client.Do(ctx, req, &purchases)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return purchases, resp, nil
-}
-
-func (s *MarketplaceService) marketplaceURI(endpoint string) string {
-	url := "marketplace_listing"
-	if s.Stubbed {
-		url = "marketplace_listing/stubbed"
-	}
-	return url + "/" + endpoint
-}

+ 0 - 435
vendor/github.com/google/go-github/github/authorizations.go

@@ -1,435 +0,0 @@
-// Copyright 2015 The go-github 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 github
-
-import (
-	"context"
-	"fmt"
-)
-
-// Scope models a GitHub authorization scope.
-//
-// GitHub API docs: https://developer.github.com/v3/oauth/#scopes
-type Scope string
-
-// This is the set of scopes for GitHub API V3
-const (
-	ScopeNone           Scope = "(no scope)" // REVISIT: is this actually returned, or just a documentation artifact?
-	ScopeUser           Scope = "user"
-	ScopeUserEmail      Scope = "user:email"
-	ScopeUserFollow     Scope = "user:follow"
-	ScopePublicRepo     Scope = "public_repo"
-	ScopeRepo           Scope = "repo"
-	ScopeRepoDeployment Scope = "repo_deployment"
-	ScopeRepoStatus     Scope = "repo:status"
-	ScopeDeleteRepo     Scope = "delete_repo"
-	ScopeNotifications  Scope = "notifications"
-	ScopeGist           Scope = "gist"
-	ScopeReadRepoHook   Scope = "read:repo_hook"
-	ScopeWriteRepoHook  Scope = "write:repo_hook"
-	ScopeAdminRepoHook  Scope = "admin:repo_hook"
-	ScopeAdminOrgHook   Scope = "admin:org_hook"
-	ScopeReadOrg        Scope = "read:org"
-	ScopeWriteOrg       Scope = "write:org"
-	ScopeAdminOrg       Scope = "admin:org"
-	ScopeReadPublicKey  Scope = "read:public_key"
-	ScopeWritePublicKey Scope = "write:public_key"
-	ScopeAdminPublicKey Scope = "admin:public_key"
-	ScopeReadGPGKey     Scope = "read:gpg_key"
-	ScopeWriteGPGKey    Scope = "write:gpg_key"
-	ScopeAdminGPGKey    Scope = "admin:gpg_key"
-)
-
-// AuthorizationsService handles communication with the authorization related
-// methods of the GitHub API.
-//
-// This service requires HTTP Basic Authentication; it cannot be accessed using
-// an OAuth token.
-//
-// GitHub API docs: https://developer.github.com/v3/oauth_authorizations/
-type AuthorizationsService service
-
-// Authorization represents an individual GitHub authorization.
-type Authorization struct {
-	ID             *int64            `json:"id,omitempty"`
-	URL            *string           `json:"url,omitempty"`
-	Scopes         []Scope           `json:"scopes,omitempty"`
-	Token          *string           `json:"token,omitempty"`
-	TokenLastEight *string           `json:"token_last_eight,omitempty"`
-	HashedToken    *string           `json:"hashed_token,omitempty"`
-	App            *AuthorizationApp `json:"app,omitempty"`
-	Note           *string           `json:"note,omitempty"`
-	NoteURL        *string           `json:"note_url,omitempty"`
-	UpdatedAt      *Timestamp        `json:"updated_at,omitempty"`
-	CreatedAt      *Timestamp        `json:"created_at,omitempty"`
-	Fingerprint    *string           `json:"fingerprint,omitempty"`
-
-	// User is only populated by the Check and Reset methods.
-	User *User `json:"user,omitempty"`
-}
-
-func (a Authorization) String() string {
-	return Stringify(a)
-}
-
-// AuthorizationApp represents an individual GitHub app (in the context of authorization).
-type AuthorizationApp struct {
-	URL      *string `json:"url,omitempty"`
-	Name     *string `json:"name,omitempty"`
-	ClientID *string `json:"client_id,omitempty"`
-}
-
-func (a AuthorizationApp) String() string {
-	return Stringify(a)
-}
-
-// Grant represents an OAuth application that has been granted access to an account.
-type Grant struct {
-	ID        *int64            `json:"id,omitempty"`
-	URL       *string           `json:"url,omitempty"`
-	App       *AuthorizationApp `json:"app,omitempty"`
-	CreatedAt *Timestamp        `json:"created_at,omitempty"`
-	UpdatedAt *Timestamp        `json:"updated_at,omitempty"`
-	Scopes    []string          `json:"scopes,omitempty"`
-}
-
-func (g Grant) String() string {
-	return Stringify(g)
-}
-
-// AuthorizationRequest represents a request to create an authorization.
-type AuthorizationRequest struct {
-	Scopes       []Scope `json:"scopes,omitempty"`
-	Note         *string `json:"note,omitempty"`
-	NoteURL      *string `json:"note_url,omitempty"`
-	ClientID     *string `json:"client_id,omitempty"`
-	ClientSecret *string `json:"client_secret,omitempty"`
-	Fingerprint  *string `json:"fingerprint,omitempty"`
-}
-
-func (a AuthorizationRequest) String() string {
-	return Stringify(a)
-}
-
-// AuthorizationUpdateRequest represents a request to update an authorization.
-//
-// Note that for any one update, you must only provide one of the "scopes"
-// fields. That is, you may provide only one of "Scopes", or "AddScopes", or
-// "RemoveScopes".
-//
-// GitHub API docs: https://developer.github.com/v3/oauth_authorizations/#update-an-existing-authorization
-type AuthorizationUpdateRequest struct {
-	Scopes       []string `json:"scopes,omitempty"`
-	AddScopes    []string `json:"add_scopes,omitempty"`
-	RemoveScopes []string `json:"remove_scopes,omitempty"`
-	Note         *string  `json:"note,omitempty"`
-	NoteURL      *string  `json:"note_url,omitempty"`
-	Fingerprint  *string  `json:"fingerprint,omitempty"`
-}
-
-func (a AuthorizationUpdateRequest) String() string {
-	return Stringify(a)
-}
-
-// List the authorizations for the authenticated user.
-//
-// GitHub API docs: https://developer.github.com/v3/oauth_authorizations/#list-your-authorizations
-func (s *AuthorizationsService) List(ctx context.Context, opt *ListOptions) ([]*Authorization, *Response, error) {
-	u := "authorizations"
-	u, err := addOptions(u, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	var auths []*Authorization
-	resp, err := s.client.Do(ctx, req, &auths)
-	if err != nil {
-		return nil, resp, err
-	}
-	return auths, resp, nil
-}
-
-// Get a single authorization.
-//
-// GitHub API docs: https://developer.github.com/v3/oauth_authorizations/#get-a-single-authorization
-func (s *AuthorizationsService) Get(ctx context.Context, id int64) (*Authorization, *Response, error) {
-	u := fmt.Sprintf("authorizations/%d", id)
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	a := new(Authorization)
-	resp, err := s.client.Do(ctx, req, a)
-	if err != nil {
-		return nil, resp, err
-	}
-	return a, resp, nil
-}
-
-// Create a new authorization for the specified OAuth application.
-//
-// GitHub API docs: https://developer.github.com/v3/oauth_authorizations/#create-a-new-authorization
-func (s *AuthorizationsService) Create(ctx context.Context, auth *AuthorizationRequest) (*Authorization, *Response, error) {
-	u := "authorizations"
-
-	req, err := s.client.NewRequest("POST", u, auth)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	a := new(Authorization)
-	resp, err := s.client.Do(ctx, req, a)
-	if err != nil {
-		return nil, resp, err
-	}
-	return a, resp, nil
-}
-
-// GetOrCreateForApp creates a new authorization for the specified OAuth
-// application, only if an authorization for that application doesn’t already
-// exist for the user.
-//
-// If a new token is created, the HTTP status code will be "201 Created", and
-// the returned Authorization.Token field will be populated. If an existing
-// token is returned, the status code will be "200 OK" and the
-// Authorization.Token field will be empty.
-//
-// clientID is the OAuth Client ID with which to create the token.
-//
-// GitHub API docs:
-// https://developer.github.com/v3/oauth_authorizations/#get-or-create-an-authorization-for-a-specific-app
-// https://developer.github.com/v3/oauth_authorizations/#get-or-create-an-authorization-for-a-specific-app-and-fingerprint
-func (s *AuthorizationsService) GetOrCreateForApp(ctx context.Context, clientID string, auth *AuthorizationRequest) (*Authorization, *Response, error) {
-	var u string
-	if auth.Fingerprint == nil || *auth.Fingerprint == "" {
-		u = fmt.Sprintf("authorizations/clients/%v", clientID)
-	} else {
-		u = fmt.Sprintf("authorizations/clients/%v/%v", clientID, *auth.Fingerprint)
-	}
-
-	req, err := s.client.NewRequest("PUT", u, auth)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	a := new(Authorization)
-	resp, err := s.client.Do(ctx, req, a)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return a, resp, nil
-}
-
-// Edit a single authorization.
-//
-// GitHub API docs: https://developer.github.com/v3/oauth_authorizations/#update-an-existing-authorization
-func (s *AuthorizationsService) Edit(ctx context.Context, id int64, auth *AuthorizationUpdateRequest) (*Authorization, *Response, error) {
-	u := fmt.Sprintf("authorizations/%d", id)
-
-	req, err := s.client.NewRequest("PATCH", u, auth)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	a := new(Authorization)
-	resp, err := s.client.Do(ctx, req, a)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return a, resp, nil
-}
-
-// Delete a single authorization.
-//
-// GitHub API docs: https://developer.github.com/v3/oauth_authorizations/#delete-an-authorization
-func (s *AuthorizationsService) Delete(ctx context.Context, id int64) (*Response, error) {
-	u := fmt.Sprintf("authorizations/%d", id)
-
-	req, err := s.client.NewRequest("DELETE", u, nil)
-	if err != nil {
-		return nil, err
-	}
-
-	return s.client.Do(ctx, req, nil)
-}
-
-// Check if an OAuth token is valid for a specific app.
-//
-// Note that this operation requires the use of BasicAuth, but where the
-// username is the OAuth application clientID, and the password is its
-// clientSecret. Invalid tokens will return a 404 Not Found.
-//
-// The returned Authorization.User field will be populated.
-//
-// GitHub API docs: https://developer.github.com/v3/oauth_authorizations/#check-an-authorization
-func (s *AuthorizationsService) Check(ctx context.Context, clientID string, token string) (*Authorization, *Response, error) {
-	u := fmt.Sprintf("applications/%v/tokens/%v", clientID, token)
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	a := new(Authorization)
-	resp, err := s.client.Do(ctx, req, a)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return a, resp, nil
-}
-
-// Reset is used to reset a valid OAuth token without end user involvement.
-// Applications must save the "token" property in the response, because changes
-// take effect immediately.
-//
-// Note that this operation requires the use of BasicAuth, but where the
-// username is the OAuth application clientID, and the password is its
-// clientSecret. Invalid tokens will return a 404 Not Found.
-//
-// The returned Authorization.User field will be populated.
-//
-// GitHub API docs: https://developer.github.com/v3/oauth_authorizations/#reset-an-authorization
-func (s *AuthorizationsService) Reset(ctx context.Context, clientID string, token string) (*Authorization, *Response, error) {
-	u := fmt.Sprintf("applications/%v/tokens/%v", clientID, token)
-
-	req, err := s.client.NewRequest("POST", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	a := new(Authorization)
-	resp, err := s.client.Do(ctx, req, a)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return a, resp, nil
-}
-
-// Revoke an authorization for an application.
-//
-// Note that this operation requires the use of BasicAuth, but where the
-// username is the OAuth application clientID, and the password is its
-// clientSecret. Invalid tokens will return a 404 Not Found.
-//
-// GitHub API docs: https://developer.github.com/v3/oauth_authorizations/#revoke-an-authorization-for-an-application
-func (s *AuthorizationsService) Revoke(ctx context.Context, clientID string, token string) (*Response, error) {
-	u := fmt.Sprintf("applications/%v/tokens/%v", clientID, token)
-
-	req, err := s.client.NewRequest("DELETE", u, nil)
-	if err != nil {
-		return nil, err
-	}
-
-	return s.client.Do(ctx, req, nil)
-}
-
-// ListGrants lists the set of OAuth applications that have been granted
-// access to a user's account. This will return one entry for each application
-// that has been granted access to the account, regardless of the number of
-// tokens an application has generated for the user.
-//
-// GitHub API docs: https://developer.github.com/v3/oauth_authorizations/#list-your-grants
-func (s *AuthorizationsService) ListGrants(ctx context.Context, opt *ListOptions) ([]*Grant, *Response, error) {
-	u, err := addOptions("applications/grants", opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	grants := []*Grant{}
-	resp, err := s.client.Do(ctx, req, &grants)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return grants, resp, nil
-}
-
-// GetGrant gets a single OAuth application grant.
-//
-// GitHub API docs: https://developer.github.com/v3/oauth_authorizations/#get-a-single-grant
-func (s *AuthorizationsService) GetGrant(ctx context.Context, id int64) (*Grant, *Response, error) {
-	u := fmt.Sprintf("applications/grants/%d", id)
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	grant := new(Grant)
-	resp, err := s.client.Do(ctx, req, grant)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return grant, resp, nil
-}
-
-// DeleteGrant deletes an OAuth application grant. Deleting an application's
-// grant will also delete all OAuth tokens associated with the application for
-// the user.
-//
-// GitHub API docs: https://developer.github.com/v3/oauth_authorizations/#delete-a-grant
-func (s *AuthorizationsService) DeleteGrant(ctx context.Context, id int64) (*Response, error) {
-	u := fmt.Sprintf("applications/grants/%d", id)
-	req, err := s.client.NewRequest("DELETE", u, nil)
-	if err != nil {
-		return nil, err
-	}
-
-	return s.client.Do(ctx, req, nil)
-}
-
-// CreateImpersonation creates an impersonation OAuth token.
-//
-// This requires admin permissions. With the returned Authorization.Token
-// you can e.g. create or delete a user's public SSH key. NOTE: creating a
-// new token automatically revokes an existing one.
-//
-// GitHub API docs: https://developer.github.com/enterprise/2.5/v3/users/administration/#create-an-impersonation-oauth-token
-func (s *AuthorizationsService) CreateImpersonation(ctx context.Context, username string, authReq *AuthorizationRequest) (*Authorization, *Response, error) {
-	u := fmt.Sprintf("admin/users/%v/authorizations", username)
-	req, err := s.client.NewRequest("POST", u, authReq)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	a := new(Authorization)
-	resp, err := s.client.Do(ctx, req, a)
-	if err != nil {
-		return nil, resp, err
-	}
-	return a, resp, nil
-}
-
-// DeleteImpersonation deletes an impersonation OAuth token.
-//
-// NOTE: there can be only one at a time.
-//
-// GitHub API docs: https://developer.github.com/enterprise/2.5/v3/users/administration/#delete-an-impersonation-oauth-token
-func (s *AuthorizationsService) DeleteImpersonation(ctx context.Context, username string) (*Response, error) {
-	u := fmt.Sprintf("admin/users/%v/authorizations", username)
-	req, err := s.client.NewRequest("DELETE", u, nil)
-	if err != nil {
-		return nil, err
-	}
-
-	return s.client.Do(ctx, req, nil)
-}

+ 0 - 191
vendor/github.com/google/go-github/github/doc.go

@@ -1,191 +0,0 @@
-// Copyright 2013 The go-github 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 github provides a client for using the GitHub API.
-
-Usage:
-
-	import "github.com/google/go-github/github"
-
-Construct a new GitHub client, then use the various services on the client to
-access different parts of the GitHub API. For example:
-
-	client := github.NewClient(nil)
-
-	// list all organizations for user "willnorris"
-	orgs, _, err := client.Organizations.List(ctx, "willnorris", nil)
-
-Some API methods have optional parameters that can be passed. For example:
-
-	client := github.NewClient(nil)
-
-	// list public repositories for org "github"
-	opt := &github.RepositoryListByOrgOptions{Type: "public"}
-	repos, _, err := client.Repositories.ListByOrg(ctx, "github", opt)
-
-The services of a client divide the API into logical chunks and correspond to
-the structure of the GitHub API documentation at
-https://developer.github.com/v3/.
-
-Authentication
-
-The go-github library does not directly handle authentication. Instead, when
-creating a new client, pass an http.Client that can handle authentication for
-you. The easiest and recommended way to do this is using the golang.org/x/oauth2
-library, but you can always use any other library that provides an http.Client.
-If you have an OAuth2 access token (for example, a personal API token), you can
-use it with the oauth2 library using:
-
-	import "golang.org/x/oauth2"
-
-	func main() {
-		ctx := context.Background()
-		ts := oauth2.StaticTokenSource(
-			&oauth2.Token{AccessToken: "... your access token ..."},
-		)
-		tc := oauth2.NewClient(ctx, ts)
-
-		client := github.NewClient(tc)
-
-		// list all repositories for the authenticated user
-		repos, _, err := client.Repositories.List(ctx, "", nil)
-	}
-
-Note that when using an authenticated Client, all calls made by the client will
-include the specified OAuth token. Therefore, authenticated clients should
-almost never be shared between different users.
-
-See the oauth2 docs for complete instructions on using that library.
-
-For API methods that require HTTP Basic Authentication, use the
-BasicAuthTransport.
-
-GitHub Apps authentication can be provided by the
-https://github.com/bradleyfalzon/ghinstallation package.
-
-	import "github.com/bradleyfalzon/ghinstallation"
-
-	func main() {
-		// Wrap the shared transport for use with the integration ID 1 authenticating with installation ID 99.
-		itr, err := ghinstallation.NewKeyFromFile(http.DefaultTransport, 1, 99, "2016-10-19.private-key.pem")
-		if err != nil {
-			// Handle error.
-		}
-
-		// Use installation transport with client
-		client := github.NewClient(&http.Client{Transport: itr})
-
-		// Use client...
-	}
-
-Rate Limiting
-
-GitHub imposes a rate limit on all API clients. Unauthenticated clients are
-limited to 60 requests per hour, while authenticated clients can make up to
-5,000 requests per hour. The Search API has a custom rate limit. Unauthenticated
-clients are limited to 10 requests per minute, while authenticated clients
-can make up to 30 requests per minute. To receive the higher rate limit when
-making calls that are not issued on behalf of a user,
-use UnauthenticatedRateLimitedTransport.
-
-The returned Response.Rate value contains the rate limit information
-from the most recent API call. If a recent enough response isn't
-available, you can use RateLimits to fetch the most up-to-date rate
-limit data for the client.
-
-To detect an API rate limit error, you can check if its type is *github.RateLimitError:
-
-	repos, _, err := client.Repositories.List(ctx, "", nil)
-	if _, ok := err.(*github.RateLimitError); ok {
-		log.Println("hit rate limit")
-	}
-
-Learn more about GitHub rate limiting at
-https://developer.github.com/v3/#rate-limiting.
-
-Accepted Status
-
-Some endpoints may return a 202 Accepted status code, meaning that the
-information required is not yet ready and was scheduled to be gathered on
-the GitHub side. Methods known to behave like this are documented specifying
-this behavior.
-
-To detect this condition of error, you can check if its type is
-*github.AcceptedError:
-
-	stats, _, err := client.Repositories.ListContributorsStats(ctx, org, repo)
-	if _, ok := err.(*github.AcceptedError); ok {
-		log.Println("scheduled on GitHub side")
-	}
-
-Conditional Requests
-
-The GitHub API has good support for conditional requests which will help
-prevent you from burning through your rate limit, as well as help speed up your
-application. go-github does not handle conditional requests directly, but is
-instead designed to work with a caching http.Transport. We recommend using
-https://github.com/gregjones/httpcache for that.
-
-Learn more about GitHub conditional requests at
-https://developer.github.com/v3/#conditional-requests.
-
-Creating and Updating Resources
-
-All structs for GitHub resources use pointer values for all non-repeated fields.
-This allows distinguishing between unset fields and those set to a zero-value.
-Helper functions have been provided to easily create these pointers for string,
-bool, and int values. For example:
-
-	// create a new private repository named "foo"
-	repo := &github.Repository{
-		Name:    github.String("foo"),
-		Private: github.Bool(true),
-	}
-	client.Repositories.Create(ctx, "", repo)
-
-Users who have worked with protocol buffers should find this pattern familiar.
-
-Pagination
-
-All requests for resource collections (repos, pull requests, issues, etc.)
-support pagination. Pagination options are described in the
-github.ListOptions struct and passed to the list methods directly or as an
-embedded type of a more specific list options struct (for example
-github.PullRequestListOptions). Pages information is available via the
-github.Response struct.
-
-	client := github.NewClient(nil)
-
-	opt := &github.RepositoryListByOrgOptions{
-		ListOptions: github.ListOptions{PerPage: 10},
-	}
-	// get all pages of results
-	var allRepos []*github.Repository
-	for {
-		repos, resp, err := client.Repositories.ListByOrg(ctx, "github", opt)
-		if err != nil {
-			return err
-		}
-		allRepos = append(allRepos, repos...)
-		if resp.NextPage == 0 {
-			break
-		}
-		opt.Page = resp.NextPage
-	}
-
-Google App Engine
-
-Go on App Engine Classic (which as of this writing uses Go 1.6) can not use
-the "context" import and still relies on "golang.org/x/net/context".
-As a result, if you wish to continue to use "go-github" on App Engine Classic,
-you will need to rewrite all the "context" imports using the following command:
-
-	gofmt -w -r '"context" -> "golang.org/x/net/context"' *.go
-
-See "with_appengine.go" for more details.
-
-*/
-package github

+ 0 - 748
vendor/github.com/google/go-github/github/event_types.go

@@ -1,748 +0,0 @@
-// Copyright 2016 The go-github AUTHORS. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// These event types are shared between the Events API and used as Webhook payloads.
-
-package github
-
-// CommitCommentEvent is triggered when a commit comment is created.
-// The Webhook event name is "commit_comment".
-//
-// GitHub API docs: https://developer.github.com/v3/activity/events/types/#commitcommentevent
-type CommitCommentEvent struct {
-	Comment *RepositoryComment `json:"comment,omitempty"`
-
-	// The following fields are only populated by Webhook events.
-	Action       *string       `json:"action,omitempty"`
-	Repo         *Repository   `json:"repository,omitempty"`
-	Sender       *User         `json:"sender,omitempty"`
-	Installation *Installation `json:"installation,omitempty"`
-}
-
-// CreateEvent represents a created repository, branch, or tag.
-// The Webhook event name is "create".
-//
-// Note: webhooks will not receive this event for created repositories.
-// Additionally, webhooks will not receive this event for tags if more
-// than three tags are pushed at once.
-//
-// GitHub API docs: https://developer.github.com/v3/activity/events/types/#createevent
-type CreateEvent struct {
-	Ref *string `json:"ref,omitempty"`
-	// RefType is the object that was created. Possible values are: "repository", "branch", "tag".
-	RefType      *string `json:"ref_type,omitempty"`
-	MasterBranch *string `json:"master_branch,omitempty"`
-	Description  *string `json:"description,omitempty"`
-
-	// The following fields are only populated by Webhook events.
-	PusherType   *string       `json:"pusher_type,omitempty"`
-	Repo         *Repository   `json:"repository,omitempty"`
-	Sender       *User         `json:"sender,omitempty"`
-	Installation *Installation `json:"installation,omitempty"`
-}
-
-// DeleteEvent represents a deleted branch or tag.
-// The Webhook event name is "delete".
-//
-// Note: webhooks will not receive this event for tags if more than three tags
-// are deleted at once.
-//
-// GitHub API docs: https://developer.github.com/v3/activity/events/types/#deleteevent
-type DeleteEvent struct {
-	Ref *string `json:"ref,omitempty"`
-	// RefType is the object that was deleted. Possible values are: "branch", "tag".
-	RefType *string `json:"ref_type,omitempty"`
-
-	// The following fields are only populated by Webhook events.
-	PusherType   *string       `json:"pusher_type,omitempty"`
-	Repo         *Repository   `json:"repository,omitempty"`
-	Sender       *User         `json:"sender,omitempty"`
-	Installation *Installation `json:"installation,omitempty"`
-}
-
-// DeploymentEvent represents a deployment.
-// The Webhook event name is "deployment".
-//
-// Events of this type are not visible in timelines, they are only used to trigger hooks.
-//
-// GitHub API docs: https://developer.github.com/v3/activity/events/types/#deploymentevent
-type DeploymentEvent struct {
-	Deployment *Deployment `json:"deployment,omitempty"`
-	Repo       *Repository `json:"repository,omitempty"`
-
-	// The following fields are only populated by Webhook events.
-	Sender       *User         `json:"sender,omitempty"`
-	Installation *Installation `json:"installation,omitempty"`
-}
-
-// DeploymentStatusEvent represents a deployment status.
-// The Webhook event name is "deployment_status".
-//
-// Events of this type are not visible in timelines, they are only used to trigger hooks.
-//
-// GitHub API docs: https://developer.github.com/v3/activity/events/types/#deploymentstatusevent
-type DeploymentStatusEvent struct {
-	Deployment       *Deployment       `json:"deployment,omitempty"`
-	DeploymentStatus *DeploymentStatus `json:"deployment_status,omitempty"`
-	Repo             *Repository       `json:"repository,omitempty"`
-
-	// The following fields are only populated by Webhook events.
-	Sender       *User         `json:"sender,omitempty"`
-	Installation *Installation `json:"installation,omitempty"`
-}
-
-// ForkEvent is triggered when a user forks a repository.
-// The Webhook event name is "fork".
-//
-// GitHub API docs: https://developer.github.com/v3/activity/events/types/#forkevent
-type ForkEvent struct {
-	// Forkee is the created repository.
-	Forkee *Repository `json:"forkee,omitempty"`
-
-	// The following fields are only populated by Webhook events.
-	Repo         *Repository   `json:"repository,omitempty"`
-	Sender       *User         `json:"sender,omitempty"`
-	Installation *Installation `json:"installation,omitempty"`
-}
-
-// Page represents a single Wiki page.
-type Page struct {
-	PageName *string `json:"page_name,omitempty"`
-	Title    *string `json:"title,omitempty"`
-	Summary  *string `json:"summary,omitempty"`
-	Action   *string `json:"action,omitempty"`
-	SHA      *string `json:"sha,omitempty"`
-	HTMLURL  *string `json:"html_url,omitempty"`
-}
-
-// GollumEvent is triggered when a Wiki page is created or updated.
-// The Webhook event name is "gollum".
-//
-// GitHub API docs: https://developer.github.com/v3/activity/events/types/#gollumevent
-type GollumEvent struct {
-	Pages []*Page `json:"pages,omitempty"`
-
-	// The following fields are only populated by Webhook events.
-	Repo         *Repository   `json:"repository,omitempty"`
-	Sender       *User         `json:"sender,omitempty"`
-	Installation *Installation `json:"installation,omitempty"`
-}
-
-// EditChange represents the changes when an issue, pull request, or comment has
-// been edited.
-type EditChange struct {
-	Title *struct {
-		From *string `json:"from,omitempty"`
-	} `json:"title,omitempty"`
-	Body *struct {
-		From *string `json:"from,omitempty"`
-	} `json:"body,omitempty"`
-}
-
-// ProjectChange represents the changes when a project has been edited.
-type ProjectChange struct {
-	Name *struct {
-		From *string `json:"from,omitempty"`
-	} `json:"name,omitempty"`
-	Body *struct {
-		From *string `json:"from,omitempty"`
-	} `json:"body,omitempty"`
-}
-
-// ProjectCardChange represents the changes when a project card has been edited.
-type ProjectCardChange struct {
-	Note *struct {
-		From *string `json:"from,omitempty"`
-	} `json:"note,omitempty"`
-}
-
-// ProjectColumnChange represents the changes when a project column has been edited.
-type ProjectColumnChange struct {
-	Name *struct {
-		From *string `json:"from,omitempty"`
-	} `json:"name,omitempty"`
-}
-
-// TeamChange represents the changes when a team has been edited.
-type TeamChange struct {
-	Description *struct {
-		From *string `json:"from,omitempty"`
-	} `json:"description,omitempty"`
-	Name *struct {
-		From *string `json:"from,omitempty"`
-	} `json:"name,omitempty"`
-	Privacy *struct {
-		From *string `json:"from,omitempty"`
-	} `json:"privacy,omitempty"`
-	Repository *struct {
-		Permissions *struct {
-			From *struct {
-				Admin *bool `json:"admin,omitempty"`
-				Pull  *bool `json:"pull,omitempty"`
-				Push  *bool `json:"push,omitempty"`
-			} `json:"from,omitempty"`
-		} `json:"permissions,omitempty"`
-	} `json:"repository,omitempty"`
-}
-
-// InstallationEvent is triggered when a GitHub App has been installed or uninstalled.
-// The Webhook event name is "installation".
-//
-// GitHub API docs: https://developer.github.com/v3/activity/events/types/#installationevent
-type InstallationEvent struct {
-	// The action that was performed. Can be either "created" or "deleted".
-	Action       *string       `json:"action,omitempty"`
-	Sender       *User         `json:"sender,omitempty"`
-	Installation *Installation `json:"installation,omitempty"`
-}
-
-// InstallationRepositoriesEvent is triggered when a repository is added or
-// removed from an installation. The Webhook event name is "installation_repositories".
-//
-// GitHub API docs: https://developer.github.com/v3/activity/events/types/#installationrepositoriesevent
-type InstallationRepositoriesEvent struct {
-	// The action that was performed. Can be either "added" or "removed".
-	Action              *string       `json:"action,omitempty"`
-	RepositoriesAdded   []*Repository `json:"repositories_added,omitempty"`
-	RepositoriesRemoved []*Repository `json:"repositories_removed,omitempty"`
-	RepositorySelection *string       `json:"repository_selection,omitempty"`
-	Sender              *User         `json:"sender,omitempty"`
-	Installation        *Installation `json:"installation,omitempty"`
-}
-
-// IssueCommentEvent is triggered when an issue comment is created on an issue
-// or pull request.
-// The Webhook event name is "issue_comment".
-//
-// GitHub API docs: https://developer.github.com/v3/activity/events/types/#issuecommentevent
-type IssueCommentEvent struct {
-	// Action is the action that was performed on the comment.
-	// Possible values are: "created", "edited", "deleted".
-	Action  *string       `json:"action,omitempty"`
-	Issue   *Issue        `json:"issue,omitempty"`
-	Comment *IssueComment `json:"comment,omitempty"`
-
-	// The following fields are only populated by Webhook events.
-	Changes      *EditChange   `json:"changes,omitempty"`
-	Repo         *Repository   `json:"repository,omitempty"`
-	Sender       *User         `json:"sender,omitempty"`
-	Installation *Installation `json:"installation,omitempty"`
-}
-
-// IssuesEvent is triggered when an issue is assigned, unassigned, labeled,
-// unlabeled, opened, closed, or reopened.
-// The Webhook event name is "issues".
-//
-// GitHub API docs: https://developer.github.com/v3/activity/events/types/#issuesevent
-type IssuesEvent struct {
-	// Action is the action that was performed. Possible values are: "assigned",
-	// "unassigned", "labeled", "unlabeled", "opened", "closed", "reopened", "edited".
-	Action   *string `json:"action,omitempty"`
-	Issue    *Issue  `json:"issue,omitempty"`
-	Assignee *User   `json:"assignee,omitempty"`
-	Label    *Label  `json:"label,omitempty"`
-
-	// The following fields are only populated by Webhook events.
-	Changes      *EditChange   `json:"changes,omitempty"`
-	Repo         *Repository   `json:"repository,omitempty"`
-	Sender       *User         `json:"sender,omitempty"`
-	Installation *Installation `json:"installation,omitempty"`
-}
-
-// LabelEvent is triggered when a repository's label is created, edited, or deleted.
-// The Webhook event name is "label"
-//
-// GitHub API docs: https://developer.github.com/v3/activity/events/types/#labelevent
-type LabelEvent struct {
-	// Action is the action that was performed. Possible values are:
-	// "created", "edited", "deleted"
-	Action *string `json:"action,omitempty"`
-	Label  *Label  `json:"label,omitempty"`
-
-	// The following fields are only populated by Webhook events.
-	Changes      *EditChange   `json:"changes,omitempty"`
-	Repo         *Repository   `json:"repository,omitempty"`
-	Org          *Organization `json:"organization,omitempty"`
-	Installation *Installation `json:"installation,omitempty"`
-}
-
-// MarketplacePurchaseEvent is triggered when a user purchases, cancels, or changes
-// their GitHub Marketplace plan.
-// Webhook event name "marketplace_purchase".
-//
-// Github API docs: https://developer.github.com/v3/activity/events/types/#marketplacepurchaseevent
-type MarketplacePurchaseEvent struct {
-	// Action is the action that was performed. Possible values are:
-	// "purchased", "cancelled", "changed".
-	Action *string `json:"action,omitempty"`
-
-	// The following fields are only populated by Webhook events.
-	EffectiveDate               *Timestamp           `json:"effective_date,omitempty"`
-	MarketplacePurchase         *MarketplacePurchase `json:"marketplace_purchase,omitempty"`
-	PreviousMarketplacePurchase *MarketplacePurchase `json:"previous_marketplace_purchase,omitempty"`
-	Sender                      *User                `json:"sender,omitempty"`
-	Installation                *Installation        `json:"installation,omitempty"`
-}
-
-// MemberEvent is triggered when a user is added as a collaborator to a repository.
-// The Webhook event name is "member".
-//
-// GitHub API docs: https://developer.github.com/v3/activity/events/types/#memberevent
-type MemberEvent struct {
-	// Action is the action that was performed. Possible value is: "added".
-	Action *string `json:"action,omitempty"`
-	Member *User   `json:"member,omitempty"`
-
-	// The following fields are only populated by Webhook events.
-	Repo         *Repository   `json:"repository,omitempty"`
-	Sender       *User         `json:"sender,omitempty"`
-	Installation *Installation `json:"installation,omitempty"`
-}
-
-// MembershipEvent is triggered when a user is added or removed from a team.
-// The Webhook event name is "membership".
-//
-// Events of this type are not visible in timelines, they are only used to
-// trigger organization webhooks.
-//
-// GitHub API docs: https://developer.github.com/v3/activity/events/types/#membershipevent
-type MembershipEvent struct {
-	// Action is the action that was performed. Possible values are: "added", "removed".
-	Action *string `json:"action,omitempty"`
-	// Scope is the scope of the membership. Possible value is: "team".
-	Scope  *string `json:"scope,omitempty"`
-	Member *User   `json:"member,omitempty"`
-	Team   *Team   `json:"team,omitempty"`
-
-	// The following fields are only populated by Webhook events.
-	Org          *Organization `json:"organization,omitempty"`
-	Sender       *User         `json:"sender,omitempty"`
-	Installation *Installation `json:"installation,omitempty"`
-}
-
-// MilestoneEvent is triggered when a milestone is created, closed, opened, edited, or deleted.
-// The Webhook event name is "milestone".
-//
-// GitHub API docs: https://developer.github.com/v3/activity/events/types/#milestoneevent
-type MilestoneEvent struct {
-	// Action is the action that was performed. Possible values are:
-	// "created", "closed", "opened", "edited", "deleted"
-	Action    *string    `json:"action,omitempty"`
-	Milestone *Milestone `json:"milestone,omitempty"`
-
-	// The following fields are only populated by Webhook events.
-	Changes      *EditChange   `json:"changes,omitempty"`
-	Repo         *Repository   `json:"repository,omitempty"`
-	Sender       *User         `json:"sender,omitempty"`
-	Org          *Organization `json:"organization,omitempty"`
-	Installation *Installation `json:"installation,omitempty"`
-}
-
-// OrganizationEvent is triggered when a user is added, removed, or invited to an organization.
-// Events of this type are not visible in timelines. These events are only used to trigger organization hooks.
-// Webhook event name is "organization".
-//
-// GitHub API docs: https://developer.github.com/v3/activity/events/types/#organizationevent
-type OrganizationEvent struct {
-	// Action is the action that was performed.
-	// Can be one of "member_added", "member_removed", or "member_invited".
-	Action *string `json:"action,omitempty"`
-
-	// Invitaion is the invitation for the user or email if the action is "member_invited".
-	Invitation *Invitation `json:"invitation,omitempty"`
-
-	// Membership is the membership between the user and the organization.
-	// Not present when the action is "member_invited".
-	Membership *Membership `json:"membership,omitempty"`
-
-	Organization *Organization `json:"organization,omitempty"`
-	Sender       *User         `json:"sender,omitempty"`
-	Installation *Installation `json:"installation,omitempty"`
-}
-
-// OrgBlockEvent is triggered when an organization blocks or unblocks a user.
-// The Webhook event name is "org_block".
-//
-// GitHub API docs: https://developer.github.com/v3/activity/events/types/#orgblockevent
-type OrgBlockEvent struct {
-	// Action is the action that was performed.
-	// Can be "blocked" or "unblocked".
-	Action       *string       `json:"action,omitempty"`
-	BlockedUser  *User         `json:"blocked_user,omitempty"`
-	Organization *Organization `json:"organization,omitempty"`
-	Sender       *User         `json:"sender,omitempty"`
-
-	// The following fields are only populated by Webhook events.
-	Installation *Installation `json:"installation,omitempty"`
-}
-
-// PageBuildEvent represents an attempted build of a GitHub Pages site, whether
-// successful or not.
-// The Webhook event name is "page_build".
-//
-// This event is triggered on push to a GitHub Pages enabled branch (gh-pages
-// for project pages, master for user and organization pages).
-//
-// Events of this type are not visible in timelines, they are only used to trigger hooks.
-//
-// GitHub API docs: https://developer.github.com/v3/activity/events/types/#pagebuildevent
-type PageBuildEvent struct {
-	Build *PagesBuild `json:"build,omitempty"`
-
-	// The following fields are only populated by Webhook events.
-	ID           *int64        `json:"id,omitempty"`
-	Repo         *Repository   `json:"repository,omitempty"`
-	Sender       *User         `json:"sender,omitempty"`
-	Installation *Installation `json:"installation,omitempty"`
-}
-
-// PingEvent is triggered when a Webhook is added to GitHub.
-//
-// GitHub API docs: https://developer.github.com/webhooks/#ping-event
-type PingEvent struct {
-	// Random string of GitHub zen.
-	Zen *string `json:"zen,omitempty"`
-	// The ID of the webhook that triggered the ping.
-	HookID *int64 `json:"hook_id,omitempty"`
-	// The webhook configuration.
-	Hook         *Hook         `json:"hook,omitempty"`
-	Installation *Installation `json:"installation,omitempty"`
-}
-
-// ProjectEvent is triggered when project is created, modified or deleted.
-// The webhook event name is "project".
-//
-// GitHub API docs: https://developer.github.com/v3/activity/events/types/#projectevent
-type ProjectEvent struct {
-	Action  *string        `json:"action,omitempty"`
-	Changes *ProjectChange `json:"changes,omitempty"`
-	Project *Project       `json:"project,omitempty"`
-
-	// The following fields are only populated by Webhook events.
-	Repo         *Repository   `json:"repository,omitempty"`
-	Org          *Organization `json:"organization,omitempty"`
-	Sender       *User         `json:"sender,omitempty"`
-	Installation *Installation `json:"installation,omitempty"`
-}
-
-// ProjectCardEvent is triggered when a project card is created, updated, moved, converted to an issue, or deleted.
-// The webhook event name is "project_card".
-//
-// GitHub API docs: https://developer.github.com/v3/activity/events/types/#projectcardevent
-type ProjectCardEvent struct {
-	Action      *string            `json:"action,omitempty"`
-	Changes     *ProjectCardChange `json:"changes,omitempty"`
-	AfterID     *int64             `json:"after_id,omitempty"`
-	ProjectCard *ProjectCard       `json:"project_card,omitempty"`
-
-	// The following fields are only populated by Webhook events.
-	Repo         *Repository   `json:"repository,omitempty"`
-	Org          *Organization `json:"organization,omitempty"`
-	Sender       *User         `json:"sender,omitempty"`
-	Installation *Installation `json:"installation,omitempty"`
-}
-
-// ProjectColumnEvent is triggered when a project column is created, updated, moved, or deleted.
-// The webhook event name is "project_column".
-//
-// GitHub API docs: https://developer.github.com/v3/activity/events/types/#projectcolumnevent
-type ProjectColumnEvent struct {
-	Action        *string              `json:"action,omitempty"`
-	Changes       *ProjectColumnChange `json:"changes,omitempty"`
-	AfterID       *int64               `json:"after_id,omitempty"`
-	ProjectColumn *ProjectColumn       `json:"project_column,omitempty"`
-
-	// The following fields are only populated by Webhook events.
-	Repo         *Repository   `json:"repository,omitempty"`
-	Org          *Organization `json:"organization,omitempty"`
-	Sender       *User         `json:"sender,omitempty"`
-	Installation *Installation `json:"installation,omitempty"`
-}
-
-// PublicEvent is triggered when a private repository is open sourced.
-// According to GitHub: "Without a doubt: the best GitHub event."
-// The Webhook event name is "public".
-//
-// GitHub API docs: https://developer.github.com/v3/activity/events/types/#publicevent
-type PublicEvent struct {
-	// The following fields are only populated by Webhook events.
-	Repo         *Repository   `json:"repository,omitempty"`
-	Sender       *User         `json:"sender,omitempty"`
-	Installation *Installation `json:"installation,omitempty"`
-}
-
-// PullRequestEvent is triggered when a pull request is assigned, unassigned,
-// labeled, unlabeled, opened, closed, reopened, or synchronized.
-// The Webhook event name is "pull_request".
-//
-// GitHub API docs: https://developer.github.com/v3/activity/events/types/#pullrequestevent
-type PullRequestEvent struct {
-	// Action is the action that was performed. Possible values are:
-	// "assigned", "unassigned", "review_requested", "review_request_removed", "labeled", "unlabeled",
-	// "opened", "closed", "reopened", "synchronize", "edited".
-	// If the action is "closed" and the merged key is false,
-	// the pull request was closed with unmerged commits. If the action is "closed"
-	// and the merged key is true, the pull request was merged.
-	Action      *string      `json:"action,omitempty"`
-	Number      *int         `json:"number,omitempty"`
-	PullRequest *PullRequest `json:"pull_request,omitempty"`
-
-	// The following fields are only populated by Webhook events.
-	Changes            *EditChange   `json:"changes,omitempty"`
-	RequestedReviewers []*User       `json:"requested_reviewers,omitempty"` // Populated in "review_requested", "review_request_removed" event deliveries.
-	Repo               *Repository   `json:"repository,omitempty"`
-	Sender             *User         `json:"sender,omitempty"`
-	Installation       *Installation `json:"installation,omitempty"`
-}
-
-// PullRequestReviewEvent is triggered when a review is submitted on a pull
-// request.
-// The Webhook event name is "pull_request_review".
-//
-// GitHub API docs: https://developer.github.com/v3/activity/events/types/#pullrequestreviewevent
-type PullRequestReviewEvent struct {
-	// Action is always "submitted".
-	Action      *string            `json:"action,omitempty"`
-	Review      *PullRequestReview `json:"review,omitempty"`
-	PullRequest *PullRequest       `json:"pull_request,omitempty"`
-
-	// The following fields are only populated by Webhook events.
-	Repo         *Repository   `json:"repository,omitempty"`
-	Sender       *User         `json:"sender,omitempty"`
-	Installation *Installation `json:"installation,omitempty"`
-
-	// The following field is only present when the webhook is triggered on
-	// a repository belonging to an organization.
-	Organization *Organization `json:"organization,omitempty"`
-}
-
-// PullRequestReviewCommentEvent is triggered when a comment is created on a
-// portion of the unified diff of a pull request.
-// The Webhook event name is "pull_request_review_comment".
-//
-// GitHub API docs: https://developer.github.com/v3/activity/events/types/#pullrequestreviewcommentevent
-type PullRequestReviewCommentEvent struct {
-	// Action is the action that was performed on the comment.
-	// Possible values are: "created", "edited", "deleted".
-	Action      *string             `json:"action,omitempty"`
-	PullRequest *PullRequest        `json:"pull_request,omitempty"`
-	Comment     *PullRequestComment `json:"comment,omitempty"`
-
-	// The following fields are only populated by Webhook events.
-	Changes      *EditChange   `json:"changes,omitempty"`
-	Repo         *Repository   `json:"repository,omitempty"`
-	Sender       *User         `json:"sender,omitempty"`
-	Installation *Installation `json:"installation,omitempty"`
-}
-
-// PushEvent represents a git push to a GitHub repository.
-//
-// GitHub API docs: https://developer.github.com/v3/activity/events/types/#pushevent
-type PushEvent struct {
-	PushID       *int64            `json:"push_id,omitempty"`
-	Head         *string           `json:"head,omitempty"`
-	Ref          *string           `json:"ref,omitempty"`
-	Size         *int              `json:"size,omitempty"`
-	Commits      []PushEventCommit `json:"commits,omitempty"`
-	Before       *string           `json:"before,omitempty"`
-	DistinctSize *int              `json:"distinct_size,omitempty"`
-
-	// The following fields are only populated by Webhook events.
-	After        *string              `json:"after,omitempty"`
-	Created      *bool                `json:"created,omitempty"`
-	Deleted      *bool                `json:"deleted,omitempty"`
-	Forced       *bool                `json:"forced,omitempty"`
-	BaseRef      *string              `json:"base_ref,omitempty"`
-	Compare      *string              `json:"compare,omitempty"`
-	Repo         *PushEventRepository `json:"repository,omitempty"`
-	HeadCommit   *PushEventCommit     `json:"head_commit,omitempty"`
-	Pusher       *User                `json:"pusher,omitempty"`
-	Sender       *User                `json:"sender,omitempty"`
-	Installation *Installation        `json:"installation,omitempty"`
-}
-
-func (p PushEvent) String() string {
-	return Stringify(p)
-}
-
-// PushEventCommit represents a git commit in a GitHub PushEvent.
-type PushEventCommit struct {
-	Message  *string       `json:"message,omitempty"`
-	Author   *CommitAuthor `json:"author,omitempty"`
-	URL      *string       `json:"url,omitempty"`
-	Distinct *bool         `json:"distinct,omitempty"`
-
-	// The following fields are only populated by Events API.
-	SHA *string `json:"sha,omitempty"`
-
-	// The following fields are only populated by Webhook events.
-	ID        *string       `json:"id,omitempty"`
-	TreeID    *string       `json:"tree_id,omitempty"`
-	Timestamp *Timestamp    `json:"timestamp,omitempty"`
-	Committer *CommitAuthor `json:"committer,omitempty"`
-	Added     []string      `json:"added,omitempty"`
-	Removed   []string      `json:"removed,omitempty"`
-	Modified  []string      `json:"modified,omitempty"`
-}
-
-func (p PushEventCommit) String() string {
-	return Stringify(p)
-}
-
-// PushEventRepository represents the repo object in a PushEvent payload.
-type PushEventRepository struct {
-	ID              *int64              `json:"id,omitempty"`
-	Name            *string             `json:"name,omitempty"`
-	FullName        *string             `json:"full_name,omitempty"`
-	Owner           *PushEventRepoOwner `json:"owner,omitempty"`
-	Private         *bool               `json:"private,omitempty"`
-	Description     *string             `json:"description,omitempty"`
-	Fork            *bool               `json:"fork,omitempty"`
-	CreatedAt       *Timestamp          `json:"created_at,omitempty"`
-	PushedAt        *Timestamp          `json:"pushed_at,omitempty"`
-	UpdatedAt       *Timestamp          `json:"updated_at,omitempty"`
-	Homepage        *string             `json:"homepage,omitempty"`
-	Size            *int                `json:"size,omitempty"`
-	StargazersCount *int                `json:"stargazers_count,omitempty"`
-	WatchersCount   *int                `json:"watchers_count,omitempty"`
-	Language        *string             `json:"language,omitempty"`
-	HasIssues       *bool               `json:"has_issues,omitempty"`
-	HasDownloads    *bool               `json:"has_downloads,omitempty"`
-	HasWiki         *bool               `json:"has_wiki,omitempty"`
-	HasPages        *bool               `json:"has_pages,omitempty"`
-	ForksCount      *int                `json:"forks_count,omitempty"`
-	OpenIssuesCount *int                `json:"open_issues_count,omitempty"`
-	DefaultBranch   *string             `json:"default_branch,omitempty"`
-	MasterBranch    *string             `json:"master_branch,omitempty"`
-	Organization    *string             `json:"organization,omitempty"`
-	URL             *string             `json:"url,omitempty"`
-	ArchiveURL      *string             `json:"archive_url,omitempty"`
-	HTMLURL         *string             `json:"html_url,omitempty"`
-	StatusesURL     *string             `json:"statuses_url,omitempty"`
-	GitURL          *string             `json:"git_url,omitempty"`
-	SSHURL          *string             `json:"ssh_url,omitempty"`
-	CloneURL        *string             `json:"clone_url,omitempty"`
-	SVNURL          *string             `json:"svn_url,omitempty"`
-}
-
-// PushEventRepoOwner is a basic representation of user/org in a PushEvent payload.
-type PushEventRepoOwner struct {
-	Name  *string `json:"name,omitempty"`
-	Email *string `json:"email,omitempty"`
-}
-
-// ReleaseEvent is triggered when a release is published.
-// The Webhook event name is "release".
-//
-// GitHub API docs: https://developer.github.com/v3/activity/events/types/#releaseevent
-type ReleaseEvent struct {
-	// Action is the action that was performed. Possible value is: "published".
-	Action  *string            `json:"action,omitempty"`
-	Release *RepositoryRelease `json:"release,omitempty"`
-
-	// The following fields are only populated by Webhook events.
-	Repo         *Repository   `json:"repository,omitempty"`
-	Sender       *User         `json:"sender,omitempty"`
-	Installation *Installation `json:"installation,omitempty"`
-}
-
-// RepositoryEvent is triggered when a repository is created.
-// The Webhook event name is "repository".
-//
-// Events of this type are not visible in timelines, they are only used to
-// trigger organization webhooks.
-//
-// GitHub API docs: https://developer.github.com/v3/activity/events/types/#repositoryevent
-type RepositoryEvent struct {
-	// Action is the action that was performed. Possible values are: "created", "deleted",
-	// "publicized", "privatized".
-	Action *string     `json:"action,omitempty"`
-	Repo   *Repository `json:"repository,omitempty"`
-
-	// The following fields are only populated by Webhook events.
-	Org          *Organization `json:"organization,omitempty"`
-	Sender       *User         `json:"sender,omitempty"`
-	Installation *Installation `json:"installation,omitempty"`
-}
-
-// StatusEvent is triggered when the status of a Git commit changes.
-// The Webhook event name is "status".
-//
-// Events of this type are not visible in timelines, they are only used to
-// trigger hooks.
-//
-// GitHub API docs: https://developer.github.com/v3/activity/events/types/#statusevent
-type StatusEvent struct {
-	SHA *string `json:"sha,omitempty"`
-	// State is the new state. Possible values are: "pending", "success", "failure", "error".
-	State       *string   `json:"state,omitempty"`
-	Description *string   `json:"description,omitempty"`
-	TargetURL   *string   `json:"target_url,omitempty"`
-	Branches    []*Branch `json:"branches,omitempty"`
-
-	// The following fields are only populated by Webhook events.
-	ID           *int64            `json:"id,omitempty"`
-	Name         *string           `json:"name,omitempty"`
-	Context      *string           `json:"context,omitempty"`
-	Commit       *RepositoryCommit `json:"commit,omitempty"`
-	CreatedAt    *Timestamp        `json:"created_at,omitempty"`
-	UpdatedAt    *Timestamp        `json:"updated_at,omitempty"`
-	Repo         *Repository       `json:"repository,omitempty"`
-	Sender       *User             `json:"sender,omitempty"`
-	Installation *Installation     `json:"installation,omitempty"`
-}
-
-// TeamEvent is triggered when an organization's team is created, modified or deleted.
-// The Webhook event name is "team".
-//
-// Events of this type are not visible in timelines. These events are only used
-// to trigger hooks.
-//
-// GitHub API docs: https://developer.github.com/v3/activity/events/types/#teamevent
-type TeamEvent struct {
-	Action  *string     `json:"action,omitempty"`
-	Team    *Team       `json:"team,omitempty"`
-	Changes *TeamChange `json:"changes,omitempty"`
-	Repo    *Repository `json:"repository,omitempty"`
-
-	// The following fields are only populated by Webhook events.
-	Org          *Organization `json:"organization,omitempty"`
-	Sender       *User         `json:"sender,omitempty"`
-	Installation *Installation `json:"installation,omitempty"`
-}
-
-// TeamAddEvent is triggered when a repository is added to a team.
-// The Webhook event name is "team_add".
-//
-// Events of this type are not visible in timelines. These events are only used
-// to trigger hooks.
-//
-// GitHub API docs: https://developer.github.com/v3/activity/events/types/#teamaddevent
-type TeamAddEvent struct {
-	Team *Team       `json:"team,omitempty"`
-	Repo *Repository `json:"repository,omitempty"`
-
-	// The following fields are only populated by Webhook events.
-	Org          *Organization `json:"organization,omitempty"`
-	Sender       *User         `json:"sender,omitempty"`
-	Installation *Installation `json:"installation,omitempty"`
-}
-
-// WatchEvent is related to starring a repository, not watching. See this API
-// blog post for an explanation: https://developer.github.com/changes/2012-09-05-watcher-api/
-//
-// The event’s actor is the user who starred a repository, and the event’s
-// repository is the repository that was starred.
-//
-// GitHub API docs: https://developer.github.com/v3/activity/events/types/#watchevent
-type WatchEvent struct {
-	// Action is the action that was performed. Possible value is: "started".
-	Action *string `json:"action,omitempty"`
-
-	// The following fields are only populated by Webhook events.
-	Repo         *Repository   `json:"repository,omitempty"`
-	Sender       *User         `json:"sender,omitempty"`
-	Installation *Installation `json:"installation,omitempty"`
-}

+ 0 - 332
vendor/github.com/google/go-github/github/gen-accessors.go

@@ -1,332 +0,0 @@
-// Copyright 2017 The go-github 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-accessors generates accessor methods for structs with pointer fields.
-//
-// It is meant to be used by the go-github authors in conjunction with the
-// go generate tool before sending a commit to GitHub.
-package main
-
-import (
-	"bytes"
-	"flag"
-	"fmt"
-	"go/ast"
-	"go/format"
-	"go/parser"
-	"go/token"
-	"io/ioutil"
-	"log"
-	"os"
-	"sort"
-	"strings"
-	"text/template"
-)
-
-const (
-	fileSuffix = "-accessors.go"
-)
-
-var (
-	verbose = flag.Bool("v", false, "Print verbose log messages")
-
-	sourceTmpl = template.Must(template.New("source").Parse(source))
-
-	// blacklistStructMethod lists "struct.method" combos to skip.
-	blacklistStructMethod = map[string]bool{
-		"RepositoryContent.GetContent":    true,
-		"Client.GetBaseURL":               true,
-		"Client.GetUploadURL":             true,
-		"ErrorResponse.GetResponse":       true,
-		"RateLimitError.GetResponse":      true,
-		"AbuseRateLimitError.GetResponse": true,
-	}
-	// blacklistStruct lists structs to skip.
-	blacklistStruct = map[string]bool{
-		"Client": true,
-	}
-)
-
-func logf(fmt string, args ...interface{}) {
-	if *verbose {
-		log.Printf(fmt, args...)
-	}
-}
-
-func main() {
-	flag.Parse()
-	fset := token.NewFileSet()
-
-	pkgs, err := parser.ParseDir(fset, ".", sourceFilter, 0)
-	if err != nil {
-		log.Fatal(err)
-		return
-	}
-
-	for pkgName, pkg := range pkgs {
-		t := &templateData{
-			filename: pkgName + fileSuffix,
-			Year:     2017,
-			Package:  pkgName,
-			Imports:  map[string]string{},
-		}
-		for filename, f := range pkg.Files {
-			logf("Processing %v...", filename)
-			if err := t.processAST(f); err != nil {
-				log.Fatal(err)
-			}
-		}
-		if err := t.dump(); err != nil {
-			log.Fatal(err)
-		}
-	}
-	logf("Done.")
-}
-
-func (t *templateData) processAST(f *ast.File) error {
-	for _, decl := range f.Decls {
-		gd, ok := decl.(*ast.GenDecl)
-		if !ok {
-			continue
-		}
-		for _, spec := range gd.Specs {
-			ts, ok := spec.(*ast.TypeSpec)
-			if !ok {
-				continue
-			}
-			// Skip unexported identifiers.
-			if !ts.Name.IsExported() {
-				logf("Struct %v is unexported; skipping.", ts.Name)
-				continue
-			}
-			// Check if the struct is blacklisted.
-			if blacklistStruct[ts.Name.Name] {
-				logf("Struct %v is blacklisted; skipping.", ts.Name)
-				continue
-			}
-			st, ok := ts.Type.(*ast.StructType)
-			if !ok {
-				continue
-			}
-			for _, field := range st.Fields.List {
-				se, ok := field.Type.(*ast.StarExpr)
-				if len(field.Names) == 0 || !ok {
-					continue
-				}
-
-				fieldName := field.Names[0]
-				// Skip unexported identifiers.
-				if !fieldName.IsExported() {
-					logf("Field %v is unexported; skipping.", fieldName)
-					continue
-				}
-				// Check if "struct.method" is blacklisted.
-				if key := fmt.Sprintf("%v.Get%v", ts.Name, fieldName); blacklistStructMethod[key] {
-					logf("Method %v is blacklisted; skipping.", key)
-					continue
-				}
-
-				switch x := se.X.(type) {
-				case *ast.ArrayType:
-					t.addArrayType(x, ts.Name.String(), fieldName.String())
-				case *ast.Ident:
-					t.addIdent(x, ts.Name.String(), fieldName.String())
-				case *ast.MapType:
-					t.addMapType(x, ts.Name.String(), fieldName.String())
-				case *ast.SelectorExpr:
-					t.addSelectorExpr(x, ts.Name.String(), fieldName.String())
-				default:
-					logf("processAST: type %q, field %q, unknown %T: %+v", ts.Name, fieldName, x, x)
-				}
-			}
-		}
-	}
-	return nil
-}
-
-func sourceFilter(fi os.FileInfo) bool {
-	return !strings.HasSuffix(fi.Name(), "_test.go") && !strings.HasSuffix(fi.Name(), fileSuffix)
-}
-
-func (t *templateData) dump() error {
-	if len(t.Getters) == 0 {
-		logf("No getters for %v; skipping.", t.filename)
-		return nil
-	}
-
-	// Sort getters by ReceiverType.FieldName.
-	sort.Sort(byName(t.Getters))
-
-	var buf bytes.Buffer
-	if err := sourceTmpl.Execute(&buf, t); err != nil {
-		return err
-	}
-	clean, err := format.Source(buf.Bytes())
-	if err != nil {
-		return err
-	}
-
-	logf("Writing %v...", t.filename)
-	return ioutil.WriteFile(t.filename, clean, 0644)
-}
-
-func newGetter(receiverType, fieldName, fieldType, zeroValue string, namedStruct bool) *getter {
-	return &getter{
-		sortVal:      strings.ToLower(receiverType) + "." + strings.ToLower(fieldName),
-		ReceiverVar:  strings.ToLower(receiverType[:1]),
-		ReceiverType: receiverType,
-		FieldName:    fieldName,
-		FieldType:    fieldType,
-		ZeroValue:    zeroValue,
-		NamedStruct:  namedStruct,
-	}
-}
-
-func (t *templateData) addArrayType(x *ast.ArrayType, receiverType, fieldName string) {
-	var eltType string
-	switch elt := x.Elt.(type) {
-	case *ast.Ident:
-		eltType = elt.String()
-	default:
-		logf("addArrayType: type %q, field %q: unknown elt type: %T %+v; skipping.", receiverType, fieldName, elt, elt)
-		return
-	}
-
-	t.Getters = append(t.Getters, newGetter(receiverType, fieldName, "[]"+eltType, "nil", false))
-}
-
-func (t *templateData) addIdent(x *ast.Ident, receiverType, fieldName string) {
-	var zeroValue string
-	var namedStruct = false
-	switch x.String() {
-	case "int", "int64":
-		zeroValue = "0"
-	case "string":
-		zeroValue = `""`
-	case "bool":
-		zeroValue = "false"
-	case "Timestamp":
-		zeroValue = "Timestamp{}"
-	default:
-		zeroValue = "nil"
-		namedStruct = true
-	}
-
-	t.Getters = append(t.Getters, newGetter(receiverType, fieldName, x.String(), zeroValue, namedStruct))
-}
-
-func (t *templateData) addMapType(x *ast.MapType, receiverType, fieldName string) {
-	var keyType string
-	switch key := x.Key.(type) {
-	case *ast.Ident:
-		keyType = key.String()
-	default:
-		logf("addMapType: type %q, field %q: unknown key type: %T %+v; skipping.", receiverType, fieldName, key, key)
-		return
-	}
-
-	var valueType string
-	switch value := x.Value.(type) {
-	case *ast.Ident:
-		valueType = value.String()
-	default:
-		logf("addMapType: type %q, field %q: unknown value type: %T %+v; skipping.", receiverType, fieldName, value, value)
-		return
-	}
-
-	fieldType := fmt.Sprintf("map[%v]%v", keyType, valueType)
-	zeroValue := fmt.Sprintf("map[%v]%v{}", keyType, valueType)
-	t.Getters = append(t.Getters, newGetter(receiverType, fieldName, fieldType, zeroValue, false))
-}
-
-func (t *templateData) addSelectorExpr(x *ast.SelectorExpr, receiverType, fieldName string) {
-	if strings.ToLower(fieldName[:1]) == fieldName[:1] { // Non-exported field.
-		return
-	}
-
-	var xX string
-	if xx, ok := x.X.(*ast.Ident); ok {
-		xX = xx.String()
-	}
-
-	switch xX {
-	case "time", "json":
-		if xX == "json" {
-			t.Imports["encoding/json"] = "encoding/json"
-		} else {
-			t.Imports[xX] = xX
-		}
-		fieldType := fmt.Sprintf("%v.%v", xX, x.Sel.Name)
-		zeroValue := fmt.Sprintf("%v.%v{}", xX, x.Sel.Name)
-		if xX == "time" && x.Sel.Name == "Duration" {
-			zeroValue = "0"
-		}
-		t.Getters = append(t.Getters, newGetter(receiverType, fieldName, fieldType, zeroValue, false))
-	default:
-		logf("addSelectorExpr: xX %q, type %q, field %q: unknown x=%+v; skipping.", xX, receiverType, fieldName, x)
-	}
-}
-
-type templateData struct {
-	filename string
-	Year     int
-	Package  string
-	Imports  map[string]string
-	Getters  []*getter
-}
-
-type getter struct {
-	sortVal      string // Lower-case version of "ReceiverType.FieldName".
-	ReceiverVar  string // The one-letter variable name to match the ReceiverType.
-	ReceiverType string
-	FieldName    string
-	FieldType    string
-	ZeroValue    string
-	NamedStruct  bool // Getter for named struct.
-}
-
-type byName []*getter
-
-func (b byName) Len() int           { return len(b) }
-func (b byName) Less(i, j int) bool { return b[i].sortVal < b[j].sortVal }
-func (b byName) Swap(i, j int)      { b[i], b[j] = b[j], b[i] }
-
-const source = `// Copyright {{.Year}} The go-github AUTHORS. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by gen-accessors; DO NOT EDIT.
-
-package {{.Package}}
-{{with .Imports}}
-import (
-  {{- range . -}}
-  "{{.}}"
-  {{end -}}
-)
-{{end}}
-{{range .Getters}}
-{{if .NamedStruct}}
-// Get{{.FieldName}} returns the {{.FieldName}} field.
-func ({{.ReceiverVar}} *{{.ReceiverType}}) Get{{.FieldName}}() *{{.FieldType}} {
-  if {{.ReceiverVar}} == nil {
-    return {{.ZeroValue}}
-  }
-  return {{.ReceiverVar}}.{{.FieldName}}
-}
-{{else}}
-// Get{{.FieldName}} returns the {{.FieldName}} field if it's non-nil, zero value otherwise.
-func ({{.ReceiverVar}} *{{.ReceiverType}}) Get{{.FieldName}}() {{.FieldType}} {
-  if {{.ReceiverVar}} == nil || {{.ReceiverVar}}.{{.FieldName}} == nil {
-    return {{.ZeroValue}}
-  }
-  return *{{.ReceiverVar}}.{{.FieldName}}
-}
-{{end}}
-{{end}}
-`

+ 0 - 388
vendor/github.com/google/go-github/github/gists.go

@@ -1,388 +0,0 @@
-// Copyright 2013 The go-github AUTHORS. All rights reserved.
-//
-// Use of this source code is governed by BSD-style
-// license that can be found in the LICENSE file.
-
-package github
-
-import (
-	"context"
-	"fmt"
-	"time"
-)
-
-// GistsService handles communication with the Gist related
-// methods of the GitHub API.
-//
-// GitHub API docs: https://developer.github.com/v3/gists/
-type GistsService service
-
-// Gist represents a GitHub's gist.
-type Gist struct {
-	ID          *string                   `json:"id,omitempty"`
-	Description *string                   `json:"description,omitempty"`
-	Public      *bool                     `json:"public,omitempty"`
-	Owner       *User                     `json:"owner,omitempty"`
-	Files       map[GistFilename]GistFile `json:"files,omitempty"`
-	Comments    *int                      `json:"comments,omitempty"`
-	HTMLURL     *string                   `json:"html_url,omitempty"`
-	GitPullURL  *string                   `json:"git_pull_url,omitempty"`
-	GitPushURL  *string                   `json:"git_push_url,omitempty"`
-	CreatedAt   *time.Time                `json:"created_at,omitempty"`
-	UpdatedAt   *time.Time                `json:"updated_at,omitempty"`
-	NodeID      *string                   `json:"node_id,omitempty"`
-}
-
-func (g Gist) String() string {
-	return Stringify(g)
-}
-
-// GistFilename represents filename on a gist.
-type GistFilename string
-
-// GistFile represents a file on a gist.
-type GistFile struct {
-	Size     *int    `json:"size,omitempty"`
-	Filename *string `json:"filename,omitempty"`
-	Language *string `json:"language,omitempty"`
-	Type     *string `json:"type,omitempty"`
-	RawURL   *string `json:"raw_url,omitempty"`
-	Content  *string `json:"content,omitempty"`
-}
-
-func (g GistFile) String() string {
-	return Stringify(g)
-}
-
-// GistCommit represents a commit on a gist.
-type GistCommit struct {
-	URL          *string      `json:"url,omitempty"`
-	Version      *string      `json:"version,omitempty"`
-	User         *User        `json:"user,omitempty"`
-	ChangeStatus *CommitStats `json:"change_status,omitempty"`
-	CommittedAt  *Timestamp   `json:"committed_at,omitempty"`
-	NodeID       *string      `json:"node_id,omitempty"`
-}
-
-func (gc GistCommit) String() string {
-	return Stringify(gc)
-}
-
-// GistFork represents a fork of a gist.
-type GistFork struct {
-	URL       *string    `json:"url,omitempty"`
-	User      *User      `json:"user,omitempty"`
-	ID        *string    `json:"id,omitempty"`
-	CreatedAt *Timestamp `json:"created_at,omitempty"`
-	UpdatedAt *Timestamp `json:"updated_at,omitempty"`
-	NodeID    *string    `json:"node_id,omitempty"`
-}
-
-func (gf GistFork) String() string {
-	return Stringify(gf)
-}
-
-// GistListOptions specifies the optional parameters to the
-// GistsService.List, GistsService.ListAll, and GistsService.ListStarred methods.
-type GistListOptions struct {
-	// Since filters Gists by time.
-	Since time.Time `url:"since,omitempty"`
-
-	ListOptions
-}
-
-// List gists for a user. Passing the empty string will list
-// all public gists if called anonymously. However, if the call
-// is authenticated, it will returns all gists for the authenticated
-// user.
-//
-// GitHub API docs: https://developer.github.com/v3/gists/#list-gists
-func (s *GistsService) List(ctx context.Context, user string, opt *GistListOptions) ([]*Gist, *Response, error) {
-	var u string
-	if user != "" {
-		u = fmt.Sprintf("users/%v/gists", user)
-	} else {
-		u = "gists"
-	}
-	u, err := addOptions(u, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview)
-
-	var gists []*Gist
-	resp, err := s.client.Do(ctx, req, &gists)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return gists, resp, nil
-}
-
-// ListAll lists all public gists.
-//
-// GitHub API docs: https://developer.github.com/v3/gists/#list-gists
-func (s *GistsService) ListAll(ctx context.Context, opt *GistListOptions) ([]*Gist, *Response, error) {
-	u, err := addOptions("gists/public", opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview)
-
-	var gists []*Gist
-	resp, err := s.client.Do(ctx, req, &gists)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return gists, resp, nil
-}
-
-// ListStarred lists starred gists of authenticated user.
-//
-// GitHub API docs: https://developer.github.com/v3/gists/#list-gists
-func (s *GistsService) ListStarred(ctx context.Context, opt *GistListOptions) ([]*Gist, *Response, error) {
-	u, err := addOptions("gists/starred", opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview)
-
-	var gists []*Gist
-	resp, err := s.client.Do(ctx, req, &gists)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return gists, resp, nil
-}
-
-// Get a single gist.
-//
-// GitHub API docs: https://developer.github.com/v3/gists/#get-a-single-gist
-func (s *GistsService) Get(ctx context.Context, id string) (*Gist, *Response, error) {
-	u := fmt.Sprintf("gists/%v", id)
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview)
-
-	gist := new(Gist)
-	resp, err := s.client.Do(ctx, req, gist)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return gist, resp, nil
-}
-
-// GetRevision gets a specific revision of a gist.
-//
-// GitHub API docs: https://developer.github.com/v3/gists/#get-a-specific-revision-of-a-gist
-func (s *GistsService) GetRevision(ctx context.Context, id, sha string) (*Gist, *Response, error) {
-	u := fmt.Sprintf("gists/%v/%v", id, sha)
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview)
-
-	gist := new(Gist)
-	resp, err := s.client.Do(ctx, req, gist)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return gist, resp, nil
-}
-
-// Create a gist for authenticated user.
-//
-// GitHub API docs: https://developer.github.com/v3/gists/#create-a-gist
-func (s *GistsService) Create(ctx context.Context, gist *Gist) (*Gist, *Response, error) {
-	u := "gists"
-	req, err := s.client.NewRequest("POST", u, gist)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview)
-
-	g := new(Gist)
-	resp, err := s.client.Do(ctx, req, g)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return g, resp, nil
-}
-
-// Edit a gist.
-//
-// GitHub API docs: https://developer.github.com/v3/gists/#edit-a-gist
-func (s *GistsService) Edit(ctx context.Context, id string, gist *Gist) (*Gist, *Response, error) {
-	u := fmt.Sprintf("gists/%v", id)
-	req, err := s.client.NewRequest("PATCH", u, gist)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview)
-
-	g := new(Gist)
-	resp, err := s.client.Do(ctx, req, g)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return g, resp, nil
-}
-
-// ListCommits lists commits of a gist.
-//
-// GitHub API docs: https://developer.github.com/v3/gists/#list-gist-commits
-func (s *GistsService) ListCommits(ctx context.Context, id string, opt *ListOptions) ([]*GistCommit, *Response, error) {
-	u := fmt.Sprintf("gists/%v/commits", id)
-	u, err := addOptions(u, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview)
-
-	var gistCommits []*GistCommit
-	resp, err := s.client.Do(ctx, req, &gistCommits)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return gistCommits, resp, nil
-}
-
-// Delete a gist.
-//
-// GitHub API docs: https://developer.github.com/v3/gists/#delete-a-gist
-func (s *GistsService) Delete(ctx context.Context, id string) (*Response, error) {
-	u := fmt.Sprintf("gists/%v", id)
-	req, err := s.client.NewRequest("DELETE", u, nil)
-	if err != nil {
-		return nil, err
-	}
-	return s.client.Do(ctx, req, nil)
-}
-
-// Star a gist on behalf of authenticated user.
-//
-// GitHub API docs: https://developer.github.com/v3/gists/#star-a-gist
-func (s *GistsService) Star(ctx context.Context, id string) (*Response, error) {
-	u := fmt.Sprintf("gists/%v/star", id)
-	req, err := s.client.NewRequest("PUT", u, nil)
-	if err != nil {
-		return nil, err
-	}
-	return s.client.Do(ctx, req, nil)
-}
-
-// Unstar a gist on a behalf of authenticated user.
-//
-// GitHub API docs: https://developer.github.com/v3/gists/#unstar-a-gist
-func (s *GistsService) Unstar(ctx context.Context, id string) (*Response, error) {
-	u := fmt.Sprintf("gists/%v/star", id)
-	req, err := s.client.NewRequest("DELETE", u, nil)
-	if err != nil {
-		return nil, err
-	}
-	return s.client.Do(ctx, req, nil)
-}
-
-// IsStarred checks if a gist is starred by authenticated user.
-//
-// GitHub API docs: https://developer.github.com/v3/gists/#check-if-a-gist-is-starred
-func (s *GistsService) IsStarred(ctx context.Context, id string) (bool, *Response, error) {
-	u := fmt.Sprintf("gists/%v/star", id)
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return false, nil, err
-	}
-	resp, err := s.client.Do(ctx, req, nil)
-	starred, err := parseBoolResponse(err)
-	return starred, resp, err
-}
-
-// Fork a gist.
-//
-// GitHub API docs: https://developer.github.com/v3/gists/#fork-a-gist
-func (s *GistsService) Fork(ctx context.Context, id string) (*Gist, *Response, error) {
-	u := fmt.Sprintf("gists/%v/forks", id)
-	req, err := s.client.NewRequest("POST", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview)
-
-	g := new(Gist)
-	resp, err := s.client.Do(ctx, req, g)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return g, resp, nil
-}
-
-// ListForks lists forks of a gist.
-//
-// GitHub API docs: https://developer.github.com/v3/gists/#list-gist-forks
-func (s *GistsService) ListForks(ctx context.Context, id string) ([]*GistFork, *Response, error) {
-	u := fmt.Sprintf("gists/%v/forks", id)
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview)
-
-	var gistForks []*GistFork
-	resp, err := s.client.Do(ctx, req, &gistForks)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return gistForks, resp, nil
-}

+ 0 - 119
vendor/github.com/google/go-github/github/gists_comments.go

@@ -1,119 +0,0 @@
-// Copyright 2013 The go-github 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 github
-
-import (
-	"context"
-	"fmt"
-	"time"
-)
-
-// GistComment represents a Gist comment.
-type GistComment struct {
-	ID        *int64     `json:"id,omitempty"`
-	URL       *string    `json:"url,omitempty"`
-	Body      *string    `json:"body,omitempty"`
-	User      *User      `json:"user,omitempty"`
-	CreatedAt *time.Time `json:"created_at,omitempty"`
-}
-
-func (g GistComment) String() string {
-	return Stringify(g)
-}
-
-// ListComments lists all comments for a gist.
-//
-// GitHub API docs: https://developer.github.com/v3/gists/comments/#list-comments-on-a-gist
-func (s *GistsService) ListComments(ctx context.Context, gistID string, opt *ListOptions) ([]*GistComment, *Response, error) {
-	u := fmt.Sprintf("gists/%v/comments", gistID)
-	u, err := addOptions(u, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	var comments []*GistComment
-	resp, err := s.client.Do(ctx, req, &comments)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return comments, resp, nil
-}
-
-// GetComment retrieves a single comment from a gist.
-//
-// GitHub API docs: https://developer.github.com/v3/gists/comments/#get-a-single-comment
-func (s *GistsService) GetComment(ctx context.Context, gistID string, commentID int64) (*GistComment, *Response, error) {
-	u := fmt.Sprintf("gists/%v/comments/%v", gistID, commentID)
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	c := new(GistComment)
-	resp, err := s.client.Do(ctx, req, c)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return c, resp, nil
-}
-
-// CreateComment creates a comment for a gist.
-//
-// GitHub API docs: https://developer.github.com/v3/gists/comments/#create-a-comment
-func (s *GistsService) CreateComment(ctx context.Context, gistID string, comment *GistComment) (*GistComment, *Response, error) {
-	u := fmt.Sprintf("gists/%v/comments", gistID)
-	req, err := s.client.NewRequest("POST", u, comment)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	c := new(GistComment)
-	resp, err := s.client.Do(ctx, req, c)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return c, resp, nil
-}
-
-// EditComment edits an existing gist comment.
-//
-// GitHub API docs: https://developer.github.com/v3/gists/comments/#edit-a-comment
-func (s *GistsService) EditComment(ctx context.Context, gistID string, commentID int64, comment *GistComment) (*GistComment, *Response, error) {
-	u := fmt.Sprintf("gists/%v/comments/%v", gistID, commentID)
-	req, err := s.client.NewRequest("PATCH", u, comment)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	c := new(GistComment)
-	resp, err := s.client.Do(ctx, req, c)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return c, resp, nil
-}
-
-// DeleteComment deletes a gist comment.
-//
-// GitHub API docs: https://developer.github.com/v3/gists/comments/#delete-a-comment
-func (s *GistsService) DeleteComment(ctx context.Context, gistID string, commentID int64) (*Response, error) {
-	u := fmt.Sprintf("gists/%v/comments/%v", gistID, commentID)
-	req, err := s.client.NewRequest("DELETE", u, nil)
-	if err != nil {
-		return nil, err
-	}
-
-	return s.client.Do(ctx, req, nil)
-}

+ 0 - 12
vendor/github.com/google/go-github/github/git.go

@@ -1,12 +0,0 @@
-// Copyright 2013 The go-github 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 github
-
-// GitService handles communication with the git data related
-// methods of the GitHub API.
-//
-// GitHub API docs: https://developer.github.com/v3/git/
-type GitService service

+ 0 - 57
vendor/github.com/google/go-github/github/git_blobs.go

@@ -1,57 +0,0 @@
-// Copyright 2013 The go-github 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 github
-
-import (
-	"context"
-	"fmt"
-)
-
-// Blob represents a blob object.
-type Blob struct {
-	Content  *string `json:"content,omitempty"`
-	Encoding *string `json:"encoding,omitempty"`
-	SHA      *string `json:"sha,omitempty"`
-	Size     *int    `json:"size,omitempty"`
-	URL      *string `json:"url,omitempty"`
-	NodeID   *string `json:"node_id,omitempty"`
-}
-
-// GetBlob fetchs a blob from a repo given a SHA.
-//
-// GitHub API docs: https://developer.github.com/v3/git/blobs/#get-a-blob
-func (s *GitService) GetBlob(ctx context.Context, owner string, repo string, sha string) (*Blob, *Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/git/blobs/%v", owner, repo, sha)
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview)
-
-	blob := new(Blob)
-	resp, err := s.client.Do(ctx, req, blob)
-	return blob, resp, err
-}
-
-// CreateBlob creates a blob object.
-//
-// GitHub API docs: https://developer.github.com/v3/git/blobs/#create-a-blob
-func (s *GitService) CreateBlob(ctx context.Context, owner string, repo string, blob *Blob) (*Blob, *Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/git/blobs", owner, repo)
-	req, err := s.client.NewRequest("POST", u, blob)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview)
-
-	t := new(Blob)
-	resp, err := s.client.Do(ctx, req, t)
-	return t, resp, err
-}

+ 0 - 139
vendor/github.com/google/go-github/github/git_commits.go

@@ -1,139 +0,0 @@
-// Copyright 2013 The go-github 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 github
-
-import (
-	"context"
-	"fmt"
-	"strings"
-	"time"
-)
-
-// SignatureVerification represents GPG signature verification.
-type SignatureVerification struct {
-	Verified  *bool   `json:"verified,omitempty"`
-	Reason    *string `json:"reason,omitempty"`
-	Signature *string `json:"signature,omitempty"`
-	Payload   *string `json:"payload,omitempty"`
-}
-
-// Commit represents a GitHub commit.
-type Commit struct {
-	SHA          *string                `json:"sha,omitempty"`
-	Author       *CommitAuthor          `json:"author,omitempty"`
-	Committer    *CommitAuthor          `json:"committer,omitempty"`
-	Message      *string                `json:"message,omitempty"`
-	Tree         *Tree                  `json:"tree,omitempty"`
-	Parents      []Commit               `json:"parents,omitempty"`
-	Stats        *CommitStats           `json:"stats,omitempty"`
-	HTMLURL      *string                `json:"html_url,omitempty"`
-	URL          *string                `json:"url,omitempty"`
-	Verification *SignatureVerification `json:"verification,omitempty"`
-	NodeID       *string                `json:"node_id,omitempty"`
-
-	// CommentCount is the number of GitHub comments on the commit. This
-	// is only populated for requests that fetch GitHub data like
-	// Pulls.ListCommits, Repositories.ListCommits, etc.
-	CommentCount *int `json:"comment_count,omitempty"`
-}
-
-func (c Commit) String() string {
-	return Stringify(c)
-}
-
-// CommitAuthor represents the author or committer of a commit. The commit
-// author may not correspond to a GitHub User.
-type CommitAuthor struct {
-	Date  *time.Time `json:"date,omitempty"`
-	Name  *string    `json:"name,omitempty"`
-	Email *string    `json:"email,omitempty"`
-
-	// The following fields are only populated by Webhook events.
-	Login *string `json:"username,omitempty"` // Renamed for go-github consistency.
-}
-
-func (c CommitAuthor) String() string {
-	return Stringify(c)
-}
-
-// GetCommit fetchs the Commit object for a given SHA.
-//
-// GitHub API docs: https://developer.github.com/v3/git/commits/#get-a-commit
-func (s *GitService) GetCommit(ctx context.Context, owner string, repo string, sha string) (*Commit, *Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/git/commits/%v", owner, repo, sha)
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept headers when APIs fully launch.
-	acceptHeaders := []string{mediaTypeGitSigningPreview, mediaTypeGraphQLNodeIDPreview}
-	req.Header.Set("Accept", strings.Join(acceptHeaders, ", "))
-
-	c := new(Commit)
-	resp, err := s.client.Do(ctx, req, c)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return c, resp, nil
-}
-
-// createCommit represents the body of a CreateCommit request.
-type createCommit struct {
-	Author    *CommitAuthor `json:"author,omitempty"`
-	Committer *CommitAuthor `json:"committer,omitempty"`
-	Message   *string       `json:"message,omitempty"`
-	Tree      *string       `json:"tree,omitempty"`
-	Parents   []string      `json:"parents,omitempty"`
-}
-
-// CreateCommit creates a new commit in a repository.
-// commit must not be nil.
-//
-// The commit.Committer is optional and will be filled with the commit.Author
-// data if omitted. If the commit.Author is omitted, it will be filled in with
-// the authenticated user’s information and the current date.
-//
-// GitHub API docs: https://developer.github.com/v3/git/commits/#create-a-commit
-func (s *GitService) CreateCommit(ctx context.Context, owner string, repo string, commit *Commit) (*Commit, *Response, error) {
-	if commit == nil {
-		return nil, nil, fmt.Errorf("commit must be provided")
-	}
-
-	u := fmt.Sprintf("repos/%v/%v/git/commits", owner, repo)
-
-	parents := make([]string, len(commit.Parents))
-	for i, parent := range commit.Parents {
-		parents[i] = *parent.SHA
-	}
-
-	body := &createCommit{
-		Author:    commit.Author,
-		Committer: commit.Committer,
-		Message:   commit.Message,
-		Parents:   parents,
-	}
-	if commit.Tree != nil {
-		body.Tree = commit.Tree.SHA
-	}
-
-	req, err := s.client.NewRequest("POST", u, body)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview)
-
-	c := new(Commit)
-	resp, err := s.client.Do(ctx, req, c)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return c, resp, nil
-}

+ 0 - 233
vendor/github.com/google/go-github/github/git_refs.go

@@ -1,233 +0,0 @@
-// Copyright 2013 The go-github 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 github
-
-import (
-	"context"
-	"encoding/json"
-	"errors"
-	"fmt"
-	"strings"
-)
-
-// Reference represents a GitHub reference.
-type Reference struct {
-	Ref    *string    `json:"ref"`
-	URL    *string    `json:"url"`
-	Object *GitObject `json:"object"`
-	NodeID *string    `json:"node_id,omitempty"`
-}
-
-func (r Reference) String() string {
-	return Stringify(r)
-}
-
-// GitObject represents a Git object.
-type GitObject struct {
-	Type *string `json:"type"`
-	SHA  *string `json:"sha"`
-	URL  *string `json:"url"`
-}
-
-func (o GitObject) String() string {
-	return Stringify(o)
-}
-
-// createRefRequest represents the payload for creating a reference.
-type createRefRequest struct {
-	Ref *string `json:"ref"`
-	SHA *string `json:"sha"`
-}
-
-// updateRefRequest represents the payload for updating a reference.
-type updateRefRequest struct {
-	SHA   *string `json:"sha"`
-	Force *bool   `json:"force"`
-}
-
-// GetRef fetches a single Reference object for a given Git ref.
-// If there is no exact match, GetRef will return an error.
-//
-// Note: The GitHub API can return multiple matches.
-// If you wish to use this functionality please use the GetRefs() method.
-//
-// GitHub API docs: https://developer.github.com/v3/git/refs/#get-a-reference
-func (s *GitService) GetRef(ctx context.Context, owner string, repo string, ref string) (*Reference, *Response, error) {
-	ref = strings.TrimPrefix(ref, "refs/")
-	u := fmt.Sprintf("repos/%v/%v/git/refs/%v", owner, repo, ref)
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview)
-
-	r := new(Reference)
-	resp, err := s.client.Do(ctx, req, r)
-	if _, ok := err.(*json.UnmarshalTypeError); ok {
-		// Multiple refs, means there wasn't an exact match.
-		return nil, resp, errors.New("no exact match found for this ref")
-	} else if err != nil {
-		return nil, resp, err
-	}
-
-	return r, resp, nil
-}
-
-// GetRefs fetches a slice of Reference objects for a given Git ref.
-// If there is an exact match, only that ref is returned.
-// If there is no exact match, GitHub returns all refs that start with ref.
-// If returned error is nil, there will be at least 1 ref returned.
-// For example:
-//
-// 	"heads/featureA" -> ["refs/heads/featureA"]                         // Exact match, single ref is returned.
-// 	"heads/feature"  -> ["refs/heads/featureA", "refs/heads/featureB"]  // All refs that start with ref.
-// 	"heads/notexist" -> []                                              // Returns an error.
-//
-// GitHub API docs: https://developer.github.com/v3/git/refs/#get-a-reference
-func (s *GitService) GetRefs(ctx context.Context, owner string, repo string, ref string) ([]*Reference, *Response, error) {
-	ref = strings.TrimPrefix(ref, "refs/")
-	u := fmt.Sprintf("repos/%v/%v/git/refs/%v", owner, repo, ref)
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview)
-
-	var rawJSON json.RawMessage
-	resp, err := s.client.Do(ctx, req, &rawJSON)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	// Prioritize the most common case: a single returned ref.
-	r := new(Reference)
-	singleUnmarshalError := json.Unmarshal(rawJSON, r)
-	if singleUnmarshalError == nil {
-		return []*Reference{r}, resp, nil
-	}
-
-	// Attempt to unmarshal multiple refs.
-	var rs []*Reference
-	multipleUnmarshalError := json.Unmarshal(rawJSON, &rs)
-	if multipleUnmarshalError == nil {
-		if len(rs) == 0 {
-			return nil, resp, fmt.Errorf("unexpected response from GitHub API: an array of refs with length 0")
-		}
-		return rs, resp, nil
-	}
-
-	return nil, resp, fmt.Errorf("unmarshalling failed for both single and multiple refs: %s and %s", singleUnmarshalError, multipleUnmarshalError)
-}
-
-// ReferenceListOptions specifies optional parameters to the
-// GitService.ListRefs method.
-type ReferenceListOptions struct {
-	Type string `url:"-"`
-
-	ListOptions
-}
-
-// ListRefs lists all refs in a repository.
-//
-// GitHub API docs: https://developer.github.com/v3/git/refs/#get-all-references
-func (s *GitService) ListRefs(ctx context.Context, owner, repo string, opt *ReferenceListOptions) ([]*Reference, *Response, error) {
-	var u string
-	if opt != nil && opt.Type != "" {
-		u = fmt.Sprintf("repos/%v/%v/git/refs/%v", owner, repo, opt.Type)
-	} else {
-		u = fmt.Sprintf("repos/%v/%v/git/refs", owner, repo)
-	}
-	u, err := addOptions(u, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview)
-
-	var rs []*Reference
-	resp, err := s.client.Do(ctx, req, &rs)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return rs, resp, nil
-}
-
-// CreateRef creates a new ref in a repository.
-//
-// GitHub API docs: https://developer.github.com/v3/git/refs/#create-a-reference
-func (s *GitService) CreateRef(ctx context.Context, owner string, repo string, ref *Reference) (*Reference, *Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/git/refs", owner, repo)
-	req, err := s.client.NewRequest("POST", u, &createRefRequest{
-		// back-compat with previous behavior that didn't require 'refs/' prefix
-		Ref: String("refs/" + strings.TrimPrefix(*ref.Ref, "refs/")),
-		SHA: ref.Object.SHA,
-	})
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview)
-
-	r := new(Reference)
-	resp, err := s.client.Do(ctx, req, r)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return r, resp, nil
-}
-
-// UpdateRef updates an existing ref in a repository.
-//
-// GitHub API docs: https://developer.github.com/v3/git/refs/#update-a-reference
-func (s *GitService) UpdateRef(ctx context.Context, owner string, repo string, ref *Reference, force bool) (*Reference, *Response, error) {
-	refPath := strings.TrimPrefix(*ref.Ref, "refs/")
-	u := fmt.Sprintf("repos/%v/%v/git/refs/%v", owner, repo, refPath)
-	req, err := s.client.NewRequest("PATCH", u, &updateRefRequest{
-		SHA:   ref.Object.SHA,
-		Force: &force,
-	})
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview)
-
-	r := new(Reference)
-	resp, err := s.client.Do(ctx, req, r)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return r, resp, nil
-}
-
-// DeleteRef deletes a ref from a repository.
-//
-// GitHub API docs: https://developer.github.com/v3/git/refs/#delete-a-reference
-func (s *GitService) DeleteRef(ctx context.Context, owner string, repo string, ref string) (*Response, error) {
-	ref = strings.TrimPrefix(ref, "refs/")
-	u := fmt.Sprintf("repos/%v/%v/git/refs/%v", owner, repo, ref)
-	req, err := s.client.NewRequest("DELETE", u, nil)
-	if err != nil {
-		return nil, err
-	}
-
-	return s.client.Do(ctx, req, nil)
-}

+ 0 - 84
vendor/github.com/google/go-github/github/git_tags.go

@@ -1,84 +0,0 @@
-// Copyright 2013 The go-github 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 github
-
-import (
-	"context"
-	"fmt"
-	"strings"
-)
-
-// Tag represents a tag object.
-type Tag struct {
-	Tag          *string                `json:"tag,omitempty"`
-	SHA          *string                `json:"sha,omitempty"`
-	URL          *string                `json:"url,omitempty"`
-	Message      *string                `json:"message,omitempty"`
-	Tagger       *CommitAuthor          `json:"tagger,omitempty"`
-	Object       *GitObject             `json:"object,omitempty"`
-	Verification *SignatureVerification `json:"verification,omitempty"`
-	NodeID       *string                `json:"node_id,omitempty"`
-}
-
-// createTagRequest represents the body of a CreateTag request. This is mostly
-// identical to Tag with the exception that the object SHA and Type are
-// top-level fields, rather than being nested inside a JSON object.
-type createTagRequest struct {
-	Tag     *string       `json:"tag,omitempty"`
-	Message *string       `json:"message,omitempty"`
-	Object  *string       `json:"object,omitempty"`
-	Type    *string       `json:"type,omitempty"`
-	Tagger  *CommitAuthor `json:"tagger,omitempty"`
-}
-
-// GetTag fetchs a tag from a repo given a SHA.
-//
-// GitHub API docs: https://developer.github.com/v3/git/tags/#get-a-tag
-func (s *GitService) GetTag(ctx context.Context, owner string, repo string, sha string) (*Tag, *Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/git/tags/%v", owner, repo, sha)
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept headers when APIs fully launch.
-	acceptHeaders := []string{mediaTypeGitSigningPreview, mediaTypeGraphQLNodeIDPreview}
-	req.Header.Set("Accept", strings.Join(acceptHeaders, ", "))
-
-	tag := new(Tag)
-	resp, err := s.client.Do(ctx, req, tag)
-	return tag, resp, err
-}
-
-// CreateTag creates a tag object.
-//
-// GitHub API docs: https://developer.github.com/v3/git/tags/#create-a-tag-object
-func (s *GitService) CreateTag(ctx context.Context, owner string, repo string, tag *Tag) (*Tag, *Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/git/tags", owner, repo)
-
-	// convert Tag into a createTagRequest
-	tagRequest := &createTagRequest{
-		Tag:     tag.Tag,
-		Message: tag.Message,
-		Tagger:  tag.Tagger,
-	}
-	if tag.Object != nil {
-		tagRequest.Object = tag.Object.SHA
-		tagRequest.Type = tag.Object.Type
-	}
-
-	req, err := s.client.NewRequest("POST", u, tagRequest)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview)
-
-	t := new(Tag)
-	resp, err := s.client.Do(ctx, req, t)
-	return t, resp, err
-}

+ 0 - 93
vendor/github.com/google/go-github/github/git_trees.go

@@ -1,93 +0,0 @@
-// Copyright 2013 The go-github 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 github
-
-import (
-	"context"
-	"fmt"
-)
-
-// Tree represents a GitHub tree.
-type Tree struct {
-	SHA     *string     `json:"sha,omitempty"`
-	Entries []TreeEntry `json:"tree,omitempty"`
-}
-
-func (t Tree) String() string {
-	return Stringify(t)
-}
-
-// TreeEntry represents the contents of a tree structure. TreeEntry can
-// represent either a blob, a commit (in the case of a submodule), or another
-// tree.
-type TreeEntry struct {
-	SHA     *string `json:"sha,omitempty"`
-	Path    *string `json:"path,omitempty"`
-	Mode    *string `json:"mode,omitempty"`
-	Type    *string `json:"type,omitempty"`
-	Size    *int    `json:"size,omitempty"`
-	Content *string `json:"content,omitempty"`
-	URL     *string `json:"url,omitempty"`
-}
-
-func (t TreeEntry) String() string {
-	return Stringify(t)
-}
-
-// GetTree fetches the Tree object for a given sha hash from a repository.
-//
-// GitHub API docs: https://developer.github.com/v3/git/trees/#get-a-tree
-func (s *GitService) GetTree(ctx context.Context, owner string, repo string, sha string, recursive bool) (*Tree, *Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/git/trees/%v", owner, repo, sha)
-	if recursive {
-		u += "?recursive=1"
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	t := new(Tree)
-	resp, err := s.client.Do(ctx, req, t)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return t, resp, nil
-}
-
-// createTree represents the body of a CreateTree request.
-type createTree struct {
-	BaseTree string      `json:"base_tree,omitempty"`
-	Entries  []TreeEntry `json:"tree"`
-}
-
-// CreateTree creates a new tree in a repository. If both a tree and a nested
-// path modifying that tree are specified, it will overwrite the contents of
-// that tree with the new path contents and write a new tree out.
-//
-// GitHub API docs: https://developer.github.com/v3/git/trees/#create-a-tree
-func (s *GitService) CreateTree(ctx context.Context, owner string, repo string, baseTree string, entries []TreeEntry) (*Tree, *Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/git/trees", owner, repo)
-
-	body := &createTree{
-		BaseTree: baseTree,
-		Entries:  entries,
-	}
-	req, err := s.client.NewRequest("POST", u, body)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	t := new(Tree)
-	resp, err := s.client.Do(ctx, req, t)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return t, resp, nil
-}

+ 0 - 10429
vendor/github.com/google/go-github/github/github-accessors.go

@@ -1,10429 +0,0 @@
-// Copyright 2017 The go-github AUTHORS. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by gen-accessors; DO NOT EDIT.
-
-package github
-
-import (
-	"encoding/json"
-	"time"
-)
-
-// GetRetryAfter returns the RetryAfter field if it's non-nil, zero value otherwise.
-func (a *AbuseRateLimitError) GetRetryAfter() time.Duration {
-	if a == nil || a.RetryAfter == nil {
-		return 0
-	}
-	return *a.RetryAfter
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (a *AdminEnforcement) GetURL() string {
-	if a == nil || a.URL == nil {
-		return ""
-	}
-	return *a.URL
-}
-
-// GetComments returns the Comments field.
-func (a *AdminStats) GetComments() *CommentStats {
-	if a == nil {
-		return nil
-	}
-	return a.Comments
-}
-
-// GetGists returns the Gists field.
-func (a *AdminStats) GetGists() *GistStats {
-	if a == nil {
-		return nil
-	}
-	return a.Gists
-}
-
-// GetHooks returns the Hooks field.
-func (a *AdminStats) GetHooks() *HookStats {
-	if a == nil {
-		return nil
-	}
-	return a.Hooks
-}
-
-// GetIssues returns the Issues field.
-func (a *AdminStats) GetIssues() *IssueStats {
-	if a == nil {
-		return nil
-	}
-	return a.Issues
-}
-
-// GetMilestones returns the Milestones field.
-func (a *AdminStats) GetMilestones() *MilestoneStats {
-	if a == nil {
-		return nil
-	}
-	return a.Milestones
-}
-
-// GetOrgs returns the Orgs field.
-func (a *AdminStats) GetOrgs() *OrgStats {
-	if a == nil {
-		return nil
-	}
-	return a.Orgs
-}
-
-// GetPages returns the Pages field.
-func (a *AdminStats) GetPages() *PageStats {
-	if a == nil {
-		return nil
-	}
-	return a.Pages
-}
-
-// GetPulls returns the Pulls field.
-func (a *AdminStats) GetPulls() *PullStats {
-	if a == nil {
-		return nil
-	}
-	return a.Pulls
-}
-
-// GetRepos returns the Repos field.
-func (a *AdminStats) GetRepos() *RepoStats {
-	if a == nil {
-		return nil
-	}
-	return a.Repos
-}
-
-// GetUsers returns the Users field.
-func (a *AdminStats) GetUsers() *UserStats {
-	if a == nil {
-		return nil
-	}
-	return a.Users
-}
-
-// GetVerifiablePasswordAuthentication returns the VerifiablePasswordAuthentication field if it's non-nil, zero value otherwise.
-func (a *APIMeta) GetVerifiablePasswordAuthentication() bool {
-	if a == nil || a.VerifiablePasswordAuthentication == nil {
-		return false
-	}
-	return *a.VerifiablePasswordAuthentication
-}
-
-// GetCreatedAt returns the CreatedAt field if it's non-nil, zero value otherwise.
-func (a *App) GetCreatedAt() time.Time {
-	if a == nil || a.CreatedAt == nil {
-		return time.Time{}
-	}
-	return *a.CreatedAt
-}
-
-// GetDescription returns the Description field if it's non-nil, zero value otherwise.
-func (a *App) GetDescription() string {
-	if a == nil || a.Description == nil {
-		return ""
-	}
-	return *a.Description
-}
-
-// GetExternalURL returns the ExternalURL field if it's non-nil, zero value otherwise.
-func (a *App) GetExternalURL() string {
-	if a == nil || a.ExternalURL == nil {
-		return ""
-	}
-	return *a.ExternalURL
-}
-
-// GetHTMLURL returns the HTMLURL field if it's non-nil, zero value otherwise.
-func (a *App) GetHTMLURL() string {
-	if a == nil || a.HTMLURL == nil {
-		return ""
-	}
-	return *a.HTMLURL
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (a *App) GetID() int64 {
-	if a == nil || a.ID == nil {
-		return 0
-	}
-	return *a.ID
-}
-
-// GetName returns the Name field if it's non-nil, zero value otherwise.
-func (a *App) GetName() string {
-	if a == nil || a.Name == nil {
-		return ""
-	}
-	return *a.Name
-}
-
-// GetOwner returns the Owner field.
-func (a *App) GetOwner() *User {
-	if a == nil {
-		return nil
-	}
-	return a.Owner
-}
-
-// GetUpdatedAt returns the UpdatedAt field if it's non-nil, zero value otherwise.
-func (a *App) GetUpdatedAt() time.Time {
-	if a == nil || a.UpdatedAt == nil {
-		return time.Time{}
-	}
-	return *a.UpdatedAt
-}
-
-// GetApp returns the App field.
-func (a *Authorization) GetApp() *AuthorizationApp {
-	if a == nil {
-		return nil
-	}
-	return a.App
-}
-
-// GetCreatedAt returns the CreatedAt field if it's non-nil, zero value otherwise.
-func (a *Authorization) GetCreatedAt() Timestamp {
-	if a == nil || a.CreatedAt == nil {
-		return Timestamp{}
-	}
-	return *a.CreatedAt
-}
-
-// GetFingerprint returns the Fingerprint field if it's non-nil, zero value otherwise.
-func (a *Authorization) GetFingerprint() string {
-	if a == nil || a.Fingerprint == nil {
-		return ""
-	}
-	return *a.Fingerprint
-}
-
-// GetHashedToken returns the HashedToken field if it's non-nil, zero value otherwise.
-func (a *Authorization) GetHashedToken() string {
-	if a == nil || a.HashedToken == nil {
-		return ""
-	}
-	return *a.HashedToken
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (a *Authorization) GetID() int64 {
-	if a == nil || a.ID == nil {
-		return 0
-	}
-	return *a.ID
-}
-
-// GetNote returns the Note field if it's non-nil, zero value otherwise.
-func (a *Authorization) GetNote() string {
-	if a == nil || a.Note == nil {
-		return ""
-	}
-	return *a.Note
-}
-
-// GetNoteURL returns the NoteURL field if it's non-nil, zero value otherwise.
-func (a *Authorization) GetNoteURL() string {
-	if a == nil || a.NoteURL == nil {
-		return ""
-	}
-	return *a.NoteURL
-}
-
-// GetToken returns the Token field if it's non-nil, zero value otherwise.
-func (a *Authorization) GetToken() string {
-	if a == nil || a.Token == nil {
-		return ""
-	}
-	return *a.Token
-}
-
-// GetTokenLastEight returns the TokenLastEight field if it's non-nil, zero value otherwise.
-func (a *Authorization) GetTokenLastEight() string {
-	if a == nil || a.TokenLastEight == nil {
-		return ""
-	}
-	return *a.TokenLastEight
-}
-
-// GetUpdatedAt returns the UpdatedAt field if it's non-nil, zero value otherwise.
-func (a *Authorization) GetUpdatedAt() Timestamp {
-	if a == nil || a.UpdatedAt == nil {
-		return Timestamp{}
-	}
-	return *a.UpdatedAt
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (a *Authorization) GetURL() string {
-	if a == nil || a.URL == nil {
-		return ""
-	}
-	return *a.URL
-}
-
-// GetUser returns the User field.
-func (a *Authorization) GetUser() *User {
-	if a == nil {
-		return nil
-	}
-	return a.User
-}
-
-// GetClientID returns the ClientID field if it's non-nil, zero value otherwise.
-func (a *AuthorizationApp) GetClientID() string {
-	if a == nil || a.ClientID == nil {
-		return ""
-	}
-	return *a.ClientID
-}
-
-// GetName returns the Name field if it's non-nil, zero value otherwise.
-func (a *AuthorizationApp) GetName() string {
-	if a == nil || a.Name == nil {
-		return ""
-	}
-	return *a.Name
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (a *AuthorizationApp) GetURL() string {
-	if a == nil || a.URL == nil {
-		return ""
-	}
-	return *a.URL
-}
-
-// GetClientID returns the ClientID field if it's non-nil, zero value otherwise.
-func (a *AuthorizationRequest) GetClientID() string {
-	if a == nil || a.ClientID == nil {
-		return ""
-	}
-	return *a.ClientID
-}
-
-// GetClientSecret returns the ClientSecret field if it's non-nil, zero value otherwise.
-func (a *AuthorizationRequest) GetClientSecret() string {
-	if a == nil || a.ClientSecret == nil {
-		return ""
-	}
-	return *a.ClientSecret
-}
-
-// GetFingerprint returns the Fingerprint field if it's non-nil, zero value otherwise.
-func (a *AuthorizationRequest) GetFingerprint() string {
-	if a == nil || a.Fingerprint == nil {
-		return ""
-	}
-	return *a.Fingerprint
-}
-
-// GetNote returns the Note field if it's non-nil, zero value otherwise.
-func (a *AuthorizationRequest) GetNote() string {
-	if a == nil || a.Note == nil {
-		return ""
-	}
-	return *a.Note
-}
-
-// GetNoteURL returns the NoteURL field if it's non-nil, zero value otherwise.
-func (a *AuthorizationRequest) GetNoteURL() string {
-	if a == nil || a.NoteURL == nil {
-		return ""
-	}
-	return *a.NoteURL
-}
-
-// GetFingerprint returns the Fingerprint field if it's non-nil, zero value otherwise.
-func (a *AuthorizationUpdateRequest) GetFingerprint() string {
-	if a == nil || a.Fingerprint == nil {
-		return ""
-	}
-	return *a.Fingerprint
-}
-
-// GetNote returns the Note field if it's non-nil, zero value otherwise.
-func (a *AuthorizationUpdateRequest) GetNote() string {
-	if a == nil || a.Note == nil {
-		return ""
-	}
-	return *a.Note
-}
-
-// GetNoteURL returns the NoteURL field if it's non-nil, zero value otherwise.
-func (a *AuthorizationUpdateRequest) GetNoteURL() string {
-	if a == nil || a.NoteURL == nil {
-		return ""
-	}
-	return *a.NoteURL
-}
-
-// GetContent returns the Content field if it's non-nil, zero value otherwise.
-func (b *Blob) GetContent() string {
-	if b == nil || b.Content == nil {
-		return ""
-	}
-	return *b.Content
-}
-
-// GetEncoding returns the Encoding field if it's non-nil, zero value otherwise.
-func (b *Blob) GetEncoding() string {
-	if b == nil || b.Encoding == nil {
-		return ""
-	}
-	return *b.Encoding
-}
-
-// GetNodeID returns the NodeID field if it's non-nil, zero value otherwise.
-func (b *Blob) GetNodeID() string {
-	if b == nil || b.NodeID == nil {
-		return ""
-	}
-	return *b.NodeID
-}
-
-// GetSHA returns the SHA field if it's non-nil, zero value otherwise.
-func (b *Blob) GetSHA() string {
-	if b == nil || b.SHA == nil {
-		return ""
-	}
-	return *b.SHA
-}
-
-// GetSize returns the Size field if it's non-nil, zero value otherwise.
-func (b *Blob) GetSize() int {
-	if b == nil || b.Size == nil {
-		return 0
-	}
-	return *b.Size
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (b *Blob) GetURL() string {
-	if b == nil || b.URL == nil {
-		return ""
-	}
-	return *b.URL
-}
-
-// GetCommit returns the Commit field.
-func (b *Branch) GetCommit() *RepositoryCommit {
-	if b == nil {
-		return nil
-	}
-	return b.Commit
-}
-
-// GetName returns the Name field if it's non-nil, zero value otherwise.
-func (b *Branch) GetName() string {
-	if b == nil || b.Name == nil {
-		return ""
-	}
-	return *b.Name
-}
-
-// GetProtected returns the Protected field if it's non-nil, zero value otherwise.
-func (b *Branch) GetProtected() bool {
-	if b == nil || b.Protected == nil {
-		return false
-	}
-	return *b.Protected
-}
-
-// GetBody returns the Body field if it's non-nil, zero value otherwise.
-func (c *CodeOfConduct) GetBody() string {
-	if c == nil || c.Body == nil {
-		return ""
-	}
-	return *c.Body
-}
-
-// GetKey returns the Key field if it's non-nil, zero value otherwise.
-func (c *CodeOfConduct) GetKey() string {
-	if c == nil || c.Key == nil {
-		return ""
-	}
-	return *c.Key
-}
-
-// GetName returns the Name field if it's non-nil, zero value otherwise.
-func (c *CodeOfConduct) GetName() string {
-	if c == nil || c.Name == nil {
-		return ""
-	}
-	return *c.Name
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (c *CodeOfConduct) GetURL() string {
-	if c == nil || c.URL == nil {
-		return ""
-	}
-	return *c.URL
-}
-
-// GetHTMLURL returns the HTMLURL field if it's non-nil, zero value otherwise.
-func (c *CodeResult) GetHTMLURL() string {
-	if c == nil || c.HTMLURL == nil {
-		return ""
-	}
-	return *c.HTMLURL
-}
-
-// GetName returns the Name field if it's non-nil, zero value otherwise.
-func (c *CodeResult) GetName() string {
-	if c == nil || c.Name == nil {
-		return ""
-	}
-	return *c.Name
-}
-
-// GetPath returns the Path field if it's non-nil, zero value otherwise.
-func (c *CodeResult) GetPath() string {
-	if c == nil || c.Path == nil {
-		return ""
-	}
-	return *c.Path
-}
-
-// GetRepository returns the Repository field.
-func (c *CodeResult) GetRepository() *Repository {
-	if c == nil {
-		return nil
-	}
-	return c.Repository
-}
-
-// GetSHA returns the SHA field if it's non-nil, zero value otherwise.
-func (c *CodeResult) GetSHA() string {
-	if c == nil || c.SHA == nil {
-		return ""
-	}
-	return *c.SHA
-}
-
-// GetIncompleteResults returns the IncompleteResults field if it's non-nil, zero value otherwise.
-func (c *CodeSearchResult) GetIncompleteResults() bool {
-	if c == nil || c.IncompleteResults == nil {
-		return false
-	}
-	return *c.IncompleteResults
-}
-
-// GetTotal returns the Total field if it's non-nil, zero value otherwise.
-func (c *CodeSearchResult) GetTotal() int {
-	if c == nil || c.Total == nil {
-		return 0
-	}
-	return *c.Total
-}
-
-// GetCommitURL returns the CommitURL field if it's non-nil, zero value otherwise.
-func (c *CombinedStatus) GetCommitURL() string {
-	if c == nil || c.CommitURL == nil {
-		return ""
-	}
-	return *c.CommitURL
-}
-
-// GetName returns the Name field if it's non-nil, zero value otherwise.
-func (c *CombinedStatus) GetName() string {
-	if c == nil || c.Name == nil {
-		return ""
-	}
-	return *c.Name
-}
-
-// GetRepositoryURL returns the RepositoryURL field if it's non-nil, zero value otherwise.
-func (c *CombinedStatus) GetRepositoryURL() string {
-	if c == nil || c.RepositoryURL == nil {
-		return ""
-	}
-	return *c.RepositoryURL
-}
-
-// GetSHA returns the SHA field if it's non-nil, zero value otherwise.
-func (c *CombinedStatus) GetSHA() string {
-	if c == nil || c.SHA == nil {
-		return ""
-	}
-	return *c.SHA
-}
-
-// GetState returns the State field if it's non-nil, zero value otherwise.
-func (c *CombinedStatus) GetState() string {
-	if c == nil || c.State == nil {
-		return ""
-	}
-	return *c.State
-}
-
-// GetTotalCount returns the TotalCount field if it's non-nil, zero value otherwise.
-func (c *CombinedStatus) GetTotalCount() int {
-	if c == nil || c.TotalCount == nil {
-		return 0
-	}
-	return *c.TotalCount
-}
-
-// GetTotalCommitComments returns the TotalCommitComments field if it's non-nil, zero value otherwise.
-func (c *CommentStats) GetTotalCommitComments() int {
-	if c == nil || c.TotalCommitComments == nil {
-		return 0
-	}
-	return *c.TotalCommitComments
-}
-
-// GetTotalGistComments returns the TotalGistComments field if it's non-nil, zero value otherwise.
-func (c *CommentStats) GetTotalGistComments() int {
-	if c == nil || c.TotalGistComments == nil {
-		return 0
-	}
-	return *c.TotalGistComments
-}
-
-// GetTotalIssueComments returns the TotalIssueComments field if it's non-nil, zero value otherwise.
-func (c *CommentStats) GetTotalIssueComments() int {
-	if c == nil || c.TotalIssueComments == nil {
-		return 0
-	}
-	return *c.TotalIssueComments
-}
-
-// GetTotalPullRequestComments returns the TotalPullRequestComments field if it's non-nil, zero value otherwise.
-func (c *CommentStats) GetTotalPullRequestComments() int {
-	if c == nil || c.TotalPullRequestComments == nil {
-		return 0
-	}
-	return *c.TotalPullRequestComments
-}
-
-// GetAuthor returns the Author field.
-func (c *Commit) GetAuthor() *CommitAuthor {
-	if c == nil {
-		return nil
-	}
-	return c.Author
-}
-
-// GetCommentCount returns the CommentCount field if it's non-nil, zero value otherwise.
-func (c *Commit) GetCommentCount() int {
-	if c == nil || c.CommentCount == nil {
-		return 0
-	}
-	return *c.CommentCount
-}
-
-// GetCommitter returns the Committer field.
-func (c *Commit) GetCommitter() *CommitAuthor {
-	if c == nil {
-		return nil
-	}
-	return c.Committer
-}
-
-// GetHTMLURL returns the HTMLURL field if it's non-nil, zero value otherwise.
-func (c *Commit) GetHTMLURL() string {
-	if c == nil || c.HTMLURL == nil {
-		return ""
-	}
-	return *c.HTMLURL
-}
-
-// GetMessage returns the Message field if it's non-nil, zero value otherwise.
-func (c *Commit) GetMessage() string {
-	if c == nil || c.Message == nil {
-		return ""
-	}
-	return *c.Message
-}
-
-// GetNodeID returns the NodeID field if it's non-nil, zero value otherwise.
-func (c *Commit) GetNodeID() string {
-	if c == nil || c.NodeID == nil {
-		return ""
-	}
-	return *c.NodeID
-}
-
-// GetSHA returns the SHA field if it's non-nil, zero value otherwise.
-func (c *Commit) GetSHA() string {
-	if c == nil || c.SHA == nil {
-		return ""
-	}
-	return *c.SHA
-}
-
-// GetStats returns the Stats field.
-func (c *Commit) GetStats() *CommitStats {
-	if c == nil {
-		return nil
-	}
-	return c.Stats
-}
-
-// GetTree returns the Tree field.
-func (c *Commit) GetTree() *Tree {
-	if c == nil {
-		return nil
-	}
-	return c.Tree
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (c *Commit) GetURL() string {
-	if c == nil || c.URL == nil {
-		return ""
-	}
-	return *c.URL
-}
-
-// GetVerification returns the Verification field.
-func (c *Commit) GetVerification() *SignatureVerification {
-	if c == nil {
-		return nil
-	}
-	return c.Verification
-}
-
-// GetDate returns the Date field if it's non-nil, zero value otherwise.
-func (c *CommitAuthor) GetDate() time.Time {
-	if c == nil || c.Date == nil {
-		return time.Time{}
-	}
-	return *c.Date
-}
-
-// GetEmail returns the Email field if it's non-nil, zero value otherwise.
-func (c *CommitAuthor) GetEmail() string {
-	if c == nil || c.Email == nil {
-		return ""
-	}
-	return *c.Email
-}
-
-// GetLogin returns the Login field if it's non-nil, zero value otherwise.
-func (c *CommitAuthor) GetLogin() string {
-	if c == nil || c.Login == nil {
-		return ""
-	}
-	return *c.Login
-}
-
-// GetName returns the Name field if it's non-nil, zero value otherwise.
-func (c *CommitAuthor) GetName() string {
-	if c == nil || c.Name == nil {
-		return ""
-	}
-	return *c.Name
-}
-
-// GetAction returns the Action field if it's non-nil, zero value otherwise.
-func (c *CommitCommentEvent) GetAction() string {
-	if c == nil || c.Action == nil {
-		return ""
-	}
-	return *c.Action
-}
-
-// GetComment returns the Comment field.
-func (c *CommitCommentEvent) GetComment() *RepositoryComment {
-	if c == nil {
-		return nil
-	}
-	return c.Comment
-}
-
-// GetInstallation returns the Installation field.
-func (c *CommitCommentEvent) GetInstallation() *Installation {
-	if c == nil {
-		return nil
-	}
-	return c.Installation
-}
-
-// GetRepo returns the Repo field.
-func (c *CommitCommentEvent) GetRepo() *Repository {
-	if c == nil {
-		return nil
-	}
-	return c.Repo
-}
-
-// GetSender returns the Sender field.
-func (c *CommitCommentEvent) GetSender() *User {
-	if c == nil {
-		return nil
-	}
-	return c.Sender
-}
-
-// GetAdditions returns the Additions field if it's non-nil, zero value otherwise.
-func (c *CommitFile) GetAdditions() int {
-	if c == nil || c.Additions == nil {
-		return 0
-	}
-	return *c.Additions
-}
-
-// GetBlobURL returns the BlobURL field if it's non-nil, zero value otherwise.
-func (c *CommitFile) GetBlobURL() string {
-	if c == nil || c.BlobURL == nil {
-		return ""
-	}
-	return *c.BlobURL
-}
-
-// GetChanges returns the Changes field if it's non-nil, zero value otherwise.
-func (c *CommitFile) GetChanges() int {
-	if c == nil || c.Changes == nil {
-		return 0
-	}
-	return *c.Changes
-}
-
-// GetContentsURL returns the ContentsURL field if it's non-nil, zero value otherwise.
-func (c *CommitFile) GetContentsURL() string {
-	if c == nil || c.ContentsURL == nil {
-		return ""
-	}
-	return *c.ContentsURL
-}
-
-// GetDeletions returns the Deletions field if it's non-nil, zero value otherwise.
-func (c *CommitFile) GetDeletions() int {
-	if c == nil || c.Deletions == nil {
-		return 0
-	}
-	return *c.Deletions
-}
-
-// GetFilename returns the Filename field if it's non-nil, zero value otherwise.
-func (c *CommitFile) GetFilename() string {
-	if c == nil || c.Filename == nil {
-		return ""
-	}
-	return *c.Filename
-}
-
-// GetPatch returns the Patch field if it's non-nil, zero value otherwise.
-func (c *CommitFile) GetPatch() string {
-	if c == nil || c.Patch == nil {
-		return ""
-	}
-	return *c.Patch
-}
-
-// GetRawURL returns the RawURL field if it's non-nil, zero value otherwise.
-func (c *CommitFile) GetRawURL() string {
-	if c == nil || c.RawURL == nil {
-		return ""
-	}
-	return *c.RawURL
-}
-
-// GetSHA returns the SHA field if it's non-nil, zero value otherwise.
-func (c *CommitFile) GetSHA() string {
-	if c == nil || c.SHA == nil {
-		return ""
-	}
-	return *c.SHA
-}
-
-// GetStatus returns the Status field if it's non-nil, zero value otherwise.
-func (c *CommitFile) GetStatus() string {
-	if c == nil || c.Status == nil {
-		return ""
-	}
-	return *c.Status
-}
-
-// GetAuthor returns the Author field.
-func (c *CommitResult) GetAuthor() *User {
-	if c == nil {
-		return nil
-	}
-	return c.Author
-}
-
-// GetCommentsURL returns the CommentsURL field if it's non-nil, zero value otherwise.
-func (c *CommitResult) GetCommentsURL() string {
-	if c == nil || c.CommentsURL == nil {
-		return ""
-	}
-	return *c.CommentsURL
-}
-
-// GetCommit returns the Commit field.
-func (c *CommitResult) GetCommit() *Commit {
-	if c == nil {
-		return nil
-	}
-	return c.Commit
-}
-
-// GetCommitter returns the Committer field.
-func (c *CommitResult) GetCommitter() *User {
-	if c == nil {
-		return nil
-	}
-	return c.Committer
-}
-
-// GetHTMLURL returns the HTMLURL field if it's non-nil, zero value otherwise.
-func (c *CommitResult) GetHTMLURL() string {
-	if c == nil || c.HTMLURL == nil {
-		return ""
-	}
-	return *c.HTMLURL
-}
-
-// GetRepository returns the Repository field.
-func (c *CommitResult) GetRepository() *Repository {
-	if c == nil {
-		return nil
-	}
-	return c.Repository
-}
-
-// GetScore returns the Score field.
-func (c *CommitResult) GetScore() *float64 {
-	if c == nil {
-		return nil
-	}
-	return c.Score
-}
-
-// GetSHA returns the SHA field if it's non-nil, zero value otherwise.
-func (c *CommitResult) GetSHA() string {
-	if c == nil || c.SHA == nil {
-		return ""
-	}
-	return *c.SHA
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (c *CommitResult) GetURL() string {
-	if c == nil || c.URL == nil {
-		return ""
-	}
-	return *c.URL
-}
-
-// GetAheadBy returns the AheadBy field if it's non-nil, zero value otherwise.
-func (c *CommitsComparison) GetAheadBy() int {
-	if c == nil || c.AheadBy == nil {
-		return 0
-	}
-	return *c.AheadBy
-}
-
-// GetBaseCommit returns the BaseCommit field.
-func (c *CommitsComparison) GetBaseCommit() *RepositoryCommit {
-	if c == nil {
-		return nil
-	}
-	return c.BaseCommit
-}
-
-// GetBehindBy returns the BehindBy field if it's non-nil, zero value otherwise.
-func (c *CommitsComparison) GetBehindBy() int {
-	if c == nil || c.BehindBy == nil {
-		return 0
-	}
-	return *c.BehindBy
-}
-
-// GetDiffURL returns the DiffURL field if it's non-nil, zero value otherwise.
-func (c *CommitsComparison) GetDiffURL() string {
-	if c == nil || c.DiffURL == nil {
-		return ""
-	}
-	return *c.DiffURL
-}
-
-// GetHTMLURL returns the HTMLURL field if it's non-nil, zero value otherwise.
-func (c *CommitsComparison) GetHTMLURL() string {
-	if c == nil || c.HTMLURL == nil {
-		return ""
-	}
-	return *c.HTMLURL
-}
-
-// GetMergeBaseCommit returns the MergeBaseCommit field.
-func (c *CommitsComparison) GetMergeBaseCommit() *RepositoryCommit {
-	if c == nil {
-		return nil
-	}
-	return c.MergeBaseCommit
-}
-
-// GetPatchURL returns the PatchURL field if it's non-nil, zero value otherwise.
-func (c *CommitsComparison) GetPatchURL() string {
-	if c == nil || c.PatchURL == nil {
-		return ""
-	}
-	return *c.PatchURL
-}
-
-// GetPermalinkURL returns the PermalinkURL field if it's non-nil, zero value otherwise.
-func (c *CommitsComparison) GetPermalinkURL() string {
-	if c == nil || c.PermalinkURL == nil {
-		return ""
-	}
-	return *c.PermalinkURL
-}
-
-// GetStatus returns the Status field if it's non-nil, zero value otherwise.
-func (c *CommitsComparison) GetStatus() string {
-	if c == nil || c.Status == nil {
-		return ""
-	}
-	return *c.Status
-}
-
-// GetTotalCommits returns the TotalCommits field if it's non-nil, zero value otherwise.
-func (c *CommitsComparison) GetTotalCommits() int {
-	if c == nil || c.TotalCommits == nil {
-		return 0
-	}
-	return *c.TotalCommits
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (c *CommitsComparison) GetURL() string {
-	if c == nil || c.URL == nil {
-		return ""
-	}
-	return *c.URL
-}
-
-// GetIncompleteResults returns the IncompleteResults field if it's non-nil, zero value otherwise.
-func (c *CommitsSearchResult) GetIncompleteResults() bool {
-	if c == nil || c.IncompleteResults == nil {
-		return false
-	}
-	return *c.IncompleteResults
-}
-
-// GetTotal returns the Total field if it's non-nil, zero value otherwise.
-func (c *CommitsSearchResult) GetTotal() int {
-	if c == nil || c.Total == nil {
-		return 0
-	}
-	return *c.Total
-}
-
-// GetAdditions returns the Additions field if it's non-nil, zero value otherwise.
-func (c *CommitStats) GetAdditions() int {
-	if c == nil || c.Additions == nil {
-		return 0
-	}
-	return *c.Additions
-}
-
-// GetDeletions returns the Deletions field if it's non-nil, zero value otherwise.
-func (c *CommitStats) GetDeletions() int {
-	if c == nil || c.Deletions == nil {
-		return 0
-	}
-	return *c.Deletions
-}
-
-// GetTotal returns the Total field if it's non-nil, zero value otherwise.
-func (c *CommitStats) GetTotal() int {
-	if c == nil || c.Total == nil {
-		return 0
-	}
-	return *c.Total
-}
-
-// GetCodeOfConduct returns the CodeOfConduct field.
-func (c *CommunityHealthFiles) GetCodeOfConduct() *Metric {
-	if c == nil {
-		return nil
-	}
-	return c.CodeOfConduct
-}
-
-// GetContributing returns the Contributing field.
-func (c *CommunityHealthFiles) GetContributing() *Metric {
-	if c == nil {
-		return nil
-	}
-	return c.Contributing
-}
-
-// GetLicense returns the License field.
-func (c *CommunityHealthFiles) GetLicense() *Metric {
-	if c == nil {
-		return nil
-	}
-	return c.License
-}
-
-// GetReadme returns the Readme field.
-func (c *CommunityHealthFiles) GetReadme() *Metric {
-	if c == nil {
-		return nil
-	}
-	return c.Readme
-}
-
-// GetFiles returns the Files field.
-func (c *CommunityHealthMetrics) GetFiles() *CommunityHealthFiles {
-	if c == nil {
-		return nil
-	}
-	return c.Files
-}
-
-// GetHealthPercentage returns the HealthPercentage field if it's non-nil, zero value otherwise.
-func (c *CommunityHealthMetrics) GetHealthPercentage() int {
-	if c == nil || c.HealthPercentage == nil {
-		return 0
-	}
-	return *c.HealthPercentage
-}
-
-// GetUpdatedAt returns the UpdatedAt field if it's non-nil, zero value otherwise.
-func (c *CommunityHealthMetrics) GetUpdatedAt() time.Time {
-	if c == nil || c.UpdatedAt == nil {
-		return time.Time{}
-	}
-	return *c.UpdatedAt
-}
-
-// GetAvatarURL returns the AvatarURL field if it's non-nil, zero value otherwise.
-func (c *Contributor) GetAvatarURL() string {
-	if c == nil || c.AvatarURL == nil {
-		return ""
-	}
-	return *c.AvatarURL
-}
-
-// GetContributions returns the Contributions field if it's non-nil, zero value otherwise.
-func (c *Contributor) GetContributions() int {
-	if c == nil || c.Contributions == nil {
-		return 0
-	}
-	return *c.Contributions
-}
-
-// GetEventsURL returns the EventsURL field if it's non-nil, zero value otherwise.
-func (c *Contributor) GetEventsURL() string {
-	if c == nil || c.EventsURL == nil {
-		return ""
-	}
-	return *c.EventsURL
-}
-
-// GetFollowersURL returns the FollowersURL field if it's non-nil, zero value otherwise.
-func (c *Contributor) GetFollowersURL() string {
-	if c == nil || c.FollowersURL == nil {
-		return ""
-	}
-	return *c.FollowersURL
-}
-
-// GetFollowingURL returns the FollowingURL field if it's non-nil, zero value otherwise.
-func (c *Contributor) GetFollowingURL() string {
-	if c == nil || c.FollowingURL == nil {
-		return ""
-	}
-	return *c.FollowingURL
-}
-
-// GetGistsURL returns the GistsURL field if it's non-nil, zero value otherwise.
-func (c *Contributor) GetGistsURL() string {
-	if c == nil || c.GistsURL == nil {
-		return ""
-	}
-	return *c.GistsURL
-}
-
-// GetGravatarID returns the GravatarID field if it's non-nil, zero value otherwise.
-func (c *Contributor) GetGravatarID() string {
-	if c == nil || c.GravatarID == nil {
-		return ""
-	}
-	return *c.GravatarID
-}
-
-// GetHTMLURL returns the HTMLURL field if it's non-nil, zero value otherwise.
-func (c *Contributor) GetHTMLURL() string {
-	if c == nil || c.HTMLURL == nil {
-		return ""
-	}
-	return *c.HTMLURL
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (c *Contributor) GetID() int64 {
-	if c == nil || c.ID == nil {
-		return 0
-	}
-	return *c.ID
-}
-
-// GetLogin returns the Login field if it's non-nil, zero value otherwise.
-func (c *Contributor) GetLogin() string {
-	if c == nil || c.Login == nil {
-		return ""
-	}
-	return *c.Login
-}
-
-// GetOrganizationsURL returns the OrganizationsURL field if it's non-nil, zero value otherwise.
-func (c *Contributor) GetOrganizationsURL() string {
-	if c == nil || c.OrganizationsURL == nil {
-		return ""
-	}
-	return *c.OrganizationsURL
-}
-
-// GetReceivedEventsURL returns the ReceivedEventsURL field if it's non-nil, zero value otherwise.
-func (c *Contributor) GetReceivedEventsURL() string {
-	if c == nil || c.ReceivedEventsURL == nil {
-		return ""
-	}
-	return *c.ReceivedEventsURL
-}
-
-// GetReposURL returns the ReposURL field if it's non-nil, zero value otherwise.
-func (c *Contributor) GetReposURL() string {
-	if c == nil || c.ReposURL == nil {
-		return ""
-	}
-	return *c.ReposURL
-}
-
-// GetSiteAdmin returns the SiteAdmin field if it's non-nil, zero value otherwise.
-func (c *Contributor) GetSiteAdmin() bool {
-	if c == nil || c.SiteAdmin == nil {
-		return false
-	}
-	return *c.SiteAdmin
-}
-
-// GetStarredURL returns the StarredURL field if it's non-nil, zero value otherwise.
-func (c *Contributor) GetStarredURL() string {
-	if c == nil || c.StarredURL == nil {
-		return ""
-	}
-	return *c.StarredURL
-}
-
-// GetSubscriptionsURL returns the SubscriptionsURL field if it's non-nil, zero value otherwise.
-func (c *Contributor) GetSubscriptionsURL() string {
-	if c == nil || c.SubscriptionsURL == nil {
-		return ""
-	}
-	return *c.SubscriptionsURL
-}
-
-// GetType returns the Type field if it's non-nil, zero value otherwise.
-func (c *Contributor) GetType() string {
-	if c == nil || c.Type == nil {
-		return ""
-	}
-	return *c.Type
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (c *Contributor) GetURL() string {
-	if c == nil || c.URL == nil {
-		return ""
-	}
-	return *c.URL
-}
-
-// GetAuthor returns the Author field.
-func (c *ContributorStats) GetAuthor() *Contributor {
-	if c == nil {
-		return nil
-	}
-	return c.Author
-}
-
-// GetTotal returns the Total field if it's non-nil, zero value otherwise.
-func (c *ContributorStats) GetTotal() int {
-	if c == nil || c.Total == nil {
-		return 0
-	}
-	return *c.Total
-}
-
-// GetDescription returns the Description field if it's non-nil, zero value otherwise.
-func (c *CreateEvent) GetDescription() string {
-	if c == nil || c.Description == nil {
-		return ""
-	}
-	return *c.Description
-}
-
-// GetInstallation returns the Installation field.
-func (c *CreateEvent) GetInstallation() *Installation {
-	if c == nil {
-		return nil
-	}
-	return c.Installation
-}
-
-// GetMasterBranch returns the MasterBranch field if it's non-nil, zero value otherwise.
-func (c *CreateEvent) GetMasterBranch() string {
-	if c == nil || c.MasterBranch == nil {
-		return ""
-	}
-	return *c.MasterBranch
-}
-
-// GetPusherType returns the PusherType field if it's non-nil, zero value otherwise.
-func (c *CreateEvent) GetPusherType() string {
-	if c == nil || c.PusherType == nil {
-		return ""
-	}
-	return *c.PusherType
-}
-
-// GetRef returns the Ref field if it's non-nil, zero value otherwise.
-func (c *CreateEvent) GetRef() string {
-	if c == nil || c.Ref == nil {
-		return ""
-	}
-	return *c.Ref
-}
-
-// GetRefType returns the RefType field if it's non-nil, zero value otherwise.
-func (c *CreateEvent) GetRefType() string {
-	if c == nil || c.RefType == nil {
-		return ""
-	}
-	return *c.RefType
-}
-
-// GetRepo returns the Repo field.
-func (c *CreateEvent) GetRepo() *Repository {
-	if c == nil {
-		return nil
-	}
-	return c.Repo
-}
-
-// GetSender returns the Sender field.
-func (c *CreateEvent) GetSender() *User {
-	if c == nil {
-		return nil
-	}
-	return c.Sender
-}
-
-// GetInstallation returns the Installation field.
-func (d *DeleteEvent) GetInstallation() *Installation {
-	if d == nil {
-		return nil
-	}
-	return d.Installation
-}
-
-// GetPusherType returns the PusherType field if it's non-nil, zero value otherwise.
-func (d *DeleteEvent) GetPusherType() string {
-	if d == nil || d.PusherType == nil {
-		return ""
-	}
-	return *d.PusherType
-}
-
-// GetRef returns the Ref field if it's non-nil, zero value otherwise.
-func (d *DeleteEvent) GetRef() string {
-	if d == nil || d.Ref == nil {
-		return ""
-	}
-	return *d.Ref
-}
-
-// GetRefType returns the RefType field if it's non-nil, zero value otherwise.
-func (d *DeleteEvent) GetRefType() string {
-	if d == nil || d.RefType == nil {
-		return ""
-	}
-	return *d.RefType
-}
-
-// GetRepo returns the Repo field.
-func (d *DeleteEvent) GetRepo() *Repository {
-	if d == nil {
-		return nil
-	}
-	return d.Repo
-}
-
-// GetSender returns the Sender field.
-func (d *DeleteEvent) GetSender() *User {
-	if d == nil {
-		return nil
-	}
-	return d.Sender
-}
-
-// GetCreatedAt returns the CreatedAt field if it's non-nil, zero value otherwise.
-func (d *Deployment) GetCreatedAt() Timestamp {
-	if d == nil || d.CreatedAt == nil {
-		return Timestamp{}
-	}
-	return *d.CreatedAt
-}
-
-// GetCreator returns the Creator field.
-func (d *Deployment) GetCreator() *User {
-	if d == nil {
-		return nil
-	}
-	return d.Creator
-}
-
-// GetDescription returns the Description field if it's non-nil, zero value otherwise.
-func (d *Deployment) GetDescription() string {
-	if d == nil || d.Description == nil {
-		return ""
-	}
-	return *d.Description
-}
-
-// GetEnvironment returns the Environment field if it's non-nil, zero value otherwise.
-func (d *Deployment) GetEnvironment() string {
-	if d == nil || d.Environment == nil {
-		return ""
-	}
-	return *d.Environment
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (d *Deployment) GetID() int64 {
-	if d == nil || d.ID == nil {
-		return 0
-	}
-	return *d.ID
-}
-
-// GetNodeID returns the NodeID field if it's non-nil, zero value otherwise.
-func (d *Deployment) GetNodeID() string {
-	if d == nil || d.NodeID == nil {
-		return ""
-	}
-	return *d.NodeID
-}
-
-// GetRef returns the Ref field if it's non-nil, zero value otherwise.
-func (d *Deployment) GetRef() string {
-	if d == nil || d.Ref == nil {
-		return ""
-	}
-	return *d.Ref
-}
-
-// GetRepositoryURL returns the RepositoryURL field if it's non-nil, zero value otherwise.
-func (d *Deployment) GetRepositoryURL() string {
-	if d == nil || d.RepositoryURL == nil {
-		return ""
-	}
-	return *d.RepositoryURL
-}
-
-// GetSHA returns the SHA field if it's non-nil, zero value otherwise.
-func (d *Deployment) GetSHA() string {
-	if d == nil || d.SHA == nil {
-		return ""
-	}
-	return *d.SHA
-}
-
-// GetStatusesURL returns the StatusesURL field if it's non-nil, zero value otherwise.
-func (d *Deployment) GetStatusesURL() string {
-	if d == nil || d.StatusesURL == nil {
-		return ""
-	}
-	return *d.StatusesURL
-}
-
-// GetTask returns the Task field if it's non-nil, zero value otherwise.
-func (d *Deployment) GetTask() string {
-	if d == nil || d.Task == nil {
-		return ""
-	}
-	return *d.Task
-}
-
-// GetUpdatedAt returns the UpdatedAt field if it's non-nil, zero value otherwise.
-func (d *Deployment) GetUpdatedAt() Timestamp {
-	if d == nil || d.UpdatedAt == nil {
-		return Timestamp{}
-	}
-	return *d.UpdatedAt
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (d *Deployment) GetURL() string {
-	if d == nil || d.URL == nil {
-		return ""
-	}
-	return *d.URL
-}
-
-// GetDeployment returns the Deployment field.
-func (d *DeploymentEvent) GetDeployment() *Deployment {
-	if d == nil {
-		return nil
-	}
-	return d.Deployment
-}
-
-// GetInstallation returns the Installation field.
-func (d *DeploymentEvent) GetInstallation() *Installation {
-	if d == nil {
-		return nil
-	}
-	return d.Installation
-}
-
-// GetRepo returns the Repo field.
-func (d *DeploymentEvent) GetRepo() *Repository {
-	if d == nil {
-		return nil
-	}
-	return d.Repo
-}
-
-// GetSender returns the Sender field.
-func (d *DeploymentEvent) GetSender() *User {
-	if d == nil {
-		return nil
-	}
-	return d.Sender
-}
-
-// GetAutoMerge returns the AutoMerge field if it's non-nil, zero value otherwise.
-func (d *DeploymentRequest) GetAutoMerge() bool {
-	if d == nil || d.AutoMerge == nil {
-		return false
-	}
-	return *d.AutoMerge
-}
-
-// GetDescription returns the Description field if it's non-nil, zero value otherwise.
-func (d *DeploymentRequest) GetDescription() string {
-	if d == nil || d.Description == nil {
-		return ""
-	}
-	return *d.Description
-}
-
-// GetEnvironment returns the Environment field if it's non-nil, zero value otherwise.
-func (d *DeploymentRequest) GetEnvironment() string {
-	if d == nil || d.Environment == nil {
-		return ""
-	}
-	return *d.Environment
-}
-
-// GetPayload returns the Payload field if it's non-nil, zero value otherwise.
-func (d *DeploymentRequest) GetPayload() string {
-	if d == nil || d.Payload == nil {
-		return ""
-	}
-	return *d.Payload
-}
-
-// GetProductionEnvironment returns the ProductionEnvironment field if it's non-nil, zero value otherwise.
-func (d *DeploymentRequest) GetProductionEnvironment() bool {
-	if d == nil || d.ProductionEnvironment == nil {
-		return false
-	}
-	return *d.ProductionEnvironment
-}
-
-// GetRef returns the Ref field if it's non-nil, zero value otherwise.
-func (d *DeploymentRequest) GetRef() string {
-	if d == nil || d.Ref == nil {
-		return ""
-	}
-	return *d.Ref
-}
-
-// GetRequiredContexts returns the RequiredContexts field if it's non-nil, zero value otherwise.
-func (d *DeploymentRequest) GetRequiredContexts() []string {
-	if d == nil || d.RequiredContexts == nil {
-		return nil
-	}
-	return *d.RequiredContexts
-}
-
-// GetTask returns the Task field if it's non-nil, zero value otherwise.
-func (d *DeploymentRequest) GetTask() string {
-	if d == nil || d.Task == nil {
-		return ""
-	}
-	return *d.Task
-}
-
-// GetTransientEnvironment returns the TransientEnvironment field if it's non-nil, zero value otherwise.
-func (d *DeploymentRequest) GetTransientEnvironment() bool {
-	if d == nil || d.TransientEnvironment == nil {
-		return false
-	}
-	return *d.TransientEnvironment
-}
-
-// GetCreatedAt returns the CreatedAt field if it's non-nil, zero value otherwise.
-func (d *DeploymentStatus) GetCreatedAt() Timestamp {
-	if d == nil || d.CreatedAt == nil {
-		return Timestamp{}
-	}
-	return *d.CreatedAt
-}
-
-// GetCreator returns the Creator field.
-func (d *DeploymentStatus) GetCreator() *User {
-	if d == nil {
-		return nil
-	}
-	return d.Creator
-}
-
-// GetDeploymentURL returns the DeploymentURL field if it's non-nil, zero value otherwise.
-func (d *DeploymentStatus) GetDeploymentURL() string {
-	if d == nil || d.DeploymentURL == nil {
-		return ""
-	}
-	return *d.DeploymentURL
-}
-
-// GetDescription returns the Description field if it's non-nil, zero value otherwise.
-func (d *DeploymentStatus) GetDescription() string {
-	if d == nil || d.Description == nil {
-		return ""
-	}
-	return *d.Description
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (d *DeploymentStatus) GetID() int64 {
-	if d == nil || d.ID == nil {
-		return 0
-	}
-	return *d.ID
-}
-
-// GetNodeID returns the NodeID field if it's non-nil, zero value otherwise.
-func (d *DeploymentStatus) GetNodeID() string {
-	if d == nil || d.NodeID == nil {
-		return ""
-	}
-	return *d.NodeID
-}
-
-// GetRepositoryURL returns the RepositoryURL field if it's non-nil, zero value otherwise.
-func (d *DeploymentStatus) GetRepositoryURL() string {
-	if d == nil || d.RepositoryURL == nil {
-		return ""
-	}
-	return *d.RepositoryURL
-}
-
-// GetState returns the State field if it's non-nil, zero value otherwise.
-func (d *DeploymentStatus) GetState() string {
-	if d == nil || d.State == nil {
-		return ""
-	}
-	return *d.State
-}
-
-// GetTargetURL returns the TargetURL field if it's non-nil, zero value otherwise.
-func (d *DeploymentStatus) GetTargetURL() string {
-	if d == nil || d.TargetURL == nil {
-		return ""
-	}
-	return *d.TargetURL
-}
-
-// GetUpdatedAt returns the UpdatedAt field if it's non-nil, zero value otherwise.
-func (d *DeploymentStatus) GetUpdatedAt() Timestamp {
-	if d == nil || d.UpdatedAt == nil {
-		return Timestamp{}
-	}
-	return *d.UpdatedAt
-}
-
-// GetDeployment returns the Deployment field.
-func (d *DeploymentStatusEvent) GetDeployment() *Deployment {
-	if d == nil {
-		return nil
-	}
-	return d.Deployment
-}
-
-// GetDeploymentStatus returns the DeploymentStatus field.
-func (d *DeploymentStatusEvent) GetDeploymentStatus() *DeploymentStatus {
-	if d == nil {
-		return nil
-	}
-	return d.DeploymentStatus
-}
-
-// GetInstallation returns the Installation field.
-func (d *DeploymentStatusEvent) GetInstallation() *Installation {
-	if d == nil {
-		return nil
-	}
-	return d.Installation
-}
-
-// GetRepo returns the Repo field.
-func (d *DeploymentStatusEvent) GetRepo() *Repository {
-	if d == nil {
-		return nil
-	}
-	return d.Repo
-}
-
-// GetSender returns the Sender field.
-func (d *DeploymentStatusEvent) GetSender() *User {
-	if d == nil {
-		return nil
-	}
-	return d.Sender
-}
-
-// GetAutoInactive returns the AutoInactive field if it's non-nil, zero value otherwise.
-func (d *DeploymentStatusRequest) GetAutoInactive() bool {
-	if d == nil || d.AutoInactive == nil {
-		return false
-	}
-	return *d.AutoInactive
-}
-
-// GetDescription returns the Description field if it's non-nil, zero value otherwise.
-func (d *DeploymentStatusRequest) GetDescription() string {
-	if d == nil || d.Description == nil {
-		return ""
-	}
-	return *d.Description
-}
-
-// GetEnvironmentURL returns the EnvironmentURL field if it's non-nil, zero value otherwise.
-func (d *DeploymentStatusRequest) GetEnvironmentURL() string {
-	if d == nil || d.EnvironmentURL == nil {
-		return ""
-	}
-	return *d.EnvironmentURL
-}
-
-// GetLogURL returns the LogURL field if it's non-nil, zero value otherwise.
-func (d *DeploymentStatusRequest) GetLogURL() string {
-	if d == nil || d.LogURL == nil {
-		return ""
-	}
-	return *d.LogURL
-}
-
-// GetState returns the State field if it's non-nil, zero value otherwise.
-func (d *DeploymentStatusRequest) GetState() string {
-	if d == nil || d.State == nil {
-		return ""
-	}
-	return *d.State
-}
-
-// GetBody returns the Body field if it's non-nil, zero value otherwise.
-func (d *DraftReviewComment) GetBody() string {
-	if d == nil || d.Body == nil {
-		return ""
-	}
-	return *d.Body
-}
-
-// GetPath returns the Path field if it's non-nil, zero value otherwise.
-func (d *DraftReviewComment) GetPath() string {
-	if d == nil || d.Path == nil {
-		return ""
-	}
-	return *d.Path
-}
-
-// GetPosition returns the Position field if it's non-nil, zero value otherwise.
-func (d *DraftReviewComment) GetPosition() int {
-	if d == nil || d.Position == nil {
-		return 0
-	}
-	return *d.Position
-}
-
-// GetActor returns the Actor field.
-func (e *Event) GetActor() *User {
-	if e == nil {
-		return nil
-	}
-	return e.Actor
-}
-
-// GetCreatedAt returns the CreatedAt field if it's non-nil, zero value otherwise.
-func (e *Event) GetCreatedAt() time.Time {
-	if e == nil || e.CreatedAt == nil {
-		return time.Time{}
-	}
-	return *e.CreatedAt
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (e *Event) GetID() string {
-	if e == nil || e.ID == nil {
-		return ""
-	}
-	return *e.ID
-}
-
-// GetOrg returns the Org field.
-func (e *Event) GetOrg() *Organization {
-	if e == nil {
-		return nil
-	}
-	return e.Org
-}
-
-// GetPublic returns the Public field if it's non-nil, zero value otherwise.
-func (e *Event) GetPublic() bool {
-	if e == nil || e.Public == nil {
-		return false
-	}
-	return *e.Public
-}
-
-// GetRawPayload returns the RawPayload field if it's non-nil, zero value otherwise.
-func (e *Event) GetRawPayload() json.RawMessage {
-	if e == nil || e.RawPayload == nil {
-		return json.RawMessage{}
-	}
-	return *e.RawPayload
-}
-
-// GetRepo returns the Repo field.
-func (e *Event) GetRepo() *Repository {
-	if e == nil {
-		return nil
-	}
-	return e.Repo
-}
-
-// GetType returns the Type field if it's non-nil, zero value otherwise.
-func (e *Event) GetType() string {
-	if e == nil || e.Type == nil {
-		return ""
-	}
-	return *e.Type
-}
-
-// GetHRef returns the HRef field if it's non-nil, zero value otherwise.
-func (f *FeedLink) GetHRef() string {
-	if f == nil || f.HRef == nil {
-		return ""
-	}
-	return *f.HRef
-}
-
-// GetType returns the Type field if it's non-nil, zero value otherwise.
-func (f *FeedLink) GetType() string {
-	if f == nil || f.Type == nil {
-		return ""
-	}
-	return *f.Type
-}
-
-// GetCurrentUserActorURL returns the CurrentUserActorURL field if it's non-nil, zero value otherwise.
-func (f *Feeds) GetCurrentUserActorURL() string {
-	if f == nil || f.CurrentUserActorURL == nil {
-		return ""
-	}
-	return *f.CurrentUserActorURL
-}
-
-// GetCurrentUserOrganizationURL returns the CurrentUserOrganizationURL field if it's non-nil, zero value otherwise.
-func (f *Feeds) GetCurrentUserOrganizationURL() string {
-	if f == nil || f.CurrentUserOrganizationURL == nil {
-		return ""
-	}
-	return *f.CurrentUserOrganizationURL
-}
-
-// GetCurrentUserPublicURL returns the CurrentUserPublicURL field if it's non-nil, zero value otherwise.
-func (f *Feeds) GetCurrentUserPublicURL() string {
-	if f == nil || f.CurrentUserPublicURL == nil {
-		return ""
-	}
-	return *f.CurrentUserPublicURL
-}
-
-// GetCurrentUserURL returns the CurrentUserURL field if it's non-nil, zero value otherwise.
-func (f *Feeds) GetCurrentUserURL() string {
-	if f == nil || f.CurrentUserURL == nil {
-		return ""
-	}
-	return *f.CurrentUserURL
-}
-
-// GetTimelineURL returns the TimelineURL field if it's non-nil, zero value otherwise.
-func (f *Feeds) GetTimelineURL() string {
-	if f == nil || f.TimelineURL == nil {
-		return ""
-	}
-	return *f.TimelineURL
-}
-
-// GetUserURL returns the UserURL field if it's non-nil, zero value otherwise.
-func (f *Feeds) GetUserURL() string {
-	if f == nil || f.UserURL == nil {
-		return ""
-	}
-	return *f.UserURL
-}
-
-// GetForkee returns the Forkee field.
-func (f *ForkEvent) GetForkee() *Repository {
-	if f == nil {
-		return nil
-	}
-	return f.Forkee
-}
-
-// GetInstallation returns the Installation field.
-func (f *ForkEvent) GetInstallation() *Installation {
-	if f == nil {
-		return nil
-	}
-	return f.Installation
-}
-
-// GetRepo returns the Repo field.
-func (f *ForkEvent) GetRepo() *Repository {
-	if f == nil {
-		return nil
-	}
-	return f.Repo
-}
-
-// GetSender returns the Sender field.
-func (f *ForkEvent) GetSender() *User {
-	if f == nil {
-		return nil
-	}
-	return f.Sender
-}
-
-// GetComments returns the Comments field if it's non-nil, zero value otherwise.
-func (g *Gist) GetComments() int {
-	if g == nil || g.Comments == nil {
-		return 0
-	}
-	return *g.Comments
-}
-
-// GetCreatedAt returns the CreatedAt field if it's non-nil, zero value otherwise.
-func (g *Gist) GetCreatedAt() time.Time {
-	if g == nil || g.CreatedAt == nil {
-		return time.Time{}
-	}
-	return *g.CreatedAt
-}
-
-// GetDescription returns the Description field if it's non-nil, zero value otherwise.
-func (g *Gist) GetDescription() string {
-	if g == nil || g.Description == nil {
-		return ""
-	}
-	return *g.Description
-}
-
-// GetGitPullURL returns the GitPullURL field if it's non-nil, zero value otherwise.
-func (g *Gist) GetGitPullURL() string {
-	if g == nil || g.GitPullURL == nil {
-		return ""
-	}
-	return *g.GitPullURL
-}
-
-// GetGitPushURL returns the GitPushURL field if it's non-nil, zero value otherwise.
-func (g *Gist) GetGitPushURL() string {
-	if g == nil || g.GitPushURL == nil {
-		return ""
-	}
-	return *g.GitPushURL
-}
-
-// GetHTMLURL returns the HTMLURL field if it's non-nil, zero value otherwise.
-func (g *Gist) GetHTMLURL() string {
-	if g == nil || g.HTMLURL == nil {
-		return ""
-	}
-	return *g.HTMLURL
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (g *Gist) GetID() string {
-	if g == nil || g.ID == nil {
-		return ""
-	}
-	return *g.ID
-}
-
-// GetNodeID returns the NodeID field if it's non-nil, zero value otherwise.
-func (g *Gist) GetNodeID() string {
-	if g == nil || g.NodeID == nil {
-		return ""
-	}
-	return *g.NodeID
-}
-
-// GetOwner returns the Owner field.
-func (g *Gist) GetOwner() *User {
-	if g == nil {
-		return nil
-	}
-	return g.Owner
-}
-
-// GetPublic returns the Public field if it's non-nil, zero value otherwise.
-func (g *Gist) GetPublic() bool {
-	if g == nil || g.Public == nil {
-		return false
-	}
-	return *g.Public
-}
-
-// GetUpdatedAt returns the UpdatedAt field if it's non-nil, zero value otherwise.
-func (g *Gist) GetUpdatedAt() time.Time {
-	if g == nil || g.UpdatedAt == nil {
-		return time.Time{}
-	}
-	return *g.UpdatedAt
-}
-
-// GetBody returns the Body field if it's non-nil, zero value otherwise.
-func (g *GistComment) GetBody() string {
-	if g == nil || g.Body == nil {
-		return ""
-	}
-	return *g.Body
-}
-
-// GetCreatedAt returns the CreatedAt field if it's non-nil, zero value otherwise.
-func (g *GistComment) GetCreatedAt() time.Time {
-	if g == nil || g.CreatedAt == nil {
-		return time.Time{}
-	}
-	return *g.CreatedAt
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (g *GistComment) GetID() int64 {
-	if g == nil || g.ID == nil {
-		return 0
-	}
-	return *g.ID
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (g *GistComment) GetURL() string {
-	if g == nil || g.URL == nil {
-		return ""
-	}
-	return *g.URL
-}
-
-// GetUser returns the User field.
-func (g *GistComment) GetUser() *User {
-	if g == nil {
-		return nil
-	}
-	return g.User
-}
-
-// GetChangeStatus returns the ChangeStatus field.
-func (g *GistCommit) GetChangeStatus() *CommitStats {
-	if g == nil {
-		return nil
-	}
-	return g.ChangeStatus
-}
-
-// GetCommittedAt returns the CommittedAt field if it's non-nil, zero value otherwise.
-func (g *GistCommit) GetCommittedAt() Timestamp {
-	if g == nil || g.CommittedAt == nil {
-		return Timestamp{}
-	}
-	return *g.CommittedAt
-}
-
-// GetNodeID returns the NodeID field if it's non-nil, zero value otherwise.
-func (g *GistCommit) GetNodeID() string {
-	if g == nil || g.NodeID == nil {
-		return ""
-	}
-	return *g.NodeID
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (g *GistCommit) GetURL() string {
-	if g == nil || g.URL == nil {
-		return ""
-	}
-	return *g.URL
-}
-
-// GetUser returns the User field.
-func (g *GistCommit) GetUser() *User {
-	if g == nil {
-		return nil
-	}
-	return g.User
-}
-
-// GetVersion returns the Version field if it's non-nil, zero value otherwise.
-func (g *GistCommit) GetVersion() string {
-	if g == nil || g.Version == nil {
-		return ""
-	}
-	return *g.Version
-}
-
-// GetContent returns the Content field if it's non-nil, zero value otherwise.
-func (g *GistFile) GetContent() string {
-	if g == nil || g.Content == nil {
-		return ""
-	}
-	return *g.Content
-}
-
-// GetFilename returns the Filename field if it's non-nil, zero value otherwise.
-func (g *GistFile) GetFilename() string {
-	if g == nil || g.Filename == nil {
-		return ""
-	}
-	return *g.Filename
-}
-
-// GetLanguage returns the Language field if it's non-nil, zero value otherwise.
-func (g *GistFile) GetLanguage() string {
-	if g == nil || g.Language == nil {
-		return ""
-	}
-	return *g.Language
-}
-
-// GetRawURL returns the RawURL field if it's non-nil, zero value otherwise.
-func (g *GistFile) GetRawURL() string {
-	if g == nil || g.RawURL == nil {
-		return ""
-	}
-	return *g.RawURL
-}
-
-// GetSize returns the Size field if it's non-nil, zero value otherwise.
-func (g *GistFile) GetSize() int {
-	if g == nil || g.Size == nil {
-		return 0
-	}
-	return *g.Size
-}
-
-// GetType returns the Type field if it's non-nil, zero value otherwise.
-func (g *GistFile) GetType() string {
-	if g == nil || g.Type == nil {
-		return ""
-	}
-	return *g.Type
-}
-
-// GetCreatedAt returns the CreatedAt field if it's non-nil, zero value otherwise.
-func (g *GistFork) GetCreatedAt() Timestamp {
-	if g == nil || g.CreatedAt == nil {
-		return Timestamp{}
-	}
-	return *g.CreatedAt
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (g *GistFork) GetID() string {
-	if g == nil || g.ID == nil {
-		return ""
-	}
-	return *g.ID
-}
-
-// GetNodeID returns the NodeID field if it's non-nil, zero value otherwise.
-func (g *GistFork) GetNodeID() string {
-	if g == nil || g.NodeID == nil {
-		return ""
-	}
-	return *g.NodeID
-}
-
-// GetUpdatedAt returns the UpdatedAt field if it's non-nil, zero value otherwise.
-func (g *GistFork) GetUpdatedAt() Timestamp {
-	if g == nil || g.UpdatedAt == nil {
-		return Timestamp{}
-	}
-	return *g.UpdatedAt
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (g *GistFork) GetURL() string {
-	if g == nil || g.URL == nil {
-		return ""
-	}
-	return *g.URL
-}
-
-// GetUser returns the User field.
-func (g *GistFork) GetUser() *User {
-	if g == nil {
-		return nil
-	}
-	return g.User
-}
-
-// GetPrivateGists returns the PrivateGists field if it's non-nil, zero value otherwise.
-func (g *GistStats) GetPrivateGists() int {
-	if g == nil || g.PrivateGists == nil {
-		return 0
-	}
-	return *g.PrivateGists
-}
-
-// GetPublicGists returns the PublicGists field if it's non-nil, zero value otherwise.
-func (g *GistStats) GetPublicGists() int {
-	if g == nil || g.PublicGists == nil {
-		return 0
-	}
-	return *g.PublicGists
-}
-
-// GetTotalGists returns the TotalGists field if it's non-nil, zero value otherwise.
-func (g *GistStats) GetTotalGists() int {
-	if g == nil || g.TotalGists == nil {
-		return 0
-	}
-	return *g.TotalGists
-}
-
-// GetName returns the Name field if it's non-nil, zero value otherwise.
-func (g *Gitignore) GetName() string {
-	if g == nil || g.Name == nil {
-		return ""
-	}
-	return *g.Name
-}
-
-// GetSource returns the Source field if it's non-nil, zero value otherwise.
-func (g *Gitignore) GetSource() string {
-	if g == nil || g.Source == nil {
-		return ""
-	}
-	return *g.Source
-}
-
-// GetSHA returns the SHA field if it's non-nil, zero value otherwise.
-func (g *GitObject) GetSHA() string {
-	if g == nil || g.SHA == nil {
-		return ""
-	}
-	return *g.SHA
-}
-
-// GetType returns the Type field if it's non-nil, zero value otherwise.
-func (g *GitObject) GetType() string {
-	if g == nil || g.Type == nil {
-		return ""
-	}
-	return *g.Type
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (g *GitObject) GetURL() string {
-	if g == nil || g.URL == nil {
-		return ""
-	}
-	return *g.URL
-}
-
-// GetInstallation returns the Installation field.
-func (g *GollumEvent) GetInstallation() *Installation {
-	if g == nil {
-		return nil
-	}
-	return g.Installation
-}
-
-// GetRepo returns the Repo field.
-func (g *GollumEvent) GetRepo() *Repository {
-	if g == nil {
-		return nil
-	}
-	return g.Repo
-}
-
-// GetSender returns the Sender field.
-func (g *GollumEvent) GetSender() *User {
-	if g == nil {
-		return nil
-	}
-	return g.Sender
-}
-
-// GetEmail returns the Email field if it's non-nil, zero value otherwise.
-func (g *GPGEmail) GetEmail() string {
-	if g == nil || g.Email == nil {
-		return ""
-	}
-	return *g.Email
-}
-
-// GetVerified returns the Verified field if it's non-nil, zero value otherwise.
-func (g *GPGEmail) GetVerified() bool {
-	if g == nil || g.Verified == nil {
-		return false
-	}
-	return *g.Verified
-}
-
-// GetCanCertify returns the CanCertify field if it's non-nil, zero value otherwise.
-func (g *GPGKey) GetCanCertify() bool {
-	if g == nil || g.CanCertify == nil {
-		return false
-	}
-	return *g.CanCertify
-}
-
-// GetCanEncryptComms returns the CanEncryptComms field if it's non-nil, zero value otherwise.
-func (g *GPGKey) GetCanEncryptComms() bool {
-	if g == nil || g.CanEncryptComms == nil {
-		return false
-	}
-	return *g.CanEncryptComms
-}
-
-// GetCanEncryptStorage returns the CanEncryptStorage field if it's non-nil, zero value otherwise.
-func (g *GPGKey) GetCanEncryptStorage() bool {
-	if g == nil || g.CanEncryptStorage == nil {
-		return false
-	}
-	return *g.CanEncryptStorage
-}
-
-// GetCanSign returns the CanSign field if it's non-nil, zero value otherwise.
-func (g *GPGKey) GetCanSign() bool {
-	if g == nil || g.CanSign == nil {
-		return false
-	}
-	return *g.CanSign
-}
-
-// GetCreatedAt returns the CreatedAt field if it's non-nil, zero value otherwise.
-func (g *GPGKey) GetCreatedAt() time.Time {
-	if g == nil || g.CreatedAt == nil {
-		return time.Time{}
-	}
-	return *g.CreatedAt
-}
-
-// GetExpiresAt returns the ExpiresAt field if it's non-nil, zero value otherwise.
-func (g *GPGKey) GetExpiresAt() time.Time {
-	if g == nil || g.ExpiresAt == nil {
-		return time.Time{}
-	}
-	return *g.ExpiresAt
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (g *GPGKey) GetID() int64 {
-	if g == nil || g.ID == nil {
-		return 0
-	}
-	return *g.ID
-}
-
-// GetKeyID returns the KeyID field if it's non-nil, zero value otherwise.
-func (g *GPGKey) GetKeyID() string {
-	if g == nil || g.KeyID == nil {
-		return ""
-	}
-	return *g.KeyID
-}
-
-// GetPrimaryKeyID returns the PrimaryKeyID field if it's non-nil, zero value otherwise.
-func (g *GPGKey) GetPrimaryKeyID() int64 {
-	if g == nil || g.PrimaryKeyID == nil {
-		return 0
-	}
-	return *g.PrimaryKeyID
-}
-
-// GetPublicKey returns the PublicKey field if it's non-nil, zero value otherwise.
-func (g *GPGKey) GetPublicKey() string {
-	if g == nil || g.PublicKey == nil {
-		return ""
-	}
-	return *g.PublicKey
-}
-
-// GetApp returns the App field.
-func (g *Grant) GetApp() *AuthorizationApp {
-	if g == nil {
-		return nil
-	}
-	return g.App
-}
-
-// GetCreatedAt returns the CreatedAt field if it's non-nil, zero value otherwise.
-func (g *Grant) GetCreatedAt() Timestamp {
-	if g == nil || g.CreatedAt == nil {
-		return Timestamp{}
-	}
-	return *g.CreatedAt
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (g *Grant) GetID() int64 {
-	if g == nil || g.ID == nil {
-		return 0
-	}
-	return *g.ID
-}
-
-// GetUpdatedAt returns the UpdatedAt field if it's non-nil, zero value otherwise.
-func (g *Grant) GetUpdatedAt() Timestamp {
-	if g == nil || g.UpdatedAt == nil {
-		return Timestamp{}
-	}
-	return *g.UpdatedAt
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (g *Grant) GetURL() string {
-	if g == nil || g.URL == nil {
-		return ""
-	}
-	return *g.URL
-}
-
-// GetActive returns the Active field if it's non-nil, zero value otherwise.
-func (h *Hook) GetActive() bool {
-	if h == nil || h.Active == nil {
-		return false
-	}
-	return *h.Active
-}
-
-// GetCreatedAt returns the CreatedAt field if it's non-nil, zero value otherwise.
-func (h *Hook) GetCreatedAt() time.Time {
-	if h == nil || h.CreatedAt == nil {
-		return time.Time{}
-	}
-	return *h.CreatedAt
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (h *Hook) GetID() int64 {
-	if h == nil || h.ID == nil {
-		return 0
-	}
-	return *h.ID
-}
-
-// GetName returns the Name field if it's non-nil, zero value otherwise.
-func (h *Hook) GetName() string {
-	if h == nil || h.Name == nil {
-		return ""
-	}
-	return *h.Name
-}
-
-// GetUpdatedAt returns the UpdatedAt field if it's non-nil, zero value otherwise.
-func (h *Hook) GetUpdatedAt() time.Time {
-	if h == nil || h.UpdatedAt == nil {
-		return time.Time{}
-	}
-	return *h.UpdatedAt
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (h *Hook) GetURL() string {
-	if h == nil || h.URL == nil {
-		return ""
-	}
-	return *h.URL
-}
-
-// GetActiveHooks returns the ActiveHooks field if it's non-nil, zero value otherwise.
-func (h *HookStats) GetActiveHooks() int {
-	if h == nil || h.ActiveHooks == nil {
-		return 0
-	}
-	return *h.ActiveHooks
-}
-
-// GetInactiveHooks returns the InactiveHooks field if it's non-nil, zero value otherwise.
-func (h *HookStats) GetInactiveHooks() int {
-	if h == nil || h.InactiveHooks == nil {
-		return 0
-	}
-	return *h.InactiveHooks
-}
-
-// GetTotalHooks returns the TotalHooks field if it's non-nil, zero value otherwise.
-func (h *HookStats) GetTotalHooks() int {
-	if h == nil || h.TotalHooks == nil {
-		return 0
-	}
-	return *h.TotalHooks
-}
-
-// GetAuthorsCount returns the AuthorsCount field if it's non-nil, zero value otherwise.
-func (i *Import) GetAuthorsCount() int {
-	if i == nil || i.AuthorsCount == nil {
-		return 0
-	}
-	return *i.AuthorsCount
-}
-
-// GetAuthorsURL returns the AuthorsURL field if it's non-nil, zero value otherwise.
-func (i *Import) GetAuthorsURL() string {
-	if i == nil || i.AuthorsURL == nil {
-		return ""
-	}
-	return *i.AuthorsURL
-}
-
-// GetCommitCount returns the CommitCount field if it's non-nil, zero value otherwise.
-func (i *Import) GetCommitCount() int {
-	if i == nil || i.CommitCount == nil {
-		return 0
-	}
-	return *i.CommitCount
-}
-
-// GetFailedStep returns the FailedStep field if it's non-nil, zero value otherwise.
-func (i *Import) GetFailedStep() string {
-	if i == nil || i.FailedStep == nil {
-		return ""
-	}
-	return *i.FailedStep
-}
-
-// GetHasLargeFiles returns the HasLargeFiles field if it's non-nil, zero value otherwise.
-func (i *Import) GetHasLargeFiles() bool {
-	if i == nil || i.HasLargeFiles == nil {
-		return false
-	}
-	return *i.HasLargeFiles
-}
-
-// GetHTMLURL returns the HTMLURL field if it's non-nil, zero value otherwise.
-func (i *Import) GetHTMLURL() string {
-	if i == nil || i.HTMLURL == nil {
-		return ""
-	}
-	return *i.HTMLURL
-}
-
-// GetHumanName returns the HumanName field if it's non-nil, zero value otherwise.
-func (i *Import) GetHumanName() string {
-	if i == nil || i.HumanName == nil {
-		return ""
-	}
-	return *i.HumanName
-}
-
-// GetLargeFilesCount returns the LargeFilesCount field if it's non-nil, zero value otherwise.
-func (i *Import) GetLargeFilesCount() int {
-	if i == nil || i.LargeFilesCount == nil {
-		return 0
-	}
-	return *i.LargeFilesCount
-}
-
-// GetLargeFilesSize returns the LargeFilesSize field if it's non-nil, zero value otherwise.
-func (i *Import) GetLargeFilesSize() int {
-	if i == nil || i.LargeFilesSize == nil {
-		return 0
-	}
-	return *i.LargeFilesSize
-}
-
-// GetMessage returns the Message field if it's non-nil, zero value otherwise.
-func (i *Import) GetMessage() string {
-	if i == nil || i.Message == nil {
-		return ""
-	}
-	return *i.Message
-}
-
-// GetPercent returns the Percent field if it's non-nil, zero value otherwise.
-func (i *Import) GetPercent() int {
-	if i == nil || i.Percent == nil {
-		return 0
-	}
-	return *i.Percent
-}
-
-// GetPushPercent returns the PushPercent field if it's non-nil, zero value otherwise.
-func (i *Import) GetPushPercent() int {
-	if i == nil || i.PushPercent == nil {
-		return 0
-	}
-	return *i.PushPercent
-}
-
-// GetRepositoryURL returns the RepositoryURL field if it's non-nil, zero value otherwise.
-func (i *Import) GetRepositoryURL() string {
-	if i == nil || i.RepositoryURL == nil {
-		return ""
-	}
-	return *i.RepositoryURL
-}
-
-// GetStatus returns the Status field if it's non-nil, zero value otherwise.
-func (i *Import) GetStatus() string {
-	if i == nil || i.Status == nil {
-		return ""
-	}
-	return *i.Status
-}
-
-// GetStatusText returns the StatusText field if it's non-nil, zero value otherwise.
-func (i *Import) GetStatusText() string {
-	if i == nil || i.StatusText == nil {
-		return ""
-	}
-	return *i.StatusText
-}
-
-// GetTFVCProject returns the TFVCProject field if it's non-nil, zero value otherwise.
-func (i *Import) GetTFVCProject() string {
-	if i == nil || i.TFVCProject == nil {
-		return ""
-	}
-	return *i.TFVCProject
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (i *Import) GetURL() string {
-	if i == nil || i.URL == nil {
-		return ""
-	}
-	return *i.URL
-}
-
-// GetUseLFS returns the UseLFS field if it's non-nil, zero value otherwise.
-func (i *Import) GetUseLFS() string {
-	if i == nil || i.UseLFS == nil {
-		return ""
-	}
-	return *i.UseLFS
-}
-
-// GetVCS returns the VCS field if it's non-nil, zero value otherwise.
-func (i *Import) GetVCS() string {
-	if i == nil || i.VCS == nil {
-		return ""
-	}
-	return *i.VCS
-}
-
-// GetVCSPassword returns the VCSPassword field if it's non-nil, zero value otherwise.
-func (i *Import) GetVCSPassword() string {
-	if i == nil || i.VCSPassword == nil {
-		return ""
-	}
-	return *i.VCSPassword
-}
-
-// GetVCSURL returns the VCSURL field if it's non-nil, zero value otherwise.
-func (i *Import) GetVCSURL() string {
-	if i == nil || i.VCSURL == nil {
-		return ""
-	}
-	return *i.VCSURL
-}
-
-// GetVCSUsername returns the VCSUsername field if it's non-nil, zero value otherwise.
-func (i *Import) GetVCSUsername() string {
-	if i == nil || i.VCSUsername == nil {
-		return ""
-	}
-	return *i.VCSUsername
-}
-
-// GetAccessTokensURL returns the AccessTokensURL field if it's non-nil, zero value otherwise.
-func (i *Installation) GetAccessTokensURL() string {
-	if i == nil || i.AccessTokensURL == nil {
-		return ""
-	}
-	return *i.AccessTokensURL
-}
-
-// GetAccount returns the Account field.
-func (i *Installation) GetAccount() *User {
-	if i == nil {
-		return nil
-	}
-	return i.Account
-}
-
-// GetHTMLURL returns the HTMLURL field if it's non-nil, zero value otherwise.
-func (i *Installation) GetHTMLURL() string {
-	if i == nil || i.HTMLURL == nil {
-		return ""
-	}
-	return *i.HTMLURL
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (i *Installation) GetID() int64 {
-	if i == nil || i.ID == nil {
-		return 0
-	}
-	return *i.ID
-}
-
-// GetRepositoriesURL returns the RepositoriesURL field if it's non-nil, zero value otherwise.
-func (i *Installation) GetRepositoriesURL() string {
-	if i == nil || i.RepositoriesURL == nil {
-		return ""
-	}
-	return *i.RepositoriesURL
-}
-
-// GetAction returns the Action field if it's non-nil, zero value otherwise.
-func (i *InstallationEvent) GetAction() string {
-	if i == nil || i.Action == nil {
-		return ""
-	}
-	return *i.Action
-}
-
-// GetInstallation returns the Installation field.
-func (i *InstallationEvent) GetInstallation() *Installation {
-	if i == nil {
-		return nil
-	}
-	return i.Installation
-}
-
-// GetSender returns the Sender field.
-func (i *InstallationEvent) GetSender() *User {
-	if i == nil {
-		return nil
-	}
-	return i.Sender
-}
-
-// GetAction returns the Action field if it's non-nil, zero value otherwise.
-func (i *InstallationRepositoriesEvent) GetAction() string {
-	if i == nil || i.Action == nil {
-		return ""
-	}
-	return *i.Action
-}
-
-// GetInstallation returns the Installation field.
-func (i *InstallationRepositoriesEvent) GetInstallation() *Installation {
-	if i == nil {
-		return nil
-	}
-	return i.Installation
-}
-
-// GetRepositorySelection returns the RepositorySelection field if it's non-nil, zero value otherwise.
-func (i *InstallationRepositoriesEvent) GetRepositorySelection() string {
-	if i == nil || i.RepositorySelection == nil {
-		return ""
-	}
-	return *i.RepositorySelection
-}
-
-// GetSender returns the Sender field.
-func (i *InstallationRepositoriesEvent) GetSender() *User {
-	if i == nil {
-		return nil
-	}
-	return i.Sender
-}
-
-// GetExpiresAt returns the ExpiresAt field if it's non-nil, zero value otherwise.
-func (i *InstallationToken) GetExpiresAt() time.Time {
-	if i == nil || i.ExpiresAt == nil {
-		return time.Time{}
-	}
-	return *i.ExpiresAt
-}
-
-// GetToken returns the Token field if it's non-nil, zero value otherwise.
-func (i *InstallationToken) GetToken() string {
-	if i == nil || i.Token == nil {
-		return ""
-	}
-	return *i.Token
-}
-
-// GetCreatedAt returns the CreatedAt field if it's non-nil, zero value otherwise.
-func (i *Invitation) GetCreatedAt() time.Time {
-	if i == nil || i.CreatedAt == nil {
-		return time.Time{}
-	}
-	return *i.CreatedAt
-}
-
-// GetEmail returns the Email field if it's non-nil, zero value otherwise.
-func (i *Invitation) GetEmail() string {
-	if i == nil || i.Email == nil {
-		return ""
-	}
-	return *i.Email
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (i *Invitation) GetID() int64 {
-	if i == nil || i.ID == nil {
-		return 0
-	}
-	return *i.ID
-}
-
-// GetInviter returns the Inviter field.
-func (i *Invitation) GetInviter() *User {
-	if i == nil {
-		return nil
-	}
-	return i.Inviter
-}
-
-// GetLogin returns the Login field if it's non-nil, zero value otherwise.
-func (i *Invitation) GetLogin() string {
-	if i == nil || i.Login == nil {
-		return ""
-	}
-	return *i.Login
-}
-
-// GetRole returns the Role field if it's non-nil, zero value otherwise.
-func (i *Invitation) GetRole() string {
-	if i == nil || i.Role == nil {
-		return ""
-	}
-	return *i.Role
-}
-
-// GetAssignee returns the Assignee field.
-func (i *Issue) GetAssignee() *User {
-	if i == nil {
-		return nil
-	}
-	return i.Assignee
-}
-
-// GetBody returns the Body field if it's non-nil, zero value otherwise.
-func (i *Issue) GetBody() string {
-	if i == nil || i.Body == nil {
-		return ""
-	}
-	return *i.Body
-}
-
-// GetClosedAt returns the ClosedAt field if it's non-nil, zero value otherwise.
-func (i *Issue) GetClosedAt() time.Time {
-	if i == nil || i.ClosedAt == nil {
-		return time.Time{}
-	}
-	return *i.ClosedAt
-}
-
-// GetClosedBy returns the ClosedBy field.
-func (i *Issue) GetClosedBy() *User {
-	if i == nil {
-		return nil
-	}
-	return i.ClosedBy
-}
-
-// GetComments returns the Comments field if it's non-nil, zero value otherwise.
-func (i *Issue) GetComments() int {
-	if i == nil || i.Comments == nil {
-		return 0
-	}
-	return *i.Comments
-}
-
-// GetCommentsURL returns the CommentsURL field if it's non-nil, zero value otherwise.
-func (i *Issue) GetCommentsURL() string {
-	if i == nil || i.CommentsURL == nil {
-		return ""
-	}
-	return *i.CommentsURL
-}
-
-// GetCreatedAt returns the CreatedAt field if it's non-nil, zero value otherwise.
-func (i *Issue) GetCreatedAt() time.Time {
-	if i == nil || i.CreatedAt == nil {
-		return time.Time{}
-	}
-	return *i.CreatedAt
-}
-
-// GetEventsURL returns the EventsURL field if it's non-nil, zero value otherwise.
-func (i *Issue) GetEventsURL() string {
-	if i == nil || i.EventsURL == nil {
-		return ""
-	}
-	return *i.EventsURL
-}
-
-// GetHTMLURL returns the HTMLURL field if it's non-nil, zero value otherwise.
-func (i *Issue) GetHTMLURL() string {
-	if i == nil || i.HTMLURL == nil {
-		return ""
-	}
-	return *i.HTMLURL
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (i *Issue) GetID() int64 {
-	if i == nil || i.ID == nil {
-		return 0
-	}
-	return *i.ID
-}
-
-// GetLabelsURL returns the LabelsURL field if it's non-nil, zero value otherwise.
-func (i *Issue) GetLabelsURL() string {
-	if i == nil || i.LabelsURL == nil {
-		return ""
-	}
-	return *i.LabelsURL
-}
-
-// GetLocked returns the Locked field if it's non-nil, zero value otherwise.
-func (i *Issue) GetLocked() bool {
-	if i == nil || i.Locked == nil {
-		return false
-	}
-	return *i.Locked
-}
-
-// GetMilestone returns the Milestone field.
-func (i *Issue) GetMilestone() *Milestone {
-	if i == nil {
-		return nil
-	}
-	return i.Milestone
-}
-
-// GetNodeID returns the NodeID field if it's non-nil, zero value otherwise.
-func (i *Issue) GetNodeID() string {
-	if i == nil || i.NodeID == nil {
-		return ""
-	}
-	return *i.NodeID
-}
-
-// GetNumber returns the Number field if it's non-nil, zero value otherwise.
-func (i *Issue) GetNumber() int {
-	if i == nil || i.Number == nil {
-		return 0
-	}
-	return *i.Number
-}
-
-// GetPullRequestLinks returns the PullRequestLinks field.
-func (i *Issue) GetPullRequestLinks() *PullRequestLinks {
-	if i == nil {
-		return nil
-	}
-	return i.PullRequestLinks
-}
-
-// GetReactions returns the Reactions field.
-func (i *Issue) GetReactions() *Reactions {
-	if i == nil {
-		return nil
-	}
-	return i.Reactions
-}
-
-// GetRepository returns the Repository field.
-func (i *Issue) GetRepository() *Repository {
-	if i == nil {
-		return nil
-	}
-	return i.Repository
-}
-
-// GetRepositoryURL returns the RepositoryURL field if it's non-nil, zero value otherwise.
-func (i *Issue) GetRepositoryURL() string {
-	if i == nil || i.RepositoryURL == nil {
-		return ""
-	}
-	return *i.RepositoryURL
-}
-
-// GetState returns the State field if it's non-nil, zero value otherwise.
-func (i *Issue) GetState() string {
-	if i == nil || i.State == nil {
-		return ""
-	}
-	return *i.State
-}
-
-// GetTitle returns the Title field if it's non-nil, zero value otherwise.
-func (i *Issue) GetTitle() string {
-	if i == nil || i.Title == nil {
-		return ""
-	}
-	return *i.Title
-}
-
-// GetUpdatedAt returns the UpdatedAt field if it's non-nil, zero value otherwise.
-func (i *Issue) GetUpdatedAt() time.Time {
-	if i == nil || i.UpdatedAt == nil {
-		return time.Time{}
-	}
-	return *i.UpdatedAt
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (i *Issue) GetURL() string {
-	if i == nil || i.URL == nil {
-		return ""
-	}
-	return *i.URL
-}
-
-// GetUser returns the User field.
-func (i *Issue) GetUser() *User {
-	if i == nil {
-		return nil
-	}
-	return i.User
-}
-
-// GetBody returns the Body field if it's non-nil, zero value otherwise.
-func (i *IssueComment) GetBody() string {
-	if i == nil || i.Body == nil {
-		return ""
-	}
-	return *i.Body
-}
-
-// GetCreatedAt returns the CreatedAt field if it's non-nil, zero value otherwise.
-func (i *IssueComment) GetCreatedAt() time.Time {
-	if i == nil || i.CreatedAt == nil {
-		return time.Time{}
-	}
-	return *i.CreatedAt
-}
-
-// GetHTMLURL returns the HTMLURL field if it's non-nil, zero value otherwise.
-func (i *IssueComment) GetHTMLURL() string {
-	if i == nil || i.HTMLURL == nil {
-		return ""
-	}
-	return *i.HTMLURL
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (i *IssueComment) GetID() int64 {
-	if i == nil || i.ID == nil {
-		return 0
-	}
-	return *i.ID
-}
-
-// GetIssueURL returns the IssueURL field if it's non-nil, zero value otherwise.
-func (i *IssueComment) GetIssueURL() string {
-	if i == nil || i.IssueURL == nil {
-		return ""
-	}
-	return *i.IssueURL
-}
-
-// GetReactions returns the Reactions field.
-func (i *IssueComment) GetReactions() *Reactions {
-	if i == nil {
-		return nil
-	}
-	return i.Reactions
-}
-
-// GetUpdatedAt returns the UpdatedAt field if it's non-nil, zero value otherwise.
-func (i *IssueComment) GetUpdatedAt() time.Time {
-	if i == nil || i.UpdatedAt == nil {
-		return time.Time{}
-	}
-	return *i.UpdatedAt
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (i *IssueComment) GetURL() string {
-	if i == nil || i.URL == nil {
-		return ""
-	}
-	return *i.URL
-}
-
-// GetUser returns the User field.
-func (i *IssueComment) GetUser() *User {
-	if i == nil {
-		return nil
-	}
-	return i.User
-}
-
-// GetAction returns the Action field if it's non-nil, zero value otherwise.
-func (i *IssueCommentEvent) GetAction() string {
-	if i == nil || i.Action == nil {
-		return ""
-	}
-	return *i.Action
-}
-
-// GetChanges returns the Changes field.
-func (i *IssueCommentEvent) GetChanges() *EditChange {
-	if i == nil {
-		return nil
-	}
-	return i.Changes
-}
-
-// GetComment returns the Comment field.
-func (i *IssueCommentEvent) GetComment() *IssueComment {
-	if i == nil {
-		return nil
-	}
-	return i.Comment
-}
-
-// GetInstallation returns the Installation field.
-func (i *IssueCommentEvent) GetInstallation() *Installation {
-	if i == nil {
-		return nil
-	}
-	return i.Installation
-}
-
-// GetIssue returns the Issue field.
-func (i *IssueCommentEvent) GetIssue() *Issue {
-	if i == nil {
-		return nil
-	}
-	return i.Issue
-}
-
-// GetRepo returns the Repo field.
-func (i *IssueCommentEvent) GetRepo() *Repository {
-	if i == nil {
-		return nil
-	}
-	return i.Repo
-}
-
-// GetSender returns the Sender field.
-func (i *IssueCommentEvent) GetSender() *User {
-	if i == nil {
-		return nil
-	}
-	return i.Sender
-}
-
-// GetActor returns the Actor field.
-func (i *IssueEvent) GetActor() *User {
-	if i == nil {
-		return nil
-	}
-	return i.Actor
-}
-
-// GetAssignee returns the Assignee field.
-func (i *IssueEvent) GetAssignee() *User {
-	if i == nil {
-		return nil
-	}
-	return i.Assignee
-}
-
-// GetAssigner returns the Assigner field.
-func (i *IssueEvent) GetAssigner() *User {
-	if i == nil {
-		return nil
-	}
-	return i.Assigner
-}
-
-// GetCommitID returns the CommitID field if it's non-nil, zero value otherwise.
-func (i *IssueEvent) GetCommitID() string {
-	if i == nil || i.CommitID == nil {
-		return ""
-	}
-	return *i.CommitID
-}
-
-// GetCreatedAt returns the CreatedAt field if it's non-nil, zero value otherwise.
-func (i *IssueEvent) GetCreatedAt() time.Time {
-	if i == nil || i.CreatedAt == nil {
-		return time.Time{}
-	}
-	return *i.CreatedAt
-}
-
-// GetEvent returns the Event field if it's non-nil, zero value otherwise.
-func (i *IssueEvent) GetEvent() string {
-	if i == nil || i.Event == nil {
-		return ""
-	}
-	return *i.Event
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (i *IssueEvent) GetID() int64 {
-	if i == nil || i.ID == nil {
-		return 0
-	}
-	return *i.ID
-}
-
-// GetIssue returns the Issue field.
-func (i *IssueEvent) GetIssue() *Issue {
-	if i == nil {
-		return nil
-	}
-	return i.Issue
-}
-
-// GetLabel returns the Label field.
-func (i *IssueEvent) GetLabel() *Label {
-	if i == nil {
-		return nil
-	}
-	return i.Label
-}
-
-// GetMilestone returns the Milestone field.
-func (i *IssueEvent) GetMilestone() *Milestone {
-	if i == nil {
-		return nil
-	}
-	return i.Milestone
-}
-
-// GetRename returns the Rename field.
-func (i *IssueEvent) GetRename() *Rename {
-	if i == nil {
-		return nil
-	}
-	return i.Rename
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (i *IssueEvent) GetURL() string {
-	if i == nil || i.URL == nil {
-		return ""
-	}
-	return *i.URL
-}
-
-// GetAssignee returns the Assignee field if it's non-nil, zero value otherwise.
-func (i *IssueRequest) GetAssignee() string {
-	if i == nil || i.Assignee == nil {
-		return ""
-	}
-	return *i.Assignee
-}
-
-// GetAssignees returns the Assignees field if it's non-nil, zero value otherwise.
-func (i *IssueRequest) GetAssignees() []string {
-	if i == nil || i.Assignees == nil {
-		return nil
-	}
-	return *i.Assignees
-}
-
-// GetBody returns the Body field if it's non-nil, zero value otherwise.
-func (i *IssueRequest) GetBody() string {
-	if i == nil || i.Body == nil {
-		return ""
-	}
-	return *i.Body
-}
-
-// GetLabels returns the Labels field if it's non-nil, zero value otherwise.
-func (i *IssueRequest) GetLabels() []string {
-	if i == nil || i.Labels == nil {
-		return nil
-	}
-	return *i.Labels
-}
-
-// GetMilestone returns the Milestone field if it's non-nil, zero value otherwise.
-func (i *IssueRequest) GetMilestone() int {
-	if i == nil || i.Milestone == nil {
-		return 0
-	}
-	return *i.Milestone
-}
-
-// GetState returns the State field if it's non-nil, zero value otherwise.
-func (i *IssueRequest) GetState() string {
-	if i == nil || i.State == nil {
-		return ""
-	}
-	return *i.State
-}
-
-// GetTitle returns the Title field if it's non-nil, zero value otherwise.
-func (i *IssueRequest) GetTitle() string {
-	if i == nil || i.Title == nil {
-		return ""
-	}
-	return *i.Title
-}
-
-// GetAction returns the Action field if it's non-nil, zero value otherwise.
-func (i *IssuesEvent) GetAction() string {
-	if i == nil || i.Action == nil {
-		return ""
-	}
-	return *i.Action
-}
-
-// GetAssignee returns the Assignee field.
-func (i *IssuesEvent) GetAssignee() *User {
-	if i == nil {
-		return nil
-	}
-	return i.Assignee
-}
-
-// GetChanges returns the Changes field.
-func (i *IssuesEvent) GetChanges() *EditChange {
-	if i == nil {
-		return nil
-	}
-	return i.Changes
-}
-
-// GetInstallation returns the Installation field.
-func (i *IssuesEvent) GetInstallation() *Installation {
-	if i == nil {
-		return nil
-	}
-	return i.Installation
-}
-
-// GetIssue returns the Issue field.
-func (i *IssuesEvent) GetIssue() *Issue {
-	if i == nil {
-		return nil
-	}
-	return i.Issue
-}
-
-// GetLabel returns the Label field.
-func (i *IssuesEvent) GetLabel() *Label {
-	if i == nil {
-		return nil
-	}
-	return i.Label
-}
-
-// GetRepo returns the Repo field.
-func (i *IssuesEvent) GetRepo() *Repository {
-	if i == nil {
-		return nil
-	}
-	return i.Repo
-}
-
-// GetSender returns the Sender field.
-func (i *IssuesEvent) GetSender() *User {
-	if i == nil {
-		return nil
-	}
-	return i.Sender
-}
-
-// GetIncompleteResults returns the IncompleteResults field if it's non-nil, zero value otherwise.
-func (i *IssuesSearchResult) GetIncompleteResults() bool {
-	if i == nil || i.IncompleteResults == nil {
-		return false
-	}
-	return *i.IncompleteResults
-}
-
-// GetTotal returns the Total field if it's non-nil, zero value otherwise.
-func (i *IssuesSearchResult) GetTotal() int {
-	if i == nil || i.Total == nil {
-		return 0
-	}
-	return *i.Total
-}
-
-// GetClosedIssues returns the ClosedIssues field if it's non-nil, zero value otherwise.
-func (i *IssueStats) GetClosedIssues() int {
-	if i == nil || i.ClosedIssues == nil {
-		return 0
-	}
-	return *i.ClosedIssues
-}
-
-// GetOpenIssues returns the OpenIssues field if it's non-nil, zero value otherwise.
-func (i *IssueStats) GetOpenIssues() int {
-	if i == nil || i.OpenIssues == nil {
-		return 0
-	}
-	return *i.OpenIssues
-}
-
-// GetTotalIssues returns the TotalIssues field if it's non-nil, zero value otherwise.
-func (i *IssueStats) GetTotalIssues() int {
-	if i == nil || i.TotalIssues == nil {
-		return 0
-	}
-	return *i.TotalIssues
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (k *Key) GetID() int64 {
-	if k == nil || k.ID == nil {
-		return 0
-	}
-	return *k.ID
-}
-
-// GetKey returns the Key field if it's non-nil, zero value otherwise.
-func (k *Key) GetKey() string {
-	if k == nil || k.Key == nil {
-		return ""
-	}
-	return *k.Key
-}
-
-// GetReadOnly returns the ReadOnly field if it's non-nil, zero value otherwise.
-func (k *Key) GetReadOnly() bool {
-	if k == nil || k.ReadOnly == nil {
-		return false
-	}
-	return *k.ReadOnly
-}
-
-// GetTitle returns the Title field if it's non-nil, zero value otherwise.
-func (k *Key) GetTitle() string {
-	if k == nil || k.Title == nil {
-		return ""
-	}
-	return *k.Title
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (k *Key) GetURL() string {
-	if k == nil || k.URL == nil {
-		return ""
-	}
-	return *k.URL
-}
-
-// GetColor returns the Color field if it's non-nil, zero value otherwise.
-func (l *Label) GetColor() string {
-	if l == nil || l.Color == nil {
-		return ""
-	}
-	return *l.Color
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (l *Label) GetID() int64 {
-	if l == nil || l.ID == nil {
-		return 0
-	}
-	return *l.ID
-}
-
-// GetName returns the Name field if it's non-nil, zero value otherwise.
-func (l *Label) GetName() string {
-	if l == nil || l.Name == nil {
-		return ""
-	}
-	return *l.Name
-}
-
-// GetNodeID returns the NodeID field if it's non-nil, zero value otherwise.
-func (l *Label) GetNodeID() string {
-	if l == nil || l.NodeID == nil {
-		return ""
-	}
-	return *l.NodeID
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (l *Label) GetURL() string {
-	if l == nil || l.URL == nil {
-		return ""
-	}
-	return *l.URL
-}
-
-// GetAction returns the Action field if it's non-nil, zero value otherwise.
-func (l *LabelEvent) GetAction() string {
-	if l == nil || l.Action == nil {
-		return ""
-	}
-	return *l.Action
-}
-
-// GetChanges returns the Changes field.
-func (l *LabelEvent) GetChanges() *EditChange {
-	if l == nil {
-		return nil
-	}
-	return l.Changes
-}
-
-// GetInstallation returns the Installation field.
-func (l *LabelEvent) GetInstallation() *Installation {
-	if l == nil {
-		return nil
-	}
-	return l.Installation
-}
-
-// GetLabel returns the Label field.
-func (l *LabelEvent) GetLabel() *Label {
-	if l == nil {
-		return nil
-	}
-	return l.Label
-}
-
-// GetOrg returns the Org field.
-func (l *LabelEvent) GetOrg() *Organization {
-	if l == nil {
-		return nil
-	}
-	return l.Org
-}
-
-// GetRepo returns the Repo field.
-func (l *LabelEvent) GetRepo() *Repository {
-	if l == nil {
-		return nil
-	}
-	return l.Repo
-}
-
-// GetOID returns the OID field if it's non-nil, zero value otherwise.
-func (l *LargeFile) GetOID() string {
-	if l == nil || l.OID == nil {
-		return ""
-	}
-	return *l.OID
-}
-
-// GetPath returns the Path field if it's non-nil, zero value otherwise.
-func (l *LargeFile) GetPath() string {
-	if l == nil || l.Path == nil {
-		return ""
-	}
-	return *l.Path
-}
-
-// GetRefName returns the RefName field if it's non-nil, zero value otherwise.
-func (l *LargeFile) GetRefName() string {
-	if l == nil || l.RefName == nil {
-		return ""
-	}
-	return *l.RefName
-}
-
-// GetSize returns the Size field if it's non-nil, zero value otherwise.
-func (l *LargeFile) GetSize() int {
-	if l == nil || l.Size == nil {
-		return 0
-	}
-	return *l.Size
-}
-
-// GetBody returns the Body field if it's non-nil, zero value otherwise.
-func (l *License) GetBody() string {
-	if l == nil || l.Body == nil {
-		return ""
-	}
-	return *l.Body
-}
-
-// GetConditions returns the Conditions field if it's non-nil, zero value otherwise.
-func (l *License) GetConditions() []string {
-	if l == nil || l.Conditions == nil {
-		return nil
-	}
-	return *l.Conditions
-}
-
-// GetDescription returns the Description field if it's non-nil, zero value otherwise.
-func (l *License) GetDescription() string {
-	if l == nil || l.Description == nil {
-		return ""
-	}
-	return *l.Description
-}
-
-// GetFeatured returns the Featured field if it's non-nil, zero value otherwise.
-func (l *License) GetFeatured() bool {
-	if l == nil || l.Featured == nil {
-		return false
-	}
-	return *l.Featured
-}
-
-// GetHTMLURL returns the HTMLURL field if it's non-nil, zero value otherwise.
-func (l *License) GetHTMLURL() string {
-	if l == nil || l.HTMLURL == nil {
-		return ""
-	}
-	return *l.HTMLURL
-}
-
-// GetImplementation returns the Implementation field if it's non-nil, zero value otherwise.
-func (l *License) GetImplementation() string {
-	if l == nil || l.Implementation == nil {
-		return ""
-	}
-	return *l.Implementation
-}
-
-// GetKey returns the Key field if it's non-nil, zero value otherwise.
-func (l *License) GetKey() string {
-	if l == nil || l.Key == nil {
-		return ""
-	}
-	return *l.Key
-}
-
-// GetLimitations returns the Limitations field if it's non-nil, zero value otherwise.
-func (l *License) GetLimitations() []string {
-	if l == nil || l.Limitations == nil {
-		return nil
-	}
-	return *l.Limitations
-}
-
-// GetName returns the Name field if it's non-nil, zero value otherwise.
-func (l *License) GetName() string {
-	if l == nil || l.Name == nil {
-		return ""
-	}
-	return *l.Name
-}
-
-// GetPermissions returns the Permissions field if it's non-nil, zero value otherwise.
-func (l *License) GetPermissions() []string {
-	if l == nil || l.Permissions == nil {
-		return nil
-	}
-	return *l.Permissions
-}
-
-// GetSPDXID returns the SPDXID field if it's non-nil, zero value otherwise.
-func (l *License) GetSPDXID() string {
-	if l == nil || l.SPDXID == nil {
-		return ""
-	}
-	return *l.SPDXID
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (l *License) GetURL() string {
-	if l == nil || l.URL == nil {
-		return ""
-	}
-	return *l.URL
-}
-
-// GetAccountsURL returns the AccountsURL field if it's non-nil, zero value otherwise.
-func (m *MarketplacePlan) GetAccountsURL() string {
-	if m == nil || m.AccountsURL == nil {
-		return ""
-	}
-	return *m.AccountsURL
-}
-
-// GetBullets returns the Bullets field if it's non-nil, zero value otherwise.
-func (m *MarketplacePlan) GetBullets() []string {
-	if m == nil || m.Bullets == nil {
-		return nil
-	}
-	return *m.Bullets
-}
-
-// GetDescription returns the Description field if it's non-nil, zero value otherwise.
-func (m *MarketplacePlan) GetDescription() string {
-	if m == nil || m.Description == nil {
-		return ""
-	}
-	return *m.Description
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (m *MarketplacePlan) GetID() int64 {
-	if m == nil || m.ID == nil {
-		return 0
-	}
-	return *m.ID
-}
-
-// GetMonthlyPriceInCents returns the MonthlyPriceInCents field if it's non-nil, zero value otherwise.
-func (m *MarketplacePlan) GetMonthlyPriceInCents() int {
-	if m == nil || m.MonthlyPriceInCents == nil {
-		return 0
-	}
-	return *m.MonthlyPriceInCents
-}
-
-// GetName returns the Name field if it's non-nil, zero value otherwise.
-func (m *MarketplacePlan) GetName() string {
-	if m == nil || m.Name == nil {
-		return ""
-	}
-	return *m.Name
-}
-
-// GetPriceModel returns the PriceModel field if it's non-nil, zero value otherwise.
-func (m *MarketplacePlan) GetPriceModel() string {
-	if m == nil || m.PriceModel == nil {
-		return ""
-	}
-	return *m.PriceModel
-}
-
-// GetUnitName returns the UnitName field if it's non-nil, zero value otherwise.
-func (m *MarketplacePlan) GetUnitName() string {
-	if m == nil || m.UnitName == nil {
-		return ""
-	}
-	return *m.UnitName
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (m *MarketplacePlan) GetURL() string {
-	if m == nil || m.URL == nil {
-		return ""
-	}
-	return *m.URL
-}
-
-// GetYearlyPriceInCents returns the YearlyPriceInCents field if it's non-nil, zero value otherwise.
-func (m *MarketplacePlan) GetYearlyPriceInCents() int {
-	if m == nil || m.YearlyPriceInCents == nil {
-		return 0
-	}
-	return *m.YearlyPriceInCents
-}
-
-// GetEmail returns the Email field if it's non-nil, zero value otherwise.
-func (m *MarketplacePlanAccount) GetEmail() string {
-	if m == nil || m.Email == nil {
-		return ""
-	}
-	return *m.Email
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (m *MarketplacePlanAccount) GetID() int64 {
-	if m == nil || m.ID == nil {
-		return 0
-	}
-	return *m.ID
-}
-
-// GetLogin returns the Login field if it's non-nil, zero value otherwise.
-func (m *MarketplacePlanAccount) GetLogin() string {
-	if m == nil || m.Login == nil {
-		return ""
-	}
-	return *m.Login
-}
-
-// GetMarketplacePurchase returns the MarketplacePurchase field.
-func (m *MarketplacePlanAccount) GetMarketplacePurchase() *MarketplacePurchase {
-	if m == nil {
-		return nil
-	}
-	return m.MarketplacePurchase
-}
-
-// GetOrganizationBillingEmail returns the OrganizationBillingEmail field if it's non-nil, zero value otherwise.
-func (m *MarketplacePlanAccount) GetOrganizationBillingEmail() string {
-	if m == nil || m.OrganizationBillingEmail == nil {
-		return ""
-	}
-	return *m.OrganizationBillingEmail
-}
-
-// GetType returns the Type field if it's non-nil, zero value otherwise.
-func (m *MarketplacePlanAccount) GetType() string {
-	if m == nil || m.Type == nil {
-		return ""
-	}
-	return *m.Type
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (m *MarketplacePlanAccount) GetURL() string {
-	if m == nil || m.URL == nil {
-		return ""
-	}
-	return *m.URL
-}
-
-// GetAccount returns the Account field.
-func (m *MarketplacePurchase) GetAccount() *MarketplacePlanAccount {
-	if m == nil {
-		return nil
-	}
-	return m.Account
-}
-
-// GetBillingCycle returns the BillingCycle field if it's non-nil, zero value otherwise.
-func (m *MarketplacePurchase) GetBillingCycle() string {
-	if m == nil || m.BillingCycle == nil {
-		return ""
-	}
-	return *m.BillingCycle
-}
-
-// GetNextBillingDate returns the NextBillingDate field if it's non-nil, zero value otherwise.
-func (m *MarketplacePurchase) GetNextBillingDate() string {
-	if m == nil || m.NextBillingDate == nil {
-		return ""
-	}
-	return *m.NextBillingDate
-}
-
-// GetPlan returns the Plan field.
-func (m *MarketplacePurchase) GetPlan() *MarketplacePlan {
-	if m == nil {
-		return nil
-	}
-	return m.Plan
-}
-
-// GetUnitCount returns the UnitCount field if it's non-nil, zero value otherwise.
-func (m *MarketplacePurchase) GetUnitCount() int {
-	if m == nil || m.UnitCount == nil {
-		return 0
-	}
-	return *m.UnitCount
-}
-
-// GetAction returns the Action field if it's non-nil, zero value otherwise.
-func (m *MarketplacePurchaseEvent) GetAction() string {
-	if m == nil || m.Action == nil {
-		return ""
-	}
-	return *m.Action
-}
-
-// GetEffectiveDate returns the EffectiveDate field if it's non-nil, zero value otherwise.
-func (m *MarketplacePurchaseEvent) GetEffectiveDate() Timestamp {
-	if m == nil || m.EffectiveDate == nil {
-		return Timestamp{}
-	}
-	return *m.EffectiveDate
-}
-
-// GetInstallation returns the Installation field.
-func (m *MarketplacePurchaseEvent) GetInstallation() *Installation {
-	if m == nil {
-		return nil
-	}
-	return m.Installation
-}
-
-// GetMarketplacePurchase returns the MarketplacePurchase field.
-func (m *MarketplacePurchaseEvent) GetMarketplacePurchase() *MarketplacePurchase {
-	if m == nil {
-		return nil
-	}
-	return m.MarketplacePurchase
-}
-
-// GetPreviousMarketplacePurchase returns the PreviousMarketplacePurchase field.
-func (m *MarketplacePurchaseEvent) GetPreviousMarketplacePurchase() *MarketplacePurchase {
-	if m == nil {
-		return nil
-	}
-	return m.PreviousMarketplacePurchase
-}
-
-// GetSender returns the Sender field.
-func (m *MarketplacePurchaseEvent) GetSender() *User {
-	if m == nil {
-		return nil
-	}
-	return m.Sender
-}
-
-// GetText returns the Text field if it's non-nil, zero value otherwise.
-func (m *Match) GetText() string {
-	if m == nil || m.Text == nil {
-		return ""
-	}
-	return *m.Text
-}
-
-// GetAction returns the Action field if it's non-nil, zero value otherwise.
-func (m *MemberEvent) GetAction() string {
-	if m == nil || m.Action == nil {
-		return ""
-	}
-	return *m.Action
-}
-
-// GetInstallation returns the Installation field.
-func (m *MemberEvent) GetInstallation() *Installation {
-	if m == nil {
-		return nil
-	}
-	return m.Installation
-}
-
-// GetMember returns the Member field.
-func (m *MemberEvent) GetMember() *User {
-	if m == nil {
-		return nil
-	}
-	return m.Member
-}
-
-// GetRepo returns the Repo field.
-func (m *MemberEvent) GetRepo() *Repository {
-	if m == nil {
-		return nil
-	}
-	return m.Repo
-}
-
-// GetSender returns the Sender field.
-func (m *MemberEvent) GetSender() *User {
-	if m == nil {
-		return nil
-	}
-	return m.Sender
-}
-
-// GetOrganization returns the Organization field.
-func (m *Membership) GetOrganization() *Organization {
-	if m == nil {
-		return nil
-	}
-	return m.Organization
-}
-
-// GetOrganizationURL returns the OrganizationURL field if it's non-nil, zero value otherwise.
-func (m *Membership) GetOrganizationURL() string {
-	if m == nil || m.OrganizationURL == nil {
-		return ""
-	}
-	return *m.OrganizationURL
-}
-
-// GetRole returns the Role field if it's non-nil, zero value otherwise.
-func (m *Membership) GetRole() string {
-	if m == nil || m.Role == nil {
-		return ""
-	}
-	return *m.Role
-}
-
-// GetState returns the State field if it's non-nil, zero value otherwise.
-func (m *Membership) GetState() string {
-	if m == nil || m.State == nil {
-		return ""
-	}
-	return *m.State
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (m *Membership) GetURL() string {
-	if m == nil || m.URL == nil {
-		return ""
-	}
-	return *m.URL
-}
-
-// GetUser returns the User field.
-func (m *Membership) GetUser() *User {
-	if m == nil {
-		return nil
-	}
-	return m.User
-}
-
-// GetAction returns the Action field if it's non-nil, zero value otherwise.
-func (m *MembershipEvent) GetAction() string {
-	if m == nil || m.Action == nil {
-		return ""
-	}
-	return *m.Action
-}
-
-// GetInstallation returns the Installation field.
-func (m *MembershipEvent) GetInstallation() *Installation {
-	if m == nil {
-		return nil
-	}
-	return m.Installation
-}
-
-// GetMember returns the Member field.
-func (m *MembershipEvent) GetMember() *User {
-	if m == nil {
-		return nil
-	}
-	return m.Member
-}
-
-// GetOrg returns the Org field.
-func (m *MembershipEvent) GetOrg() *Organization {
-	if m == nil {
-		return nil
-	}
-	return m.Org
-}
-
-// GetScope returns the Scope field if it's non-nil, zero value otherwise.
-func (m *MembershipEvent) GetScope() string {
-	if m == nil || m.Scope == nil {
-		return ""
-	}
-	return *m.Scope
-}
-
-// GetSender returns the Sender field.
-func (m *MembershipEvent) GetSender() *User {
-	if m == nil {
-		return nil
-	}
-	return m.Sender
-}
-
-// GetTeam returns the Team field.
-func (m *MembershipEvent) GetTeam() *Team {
-	if m == nil {
-		return nil
-	}
-	return m.Team
-}
-
-// GetHTMLURL returns the HTMLURL field if it's non-nil, zero value otherwise.
-func (m *Metric) GetHTMLURL() string {
-	if m == nil || m.HTMLURL == nil {
-		return ""
-	}
-	return *m.HTMLURL
-}
-
-// GetKey returns the Key field if it's non-nil, zero value otherwise.
-func (m *Metric) GetKey() string {
-	if m == nil || m.Key == nil {
-		return ""
-	}
-	return *m.Key
-}
-
-// GetName returns the Name field if it's non-nil, zero value otherwise.
-func (m *Metric) GetName() string {
-	if m == nil || m.Name == nil {
-		return ""
-	}
-	return *m.Name
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (m *Metric) GetURL() string {
-	if m == nil || m.URL == nil {
-		return ""
-	}
-	return *m.URL
-}
-
-// GetCreatedAt returns the CreatedAt field if it's non-nil, zero value otherwise.
-func (m *Migration) GetCreatedAt() string {
-	if m == nil || m.CreatedAt == nil {
-		return ""
-	}
-	return *m.CreatedAt
-}
-
-// GetExcludeAttachments returns the ExcludeAttachments field if it's non-nil, zero value otherwise.
-func (m *Migration) GetExcludeAttachments() bool {
-	if m == nil || m.ExcludeAttachments == nil {
-		return false
-	}
-	return *m.ExcludeAttachments
-}
-
-// GetGUID returns the GUID field if it's non-nil, zero value otherwise.
-func (m *Migration) GetGUID() string {
-	if m == nil || m.GUID == nil {
-		return ""
-	}
-	return *m.GUID
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (m *Migration) GetID() int64 {
-	if m == nil || m.ID == nil {
-		return 0
-	}
-	return *m.ID
-}
-
-// GetLockRepositories returns the LockRepositories field if it's non-nil, zero value otherwise.
-func (m *Migration) GetLockRepositories() bool {
-	if m == nil || m.LockRepositories == nil {
-		return false
-	}
-	return *m.LockRepositories
-}
-
-// GetState returns the State field if it's non-nil, zero value otherwise.
-func (m *Migration) GetState() string {
-	if m == nil || m.State == nil {
-		return ""
-	}
-	return *m.State
-}
-
-// GetUpdatedAt returns the UpdatedAt field if it's non-nil, zero value otherwise.
-func (m *Migration) GetUpdatedAt() string {
-	if m == nil || m.UpdatedAt == nil {
-		return ""
-	}
-	return *m.UpdatedAt
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (m *Migration) GetURL() string {
-	if m == nil || m.URL == nil {
-		return ""
-	}
-	return *m.URL
-}
-
-// GetClosedAt returns the ClosedAt field if it's non-nil, zero value otherwise.
-func (m *Milestone) GetClosedAt() time.Time {
-	if m == nil || m.ClosedAt == nil {
-		return time.Time{}
-	}
-	return *m.ClosedAt
-}
-
-// GetClosedIssues returns the ClosedIssues field if it's non-nil, zero value otherwise.
-func (m *Milestone) GetClosedIssues() int {
-	if m == nil || m.ClosedIssues == nil {
-		return 0
-	}
-	return *m.ClosedIssues
-}
-
-// GetCreatedAt returns the CreatedAt field if it's non-nil, zero value otherwise.
-func (m *Milestone) GetCreatedAt() time.Time {
-	if m == nil || m.CreatedAt == nil {
-		return time.Time{}
-	}
-	return *m.CreatedAt
-}
-
-// GetCreator returns the Creator field.
-func (m *Milestone) GetCreator() *User {
-	if m == nil {
-		return nil
-	}
-	return m.Creator
-}
-
-// GetDescription returns the Description field if it's non-nil, zero value otherwise.
-func (m *Milestone) GetDescription() string {
-	if m == nil || m.Description == nil {
-		return ""
-	}
-	return *m.Description
-}
-
-// GetDueOn returns the DueOn field if it's non-nil, zero value otherwise.
-func (m *Milestone) GetDueOn() time.Time {
-	if m == nil || m.DueOn == nil {
-		return time.Time{}
-	}
-	return *m.DueOn
-}
-
-// GetHTMLURL returns the HTMLURL field if it's non-nil, zero value otherwise.
-func (m *Milestone) GetHTMLURL() string {
-	if m == nil || m.HTMLURL == nil {
-		return ""
-	}
-	return *m.HTMLURL
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (m *Milestone) GetID() int64 {
-	if m == nil || m.ID == nil {
-		return 0
-	}
-	return *m.ID
-}
-
-// GetLabelsURL returns the LabelsURL field if it's non-nil, zero value otherwise.
-func (m *Milestone) GetLabelsURL() string {
-	if m == nil || m.LabelsURL == nil {
-		return ""
-	}
-	return *m.LabelsURL
-}
-
-// GetNodeID returns the NodeID field if it's non-nil, zero value otherwise.
-func (m *Milestone) GetNodeID() string {
-	if m == nil || m.NodeID == nil {
-		return ""
-	}
-	return *m.NodeID
-}
-
-// GetNumber returns the Number field if it's non-nil, zero value otherwise.
-func (m *Milestone) GetNumber() int {
-	if m == nil || m.Number == nil {
-		return 0
-	}
-	return *m.Number
-}
-
-// GetOpenIssues returns the OpenIssues field if it's non-nil, zero value otherwise.
-func (m *Milestone) GetOpenIssues() int {
-	if m == nil || m.OpenIssues == nil {
-		return 0
-	}
-	return *m.OpenIssues
-}
-
-// GetState returns the State field if it's non-nil, zero value otherwise.
-func (m *Milestone) GetState() string {
-	if m == nil || m.State == nil {
-		return ""
-	}
-	return *m.State
-}
-
-// GetTitle returns the Title field if it's non-nil, zero value otherwise.
-func (m *Milestone) GetTitle() string {
-	if m == nil || m.Title == nil {
-		return ""
-	}
-	return *m.Title
-}
-
-// GetUpdatedAt returns the UpdatedAt field if it's non-nil, zero value otherwise.
-func (m *Milestone) GetUpdatedAt() time.Time {
-	if m == nil || m.UpdatedAt == nil {
-		return time.Time{}
-	}
-	return *m.UpdatedAt
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (m *Milestone) GetURL() string {
-	if m == nil || m.URL == nil {
-		return ""
-	}
-	return *m.URL
-}
-
-// GetAction returns the Action field if it's non-nil, zero value otherwise.
-func (m *MilestoneEvent) GetAction() string {
-	if m == nil || m.Action == nil {
-		return ""
-	}
-	return *m.Action
-}
-
-// GetChanges returns the Changes field.
-func (m *MilestoneEvent) GetChanges() *EditChange {
-	if m == nil {
-		return nil
-	}
-	return m.Changes
-}
-
-// GetInstallation returns the Installation field.
-func (m *MilestoneEvent) GetInstallation() *Installation {
-	if m == nil {
-		return nil
-	}
-	return m.Installation
-}
-
-// GetMilestone returns the Milestone field.
-func (m *MilestoneEvent) GetMilestone() *Milestone {
-	if m == nil {
-		return nil
-	}
-	return m.Milestone
-}
-
-// GetOrg returns the Org field.
-func (m *MilestoneEvent) GetOrg() *Organization {
-	if m == nil {
-		return nil
-	}
-	return m.Org
-}
-
-// GetRepo returns the Repo field.
-func (m *MilestoneEvent) GetRepo() *Repository {
-	if m == nil {
-		return nil
-	}
-	return m.Repo
-}
-
-// GetSender returns the Sender field.
-func (m *MilestoneEvent) GetSender() *User {
-	if m == nil {
-		return nil
-	}
-	return m.Sender
-}
-
-// GetClosedMilestones returns the ClosedMilestones field if it's non-nil, zero value otherwise.
-func (m *MilestoneStats) GetClosedMilestones() int {
-	if m == nil || m.ClosedMilestones == nil {
-		return 0
-	}
-	return *m.ClosedMilestones
-}
-
-// GetOpenMilestones returns the OpenMilestones field if it's non-nil, zero value otherwise.
-func (m *MilestoneStats) GetOpenMilestones() int {
-	if m == nil || m.OpenMilestones == nil {
-		return 0
-	}
-	return *m.OpenMilestones
-}
-
-// GetTotalMilestones returns the TotalMilestones field if it's non-nil, zero value otherwise.
-func (m *MilestoneStats) GetTotalMilestones() int {
-	if m == nil || m.TotalMilestones == nil {
-		return 0
-	}
-	return *m.TotalMilestones
-}
-
-// GetBase returns the Base field if it's non-nil, zero value otherwise.
-func (n *NewPullRequest) GetBase() string {
-	if n == nil || n.Base == nil {
-		return ""
-	}
-	return *n.Base
-}
-
-// GetBody returns the Body field if it's non-nil, zero value otherwise.
-func (n *NewPullRequest) GetBody() string {
-	if n == nil || n.Body == nil {
-		return ""
-	}
-	return *n.Body
-}
-
-// GetHead returns the Head field if it's non-nil, zero value otherwise.
-func (n *NewPullRequest) GetHead() string {
-	if n == nil || n.Head == nil {
-		return ""
-	}
-	return *n.Head
-}
-
-// GetIssue returns the Issue field if it's non-nil, zero value otherwise.
-func (n *NewPullRequest) GetIssue() int {
-	if n == nil || n.Issue == nil {
-		return 0
-	}
-	return *n.Issue
-}
-
-// GetMaintainerCanModify returns the MaintainerCanModify field if it's non-nil, zero value otherwise.
-func (n *NewPullRequest) GetMaintainerCanModify() bool {
-	if n == nil || n.MaintainerCanModify == nil {
-		return false
-	}
-	return *n.MaintainerCanModify
-}
-
-// GetTitle returns the Title field if it's non-nil, zero value otherwise.
-func (n *NewPullRequest) GetTitle() string {
-	if n == nil || n.Title == nil {
-		return ""
-	}
-	return *n.Title
-}
-
-// GetDescription returns the Description field if it's non-nil, zero value otherwise.
-func (n *NewTeam) GetDescription() string {
-	if n == nil || n.Description == nil {
-		return ""
-	}
-	return *n.Description
-}
-
-// GetLDAPDN returns the LDAPDN field if it's non-nil, zero value otherwise.
-func (n *NewTeam) GetLDAPDN() string {
-	if n == nil || n.LDAPDN == nil {
-		return ""
-	}
-	return *n.LDAPDN
-}
-
-// GetParentTeamID returns the ParentTeamID field if it's non-nil, zero value otherwise.
-func (n *NewTeam) GetParentTeamID() int64 {
-	if n == nil || n.ParentTeamID == nil {
-		return 0
-	}
-	return *n.ParentTeamID
-}
-
-// GetPermission returns the Permission field if it's non-nil, zero value otherwise.
-func (n *NewTeam) GetPermission() string {
-	if n == nil || n.Permission == nil {
-		return ""
-	}
-	return *n.Permission
-}
-
-// GetPrivacy returns the Privacy field if it's non-nil, zero value otherwise.
-func (n *NewTeam) GetPrivacy() string {
-	if n == nil || n.Privacy == nil {
-		return ""
-	}
-	return *n.Privacy
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (n *Notification) GetID() string {
-	if n == nil || n.ID == nil {
-		return ""
-	}
-	return *n.ID
-}
-
-// GetLastReadAt returns the LastReadAt field if it's non-nil, zero value otherwise.
-func (n *Notification) GetLastReadAt() time.Time {
-	if n == nil || n.LastReadAt == nil {
-		return time.Time{}
-	}
-	return *n.LastReadAt
-}
-
-// GetReason returns the Reason field if it's non-nil, zero value otherwise.
-func (n *Notification) GetReason() string {
-	if n == nil || n.Reason == nil {
-		return ""
-	}
-	return *n.Reason
-}
-
-// GetRepository returns the Repository field.
-func (n *Notification) GetRepository() *Repository {
-	if n == nil {
-		return nil
-	}
-	return n.Repository
-}
-
-// GetSubject returns the Subject field.
-func (n *Notification) GetSubject() *NotificationSubject {
-	if n == nil {
-		return nil
-	}
-	return n.Subject
-}
-
-// GetUnread returns the Unread field if it's non-nil, zero value otherwise.
-func (n *Notification) GetUnread() bool {
-	if n == nil || n.Unread == nil {
-		return false
-	}
-	return *n.Unread
-}
-
-// GetUpdatedAt returns the UpdatedAt field if it's non-nil, zero value otherwise.
-func (n *Notification) GetUpdatedAt() time.Time {
-	if n == nil || n.UpdatedAt == nil {
-		return time.Time{}
-	}
-	return *n.UpdatedAt
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (n *Notification) GetURL() string {
-	if n == nil || n.URL == nil {
-		return ""
-	}
-	return *n.URL
-}
-
-// GetLatestCommentURL returns the LatestCommentURL field if it's non-nil, zero value otherwise.
-func (n *NotificationSubject) GetLatestCommentURL() string {
-	if n == nil || n.LatestCommentURL == nil {
-		return ""
-	}
-	return *n.LatestCommentURL
-}
-
-// GetTitle returns the Title field if it's non-nil, zero value otherwise.
-func (n *NotificationSubject) GetTitle() string {
-	if n == nil || n.Title == nil {
-		return ""
-	}
-	return *n.Title
-}
-
-// GetType returns the Type field if it's non-nil, zero value otherwise.
-func (n *NotificationSubject) GetType() string {
-	if n == nil || n.Type == nil {
-		return ""
-	}
-	return *n.Type
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (n *NotificationSubject) GetURL() string {
-	if n == nil || n.URL == nil {
-		return ""
-	}
-	return *n.URL
-}
-
-// GetAvatarURL returns the AvatarURL field if it's non-nil, zero value otherwise.
-func (o *Organization) GetAvatarURL() string {
-	if o == nil || o.AvatarURL == nil {
-		return ""
-	}
-	return *o.AvatarURL
-}
-
-// GetBillingEmail returns the BillingEmail field if it's non-nil, zero value otherwise.
-func (o *Organization) GetBillingEmail() string {
-	if o == nil || o.BillingEmail == nil {
-		return ""
-	}
-	return *o.BillingEmail
-}
-
-// GetBlog returns the Blog field if it's non-nil, zero value otherwise.
-func (o *Organization) GetBlog() string {
-	if o == nil || o.Blog == nil {
-		return ""
-	}
-	return *o.Blog
-}
-
-// GetCollaborators returns the Collaborators field if it's non-nil, zero value otherwise.
-func (o *Organization) GetCollaborators() int {
-	if o == nil || o.Collaborators == nil {
-		return 0
-	}
-	return *o.Collaborators
-}
-
-// GetCompany returns the Company field if it's non-nil, zero value otherwise.
-func (o *Organization) GetCompany() string {
-	if o == nil || o.Company == nil {
-		return ""
-	}
-	return *o.Company
-}
-
-// GetCreatedAt returns the CreatedAt field if it's non-nil, zero value otherwise.
-func (o *Organization) GetCreatedAt() time.Time {
-	if o == nil || o.CreatedAt == nil {
-		return time.Time{}
-	}
-	return *o.CreatedAt
-}
-
-// GetDescription returns the Description field if it's non-nil, zero value otherwise.
-func (o *Organization) GetDescription() string {
-	if o == nil || o.Description == nil {
-		return ""
-	}
-	return *o.Description
-}
-
-// GetDiskUsage returns the DiskUsage field if it's non-nil, zero value otherwise.
-func (o *Organization) GetDiskUsage() int {
-	if o == nil || o.DiskUsage == nil {
-		return 0
-	}
-	return *o.DiskUsage
-}
-
-// GetEmail returns the Email field if it's non-nil, zero value otherwise.
-func (o *Organization) GetEmail() string {
-	if o == nil || o.Email == nil {
-		return ""
-	}
-	return *o.Email
-}
-
-// GetEventsURL returns the EventsURL field if it's non-nil, zero value otherwise.
-func (o *Organization) GetEventsURL() string {
-	if o == nil || o.EventsURL == nil {
-		return ""
-	}
-	return *o.EventsURL
-}
-
-// GetFollowers returns the Followers field if it's non-nil, zero value otherwise.
-func (o *Organization) GetFollowers() int {
-	if o == nil || o.Followers == nil {
-		return 0
-	}
-	return *o.Followers
-}
-
-// GetFollowing returns the Following field if it's non-nil, zero value otherwise.
-func (o *Organization) GetFollowing() int {
-	if o == nil || o.Following == nil {
-		return 0
-	}
-	return *o.Following
-}
-
-// GetHooksURL returns the HooksURL field if it's non-nil, zero value otherwise.
-func (o *Organization) GetHooksURL() string {
-	if o == nil || o.HooksURL == nil {
-		return ""
-	}
-	return *o.HooksURL
-}
-
-// GetHTMLURL returns the HTMLURL field if it's non-nil, zero value otherwise.
-func (o *Organization) GetHTMLURL() string {
-	if o == nil || o.HTMLURL == nil {
-		return ""
-	}
-	return *o.HTMLURL
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (o *Organization) GetID() int64 {
-	if o == nil || o.ID == nil {
-		return 0
-	}
-	return *o.ID
-}
-
-// GetIssuesURL returns the IssuesURL field if it's non-nil, zero value otherwise.
-func (o *Organization) GetIssuesURL() string {
-	if o == nil || o.IssuesURL == nil {
-		return ""
-	}
-	return *o.IssuesURL
-}
-
-// GetLocation returns the Location field if it's non-nil, zero value otherwise.
-func (o *Organization) GetLocation() string {
-	if o == nil || o.Location == nil {
-		return ""
-	}
-	return *o.Location
-}
-
-// GetLogin returns the Login field if it's non-nil, zero value otherwise.
-func (o *Organization) GetLogin() string {
-	if o == nil || o.Login == nil {
-		return ""
-	}
-	return *o.Login
-}
-
-// GetMembersURL returns the MembersURL field if it's non-nil, zero value otherwise.
-func (o *Organization) GetMembersURL() string {
-	if o == nil || o.MembersURL == nil {
-		return ""
-	}
-	return *o.MembersURL
-}
-
-// GetName returns the Name field if it's non-nil, zero value otherwise.
-func (o *Organization) GetName() string {
-	if o == nil || o.Name == nil {
-		return ""
-	}
-	return *o.Name
-}
-
-// GetNodeID returns the NodeID field if it's non-nil, zero value otherwise.
-func (o *Organization) GetNodeID() string {
-	if o == nil || o.NodeID == nil {
-		return ""
-	}
-	return *o.NodeID
-}
-
-// GetOwnedPrivateRepos returns the OwnedPrivateRepos field if it's non-nil, zero value otherwise.
-func (o *Organization) GetOwnedPrivateRepos() int {
-	if o == nil || o.OwnedPrivateRepos == nil {
-		return 0
-	}
-	return *o.OwnedPrivateRepos
-}
-
-// GetPlan returns the Plan field.
-func (o *Organization) GetPlan() *Plan {
-	if o == nil {
-		return nil
-	}
-	return o.Plan
-}
-
-// GetPrivateGists returns the PrivateGists field if it's non-nil, zero value otherwise.
-func (o *Organization) GetPrivateGists() int {
-	if o == nil || o.PrivateGists == nil {
-		return 0
-	}
-	return *o.PrivateGists
-}
-
-// GetPublicGists returns the PublicGists field if it's non-nil, zero value otherwise.
-func (o *Organization) GetPublicGists() int {
-	if o == nil || o.PublicGists == nil {
-		return 0
-	}
-	return *o.PublicGists
-}
-
-// GetPublicMembersURL returns the PublicMembersURL field if it's non-nil, zero value otherwise.
-func (o *Organization) GetPublicMembersURL() string {
-	if o == nil || o.PublicMembersURL == nil {
-		return ""
-	}
-	return *o.PublicMembersURL
-}
-
-// GetPublicRepos returns the PublicRepos field if it's non-nil, zero value otherwise.
-func (o *Organization) GetPublicRepos() int {
-	if o == nil || o.PublicRepos == nil {
-		return 0
-	}
-	return *o.PublicRepos
-}
-
-// GetReposURL returns the ReposURL field if it's non-nil, zero value otherwise.
-func (o *Organization) GetReposURL() string {
-	if o == nil || o.ReposURL == nil {
-		return ""
-	}
-	return *o.ReposURL
-}
-
-// GetTotalPrivateRepos returns the TotalPrivateRepos field if it's non-nil, zero value otherwise.
-func (o *Organization) GetTotalPrivateRepos() int {
-	if o == nil || o.TotalPrivateRepos == nil {
-		return 0
-	}
-	return *o.TotalPrivateRepos
-}
-
-// GetType returns the Type field if it's non-nil, zero value otherwise.
-func (o *Organization) GetType() string {
-	if o == nil || o.Type == nil {
-		return ""
-	}
-	return *o.Type
-}
-
-// GetUpdatedAt returns the UpdatedAt field if it's non-nil, zero value otherwise.
-func (o *Organization) GetUpdatedAt() time.Time {
-	if o == nil || o.UpdatedAt == nil {
-		return time.Time{}
-	}
-	return *o.UpdatedAt
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (o *Organization) GetURL() string {
-	if o == nil || o.URL == nil {
-		return ""
-	}
-	return *o.URL
-}
-
-// GetAction returns the Action field if it's non-nil, zero value otherwise.
-func (o *OrganizationEvent) GetAction() string {
-	if o == nil || o.Action == nil {
-		return ""
-	}
-	return *o.Action
-}
-
-// GetInstallation returns the Installation field.
-func (o *OrganizationEvent) GetInstallation() *Installation {
-	if o == nil {
-		return nil
-	}
-	return o.Installation
-}
-
-// GetInvitation returns the Invitation field.
-func (o *OrganizationEvent) GetInvitation() *Invitation {
-	if o == nil {
-		return nil
-	}
-	return o.Invitation
-}
-
-// GetMembership returns the Membership field.
-func (o *OrganizationEvent) GetMembership() *Membership {
-	if o == nil {
-		return nil
-	}
-	return o.Membership
-}
-
-// GetOrganization returns the Organization field.
-func (o *OrganizationEvent) GetOrganization() *Organization {
-	if o == nil {
-		return nil
-	}
-	return o.Organization
-}
-
-// GetSender returns the Sender field.
-func (o *OrganizationEvent) GetSender() *User {
-	if o == nil {
-		return nil
-	}
-	return o.Sender
-}
-
-// GetAction returns the Action field if it's non-nil, zero value otherwise.
-func (o *OrgBlockEvent) GetAction() string {
-	if o == nil || o.Action == nil {
-		return ""
-	}
-	return *o.Action
-}
-
-// GetBlockedUser returns the BlockedUser field.
-func (o *OrgBlockEvent) GetBlockedUser() *User {
-	if o == nil {
-		return nil
-	}
-	return o.BlockedUser
-}
-
-// GetInstallation returns the Installation field.
-func (o *OrgBlockEvent) GetInstallation() *Installation {
-	if o == nil {
-		return nil
-	}
-	return o.Installation
-}
-
-// GetOrganization returns the Organization field.
-func (o *OrgBlockEvent) GetOrganization() *Organization {
-	if o == nil {
-		return nil
-	}
-	return o.Organization
-}
-
-// GetSender returns the Sender field.
-func (o *OrgBlockEvent) GetSender() *User {
-	if o == nil {
-		return nil
-	}
-	return o.Sender
-}
-
-// GetDisabledOrgs returns the DisabledOrgs field if it's non-nil, zero value otherwise.
-func (o *OrgStats) GetDisabledOrgs() int {
-	if o == nil || o.DisabledOrgs == nil {
-		return 0
-	}
-	return *o.DisabledOrgs
-}
-
-// GetTotalOrgs returns the TotalOrgs field if it's non-nil, zero value otherwise.
-func (o *OrgStats) GetTotalOrgs() int {
-	if o == nil || o.TotalOrgs == nil {
-		return 0
-	}
-	return *o.TotalOrgs
-}
-
-// GetTotalTeamMembers returns the TotalTeamMembers field if it's non-nil, zero value otherwise.
-func (o *OrgStats) GetTotalTeamMembers() int {
-	if o == nil || o.TotalTeamMembers == nil {
-		return 0
-	}
-	return *o.TotalTeamMembers
-}
-
-// GetTotalTeams returns the TotalTeams field if it's non-nil, zero value otherwise.
-func (o *OrgStats) GetTotalTeams() int {
-	if o == nil || o.TotalTeams == nil {
-		return 0
-	}
-	return *o.TotalTeams
-}
-
-// GetAction returns the Action field if it's non-nil, zero value otherwise.
-func (p *Page) GetAction() string {
-	if p == nil || p.Action == nil {
-		return ""
-	}
-	return *p.Action
-}
-
-// GetHTMLURL returns the HTMLURL field if it's non-nil, zero value otherwise.
-func (p *Page) GetHTMLURL() string {
-	if p == nil || p.HTMLURL == nil {
-		return ""
-	}
-	return *p.HTMLURL
-}
-
-// GetPageName returns the PageName field if it's non-nil, zero value otherwise.
-func (p *Page) GetPageName() string {
-	if p == nil || p.PageName == nil {
-		return ""
-	}
-	return *p.PageName
-}
-
-// GetSHA returns the SHA field if it's non-nil, zero value otherwise.
-func (p *Page) GetSHA() string {
-	if p == nil || p.SHA == nil {
-		return ""
-	}
-	return *p.SHA
-}
-
-// GetSummary returns the Summary field if it's non-nil, zero value otherwise.
-func (p *Page) GetSummary() string {
-	if p == nil || p.Summary == nil {
-		return ""
-	}
-	return *p.Summary
-}
-
-// GetTitle returns the Title field if it's non-nil, zero value otherwise.
-func (p *Page) GetTitle() string {
-	if p == nil || p.Title == nil {
-		return ""
-	}
-	return *p.Title
-}
-
-// GetBuild returns the Build field.
-func (p *PageBuildEvent) GetBuild() *PagesBuild {
-	if p == nil {
-		return nil
-	}
-	return p.Build
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (p *PageBuildEvent) GetID() int64 {
-	if p == nil || p.ID == nil {
-		return 0
-	}
-	return *p.ID
-}
-
-// GetInstallation returns the Installation field.
-func (p *PageBuildEvent) GetInstallation() *Installation {
-	if p == nil {
-		return nil
-	}
-	return p.Installation
-}
-
-// GetRepo returns the Repo field.
-func (p *PageBuildEvent) GetRepo() *Repository {
-	if p == nil {
-		return nil
-	}
-	return p.Repo
-}
-
-// GetSender returns the Sender field.
-func (p *PageBuildEvent) GetSender() *User {
-	if p == nil {
-		return nil
-	}
-	return p.Sender
-}
-
-// GetCNAME returns the CNAME field if it's non-nil, zero value otherwise.
-func (p *Pages) GetCNAME() string {
-	if p == nil || p.CNAME == nil {
-		return ""
-	}
-	return *p.CNAME
-}
-
-// GetCustom404 returns the Custom404 field if it's non-nil, zero value otherwise.
-func (p *Pages) GetCustom404() bool {
-	if p == nil || p.Custom404 == nil {
-		return false
-	}
-	return *p.Custom404
-}
-
-// GetHTMLURL returns the HTMLURL field if it's non-nil, zero value otherwise.
-func (p *Pages) GetHTMLURL() string {
-	if p == nil || p.HTMLURL == nil {
-		return ""
-	}
-	return *p.HTMLURL
-}
-
-// GetStatus returns the Status field if it's non-nil, zero value otherwise.
-func (p *Pages) GetStatus() string {
-	if p == nil || p.Status == nil {
-		return ""
-	}
-	return *p.Status
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (p *Pages) GetURL() string {
-	if p == nil || p.URL == nil {
-		return ""
-	}
-	return *p.URL
-}
-
-// GetCommit returns the Commit field if it's non-nil, zero value otherwise.
-func (p *PagesBuild) GetCommit() string {
-	if p == nil || p.Commit == nil {
-		return ""
-	}
-	return *p.Commit
-}
-
-// GetCreatedAt returns the CreatedAt field if it's non-nil, zero value otherwise.
-func (p *PagesBuild) GetCreatedAt() Timestamp {
-	if p == nil || p.CreatedAt == nil {
-		return Timestamp{}
-	}
-	return *p.CreatedAt
-}
-
-// GetDuration returns the Duration field if it's non-nil, zero value otherwise.
-func (p *PagesBuild) GetDuration() int {
-	if p == nil || p.Duration == nil {
-		return 0
-	}
-	return *p.Duration
-}
-
-// GetError returns the Error field.
-func (p *PagesBuild) GetError() *PagesError {
-	if p == nil {
-		return nil
-	}
-	return p.Error
-}
-
-// GetPusher returns the Pusher field.
-func (p *PagesBuild) GetPusher() *User {
-	if p == nil {
-		return nil
-	}
-	return p.Pusher
-}
-
-// GetStatus returns the Status field if it's non-nil, zero value otherwise.
-func (p *PagesBuild) GetStatus() string {
-	if p == nil || p.Status == nil {
-		return ""
-	}
-	return *p.Status
-}
-
-// GetUpdatedAt returns the UpdatedAt field if it's non-nil, zero value otherwise.
-func (p *PagesBuild) GetUpdatedAt() Timestamp {
-	if p == nil || p.UpdatedAt == nil {
-		return Timestamp{}
-	}
-	return *p.UpdatedAt
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (p *PagesBuild) GetURL() string {
-	if p == nil || p.URL == nil {
-		return ""
-	}
-	return *p.URL
-}
-
-// GetMessage returns the Message field if it's non-nil, zero value otherwise.
-func (p *PagesError) GetMessage() string {
-	if p == nil || p.Message == nil {
-		return ""
-	}
-	return *p.Message
-}
-
-// GetTotalPages returns the TotalPages field if it's non-nil, zero value otherwise.
-func (p *PageStats) GetTotalPages() int {
-	if p == nil || p.TotalPages == nil {
-		return 0
-	}
-	return *p.TotalPages
-}
-
-// GetHook returns the Hook field.
-func (p *PingEvent) GetHook() *Hook {
-	if p == nil {
-		return nil
-	}
-	return p.Hook
-}
-
-// GetHookID returns the HookID field if it's non-nil, zero value otherwise.
-func (p *PingEvent) GetHookID() int64 {
-	if p == nil || p.HookID == nil {
-		return 0
-	}
-	return *p.HookID
-}
-
-// GetInstallation returns the Installation field.
-func (p *PingEvent) GetInstallation() *Installation {
-	if p == nil {
-		return nil
-	}
-	return p.Installation
-}
-
-// GetZen returns the Zen field if it's non-nil, zero value otherwise.
-func (p *PingEvent) GetZen() string {
-	if p == nil || p.Zen == nil {
-		return ""
-	}
-	return *p.Zen
-}
-
-// GetCollaborators returns the Collaborators field if it's non-nil, zero value otherwise.
-func (p *Plan) GetCollaborators() int {
-	if p == nil || p.Collaborators == nil {
-		return 0
-	}
-	return *p.Collaborators
-}
-
-// GetName returns the Name field if it's non-nil, zero value otherwise.
-func (p *Plan) GetName() string {
-	if p == nil || p.Name == nil {
-		return ""
-	}
-	return *p.Name
-}
-
-// GetPrivateRepos returns the PrivateRepos field if it's non-nil, zero value otherwise.
-func (p *Plan) GetPrivateRepos() int {
-	if p == nil || p.PrivateRepos == nil {
-		return 0
-	}
-	return *p.PrivateRepos
-}
-
-// GetSpace returns the Space field if it's non-nil, zero value otherwise.
-func (p *Plan) GetSpace() int {
-	if p == nil || p.Space == nil {
-		return 0
-	}
-	return *p.Space
-}
-
-// GetBody returns the Body field if it's non-nil, zero value otherwise.
-func (p *Project) GetBody() string {
-	if p == nil || p.Body == nil {
-		return ""
-	}
-	return *p.Body
-}
-
-// GetCreatedAt returns the CreatedAt field if it's non-nil, zero value otherwise.
-func (p *Project) GetCreatedAt() Timestamp {
-	if p == nil || p.CreatedAt == nil {
-		return Timestamp{}
-	}
-	return *p.CreatedAt
-}
-
-// GetCreator returns the Creator field.
-func (p *Project) GetCreator() *User {
-	if p == nil {
-		return nil
-	}
-	return p.Creator
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (p *Project) GetID() int64 {
-	if p == nil || p.ID == nil {
-		return 0
-	}
-	return *p.ID
-}
-
-// GetName returns the Name field if it's non-nil, zero value otherwise.
-func (p *Project) GetName() string {
-	if p == nil || p.Name == nil {
-		return ""
-	}
-	return *p.Name
-}
-
-// GetNumber returns the Number field if it's non-nil, zero value otherwise.
-func (p *Project) GetNumber() int {
-	if p == nil || p.Number == nil {
-		return 0
-	}
-	return *p.Number
-}
-
-// GetOwnerURL returns the OwnerURL field if it's non-nil, zero value otherwise.
-func (p *Project) GetOwnerURL() string {
-	if p == nil || p.OwnerURL == nil {
-		return ""
-	}
-	return *p.OwnerURL
-}
-
-// GetUpdatedAt returns the UpdatedAt field if it's non-nil, zero value otherwise.
-func (p *Project) GetUpdatedAt() Timestamp {
-	if p == nil || p.UpdatedAt == nil {
-		return Timestamp{}
-	}
-	return *p.UpdatedAt
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (p *Project) GetURL() string {
-	if p == nil || p.URL == nil {
-		return ""
-	}
-	return *p.URL
-}
-
-// GetColumnID returns the ColumnID field if it's non-nil, zero value otherwise.
-func (p *ProjectCard) GetColumnID() int64 {
-	if p == nil || p.ColumnID == nil {
-		return 0
-	}
-	return *p.ColumnID
-}
-
-// GetColumnURL returns the ColumnURL field if it's non-nil, zero value otherwise.
-func (p *ProjectCard) GetColumnURL() string {
-	if p == nil || p.ColumnURL == nil {
-		return ""
-	}
-	return *p.ColumnURL
-}
-
-// GetContentURL returns the ContentURL field if it's non-nil, zero value otherwise.
-func (p *ProjectCard) GetContentURL() string {
-	if p == nil || p.ContentURL == nil {
-		return ""
-	}
-	return *p.ContentURL
-}
-
-// GetCreatedAt returns the CreatedAt field if it's non-nil, zero value otherwise.
-func (p *ProjectCard) GetCreatedAt() Timestamp {
-	if p == nil || p.CreatedAt == nil {
-		return Timestamp{}
-	}
-	return *p.CreatedAt
-}
-
-// GetCreator returns the Creator field.
-func (p *ProjectCard) GetCreator() *User {
-	if p == nil {
-		return nil
-	}
-	return p.Creator
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (p *ProjectCard) GetID() int64 {
-	if p == nil || p.ID == nil {
-		return 0
-	}
-	return *p.ID
-}
-
-// GetNote returns the Note field if it's non-nil, zero value otherwise.
-func (p *ProjectCard) GetNote() string {
-	if p == nil || p.Note == nil {
-		return ""
-	}
-	return *p.Note
-}
-
-// GetUpdatedAt returns the UpdatedAt field if it's non-nil, zero value otherwise.
-func (p *ProjectCard) GetUpdatedAt() Timestamp {
-	if p == nil || p.UpdatedAt == nil {
-		return Timestamp{}
-	}
-	return *p.UpdatedAt
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (p *ProjectCard) GetURL() string {
-	if p == nil || p.URL == nil {
-		return ""
-	}
-	return *p.URL
-}
-
-// GetAction returns the Action field if it's non-nil, zero value otherwise.
-func (p *ProjectCardEvent) GetAction() string {
-	if p == nil || p.Action == nil {
-		return ""
-	}
-	return *p.Action
-}
-
-// GetAfterID returns the AfterID field if it's non-nil, zero value otherwise.
-func (p *ProjectCardEvent) GetAfterID() int64 {
-	if p == nil || p.AfterID == nil {
-		return 0
-	}
-	return *p.AfterID
-}
-
-// GetChanges returns the Changes field.
-func (p *ProjectCardEvent) GetChanges() *ProjectCardChange {
-	if p == nil {
-		return nil
-	}
-	return p.Changes
-}
-
-// GetInstallation returns the Installation field.
-func (p *ProjectCardEvent) GetInstallation() *Installation {
-	if p == nil {
-		return nil
-	}
-	return p.Installation
-}
-
-// GetOrg returns the Org field.
-func (p *ProjectCardEvent) GetOrg() *Organization {
-	if p == nil {
-		return nil
-	}
-	return p.Org
-}
-
-// GetProjectCard returns the ProjectCard field.
-func (p *ProjectCardEvent) GetProjectCard() *ProjectCard {
-	if p == nil {
-		return nil
-	}
-	return p.ProjectCard
-}
-
-// GetRepo returns the Repo field.
-func (p *ProjectCardEvent) GetRepo() *Repository {
-	if p == nil {
-		return nil
-	}
-	return p.Repo
-}
-
-// GetSender returns the Sender field.
-func (p *ProjectCardEvent) GetSender() *User {
-	if p == nil {
-		return nil
-	}
-	return p.Sender
-}
-
-// GetCreatedAt returns the CreatedAt field if it's non-nil, zero value otherwise.
-func (p *ProjectColumn) GetCreatedAt() Timestamp {
-	if p == nil || p.CreatedAt == nil {
-		return Timestamp{}
-	}
-	return *p.CreatedAt
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (p *ProjectColumn) GetID() int64 {
-	if p == nil || p.ID == nil {
-		return 0
-	}
-	return *p.ID
-}
-
-// GetName returns the Name field if it's non-nil, zero value otherwise.
-func (p *ProjectColumn) GetName() string {
-	if p == nil || p.Name == nil {
-		return ""
-	}
-	return *p.Name
-}
-
-// GetProjectURL returns the ProjectURL field if it's non-nil, zero value otherwise.
-func (p *ProjectColumn) GetProjectURL() string {
-	if p == nil || p.ProjectURL == nil {
-		return ""
-	}
-	return *p.ProjectURL
-}
-
-// GetUpdatedAt returns the UpdatedAt field if it's non-nil, zero value otherwise.
-func (p *ProjectColumn) GetUpdatedAt() Timestamp {
-	if p == nil || p.UpdatedAt == nil {
-		return Timestamp{}
-	}
-	return *p.UpdatedAt
-}
-
-// GetAction returns the Action field if it's non-nil, zero value otherwise.
-func (p *ProjectColumnEvent) GetAction() string {
-	if p == nil || p.Action == nil {
-		return ""
-	}
-	return *p.Action
-}
-
-// GetAfterID returns the AfterID field if it's non-nil, zero value otherwise.
-func (p *ProjectColumnEvent) GetAfterID() int64 {
-	if p == nil || p.AfterID == nil {
-		return 0
-	}
-	return *p.AfterID
-}
-
-// GetChanges returns the Changes field.
-func (p *ProjectColumnEvent) GetChanges() *ProjectColumnChange {
-	if p == nil {
-		return nil
-	}
-	return p.Changes
-}
-
-// GetInstallation returns the Installation field.
-func (p *ProjectColumnEvent) GetInstallation() *Installation {
-	if p == nil {
-		return nil
-	}
-	return p.Installation
-}
-
-// GetOrg returns the Org field.
-func (p *ProjectColumnEvent) GetOrg() *Organization {
-	if p == nil {
-		return nil
-	}
-	return p.Org
-}
-
-// GetProjectColumn returns the ProjectColumn field.
-func (p *ProjectColumnEvent) GetProjectColumn() *ProjectColumn {
-	if p == nil {
-		return nil
-	}
-	return p.ProjectColumn
-}
-
-// GetRepo returns the Repo field.
-func (p *ProjectColumnEvent) GetRepo() *Repository {
-	if p == nil {
-		return nil
-	}
-	return p.Repo
-}
-
-// GetSender returns the Sender field.
-func (p *ProjectColumnEvent) GetSender() *User {
-	if p == nil {
-		return nil
-	}
-	return p.Sender
-}
-
-// GetAction returns the Action field if it's non-nil, zero value otherwise.
-func (p *ProjectEvent) GetAction() string {
-	if p == nil || p.Action == nil {
-		return ""
-	}
-	return *p.Action
-}
-
-// GetChanges returns the Changes field.
-func (p *ProjectEvent) GetChanges() *ProjectChange {
-	if p == nil {
-		return nil
-	}
-	return p.Changes
-}
-
-// GetInstallation returns the Installation field.
-func (p *ProjectEvent) GetInstallation() *Installation {
-	if p == nil {
-		return nil
-	}
-	return p.Installation
-}
-
-// GetOrg returns the Org field.
-func (p *ProjectEvent) GetOrg() *Organization {
-	if p == nil {
-		return nil
-	}
-	return p.Org
-}
-
-// GetProject returns the Project field.
-func (p *ProjectEvent) GetProject() *Project {
-	if p == nil {
-		return nil
-	}
-	return p.Project
-}
-
-// GetRepo returns the Repo field.
-func (p *ProjectEvent) GetRepo() *Repository {
-	if p == nil {
-		return nil
-	}
-	return p.Repo
-}
-
-// GetSender returns the Sender field.
-func (p *ProjectEvent) GetSender() *User {
-	if p == nil {
-		return nil
-	}
-	return p.Sender
-}
-
-// GetEnforceAdmins returns the EnforceAdmins field.
-func (p *Protection) GetEnforceAdmins() *AdminEnforcement {
-	if p == nil {
-		return nil
-	}
-	return p.EnforceAdmins
-}
-
-// GetRequiredPullRequestReviews returns the RequiredPullRequestReviews field.
-func (p *Protection) GetRequiredPullRequestReviews() *PullRequestReviewsEnforcement {
-	if p == nil {
-		return nil
-	}
-	return p.RequiredPullRequestReviews
-}
-
-// GetRequiredStatusChecks returns the RequiredStatusChecks field.
-func (p *Protection) GetRequiredStatusChecks() *RequiredStatusChecks {
-	if p == nil {
-		return nil
-	}
-	return p.RequiredStatusChecks
-}
-
-// GetRestrictions returns the Restrictions field.
-func (p *Protection) GetRestrictions() *BranchRestrictions {
-	if p == nil {
-		return nil
-	}
-	return p.Restrictions
-}
-
-// GetRequiredPullRequestReviews returns the RequiredPullRequestReviews field.
-func (p *ProtectionRequest) GetRequiredPullRequestReviews() *PullRequestReviewsEnforcementRequest {
-	if p == nil {
-		return nil
-	}
-	return p.RequiredPullRequestReviews
-}
-
-// GetRequiredStatusChecks returns the RequiredStatusChecks field.
-func (p *ProtectionRequest) GetRequiredStatusChecks() *RequiredStatusChecks {
-	if p == nil {
-		return nil
-	}
-	return p.RequiredStatusChecks
-}
-
-// GetRestrictions returns the Restrictions field.
-func (p *ProtectionRequest) GetRestrictions() *BranchRestrictionsRequest {
-	if p == nil {
-		return nil
-	}
-	return p.Restrictions
-}
-
-// GetInstallation returns the Installation field.
-func (p *PublicEvent) GetInstallation() *Installation {
-	if p == nil {
-		return nil
-	}
-	return p.Installation
-}
-
-// GetRepo returns the Repo field.
-func (p *PublicEvent) GetRepo() *Repository {
-	if p == nil {
-		return nil
-	}
-	return p.Repo
-}
-
-// GetSender returns the Sender field.
-func (p *PublicEvent) GetSender() *User {
-	if p == nil {
-		return nil
-	}
-	return p.Sender
-}
-
-// GetAdditions returns the Additions field if it's non-nil, zero value otherwise.
-func (p *PullRequest) GetAdditions() int {
-	if p == nil || p.Additions == nil {
-		return 0
-	}
-	return *p.Additions
-}
-
-// GetAssignee returns the Assignee field.
-func (p *PullRequest) GetAssignee() *User {
-	if p == nil {
-		return nil
-	}
-	return p.Assignee
-}
-
-// GetAuthorAssociation returns the AuthorAssociation field if it's non-nil, zero value otherwise.
-func (p *PullRequest) GetAuthorAssociation() string {
-	if p == nil || p.AuthorAssociation == nil {
-		return ""
-	}
-	return *p.AuthorAssociation
-}
-
-// GetBase returns the Base field.
-func (p *PullRequest) GetBase() *PullRequestBranch {
-	if p == nil {
-		return nil
-	}
-	return p.Base
-}
-
-// GetBody returns the Body field if it's non-nil, zero value otherwise.
-func (p *PullRequest) GetBody() string {
-	if p == nil || p.Body == nil {
-		return ""
-	}
-	return *p.Body
-}
-
-// GetChangedFiles returns the ChangedFiles field if it's non-nil, zero value otherwise.
-func (p *PullRequest) GetChangedFiles() int {
-	if p == nil || p.ChangedFiles == nil {
-		return 0
-	}
-	return *p.ChangedFiles
-}
-
-// GetClosedAt returns the ClosedAt field if it's non-nil, zero value otherwise.
-func (p *PullRequest) GetClosedAt() time.Time {
-	if p == nil || p.ClosedAt == nil {
-		return time.Time{}
-	}
-	return *p.ClosedAt
-}
-
-// GetComments returns the Comments field if it's non-nil, zero value otherwise.
-func (p *PullRequest) GetComments() int {
-	if p == nil || p.Comments == nil {
-		return 0
-	}
-	return *p.Comments
-}
-
-// GetCommits returns the Commits field if it's non-nil, zero value otherwise.
-func (p *PullRequest) GetCommits() int {
-	if p == nil || p.Commits == nil {
-		return 0
-	}
-	return *p.Commits
-}
-
-// GetCreatedAt returns the CreatedAt field if it's non-nil, zero value otherwise.
-func (p *PullRequest) GetCreatedAt() time.Time {
-	if p == nil || p.CreatedAt == nil {
-		return time.Time{}
-	}
-	return *p.CreatedAt
-}
-
-// GetDeletions returns the Deletions field if it's non-nil, zero value otherwise.
-func (p *PullRequest) GetDeletions() int {
-	if p == nil || p.Deletions == nil {
-		return 0
-	}
-	return *p.Deletions
-}
-
-// GetDiffURL returns the DiffURL field if it's non-nil, zero value otherwise.
-func (p *PullRequest) GetDiffURL() string {
-	if p == nil || p.DiffURL == nil {
-		return ""
-	}
-	return *p.DiffURL
-}
-
-// GetHead returns the Head field.
-func (p *PullRequest) GetHead() *PullRequestBranch {
-	if p == nil {
-		return nil
-	}
-	return p.Head
-}
-
-// GetHTMLURL returns the HTMLURL field if it's non-nil, zero value otherwise.
-func (p *PullRequest) GetHTMLURL() string {
-	if p == nil || p.HTMLURL == nil {
-		return ""
-	}
-	return *p.HTMLURL
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (p *PullRequest) GetID() int64 {
-	if p == nil || p.ID == nil {
-		return 0
-	}
-	return *p.ID
-}
-
-// GetIssueURL returns the IssueURL field if it's non-nil, zero value otherwise.
-func (p *PullRequest) GetIssueURL() string {
-	if p == nil || p.IssueURL == nil {
-		return ""
-	}
-	return *p.IssueURL
-}
-
-// GetMaintainerCanModify returns the MaintainerCanModify field if it's non-nil, zero value otherwise.
-func (p *PullRequest) GetMaintainerCanModify() bool {
-	if p == nil || p.MaintainerCanModify == nil {
-		return false
-	}
-	return *p.MaintainerCanModify
-}
-
-// GetMergeable returns the Mergeable field if it's non-nil, zero value otherwise.
-func (p *PullRequest) GetMergeable() bool {
-	if p == nil || p.Mergeable == nil {
-		return false
-	}
-	return *p.Mergeable
-}
-
-// GetMergeableState returns the MergeableState field if it's non-nil, zero value otherwise.
-func (p *PullRequest) GetMergeableState() string {
-	if p == nil || p.MergeableState == nil {
-		return ""
-	}
-	return *p.MergeableState
-}
-
-// GetMergeCommitSHA returns the MergeCommitSHA field if it's non-nil, zero value otherwise.
-func (p *PullRequest) GetMergeCommitSHA() string {
-	if p == nil || p.MergeCommitSHA == nil {
-		return ""
-	}
-	return *p.MergeCommitSHA
-}
-
-// GetMerged returns the Merged field if it's non-nil, zero value otherwise.
-func (p *PullRequest) GetMerged() bool {
-	if p == nil || p.Merged == nil {
-		return false
-	}
-	return *p.Merged
-}
-
-// GetMergedAt returns the MergedAt field if it's non-nil, zero value otherwise.
-func (p *PullRequest) GetMergedAt() time.Time {
-	if p == nil || p.MergedAt == nil {
-		return time.Time{}
-	}
-	return *p.MergedAt
-}
-
-// GetMergedBy returns the MergedBy field.
-func (p *PullRequest) GetMergedBy() *User {
-	if p == nil {
-		return nil
-	}
-	return p.MergedBy
-}
-
-// GetMilestone returns the Milestone field.
-func (p *PullRequest) GetMilestone() *Milestone {
-	if p == nil {
-		return nil
-	}
-	return p.Milestone
-}
-
-// GetNodeID returns the NodeID field if it's non-nil, zero value otherwise.
-func (p *PullRequest) GetNodeID() string {
-	if p == nil || p.NodeID == nil {
-		return ""
-	}
-	return *p.NodeID
-}
-
-// GetNumber returns the Number field if it's non-nil, zero value otherwise.
-func (p *PullRequest) GetNumber() int {
-	if p == nil || p.Number == nil {
-		return 0
-	}
-	return *p.Number
-}
-
-// GetPatchURL returns the PatchURL field if it's non-nil, zero value otherwise.
-func (p *PullRequest) GetPatchURL() string {
-	if p == nil || p.PatchURL == nil {
-		return ""
-	}
-	return *p.PatchURL
-}
-
-// GetReviewCommentsURL returns the ReviewCommentsURL field if it's non-nil, zero value otherwise.
-func (p *PullRequest) GetReviewCommentsURL() string {
-	if p == nil || p.ReviewCommentsURL == nil {
-		return ""
-	}
-	return *p.ReviewCommentsURL
-}
-
-// GetReviewCommentURL returns the ReviewCommentURL field if it's non-nil, zero value otherwise.
-func (p *PullRequest) GetReviewCommentURL() string {
-	if p == nil || p.ReviewCommentURL == nil {
-		return ""
-	}
-	return *p.ReviewCommentURL
-}
-
-// GetState returns the State field if it's non-nil, zero value otherwise.
-func (p *PullRequest) GetState() string {
-	if p == nil || p.State == nil {
-		return ""
-	}
-	return *p.State
-}
-
-// GetStatusesURL returns the StatusesURL field if it's non-nil, zero value otherwise.
-func (p *PullRequest) GetStatusesURL() string {
-	if p == nil || p.StatusesURL == nil {
-		return ""
-	}
-	return *p.StatusesURL
-}
-
-// GetTitle returns the Title field if it's non-nil, zero value otherwise.
-func (p *PullRequest) GetTitle() string {
-	if p == nil || p.Title == nil {
-		return ""
-	}
-	return *p.Title
-}
-
-// GetUpdatedAt returns the UpdatedAt field if it's non-nil, zero value otherwise.
-func (p *PullRequest) GetUpdatedAt() time.Time {
-	if p == nil || p.UpdatedAt == nil {
-		return time.Time{}
-	}
-	return *p.UpdatedAt
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (p *PullRequest) GetURL() string {
-	if p == nil || p.URL == nil {
-		return ""
-	}
-	return *p.URL
-}
-
-// GetUser returns the User field.
-func (p *PullRequest) GetUser() *User {
-	if p == nil {
-		return nil
-	}
-	return p.User
-}
-
-// GetLabel returns the Label field if it's non-nil, zero value otherwise.
-func (p *PullRequestBranch) GetLabel() string {
-	if p == nil || p.Label == nil {
-		return ""
-	}
-	return *p.Label
-}
-
-// GetRef returns the Ref field if it's non-nil, zero value otherwise.
-func (p *PullRequestBranch) GetRef() string {
-	if p == nil || p.Ref == nil {
-		return ""
-	}
-	return *p.Ref
-}
-
-// GetRepo returns the Repo field.
-func (p *PullRequestBranch) GetRepo() *Repository {
-	if p == nil {
-		return nil
-	}
-	return p.Repo
-}
-
-// GetSHA returns the SHA field if it's non-nil, zero value otherwise.
-func (p *PullRequestBranch) GetSHA() string {
-	if p == nil || p.SHA == nil {
-		return ""
-	}
-	return *p.SHA
-}
-
-// GetUser returns the User field.
-func (p *PullRequestBranch) GetUser() *User {
-	if p == nil {
-		return nil
-	}
-	return p.User
-}
-
-// GetBody returns the Body field if it's non-nil, zero value otherwise.
-func (p *PullRequestComment) GetBody() string {
-	if p == nil || p.Body == nil {
-		return ""
-	}
-	return *p.Body
-}
-
-// GetCommitID returns the CommitID field if it's non-nil, zero value otherwise.
-func (p *PullRequestComment) GetCommitID() string {
-	if p == nil || p.CommitID == nil {
-		return ""
-	}
-	return *p.CommitID
-}
-
-// GetCreatedAt returns the CreatedAt field if it's non-nil, zero value otherwise.
-func (p *PullRequestComment) GetCreatedAt() time.Time {
-	if p == nil || p.CreatedAt == nil {
-		return time.Time{}
-	}
-	return *p.CreatedAt
-}
-
-// GetDiffHunk returns the DiffHunk field if it's non-nil, zero value otherwise.
-func (p *PullRequestComment) GetDiffHunk() string {
-	if p == nil || p.DiffHunk == nil {
-		return ""
-	}
-	return *p.DiffHunk
-}
-
-// GetHTMLURL returns the HTMLURL field if it's non-nil, zero value otherwise.
-func (p *PullRequestComment) GetHTMLURL() string {
-	if p == nil || p.HTMLURL == nil {
-		return ""
-	}
-	return *p.HTMLURL
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (p *PullRequestComment) GetID() int64 {
-	if p == nil || p.ID == nil {
-		return 0
-	}
-	return *p.ID
-}
-
-// GetInReplyTo returns the InReplyTo field if it's non-nil, zero value otherwise.
-func (p *PullRequestComment) GetInReplyTo() int64 {
-	if p == nil || p.InReplyTo == nil {
-		return 0
-	}
-	return *p.InReplyTo
-}
-
-// GetOriginalCommitID returns the OriginalCommitID field if it's non-nil, zero value otherwise.
-func (p *PullRequestComment) GetOriginalCommitID() string {
-	if p == nil || p.OriginalCommitID == nil {
-		return ""
-	}
-	return *p.OriginalCommitID
-}
-
-// GetOriginalPosition returns the OriginalPosition field if it's non-nil, zero value otherwise.
-func (p *PullRequestComment) GetOriginalPosition() int {
-	if p == nil || p.OriginalPosition == nil {
-		return 0
-	}
-	return *p.OriginalPosition
-}
-
-// GetPath returns the Path field if it's non-nil, zero value otherwise.
-func (p *PullRequestComment) GetPath() string {
-	if p == nil || p.Path == nil {
-		return ""
-	}
-	return *p.Path
-}
-
-// GetPosition returns the Position field if it's non-nil, zero value otherwise.
-func (p *PullRequestComment) GetPosition() int {
-	if p == nil || p.Position == nil {
-		return 0
-	}
-	return *p.Position
-}
-
-// GetPullRequestURL returns the PullRequestURL field if it's non-nil, zero value otherwise.
-func (p *PullRequestComment) GetPullRequestURL() string {
-	if p == nil || p.PullRequestURL == nil {
-		return ""
-	}
-	return *p.PullRequestURL
-}
-
-// GetReactions returns the Reactions field.
-func (p *PullRequestComment) GetReactions() *Reactions {
-	if p == nil {
-		return nil
-	}
-	return p.Reactions
-}
-
-// GetUpdatedAt returns the UpdatedAt field if it's non-nil, zero value otherwise.
-func (p *PullRequestComment) GetUpdatedAt() time.Time {
-	if p == nil || p.UpdatedAt == nil {
-		return time.Time{}
-	}
-	return *p.UpdatedAt
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (p *PullRequestComment) GetURL() string {
-	if p == nil || p.URL == nil {
-		return ""
-	}
-	return *p.URL
-}
-
-// GetUser returns the User field.
-func (p *PullRequestComment) GetUser() *User {
-	if p == nil {
-		return nil
-	}
-	return p.User
-}
-
-// GetAction returns the Action field if it's non-nil, zero value otherwise.
-func (p *PullRequestEvent) GetAction() string {
-	if p == nil || p.Action == nil {
-		return ""
-	}
-	return *p.Action
-}
-
-// GetChanges returns the Changes field.
-func (p *PullRequestEvent) GetChanges() *EditChange {
-	if p == nil {
-		return nil
-	}
-	return p.Changes
-}
-
-// GetInstallation returns the Installation field.
-func (p *PullRequestEvent) GetInstallation() *Installation {
-	if p == nil {
-		return nil
-	}
-	return p.Installation
-}
-
-// GetNumber returns the Number field if it's non-nil, zero value otherwise.
-func (p *PullRequestEvent) GetNumber() int {
-	if p == nil || p.Number == nil {
-		return 0
-	}
-	return *p.Number
-}
-
-// GetPullRequest returns the PullRequest field.
-func (p *PullRequestEvent) GetPullRequest() *PullRequest {
-	if p == nil {
-		return nil
-	}
-	return p.PullRequest
-}
-
-// GetRepo returns the Repo field.
-func (p *PullRequestEvent) GetRepo() *Repository {
-	if p == nil {
-		return nil
-	}
-	return p.Repo
-}
-
-// GetSender returns the Sender field.
-func (p *PullRequestEvent) GetSender() *User {
-	if p == nil {
-		return nil
-	}
-	return p.Sender
-}
-
-// GetDiffURL returns the DiffURL field if it's non-nil, zero value otherwise.
-func (p *PullRequestLinks) GetDiffURL() string {
-	if p == nil || p.DiffURL == nil {
-		return ""
-	}
-	return *p.DiffURL
-}
-
-// GetHTMLURL returns the HTMLURL field if it's non-nil, zero value otherwise.
-func (p *PullRequestLinks) GetHTMLURL() string {
-	if p == nil || p.HTMLURL == nil {
-		return ""
-	}
-	return *p.HTMLURL
-}
-
-// GetPatchURL returns the PatchURL field if it's non-nil, zero value otherwise.
-func (p *PullRequestLinks) GetPatchURL() string {
-	if p == nil || p.PatchURL == nil {
-		return ""
-	}
-	return *p.PatchURL
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (p *PullRequestLinks) GetURL() string {
-	if p == nil || p.URL == nil {
-		return ""
-	}
-	return *p.URL
-}
-
-// GetMerged returns the Merged field if it's non-nil, zero value otherwise.
-func (p *PullRequestMergeResult) GetMerged() bool {
-	if p == nil || p.Merged == nil {
-		return false
-	}
-	return *p.Merged
-}
-
-// GetMessage returns the Message field if it's non-nil, zero value otherwise.
-func (p *PullRequestMergeResult) GetMessage() string {
-	if p == nil || p.Message == nil {
-		return ""
-	}
-	return *p.Message
-}
-
-// GetSHA returns the SHA field if it's non-nil, zero value otherwise.
-func (p *PullRequestMergeResult) GetSHA() string {
-	if p == nil || p.SHA == nil {
-		return ""
-	}
-	return *p.SHA
-}
-
-// GetBody returns the Body field if it's non-nil, zero value otherwise.
-func (p *PullRequestReview) GetBody() string {
-	if p == nil || p.Body == nil {
-		return ""
-	}
-	return *p.Body
-}
-
-// GetCommitID returns the CommitID field if it's non-nil, zero value otherwise.
-func (p *PullRequestReview) GetCommitID() string {
-	if p == nil || p.CommitID == nil {
-		return ""
-	}
-	return *p.CommitID
-}
-
-// GetHTMLURL returns the HTMLURL field if it's non-nil, zero value otherwise.
-func (p *PullRequestReview) GetHTMLURL() string {
-	if p == nil || p.HTMLURL == nil {
-		return ""
-	}
-	return *p.HTMLURL
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (p *PullRequestReview) GetID() int64 {
-	if p == nil || p.ID == nil {
-		return 0
-	}
-	return *p.ID
-}
-
-// GetPullRequestURL returns the PullRequestURL field if it's non-nil, zero value otherwise.
-func (p *PullRequestReview) GetPullRequestURL() string {
-	if p == nil || p.PullRequestURL == nil {
-		return ""
-	}
-	return *p.PullRequestURL
-}
-
-// GetState returns the State field if it's non-nil, zero value otherwise.
-func (p *PullRequestReview) GetState() string {
-	if p == nil || p.State == nil {
-		return ""
-	}
-	return *p.State
-}
-
-// GetSubmittedAt returns the SubmittedAt field if it's non-nil, zero value otherwise.
-func (p *PullRequestReview) GetSubmittedAt() time.Time {
-	if p == nil || p.SubmittedAt == nil {
-		return time.Time{}
-	}
-	return *p.SubmittedAt
-}
-
-// GetUser returns the User field.
-func (p *PullRequestReview) GetUser() *User {
-	if p == nil {
-		return nil
-	}
-	return p.User
-}
-
-// GetAction returns the Action field if it's non-nil, zero value otherwise.
-func (p *PullRequestReviewCommentEvent) GetAction() string {
-	if p == nil || p.Action == nil {
-		return ""
-	}
-	return *p.Action
-}
-
-// GetChanges returns the Changes field.
-func (p *PullRequestReviewCommentEvent) GetChanges() *EditChange {
-	if p == nil {
-		return nil
-	}
-	return p.Changes
-}
-
-// GetComment returns the Comment field.
-func (p *PullRequestReviewCommentEvent) GetComment() *PullRequestComment {
-	if p == nil {
-		return nil
-	}
-	return p.Comment
-}
-
-// GetInstallation returns the Installation field.
-func (p *PullRequestReviewCommentEvent) GetInstallation() *Installation {
-	if p == nil {
-		return nil
-	}
-	return p.Installation
-}
-
-// GetPullRequest returns the PullRequest field.
-func (p *PullRequestReviewCommentEvent) GetPullRequest() *PullRequest {
-	if p == nil {
-		return nil
-	}
-	return p.PullRequest
-}
-
-// GetRepo returns the Repo field.
-func (p *PullRequestReviewCommentEvent) GetRepo() *Repository {
-	if p == nil {
-		return nil
-	}
-	return p.Repo
-}
-
-// GetSender returns the Sender field.
-func (p *PullRequestReviewCommentEvent) GetSender() *User {
-	if p == nil {
-		return nil
-	}
-	return p.Sender
-}
-
-// GetMessage returns the Message field if it's non-nil, zero value otherwise.
-func (p *PullRequestReviewDismissalRequest) GetMessage() string {
-	if p == nil || p.Message == nil {
-		return ""
-	}
-	return *p.Message
-}
-
-// GetAction returns the Action field if it's non-nil, zero value otherwise.
-func (p *PullRequestReviewEvent) GetAction() string {
-	if p == nil || p.Action == nil {
-		return ""
-	}
-	return *p.Action
-}
-
-// GetInstallation returns the Installation field.
-func (p *PullRequestReviewEvent) GetInstallation() *Installation {
-	if p == nil {
-		return nil
-	}
-	return p.Installation
-}
-
-// GetOrganization returns the Organization field.
-func (p *PullRequestReviewEvent) GetOrganization() *Organization {
-	if p == nil {
-		return nil
-	}
-	return p.Organization
-}
-
-// GetPullRequest returns the PullRequest field.
-func (p *PullRequestReviewEvent) GetPullRequest() *PullRequest {
-	if p == nil {
-		return nil
-	}
-	return p.PullRequest
-}
-
-// GetRepo returns the Repo field.
-func (p *PullRequestReviewEvent) GetRepo() *Repository {
-	if p == nil {
-		return nil
-	}
-	return p.Repo
-}
-
-// GetReview returns the Review field.
-func (p *PullRequestReviewEvent) GetReview() *PullRequestReview {
-	if p == nil {
-		return nil
-	}
-	return p.Review
-}
-
-// GetSender returns the Sender field.
-func (p *PullRequestReviewEvent) GetSender() *User {
-	if p == nil {
-		return nil
-	}
-	return p.Sender
-}
-
-// GetBody returns the Body field if it's non-nil, zero value otherwise.
-func (p *PullRequestReviewRequest) GetBody() string {
-	if p == nil || p.Body == nil {
-		return ""
-	}
-	return *p.Body
-}
-
-// GetCommitID returns the CommitID field if it's non-nil, zero value otherwise.
-func (p *PullRequestReviewRequest) GetCommitID() string {
-	if p == nil || p.CommitID == nil {
-		return ""
-	}
-	return *p.CommitID
-}
-
-// GetEvent returns the Event field if it's non-nil, zero value otherwise.
-func (p *PullRequestReviewRequest) GetEvent() string {
-	if p == nil || p.Event == nil {
-		return ""
-	}
-	return *p.Event
-}
-
-// GetDismissalRestrictionsRequest returns the DismissalRestrictionsRequest field.
-func (p *PullRequestReviewsEnforcementRequest) GetDismissalRestrictionsRequest() *DismissalRestrictionsRequest {
-	if p == nil {
-		return nil
-	}
-	return p.DismissalRestrictionsRequest
-}
-
-// GetDismissalRestrictionsRequest returns the DismissalRestrictionsRequest field.
-func (p *PullRequestReviewsEnforcementUpdate) GetDismissalRestrictionsRequest() *DismissalRestrictionsRequest {
-	if p == nil {
-		return nil
-	}
-	return p.DismissalRestrictionsRequest
-}
-
-// GetDismissStaleReviews returns the DismissStaleReviews field if it's non-nil, zero value otherwise.
-func (p *PullRequestReviewsEnforcementUpdate) GetDismissStaleReviews() bool {
-	if p == nil || p.DismissStaleReviews == nil {
-		return false
-	}
-	return *p.DismissStaleReviews
-}
-
-// GetMergablePulls returns the MergablePulls field if it's non-nil, zero value otherwise.
-func (p *PullStats) GetMergablePulls() int {
-	if p == nil || p.MergablePulls == nil {
-		return 0
-	}
-	return *p.MergablePulls
-}
-
-// GetMergedPulls returns the MergedPulls field if it's non-nil, zero value otherwise.
-func (p *PullStats) GetMergedPulls() int {
-	if p == nil || p.MergedPulls == nil {
-		return 0
-	}
-	return *p.MergedPulls
-}
-
-// GetTotalPulls returns the TotalPulls field if it's non-nil, zero value otherwise.
-func (p *PullStats) GetTotalPulls() int {
-	if p == nil || p.TotalPulls == nil {
-		return 0
-	}
-	return *p.TotalPulls
-}
-
-// GetUnmergablePulls returns the UnmergablePulls field if it's non-nil, zero value otherwise.
-func (p *PullStats) GetUnmergablePulls() int {
-	if p == nil || p.UnmergablePulls == nil {
-		return 0
-	}
-	return *p.UnmergablePulls
-}
-
-// GetCommits returns the Commits field if it's non-nil, zero value otherwise.
-func (p *PunchCard) GetCommits() int {
-	if p == nil || p.Commits == nil {
-		return 0
-	}
-	return *p.Commits
-}
-
-// GetDay returns the Day field if it's non-nil, zero value otherwise.
-func (p *PunchCard) GetDay() int {
-	if p == nil || p.Day == nil {
-		return 0
-	}
-	return *p.Day
-}
-
-// GetHour returns the Hour field if it's non-nil, zero value otherwise.
-func (p *PunchCard) GetHour() int {
-	if p == nil || p.Hour == nil {
-		return 0
-	}
-	return *p.Hour
-}
-
-// GetAfter returns the After field if it's non-nil, zero value otherwise.
-func (p *PushEvent) GetAfter() string {
-	if p == nil || p.After == nil {
-		return ""
-	}
-	return *p.After
-}
-
-// GetBaseRef returns the BaseRef field if it's non-nil, zero value otherwise.
-func (p *PushEvent) GetBaseRef() string {
-	if p == nil || p.BaseRef == nil {
-		return ""
-	}
-	return *p.BaseRef
-}
-
-// GetBefore returns the Before field if it's non-nil, zero value otherwise.
-func (p *PushEvent) GetBefore() string {
-	if p == nil || p.Before == nil {
-		return ""
-	}
-	return *p.Before
-}
-
-// GetCompare returns the Compare field if it's non-nil, zero value otherwise.
-func (p *PushEvent) GetCompare() string {
-	if p == nil || p.Compare == nil {
-		return ""
-	}
-	return *p.Compare
-}
-
-// GetCreated returns the Created field if it's non-nil, zero value otherwise.
-func (p *PushEvent) GetCreated() bool {
-	if p == nil || p.Created == nil {
-		return false
-	}
-	return *p.Created
-}
-
-// GetDeleted returns the Deleted field if it's non-nil, zero value otherwise.
-func (p *PushEvent) GetDeleted() bool {
-	if p == nil || p.Deleted == nil {
-		return false
-	}
-	return *p.Deleted
-}
-
-// GetDistinctSize returns the DistinctSize field if it's non-nil, zero value otherwise.
-func (p *PushEvent) GetDistinctSize() int {
-	if p == nil || p.DistinctSize == nil {
-		return 0
-	}
-	return *p.DistinctSize
-}
-
-// GetForced returns the Forced field if it's non-nil, zero value otherwise.
-func (p *PushEvent) GetForced() bool {
-	if p == nil || p.Forced == nil {
-		return false
-	}
-	return *p.Forced
-}
-
-// GetHead returns the Head field if it's non-nil, zero value otherwise.
-func (p *PushEvent) GetHead() string {
-	if p == nil || p.Head == nil {
-		return ""
-	}
-	return *p.Head
-}
-
-// GetHeadCommit returns the HeadCommit field.
-func (p *PushEvent) GetHeadCommit() *PushEventCommit {
-	if p == nil {
-		return nil
-	}
-	return p.HeadCommit
-}
-
-// GetInstallation returns the Installation field.
-func (p *PushEvent) GetInstallation() *Installation {
-	if p == nil {
-		return nil
-	}
-	return p.Installation
-}
-
-// GetPusher returns the Pusher field.
-func (p *PushEvent) GetPusher() *User {
-	if p == nil {
-		return nil
-	}
-	return p.Pusher
-}
-
-// GetPushID returns the PushID field if it's non-nil, zero value otherwise.
-func (p *PushEvent) GetPushID() int64 {
-	if p == nil || p.PushID == nil {
-		return 0
-	}
-	return *p.PushID
-}
-
-// GetRef returns the Ref field if it's non-nil, zero value otherwise.
-func (p *PushEvent) GetRef() string {
-	if p == nil || p.Ref == nil {
-		return ""
-	}
-	return *p.Ref
-}
-
-// GetRepo returns the Repo field.
-func (p *PushEvent) GetRepo() *PushEventRepository {
-	if p == nil {
-		return nil
-	}
-	return p.Repo
-}
-
-// GetSender returns the Sender field.
-func (p *PushEvent) GetSender() *User {
-	if p == nil {
-		return nil
-	}
-	return p.Sender
-}
-
-// GetSize returns the Size field if it's non-nil, zero value otherwise.
-func (p *PushEvent) GetSize() int {
-	if p == nil || p.Size == nil {
-		return 0
-	}
-	return *p.Size
-}
-
-// GetAuthor returns the Author field.
-func (p *PushEventCommit) GetAuthor() *CommitAuthor {
-	if p == nil {
-		return nil
-	}
-	return p.Author
-}
-
-// GetCommitter returns the Committer field.
-func (p *PushEventCommit) GetCommitter() *CommitAuthor {
-	if p == nil {
-		return nil
-	}
-	return p.Committer
-}
-
-// GetDistinct returns the Distinct field if it's non-nil, zero value otherwise.
-func (p *PushEventCommit) GetDistinct() bool {
-	if p == nil || p.Distinct == nil {
-		return false
-	}
-	return *p.Distinct
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (p *PushEventCommit) GetID() string {
-	if p == nil || p.ID == nil {
-		return ""
-	}
-	return *p.ID
-}
-
-// GetMessage returns the Message field if it's non-nil, zero value otherwise.
-func (p *PushEventCommit) GetMessage() string {
-	if p == nil || p.Message == nil {
-		return ""
-	}
-	return *p.Message
-}
-
-// GetSHA returns the SHA field if it's non-nil, zero value otherwise.
-func (p *PushEventCommit) GetSHA() string {
-	if p == nil || p.SHA == nil {
-		return ""
-	}
-	return *p.SHA
-}
-
-// GetTimestamp returns the Timestamp field if it's non-nil, zero value otherwise.
-func (p *PushEventCommit) GetTimestamp() Timestamp {
-	if p == nil || p.Timestamp == nil {
-		return Timestamp{}
-	}
-	return *p.Timestamp
-}
-
-// GetTreeID returns the TreeID field if it's non-nil, zero value otherwise.
-func (p *PushEventCommit) GetTreeID() string {
-	if p == nil || p.TreeID == nil {
-		return ""
-	}
-	return *p.TreeID
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (p *PushEventCommit) GetURL() string {
-	if p == nil || p.URL == nil {
-		return ""
-	}
-	return *p.URL
-}
-
-// GetEmail returns the Email field if it's non-nil, zero value otherwise.
-func (p *PushEventRepoOwner) GetEmail() string {
-	if p == nil || p.Email == nil {
-		return ""
-	}
-	return *p.Email
-}
-
-// GetName returns the Name field if it's non-nil, zero value otherwise.
-func (p *PushEventRepoOwner) GetName() string {
-	if p == nil || p.Name == nil {
-		return ""
-	}
-	return *p.Name
-}
-
-// GetArchiveURL returns the ArchiveURL field if it's non-nil, zero value otherwise.
-func (p *PushEventRepository) GetArchiveURL() string {
-	if p == nil || p.ArchiveURL == nil {
-		return ""
-	}
-	return *p.ArchiveURL
-}
-
-// GetCloneURL returns the CloneURL field if it's non-nil, zero value otherwise.
-func (p *PushEventRepository) GetCloneURL() string {
-	if p == nil || p.CloneURL == nil {
-		return ""
-	}
-	return *p.CloneURL
-}
-
-// GetCreatedAt returns the CreatedAt field if it's non-nil, zero value otherwise.
-func (p *PushEventRepository) GetCreatedAt() Timestamp {
-	if p == nil || p.CreatedAt == nil {
-		return Timestamp{}
-	}
-	return *p.CreatedAt
-}
-
-// GetDefaultBranch returns the DefaultBranch field if it's non-nil, zero value otherwise.
-func (p *PushEventRepository) GetDefaultBranch() string {
-	if p == nil || p.DefaultBranch == nil {
-		return ""
-	}
-	return *p.DefaultBranch
-}
-
-// GetDescription returns the Description field if it's non-nil, zero value otherwise.
-func (p *PushEventRepository) GetDescription() string {
-	if p == nil || p.Description == nil {
-		return ""
-	}
-	return *p.Description
-}
-
-// GetFork returns the Fork field if it's non-nil, zero value otherwise.
-func (p *PushEventRepository) GetFork() bool {
-	if p == nil || p.Fork == nil {
-		return false
-	}
-	return *p.Fork
-}
-
-// GetForksCount returns the ForksCount field if it's non-nil, zero value otherwise.
-func (p *PushEventRepository) GetForksCount() int {
-	if p == nil || p.ForksCount == nil {
-		return 0
-	}
-	return *p.ForksCount
-}
-
-// GetFullName returns the FullName field if it's non-nil, zero value otherwise.
-func (p *PushEventRepository) GetFullName() string {
-	if p == nil || p.FullName == nil {
-		return ""
-	}
-	return *p.FullName
-}
-
-// GetGitURL returns the GitURL field if it's non-nil, zero value otherwise.
-func (p *PushEventRepository) GetGitURL() string {
-	if p == nil || p.GitURL == nil {
-		return ""
-	}
-	return *p.GitURL
-}
-
-// GetHasDownloads returns the HasDownloads field if it's non-nil, zero value otherwise.
-func (p *PushEventRepository) GetHasDownloads() bool {
-	if p == nil || p.HasDownloads == nil {
-		return false
-	}
-	return *p.HasDownloads
-}
-
-// GetHasIssues returns the HasIssues field if it's non-nil, zero value otherwise.
-func (p *PushEventRepository) GetHasIssues() bool {
-	if p == nil || p.HasIssues == nil {
-		return false
-	}
-	return *p.HasIssues
-}
-
-// GetHasPages returns the HasPages field if it's non-nil, zero value otherwise.
-func (p *PushEventRepository) GetHasPages() bool {
-	if p == nil || p.HasPages == nil {
-		return false
-	}
-	return *p.HasPages
-}
-
-// GetHasWiki returns the HasWiki field if it's non-nil, zero value otherwise.
-func (p *PushEventRepository) GetHasWiki() bool {
-	if p == nil || p.HasWiki == nil {
-		return false
-	}
-	return *p.HasWiki
-}
-
-// GetHomepage returns the Homepage field if it's non-nil, zero value otherwise.
-func (p *PushEventRepository) GetHomepage() string {
-	if p == nil || p.Homepage == nil {
-		return ""
-	}
-	return *p.Homepage
-}
-
-// GetHTMLURL returns the HTMLURL field if it's non-nil, zero value otherwise.
-func (p *PushEventRepository) GetHTMLURL() string {
-	if p == nil || p.HTMLURL == nil {
-		return ""
-	}
-	return *p.HTMLURL
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (p *PushEventRepository) GetID() int64 {
-	if p == nil || p.ID == nil {
-		return 0
-	}
-	return *p.ID
-}
-
-// GetLanguage returns the Language field if it's non-nil, zero value otherwise.
-func (p *PushEventRepository) GetLanguage() string {
-	if p == nil || p.Language == nil {
-		return ""
-	}
-	return *p.Language
-}
-
-// GetMasterBranch returns the MasterBranch field if it's non-nil, zero value otherwise.
-func (p *PushEventRepository) GetMasterBranch() string {
-	if p == nil || p.MasterBranch == nil {
-		return ""
-	}
-	return *p.MasterBranch
-}
-
-// GetName returns the Name field if it's non-nil, zero value otherwise.
-func (p *PushEventRepository) GetName() string {
-	if p == nil || p.Name == nil {
-		return ""
-	}
-	return *p.Name
-}
-
-// GetOpenIssuesCount returns the OpenIssuesCount field if it's non-nil, zero value otherwise.
-func (p *PushEventRepository) GetOpenIssuesCount() int {
-	if p == nil || p.OpenIssuesCount == nil {
-		return 0
-	}
-	return *p.OpenIssuesCount
-}
-
-// GetOrganization returns the Organization field if it's non-nil, zero value otherwise.
-func (p *PushEventRepository) GetOrganization() string {
-	if p == nil || p.Organization == nil {
-		return ""
-	}
-	return *p.Organization
-}
-
-// GetOwner returns the Owner field.
-func (p *PushEventRepository) GetOwner() *PushEventRepoOwner {
-	if p == nil {
-		return nil
-	}
-	return p.Owner
-}
-
-// GetPrivate returns the Private field if it's non-nil, zero value otherwise.
-func (p *PushEventRepository) GetPrivate() bool {
-	if p == nil || p.Private == nil {
-		return false
-	}
-	return *p.Private
-}
-
-// GetPushedAt returns the PushedAt field if it's non-nil, zero value otherwise.
-func (p *PushEventRepository) GetPushedAt() Timestamp {
-	if p == nil || p.PushedAt == nil {
-		return Timestamp{}
-	}
-	return *p.PushedAt
-}
-
-// GetSize returns the Size field if it's non-nil, zero value otherwise.
-func (p *PushEventRepository) GetSize() int {
-	if p == nil || p.Size == nil {
-		return 0
-	}
-	return *p.Size
-}
-
-// GetSSHURL returns the SSHURL field if it's non-nil, zero value otherwise.
-func (p *PushEventRepository) GetSSHURL() string {
-	if p == nil || p.SSHURL == nil {
-		return ""
-	}
-	return *p.SSHURL
-}
-
-// GetStargazersCount returns the StargazersCount field if it's non-nil, zero value otherwise.
-func (p *PushEventRepository) GetStargazersCount() int {
-	if p == nil || p.StargazersCount == nil {
-		return 0
-	}
-	return *p.StargazersCount
-}
-
-// GetStatusesURL returns the StatusesURL field if it's non-nil, zero value otherwise.
-func (p *PushEventRepository) GetStatusesURL() string {
-	if p == nil || p.StatusesURL == nil {
-		return ""
-	}
-	return *p.StatusesURL
-}
-
-// GetSVNURL returns the SVNURL field if it's non-nil, zero value otherwise.
-func (p *PushEventRepository) GetSVNURL() string {
-	if p == nil || p.SVNURL == nil {
-		return ""
-	}
-	return *p.SVNURL
-}
-
-// GetUpdatedAt returns the UpdatedAt field if it's non-nil, zero value otherwise.
-func (p *PushEventRepository) GetUpdatedAt() Timestamp {
-	if p == nil || p.UpdatedAt == nil {
-		return Timestamp{}
-	}
-	return *p.UpdatedAt
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (p *PushEventRepository) GetURL() string {
-	if p == nil || p.URL == nil {
-		return ""
-	}
-	return *p.URL
-}
-
-// GetWatchersCount returns the WatchersCount field if it's non-nil, zero value otherwise.
-func (p *PushEventRepository) GetWatchersCount() int {
-	if p == nil || p.WatchersCount == nil {
-		return 0
-	}
-	return *p.WatchersCount
-}
-
-// GetCore returns the Core field.
-func (r *RateLimits) GetCore() *Rate {
-	if r == nil {
-		return nil
-	}
-	return r.Core
-}
-
-// GetSearch returns the Search field.
-func (r *RateLimits) GetSearch() *Rate {
-	if r == nil {
-		return nil
-	}
-	return r.Search
-}
-
-// GetContent returns the Content field if it's non-nil, zero value otherwise.
-func (r *Reaction) GetContent() string {
-	if r == nil || r.Content == nil {
-		return ""
-	}
-	return *r.Content
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (r *Reaction) GetID() int64 {
-	if r == nil || r.ID == nil {
-		return 0
-	}
-	return *r.ID
-}
-
-// GetUser returns the User field.
-func (r *Reaction) GetUser() *User {
-	if r == nil {
-		return nil
-	}
-	return r.User
-}
-
-// GetConfused returns the Confused field if it's non-nil, zero value otherwise.
-func (r *Reactions) GetConfused() int {
-	if r == nil || r.Confused == nil {
-		return 0
-	}
-	return *r.Confused
-}
-
-// GetHeart returns the Heart field if it's non-nil, zero value otherwise.
-func (r *Reactions) GetHeart() int {
-	if r == nil || r.Heart == nil {
-		return 0
-	}
-	return *r.Heart
-}
-
-// GetHooray returns the Hooray field if it's non-nil, zero value otherwise.
-func (r *Reactions) GetHooray() int {
-	if r == nil || r.Hooray == nil {
-		return 0
-	}
-	return *r.Hooray
-}
-
-// GetLaugh returns the Laugh field if it's non-nil, zero value otherwise.
-func (r *Reactions) GetLaugh() int {
-	if r == nil || r.Laugh == nil {
-		return 0
-	}
-	return *r.Laugh
-}
-
-// GetMinusOne returns the MinusOne field if it's non-nil, zero value otherwise.
-func (r *Reactions) GetMinusOne() int {
-	if r == nil || r.MinusOne == nil {
-		return 0
-	}
-	return *r.MinusOne
-}
-
-// GetPlusOne returns the PlusOne field if it's non-nil, zero value otherwise.
-func (r *Reactions) GetPlusOne() int {
-	if r == nil || r.PlusOne == nil {
-		return 0
-	}
-	return *r.PlusOne
-}
-
-// GetTotalCount returns the TotalCount field if it's non-nil, zero value otherwise.
-func (r *Reactions) GetTotalCount() int {
-	if r == nil || r.TotalCount == nil {
-		return 0
-	}
-	return *r.TotalCount
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (r *Reactions) GetURL() string {
-	if r == nil || r.URL == nil {
-		return ""
-	}
-	return *r.URL
-}
-
-// GetNodeID returns the NodeID field if it's non-nil, zero value otherwise.
-func (r *Reference) GetNodeID() string {
-	if r == nil || r.NodeID == nil {
-		return ""
-	}
-	return *r.NodeID
-}
-
-// GetObject returns the Object field.
-func (r *Reference) GetObject() *GitObject {
-	if r == nil {
-		return nil
-	}
-	return r.Object
-}
-
-// GetRef returns the Ref field if it's non-nil, zero value otherwise.
-func (r *Reference) GetRef() string {
-	if r == nil || r.Ref == nil {
-		return ""
-	}
-	return *r.Ref
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (r *Reference) GetURL() string {
-	if r == nil || r.URL == nil {
-		return ""
-	}
-	return *r.URL
-}
-
-// GetBrowserDownloadURL returns the BrowserDownloadURL field if it's non-nil, zero value otherwise.
-func (r *ReleaseAsset) GetBrowserDownloadURL() string {
-	if r == nil || r.BrowserDownloadURL == nil {
-		return ""
-	}
-	return *r.BrowserDownloadURL
-}
-
-// GetContentType returns the ContentType field if it's non-nil, zero value otherwise.
-func (r *ReleaseAsset) GetContentType() string {
-	if r == nil || r.ContentType == nil {
-		return ""
-	}
-	return *r.ContentType
-}
-
-// GetCreatedAt returns the CreatedAt field if it's non-nil, zero value otherwise.
-func (r *ReleaseAsset) GetCreatedAt() Timestamp {
-	if r == nil || r.CreatedAt == nil {
-		return Timestamp{}
-	}
-	return *r.CreatedAt
-}
-
-// GetDownloadCount returns the DownloadCount field if it's non-nil, zero value otherwise.
-func (r *ReleaseAsset) GetDownloadCount() int {
-	if r == nil || r.DownloadCount == nil {
-		return 0
-	}
-	return *r.DownloadCount
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (r *ReleaseAsset) GetID() int64 {
-	if r == nil || r.ID == nil {
-		return 0
-	}
-	return *r.ID
-}
-
-// GetLabel returns the Label field if it's non-nil, zero value otherwise.
-func (r *ReleaseAsset) GetLabel() string {
-	if r == nil || r.Label == nil {
-		return ""
-	}
-	return *r.Label
-}
-
-// GetName returns the Name field if it's non-nil, zero value otherwise.
-func (r *ReleaseAsset) GetName() string {
-	if r == nil || r.Name == nil {
-		return ""
-	}
-	return *r.Name
-}
-
-// GetSize returns the Size field if it's non-nil, zero value otherwise.
-func (r *ReleaseAsset) GetSize() int {
-	if r == nil || r.Size == nil {
-		return 0
-	}
-	return *r.Size
-}
-
-// GetState returns the State field if it's non-nil, zero value otherwise.
-func (r *ReleaseAsset) GetState() string {
-	if r == nil || r.State == nil {
-		return ""
-	}
-	return *r.State
-}
-
-// GetUpdatedAt returns the UpdatedAt field if it's non-nil, zero value otherwise.
-func (r *ReleaseAsset) GetUpdatedAt() Timestamp {
-	if r == nil || r.UpdatedAt == nil {
-		return Timestamp{}
-	}
-	return *r.UpdatedAt
-}
-
-// GetUploader returns the Uploader field.
-func (r *ReleaseAsset) GetUploader() *User {
-	if r == nil {
-		return nil
-	}
-	return r.Uploader
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (r *ReleaseAsset) GetURL() string {
-	if r == nil || r.URL == nil {
-		return ""
-	}
-	return *r.URL
-}
-
-// GetAction returns the Action field if it's non-nil, zero value otherwise.
-func (r *ReleaseEvent) GetAction() string {
-	if r == nil || r.Action == nil {
-		return ""
-	}
-	return *r.Action
-}
-
-// GetInstallation returns the Installation field.
-func (r *ReleaseEvent) GetInstallation() *Installation {
-	if r == nil {
-		return nil
-	}
-	return r.Installation
-}
-
-// GetRelease returns the Release field.
-func (r *ReleaseEvent) GetRelease() *RepositoryRelease {
-	if r == nil {
-		return nil
-	}
-	return r.Release
-}
-
-// GetRepo returns the Repo field.
-func (r *ReleaseEvent) GetRepo() *Repository {
-	if r == nil {
-		return nil
-	}
-	return r.Repo
-}
-
-// GetSender returns the Sender field.
-func (r *ReleaseEvent) GetSender() *User {
-	if r == nil {
-		return nil
-	}
-	return r.Sender
-}
-
-// GetFrom returns the From field if it's non-nil, zero value otherwise.
-func (r *Rename) GetFrom() string {
-	if r == nil || r.From == nil {
-		return ""
-	}
-	return *r.From
-}
-
-// GetTo returns the To field if it's non-nil, zero value otherwise.
-func (r *Rename) GetTo() string {
-	if r == nil || r.To == nil {
-		return ""
-	}
-	return *r.To
-}
-
-// GetIncompleteResults returns the IncompleteResults field if it's non-nil, zero value otherwise.
-func (r *RepositoriesSearchResult) GetIncompleteResults() bool {
-	if r == nil || r.IncompleteResults == nil {
-		return false
-	}
-	return *r.IncompleteResults
-}
-
-// GetTotal returns the Total field if it's non-nil, zero value otherwise.
-func (r *RepositoriesSearchResult) GetTotal() int {
-	if r == nil || r.Total == nil {
-		return 0
-	}
-	return *r.Total
-}
-
-// GetAllowMergeCommit returns the AllowMergeCommit field if it's non-nil, zero value otherwise.
-func (r *Repository) GetAllowMergeCommit() bool {
-	if r == nil || r.AllowMergeCommit == nil {
-		return false
-	}
-	return *r.AllowMergeCommit
-}
-
-// GetAllowRebaseMerge returns the AllowRebaseMerge field if it's non-nil, zero value otherwise.
-func (r *Repository) GetAllowRebaseMerge() bool {
-	if r == nil || r.AllowRebaseMerge == nil {
-		return false
-	}
-	return *r.AllowRebaseMerge
-}
-
-// GetAllowSquashMerge returns the AllowSquashMerge field if it's non-nil, zero value otherwise.
-func (r *Repository) GetAllowSquashMerge() bool {
-	if r == nil || r.AllowSquashMerge == nil {
-		return false
-	}
-	return *r.AllowSquashMerge
-}
-
-// GetArchived returns the Archived field if it's non-nil, zero value otherwise.
-func (r *Repository) GetArchived() bool {
-	if r == nil || r.Archived == nil {
-		return false
-	}
-	return *r.Archived
-}
-
-// GetArchiveURL returns the ArchiveURL field if it's non-nil, zero value otherwise.
-func (r *Repository) GetArchiveURL() string {
-	if r == nil || r.ArchiveURL == nil {
-		return ""
-	}
-	return *r.ArchiveURL
-}
-
-// GetAssigneesURL returns the AssigneesURL field if it's non-nil, zero value otherwise.
-func (r *Repository) GetAssigneesURL() string {
-	if r == nil || r.AssigneesURL == nil {
-		return ""
-	}
-	return *r.AssigneesURL
-}
-
-// GetAutoInit returns the AutoInit field if it's non-nil, zero value otherwise.
-func (r *Repository) GetAutoInit() bool {
-	if r == nil || r.AutoInit == nil {
-		return false
-	}
-	return *r.AutoInit
-}
-
-// GetBlobsURL returns the BlobsURL field if it's non-nil, zero value otherwise.
-func (r *Repository) GetBlobsURL() string {
-	if r == nil || r.BlobsURL == nil {
-		return ""
-	}
-	return *r.BlobsURL
-}
-
-// GetBranchesURL returns the BranchesURL field if it's non-nil, zero value otherwise.
-func (r *Repository) GetBranchesURL() string {
-	if r == nil || r.BranchesURL == nil {
-		return ""
-	}
-	return *r.BranchesURL
-}
-
-// GetCloneURL returns the CloneURL field if it's non-nil, zero value otherwise.
-func (r *Repository) GetCloneURL() string {
-	if r == nil || r.CloneURL == nil {
-		return ""
-	}
-	return *r.CloneURL
-}
-
-// GetCodeOfConduct returns the CodeOfConduct field.
-func (r *Repository) GetCodeOfConduct() *CodeOfConduct {
-	if r == nil {
-		return nil
-	}
-	return r.CodeOfConduct
-}
-
-// GetCollaboratorsURL returns the CollaboratorsURL field if it's non-nil, zero value otherwise.
-func (r *Repository) GetCollaboratorsURL() string {
-	if r == nil || r.CollaboratorsURL == nil {
-		return ""
-	}
-	return *r.CollaboratorsURL
-}
-
-// GetCommentsURL returns the CommentsURL field if it's non-nil, zero value otherwise.
-func (r *Repository) GetCommentsURL() string {
-	if r == nil || r.CommentsURL == nil {
-		return ""
-	}
-	return *r.CommentsURL
-}
-
-// GetCommitsURL returns the CommitsURL field if it's non-nil, zero value otherwise.
-func (r *Repository) GetCommitsURL() string {
-	if r == nil || r.CommitsURL == nil {
-		return ""
-	}
-	return *r.CommitsURL
-}
-
-// GetCompareURL returns the CompareURL field if it's non-nil, zero value otherwise.
-func (r *Repository) GetCompareURL() string {
-	if r == nil || r.CompareURL == nil {
-		return ""
-	}
-	return *r.CompareURL
-}
-
-// GetContentsURL returns the ContentsURL field if it's non-nil, zero value otherwise.
-func (r *Repository) GetContentsURL() string {
-	if r == nil || r.ContentsURL == nil {
-		return ""
-	}
-	return *r.ContentsURL
-}
-
-// GetContributorsURL returns the ContributorsURL field if it's non-nil, zero value otherwise.
-func (r *Repository) GetContributorsURL() string {
-	if r == nil || r.ContributorsURL == nil {
-		return ""
-	}
-	return *r.ContributorsURL
-}
-
-// GetCreatedAt returns the CreatedAt field if it's non-nil, zero value otherwise.
-func (r *Repository) GetCreatedAt() Timestamp {
-	if r == nil || r.CreatedAt == nil {
-		return Timestamp{}
-	}
-	return *r.CreatedAt
-}
-
-// GetDefaultBranch returns the DefaultBranch field if it's non-nil, zero value otherwise.
-func (r *Repository) GetDefaultBranch() string {
-	if r == nil || r.DefaultBranch == nil {
-		return ""
-	}
-	return *r.DefaultBranch
-}
-
-// GetDeploymentsURL returns the DeploymentsURL field if it's non-nil, zero value otherwise.
-func (r *Repository) GetDeploymentsURL() string {
-	if r == nil || r.DeploymentsURL == nil {
-		return ""
-	}
-	return *r.DeploymentsURL
-}
-
-// GetDescription returns the Description field if it's non-nil, zero value otherwise.
-func (r *Repository) GetDescription() string {
-	if r == nil || r.Description == nil {
-		return ""
-	}
-	return *r.Description
-}
-
-// GetDownloadsURL returns the DownloadsURL field if it's non-nil, zero value otherwise.
-func (r *Repository) GetDownloadsURL() string {
-	if r == nil || r.DownloadsURL == nil {
-		return ""
-	}
-	return *r.DownloadsURL
-}
-
-// GetEventsURL returns the EventsURL field if it's non-nil, zero value otherwise.
-func (r *Repository) GetEventsURL() string {
-	if r == nil || r.EventsURL == nil {
-		return ""
-	}
-	return *r.EventsURL
-}
-
-// GetFork returns the Fork field if it's non-nil, zero value otherwise.
-func (r *Repository) GetFork() bool {
-	if r == nil || r.Fork == nil {
-		return false
-	}
-	return *r.Fork
-}
-
-// GetForksCount returns the ForksCount field if it's non-nil, zero value otherwise.
-func (r *Repository) GetForksCount() int {
-	if r == nil || r.ForksCount == nil {
-		return 0
-	}
-	return *r.ForksCount
-}
-
-// GetForksURL returns the ForksURL field if it's non-nil, zero value otherwise.
-func (r *Repository) GetForksURL() string {
-	if r == nil || r.ForksURL == nil {
-		return ""
-	}
-	return *r.ForksURL
-}
-
-// GetFullName returns the FullName field if it's non-nil, zero value otherwise.
-func (r *Repository) GetFullName() string {
-	if r == nil || r.FullName == nil {
-		return ""
-	}
-	return *r.FullName
-}
-
-// GetGitCommitsURL returns the GitCommitsURL field if it's non-nil, zero value otherwise.
-func (r *Repository) GetGitCommitsURL() string {
-	if r == nil || r.GitCommitsURL == nil {
-		return ""
-	}
-	return *r.GitCommitsURL
-}
-
-// GetGitignoreTemplate returns the GitignoreTemplate field if it's non-nil, zero value otherwise.
-func (r *Repository) GetGitignoreTemplate() string {
-	if r == nil || r.GitignoreTemplate == nil {
-		return ""
-	}
-	return *r.GitignoreTemplate
-}
-
-// GetGitRefsURL returns the GitRefsURL field if it's non-nil, zero value otherwise.
-func (r *Repository) GetGitRefsURL() string {
-	if r == nil || r.GitRefsURL == nil {
-		return ""
-	}
-	return *r.GitRefsURL
-}
-
-// GetGitTagsURL returns the GitTagsURL field if it's non-nil, zero value otherwise.
-func (r *Repository) GetGitTagsURL() string {
-	if r == nil || r.GitTagsURL == nil {
-		return ""
-	}
-	return *r.GitTagsURL
-}
-
-// GetGitURL returns the GitURL field if it's non-nil, zero value otherwise.
-func (r *Repository) GetGitURL() string {
-	if r == nil || r.GitURL == nil {
-		return ""
-	}
-	return *r.GitURL
-}
-
-// GetHasDownloads returns the HasDownloads field if it's non-nil, zero value otherwise.
-func (r *Repository) GetHasDownloads() bool {
-	if r == nil || r.HasDownloads == nil {
-		return false
-	}
-	return *r.HasDownloads
-}
-
-// GetHasIssues returns the HasIssues field if it's non-nil, zero value otherwise.
-func (r *Repository) GetHasIssues() bool {
-	if r == nil || r.HasIssues == nil {
-		return false
-	}
-	return *r.HasIssues
-}
-
-// GetHasPages returns the HasPages field if it's non-nil, zero value otherwise.
-func (r *Repository) GetHasPages() bool {
-	if r == nil || r.HasPages == nil {
-		return false
-	}
-	return *r.HasPages
-}
-
-// GetHasProjects returns the HasProjects field if it's non-nil, zero value otherwise.
-func (r *Repository) GetHasProjects() bool {
-	if r == nil || r.HasProjects == nil {
-		return false
-	}
-	return *r.HasProjects
-}
-
-// GetHasWiki returns the HasWiki field if it's non-nil, zero value otherwise.
-func (r *Repository) GetHasWiki() bool {
-	if r == nil || r.HasWiki == nil {
-		return false
-	}
-	return *r.HasWiki
-}
-
-// GetHomepage returns the Homepage field if it's non-nil, zero value otherwise.
-func (r *Repository) GetHomepage() string {
-	if r == nil || r.Homepage == nil {
-		return ""
-	}
-	return *r.Homepage
-}
-
-// GetHooksURL returns the HooksURL field if it's non-nil, zero value otherwise.
-func (r *Repository) GetHooksURL() string {
-	if r == nil || r.HooksURL == nil {
-		return ""
-	}
-	return *r.HooksURL
-}
-
-// GetHTMLURL returns the HTMLURL field if it's non-nil, zero value otherwise.
-func (r *Repository) GetHTMLURL() string {
-	if r == nil || r.HTMLURL == nil {
-		return ""
-	}
-	return *r.HTMLURL
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (r *Repository) GetID() int64 {
-	if r == nil || r.ID == nil {
-		return 0
-	}
-	return *r.ID
-}
-
-// GetIssueCommentURL returns the IssueCommentURL field if it's non-nil, zero value otherwise.
-func (r *Repository) GetIssueCommentURL() string {
-	if r == nil || r.IssueCommentURL == nil {
-		return ""
-	}
-	return *r.IssueCommentURL
-}
-
-// GetIssueEventsURL returns the IssueEventsURL field if it's non-nil, zero value otherwise.
-func (r *Repository) GetIssueEventsURL() string {
-	if r == nil || r.IssueEventsURL == nil {
-		return ""
-	}
-	return *r.IssueEventsURL
-}
-
-// GetIssuesURL returns the IssuesURL field if it's non-nil, zero value otherwise.
-func (r *Repository) GetIssuesURL() string {
-	if r == nil || r.IssuesURL == nil {
-		return ""
-	}
-	return *r.IssuesURL
-}
-
-// GetKeysURL returns the KeysURL field if it's non-nil, zero value otherwise.
-func (r *Repository) GetKeysURL() string {
-	if r == nil || r.KeysURL == nil {
-		return ""
-	}
-	return *r.KeysURL
-}
-
-// GetLabelsURL returns the LabelsURL field if it's non-nil, zero value otherwise.
-func (r *Repository) GetLabelsURL() string {
-	if r == nil || r.LabelsURL == nil {
-		return ""
-	}
-	return *r.LabelsURL
-}
-
-// GetLanguage returns the Language field if it's non-nil, zero value otherwise.
-func (r *Repository) GetLanguage() string {
-	if r == nil || r.Language == nil {
-		return ""
-	}
-	return *r.Language
-}
-
-// GetLanguagesURL returns the LanguagesURL field if it's non-nil, zero value otherwise.
-func (r *Repository) GetLanguagesURL() string {
-	if r == nil || r.LanguagesURL == nil {
-		return ""
-	}
-	return *r.LanguagesURL
-}
-
-// GetLicense returns the License field.
-func (r *Repository) GetLicense() *License {
-	if r == nil {
-		return nil
-	}
-	return r.License
-}
-
-// GetLicenseTemplate returns the LicenseTemplate field if it's non-nil, zero value otherwise.
-func (r *Repository) GetLicenseTemplate() string {
-	if r == nil || r.LicenseTemplate == nil {
-		return ""
-	}
-	return *r.LicenseTemplate
-}
-
-// GetMasterBranch returns the MasterBranch field if it's non-nil, zero value otherwise.
-func (r *Repository) GetMasterBranch() string {
-	if r == nil || r.MasterBranch == nil {
-		return ""
-	}
-	return *r.MasterBranch
-}
-
-// GetMergesURL returns the MergesURL field if it's non-nil, zero value otherwise.
-func (r *Repository) GetMergesURL() string {
-	if r == nil || r.MergesURL == nil {
-		return ""
-	}
-	return *r.MergesURL
-}
-
-// GetMilestonesURL returns the MilestonesURL field if it's non-nil, zero value otherwise.
-func (r *Repository) GetMilestonesURL() string {
-	if r == nil || r.MilestonesURL == nil {
-		return ""
-	}
-	return *r.MilestonesURL
-}
-
-// GetMirrorURL returns the MirrorURL field if it's non-nil, zero value otherwise.
-func (r *Repository) GetMirrorURL() string {
-	if r == nil || r.MirrorURL == nil {
-		return ""
-	}
-	return *r.MirrorURL
-}
-
-// GetName returns the Name field if it's non-nil, zero value otherwise.
-func (r *Repository) GetName() string {
-	if r == nil || r.Name == nil {
-		return ""
-	}
-	return *r.Name
-}
-
-// GetNetworkCount returns the NetworkCount field if it's non-nil, zero value otherwise.
-func (r *Repository) GetNetworkCount() int {
-	if r == nil || r.NetworkCount == nil {
-		return 0
-	}
-	return *r.NetworkCount
-}
-
-// GetNotificationsURL returns the NotificationsURL field if it's non-nil, zero value otherwise.
-func (r *Repository) GetNotificationsURL() string {
-	if r == nil || r.NotificationsURL == nil {
-		return ""
-	}
-	return *r.NotificationsURL
-}
-
-// GetOpenIssuesCount returns the OpenIssuesCount field if it's non-nil, zero value otherwise.
-func (r *Repository) GetOpenIssuesCount() int {
-	if r == nil || r.OpenIssuesCount == nil {
-		return 0
-	}
-	return *r.OpenIssuesCount
-}
-
-// GetOrganization returns the Organization field.
-func (r *Repository) GetOrganization() *Organization {
-	if r == nil {
-		return nil
-	}
-	return r.Organization
-}
-
-// GetOwner returns the Owner field.
-func (r *Repository) GetOwner() *User {
-	if r == nil {
-		return nil
-	}
-	return r.Owner
-}
-
-// GetParent returns the Parent field.
-func (r *Repository) GetParent() *Repository {
-	if r == nil {
-		return nil
-	}
-	return r.Parent
-}
-
-// GetPermissions returns the Permissions field if it's non-nil, zero value otherwise.
-func (r *Repository) GetPermissions() map[string]bool {
-	if r == nil || r.Permissions == nil {
-		return map[string]bool{}
-	}
-	return *r.Permissions
-}
-
-// GetPrivate returns the Private field if it's non-nil, zero value otherwise.
-func (r *Repository) GetPrivate() bool {
-	if r == nil || r.Private == nil {
-		return false
-	}
-	return *r.Private
-}
-
-// GetPullsURL returns the PullsURL field if it's non-nil, zero value otherwise.
-func (r *Repository) GetPullsURL() string {
-	if r == nil || r.PullsURL == nil {
-		return ""
-	}
-	return *r.PullsURL
-}
-
-// GetPushedAt returns the PushedAt field if it's non-nil, zero value otherwise.
-func (r *Repository) GetPushedAt() Timestamp {
-	if r == nil || r.PushedAt == nil {
-		return Timestamp{}
-	}
-	return *r.PushedAt
-}
-
-// GetReleasesURL returns the ReleasesURL field if it's non-nil, zero value otherwise.
-func (r *Repository) GetReleasesURL() string {
-	if r == nil || r.ReleasesURL == nil {
-		return ""
-	}
-	return *r.ReleasesURL
-}
-
-// GetSize returns the Size field if it's non-nil, zero value otherwise.
-func (r *Repository) GetSize() int {
-	if r == nil || r.Size == nil {
-		return 0
-	}
-	return *r.Size
-}
-
-// GetSource returns the Source field.
-func (r *Repository) GetSource() *Repository {
-	if r == nil {
-		return nil
-	}
-	return r.Source
-}
-
-// GetSSHURL returns the SSHURL field if it's non-nil, zero value otherwise.
-func (r *Repository) GetSSHURL() string {
-	if r == nil || r.SSHURL == nil {
-		return ""
-	}
-	return *r.SSHURL
-}
-
-// GetStargazersCount returns the StargazersCount field if it's non-nil, zero value otherwise.
-func (r *Repository) GetStargazersCount() int {
-	if r == nil || r.StargazersCount == nil {
-		return 0
-	}
-	return *r.StargazersCount
-}
-
-// GetStargazersURL returns the StargazersURL field if it's non-nil, zero value otherwise.
-func (r *Repository) GetStargazersURL() string {
-	if r == nil || r.StargazersURL == nil {
-		return ""
-	}
-	return *r.StargazersURL
-}
-
-// GetStatusesURL returns the StatusesURL field if it's non-nil, zero value otherwise.
-func (r *Repository) GetStatusesURL() string {
-	if r == nil || r.StatusesURL == nil {
-		return ""
-	}
-	return *r.StatusesURL
-}
-
-// GetSubscribersCount returns the SubscribersCount field if it's non-nil, zero value otherwise.
-func (r *Repository) GetSubscribersCount() int {
-	if r == nil || r.SubscribersCount == nil {
-		return 0
-	}
-	return *r.SubscribersCount
-}
-
-// GetSubscribersURL returns the SubscribersURL field if it's non-nil, zero value otherwise.
-func (r *Repository) GetSubscribersURL() string {
-	if r == nil || r.SubscribersURL == nil {
-		return ""
-	}
-	return *r.SubscribersURL
-}
-
-// GetSubscriptionURL returns the SubscriptionURL field if it's non-nil, zero value otherwise.
-func (r *Repository) GetSubscriptionURL() string {
-	if r == nil || r.SubscriptionURL == nil {
-		return ""
-	}
-	return *r.SubscriptionURL
-}
-
-// GetSVNURL returns the SVNURL field if it's non-nil, zero value otherwise.
-func (r *Repository) GetSVNURL() string {
-	if r == nil || r.SVNURL == nil {
-		return ""
-	}
-	return *r.SVNURL
-}
-
-// GetTagsURL returns the TagsURL field if it's non-nil, zero value otherwise.
-func (r *Repository) GetTagsURL() string {
-	if r == nil || r.TagsURL == nil {
-		return ""
-	}
-	return *r.TagsURL
-}
-
-// GetTeamID returns the TeamID field if it's non-nil, zero value otherwise.
-func (r *Repository) GetTeamID() int64 {
-	if r == nil || r.TeamID == nil {
-		return 0
-	}
-	return *r.TeamID
-}
-
-// GetTeamsURL returns the TeamsURL field if it's non-nil, zero value otherwise.
-func (r *Repository) GetTeamsURL() string {
-	if r == nil || r.TeamsURL == nil {
-		return ""
-	}
-	return *r.TeamsURL
-}
-
-// GetTreesURL returns the TreesURL field if it's non-nil, zero value otherwise.
-func (r *Repository) GetTreesURL() string {
-	if r == nil || r.TreesURL == nil {
-		return ""
-	}
-	return *r.TreesURL
-}
-
-// GetUpdatedAt returns the UpdatedAt field if it's non-nil, zero value otherwise.
-func (r *Repository) GetUpdatedAt() Timestamp {
-	if r == nil || r.UpdatedAt == nil {
-		return Timestamp{}
-	}
-	return *r.UpdatedAt
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (r *Repository) GetURL() string {
-	if r == nil || r.URL == nil {
-		return ""
-	}
-	return *r.URL
-}
-
-// GetWatchersCount returns the WatchersCount field if it's non-nil, zero value otherwise.
-func (r *Repository) GetWatchersCount() int {
-	if r == nil || r.WatchersCount == nil {
-		return 0
-	}
-	return *r.WatchersCount
-}
-
-// GetBody returns the Body field if it's non-nil, zero value otherwise.
-func (r *RepositoryComment) GetBody() string {
-	if r == nil || r.Body == nil {
-		return ""
-	}
-	return *r.Body
-}
-
-// GetCommitID returns the CommitID field if it's non-nil, zero value otherwise.
-func (r *RepositoryComment) GetCommitID() string {
-	if r == nil || r.CommitID == nil {
-		return ""
-	}
-	return *r.CommitID
-}
-
-// GetCreatedAt returns the CreatedAt field if it's non-nil, zero value otherwise.
-func (r *RepositoryComment) GetCreatedAt() time.Time {
-	if r == nil || r.CreatedAt == nil {
-		return time.Time{}
-	}
-	return *r.CreatedAt
-}
-
-// GetHTMLURL returns the HTMLURL field if it's non-nil, zero value otherwise.
-func (r *RepositoryComment) GetHTMLURL() string {
-	if r == nil || r.HTMLURL == nil {
-		return ""
-	}
-	return *r.HTMLURL
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (r *RepositoryComment) GetID() int64 {
-	if r == nil || r.ID == nil {
-		return 0
-	}
-	return *r.ID
-}
-
-// GetPath returns the Path field if it's non-nil, zero value otherwise.
-func (r *RepositoryComment) GetPath() string {
-	if r == nil || r.Path == nil {
-		return ""
-	}
-	return *r.Path
-}
-
-// GetPosition returns the Position field if it's non-nil, zero value otherwise.
-func (r *RepositoryComment) GetPosition() int {
-	if r == nil || r.Position == nil {
-		return 0
-	}
-	return *r.Position
-}
-
-// GetReactions returns the Reactions field.
-func (r *RepositoryComment) GetReactions() *Reactions {
-	if r == nil {
-		return nil
-	}
-	return r.Reactions
-}
-
-// GetUpdatedAt returns the UpdatedAt field if it's non-nil, zero value otherwise.
-func (r *RepositoryComment) GetUpdatedAt() time.Time {
-	if r == nil || r.UpdatedAt == nil {
-		return time.Time{}
-	}
-	return *r.UpdatedAt
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (r *RepositoryComment) GetURL() string {
-	if r == nil || r.URL == nil {
-		return ""
-	}
-	return *r.URL
-}
-
-// GetUser returns the User field.
-func (r *RepositoryComment) GetUser() *User {
-	if r == nil {
-		return nil
-	}
-	return r.User
-}
-
-// GetAuthor returns the Author field.
-func (r *RepositoryCommit) GetAuthor() *User {
-	if r == nil {
-		return nil
-	}
-	return r.Author
-}
-
-// GetCommentsURL returns the CommentsURL field if it's non-nil, zero value otherwise.
-func (r *RepositoryCommit) GetCommentsURL() string {
-	if r == nil || r.CommentsURL == nil {
-		return ""
-	}
-	return *r.CommentsURL
-}
-
-// GetCommit returns the Commit field.
-func (r *RepositoryCommit) GetCommit() *Commit {
-	if r == nil {
-		return nil
-	}
-	return r.Commit
-}
-
-// GetCommitter returns the Committer field.
-func (r *RepositoryCommit) GetCommitter() *User {
-	if r == nil {
-		return nil
-	}
-	return r.Committer
-}
-
-// GetHTMLURL returns the HTMLURL field if it's non-nil, zero value otherwise.
-func (r *RepositoryCommit) GetHTMLURL() string {
-	if r == nil || r.HTMLURL == nil {
-		return ""
-	}
-	return *r.HTMLURL
-}
-
-// GetSHA returns the SHA field if it's non-nil, zero value otherwise.
-func (r *RepositoryCommit) GetSHA() string {
-	if r == nil || r.SHA == nil {
-		return ""
-	}
-	return *r.SHA
-}
-
-// GetStats returns the Stats field.
-func (r *RepositoryCommit) GetStats() *CommitStats {
-	if r == nil {
-		return nil
-	}
-	return r.Stats
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (r *RepositoryCommit) GetURL() string {
-	if r == nil || r.URL == nil {
-		return ""
-	}
-	return *r.URL
-}
-
-// GetDownloadURL returns the DownloadURL field if it's non-nil, zero value otherwise.
-func (r *RepositoryContent) GetDownloadURL() string {
-	if r == nil || r.DownloadURL == nil {
-		return ""
-	}
-	return *r.DownloadURL
-}
-
-// GetEncoding returns the Encoding field if it's non-nil, zero value otherwise.
-func (r *RepositoryContent) GetEncoding() string {
-	if r == nil || r.Encoding == nil {
-		return ""
-	}
-	return *r.Encoding
-}
-
-// GetGitURL returns the GitURL field if it's non-nil, zero value otherwise.
-func (r *RepositoryContent) GetGitURL() string {
-	if r == nil || r.GitURL == nil {
-		return ""
-	}
-	return *r.GitURL
-}
-
-// GetHTMLURL returns the HTMLURL field if it's non-nil, zero value otherwise.
-func (r *RepositoryContent) GetHTMLURL() string {
-	if r == nil || r.HTMLURL == nil {
-		return ""
-	}
-	return *r.HTMLURL
-}
-
-// GetName returns the Name field if it's non-nil, zero value otherwise.
-func (r *RepositoryContent) GetName() string {
-	if r == nil || r.Name == nil {
-		return ""
-	}
-	return *r.Name
-}
-
-// GetPath returns the Path field if it's non-nil, zero value otherwise.
-func (r *RepositoryContent) GetPath() string {
-	if r == nil || r.Path == nil {
-		return ""
-	}
-	return *r.Path
-}
-
-// GetSHA returns the SHA field if it's non-nil, zero value otherwise.
-func (r *RepositoryContent) GetSHA() string {
-	if r == nil || r.SHA == nil {
-		return ""
-	}
-	return *r.SHA
-}
-
-// GetSize returns the Size field if it's non-nil, zero value otherwise.
-func (r *RepositoryContent) GetSize() int {
-	if r == nil || r.Size == nil {
-		return 0
-	}
-	return *r.Size
-}
-
-// GetType returns the Type field if it's non-nil, zero value otherwise.
-func (r *RepositoryContent) GetType() string {
-	if r == nil || r.Type == nil {
-		return ""
-	}
-	return *r.Type
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (r *RepositoryContent) GetURL() string {
-	if r == nil || r.URL == nil {
-		return ""
-	}
-	return *r.URL
-}
-
-// GetAuthor returns the Author field.
-func (r *RepositoryContentFileOptions) GetAuthor() *CommitAuthor {
-	if r == nil {
-		return nil
-	}
-	return r.Author
-}
-
-// GetBranch returns the Branch field if it's non-nil, zero value otherwise.
-func (r *RepositoryContentFileOptions) GetBranch() string {
-	if r == nil || r.Branch == nil {
-		return ""
-	}
-	return *r.Branch
-}
-
-// GetCommitter returns the Committer field.
-func (r *RepositoryContentFileOptions) GetCommitter() *CommitAuthor {
-	if r == nil {
-		return nil
-	}
-	return r.Committer
-}
-
-// GetMessage returns the Message field if it's non-nil, zero value otherwise.
-func (r *RepositoryContentFileOptions) GetMessage() string {
-	if r == nil || r.Message == nil {
-		return ""
-	}
-	return *r.Message
-}
-
-// GetSHA returns the SHA field if it's non-nil, zero value otherwise.
-func (r *RepositoryContentFileOptions) GetSHA() string {
-	if r == nil || r.SHA == nil {
-		return ""
-	}
-	return *r.SHA
-}
-
-// GetContent returns the Content field.
-func (r *RepositoryContentResponse) GetContent() *RepositoryContent {
-	if r == nil {
-		return nil
-	}
-	return r.Content
-}
-
-// GetAction returns the Action field if it's non-nil, zero value otherwise.
-func (r *RepositoryEvent) GetAction() string {
-	if r == nil || r.Action == nil {
-		return ""
-	}
-	return *r.Action
-}
-
-// GetInstallation returns the Installation field.
-func (r *RepositoryEvent) GetInstallation() *Installation {
-	if r == nil {
-		return nil
-	}
-	return r.Installation
-}
-
-// GetOrg returns the Org field.
-func (r *RepositoryEvent) GetOrg() *Organization {
-	if r == nil {
-		return nil
-	}
-	return r.Org
-}
-
-// GetRepo returns the Repo field.
-func (r *RepositoryEvent) GetRepo() *Repository {
-	if r == nil {
-		return nil
-	}
-	return r.Repo
-}
-
-// GetSender returns the Sender field.
-func (r *RepositoryEvent) GetSender() *User {
-	if r == nil {
-		return nil
-	}
-	return r.Sender
-}
-
-// GetCreatedAt returns the CreatedAt field if it's non-nil, zero value otherwise.
-func (r *RepositoryInvitation) GetCreatedAt() Timestamp {
-	if r == nil || r.CreatedAt == nil {
-		return Timestamp{}
-	}
-	return *r.CreatedAt
-}
-
-// GetHTMLURL returns the HTMLURL field if it's non-nil, zero value otherwise.
-func (r *RepositoryInvitation) GetHTMLURL() string {
-	if r == nil || r.HTMLURL == nil {
-		return ""
-	}
-	return *r.HTMLURL
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (r *RepositoryInvitation) GetID() int64 {
-	if r == nil || r.ID == nil {
-		return 0
-	}
-	return *r.ID
-}
-
-// GetInvitee returns the Invitee field.
-func (r *RepositoryInvitation) GetInvitee() *User {
-	if r == nil {
-		return nil
-	}
-	return r.Invitee
-}
-
-// GetInviter returns the Inviter field.
-func (r *RepositoryInvitation) GetInviter() *User {
-	if r == nil {
-		return nil
-	}
-	return r.Inviter
-}
-
-// GetPermissions returns the Permissions field if it's non-nil, zero value otherwise.
-func (r *RepositoryInvitation) GetPermissions() string {
-	if r == nil || r.Permissions == nil {
-		return ""
-	}
-	return *r.Permissions
-}
-
-// GetRepo returns the Repo field.
-func (r *RepositoryInvitation) GetRepo() *Repository {
-	if r == nil {
-		return nil
-	}
-	return r.Repo
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (r *RepositoryInvitation) GetURL() string {
-	if r == nil || r.URL == nil {
-		return ""
-	}
-	return *r.URL
-}
-
-// GetContent returns the Content field if it's non-nil, zero value otherwise.
-func (r *RepositoryLicense) GetContent() string {
-	if r == nil || r.Content == nil {
-		return ""
-	}
-	return *r.Content
-}
-
-// GetDownloadURL returns the DownloadURL field if it's non-nil, zero value otherwise.
-func (r *RepositoryLicense) GetDownloadURL() string {
-	if r == nil || r.DownloadURL == nil {
-		return ""
-	}
-	return *r.DownloadURL
-}
-
-// GetEncoding returns the Encoding field if it's non-nil, zero value otherwise.
-func (r *RepositoryLicense) GetEncoding() string {
-	if r == nil || r.Encoding == nil {
-		return ""
-	}
-	return *r.Encoding
-}
-
-// GetGitURL returns the GitURL field if it's non-nil, zero value otherwise.
-func (r *RepositoryLicense) GetGitURL() string {
-	if r == nil || r.GitURL == nil {
-		return ""
-	}
-	return *r.GitURL
-}
-
-// GetHTMLURL returns the HTMLURL field if it's non-nil, zero value otherwise.
-func (r *RepositoryLicense) GetHTMLURL() string {
-	if r == nil || r.HTMLURL == nil {
-		return ""
-	}
-	return *r.HTMLURL
-}
-
-// GetLicense returns the License field.
-func (r *RepositoryLicense) GetLicense() *License {
-	if r == nil {
-		return nil
-	}
-	return r.License
-}
-
-// GetName returns the Name field if it's non-nil, zero value otherwise.
-func (r *RepositoryLicense) GetName() string {
-	if r == nil || r.Name == nil {
-		return ""
-	}
-	return *r.Name
-}
-
-// GetPath returns the Path field if it's non-nil, zero value otherwise.
-func (r *RepositoryLicense) GetPath() string {
-	if r == nil || r.Path == nil {
-		return ""
-	}
-	return *r.Path
-}
-
-// GetSHA returns the SHA field if it's non-nil, zero value otherwise.
-func (r *RepositoryLicense) GetSHA() string {
-	if r == nil || r.SHA == nil {
-		return ""
-	}
-	return *r.SHA
-}
-
-// GetSize returns the Size field if it's non-nil, zero value otherwise.
-func (r *RepositoryLicense) GetSize() int {
-	if r == nil || r.Size == nil {
-		return 0
-	}
-	return *r.Size
-}
-
-// GetType returns the Type field if it's non-nil, zero value otherwise.
-func (r *RepositoryLicense) GetType() string {
-	if r == nil || r.Type == nil {
-		return ""
-	}
-	return *r.Type
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (r *RepositoryLicense) GetURL() string {
-	if r == nil || r.URL == nil {
-		return ""
-	}
-	return *r.URL
-}
-
-// GetBase returns the Base field if it's non-nil, zero value otherwise.
-func (r *RepositoryMergeRequest) GetBase() string {
-	if r == nil || r.Base == nil {
-		return ""
-	}
-	return *r.Base
-}
-
-// GetCommitMessage returns the CommitMessage field if it's non-nil, zero value otherwise.
-func (r *RepositoryMergeRequest) GetCommitMessage() string {
-	if r == nil || r.CommitMessage == nil {
-		return ""
-	}
-	return *r.CommitMessage
-}
-
-// GetHead returns the Head field if it's non-nil, zero value otherwise.
-func (r *RepositoryMergeRequest) GetHead() string {
-	if r == nil || r.Head == nil {
-		return ""
-	}
-	return *r.Head
-}
-
-// GetPermission returns the Permission field if it's non-nil, zero value otherwise.
-func (r *RepositoryPermissionLevel) GetPermission() string {
-	if r == nil || r.Permission == nil {
-		return ""
-	}
-	return *r.Permission
-}
-
-// GetUser returns the User field.
-func (r *RepositoryPermissionLevel) GetUser() *User {
-	if r == nil {
-		return nil
-	}
-	return r.User
-}
-
-// GetAssetsURL returns the AssetsURL field if it's non-nil, zero value otherwise.
-func (r *RepositoryRelease) GetAssetsURL() string {
-	if r == nil || r.AssetsURL == nil {
-		return ""
-	}
-	return *r.AssetsURL
-}
-
-// GetAuthor returns the Author field.
-func (r *RepositoryRelease) GetAuthor() *User {
-	if r == nil {
-		return nil
-	}
-	return r.Author
-}
-
-// GetBody returns the Body field if it's non-nil, zero value otherwise.
-func (r *RepositoryRelease) GetBody() string {
-	if r == nil || r.Body == nil {
-		return ""
-	}
-	return *r.Body
-}
-
-// GetCreatedAt returns the CreatedAt field if it's non-nil, zero value otherwise.
-func (r *RepositoryRelease) GetCreatedAt() Timestamp {
-	if r == nil || r.CreatedAt == nil {
-		return Timestamp{}
-	}
-	return *r.CreatedAt
-}
-
-// GetDraft returns the Draft field if it's non-nil, zero value otherwise.
-func (r *RepositoryRelease) GetDraft() bool {
-	if r == nil || r.Draft == nil {
-		return false
-	}
-	return *r.Draft
-}
-
-// GetHTMLURL returns the HTMLURL field if it's non-nil, zero value otherwise.
-func (r *RepositoryRelease) GetHTMLURL() string {
-	if r == nil || r.HTMLURL == nil {
-		return ""
-	}
-	return *r.HTMLURL
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (r *RepositoryRelease) GetID() int64 {
-	if r == nil || r.ID == nil {
-		return 0
-	}
-	return *r.ID
-}
-
-// GetName returns the Name field if it's non-nil, zero value otherwise.
-func (r *RepositoryRelease) GetName() string {
-	if r == nil || r.Name == nil {
-		return ""
-	}
-	return *r.Name
-}
-
-// GetPrerelease returns the Prerelease field if it's non-nil, zero value otherwise.
-func (r *RepositoryRelease) GetPrerelease() bool {
-	if r == nil || r.Prerelease == nil {
-		return false
-	}
-	return *r.Prerelease
-}
-
-// GetPublishedAt returns the PublishedAt field if it's non-nil, zero value otherwise.
-func (r *RepositoryRelease) GetPublishedAt() Timestamp {
-	if r == nil || r.PublishedAt == nil {
-		return Timestamp{}
-	}
-	return *r.PublishedAt
-}
-
-// GetTagName returns the TagName field if it's non-nil, zero value otherwise.
-func (r *RepositoryRelease) GetTagName() string {
-	if r == nil || r.TagName == nil {
-		return ""
-	}
-	return *r.TagName
-}
-
-// GetTarballURL returns the TarballURL field if it's non-nil, zero value otherwise.
-func (r *RepositoryRelease) GetTarballURL() string {
-	if r == nil || r.TarballURL == nil {
-		return ""
-	}
-	return *r.TarballURL
-}
-
-// GetTargetCommitish returns the TargetCommitish field if it's non-nil, zero value otherwise.
-func (r *RepositoryRelease) GetTargetCommitish() string {
-	if r == nil || r.TargetCommitish == nil {
-		return ""
-	}
-	return *r.TargetCommitish
-}
-
-// GetUploadURL returns the UploadURL field if it's non-nil, zero value otherwise.
-func (r *RepositoryRelease) GetUploadURL() string {
-	if r == nil || r.UploadURL == nil {
-		return ""
-	}
-	return *r.UploadURL
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (r *RepositoryRelease) GetURL() string {
-	if r == nil || r.URL == nil {
-		return ""
-	}
-	return *r.URL
-}
-
-// GetZipballURL returns the ZipballURL field if it's non-nil, zero value otherwise.
-func (r *RepositoryRelease) GetZipballURL() string {
-	if r == nil || r.ZipballURL == nil {
-		return ""
-	}
-	return *r.ZipballURL
-}
-
-// GetCommit returns the Commit field.
-func (r *RepositoryTag) GetCommit() *Commit {
-	if r == nil {
-		return nil
-	}
-	return r.Commit
-}
-
-// GetName returns the Name field if it's non-nil, zero value otherwise.
-func (r *RepositoryTag) GetName() string {
-	if r == nil || r.Name == nil {
-		return ""
-	}
-	return *r.Name
-}
-
-// GetTarballURL returns the TarballURL field if it's non-nil, zero value otherwise.
-func (r *RepositoryTag) GetTarballURL() string {
-	if r == nil || r.TarballURL == nil {
-		return ""
-	}
-	return *r.TarballURL
-}
-
-// GetZipballURL returns the ZipballURL field if it's non-nil, zero value otherwise.
-func (r *RepositoryTag) GetZipballURL() string {
-	if r == nil || r.ZipballURL == nil {
-		return ""
-	}
-	return *r.ZipballURL
-}
-
-// GetForkRepos returns the ForkRepos field if it's non-nil, zero value otherwise.
-func (r *RepoStats) GetForkRepos() int {
-	if r == nil || r.ForkRepos == nil {
-		return 0
-	}
-	return *r.ForkRepos
-}
-
-// GetOrgRepos returns the OrgRepos field if it's non-nil, zero value otherwise.
-func (r *RepoStats) GetOrgRepos() int {
-	if r == nil || r.OrgRepos == nil {
-		return 0
-	}
-	return *r.OrgRepos
-}
-
-// GetRootRepos returns the RootRepos field if it's non-nil, zero value otherwise.
-func (r *RepoStats) GetRootRepos() int {
-	if r == nil || r.RootRepos == nil {
-		return 0
-	}
-	return *r.RootRepos
-}
-
-// GetTotalPushes returns the TotalPushes field if it's non-nil, zero value otherwise.
-func (r *RepoStats) GetTotalPushes() int {
-	if r == nil || r.TotalPushes == nil {
-		return 0
-	}
-	return *r.TotalPushes
-}
-
-// GetTotalRepos returns the TotalRepos field if it's non-nil, zero value otherwise.
-func (r *RepoStats) GetTotalRepos() int {
-	if r == nil || r.TotalRepos == nil {
-		return 0
-	}
-	return *r.TotalRepos
-}
-
-// GetTotalWikis returns the TotalWikis field if it's non-nil, zero value otherwise.
-func (r *RepoStats) GetTotalWikis() int {
-	if r == nil || r.TotalWikis == nil {
-		return 0
-	}
-	return *r.TotalWikis
-}
-
-// GetContext returns the Context field if it's non-nil, zero value otherwise.
-func (r *RepoStatus) GetContext() string {
-	if r == nil || r.Context == nil {
-		return ""
-	}
-	return *r.Context
-}
-
-// GetCreatedAt returns the CreatedAt field if it's non-nil, zero value otherwise.
-func (r *RepoStatus) GetCreatedAt() time.Time {
-	if r == nil || r.CreatedAt == nil {
-		return time.Time{}
-	}
-	return *r.CreatedAt
-}
-
-// GetCreator returns the Creator field.
-func (r *RepoStatus) GetCreator() *User {
-	if r == nil {
-		return nil
-	}
-	return r.Creator
-}
-
-// GetDescription returns the Description field if it's non-nil, zero value otherwise.
-func (r *RepoStatus) GetDescription() string {
-	if r == nil || r.Description == nil {
-		return ""
-	}
-	return *r.Description
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (r *RepoStatus) GetID() int64 {
-	if r == nil || r.ID == nil {
-		return 0
-	}
-	return *r.ID
-}
-
-// GetState returns the State field if it's non-nil, zero value otherwise.
-func (r *RepoStatus) GetState() string {
-	if r == nil || r.State == nil {
-		return ""
-	}
-	return *r.State
-}
-
-// GetTargetURL returns the TargetURL field if it's non-nil, zero value otherwise.
-func (r *RepoStatus) GetTargetURL() string {
-	if r == nil || r.TargetURL == nil {
-		return ""
-	}
-	return *r.TargetURL
-}
-
-// GetUpdatedAt returns the UpdatedAt field if it's non-nil, zero value otherwise.
-func (r *RepoStatus) GetUpdatedAt() time.Time {
-	if r == nil || r.UpdatedAt == nil {
-		return time.Time{}
-	}
-	return *r.UpdatedAt
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (r *RepoStatus) GetURL() string {
-	if r == nil || r.URL == nil {
-		return ""
-	}
-	return *r.URL
-}
-
-// GetName returns the Name field if it's non-nil, zero value otherwise.
-func (s *ServiceHook) GetName() string {
-	if s == nil || s.Name == nil {
-		return ""
-	}
-	return *s.Name
-}
-
-// GetPayload returns the Payload field if it's non-nil, zero value otherwise.
-func (s *SignatureVerification) GetPayload() string {
-	if s == nil || s.Payload == nil {
-		return ""
-	}
-	return *s.Payload
-}
-
-// GetReason returns the Reason field if it's non-nil, zero value otherwise.
-func (s *SignatureVerification) GetReason() string {
-	if s == nil || s.Reason == nil {
-		return ""
-	}
-	return *s.Reason
-}
-
-// GetSignature returns the Signature field if it's non-nil, zero value otherwise.
-func (s *SignatureVerification) GetSignature() string {
-	if s == nil || s.Signature == nil {
-		return ""
-	}
-	return *s.Signature
-}
-
-// GetVerified returns the Verified field if it's non-nil, zero value otherwise.
-func (s *SignatureVerification) GetVerified() bool {
-	if s == nil || s.Verified == nil {
-		return false
-	}
-	return *s.Verified
-}
-
-// GetActor returns the Actor field.
-func (s *Source) GetActor() *User {
-	if s == nil {
-		return nil
-	}
-	return s.Actor
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (s *Source) GetID() int64 {
-	if s == nil || s.ID == nil {
-		return 0
-	}
-	return *s.ID
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (s *Source) GetURL() string {
-	if s == nil || s.URL == nil {
-		return ""
-	}
-	return *s.URL
-}
-
-// GetEmail returns the Email field if it's non-nil, zero value otherwise.
-func (s *SourceImportAuthor) GetEmail() string {
-	if s == nil || s.Email == nil {
-		return ""
-	}
-	return *s.Email
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (s *SourceImportAuthor) GetID() int64 {
-	if s == nil || s.ID == nil {
-		return 0
-	}
-	return *s.ID
-}
-
-// GetImportURL returns the ImportURL field if it's non-nil, zero value otherwise.
-func (s *SourceImportAuthor) GetImportURL() string {
-	if s == nil || s.ImportURL == nil {
-		return ""
-	}
-	return *s.ImportURL
-}
-
-// GetName returns the Name field if it's non-nil, zero value otherwise.
-func (s *SourceImportAuthor) GetName() string {
-	if s == nil || s.Name == nil {
-		return ""
-	}
-	return *s.Name
-}
-
-// GetRemoteID returns the RemoteID field if it's non-nil, zero value otherwise.
-func (s *SourceImportAuthor) GetRemoteID() string {
-	if s == nil || s.RemoteID == nil {
-		return ""
-	}
-	return *s.RemoteID
-}
-
-// GetRemoteName returns the RemoteName field if it's non-nil, zero value otherwise.
-func (s *SourceImportAuthor) GetRemoteName() string {
-	if s == nil || s.RemoteName == nil {
-		return ""
-	}
-	return *s.RemoteName
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (s *SourceImportAuthor) GetURL() string {
-	if s == nil || s.URL == nil {
-		return ""
-	}
-	return *s.URL
-}
-
-// GetStarredAt returns the StarredAt field if it's non-nil, zero value otherwise.
-func (s *Stargazer) GetStarredAt() Timestamp {
-	if s == nil || s.StarredAt == nil {
-		return Timestamp{}
-	}
-	return *s.StarredAt
-}
-
-// GetUser returns the User field.
-func (s *Stargazer) GetUser() *User {
-	if s == nil {
-		return nil
-	}
-	return s.User
-}
-
-// GetRepository returns the Repository field.
-func (s *StarredRepository) GetRepository() *Repository {
-	if s == nil {
-		return nil
-	}
-	return s.Repository
-}
-
-// GetStarredAt returns the StarredAt field if it's non-nil, zero value otherwise.
-func (s *StarredRepository) GetStarredAt() Timestamp {
-	if s == nil || s.StarredAt == nil {
-		return Timestamp{}
-	}
-	return *s.StarredAt
-}
-
-// GetCommit returns the Commit field.
-func (s *StatusEvent) GetCommit() *RepositoryCommit {
-	if s == nil {
-		return nil
-	}
-	return s.Commit
-}
-
-// GetContext returns the Context field if it's non-nil, zero value otherwise.
-func (s *StatusEvent) GetContext() string {
-	if s == nil || s.Context == nil {
-		return ""
-	}
-	return *s.Context
-}
-
-// GetCreatedAt returns the CreatedAt field if it's non-nil, zero value otherwise.
-func (s *StatusEvent) GetCreatedAt() Timestamp {
-	if s == nil || s.CreatedAt == nil {
-		return Timestamp{}
-	}
-	return *s.CreatedAt
-}
-
-// GetDescription returns the Description field if it's non-nil, zero value otherwise.
-func (s *StatusEvent) GetDescription() string {
-	if s == nil || s.Description == nil {
-		return ""
-	}
-	return *s.Description
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (s *StatusEvent) GetID() int64 {
-	if s == nil || s.ID == nil {
-		return 0
-	}
-	return *s.ID
-}
-
-// GetInstallation returns the Installation field.
-func (s *StatusEvent) GetInstallation() *Installation {
-	if s == nil {
-		return nil
-	}
-	return s.Installation
-}
-
-// GetName returns the Name field if it's non-nil, zero value otherwise.
-func (s *StatusEvent) GetName() string {
-	if s == nil || s.Name == nil {
-		return ""
-	}
-	return *s.Name
-}
-
-// GetRepo returns the Repo field.
-func (s *StatusEvent) GetRepo() *Repository {
-	if s == nil {
-		return nil
-	}
-	return s.Repo
-}
-
-// GetSender returns the Sender field.
-func (s *StatusEvent) GetSender() *User {
-	if s == nil {
-		return nil
-	}
-	return s.Sender
-}
-
-// GetSHA returns the SHA field if it's non-nil, zero value otherwise.
-func (s *StatusEvent) GetSHA() string {
-	if s == nil || s.SHA == nil {
-		return ""
-	}
-	return *s.SHA
-}
-
-// GetState returns the State field if it's non-nil, zero value otherwise.
-func (s *StatusEvent) GetState() string {
-	if s == nil || s.State == nil {
-		return ""
-	}
-	return *s.State
-}
-
-// GetTargetURL returns the TargetURL field if it's non-nil, zero value otherwise.
-func (s *StatusEvent) GetTargetURL() string {
-	if s == nil || s.TargetURL == nil {
-		return ""
-	}
-	return *s.TargetURL
-}
-
-// GetUpdatedAt returns the UpdatedAt field if it's non-nil, zero value otherwise.
-func (s *StatusEvent) GetUpdatedAt() Timestamp {
-	if s == nil || s.UpdatedAt == nil {
-		return Timestamp{}
-	}
-	return *s.UpdatedAt
-}
-
-// GetCreatedAt returns the CreatedAt field if it's non-nil, zero value otherwise.
-func (s *Subscription) GetCreatedAt() Timestamp {
-	if s == nil || s.CreatedAt == nil {
-		return Timestamp{}
-	}
-	return *s.CreatedAt
-}
-
-// GetIgnored returns the Ignored field if it's non-nil, zero value otherwise.
-func (s *Subscription) GetIgnored() bool {
-	if s == nil || s.Ignored == nil {
-		return false
-	}
-	return *s.Ignored
-}
-
-// GetReason returns the Reason field if it's non-nil, zero value otherwise.
-func (s *Subscription) GetReason() string {
-	if s == nil || s.Reason == nil {
-		return ""
-	}
-	return *s.Reason
-}
-
-// GetRepositoryURL returns the RepositoryURL field if it's non-nil, zero value otherwise.
-func (s *Subscription) GetRepositoryURL() string {
-	if s == nil || s.RepositoryURL == nil {
-		return ""
-	}
-	return *s.RepositoryURL
-}
-
-// GetSubscribed returns the Subscribed field if it's non-nil, zero value otherwise.
-func (s *Subscription) GetSubscribed() bool {
-	if s == nil || s.Subscribed == nil {
-		return false
-	}
-	return *s.Subscribed
-}
-
-// GetThreadURL returns the ThreadURL field if it's non-nil, zero value otherwise.
-func (s *Subscription) GetThreadURL() string {
-	if s == nil || s.ThreadURL == nil {
-		return ""
-	}
-	return *s.ThreadURL
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (s *Subscription) GetURL() string {
-	if s == nil || s.URL == nil {
-		return ""
-	}
-	return *s.URL
-}
-
-// GetMessage returns the Message field if it's non-nil, zero value otherwise.
-func (t *Tag) GetMessage() string {
-	if t == nil || t.Message == nil {
-		return ""
-	}
-	return *t.Message
-}
-
-// GetNodeID returns the NodeID field if it's non-nil, zero value otherwise.
-func (t *Tag) GetNodeID() string {
-	if t == nil || t.NodeID == nil {
-		return ""
-	}
-	return *t.NodeID
-}
-
-// GetObject returns the Object field.
-func (t *Tag) GetObject() *GitObject {
-	if t == nil {
-		return nil
-	}
-	return t.Object
-}
-
-// GetSHA returns the SHA field if it's non-nil, zero value otherwise.
-func (t *Tag) GetSHA() string {
-	if t == nil || t.SHA == nil {
-		return ""
-	}
-	return *t.SHA
-}
-
-// GetTag returns the Tag field if it's non-nil, zero value otherwise.
-func (t *Tag) GetTag() string {
-	if t == nil || t.Tag == nil {
-		return ""
-	}
-	return *t.Tag
-}
-
-// GetTagger returns the Tagger field.
-func (t *Tag) GetTagger() *CommitAuthor {
-	if t == nil {
-		return nil
-	}
-	return t.Tagger
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (t *Tag) GetURL() string {
-	if t == nil || t.URL == nil {
-		return ""
-	}
-	return *t.URL
-}
-
-// GetVerification returns the Verification field.
-func (t *Tag) GetVerification() *SignatureVerification {
-	if t == nil {
-		return nil
-	}
-	return t.Verification
-}
-
-// GetDescription returns the Description field if it's non-nil, zero value otherwise.
-func (t *Team) GetDescription() string {
-	if t == nil || t.Description == nil {
-		return ""
-	}
-	return *t.Description
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (t *Team) GetID() int64 {
-	if t == nil || t.ID == nil {
-		return 0
-	}
-	return *t.ID
-}
-
-// GetLDAPDN returns the LDAPDN field if it's non-nil, zero value otherwise.
-func (t *Team) GetLDAPDN() string {
-	if t == nil || t.LDAPDN == nil {
-		return ""
-	}
-	return *t.LDAPDN
-}
-
-// GetMembersCount returns the MembersCount field if it's non-nil, zero value otherwise.
-func (t *Team) GetMembersCount() int {
-	if t == nil || t.MembersCount == nil {
-		return 0
-	}
-	return *t.MembersCount
-}
-
-// GetMembersURL returns the MembersURL field if it's non-nil, zero value otherwise.
-func (t *Team) GetMembersURL() string {
-	if t == nil || t.MembersURL == nil {
-		return ""
-	}
-	return *t.MembersURL
-}
-
-// GetName returns the Name field if it's non-nil, zero value otherwise.
-func (t *Team) GetName() string {
-	if t == nil || t.Name == nil {
-		return ""
-	}
-	return *t.Name
-}
-
-// GetOrganization returns the Organization field.
-func (t *Team) GetOrganization() *Organization {
-	if t == nil {
-		return nil
-	}
-	return t.Organization
-}
-
-// GetParent returns the Parent field.
-func (t *Team) GetParent() *Team {
-	if t == nil {
-		return nil
-	}
-	return t.Parent
-}
-
-// GetPermission returns the Permission field if it's non-nil, zero value otherwise.
-func (t *Team) GetPermission() string {
-	if t == nil || t.Permission == nil {
-		return ""
-	}
-	return *t.Permission
-}
-
-// GetPrivacy returns the Privacy field if it's non-nil, zero value otherwise.
-func (t *Team) GetPrivacy() string {
-	if t == nil || t.Privacy == nil {
-		return ""
-	}
-	return *t.Privacy
-}
-
-// GetReposCount returns the ReposCount field if it's non-nil, zero value otherwise.
-func (t *Team) GetReposCount() int {
-	if t == nil || t.ReposCount == nil {
-		return 0
-	}
-	return *t.ReposCount
-}
-
-// GetRepositoriesURL returns the RepositoriesURL field if it's non-nil, zero value otherwise.
-func (t *Team) GetRepositoriesURL() string {
-	if t == nil || t.RepositoriesURL == nil {
-		return ""
-	}
-	return *t.RepositoriesURL
-}
-
-// GetSlug returns the Slug field if it's non-nil, zero value otherwise.
-func (t *Team) GetSlug() string {
-	if t == nil || t.Slug == nil {
-		return ""
-	}
-	return *t.Slug
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (t *Team) GetURL() string {
-	if t == nil || t.URL == nil {
-		return ""
-	}
-	return *t.URL
-}
-
-// GetInstallation returns the Installation field.
-func (t *TeamAddEvent) GetInstallation() *Installation {
-	if t == nil {
-		return nil
-	}
-	return t.Installation
-}
-
-// GetOrg returns the Org field.
-func (t *TeamAddEvent) GetOrg() *Organization {
-	if t == nil {
-		return nil
-	}
-	return t.Org
-}
-
-// GetRepo returns the Repo field.
-func (t *TeamAddEvent) GetRepo() *Repository {
-	if t == nil {
-		return nil
-	}
-	return t.Repo
-}
-
-// GetSender returns the Sender field.
-func (t *TeamAddEvent) GetSender() *User {
-	if t == nil {
-		return nil
-	}
-	return t.Sender
-}
-
-// GetTeam returns the Team field.
-func (t *TeamAddEvent) GetTeam() *Team {
-	if t == nil {
-		return nil
-	}
-	return t.Team
-}
-
-// GetAction returns the Action field if it's non-nil, zero value otherwise.
-func (t *TeamEvent) GetAction() string {
-	if t == nil || t.Action == nil {
-		return ""
-	}
-	return *t.Action
-}
-
-// GetChanges returns the Changes field.
-func (t *TeamEvent) GetChanges() *TeamChange {
-	if t == nil {
-		return nil
-	}
-	return t.Changes
-}
-
-// GetInstallation returns the Installation field.
-func (t *TeamEvent) GetInstallation() *Installation {
-	if t == nil {
-		return nil
-	}
-	return t.Installation
-}
-
-// GetOrg returns the Org field.
-func (t *TeamEvent) GetOrg() *Organization {
-	if t == nil {
-		return nil
-	}
-	return t.Org
-}
-
-// GetRepo returns the Repo field.
-func (t *TeamEvent) GetRepo() *Repository {
-	if t == nil {
-		return nil
-	}
-	return t.Repo
-}
-
-// GetSender returns the Sender field.
-func (t *TeamEvent) GetSender() *User {
-	if t == nil {
-		return nil
-	}
-	return t.Sender
-}
-
-// GetTeam returns the Team field.
-func (t *TeamEvent) GetTeam() *Team {
-	if t == nil {
-		return nil
-	}
-	return t.Team
-}
-
-// GetDescription returns the Description field if it's non-nil, zero value otherwise.
-func (t *TeamLDAPMapping) GetDescription() string {
-	if t == nil || t.Description == nil {
-		return ""
-	}
-	return *t.Description
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (t *TeamLDAPMapping) GetID() int64 {
-	if t == nil || t.ID == nil {
-		return 0
-	}
-	return *t.ID
-}
-
-// GetLDAPDN returns the LDAPDN field if it's non-nil, zero value otherwise.
-func (t *TeamLDAPMapping) GetLDAPDN() string {
-	if t == nil || t.LDAPDN == nil {
-		return ""
-	}
-	return *t.LDAPDN
-}
-
-// GetMembersURL returns the MembersURL field if it's non-nil, zero value otherwise.
-func (t *TeamLDAPMapping) GetMembersURL() string {
-	if t == nil || t.MembersURL == nil {
-		return ""
-	}
-	return *t.MembersURL
-}
-
-// GetName returns the Name field if it's non-nil, zero value otherwise.
-func (t *TeamLDAPMapping) GetName() string {
-	if t == nil || t.Name == nil {
-		return ""
-	}
-	return *t.Name
-}
-
-// GetPermission returns the Permission field if it's non-nil, zero value otherwise.
-func (t *TeamLDAPMapping) GetPermission() string {
-	if t == nil || t.Permission == nil {
-		return ""
-	}
-	return *t.Permission
-}
-
-// GetPrivacy returns the Privacy field if it's non-nil, zero value otherwise.
-func (t *TeamLDAPMapping) GetPrivacy() string {
-	if t == nil || t.Privacy == nil {
-		return ""
-	}
-	return *t.Privacy
-}
-
-// GetRepositoriesURL returns the RepositoriesURL field if it's non-nil, zero value otherwise.
-func (t *TeamLDAPMapping) GetRepositoriesURL() string {
-	if t == nil || t.RepositoriesURL == nil {
-		return ""
-	}
-	return *t.RepositoriesURL
-}
-
-// GetSlug returns the Slug field if it's non-nil, zero value otherwise.
-func (t *TeamLDAPMapping) GetSlug() string {
-	if t == nil || t.Slug == nil {
-		return ""
-	}
-	return *t.Slug
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (t *TeamLDAPMapping) GetURL() string {
-	if t == nil || t.URL == nil {
-		return ""
-	}
-	return *t.URL
-}
-
-// GetFragment returns the Fragment field if it's non-nil, zero value otherwise.
-func (t *TextMatch) GetFragment() string {
-	if t == nil || t.Fragment == nil {
-		return ""
-	}
-	return *t.Fragment
-}
-
-// GetObjectType returns the ObjectType field if it's non-nil, zero value otherwise.
-func (t *TextMatch) GetObjectType() string {
-	if t == nil || t.ObjectType == nil {
-		return ""
-	}
-	return *t.ObjectType
-}
-
-// GetObjectURL returns the ObjectURL field if it's non-nil, zero value otherwise.
-func (t *TextMatch) GetObjectURL() string {
-	if t == nil || t.ObjectURL == nil {
-		return ""
-	}
-	return *t.ObjectURL
-}
-
-// GetProperty returns the Property field if it's non-nil, zero value otherwise.
-func (t *TextMatch) GetProperty() string {
-	if t == nil || t.Property == nil {
-		return ""
-	}
-	return *t.Property
-}
-
-// GetActor returns the Actor field.
-func (t *Timeline) GetActor() *User {
-	if t == nil {
-		return nil
-	}
-	return t.Actor
-}
-
-// GetAssignee returns the Assignee field.
-func (t *Timeline) GetAssignee() *User {
-	if t == nil {
-		return nil
-	}
-	return t.Assignee
-}
-
-// GetCommitID returns the CommitID field if it's non-nil, zero value otherwise.
-func (t *Timeline) GetCommitID() string {
-	if t == nil || t.CommitID == nil {
-		return ""
-	}
-	return *t.CommitID
-}
-
-// GetCommitURL returns the CommitURL field if it's non-nil, zero value otherwise.
-func (t *Timeline) GetCommitURL() string {
-	if t == nil || t.CommitURL == nil {
-		return ""
-	}
-	return *t.CommitURL
-}
-
-// GetCreatedAt returns the CreatedAt field if it's non-nil, zero value otherwise.
-func (t *Timeline) GetCreatedAt() time.Time {
-	if t == nil || t.CreatedAt == nil {
-		return time.Time{}
-	}
-	return *t.CreatedAt
-}
-
-// GetEvent returns the Event field if it's non-nil, zero value otherwise.
-func (t *Timeline) GetEvent() string {
-	if t == nil || t.Event == nil {
-		return ""
-	}
-	return *t.Event
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (t *Timeline) GetID() int64 {
-	if t == nil || t.ID == nil {
-		return 0
-	}
-	return *t.ID
-}
-
-// GetLabel returns the Label field.
-func (t *Timeline) GetLabel() *Label {
-	if t == nil {
-		return nil
-	}
-	return t.Label
-}
-
-// GetMilestone returns the Milestone field.
-func (t *Timeline) GetMilestone() *Milestone {
-	if t == nil {
-		return nil
-	}
-	return t.Milestone
-}
-
-// GetRename returns the Rename field.
-func (t *Timeline) GetRename() *Rename {
-	if t == nil {
-		return nil
-	}
-	return t.Rename
-}
-
-// GetSource returns the Source field.
-func (t *Timeline) GetSource() *Source {
-	if t == nil {
-		return nil
-	}
-	return t.Source
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (t *Timeline) GetURL() string {
-	if t == nil || t.URL == nil {
-		return ""
-	}
-	return *t.URL
-}
-
-// GetCount returns the Count field if it's non-nil, zero value otherwise.
-func (t *TrafficClones) GetCount() int {
-	if t == nil || t.Count == nil {
-		return 0
-	}
-	return *t.Count
-}
-
-// GetUniques returns the Uniques field if it's non-nil, zero value otherwise.
-func (t *TrafficClones) GetUniques() int {
-	if t == nil || t.Uniques == nil {
-		return 0
-	}
-	return *t.Uniques
-}
-
-// GetCount returns the Count field if it's non-nil, zero value otherwise.
-func (t *TrafficData) GetCount() int {
-	if t == nil || t.Count == nil {
-		return 0
-	}
-	return *t.Count
-}
-
-// GetTimestamp returns the Timestamp field if it's non-nil, zero value otherwise.
-func (t *TrafficData) GetTimestamp() Timestamp {
-	if t == nil || t.Timestamp == nil {
-		return Timestamp{}
-	}
-	return *t.Timestamp
-}
-
-// GetUniques returns the Uniques field if it's non-nil, zero value otherwise.
-func (t *TrafficData) GetUniques() int {
-	if t == nil || t.Uniques == nil {
-		return 0
-	}
-	return *t.Uniques
-}
-
-// GetCount returns the Count field if it's non-nil, zero value otherwise.
-func (t *TrafficPath) GetCount() int {
-	if t == nil || t.Count == nil {
-		return 0
-	}
-	return *t.Count
-}
-
-// GetPath returns the Path field if it's non-nil, zero value otherwise.
-func (t *TrafficPath) GetPath() string {
-	if t == nil || t.Path == nil {
-		return ""
-	}
-	return *t.Path
-}
-
-// GetTitle returns the Title field if it's non-nil, zero value otherwise.
-func (t *TrafficPath) GetTitle() string {
-	if t == nil || t.Title == nil {
-		return ""
-	}
-	return *t.Title
-}
-
-// GetUniques returns the Uniques field if it's non-nil, zero value otherwise.
-func (t *TrafficPath) GetUniques() int {
-	if t == nil || t.Uniques == nil {
-		return 0
-	}
-	return *t.Uniques
-}
-
-// GetCount returns the Count field if it's non-nil, zero value otherwise.
-func (t *TrafficReferrer) GetCount() int {
-	if t == nil || t.Count == nil {
-		return 0
-	}
-	return *t.Count
-}
-
-// GetReferrer returns the Referrer field if it's non-nil, zero value otherwise.
-func (t *TrafficReferrer) GetReferrer() string {
-	if t == nil || t.Referrer == nil {
-		return ""
-	}
-	return *t.Referrer
-}
-
-// GetUniques returns the Uniques field if it's non-nil, zero value otherwise.
-func (t *TrafficReferrer) GetUniques() int {
-	if t == nil || t.Uniques == nil {
-		return 0
-	}
-	return *t.Uniques
-}
-
-// GetCount returns the Count field if it's non-nil, zero value otherwise.
-func (t *TrafficViews) GetCount() int {
-	if t == nil || t.Count == nil {
-		return 0
-	}
-	return *t.Count
-}
-
-// GetUniques returns the Uniques field if it's non-nil, zero value otherwise.
-func (t *TrafficViews) GetUniques() int {
-	if t == nil || t.Uniques == nil {
-		return 0
-	}
-	return *t.Uniques
-}
-
-// GetSHA returns the SHA field if it's non-nil, zero value otherwise.
-func (t *Tree) GetSHA() string {
-	if t == nil || t.SHA == nil {
-		return ""
-	}
-	return *t.SHA
-}
-
-// GetContent returns the Content field if it's non-nil, zero value otherwise.
-func (t *TreeEntry) GetContent() string {
-	if t == nil || t.Content == nil {
-		return ""
-	}
-	return *t.Content
-}
-
-// GetMode returns the Mode field if it's non-nil, zero value otherwise.
-func (t *TreeEntry) GetMode() string {
-	if t == nil || t.Mode == nil {
-		return ""
-	}
-	return *t.Mode
-}
-
-// GetPath returns the Path field if it's non-nil, zero value otherwise.
-func (t *TreeEntry) GetPath() string {
-	if t == nil || t.Path == nil {
-		return ""
-	}
-	return *t.Path
-}
-
-// GetSHA returns the SHA field if it's non-nil, zero value otherwise.
-func (t *TreeEntry) GetSHA() string {
-	if t == nil || t.SHA == nil {
-		return ""
-	}
-	return *t.SHA
-}
-
-// GetSize returns the Size field if it's non-nil, zero value otherwise.
-func (t *TreeEntry) GetSize() int {
-	if t == nil || t.Size == nil {
-		return 0
-	}
-	return *t.Size
-}
-
-// GetType returns the Type field if it's non-nil, zero value otherwise.
-func (t *TreeEntry) GetType() string {
-	if t == nil || t.Type == nil {
-		return ""
-	}
-	return *t.Type
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (t *TreeEntry) GetURL() string {
-	if t == nil || t.URL == nil {
-		return ""
-	}
-	return *t.URL
-}
-
-// GetAvatarURL returns the AvatarURL field if it's non-nil, zero value otherwise.
-func (u *User) GetAvatarURL() string {
-	if u == nil || u.AvatarURL == nil {
-		return ""
-	}
-	return *u.AvatarURL
-}
-
-// GetBio returns the Bio field if it's non-nil, zero value otherwise.
-func (u *User) GetBio() string {
-	if u == nil || u.Bio == nil {
-		return ""
-	}
-	return *u.Bio
-}
-
-// GetBlog returns the Blog field if it's non-nil, zero value otherwise.
-func (u *User) GetBlog() string {
-	if u == nil || u.Blog == nil {
-		return ""
-	}
-	return *u.Blog
-}
-
-// GetCollaborators returns the Collaborators field if it's non-nil, zero value otherwise.
-func (u *User) GetCollaborators() int {
-	if u == nil || u.Collaborators == nil {
-		return 0
-	}
-	return *u.Collaborators
-}
-
-// GetCompany returns the Company field if it's non-nil, zero value otherwise.
-func (u *User) GetCompany() string {
-	if u == nil || u.Company == nil {
-		return ""
-	}
-	return *u.Company
-}
-
-// GetCreatedAt returns the CreatedAt field if it's non-nil, zero value otherwise.
-func (u *User) GetCreatedAt() Timestamp {
-	if u == nil || u.CreatedAt == nil {
-		return Timestamp{}
-	}
-	return *u.CreatedAt
-}
-
-// GetDiskUsage returns the DiskUsage field if it's non-nil, zero value otherwise.
-func (u *User) GetDiskUsage() int {
-	if u == nil || u.DiskUsage == nil {
-		return 0
-	}
-	return *u.DiskUsage
-}
-
-// GetEmail returns the Email field if it's non-nil, zero value otherwise.
-func (u *User) GetEmail() string {
-	if u == nil || u.Email == nil {
-		return ""
-	}
-	return *u.Email
-}
-
-// GetEventsURL returns the EventsURL field if it's non-nil, zero value otherwise.
-func (u *User) GetEventsURL() string {
-	if u == nil || u.EventsURL == nil {
-		return ""
-	}
-	return *u.EventsURL
-}
-
-// GetFollowers returns the Followers field if it's non-nil, zero value otherwise.
-func (u *User) GetFollowers() int {
-	if u == nil || u.Followers == nil {
-		return 0
-	}
-	return *u.Followers
-}
-
-// GetFollowersURL returns the FollowersURL field if it's non-nil, zero value otherwise.
-func (u *User) GetFollowersURL() string {
-	if u == nil || u.FollowersURL == nil {
-		return ""
-	}
-	return *u.FollowersURL
-}
-
-// GetFollowing returns the Following field if it's non-nil, zero value otherwise.
-func (u *User) GetFollowing() int {
-	if u == nil || u.Following == nil {
-		return 0
-	}
-	return *u.Following
-}
-
-// GetFollowingURL returns the FollowingURL field if it's non-nil, zero value otherwise.
-func (u *User) GetFollowingURL() string {
-	if u == nil || u.FollowingURL == nil {
-		return ""
-	}
-	return *u.FollowingURL
-}
-
-// GetGistsURL returns the GistsURL field if it's non-nil, zero value otherwise.
-func (u *User) GetGistsURL() string {
-	if u == nil || u.GistsURL == nil {
-		return ""
-	}
-	return *u.GistsURL
-}
-
-// GetGravatarID returns the GravatarID field if it's non-nil, zero value otherwise.
-func (u *User) GetGravatarID() string {
-	if u == nil || u.GravatarID == nil {
-		return ""
-	}
-	return *u.GravatarID
-}
-
-// GetHireable returns the Hireable field if it's non-nil, zero value otherwise.
-func (u *User) GetHireable() bool {
-	if u == nil || u.Hireable == nil {
-		return false
-	}
-	return *u.Hireable
-}
-
-// GetHTMLURL returns the HTMLURL field if it's non-nil, zero value otherwise.
-func (u *User) GetHTMLURL() string {
-	if u == nil || u.HTMLURL == nil {
-		return ""
-	}
-	return *u.HTMLURL
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (u *User) GetID() int64 {
-	if u == nil || u.ID == nil {
-		return 0
-	}
-	return *u.ID
-}
-
-// GetLocation returns the Location field if it's non-nil, zero value otherwise.
-func (u *User) GetLocation() string {
-	if u == nil || u.Location == nil {
-		return ""
-	}
-	return *u.Location
-}
-
-// GetLogin returns the Login field if it's non-nil, zero value otherwise.
-func (u *User) GetLogin() string {
-	if u == nil || u.Login == nil {
-		return ""
-	}
-	return *u.Login
-}
-
-// GetName returns the Name field if it's non-nil, zero value otherwise.
-func (u *User) GetName() string {
-	if u == nil || u.Name == nil {
-		return ""
-	}
-	return *u.Name
-}
-
-// GetOrganizationsURL returns the OrganizationsURL field if it's non-nil, zero value otherwise.
-func (u *User) GetOrganizationsURL() string {
-	if u == nil || u.OrganizationsURL == nil {
-		return ""
-	}
-	return *u.OrganizationsURL
-}
-
-// GetOwnedPrivateRepos returns the OwnedPrivateRepos field if it's non-nil, zero value otherwise.
-func (u *User) GetOwnedPrivateRepos() int {
-	if u == nil || u.OwnedPrivateRepos == nil {
-		return 0
-	}
-	return *u.OwnedPrivateRepos
-}
-
-// GetPermissions returns the Permissions field if it's non-nil, zero value otherwise.
-func (u *User) GetPermissions() map[string]bool {
-	if u == nil || u.Permissions == nil {
-		return map[string]bool{}
-	}
-	return *u.Permissions
-}
-
-// GetPlan returns the Plan field.
-func (u *User) GetPlan() *Plan {
-	if u == nil {
-		return nil
-	}
-	return u.Plan
-}
-
-// GetPrivateGists returns the PrivateGists field if it's non-nil, zero value otherwise.
-func (u *User) GetPrivateGists() int {
-	if u == nil || u.PrivateGists == nil {
-		return 0
-	}
-	return *u.PrivateGists
-}
-
-// GetPublicGists returns the PublicGists field if it's non-nil, zero value otherwise.
-func (u *User) GetPublicGists() int {
-	if u == nil || u.PublicGists == nil {
-		return 0
-	}
-	return *u.PublicGists
-}
-
-// GetPublicRepos returns the PublicRepos field if it's non-nil, zero value otherwise.
-func (u *User) GetPublicRepos() int {
-	if u == nil || u.PublicRepos == nil {
-		return 0
-	}
-	return *u.PublicRepos
-}
-
-// GetReceivedEventsURL returns the ReceivedEventsURL field if it's non-nil, zero value otherwise.
-func (u *User) GetReceivedEventsURL() string {
-	if u == nil || u.ReceivedEventsURL == nil {
-		return ""
-	}
-	return *u.ReceivedEventsURL
-}
-
-// GetReposURL returns the ReposURL field if it's non-nil, zero value otherwise.
-func (u *User) GetReposURL() string {
-	if u == nil || u.ReposURL == nil {
-		return ""
-	}
-	return *u.ReposURL
-}
-
-// GetSiteAdmin returns the SiteAdmin field if it's non-nil, zero value otherwise.
-func (u *User) GetSiteAdmin() bool {
-	if u == nil || u.SiteAdmin == nil {
-		return false
-	}
-	return *u.SiteAdmin
-}
-
-// GetStarredURL returns the StarredURL field if it's non-nil, zero value otherwise.
-func (u *User) GetStarredURL() string {
-	if u == nil || u.StarredURL == nil {
-		return ""
-	}
-	return *u.StarredURL
-}
-
-// GetSubscriptionsURL returns the SubscriptionsURL field if it's non-nil, zero value otherwise.
-func (u *User) GetSubscriptionsURL() string {
-	if u == nil || u.SubscriptionsURL == nil {
-		return ""
-	}
-	return *u.SubscriptionsURL
-}
-
-// GetSuspendedAt returns the SuspendedAt field if it's non-nil, zero value otherwise.
-func (u *User) GetSuspendedAt() Timestamp {
-	if u == nil || u.SuspendedAt == nil {
-		return Timestamp{}
-	}
-	return *u.SuspendedAt
-}
-
-// GetTotalPrivateRepos returns the TotalPrivateRepos field if it's non-nil, zero value otherwise.
-func (u *User) GetTotalPrivateRepos() int {
-	if u == nil || u.TotalPrivateRepos == nil {
-		return 0
-	}
-	return *u.TotalPrivateRepos
-}
-
-// GetType returns the Type field if it's non-nil, zero value otherwise.
-func (u *User) GetType() string {
-	if u == nil || u.Type == nil {
-		return ""
-	}
-	return *u.Type
-}
-
-// GetUpdatedAt returns the UpdatedAt field if it's non-nil, zero value otherwise.
-func (u *User) GetUpdatedAt() Timestamp {
-	if u == nil || u.UpdatedAt == nil {
-		return Timestamp{}
-	}
-	return *u.UpdatedAt
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (u *User) GetURL() string {
-	if u == nil || u.URL == nil {
-		return ""
-	}
-	return *u.URL
-}
-
-// GetEmail returns the Email field if it's non-nil, zero value otherwise.
-func (u *UserEmail) GetEmail() string {
-	if u == nil || u.Email == nil {
-		return ""
-	}
-	return *u.Email
-}
-
-// GetPrimary returns the Primary field if it's non-nil, zero value otherwise.
-func (u *UserEmail) GetPrimary() bool {
-	if u == nil || u.Primary == nil {
-		return false
-	}
-	return *u.Primary
-}
-
-// GetVerified returns the Verified field if it's non-nil, zero value otherwise.
-func (u *UserEmail) GetVerified() bool {
-	if u == nil || u.Verified == nil {
-		return false
-	}
-	return *u.Verified
-}
-
-// GetAvatarURL returns the AvatarURL field if it's non-nil, zero value otherwise.
-func (u *UserLDAPMapping) GetAvatarURL() string {
-	if u == nil || u.AvatarURL == nil {
-		return ""
-	}
-	return *u.AvatarURL
-}
-
-// GetEventsURL returns the EventsURL field if it's non-nil, zero value otherwise.
-func (u *UserLDAPMapping) GetEventsURL() string {
-	if u == nil || u.EventsURL == nil {
-		return ""
-	}
-	return *u.EventsURL
-}
-
-// GetFollowersURL returns the FollowersURL field if it's non-nil, zero value otherwise.
-func (u *UserLDAPMapping) GetFollowersURL() string {
-	if u == nil || u.FollowersURL == nil {
-		return ""
-	}
-	return *u.FollowersURL
-}
-
-// GetFollowingURL returns the FollowingURL field if it's non-nil, zero value otherwise.
-func (u *UserLDAPMapping) GetFollowingURL() string {
-	if u == nil || u.FollowingURL == nil {
-		return ""
-	}
-	return *u.FollowingURL
-}
-
-// GetGistsURL returns the GistsURL field if it's non-nil, zero value otherwise.
-func (u *UserLDAPMapping) GetGistsURL() string {
-	if u == nil || u.GistsURL == nil {
-		return ""
-	}
-	return *u.GistsURL
-}
-
-// GetGravatarID returns the GravatarID field if it's non-nil, zero value otherwise.
-func (u *UserLDAPMapping) GetGravatarID() string {
-	if u == nil || u.GravatarID == nil {
-		return ""
-	}
-	return *u.GravatarID
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (u *UserLDAPMapping) GetID() int64 {
-	if u == nil || u.ID == nil {
-		return 0
-	}
-	return *u.ID
-}
-
-// GetLDAPDN returns the LDAPDN field if it's non-nil, zero value otherwise.
-func (u *UserLDAPMapping) GetLDAPDN() string {
-	if u == nil || u.LDAPDN == nil {
-		return ""
-	}
-	return *u.LDAPDN
-}
-
-// GetLogin returns the Login field if it's non-nil, zero value otherwise.
-func (u *UserLDAPMapping) GetLogin() string {
-	if u == nil || u.Login == nil {
-		return ""
-	}
-	return *u.Login
-}
-
-// GetOrganizationsURL returns the OrganizationsURL field if it's non-nil, zero value otherwise.
-func (u *UserLDAPMapping) GetOrganizationsURL() string {
-	if u == nil || u.OrganizationsURL == nil {
-		return ""
-	}
-	return *u.OrganizationsURL
-}
-
-// GetReceivedEventsURL returns the ReceivedEventsURL field if it's non-nil, zero value otherwise.
-func (u *UserLDAPMapping) GetReceivedEventsURL() string {
-	if u == nil || u.ReceivedEventsURL == nil {
-		return ""
-	}
-	return *u.ReceivedEventsURL
-}
-
-// GetReposURL returns the ReposURL field if it's non-nil, zero value otherwise.
-func (u *UserLDAPMapping) GetReposURL() string {
-	if u == nil || u.ReposURL == nil {
-		return ""
-	}
-	return *u.ReposURL
-}
-
-// GetSiteAdmin returns the SiteAdmin field if it's non-nil, zero value otherwise.
-func (u *UserLDAPMapping) GetSiteAdmin() bool {
-	if u == nil || u.SiteAdmin == nil {
-		return false
-	}
-	return *u.SiteAdmin
-}
-
-// GetStarredURL returns the StarredURL field if it's non-nil, zero value otherwise.
-func (u *UserLDAPMapping) GetStarredURL() string {
-	if u == nil || u.StarredURL == nil {
-		return ""
-	}
-	return *u.StarredURL
-}
-
-// GetSubscriptionsURL returns the SubscriptionsURL field if it's non-nil, zero value otherwise.
-func (u *UserLDAPMapping) GetSubscriptionsURL() string {
-	if u == nil || u.SubscriptionsURL == nil {
-		return ""
-	}
-	return *u.SubscriptionsURL
-}
-
-// GetType returns the Type field if it's non-nil, zero value otherwise.
-func (u *UserLDAPMapping) GetType() string {
-	if u == nil || u.Type == nil {
-		return ""
-	}
-	return *u.Type
-}
-
-// GetURL returns the URL field if it's non-nil, zero value otherwise.
-func (u *UserLDAPMapping) GetURL() string {
-	if u == nil || u.URL == nil {
-		return ""
-	}
-	return *u.URL
-}
-
-// GetIncompleteResults returns the IncompleteResults field if it's non-nil, zero value otherwise.
-func (u *UsersSearchResult) GetIncompleteResults() bool {
-	if u == nil || u.IncompleteResults == nil {
-		return false
-	}
-	return *u.IncompleteResults
-}
-
-// GetTotal returns the Total field if it's non-nil, zero value otherwise.
-func (u *UsersSearchResult) GetTotal() int {
-	if u == nil || u.Total == nil {
-		return 0
-	}
-	return *u.Total
-}
-
-// GetAdminUsers returns the AdminUsers field if it's non-nil, zero value otherwise.
-func (u *UserStats) GetAdminUsers() int {
-	if u == nil || u.AdminUsers == nil {
-		return 0
-	}
-	return *u.AdminUsers
-}
-
-// GetSuspendedUsers returns the SuspendedUsers field if it's non-nil, zero value otherwise.
-func (u *UserStats) GetSuspendedUsers() int {
-	if u == nil || u.SuspendedUsers == nil {
-		return 0
-	}
-	return *u.SuspendedUsers
-}
-
-// GetTotalUsers returns the TotalUsers field if it's non-nil, zero value otherwise.
-func (u *UserStats) GetTotalUsers() int {
-	if u == nil || u.TotalUsers == nil {
-		return 0
-	}
-	return *u.TotalUsers
-}
-
-// GetAction returns the Action field if it's non-nil, zero value otherwise.
-func (w *WatchEvent) GetAction() string {
-	if w == nil || w.Action == nil {
-		return ""
-	}
-	return *w.Action
-}
-
-// GetInstallation returns the Installation field.
-func (w *WatchEvent) GetInstallation() *Installation {
-	if w == nil {
-		return nil
-	}
-	return w.Installation
-}
-
-// GetRepo returns the Repo field.
-func (w *WatchEvent) GetRepo() *Repository {
-	if w == nil {
-		return nil
-	}
-	return w.Repo
-}
-
-// GetSender returns the Sender field.
-func (w *WatchEvent) GetSender() *User {
-	if w == nil {
-		return nil
-	}
-	return w.Sender
-}
-
-// GetEmail returns the Email field if it's non-nil, zero value otherwise.
-func (w *WebHookAuthor) GetEmail() string {
-	if w == nil || w.Email == nil {
-		return ""
-	}
-	return *w.Email
-}
-
-// GetName returns the Name field if it's non-nil, zero value otherwise.
-func (w *WebHookAuthor) GetName() string {
-	if w == nil || w.Name == nil {
-		return ""
-	}
-	return *w.Name
-}
-
-// GetUsername returns the Username field if it's non-nil, zero value otherwise.
-func (w *WebHookAuthor) GetUsername() string {
-	if w == nil || w.Username == nil {
-		return ""
-	}
-	return *w.Username
-}
-
-// GetAuthor returns the Author field.
-func (w *WebHookCommit) GetAuthor() *WebHookAuthor {
-	if w == nil {
-		return nil
-	}
-	return w.Author
-}
-
-// GetCommitter returns the Committer field.
-func (w *WebHookCommit) GetCommitter() *WebHookAuthor {
-	if w == nil {
-		return nil
-	}
-	return w.Committer
-}
-
-// GetDistinct returns the Distinct field if it's non-nil, zero value otherwise.
-func (w *WebHookCommit) GetDistinct() bool {
-	if w == nil || w.Distinct == nil {
-		return false
-	}
-	return *w.Distinct
-}
-
-// GetID returns the ID field if it's non-nil, zero value otherwise.
-func (w *WebHookCommit) GetID() string {
-	if w == nil || w.ID == nil {
-		return ""
-	}
-	return *w.ID
-}
-
-// GetMessage returns the Message field if it's non-nil, zero value otherwise.
-func (w *WebHookCommit) GetMessage() string {
-	if w == nil || w.Message == nil {
-		return ""
-	}
-	return *w.Message
-}
-
-// GetTimestamp returns the Timestamp field if it's non-nil, zero value otherwise.
-func (w *WebHookCommit) GetTimestamp() time.Time {
-	if w == nil || w.Timestamp == nil {
-		return time.Time{}
-	}
-	return *w.Timestamp
-}
-
-// GetAfter returns the After field if it's non-nil, zero value otherwise.
-func (w *WebHookPayload) GetAfter() string {
-	if w == nil || w.After == nil {
-		return ""
-	}
-	return *w.After
-}
-
-// GetBefore returns the Before field if it's non-nil, zero value otherwise.
-func (w *WebHookPayload) GetBefore() string {
-	if w == nil || w.Before == nil {
-		return ""
-	}
-	return *w.Before
-}
-
-// GetCompare returns the Compare field if it's non-nil, zero value otherwise.
-func (w *WebHookPayload) GetCompare() string {
-	if w == nil || w.Compare == nil {
-		return ""
-	}
-	return *w.Compare
-}
-
-// GetCreated returns the Created field if it's non-nil, zero value otherwise.
-func (w *WebHookPayload) GetCreated() bool {
-	if w == nil || w.Created == nil {
-		return false
-	}
-	return *w.Created
-}
-
-// GetDeleted returns the Deleted field if it's non-nil, zero value otherwise.
-func (w *WebHookPayload) GetDeleted() bool {
-	if w == nil || w.Deleted == nil {
-		return false
-	}
-	return *w.Deleted
-}
-
-// GetForced returns the Forced field if it's non-nil, zero value otherwise.
-func (w *WebHookPayload) GetForced() bool {
-	if w == nil || w.Forced == nil {
-		return false
-	}
-	return *w.Forced
-}
-
-// GetHeadCommit returns the HeadCommit field.
-func (w *WebHookPayload) GetHeadCommit() *WebHookCommit {
-	if w == nil {
-		return nil
-	}
-	return w.HeadCommit
-}
-
-// GetPusher returns the Pusher field.
-func (w *WebHookPayload) GetPusher() *User {
-	if w == nil {
-		return nil
-	}
-	return w.Pusher
-}
-
-// GetRef returns the Ref field if it's non-nil, zero value otherwise.
-func (w *WebHookPayload) GetRef() string {
-	if w == nil || w.Ref == nil {
-		return ""
-	}
-	return *w.Ref
-}
-
-// GetRepo returns the Repo field.
-func (w *WebHookPayload) GetRepo() *Repository {
-	if w == nil {
-		return nil
-	}
-	return w.Repo
-}
-
-// GetSender returns the Sender field.
-func (w *WebHookPayload) GetSender() *User {
-	if w == nil {
-		return nil
-	}
-	return w.Sender
-}
-
-// GetTotal returns the Total field if it's non-nil, zero value otherwise.
-func (w *WeeklyCommitActivity) GetTotal() int {
-	if w == nil || w.Total == nil {
-		return 0
-	}
-	return *w.Total
-}
-
-// GetWeek returns the Week field if it's non-nil, zero value otherwise.
-func (w *WeeklyCommitActivity) GetWeek() Timestamp {
-	if w == nil || w.Week == nil {
-		return Timestamp{}
-	}
-	return *w.Week
-}
-
-// GetAdditions returns the Additions field if it's non-nil, zero value otherwise.
-func (w *WeeklyStats) GetAdditions() int {
-	if w == nil || w.Additions == nil {
-		return 0
-	}
-	return *w.Additions
-}
-
-// GetCommits returns the Commits field if it's non-nil, zero value otherwise.
-func (w *WeeklyStats) GetCommits() int {
-	if w == nil || w.Commits == nil {
-		return 0
-	}
-	return *w.Commits
-}
-
-// GetDeletions returns the Deletions field if it's non-nil, zero value otherwise.
-func (w *WeeklyStats) GetDeletions() int {
-	if w == nil || w.Deletions == nil {
-		return 0
-	}
-	return *w.Deletions
-}
-
-// GetWeek returns the Week field if it's non-nil, zero value otherwise.
-func (w *WeeklyStats) GetWeek() Timestamp {
-	if w == nil || w.Week == nil {
-		return Timestamp{}
-	}
-	return *w.Week
-}

+ 0 - 980
vendor/github.com/google/go-github/github/github.go

@@ -1,980 +0,0 @@
-// Copyright 2013 The go-github 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-accessors.go
-
-package github
-
-import (
-	"bytes"
-	"context"
-	"encoding/json"
-	"errors"
-	"fmt"
-	"io"
-	"io/ioutil"
-	"net/http"
-	"net/url"
-	"reflect"
-	"strconv"
-	"strings"
-	"sync"
-	"time"
-
-	"github.com/google/go-querystring/query"
-)
-
-const (
-	libraryVersion = "15"
-	defaultBaseURL = "https://api.github.com/"
-	uploadBaseURL  = "https://uploads.github.com/"
-	userAgent      = "go-github/" + libraryVersion
-
-	headerRateLimit     = "X-RateLimit-Limit"
-	headerRateRemaining = "X-RateLimit-Remaining"
-	headerRateReset     = "X-RateLimit-Reset"
-	headerOTP           = "X-GitHub-OTP"
-
-	mediaTypeV3                = "application/vnd.github.v3+json"
-	defaultMediaType           = "application/octet-stream"
-	mediaTypeV3SHA             = "application/vnd.github.v3.sha"
-	mediaTypeV3Diff            = "application/vnd.github.v3.diff"
-	mediaTypeV3Patch           = "application/vnd.github.v3.patch"
-	mediaTypeOrgPermissionRepo = "application/vnd.github.v3.repository+json"
-
-	// Media Type values to access preview APIs
-
-	// https://developer.github.com/changes/2015-03-09-licenses-api/
-	mediaTypeLicensesPreview = "application/vnd.github.drax-preview+json"
-
-	// https://developer.github.com/changes/2014-12-09-new-attributes-for-stars-api/
-	mediaTypeStarringPreview = "application/vnd.github.v3.star+json"
-
-	// https://developer.github.com/changes/2015-11-11-protected-branches-api/
-	mediaTypeProtectedBranchesPreview = "application/vnd.github.loki-preview+json"
-
-	// https://help.github.com/enterprise/2.4/admin/guides/migrations/exporting-the-github-com-organization-s-repositories/
-	mediaTypeMigrationsPreview = "application/vnd.github.wyandotte-preview+json"
-
-	// https://developer.github.com/changes/2016-04-06-deployment-and-deployment-status-enhancements/
-	mediaTypeDeploymentStatusPreview = "application/vnd.github.ant-man-preview+json"
-
-	// https://developer.github.com/changes/2016-02-19-source-import-preview-api/
-	mediaTypeImportPreview = "application/vnd.github.barred-rock-preview"
-
-	// https://developer.github.com/changes/2016-05-12-reactions-api-preview/
-	mediaTypeReactionsPreview = "application/vnd.github.squirrel-girl-preview"
-
-	// https://developer.github.com/changes/2016-04-04-git-signing-api-preview/
-	mediaTypeGitSigningPreview = "application/vnd.github.cryptographer-preview+json"
-
-	// https://developer.github.com/changes/2016-05-23-timeline-preview-api/
-	mediaTypeTimelinePreview = "application/vnd.github.mockingbird-preview+json"
-
-	// https://developer.github.com/changes/2016-06-14-repository-invitations/
-	mediaTypeRepositoryInvitationsPreview = "application/vnd.github.swamp-thing-preview+json"
-
-	// https://developer.github.com/changes/2016-07-06-github-pages-preiew-api/
-	mediaTypePagesPreview = "application/vnd.github.mister-fantastic-preview+json"
-
-	// https://developer.github.com/changes/2016-09-14-projects-api/
-	mediaTypeProjectsPreview = "application/vnd.github.inertia-preview+json"
-
-	// https://developer.github.com/changes/2016-09-14-Integrations-Early-Access/
-	mediaTypeIntegrationPreview = "application/vnd.github.machine-man-preview+json"
-
-	// https://developer.github.com/changes/2017-01-05-commit-search-api/
-	mediaTypeCommitSearchPreview = "application/vnd.github.cloak-preview+json"
-
-	// https://developer.github.com/changes/2017-02-28-user-blocking-apis-and-webhook/
-	mediaTypeBlockUsersPreview = "application/vnd.github.giant-sentry-fist-preview+json"
-
-	// https://developer.github.com/changes/2017-02-09-community-health/
-	mediaTypeRepositoryCommunityHealthMetricsPreview = "application/vnd.github.black-panther-preview+json"
-
-	// https://developer.github.com/changes/2017-05-23-coc-api/
-	mediaTypeCodesOfConductPreview = "application/vnd.github.scarlet-witch-preview+json"
-
-	// https://developer.github.com/changes/2017-07-17-update-topics-on-repositories/
-	mediaTypeTopicsPreview = "application/vnd.github.mercy-preview+json"
-
-	// https://developer.github.com/changes/2017-07-26-team-review-request-thor-preview/
-	mediaTypeTeamReviewPreview = "application/vnd.github.thor-preview+json"
-
-	// https://developer.github.com/v3/apps/marketplace/
-	mediaTypeMarketplacePreview = "application/vnd.github.valkyrie-preview+json"
-
-	// https://developer.github.com/changes/2017-08-30-preview-nested-teams/
-	mediaTypeNestedTeamsPreview = "application/vnd.github.hellcat-preview+json"
-
-	// https://developer.github.com/changes/2017-11-09-repository-transfer-api-preview/
-	mediaTypeRepositoryTransferPreview = "application/vnd.github.nightshade-preview+json"
-
-	// https://developer.github.com/changes/2017-12-19-graphql-node-id/
-	mediaTypeGraphQLNodeIDPreview = "application/vnd.github.jean-grey-preview+json"
-)
-
-// A Client manages communication with the GitHub API.
-type Client struct {
-	clientMu sync.Mutex   // clientMu protects the client during calls that modify the CheckRedirect func.
-	client   *http.Client // HTTP client used to communicate with the API.
-
-	// Base URL for API requests. Defaults to the public GitHub API, but can be
-	// set to a domain endpoint to use with GitHub Enterprise. BaseURL should
-	// always be specified with a trailing slash.
-	BaseURL *url.URL
-
-	// Base URL for uploading files.
-	UploadURL *url.URL
-
-	// User agent used when communicating with the GitHub API.
-	UserAgent string
-
-	rateMu     sync.Mutex
-	rateLimits [categories]Rate // Rate limits for the client as determined by the most recent API calls.
-
-	common service // Reuse a single struct instead of allocating one for each service on the heap.
-
-	// Services used for talking to different parts of the GitHub API.
-	Activity       *ActivityService
-	Admin          *AdminService
-	Apps           *AppsService
-	Authorizations *AuthorizationsService
-	Gists          *GistsService
-	Git            *GitService
-	Gitignores     *GitignoresService
-	Issues         *IssuesService
-	Licenses       *LicensesService
-	Marketplace    *MarketplaceService
-	Migrations     *MigrationService
-	Organizations  *OrganizationsService
-	Projects       *ProjectsService
-	PullRequests   *PullRequestsService
-	Reactions      *ReactionsService
-	Repositories   *RepositoriesService
-	Search         *SearchService
-	Users          *UsersService
-}
-
-type service struct {
-	client *Client
-}
-
-// ListOptions specifies the optional parameters to various List methods that
-// support pagination.
-type ListOptions struct {
-	// For paginated result sets, page of results to retrieve.
-	Page int `url:"page,omitempty"`
-
-	// For paginated result sets, the number of results to include per page.
-	PerPage int `url:"per_page,omitempty"`
-}
-
-// UploadOptions specifies the parameters to methods that support uploads.
-type UploadOptions struct {
-	Name string `url:"name,omitempty"`
-}
-
-// RawType represents type of raw format of a request instead of JSON.
-type RawType uint8
-
-const (
-	// Diff format.
-	Diff RawType = 1 + iota
-	// Patch format.
-	Patch
-)
-
-// RawOptions specifies parameters when user wants to get raw format of
-// a response instead of JSON.
-type RawOptions struct {
-	Type RawType
-}
-
-// addOptions adds the parameters in opt as URL query parameters to s. opt
-// must be a struct whose fields may contain "url" tags.
-func addOptions(s string, opt interface{}) (string, error) {
-	v := reflect.ValueOf(opt)
-	if v.Kind() == reflect.Ptr && v.IsNil() {
-		return s, nil
-	}
-
-	u, err := url.Parse(s)
-	if err != nil {
-		return s, err
-	}
-
-	qs, err := query.Values(opt)
-	if err != nil {
-		return s, err
-	}
-
-	u.RawQuery = qs.Encode()
-	return u.String(), nil
-}
-
-// NewClient returns a new GitHub API client. If a nil httpClient is
-// provided, http.DefaultClient will be used. To use API methods which require
-// authentication, provide an http.Client that will perform the authentication
-// for you (such as that provided by the golang.org/x/oauth2 library).
-func NewClient(httpClient *http.Client) *Client {
-	if httpClient == nil {
-		httpClient = http.DefaultClient
-	}
-	baseURL, _ := url.Parse(defaultBaseURL)
-	uploadURL, _ := url.Parse(uploadBaseURL)
-
-	c := &Client{client: httpClient, BaseURL: baseURL, UserAgent: userAgent, UploadURL: uploadURL}
-	c.common.client = c
-	c.Activity = (*ActivityService)(&c.common)
-	c.Admin = (*AdminService)(&c.common)
-	c.Apps = (*AppsService)(&c.common)
-	c.Authorizations = (*AuthorizationsService)(&c.common)
-	c.Gists = (*GistsService)(&c.common)
-	c.Git = (*GitService)(&c.common)
-	c.Gitignores = (*GitignoresService)(&c.common)
-	c.Issues = (*IssuesService)(&c.common)
-	c.Licenses = (*LicensesService)(&c.common)
-	c.Marketplace = &MarketplaceService{client: c}
-	c.Migrations = (*MigrationService)(&c.common)
-	c.Organizations = (*OrganizationsService)(&c.common)
-	c.Projects = (*ProjectsService)(&c.common)
-	c.PullRequests = (*PullRequestsService)(&c.common)
-	c.Reactions = (*ReactionsService)(&c.common)
-	c.Repositories = (*RepositoriesService)(&c.common)
-	c.Search = (*SearchService)(&c.common)
-	c.Users = (*UsersService)(&c.common)
-	return c
-}
-
-// NewEnterpriseClient returns a new GitHub API client with provided
-// base URL and upload URL (often the same URL).
-// If either URL does not have a trailing slash, one is added automatically.
-// If a nil httpClient is provided, http.DefaultClient will be used.
-//
-// Note that NewEnterpriseClient is a convenience helper only;
-// its behavior is equivalent to using NewClient, followed by setting
-// the BaseURL and UploadURL fields.
-func NewEnterpriseClient(baseURL, uploadURL string, httpClient *http.Client) (*Client, error) {
-	baseEndpoint, err := url.Parse(baseURL)
-	if err != nil {
-		return nil, err
-	}
-	if !strings.HasSuffix(baseEndpoint.Path, "/") {
-		baseEndpoint.Path += "/"
-	}
-
-	uploadEndpoint, err := url.Parse(uploadURL)
-	if err != nil {
-		return nil, err
-	}
-	if !strings.HasSuffix(uploadEndpoint.Path, "/") {
-		uploadEndpoint.Path += "/"
-	}
-
-	c := NewClient(httpClient)
-	c.BaseURL = baseEndpoint
-	c.UploadURL = uploadEndpoint
-	return c, nil
-}
-
-// NewRequest creates an API request. A relative URL can be provided in urlStr,
-// in which case it is resolved relative to the BaseURL of the Client.
-// Relative URLs should always be specified without a preceding slash. If
-// specified, the value pointed to by body is JSON encoded and included as the
-// request body.
-func (c *Client) NewRequest(method, urlStr string, body interface{}) (*http.Request, error) {
-	if !strings.HasSuffix(c.BaseURL.Path, "/") {
-		return nil, fmt.Errorf("BaseURL must have a trailing slash, but %q does not", c.BaseURL)
-	}
-	u, err := c.BaseURL.Parse(urlStr)
-	if err != nil {
-		return nil, err
-	}
-
-	var buf io.ReadWriter
-	if body != nil {
-		buf = new(bytes.Buffer)
-		enc := json.NewEncoder(buf)
-		enc.SetEscapeHTML(false)
-		err := enc.Encode(body)
-		if err != nil {
-			return nil, err
-		}
-	}
-
-	req, err := http.NewRequest(method, u.String(), buf)
-	if err != nil {
-		return nil, err
-	}
-
-	if body != nil {
-		req.Header.Set("Content-Type", "application/json")
-	}
-	req.Header.Set("Accept", mediaTypeV3)
-	if c.UserAgent != "" {
-		req.Header.Set("User-Agent", c.UserAgent)
-	}
-	return req, nil
-}
-
-// NewUploadRequest creates an upload request. A relative URL can be provided in
-// urlStr, in which case it is resolved relative to the UploadURL of the Client.
-// Relative URLs should always be specified without a preceding slash.
-func (c *Client) NewUploadRequest(urlStr string, reader io.Reader, size int64, mediaType string) (*http.Request, error) {
-	if !strings.HasSuffix(c.UploadURL.Path, "/") {
-		return nil, fmt.Errorf("UploadURL must have a trailing slash, but %q does not", c.UploadURL)
-	}
-	u, err := c.UploadURL.Parse(urlStr)
-	if err != nil {
-		return nil, err
-	}
-
-	req, err := http.NewRequest("POST", u.String(), reader)
-	if err != nil {
-		return nil, err
-	}
-	req.ContentLength = size
-
-	if mediaType == "" {
-		mediaType = defaultMediaType
-	}
-	req.Header.Set("Content-Type", mediaType)
-	req.Header.Set("Accept", mediaTypeV3)
-	req.Header.Set("User-Agent", c.UserAgent)
-	return req, nil
-}
-
-// Response is a GitHub API response. This wraps the standard http.Response
-// returned from GitHub and provides convenient access to things like
-// pagination links.
-type Response struct {
-	*http.Response
-
-	// These fields provide the page values for paginating through a set of
-	// results. Any or all of these may be set to the zero value for
-	// responses that are not part of a paginated set, or for which there
-	// are no additional pages.
-
-	NextPage  int
-	PrevPage  int
-	FirstPage int
-	LastPage  int
-
-	Rate
-}
-
-// newResponse creates a new Response for the provided http.Response.
-// r must not be nil.
-func newResponse(r *http.Response) *Response {
-	response := &Response{Response: r}
-	response.populatePageValues()
-	response.Rate = parseRate(r)
-	return response
-}
-
-// populatePageValues parses the HTTP Link response headers and populates the
-// various pagination link values in the Response.
-func (r *Response) populatePageValues() {
-	if links, ok := r.Response.Header["Link"]; ok && len(links) > 0 {
-		for _, link := range strings.Split(links[0], ",") {
-			segments := strings.Split(strings.TrimSpace(link), ";")
-
-			// link must at least have href and rel
-			if len(segments) < 2 {
-				continue
-			}
-
-			// ensure href is properly formatted
-			if !strings.HasPrefix(segments[0], "<") || !strings.HasSuffix(segments[0], ">") {
-				continue
-			}
-
-			// try to pull out page parameter
-			url, err := url.Parse(segments[0][1 : len(segments[0])-1])
-			if err != nil {
-				continue
-			}
-			page := url.Query().Get("page")
-			if page == "" {
-				continue
-			}
-
-			for _, segment := range segments[1:] {
-				switch strings.TrimSpace(segment) {
-				case `rel="next"`:
-					r.NextPage, _ = strconv.Atoi(page)
-				case `rel="prev"`:
-					r.PrevPage, _ = strconv.Atoi(page)
-				case `rel="first"`:
-					r.FirstPage, _ = strconv.Atoi(page)
-				case `rel="last"`:
-					r.LastPage, _ = strconv.Atoi(page)
-				}
-
-			}
-		}
-	}
-}
-
-// parseRate parses the rate related headers.
-func parseRate(r *http.Response) Rate {
-	var rate Rate
-	if limit := r.Header.Get(headerRateLimit); limit != "" {
-		rate.Limit, _ = strconv.Atoi(limit)
-	}
-	if remaining := r.Header.Get(headerRateRemaining); remaining != "" {
-		rate.Remaining, _ = strconv.Atoi(remaining)
-	}
-	if reset := r.Header.Get(headerRateReset); reset != "" {
-		if v, _ := strconv.ParseInt(reset, 10, 64); v != 0 {
-			rate.Reset = Timestamp{time.Unix(v, 0)}
-		}
-	}
-	return rate
-}
-
-// Do sends an API request and returns the API response. The API response is
-// JSON decoded and stored in the value pointed to by v, or returned as an
-// error if an API error has occurred. If v implements the io.Writer
-// interface, the raw response body will be written to v, without attempting to
-// first decode it. If rate limit is exceeded and reset time is in the future,
-// Do returns *RateLimitError immediately without making a network API call.
-//
-// The provided ctx must be non-nil. If it is canceled or times out,
-// ctx.Err() will be returned.
-func (c *Client) Do(ctx context.Context, req *http.Request, v interface{}) (*Response, error) {
-	req = withContext(ctx, req)
-
-	rateLimitCategory := category(req.URL.Path)
-
-	// If we've hit rate limit, don't make further requests before Reset time.
-	if err := c.checkRateLimitBeforeDo(req, rateLimitCategory); err != nil {
-		return &Response{
-			Response: err.Response,
-			Rate:     err.Rate,
-		}, err
-	}
-
-	resp, err := c.client.Do(req)
-	if err != nil {
-		// If we got an error, and the context has been canceled,
-		// the context's error is probably more useful.
-		select {
-		case <-ctx.Done():
-			return nil, ctx.Err()
-		default:
-		}
-
-		// If the error type is *url.Error, sanitize its URL before returning.
-		if e, ok := err.(*url.Error); ok {
-			if url, err := url.Parse(e.URL); err == nil {
-				e.URL = sanitizeURL(url).String()
-				return nil, e
-			}
-		}
-
-		return nil, err
-	}
-
-	defer func() {
-		// Drain up to 512 bytes and close the body to let the Transport reuse the connection
-		io.CopyN(ioutil.Discard, resp.Body, 512)
-		resp.Body.Close()
-	}()
-
-	response := newResponse(resp)
-
-	c.rateMu.Lock()
-	c.rateLimits[rateLimitCategory] = response.Rate
-	c.rateMu.Unlock()
-
-	err = CheckResponse(resp)
-	if err != nil {
-		// even though there was an error, we still return the response
-		// in case the caller wants to inspect it further
-		return response, err
-	}
-
-	if v != nil {
-		if w, ok := v.(io.Writer); ok {
-			io.Copy(w, resp.Body)
-		} else {
-			err = json.NewDecoder(resp.Body).Decode(v)
-			if err == io.EOF {
-				err = nil // ignore EOF errors caused by empty response body
-			}
-		}
-	}
-
-	return response, err
-}
-
-// checkRateLimitBeforeDo does not make any network calls, but uses existing knowledge from
-// current client state in order to quickly check if *RateLimitError can be immediately returned
-// from Client.Do, and if so, returns it so that Client.Do can skip making a network API call unnecessarily.
-// Otherwise it returns nil, and Client.Do should proceed normally.
-func (c *Client) checkRateLimitBeforeDo(req *http.Request, rateLimitCategory rateLimitCategory) *RateLimitError {
-	c.rateMu.Lock()
-	rate := c.rateLimits[rateLimitCategory]
-	c.rateMu.Unlock()
-	if !rate.Reset.Time.IsZero() && rate.Remaining == 0 && time.Now().Before(rate.Reset.Time) {
-		// Create a fake response.
-		resp := &http.Response{
-			Status:     http.StatusText(http.StatusForbidden),
-			StatusCode: http.StatusForbidden,
-			Request:    req,
-			Header:     make(http.Header),
-			Body:       ioutil.NopCloser(strings.NewReader("")),
-		}
-		return &RateLimitError{
-			Rate:     rate,
-			Response: resp,
-			Message:  fmt.Sprintf("API rate limit of %v still exceeded until %v, not making remote request.", rate.Limit, rate.Reset.Time),
-		}
-	}
-
-	return nil
-}
-
-/*
-An ErrorResponse reports one or more errors caused by an API request.
-
-GitHub API docs: https://developer.github.com/v3/#client-errors
-*/
-type ErrorResponse struct {
-	Response *http.Response // HTTP response that caused this error
-	Message  string         `json:"message"` // error message
-	Errors   []Error        `json:"errors"`  // more detail on individual errors
-	// Block is only populated on certain types of errors such as code 451.
-	// See https://developer.github.com/changes/2016-03-17-the-451-status-code-is-now-supported/
-	// for more information.
-	Block *struct {
-		Reason    string     `json:"reason,omitempty"`
-		CreatedAt *Timestamp `json:"created_at,omitempty"`
-	} `json:"block,omitempty"`
-	// Most errors will also include a documentation_url field pointing
-	// to some content that might help you resolve the error, see
-	// https://developer.github.com/v3/#client-errors
-	DocumentationURL string `json:"documentation_url,omitempty"`
-}
-
-func (r *ErrorResponse) Error() string {
-	return fmt.Sprintf("%v %v: %d %v %+v",
-		r.Response.Request.Method, sanitizeURL(r.Response.Request.URL),
-		r.Response.StatusCode, r.Message, r.Errors)
-}
-
-// TwoFactorAuthError occurs when using HTTP Basic Authentication for a user
-// that has two-factor authentication enabled. The request can be reattempted
-// by providing a one-time password in the request.
-type TwoFactorAuthError ErrorResponse
-
-func (r *TwoFactorAuthError) Error() string { return (*ErrorResponse)(r).Error() }
-
-// RateLimitError occurs when GitHub returns 403 Forbidden response with a rate limit
-// remaining value of 0, and error message starts with "API rate limit exceeded for ".
-type RateLimitError struct {
-	Rate     Rate           // Rate specifies last known rate limit for the client
-	Response *http.Response // HTTP response that caused this error
-	Message  string         `json:"message"` // error message
-}
-
-func (r *RateLimitError) Error() string {
-	return fmt.Sprintf("%v %v: %d %v %v",
-		r.Response.Request.Method, sanitizeURL(r.Response.Request.URL),
-		r.Response.StatusCode, r.Message, formatRateReset(r.Rate.Reset.Time.Sub(time.Now())))
-}
-
-// AcceptedError occurs when GitHub returns 202 Accepted response with an
-// empty body, which means a job was scheduled on the GitHub side to process
-// the information needed and cache it.
-// Technically, 202 Accepted is not a real error, it's just used to
-// indicate that results are not ready yet, but should be available soon.
-// The request can be repeated after some time.
-type AcceptedError struct{}
-
-func (*AcceptedError) Error() string {
-	return "job scheduled on GitHub side; try again later"
-}
-
-// AbuseRateLimitError occurs when GitHub returns 403 Forbidden response with the
-// "documentation_url" field value equal to "https://developer.github.com/v3/#abuse-rate-limits".
-type AbuseRateLimitError struct {
-	Response *http.Response // HTTP response that caused this error
-	Message  string         `json:"message"` // error message
-
-	// RetryAfter is provided with some abuse rate limit errors. If present,
-	// it is the amount of time that the client should wait before retrying.
-	// Otherwise, the client should try again later (after an unspecified amount of time).
-	RetryAfter *time.Duration
-}
-
-func (r *AbuseRateLimitError) Error() string {
-	return fmt.Sprintf("%v %v: %d %v",
-		r.Response.Request.Method, sanitizeURL(r.Response.Request.URL),
-		r.Response.StatusCode, r.Message)
-}
-
-// sanitizeURL redacts the client_secret parameter from the URL which may be
-// exposed to the user.
-func sanitizeURL(uri *url.URL) *url.URL {
-	if uri == nil {
-		return nil
-	}
-	params := uri.Query()
-	if len(params.Get("client_secret")) > 0 {
-		params.Set("client_secret", "REDACTED")
-		uri.RawQuery = params.Encode()
-	}
-	return uri
-}
-
-/*
-An Error reports more details on an individual error in an ErrorResponse.
-These are the possible validation error codes:
-
-    missing:
-        resource does not exist
-    missing_field:
-        a required field on a resource has not been set
-    invalid:
-        the formatting of a field is invalid
-    already_exists:
-        another resource has the same valid as this field
-    custom:
-        some resources return this (e.g. github.User.CreateKey()), additional
-        information is set in the Message field of the Error
-
-GitHub API docs: https://developer.github.com/v3/#client-errors
-*/
-type Error struct {
-	Resource string `json:"resource"` // resource on which the error occurred
-	Field    string `json:"field"`    // field on which the error occurred
-	Code     string `json:"code"`     // validation error code
-	Message  string `json:"message"`  // Message describing the error. Errors with Code == "custom" will always have this set.
-}
-
-func (e *Error) Error() string {
-	return fmt.Sprintf("%v error caused by %v field on %v resource",
-		e.Code, e.Field, e.Resource)
-}
-
-// CheckResponse checks the API response for errors, and returns them if
-// present. A response is considered an error if it has a status code outside
-// the 200 range or equal to 202 Accepted.
-// API error responses are expected to have either no response
-// body, or a JSON response body that maps to ErrorResponse. Any other
-// response body will be silently ignored.
-//
-// The error type will be *RateLimitError for rate limit exceeded errors,
-// *AcceptedError for 202 Accepted status codes,
-// and *TwoFactorAuthError for two-factor authentication errors.
-func CheckResponse(r *http.Response) error {
-	if r.StatusCode == http.StatusAccepted {
-		return &AcceptedError{}
-	}
-	if c := r.StatusCode; 200 <= c && c <= 299 {
-		return nil
-	}
-	errorResponse := &ErrorResponse{Response: r}
-	data, err := ioutil.ReadAll(r.Body)
-	if err == nil && data != nil {
-		json.Unmarshal(data, errorResponse)
-	}
-	switch {
-	case r.StatusCode == http.StatusUnauthorized && strings.HasPrefix(r.Header.Get(headerOTP), "required"):
-		return (*TwoFactorAuthError)(errorResponse)
-	case r.StatusCode == http.StatusForbidden && r.Header.Get(headerRateRemaining) == "0" && strings.HasPrefix(errorResponse.Message, "API rate limit exceeded for "):
-		return &RateLimitError{
-			Rate:     parseRate(r),
-			Response: errorResponse.Response,
-			Message:  errorResponse.Message,
-		}
-	case r.StatusCode == http.StatusForbidden && errorResponse.DocumentationURL == "https://developer.github.com/v3/#abuse-rate-limits":
-		abuseRateLimitError := &AbuseRateLimitError{
-			Response: errorResponse.Response,
-			Message:  errorResponse.Message,
-		}
-		if v := r.Header["Retry-After"]; len(v) > 0 {
-			// According to GitHub support, the "Retry-After" header value will be
-			// an integer which represents the number of seconds that one should
-			// wait before resuming making requests.
-			retryAfterSeconds, _ := strconv.ParseInt(v[0], 10, 64) // Error handling is noop.
-			retryAfter := time.Duration(retryAfterSeconds) * time.Second
-			abuseRateLimitError.RetryAfter = &retryAfter
-		}
-		return abuseRateLimitError
-	default:
-		return errorResponse
-	}
-}
-
-// parseBoolResponse determines the boolean result from a GitHub API response.
-// Several GitHub API methods return boolean responses indicated by the HTTP
-// status code in the response (true indicated by a 204, false indicated by a
-// 404). This helper function will determine that result and hide the 404
-// error if present. Any other error will be returned through as-is.
-func parseBoolResponse(err error) (bool, error) {
-	if err == nil {
-		return true, nil
-	}
-
-	if err, ok := err.(*ErrorResponse); ok && err.Response.StatusCode == http.StatusNotFound {
-		// Simply false. In this one case, we do not pass the error through.
-		return false, nil
-	}
-
-	// some other real error occurred
-	return false, err
-}
-
-// Rate represents the rate limit for the current client.
-type Rate struct {
-	// The number of requests per hour the client is currently limited to.
-	Limit int `json:"limit"`
-
-	// The number of remaining requests the client can make this hour.
-	Remaining int `json:"remaining"`
-
-	// The time at which the current rate limit will reset.
-	Reset Timestamp `json:"reset"`
-}
-
-func (r Rate) String() string {
-	return Stringify(r)
-}
-
-// RateLimits represents the rate limits for the current client.
-type RateLimits struct {
-	// The rate limit for non-search API requests. Unauthenticated
-	// requests are limited to 60 per hour. Authenticated requests are
-	// limited to 5,000 per hour.
-	//
-	// GitHub API docs: https://developer.github.com/v3/#rate-limiting
-	Core *Rate `json:"core"`
-
-	// The rate limit for search API requests. Unauthenticated requests
-	// are limited to 10 requests per minutes. Authenticated requests are
-	// limited to 30 per minute.
-	//
-	// GitHub API docs: https://developer.github.com/v3/search/#rate-limit
-	Search *Rate `json:"search"`
-}
-
-func (r RateLimits) String() string {
-	return Stringify(r)
-}
-
-type rateLimitCategory uint8
-
-const (
-	coreCategory rateLimitCategory = iota
-	searchCategory
-
-	categories // An array of this length will be able to contain all rate limit categories.
-)
-
-// category returns the rate limit category of the endpoint, determined by Request.URL.Path.
-func category(path string) rateLimitCategory {
-	switch {
-	default:
-		return coreCategory
-	case strings.HasPrefix(path, "/search/"):
-		return searchCategory
-	}
-}
-
-// RateLimits returns the rate limits for the current client.
-func (c *Client) RateLimits(ctx context.Context) (*RateLimits, *Response, error) {
-	req, err := c.NewRequest("GET", "rate_limit", nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	response := new(struct {
-		Resources *RateLimits `json:"resources"`
-	})
-	resp, err := c.Do(ctx, req, response)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	if response.Resources != nil {
-		c.rateMu.Lock()
-		if response.Resources.Core != nil {
-			c.rateLimits[coreCategory] = *response.Resources.Core
-		}
-		if response.Resources.Search != nil {
-			c.rateLimits[searchCategory] = *response.Resources.Search
-		}
-		c.rateMu.Unlock()
-	}
-
-	return response.Resources, resp, nil
-}
-
-/*
-UnauthenticatedRateLimitedTransport allows you to make unauthenticated calls
-that need to use a higher rate limit associated with your OAuth application.
-
-	t := &github.UnauthenticatedRateLimitedTransport{
-		ClientID:     "your app's client ID",
-		ClientSecret: "your app's client secret",
-	}
-	client := github.NewClient(t.Client())
-
-This will append the querystring params client_id=xxx&client_secret=yyy to all
-requests.
-
-See https://developer.github.com/v3/#unauthenticated-rate-limited-requests for
-more information.
-*/
-type UnauthenticatedRateLimitedTransport struct {
-	// ClientID is the GitHub OAuth client ID of the current application, which
-	// can be found by selecting its entry in the list at
-	// https://github.com/settings/applications.
-	ClientID string
-
-	// ClientSecret is the GitHub OAuth client secret of the current
-	// application.
-	ClientSecret string
-
-	// Transport is the underlying HTTP transport to use when making requests.
-	// It will default to http.DefaultTransport if nil.
-	Transport http.RoundTripper
-}
-
-// RoundTrip implements the RoundTripper interface.
-func (t *UnauthenticatedRateLimitedTransport) RoundTrip(req *http.Request) (*http.Response, error) {
-	if t.ClientID == "" {
-		return nil, errors.New("t.ClientID is empty")
-	}
-	if t.ClientSecret == "" {
-		return nil, errors.New("t.ClientSecret is empty")
-	}
-
-	// To set extra querystring params, we must make a copy of the Request so
-	// that we don't modify the Request we were given. This is required by the
-	// specification of http.RoundTripper.
-	//
-	// Since we are going to modify only req.URL here, we only need a deep copy
-	// of req.URL.
-	req2 := new(http.Request)
-	*req2 = *req
-	req2.URL = new(url.URL)
-	*req2.URL = *req.URL
-
-	q := req2.URL.Query()
-	q.Set("client_id", t.ClientID)
-	q.Set("client_secret", t.ClientSecret)
-	req2.URL.RawQuery = q.Encode()
-
-	// Make the HTTP request.
-	return t.transport().RoundTrip(req2)
-}
-
-// Client returns an *http.Client that makes requests which are subject to the
-// rate limit of your OAuth application.
-func (t *UnauthenticatedRateLimitedTransport) Client() *http.Client {
-	return &http.Client{Transport: t}
-}
-
-func (t *UnauthenticatedRateLimitedTransport) transport() http.RoundTripper {
-	if t.Transport != nil {
-		return t.Transport
-	}
-	return http.DefaultTransport
-}
-
-// BasicAuthTransport is an http.RoundTripper that authenticates all requests
-// using HTTP Basic Authentication with the provided username and password. It
-// additionally supports users who have two-factor authentication enabled on
-// their GitHub account.
-type BasicAuthTransport struct {
-	Username string // GitHub username
-	Password string // GitHub password
-	OTP      string // one-time password for users with two-factor auth enabled
-
-	// Transport is the underlying HTTP transport to use when making requests.
-	// It will default to http.DefaultTransport if nil.
-	Transport http.RoundTripper
-}
-
-// RoundTrip implements the RoundTripper interface.
-func (t *BasicAuthTransport) RoundTrip(req *http.Request) (*http.Response, error) {
-	// To set extra headers, we must make a copy of the Request so
-	// that we don't modify the Request we were given. This is required by the
-	// specification of http.RoundTripper.
-	//
-	// Since we are going to modify only req.Header here, we only need a deep copy
-	// of req.Header.
-	req2 := new(http.Request)
-	*req2 = *req
-	req2.Header = make(http.Header, len(req.Header))
-	for k, s := range req.Header {
-		req2.Header[k] = append([]string(nil), s...)
-	}
-
-	req2.SetBasicAuth(t.Username, t.Password)
-	if t.OTP != "" {
-		req2.Header.Set(headerOTP, t.OTP)
-	}
-	return t.transport().RoundTrip(req2)
-}
-
-// Client returns an *http.Client that makes requests that are authenticated
-// using HTTP Basic Authentication.
-func (t *BasicAuthTransport) Client() *http.Client {
-	return &http.Client{Transport: t}
-}
-
-func (t *BasicAuthTransport) transport() http.RoundTripper {
-	if t.Transport != nil {
-		return t.Transport
-	}
-	return http.DefaultTransport
-}
-
-// formatRateReset formats d to look like "[rate reset in 2s]" or
-// "[rate reset in 87m02s]" for the positive durations. And like "[rate limit was reset 87m02s ago]"
-// for the negative cases.
-func formatRateReset(d time.Duration) string {
-	isNegative := d < 0
-	if isNegative {
-		d *= -1
-	}
-	secondsTotal := int(0.5 + d.Seconds())
-	minutes := secondsTotal / 60
-	seconds := secondsTotal - minutes*60
-
-	var timeString string
-	if minutes > 0 {
-		timeString = fmt.Sprintf("%dm%02ds", minutes, seconds)
-	} else {
-		timeString = fmt.Sprintf("%ds", seconds)
-	}
-
-	if isNegative {
-		return fmt.Sprintf("[rate limit was reset %v ago]", timeString)
-	}
-	return fmt.Sprintf("[rate reset in %v]", timeString)
-}
-
-// Bool is a helper routine that allocates a new bool value
-// to store v and returns a pointer to it.
-func Bool(v bool) *bool { return &v }
-
-// Int is a helper routine that allocates a new int value
-// to store v and returns a pointer to it.
-func Int(v int) *int { return &v }
-
-// Int64 is a helper routine that allocates a new int64 value
-// to store v and returns a pointer to it.
-func Int64(v int64) *int64 { return &v }
-
-// String is a helper routine that allocates a new string value
-// to store v and returns a pointer to it.
-func String(v string) *string { return &v }

+ 0 - 64
vendor/github.com/google/go-github/github/gitignore.go

@@ -1,64 +0,0 @@
-// Copyright 2013 The go-github 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 github
-
-import (
-	"context"
-	"fmt"
-)
-
-// GitignoresService provides access to the gitignore related functions in the
-// GitHub API.
-//
-// GitHub API docs: https://developer.github.com/v3/gitignore/
-type GitignoresService service
-
-// Gitignore represents a .gitignore file as returned by the GitHub API.
-type Gitignore struct {
-	Name   *string `json:"name,omitempty"`
-	Source *string `json:"source,omitempty"`
-}
-
-func (g Gitignore) String() string {
-	return Stringify(g)
-}
-
-// List all available Gitignore templates.
-//
-// GitHub API docs: https://developer.github.com/v3/gitignore/#listing-available-templates
-func (s GitignoresService) List(ctx context.Context) ([]string, *Response, error) {
-	req, err := s.client.NewRequest("GET", "gitignore/templates", nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	var availableTemplates []string
-	resp, err := s.client.Do(ctx, req, &availableTemplates)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return availableTemplates, resp, nil
-}
-
-// Get a Gitignore by name.
-//
-// GitHub API docs: https://developer.github.com/v3/gitignore/#get-a-single-template
-func (s GitignoresService) Get(ctx context.Context, name string) (*Gitignore, *Response, error) {
-	u := fmt.Sprintf("gitignore/templates/%v", name)
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	gitignore := new(Gitignore)
-	resp, err := s.client.Do(ctx, req, gitignore)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return gitignore, resp, nil
-}

+ 0 - 330
vendor/github.com/google/go-github/github/issues.go

@@ -1,330 +0,0 @@
-// Copyright 2013 The go-github 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 github
-
-import (
-	"context"
-	"fmt"
-	"strings"
-	"time"
-)
-
-// IssuesService handles communication with the issue related
-// methods of the GitHub API.
-//
-// GitHub API docs: https://developer.github.com/v3/issues/
-type IssuesService service
-
-// Issue represents a GitHub issue on a repository.
-//
-// Note: As far as the GitHub API is concerned, every pull request is an issue,
-// but not every issue is a pull request. Some endpoints, events, and webhooks
-// may also return pull requests via this struct. If PullRequestLinks is nil,
-// this is an issue, and if PullRequestLinks is not nil, this is a pull request.
-// The IsPullRequest helper method can be used to check that.
-type Issue struct {
-	ID               *int64            `json:"id,omitempty"`
-	Number           *int              `json:"number,omitempty"`
-	State            *string           `json:"state,omitempty"`
-	Locked           *bool             `json:"locked,omitempty"`
-	Title            *string           `json:"title,omitempty"`
-	Body             *string           `json:"body,omitempty"`
-	User             *User             `json:"user,omitempty"`
-	Labels           []Label           `json:"labels,omitempty"`
-	Assignee         *User             `json:"assignee,omitempty"`
-	Comments         *int              `json:"comments,omitempty"`
-	ClosedAt         *time.Time        `json:"closed_at,omitempty"`
-	CreatedAt        *time.Time        `json:"created_at,omitempty"`
-	UpdatedAt        *time.Time        `json:"updated_at,omitempty"`
-	ClosedBy         *User             `json:"closed_by,omitempty"`
-	URL              *string           `json:"url,omitempty"`
-	HTMLURL          *string           `json:"html_url,omitempty"`
-	CommentsURL      *string           `json:"comments_url,omitempty"`
-	EventsURL        *string           `json:"events_url,omitempty"`
-	LabelsURL        *string           `json:"labels_url,omitempty"`
-	RepositoryURL    *string           `json:"repository_url,omitempty"`
-	Milestone        *Milestone        `json:"milestone,omitempty"`
-	PullRequestLinks *PullRequestLinks `json:"pull_request,omitempty"`
-	Repository       *Repository       `json:"repository,omitempty"`
-	Reactions        *Reactions        `json:"reactions,omitempty"`
-	Assignees        []*User           `json:"assignees,omitempty"`
-	NodeID           *string           `json:"node_id,omitempty"`
-
-	// TextMatches is only populated from search results that request text matches
-	// See: search.go and https://developer.github.com/v3/search/#text-match-metadata
-	TextMatches []TextMatch `json:"text_matches,omitempty"`
-}
-
-func (i Issue) String() string {
-	return Stringify(i)
-}
-
-// IsPullRequest reports whether the issue is also a pull request. It uses the
-// method recommended by GitHub's API documentation, which is to check whether
-// PullRequestLinks is non-nil.
-func (i Issue) IsPullRequest() bool {
-	return i.PullRequestLinks != nil
-}
-
-// IssueRequest represents a request to create/edit an issue.
-// It is separate from Issue above because otherwise Labels
-// and Assignee fail to serialize to the correct JSON.
-type IssueRequest struct {
-	Title     *string   `json:"title,omitempty"`
-	Body      *string   `json:"body,omitempty"`
-	Labels    *[]string `json:"labels,omitempty"`
-	Assignee  *string   `json:"assignee,omitempty"`
-	State     *string   `json:"state,omitempty"`
-	Milestone *int      `json:"milestone,omitempty"`
-	Assignees *[]string `json:"assignees,omitempty"`
-}
-
-// IssueListOptions specifies the optional parameters to the IssuesService.List
-// and IssuesService.ListByOrg methods.
-type IssueListOptions struct {
-	// Filter specifies which issues to list. Possible values are: assigned,
-	// created, mentioned, subscribed, all. Default is "assigned".
-	Filter string `url:"filter,omitempty"`
-
-	// State filters issues based on their state. Possible values are: open,
-	// closed, all. Default is "open".
-	State string `url:"state,omitempty"`
-
-	// Labels filters issues based on their label.
-	Labels []string `url:"labels,comma,omitempty"`
-
-	// Sort specifies how to sort issues. Possible values are: created, updated,
-	// and comments. Default value is "created".
-	Sort string `url:"sort,omitempty"`
-
-	// Direction in which to sort issues. Possible values are: asc, desc.
-	// Default is "desc".
-	Direction string `url:"direction,omitempty"`
-
-	// Since filters issues by time.
-	Since time.Time `url:"since,omitempty"`
-
-	ListOptions
-}
-
-// PullRequestLinks object is added to the Issue object when it's an issue included
-// in the IssueCommentEvent webhook payload, if the webhook is fired by a comment on a PR.
-type PullRequestLinks struct {
-	URL      *string `json:"url,omitempty"`
-	HTMLURL  *string `json:"html_url,omitempty"`
-	DiffURL  *string `json:"diff_url,omitempty"`
-	PatchURL *string `json:"patch_url,omitempty"`
-}
-
-// List the issues for the authenticated user. If all is true, list issues
-// across all the user's visible repositories including owned, member, and
-// organization repositories; if false, list only owned and member
-// repositories.
-//
-// GitHub API docs: https://developer.github.com/v3/issues/#list-issues
-func (s *IssuesService) List(ctx context.Context, all bool, opt *IssueListOptions) ([]*Issue, *Response, error) {
-	var u string
-	if all {
-		u = "issues"
-	} else {
-		u = "user/issues"
-	}
-	return s.listIssues(ctx, u, opt)
-}
-
-// ListByOrg fetches the issues in the specified organization for the
-// authenticated user.
-//
-// GitHub API docs: https://developer.github.com/v3/issues/#list-issues
-func (s *IssuesService) ListByOrg(ctx context.Context, org string, opt *IssueListOptions) ([]*Issue, *Response, error) {
-	u := fmt.Sprintf("orgs/%v/issues", org)
-	return s.listIssues(ctx, u, opt)
-}
-
-func (s *IssuesService) listIssues(ctx context.Context, u string, opt *IssueListOptions) ([]*Issue, *Response, error) {
-	u, err := addOptions(u, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept headers when APIs fully launch.
-	acceptHeaders := []string{mediaTypeReactionsPreview, mediaTypeGraphQLNodeIDPreview}
-	req.Header.Set("Accept", strings.Join(acceptHeaders, ", "))
-
-	var issues []*Issue
-	resp, err := s.client.Do(ctx, req, &issues)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return issues, resp, nil
-}
-
-// IssueListByRepoOptions specifies the optional parameters to the
-// IssuesService.ListByRepo method.
-type IssueListByRepoOptions struct {
-	// Milestone limits issues for the specified milestone. Possible values are
-	// a milestone number, "none" for issues with no milestone, "*" for issues
-	// with any milestone.
-	Milestone string `url:"milestone,omitempty"`
-
-	// State filters issues based on their state. Possible values are: open,
-	// closed, all. Default is "open".
-	State string `url:"state,omitempty"`
-
-	// Assignee filters issues based on their assignee. Possible values are a
-	// user name, "none" for issues that are not assigned, "*" for issues with
-	// any assigned user.
-	Assignee string `url:"assignee,omitempty"`
-
-	// Creator filters issues based on their creator.
-	Creator string `url:"creator,omitempty"`
-
-	// Mentioned filters issues to those mentioned a specific user.
-	Mentioned string `url:"mentioned,omitempty"`
-
-	// Labels filters issues based on their label.
-	Labels []string `url:"labels,omitempty,comma"`
-
-	// Sort specifies how to sort issues. Possible values are: created, updated,
-	// and comments. Default value is "created".
-	Sort string `url:"sort,omitempty"`
-
-	// Direction in which to sort issues. Possible values are: asc, desc.
-	// Default is "desc".
-	Direction string `url:"direction,omitempty"`
-
-	// Since filters issues by time.
-	Since time.Time `url:"since,omitempty"`
-
-	ListOptions
-}
-
-// ListByRepo lists the issues for the specified repository.
-//
-// GitHub API docs: https://developer.github.com/v3/issues/#list-issues-for-a-repository
-func (s *IssuesService) ListByRepo(ctx context.Context, owner string, repo string, opt *IssueListByRepoOptions) ([]*Issue, *Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/issues", owner, repo)
-	u, err := addOptions(u, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept headers when APIs fully launch.
-	acceptHeaders := []string{mediaTypeReactionsPreview, mediaTypeGraphQLNodeIDPreview}
-	req.Header.Set("Accept", strings.Join(acceptHeaders, ", "))
-
-	var issues []*Issue
-	resp, err := s.client.Do(ctx, req, &issues)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return issues, resp, nil
-}
-
-// Get a single issue.
-//
-// GitHub API docs: https://developer.github.com/v3/issues/#get-a-single-issue
-func (s *IssuesService) Get(ctx context.Context, owner string, repo string, number int) (*Issue, *Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/issues/%d", owner, repo, number)
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept headers when APIs fully launch.
-	acceptHeaders := []string{mediaTypeReactionsPreview, mediaTypeGraphQLNodeIDPreview}
-	req.Header.Set("Accept", strings.Join(acceptHeaders, ", "))
-
-	issue := new(Issue)
-	resp, err := s.client.Do(ctx, req, issue)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return issue, resp, nil
-}
-
-// Create a new issue on the specified repository.
-//
-// GitHub API docs: https://developer.github.com/v3/issues/#create-an-issue
-func (s *IssuesService) Create(ctx context.Context, owner string, repo string, issue *IssueRequest) (*Issue, *Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/issues", owner, repo)
-	req, err := s.client.NewRequest("POST", u, issue)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview)
-
-	i := new(Issue)
-	resp, err := s.client.Do(ctx, req, i)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return i, resp, nil
-}
-
-// Edit an issue.
-//
-// GitHub API docs: https://developer.github.com/v3/issues/#edit-an-issue
-func (s *IssuesService) Edit(ctx context.Context, owner string, repo string, number int, issue *IssueRequest) (*Issue, *Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/issues/%d", owner, repo, number)
-	req, err := s.client.NewRequest("PATCH", u, issue)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview)
-
-	i := new(Issue)
-	resp, err := s.client.Do(ctx, req, i)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return i, resp, nil
-}
-
-// Lock an issue's conversation.
-//
-// GitHub API docs: https://developer.github.com/v3/issues/#lock-an-issue
-func (s *IssuesService) Lock(ctx context.Context, owner string, repo string, number int) (*Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/issues/%d/lock", owner, repo, number)
-	req, err := s.client.NewRequest("PUT", u, nil)
-	if err != nil {
-		return nil, err
-	}
-
-	return s.client.Do(ctx, req, nil)
-}
-
-// Unlock an issue's conversation.
-//
-// GitHub API docs: https://developer.github.com/v3/issues/#unlock-an-issue
-func (s *IssuesService) Unlock(ctx context.Context, owner string, repo string, number int) (*Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/issues/%d/lock", owner, repo, number)
-	req, err := s.client.NewRequest("DELETE", u, nil)
-	if err != nil {
-		return nil, err
-	}
-
-	return s.client.Do(ctx, req, nil)
-}

+ 0 - 85
vendor/github.com/google/go-github/github/issues_assignees.go

@@ -1,85 +0,0 @@
-// Copyright 2013 The go-github 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 github
-
-import (
-	"context"
-	"fmt"
-)
-
-// ListAssignees fetches all available assignees (owners and collaborators) to
-// which issues may be assigned.
-//
-// GitHub API docs: https://developer.github.com/v3/issues/assignees/#list-assignees
-func (s *IssuesService) ListAssignees(ctx context.Context, owner, repo string, opt *ListOptions) ([]*User, *Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/assignees", owner, repo)
-	u, err := addOptions(u, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-	var assignees []*User
-	resp, err := s.client.Do(ctx, req, &assignees)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return assignees, resp, nil
-}
-
-// IsAssignee checks if a user is an assignee for the specified repository.
-//
-// GitHub API docs: https://developer.github.com/v3/issues/assignees/#check-assignee
-func (s *IssuesService) IsAssignee(ctx context.Context, owner, repo, user string) (bool, *Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/assignees/%v", owner, repo, user)
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return false, nil, err
-	}
-	resp, err := s.client.Do(ctx, req, nil)
-	assignee, err := parseBoolResponse(err)
-	return assignee, resp, err
-}
-
-// AddAssignees adds the provided GitHub users as assignees to the issue.
-//
-// GitHub API docs: https://developer.github.com/v3/issues/assignees/#add-assignees-to-an-issue
-func (s *IssuesService) AddAssignees(ctx context.Context, owner, repo string, number int, assignees []string) (*Issue, *Response, error) {
-	users := &struct {
-		Assignees []string `json:"assignees,omitempty"`
-	}{Assignees: assignees}
-	u := fmt.Sprintf("repos/%v/%v/issues/%v/assignees", owner, repo, number)
-	req, err := s.client.NewRequest("POST", u, users)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	issue := &Issue{}
-	resp, err := s.client.Do(ctx, req, issue)
-	return issue, resp, err
-}
-
-// RemoveAssignees removes the provided GitHub users as assignees from the issue.
-//
-// GitHub API docs: https://developer.github.com/v3/issues/assignees/#remove-assignees-from-an-issue
-func (s *IssuesService) RemoveAssignees(ctx context.Context, owner, repo string, number int, assignees []string) (*Issue, *Response, error) {
-	users := &struct {
-		Assignees []string `json:"assignees,omitempty"`
-	}{Assignees: assignees}
-	u := fmt.Sprintf("repos/%v/%v/issues/%v/assignees", owner, repo, number)
-	req, err := s.client.NewRequest("DELETE", u, users)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	issue := &Issue{}
-	resp, err := s.client.Do(ctx, req, issue)
-	return issue, resp, err
-}

+ 0 - 148
vendor/github.com/google/go-github/github/issues_comments.go

@@ -1,148 +0,0 @@
-// Copyright 2013 The go-github 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 github
-
-import (
-	"context"
-	"fmt"
-	"time"
-)
-
-// IssueComment represents a comment left on an issue.
-type IssueComment struct {
-	ID        *int64     `json:"id,omitempty"`
-	Body      *string    `json:"body,omitempty"`
-	User      *User      `json:"user,omitempty"`
-	Reactions *Reactions `json:"reactions,omitempty"`
-	CreatedAt *time.Time `json:"created_at,omitempty"`
-	UpdatedAt *time.Time `json:"updated_at,omitempty"`
-	URL       *string    `json:"url,omitempty"`
-	HTMLURL   *string    `json:"html_url,omitempty"`
-	IssueURL  *string    `json:"issue_url,omitempty"`
-}
-
-func (i IssueComment) String() string {
-	return Stringify(i)
-}
-
-// IssueListCommentsOptions specifies the optional parameters to the
-// IssuesService.ListComments method.
-type IssueListCommentsOptions struct {
-	// Sort specifies how to sort comments. Possible values are: created, updated.
-	Sort string `url:"sort,omitempty"`
-
-	// Direction in which to sort comments. Possible values are: asc, desc.
-	Direction string `url:"direction,omitempty"`
-
-	// Since filters comments by time.
-	Since time.Time `url:"since,omitempty"`
-
-	ListOptions
-}
-
-// ListComments lists all comments on the specified issue. Specifying an issue
-// number of 0 will return all comments on all issues for the repository.
-//
-// GitHub API docs: https://developer.github.com/v3/issues/comments/#list-comments-on-an-issue
-func (s *IssuesService) ListComments(ctx context.Context, owner string, repo string, number int, opt *IssueListCommentsOptions) ([]*IssueComment, *Response, error) {
-	var u string
-	if number == 0 {
-		u = fmt.Sprintf("repos/%v/%v/issues/comments", owner, repo)
-	} else {
-		u = fmt.Sprintf("repos/%v/%v/issues/%d/comments", owner, repo, number)
-	}
-	u, err := addOptions(u, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeReactionsPreview)
-
-	var comments []*IssueComment
-	resp, err := s.client.Do(ctx, req, &comments)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return comments, resp, nil
-}
-
-// GetComment fetches the specified issue comment.
-//
-// GitHub API docs: https://developer.github.com/v3/issues/comments/#get-a-single-comment
-func (s *IssuesService) GetComment(ctx context.Context, owner string, repo string, id int) (*IssueComment, *Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/issues/comments/%d", owner, repo, id)
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeReactionsPreview)
-
-	comment := new(IssueComment)
-	resp, err := s.client.Do(ctx, req, comment)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return comment, resp, nil
-}
-
-// CreateComment creates a new comment on the specified issue.
-//
-// GitHub API docs: https://developer.github.com/v3/issues/comments/#create-a-comment
-func (s *IssuesService) CreateComment(ctx context.Context, owner string, repo string, number int, comment *IssueComment) (*IssueComment, *Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/issues/%d/comments", owner, repo, number)
-	req, err := s.client.NewRequest("POST", u, comment)
-	if err != nil {
-		return nil, nil, err
-	}
-	c := new(IssueComment)
-	resp, err := s.client.Do(ctx, req, c)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return c, resp, nil
-}
-
-// EditComment updates an issue comment.
-//
-// GitHub API docs: https://developer.github.com/v3/issues/comments/#edit-a-comment
-func (s *IssuesService) EditComment(ctx context.Context, owner string, repo string, id int, comment *IssueComment) (*IssueComment, *Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/issues/comments/%d", owner, repo, id)
-	req, err := s.client.NewRequest("PATCH", u, comment)
-	if err != nil {
-		return nil, nil, err
-	}
-	c := new(IssueComment)
-	resp, err := s.client.Do(ctx, req, c)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return c, resp, nil
-}
-
-// DeleteComment deletes an issue comment.
-//
-// GitHub API docs: https://developer.github.com/v3/issues/comments/#delete-a-comment
-func (s *IssuesService) DeleteComment(ctx context.Context, owner string, repo string, id int) (*Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/issues/comments/%d", owner, repo, id)
-	req, err := s.client.NewRequest("DELETE", u, nil)
-	if err != nil {
-		return nil, err
-	}
-	return s.client.Do(ctx, req, nil)
-}

+ 0 - 151
vendor/github.com/google/go-github/github/issues_events.go

@@ -1,151 +0,0 @@
-// Copyright 2014 The go-github 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 github
-
-import (
-	"context"
-	"fmt"
-	"time"
-)
-
-// IssueEvent represents an event that occurred around an Issue or Pull Request.
-type IssueEvent struct {
-	ID  *int64  `json:"id,omitempty"`
-	URL *string `json:"url,omitempty"`
-
-	// The User that generated this event.
-	Actor *User `json:"actor,omitempty"`
-
-	// Event identifies the actual type of Event that occurred. Possible
-	// values are:
-	//
-	//     closed
-	//       The Actor closed the issue.
-	//       If the issue was closed by commit message, CommitID holds the SHA1 hash of the commit.
-	//
-	//     merged
-	//       The Actor merged into master a branch containing a commit mentioning the issue.
-	//       CommitID holds the SHA1 of the merge commit.
-	//
-	//     referenced
-	//       The Actor committed to master a commit mentioning the issue in its commit message.
-	//       CommitID holds the SHA1 of the commit.
-	//
-	//     reopened, locked, unlocked
-	//       The Actor did that to the issue.
-	//
-	//     renamed
-	//       The Actor changed the issue title from Rename.From to Rename.To.
-	//
-	//     mentioned
-	//       Someone unspecified @mentioned the Actor [sic] in an issue comment body.
-	//
-	//     assigned, unassigned
-	//       The Assigner assigned the issue to or removed the assignment from the Assignee.
-	//
-	//     labeled, unlabeled
-	//       The Actor added or removed the Label from the issue.
-	//
-	//     milestoned, demilestoned
-	//       The Actor added or removed the issue from the Milestone.
-	//
-	//     subscribed, unsubscribed
-	//       The Actor subscribed to or unsubscribed from notifications for an issue.
-	//
-	//     head_ref_deleted, head_ref_restored
-	//       The pull request’s branch was deleted or restored.
-	//
-	Event *string `json:"event,omitempty"`
-
-	CreatedAt *time.Time `json:"created_at,omitempty"`
-	Issue     *Issue     `json:"issue,omitempty"`
-
-	// Only present on certain events; see above.
-	Assignee  *User      `json:"assignee,omitempty"`
-	Assigner  *User      `json:"assigner,omitempty"`
-	CommitID  *string    `json:"commit_id,omitempty"`
-	Milestone *Milestone `json:"milestone,omitempty"`
-	Label     *Label     `json:"label,omitempty"`
-	Rename    *Rename    `json:"rename,omitempty"`
-}
-
-// ListIssueEvents lists events for the specified issue.
-//
-// GitHub API docs: https://developer.github.com/v3/issues/events/#list-events-for-an-issue
-func (s *IssuesService) ListIssueEvents(ctx context.Context, owner, repo string, number int, opt *ListOptions) ([]*IssueEvent, *Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/issues/%v/events", owner, repo, number)
-	u, err := addOptions(u, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	var events []*IssueEvent
-	resp, err := s.client.Do(ctx, req, &events)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return events, resp, nil
-}
-
-// ListRepositoryEvents lists events for the specified repository.
-//
-// GitHub API docs: https://developer.github.com/v3/issues/events/#list-events-for-a-repository
-func (s *IssuesService) ListRepositoryEvents(ctx context.Context, owner, repo string, opt *ListOptions) ([]*IssueEvent, *Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/issues/events", owner, repo)
-	u, err := addOptions(u, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	var events []*IssueEvent
-	resp, err := s.client.Do(ctx, req, &events)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return events, resp, nil
-}
-
-// GetEvent returns the specified issue event.
-//
-// GitHub API docs: https://developer.github.com/v3/issues/events/#get-a-single-event
-func (s *IssuesService) GetEvent(ctx context.Context, owner, repo string, id int64) (*IssueEvent, *Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/issues/events/%v", owner, repo, id)
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	event := new(IssueEvent)
-	resp, err := s.client.Do(ctx, req, event)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return event, resp, nil
-}
-
-// Rename contains details for 'renamed' events.
-type Rename struct {
-	From *string `json:"from,omitempty"`
-	To   *string `json:"to,omitempty"`
-}
-
-func (r Rename) String() string {
-	return Stringify(r)
-}

+ 0 - 251
vendor/github.com/google/go-github/github/issues_labels.go

@@ -1,251 +0,0 @@
-// Copyright 2013 The go-github 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 github
-
-import (
-	"context"
-	"fmt"
-)
-
-// Label represents a GitHub label on an Issue
-type Label struct {
-	ID     *int64  `json:"id,omitempty"`
-	URL    *string `json:"url,omitempty"`
-	Name   *string `json:"name,omitempty"`
-	Color  *string `json:"color,omitempty"`
-	NodeID *string `json:"node_id,omitempty"`
-}
-
-func (l Label) String() string {
-	return Stringify(l)
-}
-
-// ListLabels lists all labels for a repository.
-//
-// GitHub API docs: https://developer.github.com/v3/issues/labels/#list-all-labels-for-this-repository
-func (s *IssuesService) ListLabels(ctx context.Context, owner string, repo string, opt *ListOptions) ([]*Label, *Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/labels", owner, repo)
-	u, err := addOptions(u, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview)
-
-	var labels []*Label
-	resp, err := s.client.Do(ctx, req, &labels)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return labels, resp, nil
-}
-
-// GetLabel gets a single label.
-//
-// GitHub API docs: https://developer.github.com/v3/issues/labels/#get-a-single-label
-func (s *IssuesService) GetLabel(ctx context.Context, owner string, repo string, name string) (*Label, *Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/labels/%v", owner, repo, name)
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview)
-
-	label := new(Label)
-	resp, err := s.client.Do(ctx, req, label)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return label, resp, nil
-}
-
-// CreateLabel creates a new label on the specified repository.
-//
-// GitHub API docs: https://developer.github.com/v3/issues/labels/#create-a-label
-func (s *IssuesService) CreateLabel(ctx context.Context, owner string, repo string, label *Label) (*Label, *Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/labels", owner, repo)
-	req, err := s.client.NewRequest("POST", u, label)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview)
-
-	l := new(Label)
-	resp, err := s.client.Do(ctx, req, l)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return l, resp, nil
-}
-
-// EditLabel edits a label.
-//
-// GitHub API docs: https://developer.github.com/v3/issues/labels/#update-a-label
-func (s *IssuesService) EditLabel(ctx context.Context, owner string, repo string, name string, label *Label) (*Label, *Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/labels/%v", owner, repo, name)
-	req, err := s.client.NewRequest("PATCH", u, label)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview)
-
-	l := new(Label)
-	resp, err := s.client.Do(ctx, req, l)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return l, resp, nil
-}
-
-// DeleteLabel deletes a label.
-//
-// GitHub API docs: https://developer.github.com/v3/issues/labels/#delete-a-label
-func (s *IssuesService) DeleteLabel(ctx context.Context, owner string, repo string, name string) (*Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/labels/%v", owner, repo, name)
-	req, err := s.client.NewRequest("DELETE", u, nil)
-	if err != nil {
-		return nil, err
-	}
-	return s.client.Do(ctx, req, nil)
-}
-
-// ListLabelsByIssue lists all labels for an issue.
-//
-// GitHub API docs: https://developer.github.com/v3/issues/labels/#list-labels-on-an-issue
-func (s *IssuesService) ListLabelsByIssue(ctx context.Context, owner string, repo string, number int, opt *ListOptions) ([]*Label, *Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/issues/%d/labels", owner, repo, number)
-	u, err := addOptions(u, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview)
-
-	var labels []*Label
-	resp, err := s.client.Do(ctx, req, &labels)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return labels, resp, nil
-}
-
-// AddLabelsToIssue adds labels to an issue.
-//
-// GitHub API docs: https://developer.github.com/v3/issues/labels/#add-labels-to-an-issue
-func (s *IssuesService) AddLabelsToIssue(ctx context.Context, owner string, repo string, number int, labels []string) ([]*Label, *Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/issues/%d/labels", owner, repo, number)
-	req, err := s.client.NewRequest("POST", u, labels)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview)
-
-	var l []*Label
-	resp, err := s.client.Do(ctx, req, &l)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return l, resp, nil
-}
-
-// RemoveLabelForIssue removes a label for an issue.
-//
-// GitHub API docs: https://developer.github.com/v3/issues/labels/#remove-a-label-from-an-issue
-func (s *IssuesService) RemoveLabelForIssue(ctx context.Context, owner string, repo string, number int, label string) (*Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/issues/%d/labels/%v", owner, repo, number, label)
-	req, err := s.client.NewRequest("DELETE", u, nil)
-	if err != nil {
-		return nil, err
-	}
-	return s.client.Do(ctx, req, nil)
-}
-
-// ReplaceLabelsForIssue replaces all labels for an issue.
-//
-// GitHub API docs: https://developer.github.com/v3/issues/labels/#replace-all-labels-for-an-issue
-func (s *IssuesService) ReplaceLabelsForIssue(ctx context.Context, owner string, repo string, number int, labels []string) ([]*Label, *Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/issues/%d/labels", owner, repo, number)
-	req, err := s.client.NewRequest("PUT", u, labels)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview)
-
-	var l []*Label
-	resp, err := s.client.Do(ctx, req, &l)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return l, resp, nil
-}
-
-// RemoveLabelsForIssue removes all labels for an issue.
-//
-// GitHub API docs: https://developer.github.com/v3/issues/labels/#remove-all-labels-from-an-issue
-func (s *IssuesService) RemoveLabelsForIssue(ctx context.Context, owner string, repo string, number int) (*Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/issues/%d/labels", owner, repo, number)
-	req, err := s.client.NewRequest("DELETE", u, nil)
-	if err != nil {
-		return nil, err
-	}
-	return s.client.Do(ctx, req, nil)
-}
-
-// ListLabelsForMilestone lists labels for every issue in a milestone.
-//
-// GitHub API docs: https://developer.github.com/v3/issues/labels/#get-labels-for-every-issue-in-a-milestone
-func (s *IssuesService) ListLabelsForMilestone(ctx context.Context, owner string, repo string, number int, opt *ListOptions) ([]*Label, *Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/milestones/%d/labels", owner, repo, number)
-	u, err := addOptions(u, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview)
-
-	var labels []*Label
-	resp, err := s.client.Do(ctx, req, &labels)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return labels, resp, nil
-}

+ 0 - 160
vendor/github.com/google/go-github/github/issues_milestones.go

@@ -1,160 +0,0 @@
-// Copyright 2014 The go-github 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 github
-
-import (
-	"context"
-	"fmt"
-	"time"
-)
-
-// Milestone represents a GitHub repository milestone.
-type Milestone struct {
-	URL          *string    `json:"url,omitempty"`
-	HTMLURL      *string    `json:"html_url,omitempty"`
-	LabelsURL    *string    `json:"labels_url,omitempty"`
-	ID           *int64     `json:"id,omitempty"`
-	Number       *int       `json:"number,omitempty"`
-	State        *string    `json:"state,omitempty"`
-	Title        *string    `json:"title,omitempty"`
-	Description  *string    `json:"description,omitempty"`
-	Creator      *User      `json:"creator,omitempty"`
-	OpenIssues   *int       `json:"open_issues,omitempty"`
-	ClosedIssues *int       `json:"closed_issues,omitempty"`
-	CreatedAt    *time.Time `json:"created_at,omitempty"`
-	UpdatedAt    *time.Time `json:"updated_at,omitempty"`
-	ClosedAt     *time.Time `json:"closed_at,omitempty"`
-	DueOn        *time.Time `json:"due_on,omitempty"`
-	NodeID       *string    `json:"node_id,omitempty"`
-}
-
-func (m Milestone) String() string {
-	return Stringify(m)
-}
-
-// MilestoneListOptions specifies the optional parameters to the
-// IssuesService.ListMilestones method.
-type MilestoneListOptions struct {
-	// State filters milestones based on their state. Possible values are:
-	// open, closed, all. Default is "open".
-	State string `url:"state,omitempty"`
-
-	// Sort specifies how to sort milestones. Possible values are: due_on, completeness.
-	// Default value is "due_on".
-	Sort string `url:"sort,omitempty"`
-
-	// Direction in which to sort milestones. Possible values are: asc, desc.
-	// Default is "asc".
-	Direction string `url:"direction,omitempty"`
-
-	ListOptions
-}
-
-// ListMilestones lists all milestones for a repository.
-//
-// GitHub API docs: https://developer.github.com/v3/issues/milestones/#list-milestones-for-a-repository
-func (s *IssuesService) ListMilestones(ctx context.Context, owner string, repo string, opt *MilestoneListOptions) ([]*Milestone, *Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/milestones", owner, repo)
-	u, err := addOptions(u, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview)
-
-	var milestones []*Milestone
-	resp, err := s.client.Do(ctx, req, &milestones)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return milestones, resp, nil
-}
-
-// GetMilestone gets a single milestone.
-//
-// GitHub API docs: https://developer.github.com/v3/issues/milestones/#get-a-single-milestone
-func (s *IssuesService) GetMilestone(ctx context.Context, owner string, repo string, number int) (*Milestone, *Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/milestones/%d", owner, repo, number)
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview)
-
-	milestone := new(Milestone)
-	resp, err := s.client.Do(ctx, req, milestone)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return milestone, resp, nil
-}
-
-// CreateMilestone creates a new milestone on the specified repository.
-//
-// GitHub API docs: https://developer.github.com/v3/issues/milestones/#create-a-milestone
-func (s *IssuesService) CreateMilestone(ctx context.Context, owner string, repo string, milestone *Milestone) (*Milestone, *Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/milestones", owner, repo)
-	req, err := s.client.NewRequest("POST", u, milestone)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview)
-
-	m := new(Milestone)
-	resp, err := s.client.Do(ctx, req, m)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return m, resp, nil
-}
-
-// EditMilestone edits a milestone.
-//
-// GitHub API docs: https://developer.github.com/v3/issues/milestones/#update-a-milestone
-func (s *IssuesService) EditMilestone(ctx context.Context, owner string, repo string, number int, milestone *Milestone) (*Milestone, *Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/milestones/%d", owner, repo, number)
-	req, err := s.client.NewRequest("PATCH", u, milestone)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview)
-
-	m := new(Milestone)
-	resp, err := s.client.Do(ctx, req, m)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return m, resp, nil
-}
-
-// DeleteMilestone deletes a milestone.
-//
-// GitHub API docs: https://developer.github.com/v3/issues/milestones/#delete-a-milestone
-func (s *IssuesService) DeleteMilestone(ctx context.Context, owner string, repo string, number int) (*Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/milestones/%d", owner, repo, number)
-	req, err := s.client.NewRequest("DELETE", u, nil)
-	if err != nil {
-		return nil, err
-	}
-
-	return s.client.Do(ctx, req, nil)
-}

+ 0 - 149
vendor/github.com/google/go-github/github/issues_timeline.go

@@ -1,149 +0,0 @@
-// Copyright 2016 The go-github 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 github
-
-import (
-	"context"
-	"fmt"
-	"time"
-)
-
-// Timeline represents an event that occurred around an Issue or Pull Request.
-//
-// It is similar to an IssueEvent but may contain more information.
-// GitHub API docs: https://developer.github.com/v3/issues/timeline/
-type Timeline struct {
-	ID        *int64  `json:"id,omitempty"`
-	URL       *string `json:"url,omitempty"`
-	CommitURL *string `json:"commit_url,omitempty"`
-
-	// The User object that generated the event.
-	Actor *User `json:"actor,omitempty"`
-
-	// Event identifies the actual type of Event that occurred. Possible values
-	// are:
-	//
-	//     assigned
-	//       The issue was assigned to the assignee.
-	//
-	//     closed
-	//       The issue was closed by the actor. When the commit_id is present, it
-	//       identifies the commit that closed the issue using "closes / fixes #NN"
-	//       syntax.
-	//
-	//     commented
-	//       A comment was added to the issue.
-	//
-	//     committed
-	//       A commit was added to the pull request's 'HEAD' branch. Only provided
-	//       for pull requests.
-	//
-	//     cross-referenced
-	//       The issue was referenced from another issue. The 'source' attribute
-	//       contains the 'id', 'actor', and 'url' of the reference's source.
-	//
-	//     demilestoned
-	//       The issue was removed from a milestone.
-	//
-	//     head_ref_deleted
-	//       The pull request's branch was deleted.
-	//
-	//     head_ref_restored
-	//       The pull request's branch was restored.
-	//
-	//     labeled
-	//       A label was added to the issue.
-	//
-	//     locked
-	//       The issue was locked by the actor.
-	//
-	//     mentioned
-	//       The actor was @mentioned in an issue body.
-	//
-	//     merged
-	//       The issue was merged by the actor. The 'commit_id' attribute is the
-	//       SHA1 of the HEAD commit that was merged.
-	//
-	//     milestoned
-	//       The issue was added to a milestone.
-	//
-	//     referenced
-	//       The issue was referenced from a commit message. The 'commit_id'
-	//       attribute is the commit SHA1 of where that happened.
-	//
-	//     renamed
-	//       The issue title was changed.
-	//
-	//     reopened
-	//       The issue was reopened by the actor.
-	//
-	//     subscribed
-	//       The actor subscribed to receive notifications for an issue.
-	//
-	//     unassigned
-	//       The assignee was unassigned from the issue.
-	//
-	//     unlabeled
-	//       A label was removed from the issue.
-	//
-	//     unlocked
-	//       The issue was unlocked by the actor.
-	//
-	//     unsubscribed
-	//       The actor unsubscribed to stop receiving notifications for an issue.
-	//
-	Event *string `json:"event,omitempty"`
-
-	// The string SHA of a commit that referenced this Issue or Pull Request.
-	CommitID *string `json:"commit_id,omitempty"`
-	// The timestamp indicating when the event occurred.
-	CreatedAt *time.Time `json:"created_at,omitempty"`
-	// The Label object including `name` and `color` attributes. Only provided for
-	// 'labeled' and 'unlabeled' events.
-	Label *Label `json:"label,omitempty"`
-	// The User object which was assigned to (or unassigned from) this Issue or
-	// Pull Request. Only provided for 'assigned' and 'unassigned' events.
-	Assignee *User `json:"assignee,omitempty"`
-	// The Milestone object including a 'title' attribute.
-	// Only provided for 'milestoned' and 'demilestoned' events.
-	Milestone *Milestone `json:"milestone,omitempty"`
-	// The 'id', 'actor', and 'url' for the source of a reference from another issue.
-	// Only provided for 'cross-referenced' events.
-	Source *Source `json:"source,omitempty"`
-	// An object containing rename details including 'from' and 'to' attributes.
-	// Only provided for 'renamed' events.
-	Rename *Rename `json:"rename,omitempty"`
-}
-
-// Source represents a reference's source.
-type Source struct {
-	ID    *int64  `json:"id,omitempty"`
-	URL   *string `json:"url,omitempty"`
-	Actor *User   `json:"actor,omitempty"`
-}
-
-// ListIssueTimeline lists events for the specified issue.
-//
-// GitHub API docs: https://developer.github.com/v3/issues/timeline/#list-events-for-an-issue
-func (s *IssuesService) ListIssueTimeline(ctx context.Context, owner, repo string, number int, opt *ListOptions) ([]*Timeline, *Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/issues/%v/timeline", owner, repo, number)
-	u, err := addOptions(u, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeTimelinePreview)
-
-	var events []*Timeline
-	resp, err := s.client.Do(ctx, req, &events)
-	return events, resp, err
-}

+ 0 - 103
vendor/github.com/google/go-github/github/licenses.go

@@ -1,103 +0,0 @@
-// Copyright 2013 The go-github 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 github
-
-import (
-	"context"
-	"fmt"
-)
-
-// LicensesService handles communication with the license related
-// methods of the GitHub API.
-//
-// GitHub API docs: https://developer.github.com/v3/licenses/
-type LicensesService service
-
-// RepositoryLicense represents the license for a repository.
-type RepositoryLicense struct {
-	Name *string `json:"name,omitempty"`
-	Path *string `json:"path,omitempty"`
-
-	SHA         *string  `json:"sha,omitempty"`
-	Size        *int     `json:"size,omitempty"`
-	URL         *string  `json:"url,omitempty"`
-	HTMLURL     *string  `json:"html_url,omitempty"`
-	GitURL      *string  `json:"git_url,omitempty"`
-	DownloadURL *string  `json:"download_url,omitempty"`
-	Type        *string  `json:"type,omitempty"`
-	Content     *string  `json:"content,omitempty"`
-	Encoding    *string  `json:"encoding,omitempty"`
-	License     *License `json:"license,omitempty"`
-}
-
-func (l RepositoryLicense) String() string {
-	return Stringify(l)
-}
-
-// License represents an open source license.
-type License struct {
-	Key  *string `json:"key,omitempty"`
-	Name *string `json:"name,omitempty"`
-	URL  *string `json:"url,omitempty"`
-
-	SPDXID         *string   `json:"spdx_id,omitempty"`
-	HTMLURL        *string   `json:"html_url,omitempty"`
-	Featured       *bool     `json:"featured,omitempty"`
-	Description    *string   `json:"description,omitempty"`
-	Implementation *string   `json:"implementation,omitempty"`
-	Permissions    *[]string `json:"permissions,omitempty"`
-	Conditions     *[]string `json:"conditions,omitempty"`
-	Limitations    *[]string `json:"limitations,omitempty"`
-	Body           *string   `json:"body,omitempty"`
-}
-
-func (l License) String() string {
-	return Stringify(l)
-}
-
-// List popular open source licenses.
-//
-// GitHub API docs: https://developer.github.com/v3/licenses/#list-all-licenses
-func (s *LicensesService) List(ctx context.Context) ([]*License, *Response, error) {
-	req, err := s.client.NewRequest("GET", "licenses", nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches
-	req.Header.Set("Accept", mediaTypeLicensesPreview)
-
-	var licenses []*License
-	resp, err := s.client.Do(ctx, req, &licenses)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return licenses, resp, nil
-}
-
-// Get extended metadata for one license.
-//
-// GitHub API docs: https://developer.github.com/v3/licenses/#get-an-individual-license
-func (s *LicensesService) Get(ctx context.Context, licenseName string) (*License, *Response, error) {
-	u := fmt.Sprintf("licenses/%s", licenseName)
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches
-	req.Header.Set("Accept", mediaTypeLicensesPreview)
-
-	license := new(License)
-	resp, err := s.client.Do(ctx, req, license)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return license, resp, nil
-}

+ 0 - 245
vendor/github.com/google/go-github/github/messages.go

@@ -1,245 +0,0 @@
-// Copyright 2016 The go-github AUTHORS. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// This file provides functions for validating payloads from GitHub Webhooks.
-// GitHub API docs: https://developer.github.com/webhooks/securing/#validating-payloads-from-github
-
-package github
-
-import (
-	"crypto/hmac"
-	"crypto/sha1"
-	"crypto/sha256"
-	"crypto/sha512"
-	"encoding/hex"
-	"encoding/json"
-	"errors"
-	"fmt"
-	"hash"
-	"io/ioutil"
-	"net/http"
-	"net/url"
-	"strings"
-)
-
-const (
-	// sha1Prefix is the prefix used by GitHub before the HMAC hexdigest.
-	sha1Prefix = "sha1"
-	// sha256Prefix and sha512Prefix are provided for future compatibility.
-	sha256Prefix = "sha256"
-	sha512Prefix = "sha512"
-	// signatureHeader is the GitHub header key used to pass the HMAC hexdigest.
-	signatureHeader = "X-Hub-Signature"
-	// eventTypeHeader is the GitHub header key used to pass the event type.
-	eventTypeHeader = "X-Github-Event"
-	// deliveryIDHeader is the GitHub header key used to pass the unique ID for the webhook event.
-	deliveryIDHeader = "X-Github-Delivery"
-)
-
-var (
-	// eventTypeMapping maps webhooks types to their corresponding go-github struct types.
-	eventTypeMapping = map[string]string{
-		"commit_comment":              "CommitCommentEvent",
-		"create":                      "CreateEvent",
-		"delete":                      "DeleteEvent",
-		"deployment":                  "DeploymentEvent",
-		"deployment_status":           "DeploymentStatusEvent",
-		"fork":                        "ForkEvent",
-		"gollum":                      "GollumEvent",
-		"installation":                "InstallationEvent",
-		"installation_repositories":   "InstallationRepositoriesEvent",
-		"issue_comment":               "IssueCommentEvent",
-		"issues":                      "IssuesEvent",
-		"label":                       "LabelEvent",
-		"marketplace_purchase":        "MarketplacePurchaseEvent",
-		"member":                      "MemberEvent",
-		"membership":                  "MembershipEvent",
-		"milestone":                   "MilestoneEvent",
-		"organization":                "OrganizationEvent",
-		"org_block":                   "OrgBlockEvent",
-		"page_build":                  "PageBuildEvent",
-		"ping":                        "PingEvent",
-		"project":                     "ProjectEvent",
-		"project_card":                "ProjectCardEvent",
-		"project_column":              "ProjectColumnEvent",
-		"public":                      "PublicEvent",
-		"pull_request_review":         "PullRequestReviewEvent",
-		"pull_request_review_comment": "PullRequestReviewCommentEvent",
-		"pull_request":                "PullRequestEvent",
-		"push":                        "PushEvent",
-		"repository":                  "RepositoryEvent",
-		"release":                     "ReleaseEvent",
-		"status":                      "StatusEvent",
-		"team":                        "TeamEvent",
-		"team_add":                    "TeamAddEvent",
-		"watch":                       "WatchEvent",
-	}
-)
-
-// genMAC generates the HMAC signature for a message provided the secret key
-// and hashFunc.
-func genMAC(message, key []byte, hashFunc func() hash.Hash) []byte {
-	mac := hmac.New(hashFunc, key)
-	mac.Write(message)
-	return mac.Sum(nil)
-}
-
-// checkMAC reports whether messageMAC is a valid HMAC tag for message.
-func checkMAC(message, messageMAC, key []byte, hashFunc func() hash.Hash) bool {
-	expectedMAC := genMAC(message, key, hashFunc)
-	return hmac.Equal(messageMAC, expectedMAC)
-}
-
-// messageMAC returns the hex-decoded HMAC tag from the signature and its
-// corresponding hash function.
-func messageMAC(signature string) ([]byte, func() hash.Hash, error) {
-	if signature == "" {
-		return nil, nil, errors.New("missing signature")
-	}
-	sigParts := strings.SplitN(signature, "=", 2)
-	if len(sigParts) != 2 {
-		return nil, nil, fmt.Errorf("error parsing signature %q", signature)
-	}
-
-	var hashFunc func() hash.Hash
-	switch sigParts[0] {
-	case sha1Prefix:
-		hashFunc = sha1.New
-	case sha256Prefix:
-		hashFunc = sha256.New
-	case sha512Prefix:
-		hashFunc = sha512.New
-	default:
-		return nil, nil, fmt.Errorf("unknown hash type prefix: %q", sigParts[0])
-	}
-
-	buf, err := hex.DecodeString(sigParts[1])
-	if err != nil {
-		return nil, nil, fmt.Errorf("error decoding signature %q: %v", signature, err)
-	}
-	return buf, hashFunc, nil
-}
-
-// ValidatePayload validates an incoming GitHub Webhook event request
-// and returns the (JSON) payload.
-// The Content-Type header of the payload can be "application/json" or "application/x-www-form-urlencoded".
-// If the Content-Type is neither then an error is returned.
-// secretKey is the GitHub Webhook secret message.
-//
-// Example usage:
-//
-//     func (s *GitHubEventMonitor) ServeHTTP(w http.ResponseWriter, r *http.Request) {
-//       payload, err := github.ValidatePayload(r, s.webhookSecretKey)
-//       if err != nil { ... }
-//       // Process payload...
-//     }
-//
-func ValidatePayload(r *http.Request, secretKey []byte) (payload []byte, err error) {
-	var body []byte // Raw body that GitHub uses to calculate the signature.
-
-	switch ct := r.Header.Get("Content-Type"); ct {
-	case "application/json":
-		var err error
-		if body, err = ioutil.ReadAll(r.Body); err != nil {
-			return nil, err
-		}
-
-		// If the content type is application/json,
-		// the JSON payload is just the original body.
-		payload = body
-
-	case "application/x-www-form-urlencoded":
-		// payloadFormParam is the name of the form parameter that the JSON payload
-		// will be in if a webhook has its content type set to application/x-www-form-urlencoded.
-		const payloadFormParam = "payload"
-
-		var err error
-		if body, err = ioutil.ReadAll(r.Body); err != nil {
-			return nil, err
-		}
-
-		// If the content type is application/x-www-form-urlencoded,
-		// the JSON payload will be under the "payload" form param.
-		form, err := url.ParseQuery(string(body))
-		if err != nil {
-			return nil, err
-		}
-		payload = []byte(form.Get(payloadFormParam))
-
-	default:
-		return nil, fmt.Errorf("Webhook request has unsupported Content-Type %q", ct)
-	}
-
-	sig := r.Header.Get(signatureHeader)
-	if err := validateSignature(sig, body, secretKey); err != nil {
-		return nil, err
-	}
-	return payload, nil
-}
-
-// validateSignature validates the signature for the given payload.
-// signature is the GitHub hash signature delivered in the X-Hub-Signature header.
-// payload is the JSON payload sent by GitHub Webhooks.
-// secretKey is the GitHub Webhook secret message.
-//
-// GitHub API docs: https://developer.github.com/webhooks/securing/#validating-payloads-from-github
-func validateSignature(signature string, payload, secretKey []byte) error {
-	messageMAC, hashFunc, err := messageMAC(signature)
-	if err != nil {
-		return err
-	}
-	if !checkMAC(payload, messageMAC, secretKey, hashFunc) {
-		return errors.New("payload signature check failed")
-	}
-	return nil
-}
-
-// WebHookType returns the event type of webhook request r.
-//
-// GitHub API docs: https://developer.github.com/v3/repos/hooks/#webhook-headers
-func WebHookType(r *http.Request) string {
-	return r.Header.Get(eventTypeHeader)
-}
-
-// DeliveryID returns the unique delivery ID of webhook request r.
-//
-// GitHub API docs: https://developer.github.com/v3/repos/hooks/#webhook-headers
-func DeliveryID(r *http.Request) string {
-	return r.Header.Get(deliveryIDHeader)
-}
-
-// ParseWebHook parses the event payload. For recognized event types, a
-// value of the corresponding struct type will be returned (as returned
-// by Event.ParsePayload()). An error will be returned for unrecognized event
-// types.
-//
-// Example usage:
-//
-//     func (s *GitHubEventMonitor) ServeHTTP(w http.ResponseWriter, r *http.Request) {
-//       payload, err := github.ValidatePayload(r, s.webhookSecretKey)
-//       if err != nil { ... }
-//       event, err := github.ParseWebHook(github.WebHookType(r), payload)
-//       if err != nil { ... }
-//       switch event := event.(type) {
-//       case *github.CommitCommentEvent:
-//           processCommitCommentEvent(event)
-//       case *github.CreateEvent:
-//           processCreateEvent(event)
-//       ...
-//       }
-//     }
-//
-func ParseWebHook(messageType string, payload []byte) (interface{}, error) {
-	eventType, ok := eventTypeMapping[messageType]
-	if !ok {
-		return nil, fmt.Errorf("unknown X-Github-Event in message: %v", messageType)
-	}
-
-	event := Event{
-		Type:       &eventType,
-		RawPayload: (*json.RawMessage)(&payload),
-	}
-	return event.ParsePayload()
-}

+ 0 - 224
vendor/github.com/google/go-github/github/migrations.go

@@ -1,224 +0,0 @@
-// Copyright 2016 The go-github 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 github
-
-import (
-	"context"
-	"errors"
-	"fmt"
-	"net/http"
-	"strings"
-)
-
-// MigrationService provides access to the migration related functions
-// in the GitHub API.
-//
-// GitHub API docs: https://developer.github.com/v3/migration/
-type MigrationService service
-
-// Migration represents a GitHub migration (archival).
-type Migration struct {
-	ID   *int64  `json:"id,omitempty"`
-	GUID *string `json:"guid,omitempty"`
-	// State is the current state of a migration.
-	// Possible values are:
-	//     "pending" which means the migration hasn't started yet,
-	//     "exporting" which means the migration is in progress,
-	//     "exported" which means the migration finished successfully, or
-	//     "failed" which means the migration failed.
-	State *string `json:"state,omitempty"`
-	// LockRepositories indicates whether repositories are locked (to prevent
-	// manipulation) while migrating data.
-	LockRepositories *bool `json:"lock_repositories,omitempty"`
-	// ExcludeAttachments indicates whether attachments should be excluded from
-	// the migration (to reduce migration archive file size).
-	ExcludeAttachments *bool         `json:"exclude_attachments,omitempty"`
-	URL                *string       `json:"url,omitempty"`
-	CreatedAt          *string       `json:"created_at,omitempty"`
-	UpdatedAt          *string       `json:"updated_at,omitempty"`
-	Repositories       []*Repository `json:"repositories,omitempty"`
-}
-
-func (m Migration) String() string {
-	return Stringify(m)
-}
-
-// MigrationOptions specifies the optional parameters to Migration methods.
-type MigrationOptions struct {
-	// LockRepositories indicates whether repositories should be locked (to prevent
-	// manipulation) while migrating data.
-	LockRepositories bool
-
-	// ExcludeAttachments indicates whether attachments should be excluded from
-	// the migration (to reduce migration archive file size).
-	ExcludeAttachments bool
-}
-
-// startMigration represents the body of a StartMigration request.
-type startMigration struct {
-	// Repositories is a slice of repository names to migrate.
-	Repositories []string `json:"repositories,omitempty"`
-
-	// LockRepositories indicates whether repositories should be locked (to prevent
-	// manipulation) while migrating data.
-	LockRepositories *bool `json:"lock_repositories,omitempty"`
-
-	// ExcludeAttachments indicates whether attachments should be excluded from
-	// the migration (to reduce migration archive file size).
-	ExcludeAttachments *bool `json:"exclude_attachments,omitempty"`
-}
-
-// StartMigration starts the generation of a migration archive.
-// repos is a slice of repository names to migrate.
-//
-// GitHub API docs: https://developer.github.com/v3/migration/migrations/#start-a-migration
-func (s *MigrationService) StartMigration(ctx context.Context, org string, repos []string, opt *MigrationOptions) (*Migration, *Response, error) {
-	u := fmt.Sprintf("orgs/%v/migrations", org)
-
-	body := &startMigration{Repositories: repos}
-	if opt != nil {
-		body.LockRepositories = Bool(opt.LockRepositories)
-		body.ExcludeAttachments = Bool(opt.ExcludeAttachments)
-	}
-
-	req, err := s.client.NewRequest("POST", u, body)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeMigrationsPreview)
-
-	m := &Migration{}
-	resp, err := s.client.Do(ctx, req, m)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return m, resp, nil
-}
-
-// ListMigrations lists the most recent migrations.
-//
-// GitHub API docs: https://developer.github.com/v3/migration/migrations/#get-a-list-of-migrations
-func (s *MigrationService) ListMigrations(ctx context.Context, org string) ([]*Migration, *Response, error) {
-	u := fmt.Sprintf("orgs/%v/migrations", org)
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeMigrationsPreview)
-
-	var m []*Migration
-	resp, err := s.client.Do(ctx, req, &m)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return m, resp, nil
-}
-
-// MigrationStatus gets the status of a specific migration archive.
-// id is the migration ID.
-//
-// GitHub API docs: https://developer.github.com/v3/migration/migrations/#get-the-status-of-a-migration
-func (s *MigrationService) MigrationStatus(ctx context.Context, org string, id int64) (*Migration, *Response, error) {
-	u := fmt.Sprintf("orgs/%v/migrations/%v", org, id)
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeMigrationsPreview)
-
-	m := &Migration{}
-	resp, err := s.client.Do(ctx, req, m)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return m, resp, nil
-}
-
-// MigrationArchiveURL fetches a migration archive URL.
-// id is the migration ID.
-//
-// GitHub API docs: https://developer.github.com/v3/migration/migrations/#download-a-migration-archive
-func (s *MigrationService) MigrationArchiveURL(ctx context.Context, org string, id int64) (url string, err error) {
-	u := fmt.Sprintf("orgs/%v/migrations/%v/archive", org, id)
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return "", err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeMigrationsPreview)
-
-	s.client.clientMu.Lock()
-	defer s.client.clientMu.Unlock()
-
-	// Disable the redirect mechanism because AWS fails if the GitHub auth token is provided.
-	var loc string
-	saveRedirect := s.client.client.CheckRedirect
-	s.client.client.CheckRedirect = func(req *http.Request, via []*http.Request) error {
-		loc = req.URL.String()
-		return errors.New("disable redirect")
-	}
-	defer func() { s.client.client.CheckRedirect = saveRedirect }()
-
-	_, err = s.client.Do(ctx, req, nil) // expect error from disable redirect
-	if err == nil {
-		return "", errors.New("expected redirect, none provided")
-	}
-	if !strings.Contains(err.Error(), "disable redirect") {
-		return "", err
-	}
-	return loc, nil
-}
-
-// DeleteMigration deletes a previous migration archive.
-// id is the migration ID.
-//
-// GitHub API docs: https://developer.github.com/v3/migration/migrations/#delete-a-migration-archive
-func (s *MigrationService) DeleteMigration(ctx context.Context, org string, id int64) (*Response, error) {
-	u := fmt.Sprintf("orgs/%v/migrations/%v/archive", org, id)
-
-	req, err := s.client.NewRequest("DELETE", u, nil)
-	if err != nil {
-		return nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeMigrationsPreview)
-
-	return s.client.Do(ctx, req, nil)
-}
-
-// UnlockRepo unlocks a repository that was locked for migration.
-// id is the migration ID.
-// You should unlock each migrated repository and delete them when the migration
-// is complete and you no longer need the source data.
-//
-// GitHub API docs: https://developer.github.com/v3/migration/migrations/#unlock-a-repository
-func (s *MigrationService) UnlockRepo(ctx context.Context, org string, id int64, repo string) (*Response, error) {
-	u := fmt.Sprintf("orgs/%v/migrations/%v/repos/%v/lock", org, id, repo)
-
-	req, err := s.client.NewRequest("DELETE", u, nil)
-	if err != nil {
-		return nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeMigrationsPreview)
-
-	return s.client.Do(ctx, req, nil)
-}

+ 0 - 329
vendor/github.com/google/go-github/github/migrations_source_import.go

@@ -1,329 +0,0 @@
-// Copyright 2016 The go-github 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 github
-
-import (
-	"context"
-	"fmt"
-)
-
-// Import represents a repository import request.
-type Import struct {
-	// The URL of the originating repository.
-	VCSURL *string `json:"vcs_url,omitempty"`
-	// The originating VCS type. Can be one of 'subversion', 'git',
-	// 'mercurial', or 'tfvc'. Without this parameter, the import job will
-	// take additional time to detect the VCS type before beginning the
-	// import. This detection step will be reflected in the response.
-	VCS *string `json:"vcs,omitempty"`
-	// VCSUsername and VCSPassword are only used for StartImport calls that
-	// are importing a password-protected repository.
-	VCSUsername *string `json:"vcs_username,omitempty"`
-	VCSPassword *string `json:"vcs_password,omitempty"`
-	// For a tfvc import, the name of the project that is being imported.
-	TFVCProject *string `json:"tfvc_project,omitempty"`
-
-	// LFS related fields that may be preset in the Import Progress response
-
-	// Describes whether the import has been opted in or out of using Git
-	// LFS. The value can be 'opt_in', 'opt_out', or 'undecided' if no
-	// action has been taken.
-	UseLFS *string `json:"use_lfs,omitempty"`
-	// Describes whether files larger than 100MB were found during the
-	// importing step.
-	HasLargeFiles *bool `json:"has_large_files,omitempty"`
-	// The total size in gigabytes of files larger than 100MB found in the
-	// originating repository.
-	LargeFilesSize *int `json:"large_files_size,omitempty"`
-	// The total number of files larger than 100MB found in the originating
-	// repository. To see a list of these files, call LargeFiles.
-	LargeFilesCount *int `json:"large_files_count,omitempty"`
-
-	// Identifies the current status of an import. An import that does not
-	// have errors will progress through these steps:
-	//
-	//     detecting - the "detection" step of the import is in progress
-	//         because the request did not include a VCS parameter. The
-	//         import is identifying the type of source control present at
-	//         the URL.
-	//     importing - the "raw" step of the import is in progress. This is
-	//         where commit data is fetched from the original repository.
-	//         The import progress response will include CommitCount (the
-	//         total number of raw commits that will be imported) and
-	//         Percent (0 - 100, the current progress through the import).
-	//     mapping - the "rewrite" step of the import is in progress. This
-	//         is where SVN branches are converted to Git branches, and
-	//         where author updates are applied. The import progress
-	//         response does not include progress information.
-	//     pushing - the "push" step of the import is in progress. This is
-	//         where the importer updates the repository on GitHub. The
-	//         import progress response will include PushPercent, which is
-	//         the percent value reported by git push when it is "Writing
-	//         objects".
-	//     complete - the import is complete, and the repository is ready
-	//         on GitHub.
-	//
-	// If there are problems, you will see one of these in the status field:
-	//
-	//     auth_failed - the import requires authentication in order to
-	//         connect to the original repository. Make an UpdateImport
-	//         request, and include VCSUsername and VCSPassword.
-	//     error - the import encountered an error. The import progress
-	//         response will include the FailedStep and an error message.
-	//         Contact GitHub support for more information.
-	//     detection_needs_auth - the importer requires authentication for
-	//         the originating repository to continue detection. Make an
-	//         UpdatImport request, and include VCSUsername and
-	//         VCSPassword.
-	//     detection_found_nothing - the importer didn't recognize any
-	//         source control at the URL.
-	//     detection_found_multiple - the importer found several projects
-	//         or repositories at the provided URL. When this is the case,
-	//         the Import Progress response will also include a
-	//         ProjectChoices field with the possible project choices as
-	//         values. Make an UpdateImport request, and include VCS and
-	//         (if applicable) TFVCProject.
-	Status        *string `json:"status,omitempty"`
-	CommitCount   *int    `json:"commit_count,omitempty"`
-	StatusText    *string `json:"status_text,omitempty"`
-	AuthorsCount  *int    `json:"authors_count,omitempty"`
-	Percent       *int    `json:"percent,omitempty"`
-	PushPercent   *int    `json:"push_percent,omitempty"`
-	URL           *string `json:"url,omitempty"`
-	HTMLURL       *string `json:"html_url,omitempty"`
-	AuthorsURL    *string `json:"authors_url,omitempty"`
-	RepositoryURL *string `json:"repository_url,omitempty"`
-	Message       *string `json:"message,omitempty"`
-	FailedStep    *string `json:"failed_step,omitempty"`
-
-	// Human readable display name, provided when the Import appears as
-	// part of ProjectChoices.
-	HumanName *string `json:"human_name,omitempty"`
-
-	// When the importer finds several projects or repositories at the
-	// provided URLs, this will identify the available choices. Call
-	// UpdateImport with the selected Import value.
-	ProjectChoices []Import `json:"project_choices,omitempty"`
-}
-
-func (i Import) String() string {
-	return Stringify(i)
-}
-
-// SourceImportAuthor identifies an author imported from a source repository.
-//
-// GitHub API docs: https://developer.github.com/v3/migration/source_imports/#get-commit-authors
-type SourceImportAuthor struct {
-	ID         *int64  `json:"id,omitempty"`
-	RemoteID   *string `json:"remote_id,omitempty"`
-	RemoteName *string `json:"remote_name,omitempty"`
-	Email      *string `json:"email,omitempty"`
-	Name       *string `json:"name,omitempty"`
-	URL        *string `json:"url,omitempty"`
-	ImportURL  *string `json:"import_url,omitempty"`
-}
-
-func (a SourceImportAuthor) String() string {
-	return Stringify(a)
-}
-
-// LargeFile identifies a file larger than 100MB found during a repository import.
-//
-// GitHub API docs: https://developer.github.com/v3/migration/source_imports/#get-large-files
-type LargeFile struct {
-	RefName *string `json:"ref_name,omitempty"`
-	Path    *string `json:"path,omitempty"`
-	OID     *string `json:"oid,omitempty"`
-	Size    *int    `json:"size,omitempty"`
-}
-
-func (f LargeFile) String() string {
-	return Stringify(f)
-}
-
-// StartImport initiates a repository import.
-//
-// GitHub API docs: https://developer.github.com/v3/migration/source_imports/#start-an-import
-func (s *MigrationService) StartImport(ctx context.Context, owner, repo string, in *Import) (*Import, *Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/import", owner, repo)
-	req, err := s.client.NewRequest("PUT", u, in)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches
-	req.Header.Set("Accept", mediaTypeImportPreview)
-
-	out := new(Import)
-	resp, err := s.client.Do(ctx, req, out)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return out, resp, nil
-}
-
-// ImportProgress queries for the status and progress of an ongoing repository import.
-//
-// GitHub API docs: https://developer.github.com/v3/migration/source_imports/#get-import-progress
-func (s *MigrationService) ImportProgress(ctx context.Context, owner, repo string) (*Import, *Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/import", owner, repo)
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches
-	req.Header.Set("Accept", mediaTypeImportPreview)
-
-	out := new(Import)
-	resp, err := s.client.Do(ctx, req, out)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return out, resp, nil
-}
-
-// UpdateImport initiates a repository import.
-//
-// GitHub API docs: https://developer.github.com/v3/migration/source_imports/#update-existing-import
-func (s *MigrationService) UpdateImport(ctx context.Context, owner, repo string, in *Import) (*Import, *Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/import", owner, repo)
-	req, err := s.client.NewRequest("PATCH", u, in)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches
-	req.Header.Set("Accept", mediaTypeImportPreview)
-
-	out := new(Import)
-	resp, err := s.client.Do(ctx, req, out)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return out, resp, nil
-}
-
-// CommitAuthors gets the authors mapped from the original repository.
-//
-// Each type of source control system represents authors in a different way.
-// For example, a Git commit author has a display name and an email address,
-// but a Subversion commit author just has a username. The GitHub Importer will
-// make the author information valid, but the author might not be correct. For
-// example, it will change the bare Subversion username "hubot" into something
-// like "hubot <hubot@12341234-abab-fefe-8787-fedcba987654>".
-//
-// This method and MapCommitAuthor allow you to provide correct Git author
-// information.
-//
-// GitHub API docs: https://developer.github.com/v3/migration/source_imports/#get-commit-authors
-func (s *MigrationService) CommitAuthors(ctx context.Context, owner, repo string) ([]*SourceImportAuthor, *Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/import/authors", owner, repo)
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches
-	req.Header.Set("Accept", mediaTypeImportPreview)
-
-	var authors []*SourceImportAuthor
-	resp, err := s.client.Do(ctx, req, &authors)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return authors, resp, nil
-}
-
-// MapCommitAuthor updates an author's identity for the import. Your
-// application can continue updating authors any time before you push new
-// commits to the repository.
-//
-// GitHub API docs: https://developer.github.com/v3/migration/source_imports/#map-a-commit-author
-func (s *MigrationService) MapCommitAuthor(ctx context.Context, owner, repo string, id int64, author *SourceImportAuthor) (*SourceImportAuthor, *Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/import/authors/%v", owner, repo, id)
-	req, err := s.client.NewRequest("PATCH", u, author)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches
-	req.Header.Set("Accept", mediaTypeImportPreview)
-
-	out := new(SourceImportAuthor)
-	resp, err := s.client.Do(ctx, req, out)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return out, resp, nil
-}
-
-// SetLFSPreference sets whether imported repositories should use Git LFS for
-// files larger than 100MB. Only the UseLFS field on the provided Import is
-// used.
-//
-// GitHub API docs: https://developer.github.com/v3/migration/source_imports/#set-git-lfs-preference
-func (s *MigrationService) SetLFSPreference(ctx context.Context, owner, repo string, in *Import) (*Import, *Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/import/lfs", owner, repo)
-	req, err := s.client.NewRequest("PATCH", u, in)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches
-	req.Header.Set("Accept", mediaTypeImportPreview)
-
-	out := new(Import)
-	resp, err := s.client.Do(ctx, req, out)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return out, resp, nil
-}
-
-// LargeFiles lists files larger than 100MB found during the import.
-//
-// GitHub API docs: https://developer.github.com/v3/migration/source_imports/#get-large-files
-func (s *MigrationService) LargeFiles(ctx context.Context, owner, repo string) ([]*LargeFile, *Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/import/large_files", owner, repo)
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches
-	req.Header.Set("Accept", mediaTypeImportPreview)
-
-	var files []*LargeFile
-	resp, err := s.client.Do(ctx, req, &files)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return files, resp, nil
-}
-
-// CancelImport stops an import for a repository.
-//
-// GitHub API docs: https://developer.github.com/v3/migration/source_imports/#cancel-an-import
-func (s *MigrationService) CancelImport(ctx context.Context, owner, repo string) (*Response, error) {
-	u := fmt.Sprintf("repos/%v/%v/import", owner, repo)
-	req, err := s.client.NewRequest("DELETE", u, nil)
-	if err != nil {
-		return nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches
-	req.Header.Set("Accept", mediaTypeImportPreview)
-
-	return s.client.Do(ctx, req, nil)
-}

+ 0 - 253
vendor/github.com/google/go-github/github/misc.go

@@ -1,253 +0,0 @@
-// Copyright 2014 The go-github 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 github
-
-import (
-	"bytes"
-	"context"
-	"fmt"
-	"net/url"
-)
-
-// MarkdownOptions specifies optional parameters to the Markdown method.
-type MarkdownOptions struct {
-	// Mode identifies the rendering mode. Possible values are:
-	//   markdown - render a document as plain Markdown, just like
-	//   README files are rendered.
-	//
-	//   gfm - to render a document as user-content, e.g. like user
-	//   comments or issues are rendered. In GFM mode, hard line breaks are
-	//   always taken into account, and issue and user mentions are linked
-	//   accordingly.
-	//
-	// Default is "markdown".
-	Mode string
-
-	// Context identifies the repository context. Only taken into account
-	// when rendering as "gfm".
-	Context string
-}
-
-type markdownRequest struct {
-	Text    *string `json:"text,omitempty"`
-	Mode    *string `json:"mode,omitempty"`
-	Context *string `json:"context,omitempty"`
-}
-
-// Markdown renders an arbitrary Markdown document.
-//
-// GitHub API docs: https://developer.github.com/v3/markdown/
-func (c *Client) Markdown(ctx context.Context, text string, opt *MarkdownOptions) (string, *Response, error) {
-	request := &markdownRequest{Text: String(text)}
-	if opt != nil {
-		if opt.Mode != "" {
-			request.Mode = String(opt.Mode)
-		}
-		if opt.Context != "" {
-			request.Context = String(opt.Context)
-		}
-	}
-
-	req, err := c.NewRequest("POST", "markdown", request)
-	if err != nil {
-		return "", nil, err
-	}
-
-	buf := new(bytes.Buffer)
-	resp, err := c.Do(ctx, req, buf)
-	if err != nil {
-		return "", resp, err
-	}
-
-	return buf.String(), resp, nil
-}
-
-// ListEmojis returns the emojis available to use on GitHub.
-//
-// GitHub API docs: https://developer.github.com/v3/emojis/
-func (c *Client) ListEmojis(ctx context.Context) (map[string]string, *Response, error) {
-	req, err := c.NewRequest("GET", "emojis", nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	var emoji map[string]string
-	resp, err := c.Do(ctx, req, &emoji)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return emoji, resp, nil
-}
-
-// CodeOfConduct represents a code of conduct.
-type CodeOfConduct struct {
-	Name *string `json:"name,omitempty"`
-	Key  *string `json:"key,omitempty"`
-	URL  *string `json:"url,omitempty"`
-	Body *string `json:"body,omitempty"`
-}
-
-func (c *CodeOfConduct) String() string {
-	return Stringify(c)
-}
-
-// ListCodesOfConduct returns all codes of conduct.
-//
-// GitHub API docs: https://developer.github.com/v3/codes_of_conduct/#list-all-codes-of-conduct
-func (c *Client) ListCodesOfConduct(ctx context.Context) ([]*CodeOfConduct, *Response, error) {
-	req, err := c.NewRequest("GET", "codes_of_conduct", nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeCodesOfConductPreview)
-
-	var cs []*CodeOfConduct
-	resp, err := c.Do(ctx, req, &cs)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return cs, resp, nil
-}
-
-// GetCodeOfConduct returns an individual code of conduct.
-//
-// https://developer.github.com/v3/codes_of_conduct/#get-an-individual-code-of-conduct
-func (c *Client) GetCodeOfConduct(ctx context.Context, key string) (*CodeOfConduct, *Response, error) {
-	u := fmt.Sprintf("codes_of_conduct/%s", key)
-	req, err := c.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeCodesOfConductPreview)
-
-	coc := new(CodeOfConduct)
-	resp, err := c.Do(ctx, req, coc)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return coc, resp, nil
-}
-
-// APIMeta represents metadata about the GitHub API.
-type APIMeta struct {
-	// An Array of IP addresses in CIDR format specifying the addresses
-	// that incoming service hooks will originate from on GitHub.com.
-	Hooks []string `json:"hooks,omitempty"`
-
-	// An Array of IP addresses in CIDR format specifying the Git servers
-	// for GitHub.com.
-	Git []string `json:"git,omitempty"`
-
-	// Whether authentication with username and password is supported.
-	// (GitHub Enterprise instances using CAS or OAuth for authentication
-	// will return false. Features like Basic Authentication with a
-	// username and password, sudo mode, and two-factor authentication are
-	// not supported on these servers.)
-	VerifiablePasswordAuthentication *bool `json:"verifiable_password_authentication,omitempty"`
-
-	// An array of IP addresses in CIDR format specifying the addresses
-	// which serve GitHub Pages websites.
-	Pages []string `json:"pages,omitempty"`
-}
-
-// APIMeta returns information about GitHub.com, the service. Or, if you access
-// this endpoint on your organization’s GitHub Enterprise installation, this
-// endpoint provides information about that installation.
-//
-// GitHub API docs: https://developer.github.com/v3/meta/
-func (c *Client) APIMeta(ctx context.Context) (*APIMeta, *Response, error) {
-	req, err := c.NewRequest("GET", "meta", nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	meta := new(APIMeta)
-	resp, err := c.Do(ctx, req, meta)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return meta, resp, nil
-}
-
-// Octocat returns an ASCII art octocat with the specified message in a speech
-// bubble. If message is empty, a random zen phrase is used.
-func (c *Client) Octocat(ctx context.Context, message string) (string, *Response, error) {
-	u := "octocat"
-	if message != "" {
-		u = fmt.Sprintf("%s?s=%s", u, url.QueryEscape(message))
-	}
-
-	req, err := c.NewRequest("GET", u, nil)
-	if err != nil {
-		return "", nil, err
-	}
-
-	buf := new(bytes.Buffer)
-	resp, err := c.Do(ctx, req, buf)
-	if err != nil {
-		return "", resp, err
-	}
-
-	return buf.String(), resp, nil
-}
-
-// Zen returns a random line from The Zen of GitHub.
-//
-// see also: http://warpspire.com/posts/taste/
-func (c *Client) Zen(ctx context.Context) (string, *Response, error) {
-	req, err := c.NewRequest("GET", "zen", nil)
-	if err != nil {
-		return "", nil, err
-	}
-
-	buf := new(bytes.Buffer)
-	resp, err := c.Do(ctx, req, buf)
-	if err != nil {
-		return "", resp, err
-	}
-
-	return buf.String(), resp, nil
-}
-
-// ServiceHook represents a hook that has configuration settings, a list of
-// available events, and default events.
-type ServiceHook struct {
-	Name            *string    `json:"name,omitempty"`
-	Events          []string   `json:"events,omitempty"`
-	SupportedEvents []string   `json:"supported_events,omitempty"`
-	Schema          [][]string `json:"schema,omitempty"`
-}
-
-func (s *ServiceHook) String() string {
-	return Stringify(s)
-}
-
-// ListServiceHooks lists all of the available service hooks.
-//
-// GitHub API docs: https://developer.github.com/webhooks/#services
-func (c *Client) ListServiceHooks(ctx context.Context) ([]*ServiceHook, *Response, error) {
-	u := "hooks"
-	req, err := c.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	var hooks []*ServiceHook
-	resp, err := c.Do(ctx, req, &hooks)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return hooks, resp, nil
-}

+ 0 - 209
vendor/github.com/google/go-github/github/orgs.go

@@ -1,209 +0,0 @@
-// Copyright 2013 The go-github 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 github
-
-import (
-	"context"
-	"fmt"
-	"time"
-)
-
-// OrganizationsService provides access to the organization related functions
-// in the GitHub API.
-//
-// GitHub API docs: https://developer.github.com/v3/orgs/
-type OrganizationsService service
-
-// Organization represents a GitHub organization account.
-type Organization struct {
-	Login             *string    `json:"login,omitempty"`
-	ID                *int64     `json:"id,omitempty"`
-	AvatarURL         *string    `json:"avatar_url,omitempty"`
-	HTMLURL           *string    `json:"html_url,omitempty"`
-	Name              *string    `json:"name,omitempty"`
-	Company           *string    `json:"company,omitempty"`
-	Blog              *string    `json:"blog,omitempty"`
-	Location          *string    `json:"location,omitempty"`
-	Email             *string    `json:"email,omitempty"`
-	Description       *string    `json:"description,omitempty"`
-	PublicRepos       *int       `json:"public_repos,omitempty"`
-	PublicGists       *int       `json:"public_gists,omitempty"`
-	Followers         *int       `json:"followers,omitempty"`
-	Following         *int       `json:"following,omitempty"`
-	CreatedAt         *time.Time `json:"created_at,omitempty"`
-	UpdatedAt         *time.Time `json:"updated_at,omitempty"`
-	TotalPrivateRepos *int       `json:"total_private_repos,omitempty"`
-	OwnedPrivateRepos *int       `json:"owned_private_repos,omitempty"`
-	PrivateGists      *int       `json:"private_gists,omitempty"`
-	DiskUsage         *int       `json:"disk_usage,omitempty"`
-	Collaborators     *int       `json:"collaborators,omitempty"`
-	BillingEmail      *string    `json:"billing_email,omitempty"`
-	Type              *string    `json:"type,omitempty"`
-	Plan              *Plan      `json:"plan,omitempty"`
-	NodeID            *string    `json:"node_id,omitempty"`
-
-	// API URLs
-	URL              *string `json:"url,omitempty"`
-	EventsURL        *string `json:"events_url,omitempty"`
-	HooksURL         *string `json:"hooks_url,omitempty"`
-	IssuesURL        *string `json:"issues_url,omitempty"`
-	MembersURL       *string `json:"members_url,omitempty"`
-	PublicMembersURL *string `json:"public_members_url,omitempty"`
-	ReposURL         *string `json:"repos_url,omitempty"`
-}
-
-func (o Organization) String() string {
-	return Stringify(o)
-}
-
-// Plan represents the payment plan for an account. See plans at https://github.com/plans.
-type Plan struct {
-	Name          *string `json:"name,omitempty"`
-	Space         *int    `json:"space,omitempty"`
-	Collaborators *int    `json:"collaborators,omitempty"`
-	PrivateRepos  *int    `json:"private_repos,omitempty"`
-}
-
-func (p Plan) String() string {
-	return Stringify(p)
-}
-
-// OrganizationsListOptions specifies the optional parameters to the
-// OrganizationsService.ListAll method.
-type OrganizationsListOptions struct {
-	// Since filters Organizations by ID.
-	Since int `url:"since,omitempty"`
-
-	ListOptions
-}
-
-// ListAll lists all organizations, in the order that they were created on GitHub.
-//
-// Note: Pagination is powered exclusively by the since parameter. To continue
-// listing the next set of organizations, use the ID of the last-returned organization
-// as the opts.Since parameter for the next call.
-//
-// GitHub API docs: https://developer.github.com/v3/orgs/#list-all-organizations
-func (s *OrganizationsService) ListAll(ctx context.Context, opt *OrganizationsListOptions) ([]*Organization, *Response, error) {
-	u, err := addOptions("organizations", opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview)
-
-	orgs := []*Organization{}
-	resp, err := s.client.Do(ctx, req, &orgs)
-	if err != nil {
-		return nil, resp, err
-	}
-	return orgs, resp, nil
-}
-
-// List the organizations for a user. Passing the empty string will list
-// organizations for the authenticated user.
-//
-// GitHub API docs: https://developer.github.com/v3/orgs/#list-user-organizations
-func (s *OrganizationsService) List(ctx context.Context, user string, opt *ListOptions) ([]*Organization, *Response, error) {
-	var u string
-	if user != "" {
-		u = fmt.Sprintf("users/%v/orgs", user)
-	} else {
-		u = "user/orgs"
-	}
-	u, err := addOptions(u, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview)
-
-	var orgs []*Organization
-	resp, err := s.client.Do(ctx, req, &orgs)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return orgs, resp, nil
-}
-
-// Get fetches an organization by name.
-//
-// GitHub API docs: https://developer.github.com/v3/orgs/#get-an-organization
-func (s *OrganizationsService) Get(ctx context.Context, org string) (*Organization, *Response, error) {
-	u := fmt.Sprintf("orgs/%v", org)
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview)
-
-	organization := new(Organization)
-	resp, err := s.client.Do(ctx, req, organization)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return organization, resp, nil
-}
-
-// GetByID fetches an organization.
-//
-// Note: GetByID uses the undocumented GitHub API endpoint /organizations/:id.
-func (s *OrganizationsService) GetByID(ctx context.Context, id int64) (*Organization, *Response, error) {
-	u := fmt.Sprintf("organizations/%d", id)
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview)
-
-	organization := new(Organization)
-	resp, err := s.client.Do(ctx, req, organization)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return organization, resp, nil
-}
-
-// Edit an organization.
-//
-// GitHub API docs: https://developer.github.com/v3/orgs/#edit-an-organization
-func (s *OrganizationsService) Edit(ctx context.Context, name string, org *Organization) (*Organization, *Response, error) {
-	u := fmt.Sprintf("orgs/%v", name)
-	req, err := s.client.NewRequest("PATCH", u, org)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview)
-
-	o := new(Organization)
-	resp, err := s.client.Do(ctx, req, o)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return o, resp, nil
-}

+ 0 - 107
vendor/github.com/google/go-github/github/orgs_hooks.go

@@ -1,107 +0,0 @@
-// Copyright 2015 The go-github 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 github
-
-import (
-	"context"
-	"fmt"
-)
-
-// ListHooks lists all Hooks for the specified organization.
-//
-// GitHub API docs: https://developer.github.com/v3/orgs/hooks/#list-hooks
-func (s *OrganizationsService) ListHooks(ctx context.Context, org string, opt *ListOptions) ([]*Hook, *Response, error) {
-	u := fmt.Sprintf("orgs/%v/hooks", org)
-	u, err := addOptions(u, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	var hooks []*Hook
-	resp, err := s.client.Do(ctx, req, &hooks)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return hooks, resp, nil
-}
-
-// GetHook returns a single specified Hook.
-//
-// GitHub API docs: https://developer.github.com/v3/orgs/hooks/#get-single-hook
-func (s *OrganizationsService) GetHook(ctx context.Context, org string, id int) (*Hook, *Response, error) {
-	u := fmt.Sprintf("orgs/%v/hooks/%d", org, id)
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-	hook := new(Hook)
-	resp, err := s.client.Do(ctx, req, hook)
-	return hook, resp, err
-}
-
-// CreateHook creates a Hook for the specified org.
-// Name and Config are required fields.
-//
-// GitHub API docs: https://developer.github.com/v3/orgs/hooks/#create-a-hook
-func (s *OrganizationsService) CreateHook(ctx context.Context, org string, hook *Hook) (*Hook, *Response, error) {
-	u := fmt.Sprintf("orgs/%v/hooks", org)
-	req, err := s.client.NewRequest("POST", u, hook)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	h := new(Hook)
-	resp, err := s.client.Do(ctx, req, h)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return h, resp, nil
-}
-
-// EditHook updates a specified Hook.
-//
-// GitHub API docs: https://developer.github.com/v3/orgs/hooks/#edit-a-hook
-func (s *OrganizationsService) EditHook(ctx context.Context, org string, id int, hook *Hook) (*Hook, *Response, error) {
-	u := fmt.Sprintf("orgs/%v/hooks/%d", org, id)
-	req, err := s.client.NewRequest("PATCH", u, hook)
-	if err != nil {
-		return nil, nil, err
-	}
-	h := new(Hook)
-	resp, err := s.client.Do(ctx, req, h)
-	return h, resp, err
-}
-
-// PingHook triggers a 'ping' event to be sent to the Hook.
-//
-// GitHub API docs: https://developer.github.com/v3/orgs/hooks/#ping-a-hook
-func (s *OrganizationsService) PingHook(ctx context.Context, org string, id int) (*Response, error) {
-	u := fmt.Sprintf("orgs/%v/hooks/%d/pings", org, id)
-	req, err := s.client.NewRequest("POST", u, nil)
-	if err != nil {
-		return nil, err
-	}
-	return s.client.Do(ctx, req, nil)
-}
-
-// DeleteHook deletes a specified Hook.
-//
-// GitHub API docs: https://developer.github.com/v3/orgs/hooks/#delete-a-hook
-func (s *OrganizationsService) DeleteHook(ctx context.Context, org string, id int) (*Response, error) {
-	u := fmt.Sprintf("orgs/%v/hooks/%d", org, id)
-	req, err := s.client.NewRequest("DELETE", u, nil)
-	if err != nil {
-		return nil, err
-	}
-	return s.client.Do(ctx, req, nil)
-}

+ 0 - 299
vendor/github.com/google/go-github/github/orgs_members.go

@@ -1,299 +0,0 @@
-// Copyright 2013 The go-github 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 github
-
-import (
-	"context"
-	"fmt"
-)
-
-// Membership represents the status of a user's membership in an organization or team.
-type Membership struct {
-	URL *string `json:"url,omitempty"`
-
-	// State is the user's status within the organization or team.
-	// Possible values are: "active", "pending"
-	State *string `json:"state,omitempty"`
-
-	// Role identifies the user's role within the organization or team.
-	// Possible values for organization membership:
-	//     member - non-owner organization member
-	//     admin - organization owner
-	//
-	// Possible values for team membership are:
-	//     member - a normal member of the team
-	//     maintainer - a team maintainer. Able to add/remove other team
-	//                  members, promote other team members to team
-	//                  maintainer, and edit the team’s name and description
-	Role *string `json:"role,omitempty"`
-
-	// For organization membership, the API URL of the organization.
-	OrganizationURL *string `json:"organization_url,omitempty"`
-
-	// For organization membership, the organization the membership is for.
-	Organization *Organization `json:"organization,omitempty"`
-
-	// For organization membership, the user the membership is for.
-	User *User `json:"user,omitempty"`
-}
-
-func (m Membership) String() string {
-	return Stringify(m)
-}
-
-// ListMembersOptions specifies optional parameters to the
-// OrganizationsService.ListMembers method.
-type ListMembersOptions struct {
-	// If true (or if the authenticated user is not an owner of the
-	// organization), list only publicly visible members.
-	PublicOnly bool `url:"-"`
-
-	// Filter members returned in the list. Possible values are:
-	// 2fa_disabled, all. Default is "all".
-	Filter string `url:"filter,omitempty"`
-
-	// Role filters members returned by their role in the organization.
-	// Possible values are:
-	//     all - all members of the organization, regardless of role
-	//     admin - organization owners
-	//     member - non-organization members
-	//
-	// Default is "all".
-	Role string `url:"role,omitempty"`
-
-	ListOptions
-}
-
-// ListMembers lists the members for an organization. If the authenticated
-// user is an owner of the organization, this will return both concealed and
-// public members, otherwise it will only return public members.
-//
-// GitHub API docs: https://developer.github.com/v3/orgs/members/#members-list
-func (s *OrganizationsService) ListMembers(ctx context.Context, org string, opt *ListMembersOptions) ([]*User, *Response, error) {
-	var u string
-	if opt != nil && opt.PublicOnly {
-		u = fmt.Sprintf("orgs/%v/public_members", org)
-	} else {
-		u = fmt.Sprintf("orgs/%v/members", org)
-	}
-	u, err := addOptions(u, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	var members []*User
-	resp, err := s.client.Do(ctx, req, &members)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return members, resp, nil
-}
-
-// IsMember checks if a user is a member of an organization.
-//
-// GitHub API docs: https://developer.github.com/v3/orgs/members/#check-membership
-func (s *OrganizationsService) IsMember(ctx context.Context, org, user string) (bool, *Response, error) {
-	u := fmt.Sprintf("orgs/%v/members/%v", org, user)
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return false, nil, err
-	}
-
-	resp, err := s.client.Do(ctx, req, nil)
-	member, err := parseBoolResponse(err)
-	return member, resp, err
-}
-
-// IsPublicMember checks if a user is a public member of an organization.
-//
-// GitHub API docs: https://developer.github.com/v3/orgs/members/#check-public-membership
-func (s *OrganizationsService) IsPublicMember(ctx context.Context, org, user string) (bool, *Response, error) {
-	u := fmt.Sprintf("orgs/%v/public_members/%v", org, user)
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return false, nil, err
-	}
-
-	resp, err := s.client.Do(ctx, req, nil)
-	member, err := parseBoolResponse(err)
-	return member, resp, err
-}
-
-// RemoveMember removes a user from all teams of an organization.
-//
-// GitHub API docs: https://developer.github.com/v3/orgs/members/#remove-a-member
-func (s *OrganizationsService) RemoveMember(ctx context.Context, org, user string) (*Response, error) {
-	u := fmt.Sprintf("orgs/%v/members/%v", org, user)
-	req, err := s.client.NewRequest("DELETE", u, nil)
-	if err != nil {
-		return nil, err
-	}
-
-	return s.client.Do(ctx, req, nil)
-}
-
-// PublicizeMembership publicizes a user's membership in an organization. (A
-// user cannot publicize the membership for another user.)
-//
-// GitHub API docs: https://developer.github.com/v3/orgs/members/#publicize-a-users-membership
-func (s *OrganizationsService) PublicizeMembership(ctx context.Context, org, user string) (*Response, error) {
-	u := fmt.Sprintf("orgs/%v/public_members/%v", org, user)
-	req, err := s.client.NewRequest("PUT", u, nil)
-	if err != nil {
-		return nil, err
-	}
-
-	return s.client.Do(ctx, req, nil)
-}
-
-// ConcealMembership conceals a user's membership in an organization.
-//
-// GitHub API docs: https://developer.github.com/v3/orgs/members/#conceal-a-users-membership
-func (s *OrganizationsService) ConcealMembership(ctx context.Context, org, user string) (*Response, error) {
-	u := fmt.Sprintf("orgs/%v/public_members/%v", org, user)
-	req, err := s.client.NewRequest("DELETE", u, nil)
-	if err != nil {
-		return nil, err
-	}
-
-	return s.client.Do(ctx, req, nil)
-}
-
-// ListOrgMembershipsOptions specifies optional parameters to the
-// OrganizationsService.ListOrgMemberships method.
-type ListOrgMembershipsOptions struct {
-	// Filter memberships to include only those with the specified state.
-	// Possible values are: "active", "pending".
-	State string `url:"state,omitempty"`
-
-	ListOptions
-}
-
-// ListOrgMemberships lists the organization memberships for the authenticated user.
-//
-// GitHub API docs: https://developer.github.com/v3/orgs/members/#list-your-organization-memberships
-func (s *OrganizationsService) ListOrgMemberships(ctx context.Context, opt *ListOrgMembershipsOptions) ([]*Membership, *Response, error) {
-	u := "user/memberships/orgs"
-	u, err := addOptions(u, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	var memberships []*Membership
-	resp, err := s.client.Do(ctx, req, &memberships)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return memberships, resp, nil
-}
-
-// GetOrgMembership gets the membership for a user in a specified organization.
-// Passing an empty string for user will get the membership for the
-// authenticated user.
-//
-// GitHub API docs:
-// https://developer.github.com/v3/orgs/members/#get-organization-membership
-// https://developer.github.com/v3/orgs/members/#get-your-organization-membership
-func (s *OrganizationsService) GetOrgMembership(ctx context.Context, user, org string) (*Membership, *Response, error) {
-	var u string
-	if user != "" {
-		u = fmt.Sprintf("orgs/%v/memberships/%v", org, user)
-	} else {
-		u = fmt.Sprintf("user/memberships/orgs/%v", org)
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	membership := new(Membership)
-	resp, err := s.client.Do(ctx, req, membership)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return membership, resp, nil
-}
-
-// EditOrgMembership edits the membership for user in specified organization.
-// Passing an empty string for user will edit the membership for the
-// authenticated user.
-//
-// GitHub API docs: https://developer.github.com/v3/orgs/members/#add-or-update-organization-membership
-// GitHub API docs: https://developer.github.com/v3/orgs/members/#edit-your-organization-membership
-func (s *OrganizationsService) EditOrgMembership(ctx context.Context, user, org string, membership *Membership) (*Membership, *Response, error) {
-	var u, method string
-	if user != "" {
-		u = fmt.Sprintf("orgs/%v/memberships/%v", org, user)
-		method = "PUT"
-	} else {
-		u = fmt.Sprintf("user/memberships/orgs/%v", org)
-		method = "PATCH"
-	}
-
-	req, err := s.client.NewRequest(method, u, membership)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	m := new(Membership)
-	resp, err := s.client.Do(ctx, req, m)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return m, resp, nil
-}
-
-// RemoveOrgMembership removes user from the specified organization. If the
-// user has been invited to the organization, this will cancel their invitation.
-//
-// GitHub API docs: https://developer.github.com/v3/orgs/members/#remove-organization-membership
-func (s *OrganizationsService) RemoveOrgMembership(ctx context.Context, user, org string) (*Response, error) {
-	u := fmt.Sprintf("orgs/%v/memberships/%v", org, user)
-	req, err := s.client.NewRequest("DELETE", u, nil)
-	if err != nil {
-		return nil, err
-	}
-
-	return s.client.Do(ctx, req, nil)
-}
-
-// ListPendingOrgInvitations returns a list of pending invitations.
-//
-// GitHub API docs: https://developer.github.com/v3/orgs/members/#list-pending-organization-invitations
-func (s *OrganizationsService) ListPendingOrgInvitations(ctx context.Context, org string, opt *ListOptions) ([]*Invitation, *Response, error) {
-	u := fmt.Sprintf("orgs/%v/invitations", org)
-	u, err := addOptions(u, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	var pendingInvitations []*Invitation
-	resp, err := s.client.Do(ctx, req, &pendingInvitations)
-	if err != nil {
-		return nil, resp, err
-	}
-	return pendingInvitations, resp, nil
-}

+ 0 - 81
vendor/github.com/google/go-github/github/orgs_outside_collaborators.go

@@ -1,81 +0,0 @@
-// Copyright 2017 The go-github 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 github
-
-import (
-	"context"
-	"fmt"
-)
-
-// ListOutsideCollaboratorsOptions specifies optional parameters to the
-// OrganizationsService.ListOutsideCollaborators method.
-type ListOutsideCollaboratorsOptions struct {
-	// Filter outside collaborators returned in the list. Possible values are:
-	// 2fa_disabled, all.  Default is "all".
-	Filter string `url:"filter,omitempty"`
-
-	ListOptions
-}
-
-// ListOutsideCollaborators lists outside collaborators of organization's repositories.
-// This will only work if the authenticated
-// user is an owner of the organization.
-//
-// Warning: The API may change without advance notice during the preview period.
-// Preview features are not supported for production use.
-//
-// GitHub API docs: https://developer.github.com/v3/orgs/outside_collaborators/#list-outside-collaborators
-func (s *OrganizationsService) ListOutsideCollaborators(ctx context.Context, org string, opt *ListOutsideCollaboratorsOptions) ([]*User, *Response, error) {
-	u := fmt.Sprintf("orgs/%v/outside_collaborators", org)
-	u, err := addOptions(u, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	var members []*User
-	resp, err := s.client.Do(ctx, req, &members)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return members, resp, nil
-}
-
-// RemoveOutsideCollaborator removes a user from the list of outside collaborators;
-// consequently, removing them from all the organization's repositories.
-//
-// GitHub API docs: https://developer.github.com/v3/orgs/outside_collaborators/#remove-outside-collaborator
-func (s *OrganizationsService) RemoveOutsideCollaborator(ctx context.Context, org string, user string) (*Response, error) {
-	u := fmt.Sprintf("orgs/%v/outside_collaborators/%v", org, user)
-	req, err := s.client.NewRequest("DELETE", u, nil)
-	if err != nil {
-		return nil, err
-	}
-
-	return s.client.Do(ctx, req, nil)
-}
-
-// ConvertMemberToOutsideCollaborator reduces the permission level of a member of the
-// organization to that of an outside collaborator. Therefore, they will only
-// have access to the repositories that their current team membership allows.
-// Responses for converting a non-member or the last owner to an outside collaborator
-// are listed in GitHub API docs.
-//
-// GitHub API docs: https://developer.github.com/v3/orgs/outside_collaborators/#convert-member-to-outside-collaborator
-func (s *OrganizationsService) ConvertMemberToOutsideCollaborator(ctx context.Context, org string, user string) (*Response, error) {
-	u := fmt.Sprintf("orgs/%v/outside_collaborators/%v", org, user)
-	req, err := s.client.NewRequest("PUT", u, nil)
-	if err != nil {
-		return nil, err
-	}
-
-	return s.client.Do(ctx, req, nil)
-}

+ 0 - 60
vendor/github.com/google/go-github/github/orgs_projects.go

@@ -1,60 +0,0 @@
-// Copyright 2017 The go-github 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 github
-
-import (
-	"context"
-	"fmt"
-)
-
-// ListProjects lists the projects for an organization.
-//
-// GitHub API docs: https://developer.github.com/v3/projects/#list-organization-projects
-func (s *OrganizationsService) ListProjects(ctx context.Context, org string, opt *ProjectListOptions) ([]*Project, *Response, error) {
-	u := fmt.Sprintf("orgs/%v/projects", org)
-	u, err := addOptions(u, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeProjectsPreview)
-
-	var projects []*Project
-	resp, err := s.client.Do(ctx, req, &projects)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return projects, resp, nil
-}
-
-// CreateProject creates a GitHub Project for the specified organization.
-//
-// GitHub API docs: https://developer.github.com/v3/projects/#create-an-organization-project
-func (s *OrganizationsService) CreateProject(ctx context.Context, org string, opt *ProjectOptions) (*Project, *Response, error) {
-	u := fmt.Sprintf("orgs/%v/projects", org)
-	req, err := s.client.NewRequest("POST", u, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeProjectsPreview)
-
-	project := &Project{}
-	resp, err := s.client.Do(ctx, req, project)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return project, resp, nil
-}

+ 0 - 512
vendor/github.com/google/go-github/github/orgs_teams.go

@@ -1,512 +0,0 @@
-// Copyright 2013 The go-github 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 github
-
-import (
-	"context"
-	"fmt"
-	"strings"
-	"time"
-)
-
-// Team represents a team within a GitHub organization. Teams are used to
-// manage access to an organization's repositories.
-type Team struct {
-	ID          *int64  `json:"id,omitempty"`
-	Name        *string `json:"name,omitempty"`
-	Description *string `json:"description,omitempty"`
-	URL         *string `json:"url,omitempty"`
-	Slug        *string `json:"slug,omitempty"`
-
-	// Permission specifies the default permission for repositories owned by the team.
-	Permission *string `json:"permission,omitempty"`
-
-	// Privacy identifies the level of privacy this team should have.
-	// Possible values are:
-	//     secret - only visible to organization owners and members of this team
-	//     closed - visible to all members of this organization
-	// Default is "secret".
-	Privacy *string `json:"privacy,omitempty"`
-
-	MembersCount    *int          `json:"members_count,omitempty"`
-	ReposCount      *int          `json:"repos_count,omitempty"`
-	Organization    *Organization `json:"organization,omitempty"`
-	MembersURL      *string       `json:"members_url,omitempty"`
-	RepositoriesURL *string       `json:"repositories_url,omitempty"`
-	Parent          *Team         `json:"parent,omitempty"`
-
-	// LDAPDN is only available in GitHub Enterprise and when the team
-	// membership is synchronized with LDAP.
-	LDAPDN *string `json:"ldap_dn,omitempty"`
-}
-
-func (t Team) String() string {
-	return Stringify(t)
-}
-
-// Invitation represents a team member's invitation status.
-type Invitation struct {
-	ID    *int64  `json:"id,omitempty"`
-	Login *string `json:"login,omitempty"`
-	Email *string `json:"email,omitempty"`
-	// Role can be one of the values - 'direct_member', 'admin', 'billing_manager', 'hiring_manager', or 'reinstate'.
-	Role      *string    `json:"role,omitempty"`
-	CreatedAt *time.Time `json:"created_at,omitempty"`
-	Inviter   *User      `json:"inviter,omitempty"`
-}
-
-func (i Invitation) String() string {
-	return Stringify(i)
-}
-
-// ListTeams lists all of the teams for an organization.
-//
-// GitHub API docs: https://developer.github.com/v3/orgs/teams/#list-teams
-func (s *OrganizationsService) ListTeams(ctx context.Context, org string, opt *ListOptions) ([]*Team, *Response, error) {
-	u := fmt.Sprintf("orgs/%v/teams", org)
-	u, err := addOptions(u, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeNestedTeamsPreview)
-
-	var teams []*Team
-	resp, err := s.client.Do(ctx, req, &teams)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return teams, resp, nil
-}
-
-// GetTeam fetches a team by ID.
-//
-// GitHub API docs: https://developer.github.com/v3/orgs/teams/#get-team
-func (s *OrganizationsService) GetTeam(ctx context.Context, team int64) (*Team, *Response, error) {
-	u := fmt.Sprintf("teams/%v", team)
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeNestedTeamsPreview)
-
-	t := new(Team)
-	resp, err := s.client.Do(ctx, req, t)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return t, resp, nil
-}
-
-// NewTeam represents a team to be created or modified.
-type NewTeam struct {
-	Name         string   `json:"name"` // Name of the team. (Required.)
-	Description  *string  `json:"description,omitempty"`
-	Maintainers  []string `json:"maintainers,omitempty"`
-	RepoNames    []string `json:"repo_names,omitempty"`
-	ParentTeamID *int64   `json:"parent_team_id,omitempty"`
-
-	// Deprecated: Permission is deprecated when creating or editing a team in an org
-	// using the new GitHub permission model. It no longer identifies the
-	// permission a team has on its repos, but only specifies the default
-	// permission a repo is initially added with. Avoid confusion by
-	// specifying a permission value when calling AddTeamRepo.
-	Permission *string `json:"permission,omitempty"`
-
-	// Privacy identifies the level of privacy this team should have.
-	// Possible values are:
-	//     secret - only visible to organization owners and members of this team
-	//     closed - visible to all members of this organization
-	// Default is "secret".
-	Privacy *string `json:"privacy,omitempty"`
-
-	// LDAPDN may be used in GitHub Enterprise when the team membership
-	// is synchronized with LDAP.
-	LDAPDN *string `json:"ldap_dn,omitempty"`
-}
-
-func (s NewTeam) String() string {
-	return Stringify(s)
-}
-
-// CreateTeam creates a new team within an organization.
-//
-// GitHub API docs: https://developer.github.com/v3/orgs/teams/#create-team
-func (s *OrganizationsService) CreateTeam(ctx context.Context, org string, team *NewTeam) (*Team, *Response, error) {
-	u := fmt.Sprintf("orgs/%v/teams", org)
-	req, err := s.client.NewRequest("POST", u, team)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeNestedTeamsPreview)
-
-	t := new(Team)
-	resp, err := s.client.Do(ctx, req, t)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return t, resp, nil
-}
-
-// EditTeam edits a team.
-//
-// GitHub API docs: https://developer.github.com/v3/orgs/teams/#edit-team
-func (s *OrganizationsService) EditTeam(ctx context.Context, id int64, team *NewTeam) (*Team, *Response, error) {
-	u := fmt.Sprintf("teams/%v", id)
-	req, err := s.client.NewRequest("PATCH", u, team)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeNestedTeamsPreview)
-
-	t := new(Team)
-	resp, err := s.client.Do(ctx, req, t)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return t, resp, nil
-}
-
-// DeleteTeam deletes a team.
-//
-// GitHub API docs: https://developer.github.com/v3/orgs/teams/#delete-team
-func (s *OrganizationsService) DeleteTeam(ctx context.Context, team int64) (*Response, error) {
-	u := fmt.Sprintf("teams/%v", team)
-	req, err := s.client.NewRequest("DELETE", u, nil)
-	if err != nil {
-		return nil, err
-	}
-
-	req.Header.Set("Accept", mediaTypeNestedTeamsPreview)
-
-	return s.client.Do(ctx, req, nil)
-}
-
-// OrganizationListTeamMembersOptions specifies the optional parameters to the
-// OrganizationsService.ListTeamMembers method.
-type OrganizationListTeamMembersOptions struct {
-	// Role filters members returned by their role in the team. Possible
-	// values are "all", "member", "maintainer". Default is "all".
-	Role string `url:"role,omitempty"`
-
-	ListOptions
-}
-
-// ListChildTeams lists child teams for a team.
-//
-// GitHub API docs: https://developer.github.com/v3/orgs/teams/#list-child-teams
-func (s *OrganizationsService) ListChildTeams(ctx context.Context, teamID int64, opt *ListOptions) ([]*Team, *Response, error) {
-	u := fmt.Sprintf("teams/%v/teams", teamID)
-	u, err := addOptions(u, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req.Header.Set("Accept", mediaTypeNestedTeamsPreview)
-
-	var teams []*Team
-	resp, err := s.client.Do(ctx, req, &teams)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return teams, resp, nil
-}
-
-// ListTeamMembers lists all of the users who are members of the specified
-// team.
-//
-// GitHub API docs: https://developer.github.com/v3/orgs/teams/#list-team-members
-func (s *OrganizationsService) ListTeamMembers(ctx context.Context, team int64, opt *OrganizationListTeamMembersOptions) ([]*User, *Response, error) {
-	u := fmt.Sprintf("teams/%v/members", team)
-	u, err := addOptions(u, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req.Header.Set("Accept", mediaTypeNestedTeamsPreview)
-
-	var members []*User
-	resp, err := s.client.Do(ctx, req, &members)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return members, resp, nil
-}
-
-// IsTeamMember checks if a user is a member of the specified team.
-//
-// GitHub API docs: https://developer.github.com/v3/orgs/teams/#get-team-member
-//
-// Deprecated: This API has been marked as deprecated in the Github API docs,
-// OrganizationsService.GetTeamMembership method should be used instead.
-func (s *OrganizationsService) IsTeamMember(ctx context.Context, team int64, user string) (bool, *Response, error) {
-	u := fmt.Sprintf("teams/%v/members/%v", team, user)
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return false, nil, err
-	}
-
-	resp, err := s.client.Do(ctx, req, nil)
-	member, err := parseBoolResponse(err)
-	return member, resp, err
-}
-
-// ListTeamRepos lists the repositories that the specified team has access to.
-//
-// GitHub API docs: https://developer.github.com/v3/orgs/teams/#list-team-repos
-func (s *OrganizationsService) ListTeamRepos(ctx context.Context, team int64, opt *ListOptions) ([]*Repository, *Response, error) {
-	u := fmt.Sprintf("teams/%v/repos", team)
-	u, err := addOptions(u, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when topics API fully launches.
-	headers := []string{mediaTypeTopicsPreview, mediaTypeNestedTeamsPreview}
-	req.Header.Set("Accept", strings.Join(headers, ", "))
-
-	var repos []*Repository
-	resp, err := s.client.Do(ctx, req, &repos)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return repos, resp, nil
-}
-
-// IsTeamRepo checks if a team manages the specified repository. If the
-// repository is managed by team, a Repository is returned which includes the
-// permissions team has for that repo.
-//
-// GitHub API docs: https://developer.github.com/v3/orgs/teams/#check-if-a-team-manages-a-repository
-func (s *OrganizationsService) IsTeamRepo(ctx context.Context, team int64, owner string, repo string) (*Repository, *Response, error) {
-	u := fmt.Sprintf("teams/%v/repos/%v/%v", team, owner, repo)
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	headers := []string{mediaTypeOrgPermissionRepo, mediaTypeNestedTeamsPreview}
-	req.Header.Set("Accept", strings.Join(headers, ", "))
-
-	repository := new(Repository)
-	resp, err := s.client.Do(ctx, req, repository)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return repository, resp, nil
-}
-
-// OrganizationAddTeamRepoOptions specifies the optional parameters to the
-// OrganizationsService.AddTeamRepo method.
-type OrganizationAddTeamRepoOptions struct {
-	// Permission specifies the permission to grant the team on this repository.
-	// Possible values are:
-	//     pull - team members can pull, but not push to or administer this repository
-	//     push - team members can pull and push, but not administer this repository
-	//     admin - team members can pull, push and administer this repository
-	//
-	// If not specified, the team's permission attribute will be used.
-	Permission string `json:"permission,omitempty"`
-}
-
-// AddTeamRepo adds a repository to be managed by the specified team. The
-// specified repository must be owned by the organization to which the team
-// belongs, or a direct fork of a repository owned by the organization.
-//
-// GitHub API docs: https://developer.github.com/v3/orgs/teams/#add-team-repo
-func (s *OrganizationsService) AddTeamRepo(ctx context.Context, team int64, owner string, repo string, opt *OrganizationAddTeamRepoOptions) (*Response, error) {
-	u := fmt.Sprintf("teams/%v/repos/%v/%v", team, owner, repo)
-	req, err := s.client.NewRequest("PUT", u, opt)
-	if err != nil {
-		return nil, err
-	}
-
-	return s.client.Do(ctx, req, nil)
-}
-
-// RemoveTeamRepo removes a repository from being managed by the specified
-// team. Note that this does not delete the repository, it just removes it
-// from the team.
-//
-// GitHub API docs: https://developer.github.com/v3/orgs/teams/#remove-team-repo
-func (s *OrganizationsService) RemoveTeamRepo(ctx context.Context, team int64, owner string, repo string) (*Response, error) {
-	u := fmt.Sprintf("teams/%v/repos/%v/%v", team, owner, repo)
-	req, err := s.client.NewRequest("DELETE", u, nil)
-	if err != nil {
-		return nil, err
-	}
-
-	return s.client.Do(ctx, req, nil)
-}
-
-// ListUserTeams lists a user's teams
-// GitHub API docs: https://developer.github.com/v3/orgs/teams/#list-user-teams
-func (s *OrganizationsService) ListUserTeams(ctx context.Context, opt *ListOptions) ([]*Team, *Response, error) {
-	u := "user/teams"
-	u, err := addOptions(u, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	// TODO: remove custom Accept header when this API fully launches.
-	req.Header.Set("Accept", mediaTypeNestedTeamsPreview)
-
-	var teams []*Team
-	resp, err := s.client.Do(ctx, req, &teams)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return teams, resp, nil
-}
-
-// GetTeamMembership returns the membership status for a user in a team.
-//
-// GitHub API docs: https://developer.github.com/v3/orgs/teams/#get-team-membership
-func (s *OrganizationsService) GetTeamMembership(ctx context.Context, team int64, user string) (*Membership, *Response, error) {
-	u := fmt.Sprintf("teams/%v/memberships/%v", team, user)
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req.Header.Set("Accept", mediaTypeNestedTeamsPreview)
-
-	t := new(Membership)
-	resp, err := s.client.Do(ctx, req, t)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return t, resp, nil
-}
-
-// OrganizationAddTeamMembershipOptions does stuff specifies the optional
-// parameters to the OrganizationsService.AddTeamMembership method.
-type OrganizationAddTeamMembershipOptions struct {
-	// Role specifies the role the user should have in the team. Possible
-	// values are:
-	//     member - a normal member of the team
-	//     maintainer - a team maintainer. Able to add/remove other team
-	//                  members, promote other team members to team
-	//                  maintainer, and edit the team’s name and description
-	//
-	// Default value is "member".
-	Role string `json:"role,omitempty"`
-}
-
-// AddTeamMembership adds or invites a user to a team.
-//
-// In order to add a membership between a user and a team, the authenticated
-// user must have 'admin' permissions to the team or be an owner of the
-// organization that the team is associated with.
-//
-// If the user is already a part of the team's organization (meaning they're on
-// at least one other team in the organization), this endpoint will add the
-// user to the team.
-//
-// If the user is completely unaffiliated with the team's organization (meaning
-// they're on none of the organization's teams), this endpoint will send an
-// invitation to the user via email. This newly-created membership will be in
-// the "pending" state until the user accepts the invitation, at which point
-// the membership will transition to the "active" state and the user will be
-// added as a member of the team.
-//
-// GitHub API docs: https://developer.github.com/v3/orgs/teams/#add-team-membership
-func (s *OrganizationsService) AddTeamMembership(ctx context.Context, team int64, user string, opt *OrganizationAddTeamMembershipOptions) (*Membership, *Response, error) {
-	u := fmt.Sprintf("teams/%v/memberships/%v", team, user)
-	req, err := s.client.NewRequest("PUT", u, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	t := new(Membership)
-	resp, err := s.client.Do(ctx, req, t)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return t, resp, nil
-}
-
-// RemoveTeamMembership removes a user from a team.
-//
-// GitHub API docs: https://developer.github.com/v3/orgs/teams/#remove-team-membership
-func (s *OrganizationsService) RemoveTeamMembership(ctx context.Context, team int64, user string) (*Response, error) {
-	u := fmt.Sprintf("teams/%v/memberships/%v", team, user)
-	req, err := s.client.NewRequest("DELETE", u, nil)
-	if err != nil {
-		return nil, err
-	}
-
-	return s.client.Do(ctx, req, nil)
-}
-
-// ListPendingTeamInvitations get pending invitaion list in team.
-// Warning: The API may change without advance notice during the preview period.
-// Preview features are not supported for production use.
-//
-// GitHub API docs: https://developer.github.com/v3/orgs/teams/#list-pending-team-invitations
-func (s *OrganizationsService) ListPendingTeamInvitations(ctx context.Context, team int64, opt *ListOptions) ([]*Invitation, *Response, error) {
-	u := fmt.Sprintf("teams/%v/invitations", team)
-	u, err := addOptions(u, opt)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	req, err := s.client.NewRequest("GET", u, nil)
-	if err != nil {
-		return nil, nil, err
-	}
-
-	var pendingInvitations []*Invitation
-	resp, err := s.client.Do(ctx, req, &pendingInvitations)
-	if err != nil {
-		return nil, resp, err
-	}
-
-	return pendingInvitations, resp, nil
-}

Some files were not shown because too many files changed in this diff