This is an automated email from the ASF dual-hosted git repository.

zrhoffman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficcontrol.git


The following commit(s) were added to refs/heads/master by this push:
     new 793c4a8  Updated gopkg.in/yaml.v2 module to 2.2.8 and updated go 
version to 1.15.13 (#5982)
793c4a8 is described below

commit 793c4a883ab0abab3d5fbdf73d781b9ecfbe81c3
Author: Rima Shah <[email protected]>
AuthorDate: Fri Jul 2 16:35:30 2021 -0600

    Updated gopkg.in/yaml.v2 module to 2.2.8 and updated go version to 1.15.13 
(#5982)
    
    * Updated go mod, sum and version
    
    * Updated modules.txt
    
    * Not changing the go version
    
    * Revert "Not changing the go version"
    
    This reverts commit 2e1a98f9
    
    * Committing vendor dir changes
    
    * Update go version to 1.15.13
    
    * removed pflag license
---
 GO_VERSION                                |   2 +-
 LICENSE                                   |   5 -
 go.mod                                    |   4 +-
 go.sum                                    |  13 +-
 vendor/github.com/ogier/pflag/.travis.yml |   4 -
 vendor/github.com/ogier/pflag/LICENSE     |  28 --
 vendor/github.com/ogier/pflag/README.md   | 157 --------
 vendor/github.com/ogier/pflag/bool.go     |  79 ----
 vendor/github.com/ogier/pflag/duration.go |  74 ----
 vendor/github.com/ogier/pflag/flag.go     | 624 ------------------------------
 vendor/github.com/ogier/pflag/float32.go  |  70 ----
 vendor/github.com/ogier/pflag/float64.go  |  70 ----
 vendor/github.com/ogier/pflag/int.go      |  70 ----
 vendor/github.com/ogier/pflag/int32.go    |  70 ----
 vendor/github.com/ogier/pflag/int64.go    |  70 ----
 vendor/github.com/ogier/pflag/int8.go     |  70 ----
 vendor/github.com/ogier/pflag/ip.go       |  75 ----
 vendor/github.com/ogier/pflag/ipmask.go   |  85 ----
 vendor/github.com/ogier/pflag/string.go   |  66 ----
 vendor/github.com/ogier/pflag/uint.go     |  70 ----
 vendor/github.com/ogier/pflag/uint16.go   |  71 ----
 vendor/github.com/ogier/pflag/uint32.go   |  71 ----
 vendor/github.com/ogier/pflag/uint64.go   |  70 ----
 vendor/github.com/ogier/pflag/uint8.go    |  70 ----
 vendor/gopkg.in/yaml.v2/.travis.yml       |  18 +-
 vendor/gopkg.in/yaml.v2/decode.go         |  48 ++-
 vendor/gopkg.in/yaml.v2/encode.go         |  28 ++
 vendor/gopkg.in/yaml.v2/resolve.go        |   2 +-
 vendor/gopkg.in/yaml.v2/scannerc.go       | 123 +++---
 vendor/gopkg.in/yaml.v2/yaml.go           |   2 +-
 vendor/gopkg.in/yaml.v2/yamlh.go          |   1 +
 vendor/modules.txt                        |   6 +-
 32 files changed, 160 insertions(+), 2056 deletions(-)

diff --git a/GO_VERSION b/GO_VERSION
index 50830c8..903bc64 100644
--- a/GO_VERSION
+++ b/GO_VERSION
@@ -1 +1 @@
-1.15.12
+1.15.13
diff --git a/LICENSE b/LICENSE
index f2dd99a..444a775 100644
--- a/LICENSE
+++ b/LICENSE
@@ -531,11 +531,6 @@ This product bundles dgrijalva/jwt-go, which is available 
under an MIT license.
 ./vendor/github.com/dgrijalva/jwt-go/LICENSE
 Refer to the above license for the full text.
 
-This product bundles ogier/pflag, which is available under a BSD-3-Clause 
license.
-@vendor/github.com/ogier/pflag/*
-./vendor/github.com/ogier/pflag/LICENSE
-Refer to the above license for the full text.
-
 This product bundles errors, which is available under a BSD-2-Clause license.
 @vendor/github.com/pkg/errors/*
 ./vendor/github.com/pkg/errors/LICENSE
diff --git a/go.mod b/go.mod
index c5d14cc..569a20e 100644
--- a/go.mod
+++ b/go.mod
@@ -22,7 +22,7 @@ go 1.15
 replace (
        github.com/fsnotify/fsnotify v1.4.9 => github.com/fsnotify/fsnotify 
v1.3.0
        github.com/golang/protobuf v1.4.2 => github.com/golang/protobuf 
v0.0.0-20171021043952-1643683e1b54
-       gopkg.in/yaml.v2 v2.3.0 => gopkg.in/yaml.v2 v2.2.1
+       gopkg.in/yaml.v2 v2.3.0 => gopkg.in/yaml.v2 v2.2.8
 )
 
 require (
@@ -54,7 +54,6 @@ require (
        github.com/miekg/dns v1.0.6-0.20180406150955-01d59357d468
        github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // 
indirect
        github.com/modern-go/reflect2 v1.0.1 // indirect
-       github.com/ogier/pflag v0.0.2-0.20201025181535-73e519546fc0
        github.com/onsi/ginkgo v1.14.2
        github.com/onsi/gomega v1.10.3
        github.com/pborman/getopt/v2 v2.1.0
@@ -64,7 +63,6 @@ require (
        golang.org/x/crypto v0.0.0-20210506145944-38f3c27a63bf
        golang.org/x/net v0.0.0-20210505214959-0714010a04ed
        golang.org/x/sys v0.0.0-20210503173754-0981d6026fa6
-       golang.org/x/text v0.3.6 // indirect
        golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
        gopkg.in/DATA-DOG/go-sqlmock.v1 v1.3.0
        gopkg.in/asn1-ber.v1 v1.0.0-20170511165959-379148ca0225 // indirect
diff --git a/go.sum b/go.sum
index 4b72aeb..a635022 100644
--- a/go.sum
+++ b/go.sum
@@ -63,8 +63,6 @@ github.com/modern-go/reflect2 v1.0.1 
h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9
 github.com/modern-go/reflect2 v1.0.1/go.mod 
h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
 github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78=
 github.com/nxadm/tail v1.4.4/go.mod 
h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
-github.com/ogier/pflag v0.0.2-0.20201025181535-73e519546fc0 
h1:GGuh6ijy3a9BZ8RoAGQZcwTRYyY1Zbnt+YR1uVMV5+U=
-github.com/ogier/pflag v0.0.2-0.20201025181535-73e519546fc0/go.mod 
h1:zkFki7tvTa0tafRvTBIZTvzYyAu6kQhPZFnshFFPE+g=
 github.com/onsi/ginkgo v1.6.0/go.mod 
h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
 github.com/onsi/ginkgo v1.12.1/go.mod 
h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
 github.com/onsi/ginkgo v1.14.2 h1:8mVmC9kjFFmA8H4pKMUhcblgifdkOIXPvbhN1T36q1M=
@@ -86,8 +84,6 @@ go.etcd.io/bbolt v1.3.5 
h1:XAzx9gjCb0Rxj7EoqcClPD1d5ZBxZJk0jbuoPHenBt0=
 go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ=
 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod 
h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod 
h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2 
h1:It14KIkyBFYkHkwZ7k45minvA9aorojkyjGk9KJ5B/w=
-golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod 
h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
 golang.org/x/crypto v0.0.0-20210506145944-38f3c27a63bf 
h1:B2n+Zi5QeYRDAEodEu72OS36gmTWjgpXr2+cWcBW90o=
 golang.org/x/crypto v0.0.0-20210506145944-38f3c27a63bf/go.mod 
h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8=
 golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod 
h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -95,8 +91,6 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod 
h1:t9HGtf8HONx5eT2rtn
 golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod 
h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
 golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0/go.mod 
h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod 
h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
-golang.org/x/net v0.0.0-20210331212208-0fccb6fa2b5c 
h1:KHUzaHIpjWVlVVNh65G3hhuj3KB1HnjY6Cq5cTvRQT8=
-golang.org/x/net v0.0.0-20210331212208-0fccb6fa2b5c/go.mod 
h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
 golang.org/x/net v0.0.0-20210505214959-0714010a04ed 
h1:V9kAVxLvz1lkufatrpHuUVyJ/5tR3Ms7rk951P4mI98=
 golang.org/x/net v0.0.0-20210505214959-0714010a04ed/go.mod 
h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
 golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f 
h1:wMNYb4v58l5UBM7MYRLPG6ZhfOqbKu7X5eyFl8ZhKvA=
@@ -111,9 +105,6 @@ golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod 
h1:h1NjWce9XRLGQEsW7w
 golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210331175145-43e1dd70ce54 
h1:rF3Ohx8DRyl8h2zw9qojyLHLhrJpEMgyPOImREEryf0=
-golang.org/x/sys v0.0.0-20210331175145-43e1dd70ce54/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20210503173754-0981d6026fa6 
h1:cdsMqa2nXzqlgs183pHxtvoVwU7CyzaCTAUOg94af4c=
 golang.org/x/sys v0.0.0-20210503173754-0981d6026fa6/go.mod 
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
@@ -140,8 +131,8 @@ gopkg.in/square/go-jose.v2 v2.3.1 
h1:SK5KegNXmKmqE342YYN2qPHEnUYeoMiXXl1poUlI+o4
 gopkg.in/square/go-jose.v2 v2.3.1/go.mod 
h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI=
 gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 
h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
 gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod 
h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
-gopkg.in/yaml.v2 v2.2.1 h1:mUhvW9EsL+naU5Q3cakzfE91YhliOondGd6ZrsDBHQE=
-gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10=
+gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c 
h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod 
h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
diff --git a/vendor/github.com/ogier/pflag/.travis.yml 
b/vendor/github.com/ogier/pflag/.travis.yml
deleted file mode 100644
index 6c29e1e..0000000
--- a/vendor/github.com/ogier/pflag/.travis.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-language: go
-arch:
-   - ppc64le
-   - amd64
diff --git a/vendor/github.com/ogier/pflag/LICENSE 
b/vendor/github.com/ogier/pflag/LICENSE
deleted file mode 100644
index 63ed1cf..0000000
--- a/vendor/github.com/ogier/pflag/LICENSE
+++ /dev/null
@@ -1,28 +0,0 @@
-Copyright (c) 2012 Alex Ogier. All rights reserved.
-Copyright (c) 2012 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.
diff --git a/vendor/github.com/ogier/pflag/README.md 
b/vendor/github.com/ogier/pflag/README.md
deleted file mode 100644
index d9b189f..0000000
--- a/vendor/github.com/ogier/pflag/README.md
+++ /dev/null
@@ -1,157 +0,0 @@
-[![Build 
Status](https://travis-ci.org/ogier/pflag.png?branch=master)](https://travis-ci.org/ogier/pflag)
-
-## Description
-
-pflag is a drop-in replacement for Go's flag package, implementing
-POSIX/GNU-style --flags.
-
-pflag is compatible with the [GNU extensions to the POSIX recommendations
-for command-line options][1]. For a more precise description, see the
-"Command-line flag syntax" section below.
-
-[1]: http://www.gnu.org/software/libc/manual/html_node/Argument-Syntax.html
-
-pflag is available under the same style of BSD license as the Go language,
-which can be found in the LICENSE file.
-
-## Installation
-
-pflag is available using the standard `go get` command.
-
-Install by running:
-
-    go get github.com/ogier/pflag
-
-Run tests by running:
-
-    go test github.com/ogier/pflag
-
-## Usage
-
-pflag is a drop-in replacement of Go's native flag package. If you import
-pflag under the name "flag" then all code should continue to function
-with no changes.
-
-``` go
-import flag "github.com/ogier/pflag"
-```
-
-There is one exception to this: if you directly instantiate the Flag struct
-there is one more field "Shorthand" that you will need to set.
-Most code never instantiates this struct directly, and instead uses
-functions such as String(), BoolVar(), and Var(), and is therefore
-unaffected.
-
-Define flags using flag.String(), Bool(), Int(), etc.
-
-This declares an integer flag, -flagname, stored in the pointer ip, with type 
*int.
-
-``` go
-var ip *int = flag.Int("flagname", 1234, "help message for flagname")
-```
-
-If you like, you can bind the flag to a variable using the Var() functions.
-
-``` go
-var flagvar int
-func init() {
-    flag.IntVar(&flagvar, "flagname", 1234, "help message for flagname")
-}
-```
-
-Or you can create custom flags that satisfy the Value interface (with
-pointer receivers) and couple them to flag parsing by
-
-``` go
-flag.Var(&flagVal, "name", "help message for flagname")
-```
-
-For such flags, the default value is just the initial value of the variable.
-
-After all flags are defined, call
-
-``` go
-flag.Parse()
-```
-
-to parse the command line into the defined flags.
-
-Flags may then be used directly. If you're using the flags themselves,
-they are all pointers; if you bind to variables, they're values.
-
-``` go
-fmt.Println("ip has value ", *ip)
-fmt.Println("flagvar has value ", flagvar)
-```
-
-After parsing, the arguments after the flag are available as the
-slice flag.Args() or individually as flag.Arg(i).
-The arguments are indexed from 0 through flag.NArg()-1.
-
-The pflag package also defines some new functions that are not in flag,
-that give one-letter shorthands for flags. You can use these by appending
-'P' to the name of any function that defines a flag.
-
-``` go
-var ip = flag.IntP("flagname", "f", 1234, "help message")
-var flagvar bool
-func init() {
-    flag.BoolVarP("boolname", "b", true, "help message")
-}
-flag.VarP(&flagVar, "varname", "v", 1234, "help message")
-```
-
-Shorthand letters can be used with single dashes on the command line.
-Boolean shorthand flags can be combined with other shorthand flags.
-
-The default set of command-line flags is controlled by
-top-level functions.  The FlagSet type allows one to define
-independent sets of flags, such as to implement subcommands
-in a command-line interface. The methods of FlagSet are
-analogous to the top-level functions for the command-line
-flag set.
-
-## Command line flag syntax
-
-```
---flag    // boolean flags only
---flag=x
-```
-
-Unlike the flag package, a single dash before an option means something
-different than a double dash. Single dashes signify a series of shorthand
-letters for flags. All but the last shorthand letter must be boolean flags.
-
-```
-// boolean flags
--f
--abc
-
-// non-boolean flags
--n 1234
--Ifile
-
-// mixed
--abcs "hello"
--abcn1234
-```
-
-Flag parsing stops after the terminator "--". Unlike the flag package,
-flags can be interspersed with arguments anywhere on the command line
-before this terminator.
-
-Integer flags accept 1234, 0664, 0x1234 and may be negative.
-Boolean flags (in their long form) accept 1, 0, t, f, true, false,
-TRUE, FALSE, True, False.
-Duration flags accept any input valid for time.ParseDuration.
-
-## More info
-
-You can see the full reference documentation of the pflag package
-[at godoc.org][3], or through go's standard documentation system by
-running `godoc -http=:6060` and browsing to
-[http://localhost:6060/pkg/github.com/ogier/pflag][2] after
-installation.
-
-[2]: http://localhost:6060/pkg/github.com/ogier/pflag
-[3]: http://godoc.org/github.com/ogier/pflag
diff --git a/vendor/github.com/ogier/pflag/bool.go 
b/vendor/github.com/ogier/pflag/bool.go
deleted file mode 100644
index 617971a..0000000
--- a/vendor/github.com/ogier/pflag/bool.go
+++ /dev/null
@@ -1,79 +0,0 @@
-package pflag
-
-import (
-       "fmt"
-       "strconv"
-)
-
-// optional interface to indicate boolean flags that can be
-// supplied without "=value" text
-type boolFlag interface {
-       Value
-       IsBoolFlag() bool
-}
-
-// -- bool Value
-type boolValue bool
-
-func newBoolValue(val bool, p *bool) *boolValue {
-       *p = val
-       return (*boolValue)(p)
-}
-
-func (b *boolValue) Set(s string) error {
-       v, err := strconv.ParseBool(s)
-       *b = boolValue(v)
-       return err
-}
-
-func (b *boolValue) String() string { return fmt.Sprintf("%v", *b) }
-
-func (b *boolValue) IsBoolFlag() bool { return true }
-
-// BoolVar defines a bool flag with specified name, default value, and usage 
string.
-// The argument p points to a bool variable in which to store the value of the 
flag.
-func (f *FlagSet) BoolVar(p *bool, name string, value bool, usage string) {
-       f.VarP(newBoolValue(value, p), name, "", usage)
-}
-
-// Like BoolVar, but accepts a shorthand letter that can be used after a 
single dash.
-func (f *FlagSet) BoolVarP(p *bool, name, shorthand string, value bool, usage 
string) {
-       f.VarP(newBoolValue(value, p), name, shorthand, usage)
-}
-
-// BoolVar defines a bool flag with specified name, default value, and usage 
string.
-// The argument p points to a bool variable in which to store the value of the 
flag.
-func BoolVar(p *bool, name string, value bool, usage string) {
-       CommandLine.VarP(newBoolValue(value, p), name, "", usage)
-}
-
-// Like BoolVar, but accepts a shorthand letter that can be used after a 
single dash.
-func BoolVarP(p *bool, name, shorthand string, value bool, usage string) {
-       CommandLine.VarP(newBoolValue(value, p), name, shorthand, usage)
-}
-
-// Bool defines a bool flag with specified name, default value, and usage 
string.
-// The return value is the address of a bool variable that stores the value of 
the flag.
-func (f *FlagSet) Bool(name string, value bool, usage string) *bool {
-       p := new(bool)
-       f.BoolVarP(p, name, "", value, usage)
-       return p
-}
-
-// Like Bool, but accepts a shorthand letter that can be used after a single 
dash.
-func (f *FlagSet) BoolP(name, shorthand string, value bool, usage string) 
*bool {
-       p := new(bool)
-       f.BoolVarP(p, name, shorthand, value, usage)
-       return p
-}
-
-// Bool defines a bool flag with specified name, default value, and usage 
string.
-// The return value is the address of a bool variable that stores the value of 
the flag.
-func Bool(name string, value bool, usage string) *bool {
-       return CommandLine.BoolP(name, "", value, usage)
-}
-
-// Like Bool, but accepts a shorthand letter that can be used after a single 
dash.
-func BoolP(name, shorthand string, value bool, usage string) *bool {
-       return CommandLine.BoolP(name, shorthand, value, usage)
-}
diff --git a/vendor/github.com/ogier/pflag/duration.go 
b/vendor/github.com/ogier/pflag/duration.go
deleted file mode 100644
index db59463..0000000
--- a/vendor/github.com/ogier/pflag/duration.go
+++ /dev/null
@@ -1,74 +0,0 @@
-package pflag
-
-import "time"
-
-// -- time.Duration Value
-type durationValue time.Duration
-
-func newDurationValue(val time.Duration, p *time.Duration) *durationValue {
-       *p = val
-       return (*durationValue)(p)
-}
-
-func (d *durationValue) Set(s string) error {
-       v, err := time.ParseDuration(s)
-       *d = durationValue(v)
-       return err
-}
-
-func (d *durationValue) String() string { return (*time.Duration)(d).String() }
-
-// Value is the interface to the dynamic value stored in a flag.
-// (The default value is represented as a string.)
-type Value interface {
-       String() string
-       Set(string) error
-}
-
-// DurationVar defines a time.Duration flag with specified name, default 
value, and usage string.
-// The argument p points to a time.Duration variable in which to store the 
value of the flag.
-func (f *FlagSet) DurationVar(p *time.Duration, name string, value 
time.Duration, usage string) {
-       f.VarP(newDurationValue(value, p), name, "", usage)
-}
-
-// Like DurationVar, but accepts a shorthand letter that can be used after a 
single dash.
-func (f *FlagSet) DurationVarP(p *time.Duration, name, shorthand string, value 
time.Duration, usage string) {
-       f.VarP(newDurationValue(value, p), name, shorthand, usage)
-}
-
-// DurationVar defines a time.Duration flag with specified name, default 
value, and usage string.
-// The argument p points to a time.Duration variable in which to store the 
value of the flag.
-func DurationVar(p *time.Duration, name string, value time.Duration, usage 
string) {
-       CommandLine.VarP(newDurationValue(value, p), name, "", usage)
-}
-
-// Like DurationVar, but accepts a shorthand letter that can be used after a 
single dash.
-func DurationVarP(p *time.Duration, name, shorthand string, value 
time.Duration, usage string) {
-       CommandLine.VarP(newDurationValue(value, p), name, shorthand, usage)
-}
-
-// Duration defines a time.Duration flag with specified name, default value, 
and usage string.
-// The return value is the address of a time.Duration variable that stores the 
value of the flag.
-func (f *FlagSet) Duration(name string, value time.Duration, usage string) 
*time.Duration {
-       p := new(time.Duration)
-       f.DurationVarP(p, name, "", value, usage)
-       return p
-}
-
-// Like Duration, but accepts a shorthand letter that can be used after a 
single dash.
-func (f *FlagSet) DurationP(name, shorthand string, value time.Duration, usage 
string) *time.Duration {
-       p := new(time.Duration)
-       f.DurationVarP(p, name, shorthand, value, usage)
-       return p
-}
-
-// Duration defines a time.Duration flag with specified name, default value, 
and usage string.
-// The return value is the address of a time.Duration variable that stores the 
value of the flag.
-func Duration(name string, value time.Duration, usage string) *time.Duration {
-       return CommandLine.DurationP(name, "", value, usage)
-}
-
-// Like Duration, but accepts a shorthand letter that can be used after a 
single dash.
-func DurationP(name, shorthand string, value time.Duration, usage string) 
*time.Duration {
-       return CommandLine.DurationP(name, shorthand, value, usage)
-}
diff --git a/vendor/github.com/ogier/pflag/flag.go 
b/vendor/github.com/ogier/pflag/flag.go
deleted file mode 100644
index 9d1e0ca..0000000
--- a/vendor/github.com/ogier/pflag/flag.go
+++ /dev/null
@@ -1,624 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-/*
-       pflag is a drop-in replacement for Go's flag package, implementing
-       POSIX/GNU-style --flags.
-
-       pflag is compatible with the GNU extensions to the POSIX recommendations
-       for command-line options. See
-       http://www.gnu.org/software/libc/manual/html_node/Argument-Syntax.html
-
-       Usage:
-
-       pflag is a drop-in replacement of Go's native flag package. If you 
import
-       pflag under the name "flag" then all code should continue to function
-       with no changes.
-
-               import flag "github.com/ogier/pflag"
-
-       There is one exception to this: if you directly instantiate the Flag 
struct
-       there is one more field "Shorthand" that you will need to set.
-       Most code never instantiates this struct directly, and instead uses
-       functions such as String(), BoolVar(), and Var(), and is therefore
-       unaffected.
-
-       Define flags using flag.String(), Bool(), Int(), etc.
-
-       This declares an integer flag, -flagname, stored in the pointer ip, 
with type *int.
-               var ip = flag.Int("flagname", 1234, "help message for flagname")
-       If you like, you can bind the flag to a variable using the Var() 
functions.
-               var flagvar int
-               func init() {
-                       flag.IntVar(&flagvar, "flagname", 1234, "help message 
for flagname")
-               }
-       Or you can create custom flags that satisfy the Value interface (with
-       pointer receivers) and couple them to flag parsing by
-               flag.Var(&flagVal, "name", "help message for flagname")
-       For such flags, the default value is just the initial value of the 
variable.
-
-       After all flags are defined, call
-               flag.Parse()
-       to parse the command line into the defined flags.
-
-       Flags may then be used directly. If you're using the flags themselves,
-       they are all pointers; if you bind to variables, they're values.
-               fmt.Println("ip has value ", *ip)
-               fmt.Println("flagvar has value ", flagvar)
-
-       After parsing, the arguments after the flag are available as the
-       slice flag.Args() or individually as flag.Arg(i).
-       The arguments are indexed from 0 through flag.NArg()-1.
-
-       The pflag package also defines some new functions that are not in flag,
-       that give one-letter shorthands for flags. You can use these by 
appending
-       'P' to the name of any function that defines a flag.
-               var ip = flag.IntP("flagname", "f", 1234, "help message")
-               var flagvar bool
-               func init() {
-                       flag.BoolVarP("boolname", "b", true, "help message")
-               }
-               flag.VarP(&flagVar, "varname", "v", 1234, "help message")
-       Shorthand letters can be used with single dashes on the command line.
-       Boolean shorthand flags can be combined with other shorthand flags.
-
-       Command line flag syntax:
-               --flag    // boolean flags only
-               --flag=x
-
-       Unlike the flag package, a single dash before an option means something
-       different than a double dash. Single dashes signify a series of 
shorthand
-       letters for flags. All but the last shorthand letter must be boolean 
flags.
-               // boolean flags
-               -f
-               -abc
-               // non-boolean flags
-               -n 1234
-               -Ifile
-               // mixed
-               -abcs "hello"
-               -abcn1234
-
-       Flag parsing stops after the terminator "--". Unlike the flag package,
-       flags can be interspersed with arguments anywhere on the command line
-       before this terminator.
-
-       Integer flags accept 1234, 0664, 0x1234 and may be negative.
-       Boolean flags (in their long form) accept 1, 0, t, f, true, false,
-       TRUE, FALSE, True, False.
-       Duration flags accept any input valid for time.ParseDuration.
-
-       The default set of command-line flags is controlled by
-       top-level functions.  The FlagSet type allows one to define
-       independent sets of flags, such as to implement subcommands
-       in a command-line interface. The methods of FlagSet are
-       analogous to the top-level functions for the command-line
-       flag set.
-*/
-package pflag
-
-import (
-       "errors"
-       "fmt"
-       "io"
-       "os"
-       "sort"
-       "strings"
-)
-
-// ErrHelp is the error returned if the flag -help is invoked but no such flag 
is defined.
-var ErrHelp = errors.New("pflag: help requested")
-
-// ErrorHandling defines how to handle flag parsing errors.
-type ErrorHandling int
-
-const (
-       ContinueOnError ErrorHandling = iota
-       ExitOnError
-       PanicOnError
-)
-
-// A FlagSet represents a set of defined flags.
-type FlagSet struct {
-       // Usage is the function called when an error occurs while parsing 
flags.
-       // The field is a function (not a method) that may be changed to point 
to
-       // a custom error handler.
-       Usage func()
-
-       name          string
-       parsed        bool
-       actual        map[string]*Flag
-       formal        map[string]*Flag
-       shorthands    map[byte]*Flag
-       args          []string // arguments after flags
-       exitOnError   bool     // does the program exit if there's an error?
-       errorHandling ErrorHandling
-       output        io.Writer // nil means stderr; use out() accessor
-       interspersed  bool      // allow interspersed option/non-option args
-}
-
-// A Flag represents the state of a flag.
-type Flag struct {
-       Name      string // name as it appears on command line
-       Shorthand string // one-letter abbreviated flag
-       Usage     string // help message
-       Value     Value  // value as set
-       DefValue  string // default value (as text); for usage message
-}
-
-// sortFlags returns the flags as a slice in lexicographical sorted order.
-func sortFlags(flags map[string]*Flag) []*Flag {
-       list := make(sort.StringSlice, len(flags))
-       i := 0
-       for _, f := range flags {
-               list[i] = f.Name
-               i++
-       }
-       list.Sort()
-       result := make([]*Flag, len(list))
-       for i, name := range list {
-               result[i] = flags[name]
-       }
-       return result
-}
-
-func (f *FlagSet) out() io.Writer {
-       if f.output == nil {
-               return os.Stderr
-       }
-       return f.output
-}
-
-// SetOutput sets the destination for usage and error messages.
-// If output is nil, os.Stderr is used.
-func (f *FlagSet) SetOutput(output io.Writer) {
-       f.output = output
-}
-
-// VisitAll visits the flags in lexicographical order, calling fn for each.
-// It visits all flags, even those not set.
-func (f *FlagSet) VisitAll(fn func(*Flag)) {
-       for _, flag := range sortFlags(f.formal) {
-               fn(flag)
-       }
-}
-
-// VisitAll visits the command-line flags in lexicographical order, calling
-// fn for each.  It visits all flags, even those not set.
-func VisitAll(fn func(*Flag)) {
-       CommandLine.VisitAll(fn)
-}
-
-// Visit visits the flags in lexicographical order, calling fn for each.
-// It visits only those flags that have been set.
-func (f *FlagSet) Visit(fn func(*Flag)) {
-       for _, flag := range sortFlags(f.actual) {
-               fn(flag)
-       }
-}
-
-// Visit visits the command-line flags in lexicographical order, calling fn
-// for each.  It visits only those flags that have been set.
-func Visit(fn func(*Flag)) {
-       CommandLine.Visit(fn)
-}
-
-// Lookup returns the Flag structure of the named flag, returning nil if none 
exists.
-func (f *FlagSet) Lookup(name string) *Flag {
-       return f.formal[name]
-}
-
-// Lookup returns the Flag structure of the named command-line flag,
-// returning nil if none exists.
-func Lookup(name string) *Flag {
-       return CommandLine.formal[name]
-}
-
-// Set sets the value of the named flag.
-func (f *FlagSet) Set(name, value string) error {
-       flag, ok := f.formal[name]
-       if !ok {
-               return fmt.Errorf("no such flag -%v", name)
-       }
-       err := flag.Value.Set(value)
-       if err != nil {
-               return err
-       }
-       if f.actual == nil {
-               f.actual = make(map[string]*Flag)
-       }
-       f.actual[name] = flag
-       return nil
-}
-
-// Set sets the value of the named command-line flag.
-func Set(name, value string) error {
-       return CommandLine.Set(name, value)
-}
-
-// isZeroValue guesses whether the string represents the zero
-// value for a flag. It is not accurate but in practice works OK.
-func isZeroValue(value string) bool {
-       switch value {
-       case "false":
-               return true
-       case "":
-               return true
-       case "0":
-               return true
-       }
-       return false
-}
-
-// UnquoteUsage extracts a back-quoted name from the usage
-// string for a flag and returns it and the un-quoted usage.
-// Given "a `name` to show" it returns ("name", "a name to show").
-// If there are no back quotes, the name is an educated guess of the
-// type of the flag's value, or the empty string if the flag is boolean.
-func UnquoteUsage(flag *Flag) (name string, usage string) {
-       // Look for a back-quoted name, but avoid the strings package.
-       usage = flag.Usage
-       for i := 0; i < len(usage); i++ {
-               if usage[i] == '`' {
-                       for j := i + 1; j < len(usage); j++ {
-                               if usage[j] == '`' {
-                                       name = usage[i+1 : j]
-                                       usage = usage[:i] + name + usage[j+1:]
-                                       return name, usage
-                               }
-                       }
-                       break // Only one back quote; use type name.
-               }
-       }
-       // No explicit name, so use type if we can find one.
-       name = "value"
-       switch flag.Value.(type) {
-       case boolFlag:
-               name = ""
-       case *durationValue:
-               name = "duration"
-       case *float64Value:
-               name = "float"
-       case *intValue, *int64Value:
-               name = "int"
-       case *stringValue:
-               name = "string"
-       case *uintValue, *uint64Value:
-               name = "uint"
-       }
-       return
-}
-
-// PrintDefaults prints to standard error the default values of all
-// defined command-line flags in the set. See the documentation for
-// the global function PrintDefaults for more information.
-func (f *FlagSet) PrintDefaults() {
-       f.VisitAll(func(flag *Flag) {
-               s := ""
-               if len(flag.Shorthand) > 0 {
-                       s = fmt.Sprintf("  -%s, --%s", flag.Shorthand, 
flag.Name)
-               } else {
-                       s = fmt.Sprintf("  --%s", flag.Name)
-               }
-
-               name, usage := UnquoteUsage(flag)
-               if len(name) > 0 {
-                       s += " " + name
-               }
-
-               s += "\n    \t"
-               s += usage
-               if !isZeroValue(flag.DefValue) {
-                       if _, ok := flag.Value.(*stringValue); ok {
-                               // put quotes on the value
-                               s += fmt.Sprintf(" (default %q)", flag.DefValue)
-                       } else {
-                               s += fmt.Sprintf(" (default %v)", flag.DefValue)
-                       }
-               }
-               fmt.Fprint(f.out(), s, "\n")
-       })
-}
-
-// PrintDefaults prints to standard error the default values of all defined 
command-line flags.
-func PrintDefaults() {
-       CommandLine.PrintDefaults()
-}
-
-// defaultUsage is the default function to print a usage message.
-func defaultUsage(f *FlagSet) {
-       if f.name == "" {
-               fmt.Fprintf(f.out(), "Usage:\n")
-       } else {
-               fmt.Fprintf(f.out(), "Usage of %s:\n", f.name)
-       }
-       f.PrintDefaults()
-}
-
-// NOTE: Usage is not just defaultUsage(CommandLine)
-// because it serves (via godoc flag Usage) as the example
-// for how to write your own usage function.
-
-// Usage prints to standard error a usage message documenting all defined 
command-line flags.
-// The function is a variable that may be changed to point to a custom 
function.
-var Usage = func() {
-       fmt.Fprintf(os.Stderr, "Usage of %s:\n", os.Args[0])
-       PrintDefaults()
-}
-
-// NFlag returns the number of flags that have been set.
-func (f *FlagSet) NFlag() int { return len(f.actual) }
-
-// NFlag returns the number of command-line flags that have been set.
-func NFlag() int { return len(CommandLine.actual) }
-
-// Arg returns the i'th argument.  Arg(0) is the first remaining argument
-// after flags have been processed.
-func (f *FlagSet) Arg(i int) string {
-       if i < 0 || i >= len(f.args) {
-               return ""
-       }
-       return f.args[i]
-}
-
-// Arg returns the i'th command-line argument.  Arg(0) is the first remaining 
argument
-// after flags have been processed.
-func Arg(i int) string {
-       return CommandLine.Arg(i)
-}
-
-// NArg is the number of arguments remaining after flags have been processed.
-func (f *FlagSet) NArg() int { return len(f.args) }
-
-// NArg is the number of arguments remaining after flags have been processed.
-func NArg() int { return len(CommandLine.args) }
-
-// Args returns the non-flag arguments.
-func (f *FlagSet) Args() []string { return f.args }
-
-// Args returns the non-flag command-line arguments.
-func Args() []string { return CommandLine.args }
-
-// Var defines a flag with the specified name and usage string. The type and
-// value of the flag are represented by the first argument, of type Value, 
which
-// typically holds a user-defined implementation of Value. For instance, the
-// caller could create a flag that turns a comma-separated string into a slice
-// of strings by giving the slice the methods of Value; in particular, Set 
would
-// decompose the comma-separated string into the slice.
-func (f *FlagSet) Var(value Value, name string, usage string) {
-       f.VarP(value, name, "", usage)
-}
-
-// Like Var, but accepts a shorthand letter that can be used after a single 
dash.
-func (f *FlagSet) VarP(value Value, name, shorthand, usage string) {
-       // Remember the default value as a string; it won't change.
-       flag := &Flag{name, shorthand, usage, value, value.String()}
-       _, alreadythere := f.formal[name]
-       if alreadythere {
-               msg := fmt.Sprintf("%s flag redefined: %s", f.name, name)
-               fmt.Fprintln(f.out(), msg)
-               panic(msg) // Happens only if flags are declared with identical 
names
-       }
-       if f.formal == nil {
-               f.formal = make(map[string]*Flag)
-       }
-       f.formal[name] = flag
-
-       if len(shorthand) == 0 {
-               return
-       }
-       if len(shorthand) > 1 {
-               fmt.Fprintf(f.out(), "%s shorthand more than ASCII character: 
%s\n", f.name, shorthand)
-               panic("shorthand is more than one character")
-       }
-       if f.shorthands == nil {
-               f.shorthands = make(map[byte]*Flag)
-       }
-       c := shorthand[0]
-       old, alreadythere := f.shorthands[c]
-       if alreadythere {
-               fmt.Fprintf(f.out(), "%s shorthand reused: %q for %s already 
used for %s\n", f.name, c, name, old.Name)
-               panic("shorthand redefinition")
-       }
-       f.shorthands[c] = flag
-}
-
-// Var defines a flag with the specified name and usage string. The type and
-// value of the flag are represented by the first argument, of type Value, 
which
-// typically holds a user-defined implementation of Value. For instance, the
-// caller could create a flag that turns a comma-separated string into a slice
-// of strings by giving the slice the methods of Value; in particular, Set 
would
-// decompose the comma-separated string into the slice.
-func Var(value Value, name string, usage string) {
-       CommandLine.VarP(value, name, "", usage)
-}
-
-// Like Var, but accepts a shorthand letter that can be used after a single 
dash.
-func VarP(value Value, name, shorthand, usage string) {
-       CommandLine.VarP(value, name, shorthand, usage)
-}
-
-// failf prints to standard error a formatted error and usage message and
-// returns the error.
-func (f *FlagSet) failf(format string, a ...interface{}) error {
-       err := fmt.Errorf(format, a...)
-       fmt.Fprintln(f.out(), err)
-       f.usage()
-       return err
-}
-
-// usage calls the Usage method for the flag set, or the usage function if
-// the flag set is CommandLine.
-func (f *FlagSet) usage() {
-       if f == CommandLine {
-               Usage()
-       } else if f.Usage == nil {
-               defaultUsage(f)
-       } else {
-               f.Usage()
-       }
-}
-
-func (f *FlagSet) setFlag(flag *Flag, value string, origArg string) error {
-       if err := flag.Value.Set(value); err != nil {
-               return f.failf("invalid argument %q for %s: %v", value, 
origArg, err)
-       }
-       // mark as visited for Visit()
-       if f.actual == nil {
-               f.actual = make(map[string]*Flag)
-       }
-       f.actual[flag.Name] = flag
-
-       return nil
-}
-
-func (f *FlagSet) parseArgs(args []string) error {
-       for len(args) > 0 {
-               s := args[0]
-               args = args[1:]
-               if len(s) == 0 || s[0] != '-' || len(s) == 1 {
-                       if !f.interspersed {
-                               f.args = append(f.args, s)
-                               f.args = append(f.args, args...)
-                               return nil
-                       }
-                       f.args = append(f.args, s)
-                       continue
-               }
-
-               if s[1] == '-' {
-                       if len(s) == 2 { // "--" terminates the flags
-                               f.args = append(f.args, args...)
-                               return nil
-                       }
-                       name := s[2:]
-                       if len(name) == 0 || name[0] == '-' || name[0] == '=' {
-                               return f.failf("bad flag syntax: %s", s)
-                       }
-                       split := strings.SplitN(name, "=", 2)
-                       name = split[0]
-                       m := f.formal
-                       flag, alreadythere := m[name] // BUG
-                       if !alreadythere {
-                               if name == "help" { // special case for nice 
help message.
-                                       f.usage()
-                                       return ErrHelp
-                               }
-                               return f.failf("unknown flag: --%s", name)
-                       }
-                       if len(split) == 1 {
-                               if bv, ok := flag.Value.(boolFlag); !ok || 
!bv.IsBoolFlag() {
-                                       return f.failf("flag needs an argument: 
%s", s)
-                               }
-                               f.setFlag(flag, "true", s)
-                       } else {
-                               if err := f.setFlag(flag, split[1], s); err != 
nil {
-                                       return err
-                               }
-                       }
-               } else {
-                       shorthands := s[1:]
-                       for i := 0; i < len(shorthands); i++ {
-                               c := shorthands[i]
-                               flag, alreadythere := f.shorthands[c]
-                               if !alreadythere {
-                                       if c == 'h' { // special case for nice 
help message.
-                                               f.usage()
-                                               return ErrHelp
-                                       }
-                                       return f.failf("unknown shorthand flag: 
%q in -%s", c, shorthands)
-                               }
-                               if bv, ok := flag.Value.(boolFlag); ok && 
bv.IsBoolFlag() {
-                                       f.setFlag(flag, "true", s)
-                                       continue
-                               }
-                               if i < len(shorthands)-1 {
-                                       if err := f.setFlag(flag, 
shorthands[i+1:], s); err != nil {
-                                               return err
-                                       }
-                                       break
-                               }
-                               if len(args) == 0 {
-                                       return f.failf("flag needs an argument: 
%q in -%s", c, shorthands)
-                               }
-                               if err := f.setFlag(flag, args[0], s); err != 
nil {
-                                       return err
-                               }
-                               args = args[1:]
-                               break // should be unnecessary
-                       }
-               }
-       }
-       return nil
-}
-
-// Parse parses flag definitions from the argument list, which should not
-// include the command name.  Must be called after all flags in the FlagSet
-// are defined and before flags are accessed by the program.
-// The return value will be ErrHelp if -help was set but not defined.
-func (f *FlagSet) Parse(arguments []string) error {
-       f.parsed = true
-       f.args = make([]string, 0, len(arguments))
-       err := f.parseArgs(arguments)
-       if err != nil {
-               switch f.errorHandling {
-               case ContinueOnError:
-                       return err
-               case ExitOnError:
-                       os.Exit(2)
-               case PanicOnError:
-                       panic(err)
-               }
-       }
-       return nil
-}
-
-// Parsed reports whether f.Parse has been called.
-func (f *FlagSet) Parsed() bool {
-       return f.parsed
-}
-
-// Parse parses the command-line flags from os.Args[1:].  Must be called
-// after all flags are defined and before flags are accessed by the program.
-func Parse() {
-       // Ignore errors; CommandLine is set for ExitOnError.
-       CommandLine.Parse(os.Args[1:])
-}
-
-// Whether to support interspersed option/non-option arguments.
-func SetInterspersed(interspersed bool) {
-       CommandLine.SetInterspersed(interspersed)
-}
-
-// Parsed returns true if the command-line flags have been parsed.
-func Parsed() bool {
-       return CommandLine.Parsed()
-}
-
-// The default set of command-line flags, parsed from os.Args.
-var CommandLine = NewFlagSet(os.Args[0], ExitOnError)
-
-// NewFlagSet returns a new, empty flag set with the specified name and
-// error handling property.
-func NewFlagSet(name string, errorHandling ErrorHandling) *FlagSet {
-       f := &FlagSet{
-               name:          name,
-               errorHandling: errorHandling,
-               interspersed:  true,
-       }
-       return f
-}
-
-// Whether to support interspersed option/non-option arguments.
-func (f *FlagSet) SetInterspersed(interspersed bool) {
-       f.interspersed = interspersed
-}
-
-// Init sets the name and error handling property for a flag set.
-// By default, the zero FlagSet uses an empty name and the
-// ContinueOnError error handling policy.
-func (f *FlagSet) Init(name string, errorHandling ErrorHandling) {
-       f.name = name
-       f.errorHandling = errorHandling
-}
diff --git a/vendor/github.com/ogier/pflag/float32.go 
b/vendor/github.com/ogier/pflag/float32.go
deleted file mode 100644
index a0041e2..0000000
--- a/vendor/github.com/ogier/pflag/float32.go
+++ /dev/null
@@ -1,70 +0,0 @@
-package pflag
-
-import (
-       "fmt"
-       "strconv"
-)
-
-// -- float32 Value
-type float32Value float32
-
-func newFloat32Value(val float32, p *float32) *float32Value {
-       *p = val
-       return (*float32Value)(p)
-}
-
-func (f *float32Value) Set(s string) error {
-       v, err := strconv.ParseFloat(s, 32)
-       *f = float32Value(v)
-       return err
-}
-
-func (f *float32Value) String() string { return fmt.Sprintf("%v", *f) }
-
-// Float32Var defines a float32 flag with specified name, default value, and 
usage string.
-// The argument p points to a float32 variable in which to store the value of 
the flag.
-func (f *FlagSet) Float32Var(p *float32, name string, value float32, usage 
string) {
-       f.VarP(newFloat32Value(value, p), name, "", usage)
-}
-
-// Like Float32Var, but accepts a shorthand letter that can be used after a 
single dash.
-func (f *FlagSet) Float32VarP(p *float32, name, shorthand string, value 
float32, usage string) {
-       f.VarP(newFloat32Value(value, p), name, shorthand, usage)
-}
-
-// Float32Var defines a float32 flag with specified name, default value, and 
usage string.
-// The argument p points to a float32 variable in which to store the value of 
the flag.
-func Float32Var(p *float32, name string, value float32, usage string) {
-       CommandLine.VarP(newFloat32Value(value, p), name, "", usage)
-}
-
-// Like Float32Var, but accepts a shorthand letter that can be used after a 
single dash.
-func Float32VarP(p *float32, name, shorthand string, value float32, usage 
string) {
-       CommandLine.VarP(newFloat32Value(value, p), name, shorthand, usage)
-}
-
-// Float32 defines a float32 flag with specified name, default value, and 
usage string.
-// The return value is the address of a float32 variable that stores the value 
of the flag.
-func (f *FlagSet) Float32(name string, value float32, usage string) *float32 {
-       p := new(float32)
-       f.Float32VarP(p, name, "", value, usage)
-       return p
-}
-
-// Like Float32, but accepts a shorthand letter that can be used after a 
single dash.
-func (f *FlagSet) Float32P(name, shorthand string, value float32, usage 
string) *float32 {
-       p := new(float32)
-       f.Float32VarP(p, name, shorthand, value, usage)
-       return p
-}
-
-// Float32 defines a float32 flag with specified name, default value, and 
usage string.
-// The return value is the address of a float32 variable that stores the value 
of the flag.
-func Float32(name string, value float32, usage string) *float32 {
-       return CommandLine.Float32P(name, "", value, usage)
-}
-
-// Like Float32, but accepts a shorthand letter that can be used after a 
single dash.
-func Float32P(name, shorthand string, value float32, usage string) *float32 {
-       return CommandLine.Float32P(name, shorthand, value, usage)
-}
diff --git a/vendor/github.com/ogier/pflag/float64.go 
b/vendor/github.com/ogier/pflag/float64.go
deleted file mode 100644
index 8d79be0..0000000
--- a/vendor/github.com/ogier/pflag/float64.go
+++ /dev/null
@@ -1,70 +0,0 @@
-package pflag
-
-import (
-       "fmt"
-       "strconv"
-)
-
-// -- float64 Value
-type float64Value float64
-
-func newFloat64Value(val float64, p *float64) *float64Value {
-       *p = val
-       return (*float64Value)(p)
-}
-
-func (f *float64Value) Set(s string) error {
-       v, err := strconv.ParseFloat(s, 64)
-       *f = float64Value(v)
-       return err
-}
-
-func (f *float64Value) String() string { return fmt.Sprintf("%v", *f) }
-
-// Float64Var defines a float64 flag with specified name, default value, and 
usage string.
-// The argument p points to a float64 variable in which to store the value of 
the flag.
-func (f *FlagSet) Float64Var(p *float64, name string, value float64, usage 
string) {
-       f.VarP(newFloat64Value(value, p), name, "", usage)
-}
-
-// Like Float64Var, but accepts a shorthand letter that can be used after a 
single dash.
-func (f *FlagSet) Float64VarP(p *float64, name, shorthand string, value 
float64, usage string) {
-       f.VarP(newFloat64Value(value, p), name, shorthand, usage)
-}
-
-// Float64Var defines a float64 flag with specified name, default value, and 
usage string.
-// The argument p points to a float64 variable in which to store the value of 
the flag.
-func Float64Var(p *float64, name string, value float64, usage string) {
-       CommandLine.VarP(newFloat64Value(value, p), name, "", usage)
-}
-
-// Like Float64Var, but accepts a shorthand letter that can be used after a 
single dash.
-func Float64VarP(p *float64, name, shorthand string, value float64, usage 
string) {
-       CommandLine.VarP(newFloat64Value(value, p), name, shorthand, usage)
-}
-
-// Float64 defines a float64 flag with specified name, default value, and 
usage string.
-// The return value is the address of a float64 variable that stores the value 
of the flag.
-func (f *FlagSet) Float64(name string, value float64, usage string) *float64 {
-       p := new(float64)
-       f.Float64VarP(p, name, "", value, usage)
-       return p
-}
-
-// Like Float64, but accepts a shorthand letter that can be used after a 
single dash.
-func (f *FlagSet) Float64P(name, shorthand string, value float64, usage 
string) *float64 {
-       p := new(float64)
-       f.Float64VarP(p, name, shorthand, value, usage)
-       return p
-}
-
-// Float64 defines a float64 flag with specified name, default value, and 
usage string.
-// The return value is the address of a float64 variable that stores the value 
of the flag.
-func Float64(name string, value float64, usage string) *float64 {
-       return CommandLine.Float64P(name, "", value, usage)
-}
-
-// Like Float64, but accepts a shorthand letter that can be used after a 
single dash.
-func Float64P(name, shorthand string, value float64, usage string) *float64 {
-       return CommandLine.Float64P(name, shorthand, value, usage)
-}
diff --git a/vendor/github.com/ogier/pflag/int.go 
b/vendor/github.com/ogier/pflag/int.go
deleted file mode 100644
index cb85e14..0000000
--- a/vendor/github.com/ogier/pflag/int.go
+++ /dev/null
@@ -1,70 +0,0 @@
-package pflag
-
-import (
-       "fmt"
-       "strconv"
-)
-
-// -- int Value
-type intValue int
-
-func newIntValue(val int, p *int) *intValue {
-       *p = val
-       return (*intValue)(p)
-}
-
-func (i *intValue) Set(s string) error {
-       v, err := strconv.ParseInt(s, 0, 64)
-       *i = intValue(v)
-       return err
-}
-
-func (i *intValue) String() string { return fmt.Sprintf("%v", *i) }
-
-// IntVar defines an int flag with specified name, default value, and usage 
string.
-// The argument p points to an int variable in which to store the value of the 
flag.
-func (f *FlagSet) IntVar(p *int, name string, value int, usage string) {
-       f.VarP(newIntValue(value, p), name, "", usage)
-}
-
-// Like IntVar, but accepts a shorthand letter that can be used after a single 
dash.
-func (f *FlagSet) IntVarP(p *int, name, shorthand string, value int, usage 
string) {
-       f.VarP(newIntValue(value, p), name, shorthand, usage)
-}
-
-// IntVar defines an int flag with specified name, default value, and usage 
string.
-// The argument p points to an int variable in which to store the value of the 
flag.
-func IntVar(p *int, name string, value int, usage string) {
-       CommandLine.VarP(newIntValue(value, p), name, "", usage)
-}
-
-// Like IntVar, but accepts a shorthand letter that can be used after a single 
dash.
-func IntVarP(p *int, name, shorthand string, value int, usage string) {
-       CommandLine.VarP(newIntValue(value, p), name, shorthand, usage)
-}
-
-// Int defines an int flag with specified name, default value, and usage 
string.
-// The return value is the address of an int variable that stores the value of 
the flag.
-func (f *FlagSet) Int(name string, value int, usage string) *int {
-       p := new(int)
-       f.IntVarP(p, name, "", value, usage)
-       return p
-}
-
-// Like Int, but accepts a shorthand letter that can be used after a single 
dash.
-func (f *FlagSet) IntP(name, shorthand string, value int, usage string) *int {
-       p := new(int)
-       f.IntVarP(p, name, shorthand, value, usage)
-       return p
-}
-
-// Int defines an int flag with specified name, default value, and usage 
string.
-// The return value is the address of an int variable that stores the value of 
the flag.
-func Int(name string, value int, usage string) *int {
-       return CommandLine.IntP(name, "", value, usage)
-}
-
-// Like Int, but accepts a shorthand letter that can be used after a single 
dash.
-func IntP(name, shorthand string, value int, usage string) *int {
-       return CommandLine.IntP(name, shorthand, value, usage)
-}
diff --git a/vendor/github.com/ogier/pflag/int32.go 
b/vendor/github.com/ogier/pflag/int32.go
deleted file mode 100644
index 2e1a317..0000000
--- a/vendor/github.com/ogier/pflag/int32.go
+++ /dev/null
@@ -1,70 +0,0 @@
-package pflag
-
-import (
-       "fmt"
-       "strconv"
-)
-
-// -- int32 Value
-type int32Value int32
-
-func newInt32Value(val int32, p *int32) *int32Value {
-       *p = val
-       return (*int32Value)(p)
-}
-
-func (i *int32Value) Set(s string) error {
-       v, err := strconv.ParseInt(s, 0, 32)
-       *i = int32Value(v)
-       return err
-}
-
-func (i *int32Value) String() string { return fmt.Sprintf("%v", *i) }
-
-// Int32Var defines an int32 flag with specified name, default value, and 
usage string.
-// The argument p points to an int32 variable in which to store the value of 
the flag.
-func (f *FlagSet) Int32Var(p *int32, name string, value int32, usage string) {
-       f.VarP(newInt32Value(value, p), name, "", usage)
-}
-
-// Like Int32Var, but accepts a shorthand letter that can be used after a 
single dash.
-func (f *FlagSet) Int32VarP(p *int32, name, shorthand string, value int32, 
usage string) {
-       f.VarP(newInt32Value(value, p), name, shorthand, usage)
-}
-
-// Int32Var defines an int32 flag with specified name, default value, and 
usage string.
-// The argument p points to an int32 variable in which to store the value of 
the flag.
-func Int32Var(p *int32, name string, value int32, usage string) {
-       CommandLine.VarP(newInt32Value(value, p), name, "", usage)
-}
-
-// Like Int32Var, but accepts a shorthand letter that can be used after a 
single dash.
-func Int32VarP(p *int32, name, shorthand string, value int32, usage string) {
-       CommandLine.VarP(newInt32Value(value, p), name, shorthand, usage)
-}
-
-// Int32 defines an int32 flag with specified name, default value, and usage 
string.
-// The return value is the address of an int32 variable that stores the value 
of the flag.
-func (f *FlagSet) Int32(name string, value int32, usage string) *int32 {
-       p := new(int32)
-       f.Int32VarP(p, name, "", value, usage)
-       return p
-}
-
-// Like Int32, but accepts a shorthand letter that can be used after a single 
dash.
-func (f *FlagSet) Int32P(name, shorthand string, value int32, usage string) 
*int32 {
-       p := new(int32)
-       f.Int32VarP(p, name, shorthand, value, usage)
-       return p
-}
-
-// Int32 defines an int32 flag with specified name, default value, and usage 
string.
-// The return value is the address of an int32 variable that stores the value 
of the flag.
-func Int32(name string, value int32, usage string) *int32 {
-       return CommandLine.Int32P(name, "", value, usage)
-}
-
-// Like Int32, but accepts a shorthand letter that can be used after a single 
dash.
-func Int32P(name, shorthand string, value int32, usage string) *int32 {
-       return CommandLine.Int32P(name, shorthand, value, usage)
-}
diff --git a/vendor/github.com/ogier/pflag/int64.go 
b/vendor/github.com/ogier/pflag/int64.go
deleted file mode 100644
index 43aeced..0000000
--- a/vendor/github.com/ogier/pflag/int64.go
+++ /dev/null
@@ -1,70 +0,0 @@
-package pflag
-
-import (
-       "fmt"
-       "strconv"
-)
-
-// -- int64 Value
-type int64Value int64
-
-func newInt64Value(val int64, p *int64) *int64Value {
-       *p = val
-       return (*int64Value)(p)
-}
-
-func (i *int64Value) Set(s string) error {
-       v, err := strconv.ParseInt(s, 0, 64)
-       *i = int64Value(v)
-       return err
-}
-
-func (i *int64Value) String() string { return fmt.Sprintf("%v", *i) }
-
-// Int64Var defines an int64 flag with specified name, default value, and 
usage string.
-// The argument p points to an int64 variable in which to store the value of 
the flag.
-func (f *FlagSet) Int64Var(p *int64, name string, value int64, usage string) {
-       f.VarP(newInt64Value(value, p), name, "", usage)
-}
-
-// Like Int64Var, but accepts a shorthand letter that can be used after a 
single dash.
-func (f *FlagSet) Int64VarP(p *int64, name, shorthand string, value int64, 
usage string) {
-       f.VarP(newInt64Value(value, p), name, shorthand, usage)
-}
-
-// Int64Var defines an int64 flag with specified name, default value, and 
usage string.
-// The argument p points to an int64 variable in which to store the value of 
the flag.
-func Int64Var(p *int64, name string, value int64, usage string) {
-       CommandLine.VarP(newInt64Value(value, p), name, "", usage)
-}
-
-// Like Int64Var, but accepts a shorthand letter that can be used after a 
single dash.
-func Int64VarP(p *int64, name, shorthand string, value int64, usage string) {
-       CommandLine.VarP(newInt64Value(value, p), name, shorthand, usage)
-}
-
-// Int64 defines an int64 flag with specified name, default value, and usage 
string.
-// The return value is the address of an int64 variable that stores the value 
of the flag.
-func (f *FlagSet) Int64(name string, value int64, usage string) *int64 {
-       p := new(int64)
-       f.Int64VarP(p, name, "", value, usage)
-       return p
-}
-
-// Like Int64, but accepts a shorthand letter that can be used after a single 
dash.
-func (f *FlagSet) Int64P(name, shorthand string, value int64, usage string) 
*int64 {
-       p := new(int64)
-       f.Int64VarP(p, name, shorthand, value, usage)
-       return p
-}
-
-// Int64 defines an int64 flag with specified name, default value, and usage 
string.
-// The return value is the address of an int64 variable that stores the value 
of the flag.
-func Int64(name string, value int64, usage string) *int64 {
-       return CommandLine.Int64P(name, "", value, usage)
-}
-
-// Like Int64, but accepts a shorthand letter that can be used after a single 
dash.
-func Int64P(name, shorthand string, value int64, usage string) *int64 {
-       return CommandLine.Int64P(name, shorthand, value, usage)
-}
diff --git a/vendor/github.com/ogier/pflag/int8.go 
b/vendor/github.com/ogier/pflag/int8.go
deleted file mode 100644
index 539c4eb..0000000
--- a/vendor/github.com/ogier/pflag/int8.go
+++ /dev/null
@@ -1,70 +0,0 @@
-package pflag
-
-import (
-       "fmt"
-       "strconv"
-)
-
-// -- int8 Value
-type int8Value int8
-
-func newInt8Value(val int8, p *int8) *int8Value {
-       *p = val
-       return (*int8Value)(p)
-}
-
-func (i *int8Value) Set(s string) error {
-       v, err := strconv.ParseInt(s, 0, 8)
-       *i = int8Value(v)
-       return err
-}
-
-func (i *int8Value) String() string { return fmt.Sprintf("%v", *i) }
-
-// Int8Var defines an int8 flag with specified name, default value, and usage 
string.
-// The argument p points to an int8 variable in which to store the value of 
the flag.
-func (f *FlagSet) Int8Var(p *int8, name string, value int8, usage string) {
-       f.VarP(newInt8Value(value, p), name, "", usage)
-}
-
-// Like Int8Var, but accepts a shorthand letter that can be used after a 
single dash.
-func (f *FlagSet) Int8VarP(p *int8, name, shorthand string, value int8, usage 
string) {
-       f.VarP(newInt8Value(value, p), name, shorthand, usage)
-}
-
-// Int8Var defines an int8 flag with specified name, default value, and usage 
string.
-// The argument p points to an int8 variable in which to store the value of 
the flag.
-func Int8Var(p *int8, name string, value int8, usage string) {
-       CommandLine.VarP(newInt8Value(value, p), name, "", usage)
-}
-
-// Like Int8Var, but accepts a shorthand letter that can be used after a 
single dash.
-func Int8VarP(p *int8, name, shorthand string, value int8, usage string) {
-       CommandLine.VarP(newInt8Value(value, p), name, shorthand, usage)
-}
-
-// Int8 defines an int8 flag with specified name, default value, and usage 
string.
-// The return value is the address of an int8 variable that stores the value 
of the flag.
-func (f *FlagSet) Int8(name string, value int8, usage string) *int8 {
-       p := new(int8)
-       f.Int8VarP(p, name, "", value, usage)
-       return p
-}
-
-// Like Int8, but accepts a shorthand letter that can be used after a single 
dash.
-func (f *FlagSet) Int8P(name, shorthand string, value int8, usage string) 
*int8 {
-       p := new(int8)
-       f.Int8VarP(p, name, shorthand, value, usage)
-       return p
-}
-
-// Int8 defines an int8 flag with specified name, default value, and usage 
string.
-// The return value is the address of an int8 variable that stores the value 
of the flag.
-func Int8(name string, value int8, usage string) *int8 {
-       return CommandLine.Int8P(name, "", value, usage)
-}
-
-// Like Int8, but accepts a shorthand letter that can be used after a single 
dash.
-func Int8P(name, shorthand string, value int8, usage string) *int8 {
-       return CommandLine.Int8P(name, shorthand, value, usage)
-}
diff --git a/vendor/github.com/ogier/pflag/ip.go 
b/vendor/github.com/ogier/pflag/ip.go
deleted file mode 100644
index 3a411fc..0000000
--- a/vendor/github.com/ogier/pflag/ip.go
+++ /dev/null
@@ -1,75 +0,0 @@
-package pflag
-
-import (
-       "fmt"
-       "net"
-)
-
-// -- net.IP value
-type ipValue net.IP
-
-func newIPValue(val net.IP, p *net.IP) *ipValue {
-       *p = val
-       return (*ipValue)(p)
-}
-
-func (i *ipValue) String() string { return net.IP(*i).String() }
-func (i *ipValue) Set(s string) error {
-       ip := net.ParseIP(s)
-       if ip == nil {
-               return fmt.Errorf("failed to parse IP: %q", s)
-       }
-       *i = ipValue(ip)
-       return nil
-}
-func (i *ipValue) Get() interface{} {
-       return net.IP(*i)
-}
-
-// IPVar defines an net.IP flag with specified name, default value, and usage 
string.
-// The argument p points to an net.IP variable in which to store the value of 
the flag.
-func (f *FlagSet) IPVar(p *net.IP, name string, value net.IP, usage string) {
-       f.VarP(newIPValue(value, p), name, "", usage)
-}
-
-// Like IPVar, but accepts a shorthand letter that can be used after a single 
dash.
-func (f *FlagSet) IPVarP(p *net.IP, name, shorthand string, value net.IP, 
usage string) {
-       f.VarP(newIPValue(value, p), name, shorthand, usage)
-}
-
-// IPVar defines an net.IP flag with specified name, default value, and usage 
string.
-// The argument p points to an net.IP variable in which to store the value of 
the flag.
-func IPVar(p *net.IP, name string, value net.IP, usage string) {
-       CommandLine.VarP(newIPValue(value, p), name, "", usage)
-}
-
-// Like IPVar, but accepts a shorthand letter that can be used after a single 
dash.
-func IPVarP(p *net.IP, name, shorthand string, value net.IP, usage string) {
-       CommandLine.VarP(newIPValue(value, p), name, shorthand, usage)
-}
-
-// IP defines an net.IP flag with specified name, default value, and usage 
string.
-// The return value is the address of an net.IP variable that stores the value 
of the flag.
-func (f *FlagSet) IP(name string, value net.IP, usage string) *net.IP {
-       p := new(net.IP)
-       f.IPVarP(p, name, "", value, usage)
-       return p
-}
-
-// Like IP, but accepts a shorthand letter that can be used after a single 
dash.
-func (f *FlagSet) IPP(name, shorthand string, value net.IP, usage string) 
*net.IP {
-       p := new(net.IP)
-       f.IPVarP(p, name, shorthand, value, usage)
-       return p
-}
-
-// IP defines an net.IP flag with specified name, default value, and usage 
string.
-// The return value is the address of an net.IP variable that stores the value 
of the flag.
-func IP(name string, value net.IP, usage string) *net.IP {
-       return CommandLine.IPP(name, "", value, usage)
-}
-
-// Like IP, but accepts a shorthand letter that can be used after a single 
dash.
-func IPP(name, shorthand string, value net.IP, usage string) *net.IP {
-       return CommandLine.IPP(name, shorthand, value, usage)
-}
diff --git a/vendor/github.com/ogier/pflag/ipmask.go 
b/vendor/github.com/ogier/pflag/ipmask.go
deleted file mode 100644
index b8a164a..0000000
--- a/vendor/github.com/ogier/pflag/ipmask.go
+++ /dev/null
@@ -1,85 +0,0 @@
-package pflag
-
-import (
-       "fmt"
-       "net"
-)
-
-// -- net.IPMask value
-type ipMaskValue net.IPMask
-
-func newIPMaskValue(val net.IPMask, p *net.IPMask) *ipMaskValue {
-       *p = val
-       return (*ipMaskValue)(p)
-}
-
-func (i *ipMaskValue) String() string { return net.IPMask(*i).String() }
-func (i *ipMaskValue) Set(s string) error {
-       ip := ParseIPv4Mask(s)
-       if ip == nil {
-               return fmt.Errorf("failed to parse IP mask: %q", s)
-       }
-       *i = ipMaskValue(ip)
-       return nil
-}
-func (i *ipMaskValue) Get() interface{} {
-       return net.IPMask(*i)
-}
-
-// Parse IPv4 netmask written in IP form (e.g. 255.255.255.0).
-// This function should really belong to the net package.
-func ParseIPv4Mask(s string) net.IPMask {
-       mask := net.ParseIP(s)
-       if mask == nil {
-               return nil
-       }
-       return net.IPv4Mask(mask[12], mask[13], mask[14], mask[15])
-}
-
-// IPMaskVar defines an net.IPMask flag with specified name, default value, 
and usage string.
-// The argument p points to an net.IPMask variable in which to store the value 
of the flag.
-func (f *FlagSet) IPMaskVar(p *net.IPMask, name string, value net.IPMask, 
usage string) {
-       f.VarP(newIPMaskValue(value, p), name, "", usage)
-}
-
-// Like IPMaskVar, but accepts a shorthand letter that can be used after a 
single dash.
-func (f *FlagSet) IPMaskVarP(p *net.IPMask, name, shorthand string, value 
net.IPMask, usage string) {
-       f.VarP(newIPMaskValue(value, p), name, shorthand, usage)
-}
-
-// IPMaskVar defines an net.IPMask flag with specified name, default value, 
and usage string.
-// The argument p points to an net.IPMask variable in which to store the value 
of the flag.
-func IPMaskVar(p *net.IPMask, name string, value net.IPMask, usage string) {
-       CommandLine.VarP(newIPMaskValue(value, p), name, "", usage)
-}
-
-// Like IPMaskVar, but accepts a shorthand letter that can be used after a 
single dash.
-func IPMaskVarP(p *net.IPMask, name, shorthand string, value net.IPMask, usage 
string) {
-       CommandLine.VarP(newIPMaskValue(value, p), name, shorthand, usage)
-}
-
-// IPMask defines an net.IPMask flag with specified name, default value, and 
usage string.
-// The return value is the address of an net.IPMask variable that stores the 
value of the flag.
-func (f *FlagSet) IPMask(name string, value net.IPMask, usage string) 
*net.IPMask {
-       p := new(net.IPMask)
-       f.IPMaskVarP(p, name, "", value, usage)
-       return p
-}
-
-// Like IPMask, but accepts a shorthand letter that can be used after a single 
dash.
-func (f *FlagSet) IPMaskP(name, shorthand string, value net.IPMask, usage 
string) *net.IPMask {
-       p := new(net.IPMask)
-       f.IPMaskVarP(p, name, shorthand, value, usage)
-       return p
-}
-
-// IPMask defines an net.IPMask flag with specified name, default value, and 
usage string.
-// The return value is the address of an net.IPMask variable that stores the 
value of the flag.
-func IPMask(name string, value net.IPMask, usage string) *net.IPMask {
-       return CommandLine.IPMaskP(name, "", value, usage)
-}
-
-// Like IP, but accepts a shorthand letter that can be used after a single 
dash.
-func IPMaskP(name, shorthand string, value net.IPMask, usage string) 
*net.IPMask {
-       return CommandLine.IPMaskP(name, shorthand, value, usage)
-}
diff --git a/vendor/github.com/ogier/pflag/string.go 
b/vendor/github.com/ogier/pflag/string.go
deleted file mode 100644
index 65c0cb7..0000000
--- a/vendor/github.com/ogier/pflag/string.go
+++ /dev/null
@@ -1,66 +0,0 @@
-package pflag
-
-import "fmt"
-
-// -- string Value
-type stringValue string
-
-func newStringValue(val string, p *string) *stringValue {
-       *p = val
-       return (*stringValue)(p)
-}
-
-func (s *stringValue) Set(val string) error {
-       *s = stringValue(val)
-       return nil
-}
-
-func (s *stringValue) String() string { return fmt.Sprintf("%s", *s) }
-
-// StringVar defines a string flag with specified name, default value, and 
usage string.
-// The argument p points to a string variable in which to store the value of 
the flag.
-func (f *FlagSet) StringVar(p *string, name string, value string, usage 
string) {
-       f.VarP(newStringValue(value, p), name, "", usage)
-}
-
-// Like StringVar, but accepts a shorthand letter that can be used after a 
single dash.
-func (f *FlagSet) StringVarP(p *string, name, shorthand string, value string, 
usage string) {
-       f.VarP(newStringValue(value, p), name, shorthand, usage)
-}
-
-// StringVar defines a string flag with specified name, default value, and 
usage string.
-// The argument p points to a string variable in which to store the value of 
the flag.
-func StringVar(p *string, name string, value string, usage string) {
-       CommandLine.VarP(newStringValue(value, p), name, "", usage)
-}
-
-// Like StringVar, but accepts a shorthand letter that can be used after a 
single dash.
-func StringVarP(p *string, name, shorthand string, value string, usage string) 
{
-       CommandLine.VarP(newStringValue(value, p), name, shorthand, usage)
-}
-
-// String defines a string flag with specified name, default value, and usage 
string.
-// The return value is the address of a string variable that stores the value 
of the flag.
-func (f *FlagSet) String(name string, value string, usage string) *string {
-       p := new(string)
-       f.StringVarP(p, name, "", value, usage)
-       return p
-}
-
-// Like String, but accepts a shorthand letter that can be used after a single 
dash.
-func (f *FlagSet) StringP(name, shorthand string, value string, usage string) 
*string {
-       p := new(string)
-       f.StringVarP(p, name, shorthand, value, usage)
-       return p
-}
-
-// String defines a string flag with specified name, default value, and usage 
string.
-// The return value is the address of a string variable that stores the value 
of the flag.
-func String(name string, value string, usage string) *string {
-       return CommandLine.StringP(name, "", value, usage)
-}
-
-// Like String, but accepts a shorthand letter that can be used after a single 
dash.
-func StringP(name, shorthand string, value string, usage string) *string {
-       return CommandLine.StringP(name, shorthand, value, usage)
-}
diff --git a/vendor/github.com/ogier/pflag/uint.go 
b/vendor/github.com/ogier/pflag/uint.go
deleted file mode 100644
index 40b9ebb..0000000
--- a/vendor/github.com/ogier/pflag/uint.go
+++ /dev/null
@@ -1,70 +0,0 @@
-package pflag
-
-import (
-       "fmt"
-       "strconv"
-)
-
-// -- uint Value
-type uintValue uint
-
-func newUintValue(val uint, p *uint) *uintValue {
-       *p = val
-       return (*uintValue)(p)
-}
-
-func (i *uintValue) Set(s string) error {
-       v, err := strconv.ParseUint(s, 0, 64)
-       *i = uintValue(v)
-       return err
-}
-
-func (i *uintValue) String() string { return fmt.Sprintf("%v", *i) }
-
-// UintVar defines a uint flag with specified name, default value, and usage 
string.
-// The argument p points to a uint variable in which to store the value of the 
flag.
-func (f *FlagSet) UintVar(p *uint, name string, value uint, usage string) {
-       f.VarP(newUintValue(value, p), name, "", usage)
-}
-
-// Like UintVar, but accepts a shorthand letter that can be used after a 
single dash.
-func (f *FlagSet) UintVarP(p *uint, name, shorthand string, value uint, usage 
string) {
-       f.VarP(newUintValue(value, p), name, shorthand, usage)
-}
-
-// UintVar defines a uint flag with specified name, default value, and usage 
string.
-// The argument p points to a uint  variable in which to store the value of 
the flag.
-func UintVar(p *uint, name string, value uint, usage string) {
-       CommandLine.VarP(newUintValue(value, p), name, "", usage)
-}
-
-// Like UintVar, but accepts a shorthand letter that can be used after a 
single dash.
-func UintVarP(p *uint, name, shorthand string, value uint, usage string) {
-       CommandLine.VarP(newUintValue(value, p), name, shorthand, usage)
-}
-
-// Uint defines a uint flag with specified name, default value, and usage 
string.
-// The return value is the address of a uint  variable that stores the value 
of the flag.
-func (f *FlagSet) Uint(name string, value uint, usage string) *uint {
-       p := new(uint)
-       f.UintVarP(p, name, "", value, usage)
-       return p
-}
-
-// Like Uint, but accepts a shorthand letter that can be used after a single 
dash.
-func (f *FlagSet) UintP(name, shorthand string, value uint, usage string) 
*uint {
-       p := new(uint)
-       f.UintVarP(p, name, shorthand, value, usage)
-       return p
-}
-
-// Uint defines a uint flag with specified name, default value, and usage 
string.
-// The return value is the address of a uint  variable that stores the value 
of the flag.
-func Uint(name string, value uint, usage string) *uint {
-       return CommandLine.UintP(name, "", value, usage)
-}
-
-// Like Uint, but accepts a shorthand letter that can be used after a single 
dash.
-func UintP(name, shorthand string, value uint, usage string) *uint {
-       return CommandLine.UintP(name, shorthand, value, usage)
-}
diff --git a/vendor/github.com/ogier/pflag/uint16.go 
b/vendor/github.com/ogier/pflag/uint16.go
deleted file mode 100644
index 182dc40..0000000
--- a/vendor/github.com/ogier/pflag/uint16.go
+++ /dev/null
@@ -1,71 +0,0 @@
-package pflag
-
-import (
-       "fmt"
-       "strconv"
-)
-
-// -- uint16 value
-type uint16Value uint16
-
-func newUint16Value(val uint16, p *uint16) *uint16Value {
-       *p = val
-       return (*uint16Value)(p)
-}
-func (i *uint16Value) String() string { return fmt.Sprintf("%d", *i) }
-func (i *uint16Value) Set(s string) error {
-       v, err := strconv.ParseUint(s, 0, 16)
-       *i = uint16Value(v)
-       return err
-}
-func (i *uint16Value) Get() interface{} {
-       return uint16(*i)
-}
-
-// Uint16Var defines a uint flag with specified name, default value, and usage 
string.
-// The argument p points to a uint variable in which to store the value of the 
flag.
-func (f *FlagSet) Uint16Var(p *uint16, name string, value uint16, usage 
string) {
-       f.VarP(newUint16Value(value, p), name, "", usage)
-}
-
-// Like Uint16Var, but accepts a shorthand letter that can be used after a 
single dash.
-func (f *FlagSet) Uint16VarP(p *uint16, name, shorthand string, value uint16, 
usage string) {
-       f.VarP(newUint16Value(value, p), name, shorthand, usage)
-}
-
-// Uint16Var defines a uint flag with specified name, default value, and usage 
string.
-// The argument p points to a uint  variable in which to store the value of 
the flag.
-func Uint16Var(p *uint16, name string, value uint16, usage string) {
-       CommandLine.VarP(newUint16Value(value, p), name, "", usage)
-}
-
-// Like Uint16Var, but accepts a shorthand letter that can be used after a 
single dash.
-func Uint16VarP(p *uint16, name, shorthand string, value uint16, usage string) 
{
-       CommandLine.VarP(newUint16Value(value, p), name, shorthand, usage)
-}
-
-// Uint16 defines a uint flag with specified name, default value, and usage 
string.
-// The return value is the address of a uint  variable that stores the value 
of the flag.
-func (f *FlagSet) Uint16(name string, value uint16, usage string) *uint16 {
-       p := new(uint16)
-       f.Uint16VarP(p, name, "", value, usage)
-       return p
-}
-
-// Like Uint16, but accepts a shorthand letter that can be used after a single 
dash.
-func (f *FlagSet) Uint16P(name, shorthand string, value uint16, usage string) 
*uint16 {
-       p := new(uint16)
-       f.Uint16VarP(p, name, shorthand, value, usage)
-       return p
-}
-
-// Uint16 defines a uint flag with specified name, default value, and usage 
string.
-// The return value is the address of a uint  variable that stores the value 
of the flag.
-func Uint16(name string, value uint16, usage string) *uint16 {
-       return CommandLine.Uint16P(name, "", value, usage)
-}
-
-// Like Uint16, but accepts a shorthand letter that can be used after a single 
dash.
-func Uint16P(name, shorthand string, value uint16, usage string) *uint16 {
-       return CommandLine.Uint16P(name, shorthand, value, usage)
-}
diff --git a/vendor/github.com/ogier/pflag/uint32.go 
b/vendor/github.com/ogier/pflag/uint32.go
deleted file mode 100644
index 165c8b2..0000000
--- a/vendor/github.com/ogier/pflag/uint32.go
+++ /dev/null
@@ -1,71 +0,0 @@
-package pflag
-
-import (
-       "fmt"
-       "strconv"
-)
-
-// -- uint16 value
-type uint32Value uint32
-
-func newUint32Value(val uint32, p *uint32) *uint32Value {
-       *p = val
-       return (*uint32Value)(p)
-}
-func (i *uint32Value) String() string { return fmt.Sprintf("%d", *i) }
-func (i *uint32Value) Set(s string) error {
-       v, err := strconv.ParseUint(s, 0, 32)
-       *i = uint32Value(v)
-       return err
-}
-func (i *uint32Value) Get() interface{} {
-       return uint32(*i)
-}
-
-// Uint32Var defines a uint32 flag with specified name, default value, and 
usage string.
-// The argument p points to a uint32 variable in which to store the value of 
the flag.
-func (f *FlagSet) Uint32Var(p *uint32, name string, value uint32, usage 
string) {
-       f.VarP(newUint32Value(value, p), name, "", usage)
-}
-
-// Like Uint32Var, but accepts a shorthand letter that can be used after a 
single dash.
-func (f *FlagSet) Uint32VarP(p *uint32, name, shorthand string, value uint32, 
usage string) {
-       f.VarP(newUint32Value(value, p), name, shorthand, usage)
-}
-
-// Uint32Var defines a uint32 flag with specified name, default value, and 
usage string.
-// The argument p points to a uint32  variable in which to store the value of 
the flag.
-func Uint32Var(p *uint32, name string, value uint32, usage string) {
-       CommandLine.VarP(newUint32Value(value, p), name, "", usage)
-}
-
-// Like Uint32Var, but accepts a shorthand letter that can be used after a 
single dash.
-func Uint32VarP(p *uint32, name, shorthand string, value uint32, usage string) 
{
-       CommandLine.VarP(newUint32Value(value, p), name, shorthand, usage)
-}
-
-// Uint32 defines a uint32 flag with specified name, default value, and usage 
string.
-// The return value is the address of a uint32  variable that stores the value 
of the flag.
-func (f *FlagSet) Uint32(name string, value uint32, usage string) *uint32 {
-       p := new(uint32)
-       f.Uint32VarP(p, name, "", value, usage)
-       return p
-}
-
-// Like Uint32, but accepts a shorthand letter that can be used after a single 
dash.
-func (f *FlagSet) Uint32P(name, shorthand string, value uint32, usage string) 
*uint32 {
-       p := new(uint32)
-       f.Uint32VarP(p, name, shorthand, value, usage)
-       return p
-}
-
-// Uint32 defines a uint32 flag with specified name, default value, and usage 
string.
-// The return value is the address of a uint32  variable that stores the value 
of the flag.
-func Uint32(name string, value uint32, usage string) *uint32 {
-       return CommandLine.Uint32P(name, "", value, usage)
-}
-
-// Like Uint32, but accepts a shorthand letter that can be used after a single 
dash.
-func Uint32P(name, shorthand string, value uint32, usage string) *uint32 {
-       return CommandLine.Uint32P(name, shorthand, value, usage)
-}
diff --git a/vendor/github.com/ogier/pflag/uint64.go 
b/vendor/github.com/ogier/pflag/uint64.go
deleted file mode 100644
index f41c5a2..0000000
--- a/vendor/github.com/ogier/pflag/uint64.go
+++ /dev/null
@@ -1,70 +0,0 @@
-package pflag
-
-import (
-       "fmt"
-       "strconv"
-)
-
-// -- uint64 Value
-type uint64Value uint64
-
-func newUint64Value(val uint64, p *uint64) *uint64Value {
-       *p = val
-       return (*uint64Value)(p)
-}
-
-func (i *uint64Value) Set(s string) error {
-       v, err := strconv.ParseUint(s, 0, 64)
-       *i = uint64Value(v)
-       return err
-}
-
-func (i *uint64Value) String() string { return fmt.Sprintf("%v", *i) }
-
-// Uint64Var defines a uint64 flag with specified name, default value, and 
usage string.
-// The argument p points to a uint64 variable in which to store the value of 
the flag.
-func (f *FlagSet) Uint64Var(p *uint64, name string, value uint64, usage 
string) {
-       f.VarP(newUint64Value(value, p), name, "", usage)
-}
-
-// Like Uint64Var, but accepts a shorthand letter that can be used after a 
single dash.
-func (f *FlagSet) Uint64VarP(p *uint64, name, shorthand string, value uint64, 
usage string) {
-       f.VarP(newUint64Value(value, p), name, shorthand, usage)
-}
-
-// Uint64Var defines a uint64 flag with specified name, default value, and 
usage string.
-// The argument p points to a uint64 variable in which to store the value of 
the flag.
-func Uint64Var(p *uint64, name string, value uint64, usage string) {
-       CommandLine.VarP(newUint64Value(value, p), name, "", usage)
-}
-
-// Like Uint64Var, but accepts a shorthand letter that can be used after a 
single dash.
-func Uint64VarP(p *uint64, name, shorthand string, value uint64, usage string) 
{
-       CommandLine.VarP(newUint64Value(value, p), name, shorthand, usage)
-}
-
-// Uint64 defines a uint64 flag with specified name, default value, and usage 
string.
-// The return value is the address of a uint64 variable that stores the value 
of the flag.
-func (f *FlagSet) Uint64(name string, value uint64, usage string) *uint64 {
-       p := new(uint64)
-       f.Uint64VarP(p, name, "", value, usage)
-       return p
-}
-
-// Like Uint64, but accepts a shorthand letter that can be used after a single 
dash.
-func (f *FlagSet) Uint64P(name, shorthand string, value uint64, usage string) 
*uint64 {
-       p := new(uint64)
-       f.Uint64VarP(p, name, shorthand, value, usage)
-       return p
-}
-
-// Uint64 defines a uint64 flag with specified name, default value, and usage 
string.
-// The return value is the address of a uint64 variable that stores the value 
of the flag.
-func Uint64(name string, value uint64, usage string) *uint64 {
-       return CommandLine.Uint64P(name, "", value, usage)
-}
-
-// Like Uint64, but accepts a shorthand letter that can be used after a single 
dash.
-func Uint64P(name, shorthand string, value uint64, usage string) *uint64 {
-       return CommandLine.Uint64P(name, shorthand, value, usage)
-}
diff --git a/vendor/github.com/ogier/pflag/uint8.go 
b/vendor/github.com/ogier/pflag/uint8.go
deleted file mode 100644
index 174f99c..0000000
--- a/vendor/github.com/ogier/pflag/uint8.go
+++ /dev/null
@@ -1,70 +0,0 @@
-package pflag
-
-import (
-       "fmt"
-       "strconv"
-)
-
-// -- uint8 Value
-type uint8Value uint8
-
-func newUint8Value(val uint8, p *uint8) *uint8Value {
-       *p = val
-       return (*uint8Value)(p)
-}
-
-func (i *uint8Value) Set(s string) error {
-       v, err := strconv.ParseUint(s, 0, 8)
-       *i = uint8Value(v)
-       return err
-}
-
-func (i *uint8Value) String() string { return fmt.Sprintf("%v", *i) }
-
-// Uint8Var defines a uint8 flag with specified name, default value, and usage 
string.
-// The argument p points to a uint8 variable in which to store the value of 
the flag.
-func (f *FlagSet) Uint8Var(p *uint8, name string, value uint8, usage string) {
-       f.VarP(newUint8Value(value, p), name, "", usage)
-}
-
-// Like Uint8Var, but accepts a shorthand letter that can be used after a 
single dash.
-func (f *FlagSet) Uint8VarP(p *uint8, name, shorthand string, value uint8, 
usage string) {
-       f.VarP(newUint8Value(value, p), name, shorthand, usage)
-}
-
-// Uint8Var defines a uint8 flag with specified name, default value, and usage 
string.
-// The argument p points to a uint8 variable in which to store the value of 
the flag.
-func Uint8Var(p *uint8, name string, value uint8, usage string) {
-       CommandLine.VarP(newUint8Value(value, p), name, "", usage)
-}
-
-// Like Uint8Var, but accepts a shorthand letter that can be used after a 
single dash.
-func Uint8VarP(p *uint8, name, shorthand string, value uint8, usage string) {
-       CommandLine.VarP(newUint8Value(value, p), name, shorthand, usage)
-}
-
-// Uint8 defines a uint8 flag with specified name, default value, and usage 
string.
-// The return value is the address of a uint8 variable that stores the value 
of the flag.
-func (f *FlagSet) Uint8(name string, value uint8, usage string) *uint8 {
-       p := new(uint8)
-       f.Uint8VarP(p, name, "", value, usage)
-       return p
-}
-
-// Like Uint8, but accepts a shorthand letter that can be used after a single 
dash.
-func (f *FlagSet) Uint8P(name, shorthand string, value uint8, usage string) 
*uint8 {
-       p := new(uint8)
-       f.Uint8VarP(p, name, shorthand, value, usage)
-       return p
-}
-
-// Uint8 defines a uint8 flag with specified name, default value, and usage 
string.
-// The return value is the address of a uint8 variable that stores the value 
of the flag.
-func Uint8(name string, value uint8, usage string) *uint8 {
-       return CommandLine.Uint8P(name, "", value, usage)
-}
-
-// Like Uint8, but accepts a shorthand letter that can be used after a single 
dash.
-func Uint8P(name, shorthand string, value uint8, usage string) *uint8 {
-       return CommandLine.Uint8P(name, shorthand, value, usage)
-}
diff --git a/vendor/gopkg.in/yaml.v2/.travis.yml 
b/vendor/gopkg.in/yaml.v2/.travis.yml
index 9f55693..055480b 100644
--- a/vendor/gopkg.in/yaml.v2/.travis.yml
+++ b/vendor/gopkg.in/yaml.v2/.travis.yml
@@ -1,12 +1,16 @@
 language: go
 
 go:
-    - 1.4
-    - 1.5
-    - 1.6
-    - 1.7
-    - 1.8
-    - 1.9
-    - tip
+    - "1.4.x"
+    - "1.5.x"
+    - "1.6.x"
+    - "1.7.x"
+    - "1.8.x"
+    - "1.9.x"
+    - "1.10.x"
+    - "1.11.x"
+    - "1.12.x"
+    - "1.13.x"
+    - "tip"
 
 go_import_path: gopkg.in/yaml.v2
diff --git a/vendor/gopkg.in/yaml.v2/decode.go 
b/vendor/gopkg.in/yaml.v2/decode.go
index e4e56e2..129bc2a 100644
--- a/vendor/gopkg.in/yaml.v2/decode.go
+++ b/vendor/gopkg.in/yaml.v2/decode.go
@@ -229,6 +229,10 @@ type decoder struct {
        mapType reflect.Type
        terrors []string
        strict  bool
+
+       decodeCount int
+       aliasCount  int
+       aliasDepth  int
 }
 
 var (
@@ -314,7 +318,43 @@ func (d *decoder) prepare(n *node, out reflect.Value) 
(newout reflect.Value, unm
        return out, false, false
 }
 
+const (
+       // 400,000 decode operations is ~500kb of dense object declarations, or
+       // ~5kb of dense object declarations with 10000% alias expansion
+       alias_ratio_range_low = 400000
+
+       // 4,000,000 decode operations is ~5MB of dense object declarations, or
+       // ~4.5MB of dense object declarations with 10% alias expansion
+       alias_ratio_range_high = 4000000
+
+       // alias_ratio_range is the range over which we scale allowed alias 
ratios
+       alias_ratio_range = float64(alias_ratio_range_high - 
alias_ratio_range_low)
+)
+
+func allowedAliasRatio(decodeCount int) float64 {
+       switch {
+       case decodeCount <= alias_ratio_range_low:
+               // allow 99% to come from alias expansion for small-to-medium 
documents
+               return 0.99
+       case decodeCount >= alias_ratio_range_high:
+               // allow 10% to come from alias expansion for very large 
documents
+               return 0.10
+       default:
+               // scale smoothly from 99% down to 10% over the range.
+               // this maps to 396,000 - 400,000 allowed alias-driven decodes 
over the range.
+               // 400,000 decode operations is ~100MB of allocations in 
worst-case scenarios (single-item maps).
+               return 0.99 - 
0.89*(float64(decodeCount-alias_ratio_range_low)/alias_ratio_range)
+       }
+}
+
 func (d *decoder) unmarshal(n *node, out reflect.Value) (good bool) {
+       d.decodeCount++
+       if d.aliasDepth > 0 {
+               d.aliasCount++
+       }
+       if d.aliasCount > 100 && d.decodeCount > 1000 && 
float64(d.aliasCount)/float64(d.decodeCount) > allowedAliasRatio(d.decodeCount) 
{
+               failf("document contains excessive aliasing")
+       }
        switch n.kind {
        case documentNode:
                return d.document(n, out)
@@ -353,7 +393,9 @@ func (d *decoder) alias(n *node, out reflect.Value) (good 
bool) {
                failf("anchor '%s' value contains itself", n.value)
        }
        d.aliases[n] = true
+       d.aliasDepth++
        good = d.unmarshal(n.alias, out)
+       d.aliasDepth--
        delete(d.aliases, n)
        return good
 }
@@ -746,8 +788,7 @@ func (d *decoder) merge(n *node, out reflect.Value) {
        case mappingNode:
                d.unmarshal(n, out)
        case aliasNode:
-               an, ok := d.doc.anchors[n.value]
-               if ok && an.kind != mappingNode {
+               if n.alias != nil && n.alias.kind != mappingNode {
                        failWantMap()
                }
                d.unmarshal(n, out)
@@ -756,8 +797,7 @@ func (d *decoder) merge(n *node, out reflect.Value) {
                for i := len(n.children) - 1; i >= 0; i-- {
                        ni := n.children[i]
                        if ni.kind == aliasNode {
-                               an, ok := d.doc.anchors[ni.value]
-                               if ok && an.kind != mappingNode {
+                               if ni.alias != nil && ni.alias.kind != 
mappingNode {
                                        failWantMap()
                                }
                        } else if ni.kind != mappingNode {
diff --git a/vendor/gopkg.in/yaml.v2/encode.go 
b/vendor/gopkg.in/yaml.v2/encode.go
index a14435e..0ee738e 100644
--- a/vendor/gopkg.in/yaml.v2/encode.go
+++ b/vendor/gopkg.in/yaml.v2/encode.go
@@ -13,6 +13,19 @@ import (
        "unicode/utf8"
 )
 
+// jsonNumber is the interface of the encoding/json.Number datatype.
+// Repeating the interface here avoids a dependency on encoding/json, and also
+// supports other libraries like jsoniter, which use a similar datatype with
+// the same interface. Detecting this interface is useful when dealing with
+// structures containing json.Number, which is a string under the hood. The
+// encoder should prefer the use of Int64(), Float64() and string(), in that
+// order, when encoding this type.
+type jsonNumber interface {
+       Float64() (float64, error)
+       Int64() (int64, error)
+       String() string
+}
+
 type encoder struct {
        emitter yaml_emitter_t
        event   yaml_event_t
@@ -89,6 +102,21 @@ func (e *encoder) marshal(tag string, in reflect.Value) {
        }
        iface := in.Interface()
        switch m := iface.(type) {
+       case jsonNumber:
+               integer, err := m.Int64()
+               if err == nil {
+                       // In this case the json.Number is a valid int64
+                       in = reflect.ValueOf(integer)
+                       break
+               }
+               float, err := m.Float64()
+               if err == nil {
+                       // In this case the json.Number is a valid float64
+                       in = reflect.ValueOf(float)
+                       break
+               }
+               // fallback case - no number could be obtained
+               in = reflect.ValueOf(m.String())
        case time.Time, *time.Time:
                // Although time.Time implements TextMarshaler,
                // we don't want to treat it as a string for YAML
diff --git a/vendor/gopkg.in/yaml.v2/resolve.go 
b/vendor/gopkg.in/yaml.v2/resolve.go
index 6c151db..4120e0c 100644
--- a/vendor/gopkg.in/yaml.v2/resolve.go
+++ b/vendor/gopkg.in/yaml.v2/resolve.go
@@ -81,7 +81,7 @@ func resolvableTag(tag string) bool {
        return false
 }
 
-var yamlStyleFloat = 
regexp.MustCompile(`^[-+]?[0-9]*\.?[0-9]+([eE][-+][0-9]+)?$`)
+var yamlStyleFloat = 
regexp.MustCompile(`^[-+]?(\.[0-9]+|[0-9]+(\.[0-9]*)?)([eE][-+]?[0-9]+)?$`)
 
 func resolve(tag string, in string) (rtag string, out interface{}) {
        if !resolvableTag(tag) {
diff --git a/vendor/gopkg.in/yaml.v2/scannerc.go 
b/vendor/gopkg.in/yaml.v2/scannerc.go
index 077fd1d..0b9bb60 100644
--- a/vendor/gopkg.in/yaml.v2/scannerc.go
+++ b/vendor/gopkg.in/yaml.v2/scannerc.go
@@ -626,30 +626,17 @@ func trace(args ...interface{}) func() {
 func yaml_parser_fetch_more_tokens(parser *yaml_parser_t) bool {
        // While we need more tokens to fetch, do it.
        for {
-               // Check if we really need to fetch more tokens.
-               need_more_tokens := false
-
-               if parser.tokens_head == len(parser.tokens) {
-                       // Queue is empty.
-                       need_more_tokens = true
-               } else {
-                       // Check if any potential simple key may occupy the 
head position.
-                       if !yaml_parser_stale_simple_keys(parser) {
+               if parser.tokens_head != len(parser.tokens) {
+                       // If queue is non-empty, check if any potential simple 
key may
+                       // occupy the head position.
+                       head_tok_idx, ok := 
parser.simple_keys_by_tok[parser.tokens_parsed]
+                       if !ok {
+                               break
+                       } else if valid, ok := yaml_simple_key_is_valid(parser, 
&parser.simple_keys[head_tok_idx]); !ok {
                                return false
+                       } else if !valid {
+                               break
                        }
-
-                       for i := range parser.simple_keys {
-                               simple_key := &parser.simple_keys[i]
-                               if simple_key.possible && 
simple_key.token_number == parser.tokens_parsed {
-                                       need_more_tokens = true
-                                       break
-                               }
-                       }
-               }
-
-               // We are finished.
-               if !need_more_tokens {
-                       break
                }
                // Fetch the next token.
                if !yaml_parser_fetch_next_token(parser) {
@@ -678,11 +665,6 @@ func yaml_parser_fetch_next_token(parser *yaml_parser_t) 
bool {
                return false
        }
 
-       // Remove obsolete potential simple keys.
-       if !yaml_parser_stale_simple_keys(parser) {
-               return false
-       }
-
        // Check the indentation level against the current column.
        if !yaml_parser_unroll_indent(parser, parser.mark.column) {
                return false
@@ -837,29 +819,30 @@ func yaml_parser_fetch_next_token(parser *yaml_parser_t) 
bool {
                "found character that cannot start any token")
 }
 
-// Check the list of potential simple keys and remove the positions that
-// cannot contain simple keys anymore.
-func yaml_parser_stale_simple_keys(parser *yaml_parser_t) bool {
-       // Check for a potential simple key for each flow level.
-       for i := range parser.simple_keys {
-               simple_key := &parser.simple_keys[i]
-
-               // The specification requires that a simple key
-               //
-               //  - is limited to a single line,
-               //  - is shorter than 1024 characters.
-               if simple_key.possible && (simple_key.mark.line < 
parser.mark.line || simple_key.mark.index+1024 < parser.mark.index) {
-
-                       // Check if the potential simple key to be removed is 
required.
-                       if simple_key.required {
-                               return yaml_parser_set_scanner_error(parser,
-                                       "while scanning a simple key", 
simple_key.mark,
-                                       "could not find expected ':'")
-                       }
-                       simple_key.possible = false
+func yaml_simple_key_is_valid(parser *yaml_parser_t, simple_key 
*yaml_simple_key_t) (valid, ok bool) {
+       if !simple_key.possible {
+               return false, true
+       }
+
+       // The 1.2 specification says:
+       //
+       //     "If the ? indicator is omitted, parsing needs to see past the
+       //     implicit key to recognize it as such. To limit the amount of
+       //     lookahead required, the “:” indicator must appear at most 1024
+       //     Unicode characters beyond the start of the key. In addition, the 
key
+       //     is restricted to a single line."
+       //
+       if simple_key.mark.line < parser.mark.line || 
simple_key.mark.index+1024 < parser.mark.index {
+               // Check if the potential simple key to be removed is required.
+               if simple_key.required {
+                       return false, yaml_parser_set_scanner_error(parser,
+                               "while scanning a simple key", simple_key.mark,
+                               "could not find expected ':'")
                }
+               simple_key.possible = false
+               return false, true
        }
-       return true
+       return true, true
 }
 
 // Check if a simple key may start at the current position and add it if
@@ -879,13 +862,14 @@ func yaml_parser_save_simple_key(parser *yaml_parser_t) 
bool {
                        possible:     true,
                        required:     required,
                        token_number: parser.tokens_parsed + 
(len(parser.tokens) - parser.tokens_head),
+                       mark:         parser.mark,
                }
-               simple_key.mark = parser.mark
 
                if !yaml_parser_remove_simple_key(parser) {
                        return false
                }
                parser.simple_keys[len(parser.simple_keys)-1] = simple_key
+               parser.simple_keys_by_tok[simple_key.token_number] = 
len(parser.simple_keys) - 1
        }
        return true
 }
@@ -900,19 +884,33 @@ func yaml_parser_remove_simple_key(parser *yaml_parser_t) 
bool {
                                "while scanning a simple key", 
parser.simple_keys[i].mark,
                                "could not find expected ':'")
                }
+               // Remove the key from the stack.
+               parser.simple_keys[i].possible = false
+               delete(parser.simple_keys_by_tok, 
parser.simple_keys[i].token_number)
        }
-       // Remove the key from the stack.
-       parser.simple_keys[i].possible = false
        return true
 }
 
+// max_flow_level limits the flow_level
+const max_flow_level = 10000
+
 // Increase the flow level and resize the simple key list if needed.
 func yaml_parser_increase_flow_level(parser *yaml_parser_t) bool {
        // Reset the simple key on the next level.
-       parser.simple_keys = append(parser.simple_keys, yaml_simple_key_t{})
+       parser.simple_keys = append(parser.simple_keys, yaml_simple_key_t{
+               possible:     false,
+               required:     false,
+               token_number: parser.tokens_parsed + (len(parser.tokens) - 
parser.tokens_head),
+               mark:         parser.mark,
+       })
 
        // Increase the flow level.
        parser.flow_level++
+       if parser.flow_level > max_flow_level {
+               return yaml_parser_set_scanner_error(parser,
+                       "while increasing flow level", 
parser.simple_keys[len(parser.simple_keys)-1].mark,
+                       fmt.Sprintf("exceeded max depth of %d", max_flow_level))
+       }
        return true
 }
 
@@ -920,11 +918,16 @@ func yaml_parser_increase_flow_level(parser 
*yaml_parser_t) bool {
 func yaml_parser_decrease_flow_level(parser *yaml_parser_t) bool {
        if parser.flow_level > 0 {
                parser.flow_level--
-               parser.simple_keys = 
parser.simple_keys[:len(parser.simple_keys)-1]
+               last := len(parser.simple_keys) - 1
+               delete(parser.simple_keys_by_tok, 
parser.simple_keys[last].token_number)
+               parser.simple_keys = parser.simple_keys[:last]
        }
        return true
 }
 
+// max_indents limits the indents stack size
+const max_indents = 10000
+
 // Push the current indentation level to the stack and set the new level
 // the current column is greater than the indentation level.  In this case,
 // append or insert the specified token into the token queue.
@@ -939,6 +942,11 @@ func yaml_parser_roll_indent(parser *yaml_parser_t, 
column, number int, typ yaml
                // indentation level.
                parser.indents = append(parser.indents, parser.indent)
                parser.indent = column
+               if len(parser.indents) > max_indents {
+                       return yaml_parser_set_scanner_error(parser,
+                               "while increasing indent level", 
parser.simple_keys[len(parser.simple_keys)-1].mark,
+                               fmt.Sprintf("exceeded max depth of %d", 
max_indents))
+               }
 
                // Create a token and insert it into the queue.
                token := yaml_token_t{
@@ -989,6 +997,8 @@ func yaml_parser_fetch_stream_start(parser *yaml_parser_t) 
bool {
        // Initialize the simple key stack.
        parser.simple_keys = append(parser.simple_keys, yaml_simple_key_t{})
 
+       parser.simple_keys_by_tok = make(map[int]int)
+
        // A simple key is allowed at the beginning of the stream.
        parser.simple_key_allowed = true
 
@@ -1270,7 +1280,11 @@ func yaml_parser_fetch_value(parser *yaml_parser_t) bool 
{
        simple_key := &parser.simple_keys[len(parser.simple_keys)-1]
 
        // Have we found a simple key?
-       if simple_key.possible {
+       if valid, ok := yaml_simple_key_is_valid(parser, simple_key); !ok {
+               return false
+
+       } else if valid {
+
                // Create the KEY token and insert it into the queue.
                token := yaml_token_t{
                        typ:        yaml_KEY_TOKEN,
@@ -1288,6 +1302,7 @@ func yaml_parser_fetch_value(parser *yaml_parser_t) bool {
 
                // Remove the simple key.
                simple_key.possible = false
+               delete(parser.simple_keys_by_tok, simple_key.token_number)
 
                // A simple key cannot follow another simple key.
                parser.simple_key_allowed = false
diff --git a/vendor/gopkg.in/yaml.v2/yaml.go b/vendor/gopkg.in/yaml.v2/yaml.go
index de85aa4..89650e2 100644
--- a/vendor/gopkg.in/yaml.v2/yaml.go
+++ b/vendor/gopkg.in/yaml.v2/yaml.go
@@ -89,7 +89,7 @@ func UnmarshalStrict(in []byte, out interface{}) (err error) {
        return unmarshal(in, out, true)
 }
 
-// A Decorder reads and decodes YAML values from an input stream.
+// A Decoder reads and decodes YAML values from an input stream.
 type Decoder struct {
        strict bool
        parser *parser
diff --git a/vendor/gopkg.in/yaml.v2/yamlh.go b/vendor/gopkg.in/yaml.v2/yamlh.go
index e25cee5..f6a9c8e 100644
--- a/vendor/gopkg.in/yaml.v2/yamlh.go
+++ b/vendor/gopkg.in/yaml.v2/yamlh.go
@@ -579,6 +579,7 @@ type yaml_parser_t struct {
 
        simple_key_allowed bool                // May a simple key occur at the 
current position?
        simple_keys        []yaml_simple_key_t // The stack of simple keys.
+       simple_keys_by_tok map[int]int         // possible simple_key indexes 
indexed by token_number
 
        // Parser stuff
 
diff --git a/vendor/modules.txt b/vendor/modules.txt
index 88a297a..e35fd22 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -127,9 +127,6 @@ github.com/nxadm/tail/ratelimiter
 github.com/nxadm/tail/util
 github.com/nxadm/tail/watch
 github.com/nxadm/tail/winfile
-# github.com/ogier/pflag v0.0.2-0.20201025181535-73e519546fc0
-## explicit
-github.com/ogier/pflag
 # github.com/onsi/ginkgo v1.14.2
 ## explicit
 github.com/onsi/ginkgo
@@ -204,7 +201,6 @@ golang.org/x/sys/internal/unsafeheader
 golang.org/x/sys/unix
 golang.org/x/sys/windows
 # golang.org/x/text v0.3.6
-## explicit
 golang.org/x/text/encoding
 golang.org/x/text/encoding/charmap
 golang.org/x/text/encoding/htmlindex
@@ -245,6 +241,6 @@ gopkg.in/square/go-jose.v2/cipher
 gopkg.in/square/go-jose.v2/json
 # gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7
 gopkg.in/tomb.v1
-# gopkg.in/yaml.v2 v2.3.0 => gopkg.in/yaml.v2 v2.2.1
+# gopkg.in/yaml.v2 v2.3.0 => gopkg.in/yaml.v2 v2.2.8
 ## explicit
 gopkg.in/yaml.v2

Reply via email to