diff --git a/go.mod b/go.mod
index a54429ce..20ab1bf2 100644
--- a/go.mod
+++ b/go.mod
@@ -55,7 +55,7 @@ require (
 	github.com/spf13/viper v1.0.2
 	github.com/stretchr/testify v1.2.1
 	golang.org/x/crypto v0.0.0-20180505025534-4ec37c66abab // indirect
-	golang.org/x/tools v0.0.0-20190125232054-d66bd3c5d5a6
+	golang.org/x/tools v0.0.0-20190125232054-379209517ffe
 	gopkg.in/airbrake/gobrake.v2 v2.0.9 // indirect
 	gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2 // indirect
 	gopkg.in/yaml.v2 v2.2.1
diff --git a/go.sum b/go.sum
index 3b2ef110..579b13d1 100644
--- a/go.sum
+++ b/go.sum
@@ -153,8 +153,8 @@ golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGm
 golang.org/x/tools v0.0.0-20181117154741-2ddaf7f79a09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20181205014116-22934f0fdb62/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20190121143147-24cd39ecf745/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20190125232054-d66bd3c5d5a6 h1:iZgcI2DDp6zW5v9Z/5+f0NuqoxNdmzg4hivjk2WLXpY=
-golang.org/x/tools v0.0.0-20190125232054-d66bd3c5d5a6/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20190125232054-379209517ffe h1:ZJ3JgA0fnPnX6nSjHp3y5XWNUf3zaTbWlilINJoPFkQ=
+golang.org/x/tools v0.0.0-20190125232054-379209517ffe/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 gopkg.in/airbrake/gobrake.v2 v2.0.9 h1:7z2uVWwn7oVeeugY1DtlPAy5H+KYgB1KeKTnqjNatLo=
 gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
diff --git a/vendor/golang.org/x/tools/go/internal/gcimporter/bexport.go b/vendor/golang.org/x/tools/go/internal/gcimporter/bexport.go
index 9f650491..a807d0aa 100644
--- a/vendor/golang.org/x/tools/go/internal/gcimporter/bexport.go
+++ b/vendor/golang.org/x/tools/go/internal/gcimporter/bexport.go
@@ -127,10 +127,10 @@ func BExportData(fset *token.FileSet, pkg *types.Package) (b []byte, err error)
 	// --- generic export data ---
 
 	// populate type map with predeclared "known" types
-	for index, typ := range predeclared {
+	for index, typ := range predeclared() {
 		p.typIndex[typ] = index
 	}
-	if len(p.typIndex) != len(predeclared) {
+	if len(p.typIndex) != len(predeclared()) {
 		return nil, internalError("duplicate entries in type map?")
 	}
 
diff --git a/vendor/golang.org/x/tools/go/internal/gcimporter/bimport.go b/vendor/golang.org/x/tools/go/internal/gcimporter/bimport.go
index b31eacfc..e3c31078 100644
--- a/vendor/golang.org/x/tools/go/internal/gcimporter/bimport.go
+++ b/vendor/golang.org/x/tools/go/internal/gcimporter/bimport.go
@@ -126,7 +126,7 @@ func BImportData(fset *token.FileSet, imports map[string]*types.Package, data []
 	// --- generic export data ---
 
 	// populate typList with predeclared "known" types
-	p.typList = append(p.typList, predeclared...)
+	p.typList = append(p.typList, predeclared()...)
 
 	// read package data
 	pkg = p.pkg()
@@ -976,50 +976,58 @@ const (
 	aliasTag
 )
 
-var predeclared = []types.Type{
-	// basic types
-	types.Typ[types.Bool],
-	types.Typ[types.Int],
-	types.Typ[types.Int8],
-	types.Typ[types.Int16],
-	types.Typ[types.Int32],
-	types.Typ[types.Int64],
-	types.Typ[types.Uint],
-	types.Typ[types.Uint8],
-	types.Typ[types.Uint16],
-	types.Typ[types.Uint32],
-	types.Typ[types.Uint64],
-	types.Typ[types.Uintptr],
-	types.Typ[types.Float32],
-	types.Typ[types.Float64],
-	types.Typ[types.Complex64],
-	types.Typ[types.Complex128],
-	types.Typ[types.String],
+var predecl []types.Type // initialized lazily
 
-	// basic type aliases
-	types.Universe.Lookup("byte").Type(),
-	types.Universe.Lookup("rune").Type(),
+func predeclared() []types.Type {
+	if predecl == nil {
+		// initialize lazily to be sure that all
+		// elements have been initialized before
+		predecl = []types.Type{ // basic types
+			types.Typ[types.Bool],
+			types.Typ[types.Int],
+			types.Typ[types.Int8],
+			types.Typ[types.Int16],
+			types.Typ[types.Int32],
+			types.Typ[types.Int64],
+			types.Typ[types.Uint],
+			types.Typ[types.Uint8],
+			types.Typ[types.Uint16],
+			types.Typ[types.Uint32],
+			types.Typ[types.Uint64],
+			types.Typ[types.Uintptr],
+			types.Typ[types.Float32],
+			types.Typ[types.Float64],
+			types.Typ[types.Complex64],
+			types.Typ[types.Complex128],
+			types.Typ[types.String],
 
-	// error
-	types.Universe.Lookup("error").Type(),
+			// basic type aliases
+			types.Universe.Lookup("byte").Type(),
+			types.Universe.Lookup("rune").Type(),
 
-	// untyped types
-	types.Typ[types.UntypedBool],
-	types.Typ[types.UntypedInt],
-	types.Typ[types.UntypedRune],
-	types.Typ[types.UntypedFloat],
-	types.Typ[types.UntypedComplex],
-	types.Typ[types.UntypedString],
-	types.Typ[types.UntypedNil],
+			// error
+			types.Universe.Lookup("error").Type(),
 
-	// package unsafe
-	types.Typ[types.UnsafePointer],
+			// untyped types
+			types.Typ[types.UntypedBool],
+			types.Typ[types.UntypedInt],
+			types.Typ[types.UntypedRune],
+			types.Typ[types.UntypedFloat],
+			types.Typ[types.UntypedComplex],
+			types.Typ[types.UntypedString],
+			types.Typ[types.UntypedNil],
 
-	// invalid type
-	types.Typ[types.Invalid], // only appears in packages with errors
+			// package unsafe
+			types.Typ[types.UnsafePointer],
 
-	// used internally by gc; never used by this package or in .a files
-	anyType{},
+			// invalid type
+			types.Typ[types.Invalid], // only appears in packages with errors
+
+			// used internally by gc; never used by this package or in .a files
+			anyType{},
+		}
+	}
+	return predecl
 }
 
 type anyType struct{}
diff --git a/vendor/golang.org/x/tools/go/internal/gcimporter/iimport.go b/vendor/golang.org/x/tools/go/internal/gcimporter/iimport.go
index 0fd22bb0..3cb7ae5b 100644
--- a/vendor/golang.org/x/tools/go/internal/gcimporter/iimport.go
+++ b/vendor/golang.org/x/tools/go/internal/gcimporter/iimport.go
@@ -109,7 +109,7 @@ func IImportData(fset *token.FileSet, imports map[string]*types.Package, data []
 		},
 	}
 
-	for i, pt := range predeclared {
+	for i, pt := range predeclared() {
 		p.typCache[uint64(i)] = pt
 	}
 
@@ -142,8 +142,12 @@ func IImportData(fset *token.FileSet, imports map[string]*types.Package, data []
 		p.pkgIndex[pkg] = nameIndex
 		pkgList[i] = pkg
 	}
-
-	localpkg := pkgList[0]
+	var localpkg *types.Package
+	for _, pkg := range pkgList {
+		if pkg.Path() == path {
+			localpkg = pkg
+		}
+	}
 
 	names := make([]string, 0, len(p.pkgIndex[localpkg]))
 	for name := range p.pkgIndex[localpkg] {
@@ -330,6 +334,10 @@ func (r *importReader) value() (typ types.Type, val constant.Value) {
 		val = constant.BinaryOp(re, token.ADD, constant.MakeImag(im))
 
 	default:
+		if b.Kind() == types.Invalid {
+			val = constant.MakeUnknown()
+			return
+		}
 		errorf("unexpected type %v", typ) // panics
 		panic("unreachable")
 	}
diff --git a/vendor/golang.org/x/tools/go/packages/doc.go b/vendor/golang.org/x/tools/go/packages/doc.go
index 0ec0fab2..3799f8ed 100644
--- a/vendor/golang.org/x/tools/go/packages/doc.go
+++ b/vendor/golang.org/x/tools/go/packages/doc.go
@@ -14,7 +14,7 @@ but all patterns with the prefix "query=", where query is a
 non-empty string of letters from [a-z], are reserved and may be
 interpreted as query operators.
 
-Three query operators are currently supported: "file", "pattern", and "name".
+Two query operators are currently supported: "file" and "pattern".
 
 The query "file=path/to/file.go" matches the package or packages enclosing
 the Go source file path/to/file.go.  For example "file=~/go/src/fmt/print.go"
@@ -25,10 +25,6 @@ the underlying build tool. In most cases this is unnecessary,
 but an application can use Load("pattern=" + x) as an escaping mechanism
 to ensure that x is not interpreted as a query operator if it contains '='.
 
-The query "name=identifier" matches packages whose package declaration contains
-the specified identifier. For example, "name=rand" would match the packages
-"math/rand" and "crypto/rand", and "name=main" would match all executables.
-
 All other query operators are reserved for future use and currently
 cause Load to report an error.
 
diff --git a/vendor/golang.org/x/tools/go/packages/golist.go b/vendor/golang.org/x/tools/go/packages/golist.go
index 7ca5ebe4..2fee7fb1 100644
--- a/vendor/golang.org/x/tools/go/packages/golist.go
+++ b/vendor/golang.org/x/tools/go/packages/golist.go
@@ -104,7 +104,7 @@ extractQueries:
 				containFiles = append(containFiles, value)
 			case "pattern":
 				restPatterns = append(restPatterns, value)
-			case "name":
+			case "iamashamedtousethedisabledqueryname":
 				packagesNamed = append(packagesNamed, value)
 			case "": // not a reserved query
 				restPatterns = append(restPatterns, pattern)
diff --git a/vendor/golang.org/x/tools/imports/fix.go b/vendor/golang.org/x/tools/imports/fix.go
index f18c4135..4c033930 100644
--- a/vendor/golang.org/x/tools/imports/fix.go
+++ b/vendor/golang.org/x/tools/imports/fix.go
@@ -23,6 +23,8 @@ import (
 	"strings"
 	"sync"
 	"time"
+	"unicode"
+	"unicode/utf8"
 
 	"golang.org/x/tools/go/ast/astutil"
 	"golang.org/x/tools/go/packages"
@@ -289,7 +291,7 @@ func (p *pass) importIdentifier(imp *importInfo) string {
 	if known != nil && known.name != "" {
 		return known.name
 	}
-	return importPathToNameBasic(imp.importPath, p.srcDir)
+	return importPathToAssumedName(imp.importPath)
 }
 
 // load reads in everything necessary to run a pass, and reports whether the
@@ -389,7 +391,7 @@ func (p *pass) fix() bool {
 			}
 			path := strings.Trim(imp.Path.Value, `""`)
 			ident := p.importIdentifier(&importInfo{importPath: path})
-			if ident != importPathToNameBasic(path, p.srcDir) {
+			if ident != importPathToAssumedName(path) {
 				imp.Name = &ast.Ident{Name: ident, NamePos: imp.Pos()}
 			}
 		}
@@ -648,7 +650,7 @@ func (r *goPackagesResolver) loadPackageNames(importPaths []string, srcDir strin
 		if _, ok := names[path]; ok {
 			continue
 		}
-		names[path] = importPathToNameBasic(path, srcDir)
+		names[path] = importPathToAssumedName(path)
 	}
 	return names, nil
 
@@ -657,7 +659,7 @@ func (r *goPackagesResolver) loadPackageNames(importPaths []string, srcDir strin
 func (r *goPackagesResolver) scan(refs references) ([]*pkg, error) {
 	var loadQueries []string
 	for pkgName := range refs {
-		loadQueries = append(loadQueries, "name="+pkgName)
+		loadQueries = append(loadQueries, "iamashamedtousethedisabledqueryname="+pkgName)
 	}
 	sort.Strings(loadQueries)
 	cfg := r.env.newPackagesConfig(packages.LoadFiles)
@@ -741,18 +743,36 @@ func addExternalCandidates(pass *pass, refs references, filename string) error {
 	return firstErr
 }
 
-// importPathToNameBasic assumes the package name is the base of import path,
-// except that if the path ends in foo/vN, it assumes the package name is foo.
-func importPathToNameBasic(importPath, srcDir string) (packageName string) {
+// notIdentifier reports whether ch is an invalid identifier character.
+func notIdentifier(ch rune) bool {
+	return !('a' <= ch && ch <= 'z' || 'A' <= ch && ch <= 'Z' ||
+		'0' <= ch && ch <= '9' ||
+		ch == '_' ||
+		ch >= utf8.RuneSelf && (unicode.IsLetter(ch) || unicode.IsDigit(ch)))
+}
+
+// importPathToAssumedName returns the assumed package name of an import path.
+// It does this using only string parsing of the import path.
+// It picks the last element of the path that does not look like a major
+// version, and then picks the valid identifier off the start of that element.
+// It is used to determine if a local rename should be added to an import for
+// clarity.
+// This function could be moved to a standard package and exported if we want
+// for use in other tools.
+func importPathToAssumedName(importPath string) string {
 	base := path.Base(importPath)
 	if strings.HasPrefix(base, "v") {
 		if _, err := strconv.Atoi(base[1:]); err == nil {
 			dir := path.Dir(importPath)
 			if dir != "." {
-				return path.Base(dir)
+				base = path.Base(dir)
 			}
 		}
 	}
+	base = strings.TrimPrefix(base, "go-")
+	if i := strings.IndexFunc(base, notIdentifier); i >= 0 {
+		base = base[:i]
+	}
 	return base
 }
 
diff --git a/vendor/golang.org/x/tools/imports/mkstdlib.go b/vendor/golang.org/x/tools/imports/mkstdlib.go
index 5e53378f..5059ad4d 100644
--- a/vendor/golang.org/x/tools/imports/mkstdlib.go
+++ b/vendor/golang.org/x/tools/imports/mkstdlib.go
@@ -58,6 +58,7 @@ func main() {
 		mustOpen(api("go1.9.txt")),
 		mustOpen(api("go1.10.txt")),
 		mustOpen(api("go1.11.txt")),
+		mustOpen(api("go1.12.txt")),
 	)
 	sc := bufio.NewScanner(f)
 
diff --git a/vendor/golang.org/x/tools/imports/zstdlib.go b/vendor/golang.org/x/tools/imports/zstdlib.go
index ca4f0b2f..c18a0095 100644
--- a/vendor/golang.org/x/tools/imports/zstdlib.go
+++ b/vendor/golang.org/x/tools/imports/zstdlib.go
@@ -112,6 +112,7 @@ var stdlib = map[string]map[string]bool{
 		"Reader":          true,
 		"Repeat":          true,
 		"Replace":         true,
+		"ReplaceAll":      true,
 		"Runes":           true,
 		"Split":           true,
 		"SplitAfter":      true,
@@ -441,6 +442,9 @@ var stdlib = map[string]map[string]bool{
 		"RequireAnyClientCert":                 true,
 		"Server":                               true,
 		"SignatureScheme":                      true,
+		"TLS_AES_128_GCM_SHA256":               true,
+		"TLS_AES_256_GCM_SHA384":               true,
+		"TLS_CHACHA20_POLY1305_SHA256":         true,
 		"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA": true,
 		"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256": true,
 		"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256": true,
@@ -469,6 +473,7 @@ var stdlib = map[string]map[string]bool{
 		"VersionTLS10":                            true,
 		"VersionTLS11":                            true,
 		"VersionTLS12":                            true,
+		"VersionTLS13":                            true,
 		"X25519":                                  true,
 		"X509KeyPair":                             true,
 	},
@@ -1835,6 +1840,7 @@ var stdlib = map[string]map[string]bool{
 		"R_PPC_UADDR32":                             true,
 		"R_RISCV":                                   true,
 		"R_RISCV_32":                                true,
+		"R_RISCV_32_PCREL":                          true,
 		"R_RISCV_64":                                true,
 		"R_RISCV_ADD16":                             true,
 		"R_RISCV_ADD32":                             true,
@@ -2260,6 +2266,7 @@ var stdlib = map[string]map[string]bool{
 		"IMAGE_FILE_MACHINE_AMD64":             true,
 		"IMAGE_FILE_MACHINE_ARM":               true,
 		"IMAGE_FILE_MACHINE_ARM64":             true,
+		"IMAGE_FILE_MACHINE_ARMNT":             true,
 		"IMAGE_FILE_MACHINE_EBC":               true,
 		"IMAGE_FILE_MACHINE_I386":              true,
 		"IMAGE_FILE_MACHINE_IA64":              true,
@@ -2753,6 +2760,7 @@ var stdlib = map[string]map[string]bool{
 		"New":             true,
 		"Note":            true,
 		"Package":         true,
+		"PreserveAST":     true,
 		"Synopsis":        true,
 		"ToHTML":          true,
 		"ToText":          true,
@@ -2764,9 +2772,10 @@ var stdlib = map[string]map[string]bool{
 		"Source": true,
 	},
 	"go/importer": map[string]bool{
-		"Default": true,
-		"For":     true,
-		"Lookup":  true,
+		"Default":     true,
+		"For":         true,
+		"ForCompiler": true,
+		"Lookup":      true,
 	},
 	"go/parser": map[string]bool{
 		"AllErrors":         true,
@@ -3296,6 +3305,7 @@ var stdlib = map[string]map[string]bool{
 		"SeekEnd":          true,
 		"SeekStart":        true,
 		"Seeker":           true,
+		"StringWriter":     true,
 		"TeeReader":        true,
 		"WriteCloser":      true,
 		"WriteSeeker":      true,
@@ -3498,6 +3508,12 @@ var stdlib = map[string]map[string]bool{
 		"Word":          true,
 	},
 	"math/bits": map[string]bool{
+		"Add":             true,
+		"Add32":           true,
+		"Add64":           true,
+		"Div":             true,
+		"Div32":           true,
+		"Div64":           true,
 		"LeadingZeros":    true,
 		"LeadingZeros16":  true,
 		"LeadingZeros32":  true,
@@ -3508,6 +3524,9 @@ var stdlib = map[string]map[string]bool{
 		"Len32":           true,
 		"Len64":           true,
 		"Len8":            true,
+		"Mul":             true,
+		"Mul32":           true,
+		"Mul64":           true,
 		"OnesCount":       true,
 		"OnesCount16":     true,
 		"OnesCount32":     true,
@@ -3527,6 +3546,9 @@ var stdlib = map[string]map[string]bool{
 		"RotateLeft32":    true,
 		"RotateLeft64":    true,
 		"RotateLeft8":     true,
+		"Sub":             true,
+		"Sub32":           true,
+		"Sub64":           true,
 		"TrailingZeros":   true,
 		"TrailingZeros16": true,
 		"TrailingZeros32": true,
@@ -3870,6 +3892,7 @@ var stdlib = map[string]map[string]bool{
 		"StatusTeapot":                        true,
 		"StatusTemporaryRedirect":             true,
 		"StatusText":                          true,
+		"StatusTooEarly":                      true,
 		"StatusTooManyRequests":               true,
 		"StatusUnauthorized":                  true,
 		"StatusUnavailableForLegalReasons":    true,
@@ -4140,6 +4163,7 @@ var stdlib = map[string]map[string]bool{
 		"Truncate":          true,
 		"Unsetenv":          true,
 		"UserCacheDir":      true,
+		"UserHomeDir":       true,
 	},
 	"os/exec": map[string]bool{
 		"Cmd":            true,
@@ -4244,6 +4268,7 @@ var stdlib = map[string]map[string]bool{
 		"MakeMapWithSize": true,
 		"MakeSlice":       true,
 		"Map":             true,
+		"MapIter":         true,
 		"MapOf":           true,
 		"Method":          true,
 		"New":             true,
@@ -4419,9 +4444,12 @@ var stdlib = map[string]map[string]bool{
 		"Version":                 true,
 	},
 	"runtime/debug": map[string]bool{
+		"BuildInfo":       true,
 		"FreeOSMemory":    true,
 		"GCStats":         true,
+		"Module":          true,
 		"PrintStack":      true,
+		"ReadBuildInfo":   true,
 		"ReadGCStats":     true,
 		"SetGCPercent":    true,
 		"SetMaxStack":     true,
@@ -4547,6 +4575,7 @@ var stdlib = map[string]map[string]bool{
 		"Reader":         true,
 		"Repeat":         true,
 		"Replace":        true,
+		"ReplaceAll":     true,
 		"Replacer":       true,
 		"Split":          true,
 		"SplitAfter":     true,
@@ -6105,6 +6134,7 @@ var stdlib = map[string]map[string]bool{
 		"FreeLibrary":                                  true,
 		"Fsid":                                         true,
 		"Fstat":                                        true,
+		"Fstatat":                                      true,
 		"Fstatfs":                                      true,
 		"Fstore_t":                                     true,
 		"Fsync":                                        true,
@@ -9362,6 +9392,7 @@ var stdlib = map[string]map[string]bool{
 		"Syscall":                                      true,
 		"Syscall12":                                    true,
 		"Syscall15":                                    true,
+		"Syscall18":                                    true,
 		"Syscall6":                                     true,
 		"Syscall9":                                     true,
 		"Sysctl":                                       true,
@@ -9630,6 +9661,7 @@ var stdlib = map[string]map[string]bool{
 		"TransmitFile":                                 true,
 		"TransmitFileBuffers":                          true,
 		"Truncate":                                     true,
+		"UNIX_PATH_MAX":                                true,
 		"USAGE_MATCH_TYPE_AND":                         true,
 		"USAGE_MATCH_TYPE_OR":                          true,
 		"UTF16FromString":                              true,
diff --git a/vendor/modules.txt b/vendor/modules.txt
index 86b98e5e..24d145cb 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -192,7 +192,7 @@ golang.org/x/sys/windows
 golang.org/x/text/width
 golang.org/x/text/transform
 golang.org/x/text/unicode/norm
-# golang.org/x/tools v0.0.0-20190125232054-d66bd3c5d5a6
+# golang.org/x/tools v0.0.0-20190125232054-379209517ffe
 golang.org/x/tools/go/loader
 golang.org/x/tools/go/packages
 golang.org/x/tools/imports