diff --git a/Makefile b/Makefile
index bfd7356a..bfeac9a4 100644
--- a/Makefile
+++ b/Makefile
@@ -2,20 +2,22 @@ SHELL=bash
all: clean fmt test fixture install integration
+novendor=$(shell glide novendor)
+
clean:
rm -rf mocks
fmt:
- go fmt ./...
+ go fmt ${novendor}
test:
- go test ./...
+ go test ${novendor}
fixture:
mockery -print -dir mockery/fixtures -name RequesterVariadic > mockery/fixtures/mocks/requester_variadic.go
install:
- go install ./...
+ go install ${novendor}
integration:
rm -rf mocks
@@ -27,4 +29,9 @@ integration:
if [ ! -f "mocks/AsyncProducer.go" ]; then \
echo "AsyncProducer.go not created"; \
echo 1; \
- fi
\ No newline at end of file
+ fi
+
+glide_up:
+ glide up --skip-test
+ #Can be found here https://github.com/sgotti/glide-vc
+ glide-vc --use-lock-file
diff --git a/glide.lock b/glide.lock
new file mode 100644
index 00000000..036ade00
--- /dev/null
+++ b/glide.lock
@@ -0,0 +1,11 @@
+hash: a34abb694ac3e7c29c47bbcaf962550002e0cc87cfd29aad54ed744b6e84d7eb
+updated: 2017-06-03T16:05:13.182599782-07:00
+imports:
+- name: golang.org/x/tools
+ version: c21bc47f893ee73c18dd2119bb8ff9a2b492c4c6
+ subpackages:
+ - go/ast/astutil
+ - go/buildutil
+ - go/loader
+ - imports
+testImports: []
diff --git a/glide.yaml b/glide.yaml
new file mode 100644
index 00000000..171a2c1a
--- /dev/null
+++ b/glide.yaml
@@ -0,0 +1,11 @@
+package: github.com/vektra/mockery
+homepage: https://github.com/vektra/mockery
+excludeDirs:
+- mockery/fixtures
+- mocks
+import:
+- package: golang.org/x/tools
+ subpackages:
+ - go/loader
+ - imports
+testImport: []
\ No newline at end of file
diff --git a/vendor/golang.org/x/tools/.gitattributes b/vendor/golang.org/x/tools/.gitattributes
new file mode 100644
index 00000000..d2f212e5
--- /dev/null
+++ b/vendor/golang.org/x/tools/.gitattributes
@@ -0,0 +1,10 @@
+# Treat all files in this repo as binary, with no git magic updating
+# line endings. Windows users contributing to Go will need to use a
+# modern version of git and editors capable of LF line endings.
+#
+# We'll prevent accidental CRLF line endings from entering the repo
+# via the git-review gofmt checks.
+#
+# See golang.org/issue/9281
+
+* -text
diff --git a/vendor/golang.org/x/tools/.gitignore b/vendor/golang.org/x/tools/.gitignore
new file mode 100644
index 00000000..5a9d62ef
--- /dev/null
+++ b/vendor/golang.org/x/tools/.gitignore
@@ -0,0 +1,2 @@
+# Add no patterns to .gitignore except for files generated by the build.
+last-change
diff --git a/vendor/golang.org/x/tools/AUTHORS b/vendor/golang.org/x/tools/AUTHORS
new file mode 100644
index 00000000..15167cd7
--- /dev/null
+++ b/vendor/golang.org/x/tools/AUTHORS
@@ -0,0 +1,3 @@
+# This source code refers to The Go Authors for copyright purposes.
+# The master list of authors is in the main Go distribution,
+# visible at http://tip.golang.org/AUTHORS.
diff --git a/vendor/golang.org/x/tools/CONTRIBUTING.md b/vendor/golang.org/x/tools/CONTRIBUTING.md
new file mode 100644
index 00000000..88dff59b
--- /dev/null
+++ b/vendor/golang.org/x/tools/CONTRIBUTING.md
@@ -0,0 +1,31 @@
+# Contributing to Go
+
+Go is an open source project.
+
+It is the work of hundreds of contributors. We appreciate your help!
+
+
+## Filing issues
+
+When [filing an issue](https://golang.org/issue/new), make sure to answer these five questions:
+
+1. What version of Go are you using (`go version`)?
+2. What operating system and processor architecture are you using?
+3. What did you do?
+4. What did you expect to see?
+5. What did you see instead?
+
+General questions should go to the [golang-nuts mailing list](https://groups.google.com/group/golang-nuts) instead of the issue tracker.
+The gophers there will answer or ask you to file an issue if you've tripped over a bug.
+
+## Contributing code
+
+Please read the [Contribution Guidelines](https://golang.org/doc/contribute.html)
+before sending patches.
+
+**We do not accept GitHub pull requests**
+(we use [Gerrit](https://code.google.com/p/gerrit/) instead for code review).
+
+Unless otherwise noted, the Go source files are distributed under
+the BSD-style license found in the LICENSE file.
+
diff --git a/vendor/golang.org/x/tools/CONTRIBUTORS b/vendor/golang.org/x/tools/CONTRIBUTORS
new file mode 100644
index 00000000..1c4577e9
--- /dev/null
+++ b/vendor/golang.org/x/tools/CONTRIBUTORS
@@ -0,0 +1,3 @@
+# This source code was written by the Go contributors.
+# The master list of contributors is in the main Go distribution,
+# visible at http://tip.golang.org/CONTRIBUTORS.
diff --git a/vendor/golang.org/x/tools/LICENSE b/vendor/golang.org/x/tools/LICENSE
new file mode 100644
index 00000000..6a66aea5
--- /dev/null
+++ b/vendor/golang.org/x/tools/LICENSE
@@ -0,0 +1,27 @@
+Copyright (c) 2009 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/golang.org/x/tools/PATENTS b/vendor/golang.org/x/tools/PATENTS
new file mode 100644
index 00000000..73309904
--- /dev/null
+++ b/vendor/golang.org/x/tools/PATENTS
@@ -0,0 +1,22 @@
+Additional IP Rights Grant (Patents)
+
+"This implementation" means the copyrightable works distributed by
+Google as part of the Go project.
+
+Google hereby grants to You a perpetual, worldwide, non-exclusive,
+no-charge, royalty-free, irrevocable (except as stated in this section)
+patent license to make, have made, use, offer to sell, sell, import,
+transfer and otherwise run, modify and propagate the contents of this
+implementation of Go, where such license applies only to those patent
+claims, both currently owned or controlled by Google and acquired in
+the future, licensable by Google that are necessarily infringed by this
+implementation of Go. This grant does not include claims that would be
+infringed only as a consequence of further modification of this
+implementation. If you or your agent or exclusive licensee institute or
+order or agree to the institution of patent litigation against any
+entity (including a cross-claim or counterclaim in a lawsuit) alleging
+that this implementation of Go or any code incorporated within this
+implementation of Go constitutes direct or contributory patent
+infringement, or inducement of patent infringement, then any patent
+rights granted to you under this License for this implementation of Go
+shall terminate as of the date such litigation is filed.
diff --git a/vendor/golang.org/x/tools/README b/vendor/golang.org/x/tools/README
new file mode 100644
index 00000000..d5944c6d
--- /dev/null
+++ b/vendor/golang.org/x/tools/README
@@ -0,0 +1,10 @@
+This subrepository holds the source for various packages and tools that support
+the Go programming language.
+
+Some of the tools, godoc and vet for example, are included in binary Go distributions.
+Others, including the Go guru and the test coverage tool, can be fetched with "go get".
+
+Packages include a type-checker for Go and an implementation of the
+Static Single Assignment form (SSA) representation for Go programs.
+
+To submit changes to this repository, see http://golang.org/doc/contribute.html.
diff --git a/vendor/golang.org/x/tools/codereview.cfg b/vendor/golang.org/x/tools/codereview.cfg
new file mode 100644
index 00000000..3f8b14b6
--- /dev/null
+++ b/vendor/golang.org/x/tools/codereview.cfg
@@ -0,0 +1 @@
+issuerepo: golang/go
diff --git a/vendor/golang.org/x/tools/go/ast/astutil/enclosing.go b/vendor/golang.org/x/tools/go/ast/astutil/enclosing.go
new file mode 100644
index 00000000..6b7052b8
--- /dev/null
+++ b/vendor/golang.org/x/tools/go/ast/astutil/enclosing.go
@@ -0,0 +1,627 @@
+// Copyright 2013 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package astutil
+
+// This file defines utilities for working with source positions.
+
+import (
+ "fmt"
+ "go/ast"
+ "go/token"
+ "sort"
+)
+
+// PathEnclosingInterval returns the node that encloses the source
+// interval [start, end), and all its ancestors up to the AST root.
+//
+// The definition of "enclosing" used by this function considers
+// additional whitespace abutting a node to be enclosed by it.
+// In this example:
+//
+// z := x + y // add them
+// <-A->
+// <----B----->
+//
+// the ast.BinaryExpr(+) node is considered to enclose interval B
+// even though its [Pos()..End()) is actually only interval A.
+// This behaviour makes user interfaces more tolerant of imperfect
+// input.
+//
+// This function treats tokens as nodes, though they are not included
+// in the result. e.g. PathEnclosingInterval("+") returns the
+// enclosing ast.BinaryExpr("x + y").
+//
+// If start==end, the 1-char interval following start is used instead.
+//
+// The 'exact' result is true if the interval contains only path[0]
+// and perhaps some adjacent whitespace. It is false if the interval
+// overlaps multiple children of path[0], or if it contains only
+// interior whitespace of path[0].
+// In this example:
+//
+// z := x + y // add them
+// <--C--> <---E-->
+// ^
+// D
+//
+// intervals C, D and E are inexact. C is contained by the
+// z-assignment statement, because it spans three of its children (:=,
+// x, +). So too is the 1-char interval D, because it contains only
+// interior whitespace of the assignment. E is considered interior
+// whitespace of the BlockStmt containing the assignment.
+//
+// Precondition: [start, end) both lie within the same file as root.
+// TODO(adonovan): return (nil, false) in this case and remove precond.
+// Requires FileSet; see loader.tokenFileContainsPos.
+//
+// Postcondition: path is never nil; it always contains at least 'root'.
+//
+func PathEnclosingInterval(root *ast.File, start, end token.Pos) (path []ast.Node, exact bool) {
+ // fmt.Printf("EnclosingInterval %d %d\n", start, end) // debugging
+
+ // Precondition: node.[Pos..End) and adjoining whitespace contain [start, end).
+ var visit func(node ast.Node) bool
+ visit = func(node ast.Node) bool {
+ path = append(path, node)
+
+ nodePos := node.Pos()
+ nodeEnd := node.End()
+
+ // fmt.Printf("visit(%T, %d, %d)\n", node, nodePos, nodeEnd) // debugging
+
+ // Intersect [start, end) with interval of node.
+ if start < nodePos {
+ start = nodePos
+ }
+ if end > nodeEnd {
+ end = nodeEnd
+ }
+
+ // Find sole child that contains [start, end).
+ children := childrenOf(node)
+ l := len(children)
+ for i, child := range children {
+ // [childPos, childEnd) is unaugmented interval of child.
+ childPos := child.Pos()
+ childEnd := child.End()
+
+ // [augPos, augEnd) is whitespace-augmented interval of child.
+ augPos := childPos
+ augEnd := childEnd
+ if i > 0 {
+ augPos = children[i-1].End() // start of preceding whitespace
+ }
+ if i < l-1 {
+ nextChildPos := children[i+1].Pos()
+ // Does [start, end) lie between child and next child?
+ if start >= augEnd && end <= nextChildPos {
+ return false // inexact match
+ }
+ augEnd = nextChildPos // end of following whitespace
+ }
+
+ // fmt.Printf("\tchild %d: [%d..%d)\tcontains interval [%d..%d)?\n",
+ // i, augPos, augEnd, start, end) // debugging
+
+ // Does augmented child strictly contain [start, end)?
+ if augPos <= start && end <= augEnd {
+ _, isToken := child.(tokenNode)
+ return isToken || visit(child)
+ }
+
+ // Does [start, end) overlap multiple children?
+ // i.e. left-augmented child contains start
+ // but LR-augmented child does not contain end.
+ if start < childEnd && end > augEnd {
+ break
+ }
+ }
+
+ // No single child contained [start, end),
+ // so node is the result. Is it exact?
+
+ // (It's tempting to put this condition before the
+ // child loop, but it gives the wrong result in the
+ // case where a node (e.g. ExprStmt) and its sole
+ // child have equal intervals.)
+ if start == nodePos && end == nodeEnd {
+ return true // exact match
+ }
+
+ return false // inexact: overlaps multiple children
+ }
+
+ if start > end {
+ start, end = end, start
+ }
+
+ if start < root.End() && end > root.Pos() {
+ if start == end {
+ end = start + 1 // empty interval => interval of size 1
+ }
+ exact = visit(root)
+
+ // Reverse the path:
+ for i, l := 0, len(path); i < l/2; i++ {
+ path[i], path[l-1-i] = path[l-1-i], path[i]
+ }
+ } else {
+ // Selection lies within whitespace preceding the
+ // first (or following the last) declaration in the file.
+ // The result nonetheless always includes the ast.File.
+ path = append(path, root)
+ }
+
+ return
+}
+
+// tokenNode is a dummy implementation of ast.Node for a single token.
+// They are used transiently by PathEnclosingInterval but never escape
+// this package.
+//
+type tokenNode struct {
+ pos token.Pos
+ end token.Pos
+}
+
+func (n tokenNode) Pos() token.Pos {
+ return n.pos
+}
+
+func (n tokenNode) End() token.Pos {
+ return n.end
+}
+
+func tok(pos token.Pos, len int) ast.Node {
+ return tokenNode{pos, pos + token.Pos(len)}
+}
+
+// childrenOf returns the direct non-nil children of ast.Node n.
+// It may include fake ast.Node implementations for bare tokens.
+// it is not safe to call (e.g.) ast.Walk on such nodes.
+//
+func childrenOf(n ast.Node) []ast.Node {
+ var children []ast.Node
+
+ // First add nodes for all true subtrees.
+ ast.Inspect(n, func(node ast.Node) bool {
+ if node == n { // push n
+ return true // recur
+ }
+ if node != nil { // push child
+ children = append(children, node)
+ }
+ return false // no recursion
+ })
+
+ // Then add fake Nodes for bare tokens.
+ switch n := n.(type) {
+ case *ast.ArrayType:
+ children = append(children,
+ tok(n.Lbrack, len("[")),
+ tok(n.Elt.End(), len("]")))
+
+ case *ast.AssignStmt:
+ children = append(children,
+ tok(n.TokPos, len(n.Tok.String())))
+
+ case *ast.BasicLit:
+ children = append(children,
+ tok(n.ValuePos, len(n.Value)))
+
+ case *ast.BinaryExpr:
+ children = append(children, tok(n.OpPos, len(n.Op.String())))
+
+ case *ast.BlockStmt:
+ children = append(children,
+ tok(n.Lbrace, len("{")),
+ tok(n.Rbrace, len("}")))
+
+ case *ast.BranchStmt:
+ children = append(children,
+ tok(n.TokPos, len(n.Tok.String())))
+
+ case *ast.CallExpr:
+ children = append(children,
+ tok(n.Lparen, len("(")),
+ tok(n.Rparen, len(")")))
+ if n.Ellipsis != 0 {
+ children = append(children, tok(n.Ellipsis, len("...")))
+ }
+
+ case *ast.CaseClause:
+ if n.List == nil {
+ children = append(children,
+ tok(n.Case, len("default")))
+ } else {
+ children = append(children,
+ tok(n.Case, len("case")))
+ }
+ children = append(children, tok(n.Colon, len(":")))
+
+ case *ast.ChanType:
+ switch n.Dir {
+ case ast.RECV:
+ children = append(children, tok(n.Begin, len("<-chan")))
+ case ast.SEND:
+ children = append(children, tok(n.Begin, len("chan<-")))
+ case ast.RECV | ast.SEND:
+ children = append(children, tok(n.Begin, len("chan")))
+ }
+
+ case *ast.CommClause:
+ if n.Comm == nil {
+ children = append(children,
+ tok(n.Case, len("default")))
+ } else {
+ children = append(children,
+ tok(n.Case, len("case")))
+ }
+ children = append(children, tok(n.Colon, len(":")))
+
+ case *ast.Comment:
+ // nop
+
+ case *ast.CommentGroup:
+ // nop
+
+ case *ast.CompositeLit:
+ children = append(children,
+ tok(n.Lbrace, len("{")),
+ tok(n.Rbrace, len("{")))
+
+ case *ast.DeclStmt:
+ // nop
+
+ case *ast.DeferStmt:
+ children = append(children,
+ tok(n.Defer, len("defer")))
+
+ case *ast.Ellipsis:
+ children = append(children,
+ tok(n.Ellipsis, len("...")))
+
+ case *ast.EmptyStmt:
+ // nop
+
+ case *ast.ExprStmt:
+ // nop
+
+ case *ast.Field:
+ // TODO(adonovan): Field.{Doc,Comment,Tag}?
+
+ case *ast.FieldList:
+ children = append(children,
+ tok(n.Opening, len("(")),
+ tok(n.Closing, len(")")))
+
+ case *ast.File:
+ // TODO test: Doc
+ children = append(children,
+ tok(n.Package, len("package")))
+
+ case *ast.ForStmt:
+ children = append(children,
+ tok(n.For, len("for")))
+
+ case *ast.FuncDecl:
+ // TODO(adonovan): FuncDecl.Comment?
+
+ // Uniquely, FuncDecl breaks the invariant that
+ // preorder traversal yields tokens in lexical order:
+ // in fact, FuncDecl.Recv precedes FuncDecl.Type.Func.
+ //
+ // As a workaround, we inline the case for FuncType
+ // here and order things correctly.
+ //
+ children = nil // discard ast.Walk(FuncDecl) info subtrees
+ children = append(children, tok(n.Type.Func, len("func")))
+ if n.Recv != nil {
+ children = append(children, n.Recv)
+ }
+ children = append(children, n.Name)
+ if n.Type.Params != nil {
+ children = append(children, n.Type.Params)
+ }
+ if n.Type.Results != nil {
+ children = append(children, n.Type.Results)
+ }
+ if n.Body != nil {
+ children = append(children, n.Body)
+ }
+
+ case *ast.FuncLit:
+ // nop
+
+ case *ast.FuncType:
+ if n.Func != 0 {
+ children = append(children,
+ tok(n.Func, len("func")))
+ }
+
+ case *ast.GenDecl:
+ children = append(children,
+ tok(n.TokPos, len(n.Tok.String())))
+ if n.Lparen != 0 {
+ children = append(children,
+ tok(n.Lparen, len("(")),
+ tok(n.Rparen, len(")")))
+ }
+
+ case *ast.GoStmt:
+ children = append(children,
+ tok(n.Go, len("go")))
+
+ case *ast.Ident:
+ children = append(children,
+ tok(n.NamePos, len(n.Name)))
+
+ case *ast.IfStmt:
+ children = append(children,
+ tok(n.If, len("if")))
+
+ case *ast.ImportSpec:
+ // TODO(adonovan): ImportSpec.{Doc,EndPos}?
+
+ case *ast.IncDecStmt:
+ children = append(children,
+ tok(n.TokPos, len(n.Tok.String())))
+
+ case *ast.IndexExpr:
+ children = append(children,
+ tok(n.Lbrack, len("{")),
+ tok(n.Rbrack, len("}")))
+
+ case *ast.InterfaceType:
+ children = append(children,
+ tok(n.Interface, len("interface")))
+
+ case *ast.KeyValueExpr:
+ children = append(children,
+ tok(n.Colon, len(":")))
+
+ case *ast.LabeledStmt:
+ children = append(children,
+ tok(n.Colon, len(":")))
+
+ case *ast.MapType:
+ children = append(children,
+ tok(n.Map, len("map")))
+
+ case *ast.ParenExpr:
+ children = append(children,
+ tok(n.Lparen, len("(")),
+ tok(n.Rparen, len(")")))
+
+ case *ast.RangeStmt:
+ children = append(children,
+ tok(n.For, len("for")),
+ tok(n.TokPos, len(n.Tok.String())))
+
+ case *ast.ReturnStmt:
+ children = append(children,
+ tok(n.Return, len("return")))
+
+ case *ast.SelectStmt:
+ children = append(children,
+ tok(n.Select, len("select")))
+
+ case *ast.SelectorExpr:
+ // nop
+
+ case *ast.SendStmt:
+ children = append(children,
+ tok(n.Arrow, len("<-")))
+
+ case *ast.SliceExpr:
+ children = append(children,
+ tok(n.Lbrack, len("[")),
+ tok(n.Rbrack, len("]")))
+
+ case *ast.StarExpr:
+ children = append(children, tok(n.Star, len("*")))
+
+ case *ast.StructType:
+ children = append(children, tok(n.Struct, len("struct")))
+
+ case *ast.SwitchStmt:
+ children = append(children, tok(n.Switch, len("switch")))
+
+ case *ast.TypeAssertExpr:
+ children = append(children,
+ tok(n.Lparen-1, len(".")),
+ tok(n.Lparen, len("(")),
+ tok(n.Rparen, len(")")))
+
+ case *ast.TypeSpec:
+ // TODO(adonovan): TypeSpec.{Doc,Comment}?
+
+ case *ast.TypeSwitchStmt:
+ children = append(children, tok(n.Switch, len("switch")))
+
+ case *ast.UnaryExpr:
+ children = append(children, tok(n.OpPos, len(n.Op.String())))
+
+ case *ast.ValueSpec:
+ // TODO(adonovan): ValueSpec.{Doc,Comment}?
+
+ case *ast.BadDecl, *ast.BadExpr, *ast.BadStmt:
+ // nop
+ }
+
+ // TODO(adonovan): opt: merge the logic of ast.Inspect() into
+ // the switch above so we can make interleaved callbacks for
+ // both Nodes and Tokens in the right order and avoid the need
+ // to sort.
+ sort.Sort(byPos(children))
+
+ return children
+}
+
+type byPos []ast.Node
+
+func (sl byPos) Len() int {
+ return len(sl)
+}
+func (sl byPos) Less(i, j int) bool {
+ return sl[i].Pos() < sl[j].Pos()
+}
+func (sl byPos) Swap(i, j int) {
+ sl[i], sl[j] = sl[j], sl[i]
+}
+
+// NodeDescription returns a description of the concrete type of n suitable
+// for a user interface.
+//
+// TODO(adonovan): in some cases (e.g. Field, FieldList, Ident,
+// StarExpr) we could be much more specific given the path to the AST
+// root. Perhaps we should do that.
+//
+func NodeDescription(n ast.Node) string {
+ switch n := n.(type) {
+ case *ast.ArrayType:
+ return "array type"
+ case *ast.AssignStmt:
+ return "assignment"
+ case *ast.BadDecl:
+ return "bad declaration"
+ case *ast.BadExpr:
+ return "bad expression"
+ case *ast.BadStmt:
+ return "bad statement"
+ case *ast.BasicLit:
+ return "basic literal"
+ case *ast.BinaryExpr:
+ return fmt.Sprintf("binary %s operation", n.Op)
+ case *ast.BlockStmt:
+ return "block"
+ case *ast.BranchStmt:
+ switch n.Tok {
+ case token.BREAK:
+ return "break statement"
+ case token.CONTINUE:
+ return "continue statement"
+ case token.GOTO:
+ return "goto statement"
+ case token.FALLTHROUGH:
+ return "fall-through statement"
+ }
+ case *ast.CallExpr:
+ if len(n.Args) == 1 && !n.Ellipsis.IsValid() {
+ return "function call (or conversion)"
+ }
+ return "function call"
+ case *ast.CaseClause:
+ return "case clause"
+ case *ast.ChanType:
+ return "channel type"
+ case *ast.CommClause:
+ return "communication clause"
+ case *ast.Comment:
+ return "comment"
+ case *ast.CommentGroup:
+ return "comment group"
+ case *ast.CompositeLit:
+ return "composite literal"
+ case *ast.DeclStmt:
+ return NodeDescription(n.Decl) + " statement"
+ case *ast.DeferStmt:
+ return "defer statement"
+ case *ast.Ellipsis:
+ return "ellipsis"
+ case *ast.EmptyStmt:
+ return "empty statement"
+ case *ast.ExprStmt:
+ return "expression statement"
+ case *ast.Field:
+ // Can be any of these:
+ // struct {x, y int} -- struct field(s)
+ // struct {T} -- anon struct field
+ // interface {I} -- interface embedding
+ // interface {f()} -- interface method
+ // func (A) func(B) C -- receiver, param(s), result(s)
+ return "field/method/parameter"
+ case *ast.FieldList:
+ return "field/method/parameter list"
+ case *ast.File:
+ return "source file"
+ case *ast.ForStmt:
+ return "for loop"
+ case *ast.FuncDecl:
+ return "function declaration"
+ case *ast.FuncLit:
+ return "function literal"
+ case *ast.FuncType:
+ return "function type"
+ case *ast.GenDecl:
+ switch n.Tok {
+ case token.IMPORT:
+ return "import declaration"
+ case token.CONST:
+ return "constant declaration"
+ case token.TYPE:
+ return "type declaration"
+ case token.VAR:
+ return "variable declaration"
+ }
+ case *ast.GoStmt:
+ return "go statement"
+ case *ast.Ident:
+ return "identifier"
+ case *ast.IfStmt:
+ return "if statement"
+ case *ast.ImportSpec:
+ return "import specification"
+ case *ast.IncDecStmt:
+ if n.Tok == token.INC {
+ return "increment statement"
+ }
+ return "decrement statement"
+ case *ast.IndexExpr:
+ return "index expression"
+ case *ast.InterfaceType:
+ return "interface type"
+ case *ast.KeyValueExpr:
+ return "key/value association"
+ case *ast.LabeledStmt:
+ return "statement label"
+ case *ast.MapType:
+ return "map type"
+ case *ast.Package:
+ return "package"
+ case *ast.ParenExpr:
+ return "parenthesized " + NodeDescription(n.X)
+ case *ast.RangeStmt:
+ return "range loop"
+ case *ast.ReturnStmt:
+ return "return statement"
+ case *ast.SelectStmt:
+ return "select statement"
+ case *ast.SelectorExpr:
+ return "selector"
+ case *ast.SendStmt:
+ return "channel send"
+ case *ast.SliceExpr:
+ return "slice expression"
+ case *ast.StarExpr:
+ return "*-operation" // load/store expr or pointer type
+ case *ast.StructType:
+ return "struct type"
+ case *ast.SwitchStmt:
+ return "switch statement"
+ case *ast.TypeAssertExpr:
+ return "type assertion"
+ case *ast.TypeSpec:
+ return "type specification"
+ case *ast.TypeSwitchStmt:
+ return "type switch"
+ case *ast.UnaryExpr:
+ return fmt.Sprintf("unary %s operation", n.Op)
+ case *ast.ValueSpec:
+ return "value specification"
+
+ }
+ panic(fmt.Sprintf("unexpected node type: %T", n))
+}
diff --git a/vendor/golang.org/x/tools/go/ast/astutil/enclosing_test.go b/vendor/golang.org/x/tools/go/ast/astutil/enclosing_test.go
new file mode 100644
index 00000000..107f87c5
--- /dev/null
+++ b/vendor/golang.org/x/tools/go/ast/astutil/enclosing_test.go
@@ -0,0 +1,195 @@
+// Copyright 2013 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package astutil_test
+
+// This file defines tests of PathEnclosingInterval.
+
+// TODO(adonovan): exhaustive tests that run over the whole input
+// tree, not just handcrafted examples.
+
+import (
+ "bytes"
+ "fmt"
+ "go/ast"
+ "go/parser"
+ "go/token"
+ "strings"
+ "testing"
+
+ "golang.org/x/tools/go/ast/astutil"
+)
+
+// pathToString returns a string containing the concrete types of the
+// nodes in path.
+func pathToString(path []ast.Node) string {
+ var buf bytes.Buffer
+ fmt.Fprint(&buf, "[")
+ for i, n := range path {
+ if i > 0 {
+ fmt.Fprint(&buf, " ")
+ }
+ fmt.Fprint(&buf, strings.TrimPrefix(fmt.Sprintf("%T", n), "*ast."))
+ }
+ fmt.Fprint(&buf, "]")
+ return buf.String()
+}
+
+// findInterval parses input and returns the [start, end) positions of
+// the first occurrence of substr in input. f==nil indicates failure;
+// an error has already been reported in that case.
+//
+func findInterval(t *testing.T, fset *token.FileSet, input, substr string) (f *ast.File, start, end token.Pos) {
+ f, err := parser.ParseFile(fset, "", input, 0)
+ if err != nil {
+ t.Errorf("parse error: %s", err)
+ return
+ }
+
+ i := strings.Index(input, substr)
+ if i < 0 {
+ t.Errorf("%q is not a substring of input", substr)
+ f = nil
+ return
+ }
+
+ filePos := fset.File(f.Package)
+ return f, filePos.Pos(i), filePos.Pos(i + len(substr))
+}
+
+// Common input for following tests.
+const input = `
+// Hello.
+package main
+import "fmt"
+func f() {}
+func main() {
+ z := (x + y) // add them
+ f() // NB: ExprStmt and its CallExpr have same Pos/End
+}
+`
+
+func TestPathEnclosingInterval_Exact(t *testing.T) {
+ // For the exact tests, we check that a substring is mapped to
+ // the canonical string for the node it denotes.
+ tests := []struct {
+ substr string // first occurrence of this string indicates interval
+ node string // complete text of expected containing node
+ }{
+ {"package",
+ input[11 : len(input)-1]},
+ {"\npack",
+ input[11 : len(input)-1]},
+ {"main",
+ "main"},
+ {"import",
+ "import \"fmt\""},
+ {"\"fmt\"",
+ "\"fmt\""},
+ {"\nfunc f() {}\n",
+ "func f() {}"},
+ {"x ",
+ "x"},
+ {" y",
+ "y"},
+ {"z",
+ "z"},
+ {" + ",
+ "x + y"},
+ {" :=",
+ "z := (x + y)"},
+ {"x + y",
+ "x + y"},
+ {"(x + y)",
+ "(x + y)"},
+ {" (x + y) ",
+ "(x + y)"},
+ {" (x + y) // add",
+ "(x + y)"},
+ {"func",
+ "func f() {}"},
+ {"func f() {}",
+ "func f() {}"},
+ {"\nfun",
+ "func f() {}"},
+ {" f",
+ "f"},
+ }
+ for _, test := range tests {
+ f, start, end := findInterval(t, new(token.FileSet), input, test.substr)
+ if f == nil {
+ continue
+ }
+
+ path, exact := astutil.PathEnclosingInterval(f, start, end)
+ if !exact {
+ t.Errorf("PathEnclosingInterval(%q) not exact", test.substr)
+ continue
+ }
+
+ if len(path) == 0 {
+ if test.node != "" {
+ t.Errorf("PathEnclosingInterval(%q).path: got [], want %q",
+ test.substr, test.node)
+ }
+ continue
+ }
+
+ if got := input[path[0].Pos():path[0].End()]; got != test.node {
+ t.Errorf("PathEnclosingInterval(%q): got %q, want %q (path was %s)",
+ test.substr, got, test.node, pathToString(path))
+ continue
+ }
+ }
+}
+
+func TestPathEnclosingInterval_Paths(t *testing.T) {
+ // For these tests, we check only the path of the enclosing
+ // node, but not its complete text because it's often quite
+ // large when !exact.
+ tests := []struct {
+ substr string // first occurrence of this string indicates interval
+ path string // the pathToString(),exact of the expected path
+ }{
+ {"// add",
+ "[BlockStmt FuncDecl File],false"},
+ {"(x + y",
+ "[ParenExpr AssignStmt BlockStmt FuncDecl File],false"},
+ {"x +",
+ "[BinaryExpr ParenExpr AssignStmt BlockStmt FuncDecl File],false"},
+ {"z := (x",
+ "[AssignStmt BlockStmt FuncDecl File],false"},
+ {"func f",
+ "[FuncDecl File],false"},
+ {"func f()",
+ "[FuncDecl File],false"},
+ {" f()",
+ "[FuncDecl File],false"},
+ {"() {}",
+ "[FuncDecl File],false"},
+ {"// Hello",
+ "[File],false"},
+ {" f",
+ "[Ident FuncDecl File],true"},
+ {"func ",
+ "[FuncDecl File],true"},
+ {"mai",
+ "[Ident File],true"},
+ {"f() // NB",
+ "[CallExpr ExprStmt BlockStmt FuncDecl File],true"},
+ }
+ for _, test := range tests {
+ f, start, end := findInterval(t, new(token.FileSet), input, test.substr)
+ if f == nil {
+ continue
+ }
+
+ path, exact := astutil.PathEnclosingInterval(f, start, end)
+ if got := fmt.Sprintf("%s,%v", pathToString(path), exact); got != test.path {
+ t.Errorf("PathEnclosingInterval(%q): got %q, want %q",
+ test.substr, got, test.path)
+ continue
+ }
+ }
+}
diff --git a/vendor/golang.org/x/tools/go/ast/astutil/imports.go b/vendor/golang.org/x/tools/go/ast/astutil/imports.go
new file mode 100644
index 00000000..36c536b5
--- /dev/null
+++ b/vendor/golang.org/x/tools/go/ast/astutil/imports.go
@@ -0,0 +1,450 @@
+// Copyright 2013 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Package astutil contains common utilities for working with the Go AST.
+package astutil // import "golang.org/x/tools/go/ast/astutil"
+
+import (
+ "fmt"
+ "go/ast"
+ "go/token"
+ "strconv"
+ "strings"
+)
+
+// AddImport adds the import path to the file f, if absent.
+func AddImport(fset *token.FileSet, f *ast.File, ipath string) (added bool) {
+ return AddNamedImport(fset, f, "", ipath)
+}
+
+// AddNamedImport adds the import path to the file f, if absent.
+// If name is not empty, it is used to rename the import.
+//
+// For example, calling
+// AddNamedImport(fset, f, "pathpkg", "path")
+// adds
+// import pathpkg "path"
+func AddNamedImport(fset *token.FileSet, f *ast.File, name, ipath string) (added bool) {
+ if imports(f, ipath) {
+ return false
+ }
+
+ newImport := &ast.ImportSpec{
+ Path: &ast.BasicLit{
+ Kind: token.STRING,
+ Value: strconv.Quote(ipath),
+ },
+ }
+ if name != "" {
+ newImport.Name = &ast.Ident{Name: name}
+ }
+
+ // Find an import decl to add to.
+ // The goal is to find an existing import
+ // whose import path has the longest shared
+ // prefix with ipath.
+ var (
+ bestMatch = -1 // length of longest shared prefix
+ lastImport = -1 // index in f.Decls of the file's final import decl
+ impDecl *ast.GenDecl // import decl containing the best match
+ impIndex = -1 // spec index in impDecl containing the best match
+ )
+ for i, decl := range f.Decls {
+ gen, ok := decl.(*ast.GenDecl)
+ if ok && gen.Tok == token.IMPORT {
+ lastImport = i
+ // Do not add to import "C", to avoid disrupting the
+ // association with its doc comment, breaking cgo.
+ if declImports(gen, "C") {
+ continue
+ }
+
+ // Match an empty import decl if that's all that is available.
+ if len(gen.Specs) == 0 && bestMatch == -1 {
+ impDecl = gen
+ }
+
+ // Compute longest shared prefix with imports in this group.
+ for j, spec := range gen.Specs {
+ impspec := spec.(*ast.ImportSpec)
+ n := matchLen(importPath(impspec), ipath)
+ if n > bestMatch {
+ bestMatch = n
+ impDecl = gen
+ impIndex = j
+ }
+ }
+ }
+ }
+
+ // If no import decl found, add one after the last import.
+ if impDecl == nil {
+ impDecl = &ast.GenDecl{
+ Tok: token.IMPORT,
+ }
+ if lastImport >= 0 {
+ impDecl.TokPos = f.Decls[lastImport].End()
+ } else {
+ // There are no existing imports.
+ // Our new import goes after the package declaration and after
+ // the comment, if any, that starts on the same line as the
+ // package declaration.
+ impDecl.TokPos = f.Package
+
+ file := fset.File(f.Package)
+ pkgLine := file.Line(f.Package)
+ for _, c := range f.Comments {
+ if file.Line(c.Pos()) > pkgLine {
+ break
+ }
+ impDecl.TokPos = c.End()
+ }
+ }
+ f.Decls = append(f.Decls, nil)
+ copy(f.Decls[lastImport+2:], f.Decls[lastImport+1:])
+ f.Decls[lastImport+1] = impDecl
+ }
+
+ // Insert new import at insertAt.
+ insertAt := 0
+ if impIndex >= 0 {
+ // insert after the found import
+ insertAt = impIndex + 1
+ }
+ impDecl.Specs = append(impDecl.Specs, nil)
+ copy(impDecl.Specs[insertAt+1:], impDecl.Specs[insertAt:])
+ impDecl.Specs[insertAt] = newImport
+ pos := impDecl.Pos()
+ if insertAt > 0 {
+ // If there is a comment after an existing import, preserve the comment
+ // position by adding the new import after the comment.
+ if spec, ok := impDecl.Specs[insertAt-1].(*ast.ImportSpec); ok && spec.Comment != nil {
+ pos = spec.Comment.End()
+ } else {
+ // Assign same position as the previous import,
+ // so that the sorter sees it as being in the same block.
+ pos = impDecl.Specs[insertAt-1].Pos()
+ }
+ }
+ if newImport.Name != nil {
+ newImport.Name.NamePos = pos
+ }
+ newImport.Path.ValuePos = pos
+ newImport.EndPos = pos
+
+ // Clean up parens. impDecl contains at least one spec.
+ if len(impDecl.Specs) == 1 {
+ // Remove unneeded parens.
+ impDecl.Lparen = token.NoPos
+ } else if !impDecl.Lparen.IsValid() {
+ // impDecl needs parens added.
+ impDecl.Lparen = impDecl.Specs[0].Pos()
+ }
+
+ f.Imports = append(f.Imports, newImport)
+
+ if len(f.Decls) <= 1 {
+ return true
+ }
+
+ // Merge all the import declarations into the first one.
+ var first *ast.GenDecl
+ for i := 0; i < len(f.Decls); i++ {
+ decl := f.Decls[i]
+ gen, ok := decl.(*ast.GenDecl)
+ if !ok || gen.Tok != token.IMPORT || declImports(gen, "C") {
+ continue
+ }
+ if first == nil {
+ first = gen
+ continue // Don't touch the first one.
+ }
+ // We now know there is more than one package in this import
+ // declaration. Ensure that it ends up parenthesized.
+ first.Lparen = first.Pos()
+ // Move the imports of the other import declaration to the first one.
+ for _, spec := range gen.Specs {
+ spec.(*ast.ImportSpec).Path.ValuePos = first.Pos()
+ first.Specs = append(first.Specs, spec)
+ }
+ f.Decls = append(f.Decls[:i], f.Decls[i+1:]...)
+ i--
+ }
+
+ return true
+}
+
+// DeleteImport deletes the import path from the file f, if present.
+func DeleteImport(fset *token.FileSet, f *ast.File, path string) (deleted bool) {
+ return DeleteNamedImport(fset, f, "", path)
+}
+
+// DeleteNamedImport deletes the import with the given name and path from the file f, if present.
+func DeleteNamedImport(fset *token.FileSet, f *ast.File, name, path string) (deleted bool) {
+ var delspecs []*ast.ImportSpec
+ var delcomments []*ast.CommentGroup
+
+ // Find the import nodes that import path, if any.
+ for i := 0; i < len(f.Decls); i++ {
+ decl := f.Decls[i]
+ gen, ok := decl.(*ast.GenDecl)
+ if !ok || gen.Tok != token.IMPORT {
+ continue
+ }
+ for j := 0; j < len(gen.Specs); j++ {
+ spec := gen.Specs[j]
+ impspec := spec.(*ast.ImportSpec)
+ if impspec.Name == nil && name != "" {
+ continue
+ }
+ if impspec.Name != nil && impspec.Name.Name != name {
+ continue
+ }
+ if importPath(impspec) != path {
+ continue
+ }
+
+ // We found an import spec that imports path.
+ // Delete it.
+ delspecs = append(delspecs, impspec)
+ deleted = true
+ copy(gen.Specs[j:], gen.Specs[j+1:])
+ gen.Specs = gen.Specs[:len(gen.Specs)-1]
+
+ // If this was the last import spec in this decl,
+ // delete the decl, too.
+ if len(gen.Specs) == 0 {
+ copy(f.Decls[i:], f.Decls[i+1:])
+ f.Decls = f.Decls[:len(f.Decls)-1]
+ i--
+ break
+ } else if len(gen.Specs) == 1 {
+ if impspec.Doc != nil {
+ delcomments = append(delcomments, impspec.Doc)
+ }
+ if impspec.Comment != nil {
+ delcomments = append(delcomments, impspec.Comment)
+ }
+ for _, cg := range f.Comments {
+ // Found comment on the same line as the import spec.
+ if cg.End() < impspec.Pos() && fset.Position(cg.End()).Line == fset.Position(impspec.Pos()).Line {
+ delcomments = append(delcomments, cg)
+ break
+ }
+ }
+
+ spec := gen.Specs[0].(*ast.ImportSpec)
+
+ // Move the documentation right after the import decl.
+ if spec.Doc != nil {
+ for fset.Position(gen.TokPos).Line+1 < fset.Position(spec.Doc.Pos()).Line {
+ fset.File(gen.TokPos).MergeLine(fset.Position(gen.TokPos).Line)
+ }
+ }
+ for _, cg := range f.Comments {
+ if cg.End() < spec.Pos() && fset.Position(cg.End()).Line == fset.Position(spec.Pos()).Line {
+ for fset.Position(gen.TokPos).Line+1 < fset.Position(spec.Pos()).Line {
+ fset.File(gen.TokPos).MergeLine(fset.Position(gen.TokPos).Line)
+ }
+ break
+ }
+ }
+ }
+ if j > 0 {
+ lastImpspec := gen.Specs[j-1].(*ast.ImportSpec)
+ lastLine := fset.Position(lastImpspec.Path.ValuePos).Line
+ line := fset.Position(impspec.Path.ValuePos).Line
+
+ // We deleted an entry but now there may be
+ // a blank line-sized hole where the import was.
+ if line-lastLine > 1 {
+ // There was a blank line immediately preceding the deleted import,
+ // so there's no need to close the hole.
+ // Do nothing.
+ } else {
+ // There was no blank line. Close the hole.
+ fset.File(gen.Rparen).MergeLine(line)
+ }
+ }
+ j--
+ }
+ }
+
+ // Delete imports from f.Imports.
+ for i := 0; i < len(f.Imports); i++ {
+ imp := f.Imports[i]
+ for j, del := range delspecs {
+ if imp == del {
+ copy(f.Imports[i:], f.Imports[i+1:])
+ f.Imports = f.Imports[:len(f.Imports)-1]
+ copy(delspecs[j:], delspecs[j+1:])
+ delspecs = delspecs[:len(delspecs)-1]
+ i--
+ break
+ }
+ }
+ }
+
+ // Delete comments from f.Comments.
+ for i := 0; i < len(f.Comments); i++ {
+ cg := f.Comments[i]
+ for j, del := range delcomments {
+ if cg == del {
+ copy(f.Comments[i:], f.Comments[i+1:])
+ f.Comments = f.Comments[:len(f.Comments)-1]
+ copy(delcomments[j:], delcomments[j+1:])
+ delcomments = delcomments[:len(delcomments)-1]
+ i--
+ break
+ }
+ }
+ }
+
+ if len(delspecs) > 0 {
+ panic(fmt.Sprintf("deleted specs from Decls but not Imports: %v", delspecs))
+ }
+
+ return
+}
+
+// RewriteImport rewrites any import of path oldPath to path newPath.
+func RewriteImport(fset *token.FileSet, f *ast.File, oldPath, newPath string) (rewrote bool) {
+ for _, imp := range f.Imports {
+ if importPath(imp) == oldPath {
+ rewrote = true
+ // record old End, because the default is to compute
+ // it using the length of imp.Path.Value.
+ imp.EndPos = imp.End()
+ imp.Path.Value = strconv.Quote(newPath)
+ }
+ }
+ return
+}
+
+// UsesImport reports whether a given import is used.
+func UsesImport(f *ast.File, path string) (used bool) {
+ spec := importSpec(f, path)
+ if spec == nil {
+ return
+ }
+
+ name := spec.Name.String()
+ switch name {
+ case "":
+ // If the package name is not explicitly specified,
+ // make an educated guess. This is not guaranteed to be correct.
+ lastSlash := strings.LastIndex(path, "/")
+ if lastSlash == -1 {
+ name = path
+ } else {
+ name = path[lastSlash+1:]
+ }
+ case "_", ".":
+ // Not sure if this import is used - err on the side of caution.
+ return true
+ }
+
+ ast.Walk(visitFn(func(n ast.Node) {
+ sel, ok := n.(*ast.SelectorExpr)
+ if ok && isTopName(sel.X, name) {
+ used = true
+ }
+ }), f)
+
+ return
+}
+
+type visitFn func(node ast.Node)
+
+func (fn visitFn) Visit(node ast.Node) ast.Visitor {
+ fn(node)
+ return fn
+}
+
+// imports returns true if f imports path.
+func imports(f *ast.File, path string) bool {
+ return importSpec(f, path) != nil
+}
+
+// importSpec returns the import spec if f imports path,
+// or nil otherwise.
+func importSpec(f *ast.File, path string) *ast.ImportSpec {
+ for _, s := range f.Imports {
+ if importPath(s) == path {
+ return s
+ }
+ }
+ return nil
+}
+
+// importPath returns the unquoted import path of s,
+// or "" if the path is not properly quoted.
+func importPath(s *ast.ImportSpec) string {
+ t, err := strconv.Unquote(s.Path.Value)
+ if err == nil {
+ return t
+ }
+ return ""
+}
+
+// declImports reports whether gen contains an import of path.
+func declImports(gen *ast.GenDecl, path string) bool {
+ if gen.Tok != token.IMPORT {
+ return false
+ }
+ for _, spec := range gen.Specs {
+ impspec := spec.(*ast.ImportSpec)
+ if importPath(impspec) == path {
+ return true
+ }
+ }
+ return false
+}
+
+// matchLen returns the length of the longest path segment prefix shared by x and y.
+func matchLen(x, y string) int {
+ n := 0
+ for i := 0; i < len(x) && i < len(y) && x[i] == y[i]; i++ {
+ if x[i] == '/' {
+ n++
+ }
+ }
+ return n
+}
+
+// isTopName returns true if n is a top-level unresolved identifier with the given name.
+func isTopName(n ast.Expr, name string) bool {
+ id, ok := n.(*ast.Ident)
+ return ok && id.Name == name && id.Obj == nil
+}
+
+// Imports returns the file imports grouped by paragraph.
+func Imports(fset *token.FileSet, f *ast.File) [][]*ast.ImportSpec {
+ var groups [][]*ast.ImportSpec
+
+ for _, decl := range f.Decls {
+ genDecl, ok := decl.(*ast.GenDecl)
+ if !ok || genDecl.Tok != token.IMPORT {
+ break
+ }
+
+ group := []*ast.ImportSpec{}
+
+ var lastLine int
+ for _, spec := range genDecl.Specs {
+ importSpec := spec.(*ast.ImportSpec)
+ pos := importSpec.Path.ValuePos
+ line := fset.Position(pos).Line
+ if lastLine > 0 && pos > 0 && line-lastLine > 1 {
+ groups = append(groups, group)
+ group = []*ast.ImportSpec{}
+ }
+ group = append(group, importSpec)
+ lastLine = line
+ }
+ groups = append(groups, group)
+ }
+
+ return groups
+}
diff --git a/vendor/golang.org/x/tools/go/ast/astutil/imports_test.go b/vendor/golang.org/x/tools/go/ast/astutil/imports_test.go
new file mode 100644
index 00000000..cb12a290
--- /dev/null
+++ b/vendor/golang.org/x/tools/go/ast/astutil/imports_test.go
@@ -0,0 +1,1714 @@
+// Copyright 2013 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package astutil
+
+import (
+ "bytes"
+ "go/ast"
+ "go/format"
+ "go/parser"
+ "go/token"
+ "reflect"
+ "strconv"
+ "testing"
+)
+
+var fset = token.NewFileSet()
+
+func parse(t *testing.T, name, in string) *ast.File {
+ file, err := parser.ParseFile(fset, name, in, parser.ParseComments)
+ if err != nil {
+ t.Fatalf("%s parse: %v", name, err)
+ }
+ return file
+}
+
+func print(t *testing.T, name string, f *ast.File) string {
+ var buf bytes.Buffer
+ if err := format.Node(&buf, fset, f); err != nil {
+ t.Fatalf("%s gofmt: %v", name, err)
+ }
+ return string(buf.Bytes())
+}
+
+type test struct {
+ name string
+ renamedPkg string
+ pkg string
+ in string
+ out string
+ broken bool // known broken
+}
+
+var addTests = []test{
+ {
+ name: "leave os alone",
+ pkg: "os",
+ in: `package main
+
+import (
+ "os"
+)
+`,
+ out: `package main
+
+import (
+ "os"
+)
+`,
+ },
+ {
+ name: "import.1",
+ pkg: "os",
+ in: `package main
+`,
+ out: `package main
+
+import "os"
+`,
+ },
+ {
+ name: "import.2",
+ pkg: "os",
+ in: `package main
+
+// Comment
+import "C"
+`,
+ out: `package main
+
+// Comment
+import "C"
+import "os"
+`,
+ },
+ {
+ name: "import.3",
+ pkg: "os",
+ in: `package main
+
+// Comment
+import "C"
+
+import (
+ "io"
+ "utf8"
+)
+`,
+ out: `package main
+
+// Comment
+import "C"
+
+import (
+ "io"
+ "os"
+ "utf8"
+)
+`,
+ },
+ {
+ name: "import.17",
+ pkg: "x/y/z",
+ in: `package main
+
+// Comment
+import "C"
+
+import (
+ "a"
+ "b"
+
+ "x/w"
+
+ "d/f"
+)
+`,
+ out: `package main
+
+// Comment
+import "C"
+
+import (
+ "a"
+ "b"
+
+ "x/w"
+ "x/y/z"
+
+ "d/f"
+)
+`,
+ },
+ {
+ name: "import into singular group",
+ pkg: "bytes",
+ in: `package main
+
+import "os"
+
+`,
+ out: `package main
+
+import (
+ "bytes"
+ "os"
+)
+`,
+ },
+ {
+ name: "import into singular group with comment",
+ pkg: "bytes",
+ in: `package main
+
+import /* why */ /* comment here? */ "os"
+
+`,
+ out: `package main
+
+import /* why */ /* comment here? */ (
+ "bytes"
+ "os"
+)
+`,
+ },
+ {
+ name: "import into group with leading comment",
+ pkg: "strings",
+ in: `package main
+
+import (
+ // comment before bytes
+ "bytes"
+ "os"
+)
+
+`,
+ out: `package main
+
+import (
+ // comment before bytes
+ "bytes"
+ "os"
+ "strings"
+)
+`,
+ },
+ {
+ name: "",
+ renamedPkg: "fmtpkg",
+ pkg: "fmt",
+ in: `package main
+
+import "os"
+
+`,
+ out: `package main
+
+import (
+ fmtpkg "fmt"
+ "os"
+)
+`,
+ },
+ {
+ name: "struct comment",
+ pkg: "time",
+ in: `package main
+
+// This is a comment before a struct.
+type T struct {
+ t time.Time
+}
+`,
+ out: `package main
+
+import "time"
+
+// This is a comment before a struct.
+type T struct {
+ t time.Time
+}
+`,
+ },
+ {
+ name: "issue 8729 import C",
+ pkg: "time",
+ in: `package main
+
+import "C"
+
+// comment
+type T time.Time
+`,
+ out: `package main
+
+import "C"
+import "time"
+
+// comment
+type T time.Time
+`,
+ },
+ {
+ name: "issue 8729 empty import",
+ pkg: "time",
+ in: `package main
+
+import ()
+
+// comment
+type T time.Time
+`,
+ out: `package main
+
+import "time"
+
+// comment
+type T time.Time
+`,
+ },
+ {
+ name: "issue 8729 comment on package line",
+ pkg: "time",
+ in: `package main // comment
+
+type T time.Time
+`,
+ out: `package main // comment
+import "time"
+
+type T time.Time
+`,
+ },
+ {
+ name: "issue 8729 comment after package",
+ pkg: "time",
+ in: `package main
+// comment
+
+type T time.Time
+`,
+ out: `package main
+
+import "time"
+
+// comment
+
+type T time.Time
+`,
+ },
+ {
+ name: "issue 8729 comment before and on package line",
+ pkg: "time",
+ in: `// comment before
+package main // comment on
+
+type T time.Time
+`,
+ out: `// comment before
+package main // comment on
+import "time"
+
+type T time.Time
+`,
+ },
+
+ // Issue 9961: Match prefixes using path segments rather than bytes
+ {
+ name: "issue 9961",
+ pkg: "regexp",
+ in: `package main
+
+import (
+ "flag"
+ "testing"
+
+ "rsc.io/p"
+)
+`,
+ out: `package main
+
+import (
+ "flag"
+ "regexp"
+ "testing"
+
+ "rsc.io/p"
+)
+`,
+ },
+ // Issue 10337: Preserve comment position
+ {
+ name: "issue 10337",
+ pkg: "fmt",
+ in: `package main
+
+import (
+ "bytes" // a
+ "log" // c
+)
+`,
+ out: `package main
+
+import (
+ "bytes" // a
+ "fmt"
+ "log" // c
+)
+`,
+ },
+ {
+ name: "issue 10337 new import at the start",
+ pkg: "bytes",
+ in: `package main
+
+import (
+ "fmt" // b
+ "log" // c
+)
+`,
+ out: `package main
+
+import (
+ "bytes"
+ "fmt" // b
+ "log" // c
+)
+`,
+ },
+ {
+ name: "issue 10337 new import at the end",
+ pkg: "log",
+ in: `package main
+
+import (
+ "bytes" // a
+ "fmt" // b
+)
+`,
+ out: `package main
+
+import (
+ "bytes" // a
+ "fmt" // b
+ "log"
+)
+`,
+ },
+ // Issue 14075: Merge import declarations
+ {
+ name: "issue 14075",
+ pkg: "bufio",
+ in: `package main
+
+import "bytes"
+import "fmt"
+`,
+ out: `package main
+
+import (
+ "bufio"
+ "bytes"
+ "fmt"
+)
+`,
+ },
+ {
+ name: "issue 14075 update position",
+ pkg: "bufio",
+ in: `package main
+
+import "bytes"
+import (
+ "fmt"
+)
+`,
+ out: `package main
+
+import (
+ "bufio"
+ "bytes"
+ "fmt"
+)
+`,
+ },
+ {
+ name: `issue 14075 ignore import "C"`,
+ pkg: "bufio",
+ in: `package main
+
+// Comment
+import "C"
+
+import "bytes"
+import "fmt"
+`,
+ out: `package main
+
+// Comment
+import "C"
+
+import (
+ "bufio"
+ "bytes"
+ "fmt"
+)
+`,
+ },
+ {
+ name: `issue 14075 ignore adjacent import "C"`,
+ pkg: "bufio",
+ in: `package main
+
+// Comment
+import "C"
+import "fmt"
+`,
+ out: `package main
+
+// Comment
+import "C"
+import (
+ "bufio"
+ "fmt"
+)
+`,
+ },
+ {
+ name: `issue 14075 ignore adjacent import "C" (without factored import)`,
+ pkg: "bufio",
+ in: `package main
+
+// Comment
+import "C"
+import "fmt"
+`,
+ out: `package main
+
+// Comment
+import "C"
+import (
+ "bufio"
+ "fmt"
+)
+`,
+ },
+ {
+ name: `issue 14075 ignore single import "C"`,
+ pkg: "bufio",
+ in: `package main
+
+// Comment
+import "C"
+`,
+ out: `package main
+
+// Comment
+import "C"
+import "bufio"
+`,
+ },
+ {
+ name: `issue 17212 several single-import lines with shared prefix ending in a slash`,
+ pkg: "net/http",
+ in: `package main
+
+import "bufio"
+import "net/url"
+`,
+ out: `package main
+
+import (
+ "bufio"
+ "net/http"
+ "net/url"
+)
+`,
+ },
+ {
+ name: `issue 17212 block imports lines with shared prefix ending in a slash`,
+ pkg: "net/http",
+ in: `package main
+
+import (
+ "bufio"
+ "net/url"
+)
+`,
+ out: `package main
+
+import (
+ "bufio"
+ "net/http"
+ "net/url"
+)
+`,
+ },
+ {
+ name: `issue 17213 many single-import lines`,
+ pkg: "fmt",
+ in: `package main
+
+import "bufio"
+import "bytes"
+import "errors"
+`,
+ out: `package main
+
+import (
+ "bufio"
+ "bytes"
+ "errors"
+ "fmt"
+)
+`,
+ },
+}
+
+func TestAddImport(t *testing.T) {
+ for _, test := range addTests {
+ file := parse(t, test.name, test.in)
+ var before bytes.Buffer
+ ast.Fprint(&before, fset, file, nil)
+ AddNamedImport(fset, file, test.renamedPkg, test.pkg)
+ if got := print(t, test.name, file); got != test.out {
+ if test.broken {
+ t.Logf("%s is known broken:\ngot: %s\nwant: %s", test.name, got, test.out)
+ } else {
+ t.Errorf("%s:\ngot: %s\nwant: %s", test.name, got, test.out)
+ }
+ var after bytes.Buffer
+ ast.Fprint(&after, fset, file, nil)
+
+ t.Logf("AST before:\n%s\nAST after:\n%s\n", before.String(), after.String())
+ }
+ }
+}
+
+func TestDoubleAddImport(t *testing.T) {
+ file := parse(t, "doubleimport", "package main\n")
+ AddImport(fset, file, "os")
+ AddImport(fset, file, "bytes")
+ want := `package main
+
+import (
+ "bytes"
+ "os"
+)
+`
+ if got := print(t, "doubleimport", file); got != want {
+ t.Errorf("got: %s\nwant: %s", got, want)
+ }
+}
+
+func TestDoubleAddNamedImport(t *testing.T) {
+ file := parse(t, "doublenamedimport", "package main\n")
+ AddNamedImport(fset, file, "o", "os")
+ AddNamedImport(fset, file, "i", "io")
+ want := `package main
+
+import (
+ i "io"
+ o "os"
+)
+`
+ if got := print(t, "doublenamedimport", file); got != want {
+ t.Errorf("got: %s\nwant: %s", got, want)
+ }
+}
+
+// Part of issue 8729.
+func TestDoubleAddImportWithDeclComment(t *testing.T) {
+ file := parse(t, "doubleimport", `package main
+
+import (
+)
+
+// comment
+type I int
+`)
+ // The AddImport order here matters.
+ AddImport(fset, file, "golang.org/x/tools/go/ast/astutil")
+ AddImport(fset, file, "os")
+ want := `package main
+
+import (
+ "golang.org/x/tools/go/ast/astutil"
+ "os"
+)
+
+// comment
+type I int
+`
+ if got := print(t, "doubleimport_with_decl_comment", file); got != want {
+ t.Errorf("got: %s\nwant: %s", got, want)
+ }
+}
+
+var deleteTests = []test{
+ {
+ name: "import.4",
+ pkg: "os",
+ in: `package main
+
+import (
+ "os"
+)
+`,
+ out: `package main
+`,
+ },
+ {
+ name: "import.5",
+ pkg: "os",
+ in: `package main
+
+// Comment
+import "C"
+import "os"
+`,
+ out: `package main
+
+// Comment
+import "C"
+`,
+ },
+ {
+ name: "import.6",
+ pkg: "os",
+ in: `package main
+
+// Comment
+import "C"
+
+import (
+ "io"
+ "os"
+ "utf8"
+)
+`,
+ out: `package main
+
+// Comment
+import "C"
+
+import (
+ "io"
+ "utf8"
+)
+`,
+ },
+ {
+ name: "import.7",
+ pkg: "io",
+ in: `package main
+
+import (
+ "io" // a
+ "os" // b
+ "utf8" // c
+)
+`,
+ out: `package main
+
+import (
+ // a
+ "os" // b
+ "utf8" // c
+)
+`,
+ },
+ {
+ name: "import.8",
+ pkg: "os",
+ in: `package main
+
+import (
+ "io" // a
+ "os" // b
+ "utf8" // c
+)
+`,
+ out: `package main
+
+import (
+ "io" // a
+ // b
+ "utf8" // c
+)
+`,
+ },
+ {
+ name: "import.9",
+ pkg: "utf8",
+ in: `package main
+
+import (
+ "io" // a
+ "os" // b
+ "utf8" // c
+)
+`,
+ out: `package main
+
+import (
+ "io" // a
+ "os" // b
+ // c
+)
+`,
+ },
+ {
+ name: "import.10",
+ pkg: "io",
+ in: `package main
+
+import (
+ "io"
+ "os"
+ "utf8"
+)
+`,
+ out: `package main
+
+import (
+ "os"
+ "utf8"
+)
+`,
+ },
+ {
+ name: "import.11",
+ pkg: "os",
+ in: `package main
+
+import (
+ "io"
+ "os"
+ "utf8"
+)
+`,
+ out: `package main
+
+import (
+ "io"
+ "utf8"
+)
+`,
+ },
+ {
+ name: "import.12",
+ pkg: "utf8",
+ in: `package main
+
+import (
+ "io"
+ "os"
+ "utf8"
+)
+`,
+ out: `package main
+
+import (
+ "io"
+ "os"
+)
+`,
+ },
+ {
+ name: "handle.raw.quote.imports",
+ pkg: "os",
+ in: "package main\n\nimport `os`",
+ out: `package main
+`,
+ },
+ {
+ name: "import.13",
+ pkg: "io",
+ in: `package main
+
+import (
+ "fmt"
+
+ "io"
+ "os"
+ "utf8"
+
+ "go/format"
+)
+`,
+ out: `package main
+
+import (
+ "fmt"
+
+ "os"
+ "utf8"
+
+ "go/format"
+)
+`,
+ },
+ {
+ name: "import.14",
+ pkg: "io",
+ in: `package main
+
+import (
+ "fmt" // a
+
+ "io" // b
+ "os" // c
+ "utf8" // d
+
+ "go/format" // e
+)
+`,
+ out: `package main
+
+import (
+ "fmt" // a
+
+ // b
+ "os" // c
+ "utf8" // d
+
+ "go/format" // e
+)
+`,
+ },
+ {
+ name: "import.15",
+ pkg: "double",
+ in: `package main
+
+import (
+ "double"
+ "double"
+)
+`,
+ out: `package main
+`,
+ },
+ {
+ name: "import.16",
+ pkg: "bubble",
+ in: `package main
+
+import (
+ "toil"
+ "bubble"
+ "bubble"
+ "trouble"
+)
+`,
+ out: `package main
+
+import (
+ "toil"
+ "trouble"
+)
+`,
+ },
+ {
+ name: "import.17",
+ pkg: "quad",
+ in: `package main
+
+import (
+ "quad"
+ "quad"
+)
+
+import (
+ "quad"
+ "quad"
+)
+`,
+ out: `package main
+`,
+ },
+ {
+ name: "import.18",
+ renamedPkg: "x",
+ pkg: "fmt",
+ in: `package main
+
+import (
+ "fmt"
+ x "fmt"
+)
+`,
+ out: `package main
+
+import (
+ "fmt"
+)
+`,
+ },
+ {
+ name: "import.18",
+ renamedPkg: "x",
+ pkg: "fmt",
+ in: `package main
+
+import x "fmt"
+import y "fmt"
+`,
+ out: `package main
+
+import y "fmt"
+`,
+ },
+ // Issue #15432, #18051
+ {
+ name: "import.19",
+ pkg: "fmt",
+ in: `package main
+
+import (
+ "fmt"
+
+ // Some comment.
+ "io"
+)`,
+ out: `package main
+
+import (
+ // Some comment.
+ "io"
+)
+`,
+ },
+ {
+ name: "import.20",
+ pkg: "fmt",
+ in: `package main
+
+import (
+ "fmt"
+
+ // Some
+ // comment.
+ "io"
+)`,
+ out: `package main
+
+import (
+ // Some
+ // comment.
+ "io"
+)
+`,
+ },
+ {
+ name: "import.21",
+ pkg: "fmt",
+ in: `package main
+
+import (
+ "fmt"
+
+ /*
+ Some
+ comment.
+ */
+ "io"
+)`,
+ out: `package main
+
+import (
+ /*
+ Some
+ comment.
+ */
+ "io"
+)
+`,
+ },
+ {
+ name: "import.22",
+ pkg: "fmt",
+ in: `package main
+
+import (
+ /* Some */
+ // comment.
+ "io"
+ "fmt"
+)`,
+ out: `package main
+
+import (
+ /* Some */
+ // comment.
+ "io"
+)
+`,
+ },
+ {
+ name: "import.23",
+ pkg: "fmt",
+ in: `package main
+
+import (
+ // comment 1
+ "fmt"
+ // comment 2
+ "io"
+)`,
+ out: `package main
+
+import (
+ // comment 2
+ "io"
+)
+`,
+ },
+ {
+ name: "import.24",
+ pkg: "fmt",
+ in: `package main
+
+import (
+ "fmt" // comment 1
+ "io" // comment 2
+)`,
+ out: `package main
+
+import (
+ "io" // comment 2
+)
+`,
+ },
+ {
+ name: "import.25",
+ pkg: "fmt",
+ in: `package main
+
+import (
+ "fmt"
+ /* comment */ "io"
+)`,
+ out: `package main
+
+import (
+ /* comment */ "io"
+)
+`,
+ },
+ {
+ name: "import.26",
+ pkg: "fmt",
+ in: `package main
+
+import (
+ "fmt"
+ "io" /* comment */
+)`,
+ out: `package main
+
+import (
+ "io" /* comment */
+)
+`,
+ },
+ {
+ name: "import.27",
+ pkg: "fmt",
+ in: `package main
+
+import (
+ "fmt" /* comment */
+ "io"
+)`,
+ out: `package main
+
+import (
+ "io"
+)
+`,
+ },
+ {
+ name: "import.28",
+ pkg: "fmt",
+ in: `package main
+
+import (
+ /* comment */ "fmt"
+ "io"
+)`,
+ out: `package main
+
+import (
+ "io"
+)
+`,
+ },
+ {
+ name: "import.29",
+ pkg: "fmt",
+ in: `package main
+
+// comment 1
+import (
+ "fmt"
+ "io" // comment 2
+)`,
+ out: `package main
+
+// comment 1
+import (
+ "io" // comment 2
+)
+`,
+ },
+ {
+ name: "import.30",
+ pkg: "fmt",
+ in: `package main
+
+// comment 1
+import (
+ "fmt" // comment 2
+ "io"
+)`,
+ out: `package main
+
+// comment 1
+import (
+ "io"
+)
+`,
+ },
+ {
+ name: "import.31",
+ pkg: "fmt",
+ in: `package main
+
+// comment 1
+import (
+ "fmt"
+ /* comment 2 */ "io"
+)`,
+ out: `package main
+
+// comment 1
+import (
+ /* comment 2 */ "io"
+)
+`,
+ },
+ {
+ name: "import.32",
+ pkg: "fmt",
+ renamedPkg: "f",
+ in: `package main
+
+// comment 1
+import (
+ f "fmt"
+ /* comment 2 */ i "io"
+)`,
+ out: `package main
+
+// comment 1
+import (
+ /* comment 2 */ i "io"
+)
+`,
+ },
+ {
+ name: "import.33",
+ pkg: "fmt",
+ renamedPkg: "f",
+ in: `package main
+
+// comment 1
+import (
+ /* comment 2 */ f "fmt"
+ i "io"
+)`,
+ out: `package main
+
+// comment 1
+import (
+ i "io"
+)
+`,
+ },
+ {
+ name: "import.34",
+ pkg: "fmt",
+ renamedPkg: "f",
+ in: `package main
+
+// comment 1
+import (
+ f "fmt" /* comment 2 */
+ i "io"
+)`,
+ out: `package main
+
+// comment 1
+import (
+ i "io"
+)
+`,
+ },
+ {
+ name: "import.35",
+ pkg: "fmt",
+ in: `package main
+
+// comment 1
+import (
+ "fmt"
+ // comment 2
+ "io"
+)`,
+ out: `package main
+
+// comment 1
+import (
+ // comment 2
+ "io"
+)
+`,
+ },
+ {
+ name: "import.36",
+ pkg: "fmt",
+ in: `package main
+
+/* comment 1 */
+import (
+ "fmt"
+ /* comment 2 */
+ "io"
+)`,
+ out: `package main
+
+/* comment 1 */
+import (
+ /* comment 2 */
+ "io"
+)
+`,
+ },
+}
+
+func TestDeleteImport(t *testing.T) {
+ for _, test := range deleteTests {
+ file := parse(t, test.name, test.in)
+ DeleteNamedImport(fset, file, test.renamedPkg, test.pkg)
+ if got := print(t, test.name, file); got != test.out {
+ t.Errorf("%s:\ngot: %s\nwant: %s", test.name, got, test.out)
+ }
+ }
+}
+
+type rewriteTest struct {
+ name string
+ srcPkg string
+ dstPkg string
+ in string
+ out string
+}
+
+var rewriteTests = []rewriteTest{
+ {
+ name: "import.13",
+ srcPkg: "utf8",
+ dstPkg: "encoding/utf8",
+ in: `package main
+
+import (
+ "io"
+ "os"
+ "utf8" // thanks ken
+)
+`,
+ out: `package main
+
+import (
+ "encoding/utf8" // thanks ken
+ "io"
+ "os"
+)
+`,
+ },
+ {
+ name: "import.14",
+ srcPkg: "asn1",
+ dstPkg: "encoding/asn1",
+ in: `package main
+
+import (
+ "asn1"
+ "crypto"
+ "crypto/rsa"
+ _ "crypto/sha1"
+ "crypto/x509"
+ "crypto/x509/pkix"
+ "time"
+)
+
+var x = 1
+`,
+ out: `package main
+
+import (
+ "crypto"
+ "crypto/rsa"
+ _ "crypto/sha1"
+ "crypto/x509"
+ "crypto/x509/pkix"
+ "encoding/asn1"
+ "time"
+)
+
+var x = 1
+`,
+ },
+ {
+ name: "import.15",
+ srcPkg: "url",
+ dstPkg: "net/url",
+ in: `package main
+
+import (
+ "bufio"
+ "net"
+ "path"
+ "url"
+)
+
+var x = 1 // comment on x, not on url
+`,
+ out: `package main
+
+import (
+ "bufio"
+ "net"
+ "net/url"
+ "path"
+)
+
+var x = 1 // comment on x, not on url
+`,
+ },
+ {
+ name: "import.16",
+ srcPkg: "http",
+ dstPkg: "net/http",
+ in: `package main
+
+import (
+ "flag"
+ "http"
+ "log"
+ "text/template"
+)
+
+var addr = flag.String("addr", ":1718", "http service address") // Q=17, R=18
+`,
+ out: `package main
+
+import (
+ "flag"
+ "log"
+ "net/http"
+ "text/template"
+)
+
+var addr = flag.String("addr", ":1718", "http service address") // Q=17, R=18
+`,
+ },
+}
+
+func TestRewriteImport(t *testing.T) {
+ for _, test := range rewriteTests {
+ file := parse(t, test.name, test.in)
+ RewriteImport(fset, file, test.srcPkg, test.dstPkg)
+ if got := print(t, test.name, file); got != test.out {
+ t.Errorf("%s:\ngot: %s\nwant: %s", test.name, got, test.out)
+ }
+ }
+}
+
+var importsTests = []struct {
+ name string
+ in string
+ want [][]string
+}{
+ {
+ name: "no packages",
+ in: `package foo
+`,
+ want: nil,
+ },
+ {
+ name: "one group",
+ in: `package foo
+
+import (
+ "fmt"
+ "testing"
+)
+`,
+ want: [][]string{{"fmt", "testing"}},
+ },
+ {
+ name: "four groups",
+ in: `package foo
+
+import "C"
+import (
+ "fmt"
+ "testing"
+
+ "appengine"
+
+ "myproject/mylib1"
+ "myproject/mylib2"
+)
+`,
+ want: [][]string{
+ {"C"},
+ {"fmt", "testing"},
+ {"appengine"},
+ {"myproject/mylib1", "myproject/mylib2"},
+ },
+ },
+ {
+ name: "multiple factored groups",
+ in: `package foo
+
+import (
+ "fmt"
+ "testing"
+
+ "appengine"
+)
+import (
+ "reflect"
+
+ "bytes"
+)
+`,
+ want: [][]string{
+ {"fmt", "testing"},
+ {"appengine"},
+ {"reflect"},
+ {"bytes"},
+ },
+ },
+}
+
+func unquote(s string) string {
+ res, err := strconv.Unquote(s)
+ if err != nil {
+ return "could_not_unquote"
+ }
+ return res
+}
+
+func TestImports(t *testing.T) {
+ fset := token.NewFileSet()
+ for _, test := range importsTests {
+ f, err := parser.ParseFile(fset, "test.go", test.in, 0)
+ if err != nil {
+ t.Errorf("%s: %v", test.name, err)
+ continue
+ }
+ var got [][]string
+ for _, group := range Imports(fset, f) {
+ var b []string
+ for _, spec := range group {
+ b = append(b, unquote(spec.Path.Value))
+ }
+ got = append(got, b)
+ }
+ if !reflect.DeepEqual(got, test.want) {
+ t.Errorf("Imports(%s)=%v, want %v", test.name, got, test.want)
+ }
+ }
+}
+
+var usesImportTests = []struct {
+ name string
+ path string
+ in string
+ want bool
+}{
+ {
+ name: "no packages",
+ path: "io",
+ in: `package foo
+`,
+ want: false,
+ },
+ {
+ name: "import.1",
+ path: "io",
+ in: `package foo
+
+import "io"
+
+var _ io.Writer
+`,
+ want: true,
+ },
+ {
+ name: "import.2",
+ path: "io",
+ in: `package foo
+
+import "io"
+`,
+ want: false,
+ },
+ {
+ name: "import.3",
+ path: "io",
+ in: `package foo
+
+import "io"
+
+var io = 42
+`,
+ want: false,
+ },
+ {
+ name: "import.4",
+ path: "io",
+ in: `package foo
+
+import i "io"
+
+var _ i.Writer
+`,
+ want: true,
+ },
+ {
+ name: "import.5",
+ path: "io",
+ in: `package foo
+
+import i "io"
+`,
+ want: false,
+ },
+ {
+ name: "import.6",
+ path: "io",
+ in: `package foo
+
+import i "io"
+
+var i = 42
+var io = 42
+`,
+ want: false,
+ },
+ {
+ name: "import.7",
+ path: "encoding/json",
+ in: `package foo
+
+import "encoding/json"
+
+var _ json.Encoder
+`,
+ want: true,
+ },
+ {
+ name: "import.8",
+ path: "encoding/json",
+ in: `package foo
+
+import "encoding/json"
+`,
+ want: false,
+ },
+ {
+ name: "import.9",
+ path: "encoding/json",
+ in: `package foo
+
+import "encoding/json"
+
+var json = 42
+`,
+ want: false,
+ },
+ {
+ name: "import.10",
+ path: "encoding/json",
+ in: `package foo
+
+import j "encoding/json"
+
+var _ j.Encoder
+`,
+ want: true,
+ },
+ {
+ name: "import.11",
+ path: "encoding/json",
+ in: `package foo
+
+import j "encoding/json"
+`,
+ want: false,
+ },
+ {
+ name: "import.12",
+ path: "encoding/json",
+ in: `package foo
+
+import j "encoding/json"
+
+var j = 42
+var json = 42
+`,
+ want: false,
+ },
+ {
+ name: "import.13",
+ path: "io",
+ in: `package foo
+
+import _ "io"
+`,
+ want: true,
+ },
+ {
+ name: "import.14",
+ path: "io",
+ in: `package foo
+
+import . "io"
+`,
+ want: true,
+ },
+}
+
+func TestUsesImport(t *testing.T) {
+ fset := token.NewFileSet()
+ for _, test := range usesImportTests {
+ f, err := parser.ParseFile(fset, "test.go", test.in, 0)
+ if err != nil {
+ t.Errorf("%s: %v", test.name, err)
+ continue
+ }
+ got := UsesImport(f, test.path)
+ if got != test.want {
+ t.Errorf("UsesImport(%s)=%v, want %v", test.name, got, test.want)
+ }
+ }
+}
diff --git a/vendor/golang.org/x/tools/go/ast/astutil/util.go b/vendor/golang.org/x/tools/go/ast/astutil/util.go
new file mode 100644
index 00000000..76306298
--- /dev/null
+++ b/vendor/golang.org/x/tools/go/ast/astutil/util.go
@@ -0,0 +1,14 @@
+package astutil
+
+import "go/ast"
+
+// Unparen returns e with any enclosing parentheses stripped.
+func Unparen(e ast.Expr) ast.Expr {
+ for {
+ p, ok := e.(*ast.ParenExpr)
+ if !ok {
+ return e
+ }
+ e = p.X
+ }
+}
diff --git a/vendor/golang.org/x/tools/go/buildutil/allpackages.go b/vendor/golang.org/x/tools/go/buildutil/allpackages.go
new file mode 100644
index 00000000..c0cb03e7
--- /dev/null
+++ b/vendor/golang.org/x/tools/go/buildutil/allpackages.go
@@ -0,0 +1,198 @@
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Package buildutil provides utilities related to the go/build
+// package in the standard library.
+//
+// All I/O is done via the build.Context file system interface, which must
+// be concurrency-safe.
+package buildutil // import "golang.org/x/tools/go/buildutil"
+
+import (
+ "go/build"
+ "os"
+ "path/filepath"
+ "sort"
+ "strings"
+ "sync"
+)
+
+// AllPackages returns the package path of each Go package in any source
+// directory of the specified build context (e.g. $GOROOT or an element
+// of $GOPATH). Errors are ignored. The results are sorted.
+// All package paths are canonical, and thus may contain "/vendor/".
+//
+// The result may include import paths for directories that contain no
+// *.go files, such as "archive" (in $GOROOT/src).
+//
+// All I/O is done via the build.Context file system interface,
+// which must be concurrency-safe.
+//
+func AllPackages(ctxt *build.Context) []string {
+ var list []string
+ ForEachPackage(ctxt, func(pkg string, _ error) {
+ list = append(list, pkg)
+ })
+ sort.Strings(list)
+ return list
+}
+
+// ForEachPackage calls the found function with the package path of
+// each Go package it finds in any source directory of the specified
+// build context (e.g. $GOROOT or an element of $GOPATH).
+// All package paths are canonical, and thus may contain "/vendor/".
+//
+// If the package directory exists but could not be read, the second
+// argument to the found function provides the error.
+//
+// All I/O is done via the build.Context file system interface,
+// which must be concurrency-safe.
+//
+func ForEachPackage(ctxt *build.Context, found func(importPath string, err error)) {
+ ch := make(chan item)
+
+ var wg sync.WaitGroup
+ for _, root := range ctxt.SrcDirs() {
+ root := root
+ wg.Add(1)
+ go func() {
+ allPackages(ctxt, root, ch)
+ wg.Done()
+ }()
+ }
+ go func() {
+ wg.Wait()
+ close(ch)
+ }()
+
+ // All calls to found occur in the caller's goroutine.
+ for i := range ch {
+ found(i.importPath, i.err)
+ }
+}
+
+type item struct {
+ importPath string
+ err error // (optional)
+}
+
+// We use a process-wide counting semaphore to limit
+// the number of parallel calls to ReadDir.
+var ioLimit = make(chan bool, 20)
+
+func allPackages(ctxt *build.Context, root string, ch chan<- item) {
+ root = filepath.Clean(root) + string(os.PathSeparator)
+
+ var wg sync.WaitGroup
+
+ var walkDir func(dir string)
+ walkDir = func(dir string) {
+ // Avoid .foo, _foo, and testdata directory trees.
+ base := filepath.Base(dir)
+ if base == "" || base[0] == '.' || base[0] == '_' || base == "testdata" {
+ return
+ }
+
+ pkg := filepath.ToSlash(strings.TrimPrefix(dir, root))
+
+ // Prune search if we encounter any of these import paths.
+ switch pkg {
+ case "builtin":
+ return
+ }
+
+ ioLimit <- true
+ files, err := ReadDir(ctxt, dir)
+ <-ioLimit
+ if pkg != "" || err != nil {
+ ch <- item{pkg, err}
+ }
+ for _, fi := range files {
+ fi := fi
+ if fi.IsDir() {
+ wg.Add(1)
+ go func() {
+ walkDir(filepath.Join(dir, fi.Name()))
+ wg.Done()
+ }()
+ }
+ }
+ }
+
+ walkDir(root)
+ wg.Wait()
+}
+
+// ExpandPatterns returns the set of packages matched by patterns,
+// which may have the following forms:
+//
+// golang.org/x/tools/cmd/guru # a single package
+// golang.org/x/tools/... # all packages beneath dir
+// ... # the entire workspace.
+//
+// Order is significant: a pattern preceded by '-' removes matching
+// packages from the set. For example, these patterns match all encoding
+// packages except encoding/xml:
+//
+// encoding/... -encoding/xml
+//
+// A trailing slash in a pattern is ignored. (Path components of Go
+// package names are separated by slash, not the platform's path separator.)
+//
+func ExpandPatterns(ctxt *build.Context, patterns []string) map[string]bool {
+ // TODO(adonovan): support other features of 'go list':
+ // - "std"/"cmd"/"all" meta-packages
+ // - "..." not at the end of a pattern
+ // - relative patterns using "./" or "../" prefix
+
+ pkgs := make(map[string]bool)
+ doPkg := func(pkg string, neg bool) {
+ if neg {
+ delete(pkgs, pkg)
+ } else {
+ pkgs[pkg] = true
+ }
+ }
+
+ // Scan entire workspace if wildcards are present.
+ // TODO(adonovan): opt: scan only the necessary subtrees of the workspace.
+ var all []string
+ for _, arg := range patterns {
+ if strings.HasSuffix(arg, "...") {
+ all = AllPackages(ctxt)
+ break
+ }
+ }
+
+ for _, arg := range patterns {
+ if arg == "" {
+ continue
+ }
+
+ neg := arg[0] == '-'
+ if neg {
+ arg = arg[1:]
+ }
+
+ if arg == "..." {
+ // ... matches all packages
+ for _, pkg := range all {
+ doPkg(pkg, neg)
+ }
+ } else if dir := strings.TrimSuffix(arg, "/..."); dir != arg {
+ // dir/... matches all packages beneath dir
+ for _, pkg := range all {
+ if strings.HasPrefix(pkg, dir) &&
+ (len(pkg) == len(dir) || pkg[len(dir)] == '/') {
+ doPkg(pkg, neg)
+ }
+ }
+ } else {
+ // single package
+ doPkg(strings.TrimSuffix(arg, "/"), neg)
+ }
+ }
+
+ return pkgs
+}
diff --git a/vendor/golang.org/x/tools/go/buildutil/allpackages_test.go b/vendor/golang.org/x/tools/go/buildutil/allpackages_test.go
new file mode 100644
index 00000000..0440ff24
--- /dev/null
+++ b/vendor/golang.org/x/tools/go/buildutil/allpackages_test.go
@@ -0,0 +1,78 @@
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Incomplete source tree on Android.
+
+// +build !android
+
+package buildutil_test
+
+import (
+ "go/build"
+ "sort"
+ "strings"
+ "testing"
+
+ "golang.org/x/tools/go/buildutil"
+)
+
+func TestAllPackages(t *testing.T) {
+ all := buildutil.AllPackages(&build.Default)
+
+ set := make(map[string]bool)
+ for _, pkg := range all {
+ set[pkg] = true
+ }
+
+ const wantAtLeast = 250
+ if len(all) < wantAtLeast {
+ t.Errorf("Found only %d packages, want at least %d", len(all), wantAtLeast)
+ }
+
+ for _, want := range []string{"fmt", "crypto/sha256", "golang.org/x/tools/go/buildutil"} {
+ if !set[want] {
+ t.Errorf("Package %q not found; got %s", want, all)
+ }
+ }
+}
+
+func TestExpandPatterns(t *testing.T) {
+ tree := make(map[string]map[string]string)
+ for _, pkg := range []string{
+ "encoding",
+ "encoding/xml",
+ "encoding/hex",
+ "encoding/json",
+ "fmt",
+ } {
+ tree[pkg] = make(map[string]string)
+ }
+ ctxt := buildutil.FakeContext(tree)
+
+ for _, test := range []struct {
+ patterns string
+ want string
+ }{
+ {"", ""},
+ {"fmt", "fmt"},
+ {"nosuchpkg", "nosuchpkg"},
+ {"nosuchdir/...", ""},
+ {"...", "encoding encoding/hex encoding/json encoding/xml fmt"},
+ {"encoding/... -encoding/xml", "encoding encoding/hex encoding/json"},
+ {"... -encoding/...", "fmt"},
+ {"encoding", "encoding"},
+ {"encoding/", "encoding"},
+ } {
+ var pkgs []string
+ for pkg := range buildutil.ExpandPatterns(ctxt, strings.Fields(test.patterns)) {
+ pkgs = append(pkgs, pkg)
+ }
+ sort.Strings(pkgs)
+ got := strings.Join(pkgs, " ")
+ if got != test.want {
+ t.Errorf("ExpandPatterns(%s) = %s, want %s",
+ test.patterns, got, test.want)
+ }
+ }
+}
diff --git a/vendor/golang.org/x/tools/go/buildutil/fakecontext.go b/vendor/golang.org/x/tools/go/buildutil/fakecontext.go
new file mode 100644
index 00000000..24cbcbea
--- /dev/null
+++ b/vendor/golang.org/x/tools/go/buildutil/fakecontext.go
@@ -0,0 +1,108 @@
+package buildutil
+
+import (
+ "fmt"
+ "go/build"
+ "io"
+ "io/ioutil"
+ "os"
+ "path"
+ "path/filepath"
+ "sort"
+ "strings"
+ "time"
+)
+
+// FakeContext returns a build.Context for the fake file tree specified
+// by pkgs, which maps package import paths to a mapping from file base
+// names to contents.
+//
+// The fake Context has a GOROOT of "/go" and no GOPATH, and overrides
+// the necessary file access methods to read from memory instead of the
+// real file system.
+//
+// Unlike a real file tree, the fake one has only two levels---packages
+// and files---so ReadDir("/go/src/") returns all packages under
+// /go/src/ including, for instance, "math" and "math/big".
+// ReadDir("/go/src/math/big") would return all the files in the
+// "math/big" package.
+//
+func FakeContext(pkgs map[string]map[string]string) *build.Context {
+ clean := func(filename string) string {
+ f := path.Clean(filepath.ToSlash(filename))
+ // Removing "/go/src" while respecting segment
+ // boundaries has this unfortunate corner case:
+ if f == "/go/src" {
+ return ""
+ }
+ return strings.TrimPrefix(f, "/go/src/")
+ }
+
+ ctxt := build.Default // copy
+ ctxt.GOROOT = "/go"
+ ctxt.GOPATH = ""
+ ctxt.IsDir = func(dir string) bool {
+ dir = clean(dir)
+ if dir == "" {
+ return true // needed by (*build.Context).SrcDirs
+ }
+ return pkgs[dir] != nil
+ }
+ ctxt.ReadDir = func(dir string) ([]os.FileInfo, error) {
+ dir = clean(dir)
+ var fis []os.FileInfo
+ if dir == "" {
+ // enumerate packages
+ for importPath := range pkgs {
+ fis = append(fis, fakeDirInfo(importPath))
+ }
+ } else {
+ // enumerate files of package
+ for basename := range pkgs[dir] {
+ fis = append(fis, fakeFileInfo(basename))
+ }
+ }
+ sort.Sort(byName(fis))
+ return fis, nil
+ }
+ ctxt.OpenFile = func(filename string) (io.ReadCloser, error) {
+ filename = clean(filename)
+ dir, base := path.Split(filename)
+ content, ok := pkgs[path.Clean(dir)][base]
+ if !ok {
+ return nil, fmt.Errorf("file not found: %s", filename)
+ }
+ return ioutil.NopCloser(strings.NewReader(content)), nil
+ }
+ ctxt.IsAbsPath = func(path string) bool {
+ path = filepath.ToSlash(path)
+ // Don't rely on the default (filepath.Path) since on
+ // Windows, it reports virtual paths as non-absolute.
+ return strings.HasPrefix(path, "/")
+ }
+ return &ctxt
+}
+
+type byName []os.FileInfo
+
+func (s byName) Len() int { return len(s) }
+func (s byName) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
+func (s byName) Less(i, j int) bool { return s[i].Name() < s[j].Name() }
+
+type fakeFileInfo string
+
+func (fi fakeFileInfo) Name() string { return string(fi) }
+func (fakeFileInfo) Sys() interface{} { return nil }
+func (fakeFileInfo) ModTime() time.Time { return time.Time{} }
+func (fakeFileInfo) IsDir() bool { return false }
+func (fakeFileInfo) Size() int64 { return 0 }
+func (fakeFileInfo) Mode() os.FileMode { return 0644 }
+
+type fakeDirInfo string
+
+func (fd fakeDirInfo) Name() string { return string(fd) }
+func (fakeDirInfo) Sys() interface{} { return nil }
+func (fakeDirInfo) ModTime() time.Time { return time.Time{} }
+func (fakeDirInfo) IsDir() bool { return true }
+func (fakeDirInfo) Size() int64 { return 0 }
+func (fakeDirInfo) Mode() os.FileMode { return 0755 }
diff --git a/vendor/golang.org/x/tools/go/buildutil/overlay.go b/vendor/golang.org/x/tools/go/buildutil/overlay.go
new file mode 100644
index 00000000..3f71c4fe
--- /dev/null
+++ b/vendor/golang.org/x/tools/go/buildutil/overlay.go
@@ -0,0 +1,103 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package buildutil
+
+import (
+ "bufio"
+ "bytes"
+ "fmt"
+ "go/build"
+ "io"
+ "io/ioutil"
+ "path/filepath"
+ "strconv"
+ "strings"
+)
+
+// OverlayContext overlays a build.Context with additional files from
+// a map. Files in the map take precedence over other files.
+//
+// In addition to plain string comparison, two file names are
+// considered equal if their base names match and their directory
+// components point at the same directory on the file system. That is,
+// symbolic links are followed for directories, but not files.
+//
+// A common use case for OverlayContext is to allow editors to pass in
+// a set of unsaved, modified files.
+//
+// Currently, only the Context.OpenFile function will respect the
+// overlay. This may change in the future.
+func OverlayContext(orig *build.Context, overlay map[string][]byte) *build.Context {
+ // TODO(dominikh): Implement IsDir, HasSubdir and ReadDir
+
+ rc := func(data []byte) (io.ReadCloser, error) {
+ return ioutil.NopCloser(bytes.NewBuffer(data)), nil
+ }
+
+ copy := *orig // make a copy
+ ctxt := ©
+ ctxt.OpenFile = func(path string) (io.ReadCloser, error) {
+ // Fast path: names match exactly.
+ if content, ok := overlay[path]; ok {
+ return rc(content)
+ }
+
+ // Slow path: check for same file under a different
+ // alias, perhaps due to a symbolic link.
+ for filename, content := range overlay {
+ if sameFile(path, filename) {
+ return rc(content)
+ }
+ }
+
+ return OpenFile(orig, path)
+ }
+ return ctxt
+}
+
+// ParseOverlayArchive parses an archive containing Go files and their
+// contents. The result is intended to be used with OverlayContext.
+//
+//
+// Archive format
+//
+// The archive consists of a series of files. Each file consists of a
+// name, a decimal file size and the file contents, separated by
+// newlinews. No newline follows after the file contents.
+func ParseOverlayArchive(archive io.Reader) (map[string][]byte, error) {
+ overlay := make(map[string][]byte)
+ r := bufio.NewReader(archive)
+ for {
+ // Read file name.
+ filename, err := r.ReadString('\n')
+ if err != nil {
+ if err == io.EOF {
+ break // OK
+ }
+ return nil, fmt.Errorf("reading archive file name: %v", err)
+ }
+ filename = filepath.Clean(strings.TrimSpace(filename))
+
+ // Read file size.
+ sz, err := r.ReadString('\n')
+ if err != nil {
+ return nil, fmt.Errorf("reading size of archive file %s: %v", filename, err)
+ }
+ sz = strings.TrimSpace(sz)
+ size, err := strconv.ParseUint(sz, 10, 32)
+ if err != nil {
+ return nil, fmt.Errorf("parsing size of archive file %s: %v", filename, err)
+ }
+
+ // Read file content.
+ content := make([]byte, size)
+ if _, err := io.ReadFull(r, content); err != nil {
+ return nil, fmt.Errorf("reading archive file %s: %v", filename, err)
+ }
+ overlay[filename] = content
+ }
+
+ return overlay, nil
+}
diff --git a/vendor/golang.org/x/tools/go/buildutil/overlay_test.go b/vendor/golang.org/x/tools/go/buildutil/overlay_test.go
new file mode 100644
index 00000000..92e2258a
--- /dev/null
+++ b/vendor/golang.org/x/tools/go/buildutil/overlay_test.go
@@ -0,0 +1,70 @@
+package buildutil_test
+
+import (
+ "go/build"
+ "io/ioutil"
+ "reflect"
+ "strings"
+ "testing"
+
+ "golang.org/x/tools/go/buildutil"
+)
+
+func TestParseOverlayArchive(t *testing.T) {
+ var tt = []struct {
+ in string
+ out map[string][]byte
+ hasErr bool
+ }{
+ {
+ "a.go\n5\n12345",
+ map[string][]byte{"a.go": []byte("12345")},
+ false,
+ },
+ {
+ "a.go\n5\n1234",
+ nil,
+ true,
+ },
+ {
+ "a.go\n5\n12345b.go\n4\n1234",
+ map[string][]byte{"a.go": []byte("12345"), "b.go": []byte("1234")},
+ false,
+ },
+ }
+
+ for _, test := range tt {
+ got, err := buildutil.ParseOverlayArchive(strings.NewReader(test.in))
+ if err == nil && test.hasErr {
+ t.Errorf("expected error for %q", test.in)
+ }
+ if err != nil && !test.hasErr {
+ t.Errorf("unexpected error %v for %q", err, test.in)
+ }
+ if !reflect.DeepEqual(got, test.out) {
+ t.Errorf("got %#v, want %#v", got, test.out)
+ }
+ }
+}
+
+func TestOverlay(t *testing.T) {
+ ctx := &build.Default
+ ov := map[string][]byte{
+ "/somewhere/a.go": []byte("file contents"),
+ }
+ names := []string{"/somewhere/a.go", "/somewhere//a.go"}
+ ctx = buildutil.OverlayContext(ctx, ov)
+ for _, name := range names {
+ f, err := buildutil.OpenFile(ctx, name)
+ if err != nil {
+ t.Errorf("unexpected error %v", err)
+ }
+ b, err := ioutil.ReadAll(f)
+ if err != nil {
+ t.Errorf("unexpected error %v", err)
+ }
+ if got, expected := string(b), string(ov["/somewhere/a.go"]); got != expected {
+ t.Errorf("read %q, expected %q", got, expected)
+ }
+ }
+}
diff --git a/vendor/golang.org/x/tools/go/buildutil/tags.go b/vendor/golang.org/x/tools/go/buildutil/tags.go
new file mode 100644
index 00000000..486606f3
--- /dev/null
+++ b/vendor/golang.org/x/tools/go/buildutil/tags.go
@@ -0,0 +1,75 @@
+package buildutil
+
+// This logic was copied from stringsFlag from $GOROOT/src/cmd/go/build.go.
+
+import "fmt"
+
+const TagsFlagDoc = "a list of `build tags` to consider satisfied during the build. " +
+ "For more information about build tags, see the description of " +
+ "build constraints in the documentation for the go/build package"
+
+// TagsFlag is an implementation of the flag.Value and flag.Getter interfaces that parses
+// a flag value in the same manner as go build's -tags flag and
+// populates a []string slice.
+//
+// See $GOROOT/src/go/build/doc.go for description of build tags.
+// See $GOROOT/src/cmd/go/doc.go for description of 'go build -tags' flag.
+//
+// Example:
+// flag.Var((*buildutil.TagsFlag)(&build.Default.BuildTags), "tags", buildutil.TagsFlagDoc)
+type TagsFlag []string
+
+func (v *TagsFlag) Set(s string) error {
+ var err error
+ *v, err = splitQuotedFields(s)
+ if *v == nil {
+ *v = []string{}
+ }
+ return err
+}
+
+func (v *TagsFlag) Get() interface{} { return *v }
+
+func splitQuotedFields(s string) ([]string, error) {
+ // Split fields allowing '' or "" around elements.
+ // Quotes further inside the string do not count.
+ var f []string
+ for len(s) > 0 {
+ for len(s) > 0 && isSpaceByte(s[0]) {
+ s = s[1:]
+ }
+ if len(s) == 0 {
+ break
+ }
+ // Accepted quoted string. No unescaping inside.
+ if s[0] == '"' || s[0] == '\'' {
+ quote := s[0]
+ s = s[1:]
+ i := 0
+ for i < len(s) && s[i] != quote {
+ i++
+ }
+ if i >= len(s) {
+ return nil, fmt.Errorf("unterminated %c string", quote)
+ }
+ f = append(f, s[:i])
+ s = s[i+1:]
+ continue
+ }
+ i := 0
+ for i < len(s) && !isSpaceByte(s[i]) {
+ i++
+ }
+ f = append(f, s[:i])
+ s = s[i:]
+ }
+ return f, nil
+}
+
+func (v *TagsFlag) String() string {
+ return ""
+}
+
+func isSpaceByte(c byte) bool {
+ return c == ' ' || c == '\t' || c == '\n' || c == '\r'
+}
diff --git a/vendor/golang.org/x/tools/go/buildutil/tags_test.go b/vendor/golang.org/x/tools/go/buildutil/tags_test.go
new file mode 100644
index 00000000..0fc26180
--- /dev/null
+++ b/vendor/golang.org/x/tools/go/buildutil/tags_test.go
@@ -0,0 +1,28 @@
+package buildutil_test
+
+import (
+ "flag"
+ "go/build"
+ "reflect"
+ "testing"
+
+ "golang.org/x/tools/go/buildutil"
+)
+
+func TestTags(t *testing.T) {
+ f := flag.NewFlagSet("TestTags", flag.PanicOnError)
+ var ctxt build.Context
+ f.Var((*buildutil.TagsFlag)(&ctxt.BuildTags), "tags", buildutil.TagsFlagDoc)
+ f.Parse([]string{"-tags", ` 'one'"two" 'three "four"'`, "rest"})
+
+ // BuildTags
+ want := []string{"one", "two", "three \"four\""}
+ if !reflect.DeepEqual(ctxt.BuildTags, want) {
+ t.Errorf("BuildTags = %q, want %q", ctxt.BuildTags, want)
+ }
+
+ // Args()
+ if want := []string{"rest"}; !reflect.DeepEqual(f.Args(), want) {
+ t.Errorf("f.Args() = %q, want %q", f.Args(), want)
+ }
+}
diff --git a/vendor/golang.org/x/tools/go/buildutil/util.go b/vendor/golang.org/x/tools/go/buildutil/util.go
new file mode 100644
index 00000000..fc923d7a
--- /dev/null
+++ b/vendor/golang.org/x/tools/go/buildutil/util.go
@@ -0,0 +1,212 @@
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package buildutil
+
+import (
+ "fmt"
+ "go/ast"
+ "go/build"
+ "go/parser"
+ "go/token"
+ "io"
+ "io/ioutil"
+ "os"
+ "path"
+ "path/filepath"
+ "strings"
+)
+
+// ParseFile behaves like parser.ParseFile,
+// but uses the build context's file system interface, if any.
+//
+// If file is not absolute (as defined by IsAbsPath), the (dir, file)
+// components are joined using JoinPath; dir must be absolute.
+//
+// The displayPath function, if provided, is used to transform the
+// filename that will be attached to the ASTs.
+//
+// TODO(adonovan): call this from go/loader.parseFiles when the tree thaws.
+//
+func ParseFile(fset *token.FileSet, ctxt *build.Context, displayPath func(string) string, dir string, file string, mode parser.Mode) (*ast.File, error) {
+ if !IsAbsPath(ctxt, file) {
+ file = JoinPath(ctxt, dir, file)
+ }
+ rd, err := OpenFile(ctxt, file)
+ if err != nil {
+ return nil, err
+ }
+ defer rd.Close() // ignore error
+ if displayPath != nil {
+ file = displayPath(file)
+ }
+ return parser.ParseFile(fset, file, rd, mode)
+}
+
+// ContainingPackage returns the package containing filename.
+//
+// If filename is not absolute, it is interpreted relative to working directory dir.
+// All I/O is via the build context's file system interface, if any.
+//
+// The '...Files []string' fields of the resulting build.Package are not
+// populated (build.FindOnly mode).
+//
+func ContainingPackage(ctxt *build.Context, dir, filename string) (*build.Package, error) {
+ if !IsAbsPath(ctxt, filename) {
+ filename = JoinPath(ctxt, dir, filename)
+ }
+
+ // We must not assume the file tree uses
+ // "/" always,
+ // `\` always,
+ // or os.PathSeparator (which varies by platform),
+ // but to make any progress, we are forced to assume that
+ // paths will not use `\` unless the PathSeparator
+ // is also `\`, thus we can rely on filepath.ToSlash for some sanity.
+
+ dirSlash := path.Dir(filepath.ToSlash(filename)) + "/"
+
+ // We assume that no source root (GOPATH[i] or GOROOT) contains any other.
+ for _, srcdir := range ctxt.SrcDirs() {
+ srcdirSlash := filepath.ToSlash(srcdir) + "/"
+ if importPath, ok := HasSubdir(ctxt, srcdirSlash, dirSlash); ok {
+ return ctxt.Import(importPath, dir, build.FindOnly)
+ }
+ }
+
+ return nil, fmt.Errorf("can't find package containing %s", filename)
+}
+
+// -- Effective methods of file system interface -------------------------
+
+// (go/build.Context defines these as methods, but does not export them.)
+
+// hasSubdir calls ctxt.HasSubdir (if not nil) or else uses
+// the local file system to answer the question.
+func HasSubdir(ctxt *build.Context, root, dir string) (rel string, ok bool) {
+ if f := ctxt.HasSubdir; f != nil {
+ return f(root, dir)
+ }
+
+ // Try using paths we received.
+ if rel, ok = hasSubdir(root, dir); ok {
+ return
+ }
+
+ // Try expanding symlinks and comparing
+ // expanded against unexpanded and
+ // expanded against expanded.
+ rootSym, _ := filepath.EvalSymlinks(root)
+ dirSym, _ := filepath.EvalSymlinks(dir)
+
+ if rel, ok = hasSubdir(rootSym, dir); ok {
+ return
+ }
+ if rel, ok = hasSubdir(root, dirSym); ok {
+ return
+ }
+ return hasSubdir(rootSym, dirSym)
+}
+
+func hasSubdir(root, dir string) (rel string, ok bool) {
+ const sep = string(filepath.Separator)
+ root = filepath.Clean(root)
+ if !strings.HasSuffix(root, sep) {
+ root += sep
+ }
+
+ dir = filepath.Clean(dir)
+ if !strings.HasPrefix(dir, root) {
+ return "", false
+ }
+
+ return filepath.ToSlash(dir[len(root):]), true
+}
+
+// FileExists returns true if the specified file exists,
+// using the build context's file system interface.
+func FileExists(ctxt *build.Context, path string) bool {
+ if ctxt.OpenFile != nil {
+ r, err := ctxt.OpenFile(path)
+ if err != nil {
+ return false
+ }
+ r.Close() // ignore error
+ return true
+ }
+ _, err := os.Stat(path)
+ return err == nil
+}
+
+// OpenFile behaves like os.Open,
+// but uses the build context's file system interface, if any.
+func OpenFile(ctxt *build.Context, path string) (io.ReadCloser, error) {
+ if ctxt.OpenFile != nil {
+ return ctxt.OpenFile(path)
+ }
+ return os.Open(path)
+}
+
+// IsAbsPath behaves like filepath.IsAbs,
+// but uses the build context's file system interface, if any.
+func IsAbsPath(ctxt *build.Context, path string) bool {
+ if ctxt.IsAbsPath != nil {
+ return ctxt.IsAbsPath(path)
+ }
+ return filepath.IsAbs(path)
+}
+
+// JoinPath behaves like filepath.Join,
+// but uses the build context's file system interface, if any.
+func JoinPath(ctxt *build.Context, path ...string) string {
+ if ctxt.JoinPath != nil {
+ return ctxt.JoinPath(path...)
+ }
+ return filepath.Join(path...)
+}
+
+// IsDir behaves like os.Stat plus IsDir,
+// but uses the build context's file system interface, if any.
+func IsDir(ctxt *build.Context, path string) bool {
+ if ctxt.IsDir != nil {
+ return ctxt.IsDir(path)
+ }
+ fi, err := os.Stat(path)
+ return err == nil && fi.IsDir()
+}
+
+// ReadDir behaves like ioutil.ReadDir,
+// but uses the build context's file system interface, if any.
+func ReadDir(ctxt *build.Context, path string) ([]os.FileInfo, error) {
+ if ctxt.ReadDir != nil {
+ return ctxt.ReadDir(path)
+ }
+ return ioutil.ReadDir(path)
+}
+
+// SplitPathList behaves like filepath.SplitList,
+// but uses the build context's file system interface, if any.
+func SplitPathList(ctxt *build.Context, s string) []string {
+ if ctxt.SplitPathList != nil {
+ return ctxt.SplitPathList(s)
+ }
+ return filepath.SplitList(s)
+}
+
+// sameFile returns true if x and y have the same basename and denote
+// the same file.
+//
+func sameFile(x, y string) bool {
+ if path.Clean(x) == path.Clean(y) {
+ return true
+ }
+ if filepath.Base(x) == filepath.Base(y) { // (optimisation)
+ if xi, err := os.Stat(x); err == nil {
+ if yi, err := os.Stat(y); err == nil {
+ return os.SameFile(xi, yi)
+ }
+ }
+ }
+ return false
+}
diff --git a/vendor/golang.org/x/tools/go/buildutil/util_test.go b/vendor/golang.org/x/tools/go/buildutil/util_test.go
new file mode 100644
index 00000000..72db3172
--- /dev/null
+++ b/vendor/golang.org/x/tools/go/buildutil/util_test.go
@@ -0,0 +1,72 @@
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package buildutil_test
+
+import (
+ "go/build"
+ "io/ioutil"
+ "os"
+ "path/filepath"
+ "runtime"
+ "testing"
+
+ "golang.org/x/tools/go/buildutil"
+)
+
+func TestContainingPackage(t *testing.T) {
+ // unvirtualized:
+ goroot := runtime.GOROOT()
+ gopath := filepath.SplitList(os.Getenv("GOPATH"))[0]
+
+ type Test struct {
+ gopath, filename, wantPkg string
+ }
+
+ tests := []Test{
+ {gopath, goroot + "/src/fmt/print.go", "fmt"},
+ {gopath, goroot + "/src/encoding/json/foo.go", "encoding/json"},
+ {gopath, goroot + "/src/encoding/missing/foo.go", "(not found)"},
+ {gopath, gopath + "/src/golang.org/x/tools/go/buildutil/util_test.go",
+ "golang.org/x/tools/go/buildutil"},
+ }
+
+ if runtime.GOOS != "windows" && runtime.GOOS != "plan9" {
+ // Make a symlink to gopath for test
+ tmp, err := ioutil.TempDir(os.TempDir(), "go")
+ if err != nil {
+ t.Errorf("Unable to create a temporary directory in %s", os.TempDir())
+ }
+
+ defer os.RemoveAll(tmp)
+
+ // symlink between $GOPATH/src and /tmp/go/src
+ // in order to test all possible symlink cases
+ if err := os.Symlink(gopath+"/src", tmp+"/src"); err != nil {
+ t.Fatal(err)
+ }
+ tests = append(tests, []Test{
+ {gopath, tmp + "/src/golang.org/x/tools/go/buildutil/util_test.go", "golang.org/x/tools/go/buildutil"},
+ {tmp, gopath + "/src/golang.org/x/tools/go/buildutil/util_test.go", "golang.org/x/tools/go/buildutil"},
+ {tmp, tmp + "/src/golang.org/x/tools/go/buildutil/util_test.go", "golang.org/x/tools/go/buildutil"},
+ }...)
+ }
+
+ for _, test := range tests {
+ var got string
+ var buildContext = build.Default
+ buildContext.GOPATH = test.gopath
+ bp, err := buildutil.ContainingPackage(&buildContext, ".", test.filename)
+ if err != nil {
+ got = "(not found)"
+ } else {
+ got = bp.ImportPath
+ }
+ if got != test.wantPkg {
+ t.Errorf("ContainingPackage(%q) = %s, want %s", test.filename, got, test.wantPkg)
+ }
+ }
+
+ // TODO(adonovan): test on virtualized GOPATH too.
+}
diff --git a/vendor/golang.org/x/tools/go/buildutil/util_windows_test.go b/vendor/golang.org/x/tools/go/buildutil/util_windows_test.go
new file mode 100644
index 00000000..86fe9c71
--- /dev/null
+++ b/vendor/golang.org/x/tools/go/buildutil/util_windows_test.go
@@ -0,0 +1,48 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package buildutil_test
+
+import (
+ "fmt"
+ "go/build"
+ "path/filepath"
+ "runtime"
+ "strings"
+ "testing"
+
+ "golang.org/x/tools/go/buildutil"
+)
+
+func testContainingPackageCaseFold(file, want string) error {
+ bp, err := buildutil.ContainingPackage(&build.Default, ".", file)
+ if err != nil {
+ return err
+ }
+ if got := bp.ImportPath; got != want {
+ return fmt.Errorf("ContainingPackage(%q) = %s, want %s", file, got, want)
+ }
+ return nil
+}
+
+func TestContainingPackageCaseFold(t *testing.T) {
+ path := filepath.Join(runtime.GOROOT(), `src\fmt\print.go`)
+ err := testContainingPackageCaseFold(path, "fmt")
+ if err != nil {
+ t.Error(err)
+ }
+ vol := filepath.VolumeName(path)
+ if len(vol) != 2 || vol[1] != ':' {
+ t.Fatalf("GOROOT path has unexpected volume name: %v", vol)
+ }
+ rest := path[len(vol):]
+ err = testContainingPackageCaseFold(strings.ToUpper(vol)+rest, "fmt")
+ if err != nil {
+ t.Error(err)
+ }
+ err = testContainingPackageCaseFold(strings.ToLower(vol)+rest, "fmt")
+ if err != nil {
+ t.Error(err)
+ }
+}
diff --git a/vendor/golang.org/x/tools/go/loader/cgo.go b/vendor/golang.org/x/tools/go/loader/cgo.go
new file mode 100644
index 00000000..72c6f502
--- /dev/null
+++ b/vendor/golang.org/x/tools/go/loader/cgo.go
@@ -0,0 +1,207 @@
+// Copyright 2013 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package loader
+
+// This file handles cgo preprocessing of files containing `import "C"`.
+//
+// DESIGN
+//
+// The approach taken is to run the cgo processor on the package's
+// CgoFiles and parse the output, faking the filenames of the
+// resulting ASTs so that the synthetic file containing the C types is
+// called "C" (e.g. "~/go/src/net/C") and the preprocessed files
+// have their original names (e.g. "~/go/src/net/cgo_unix.go"),
+// not the names of the actual temporary files.
+//
+// The advantage of this approach is its fidelity to 'go build'. The
+// downside is that the token.Position.Offset for each AST node is
+// incorrect, being an offset within the temporary file. Line numbers
+// should still be correct because of the //line comments.
+//
+// The logic of this file is mostly plundered from the 'go build'
+// tool, which also invokes the cgo preprocessor.
+//
+//
+// REJECTED ALTERNATIVE
+//
+// An alternative approach that we explored is to extend go/types'
+// Importer mechanism to provide the identity of the importing package
+// so that each time `import "C"` appears it resolves to a different
+// synthetic package containing just the objects needed in that case.
+// The loader would invoke cgo but parse only the cgo_types.go file
+// defining the package-level objects, discarding the other files
+// resulting from preprocessing.
+//
+// The benefit of this approach would have been that source-level
+// syntax information would correspond exactly to the original cgo
+// file, with no preprocessing involved, making source tools like
+// godoc, guru, and eg happy. However, the approach was rejected
+// due to the additional complexity it would impose on go/types. (It
+// made for a beautiful demo, though.)
+//
+// cgo files, despite their *.go extension, are not legal Go source
+// files per the specification since they may refer to unexported
+// members of package "C" such as C.int. Also, a function such as
+// C.getpwent has in effect two types, one matching its C type and one
+// which additionally returns (errno C.int). The cgo preprocessor
+// uses name mangling to distinguish these two functions in the
+// processed code, but go/types would need to duplicate this logic in
+// its handling of function calls, analogous to the treatment of map
+// lookups in which y=m[k] and y,ok=m[k] are both legal.
+
+import (
+ "fmt"
+ "go/ast"
+ "go/build"
+ "go/parser"
+ "go/token"
+ "io/ioutil"
+ "log"
+ "os"
+ "os/exec"
+ "path/filepath"
+ "regexp"
+ "strings"
+)
+
+// processCgoFiles invokes the cgo preprocessor on bp.CgoFiles, parses
+// the output and returns the resulting ASTs.
+//
+func processCgoFiles(bp *build.Package, fset *token.FileSet, DisplayPath func(path string) string, mode parser.Mode) ([]*ast.File, error) {
+ tmpdir, err := ioutil.TempDir("", strings.Replace(bp.ImportPath, "/", "_", -1)+"_C")
+ if err != nil {
+ return nil, err
+ }
+ defer os.RemoveAll(tmpdir)
+
+ pkgdir := bp.Dir
+ if DisplayPath != nil {
+ pkgdir = DisplayPath(pkgdir)
+ }
+
+ cgoFiles, cgoDisplayFiles, err := runCgo(bp, pkgdir, tmpdir)
+ if err != nil {
+ return nil, err
+ }
+ var files []*ast.File
+ for i := range cgoFiles {
+ rd, err := os.Open(cgoFiles[i])
+ if err != nil {
+ return nil, err
+ }
+ display := filepath.Join(bp.Dir, cgoDisplayFiles[i])
+ f, err := parser.ParseFile(fset, display, rd, mode)
+ rd.Close()
+ if err != nil {
+ return nil, err
+ }
+ files = append(files, f)
+ }
+ return files, nil
+}
+
+var cgoRe = regexp.MustCompile(`[/\\:]`)
+
+// runCgo invokes the cgo preprocessor on bp.CgoFiles and returns two
+// lists of files: the resulting processed files (in temporary
+// directory tmpdir) and the corresponding names of the unprocessed files.
+//
+// runCgo is adapted from (*builder).cgo in
+// $GOROOT/src/cmd/go/build.go, but these features are unsupported:
+// Objective C, CGOPKGPATH, CGO_FLAGS.
+//
+func runCgo(bp *build.Package, pkgdir, tmpdir string) (files, displayFiles []string, err error) {
+ cgoCPPFLAGS, _, _, _ := cflags(bp, true)
+ _, cgoexeCFLAGS, _, _ := cflags(bp, false)
+
+ if len(bp.CgoPkgConfig) > 0 {
+ pcCFLAGS, err := pkgConfigFlags(bp)
+ if err != nil {
+ return nil, nil, err
+ }
+ cgoCPPFLAGS = append(cgoCPPFLAGS, pcCFLAGS...)
+ }
+
+ // Allows including _cgo_export.h from .[ch] files in the package.
+ cgoCPPFLAGS = append(cgoCPPFLAGS, "-I", tmpdir)
+
+ // _cgo_gotypes.go (displayed "C") contains the type definitions.
+ files = append(files, filepath.Join(tmpdir, "_cgo_gotypes.go"))
+ displayFiles = append(displayFiles, "C")
+ for _, fn := range bp.CgoFiles {
+ // "foo.cgo1.go" (displayed "foo.go") is the processed Go source.
+ f := cgoRe.ReplaceAllString(fn[:len(fn)-len("go")], "_")
+ files = append(files, filepath.Join(tmpdir, f+"cgo1.go"))
+ displayFiles = append(displayFiles, fn)
+ }
+
+ var cgoflags []string
+ if bp.Goroot && bp.ImportPath == "runtime/cgo" {
+ cgoflags = append(cgoflags, "-import_runtime_cgo=false")
+ }
+ if bp.Goroot && bp.ImportPath == "runtime/race" || bp.ImportPath == "runtime/cgo" {
+ cgoflags = append(cgoflags, "-import_syscall=false")
+ }
+
+ args := stringList(
+ "go", "tool", "cgo", "-objdir", tmpdir, cgoflags, "--",
+ cgoCPPFLAGS, cgoexeCFLAGS, bp.CgoFiles,
+ )
+ if false {
+ log.Printf("Running cgo for package %q: %s (dir=%s)", bp.ImportPath, args, pkgdir)
+ }
+ cmd := exec.Command(args[0], args[1:]...)
+ cmd.Dir = pkgdir
+ cmd.Stdout = os.Stderr
+ cmd.Stderr = os.Stderr
+ if err := cmd.Run(); err != nil {
+ return nil, nil, fmt.Errorf("cgo failed: %s: %s", args, err)
+ }
+
+ return files, displayFiles, nil
+}
+
+// -- unmodified from 'go build' ---------------------------------------
+
+// Return the flags to use when invoking the C or C++ compilers, or cgo.
+func cflags(p *build.Package, def bool) (cppflags, cflags, cxxflags, ldflags []string) {
+ var defaults string
+ if def {
+ defaults = "-g -O2"
+ }
+
+ cppflags = stringList(envList("CGO_CPPFLAGS", ""), p.CgoCPPFLAGS)
+ cflags = stringList(envList("CGO_CFLAGS", defaults), p.CgoCFLAGS)
+ cxxflags = stringList(envList("CGO_CXXFLAGS", defaults), p.CgoCXXFLAGS)
+ ldflags = stringList(envList("CGO_LDFLAGS", defaults), p.CgoLDFLAGS)
+ return
+}
+
+// envList returns the value of the given environment variable broken
+// into fields, using the default value when the variable is empty.
+func envList(key, def string) []string {
+ v := os.Getenv(key)
+ if v == "" {
+ v = def
+ }
+ return strings.Fields(v)
+}
+
+// stringList's arguments should be a sequence of string or []string values.
+// stringList flattens them into a single []string.
+func stringList(args ...interface{}) []string {
+ var x []string
+ for _, arg := range args {
+ switch arg := arg.(type) {
+ case []string:
+ x = append(x, arg...)
+ case string:
+ x = append(x, arg)
+ default:
+ panic("stringList: invalid argument")
+ }
+ }
+ return x
+}
diff --git a/vendor/golang.org/x/tools/go/loader/cgo_pkgconfig.go b/vendor/golang.org/x/tools/go/loader/cgo_pkgconfig.go
new file mode 100644
index 00000000..de57422d
--- /dev/null
+++ b/vendor/golang.org/x/tools/go/loader/cgo_pkgconfig.go
@@ -0,0 +1,39 @@
+// Copyright 2013 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package loader
+
+import (
+ "errors"
+ "fmt"
+ "go/build"
+ "os/exec"
+ "strings"
+)
+
+// pkgConfig runs pkg-config with the specified arguments and returns the flags it prints.
+func pkgConfig(mode string, pkgs []string) (flags []string, err error) {
+ cmd := exec.Command("pkg-config", append([]string{mode}, pkgs...)...)
+ out, err := cmd.CombinedOutput()
+ if err != nil {
+ s := fmt.Sprintf("%s failed: %v", strings.Join(cmd.Args, " "), err)
+ if len(out) > 0 {
+ s = fmt.Sprintf("%s: %s", s, out)
+ }
+ return nil, errors.New(s)
+ }
+ if len(out) > 0 {
+ flags = strings.Fields(string(out))
+ }
+ return
+}
+
+// pkgConfigFlags calls pkg-config if needed and returns the cflags
+// needed to build the package.
+func pkgConfigFlags(p *build.Package) (cflags []string, err error) {
+ if len(p.CgoPkgConfig) == 0 {
+ return nil, nil
+ }
+ return pkgConfig("--cflags", p.CgoPkgConfig)
+}
diff --git a/vendor/golang.org/x/tools/go/loader/doc.go b/vendor/golang.org/x/tools/go/loader/doc.go
new file mode 100644
index 00000000..9b51c9ec
--- /dev/null
+++ b/vendor/golang.org/x/tools/go/loader/doc.go
@@ -0,0 +1,205 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Package loader loads a complete Go program from source code, parsing
+// and type-checking the initial packages plus their transitive closure
+// of dependencies. The ASTs and the derived facts are retained for
+// later use.
+//
+// THIS INTERFACE IS EXPERIMENTAL AND IS LIKELY TO CHANGE.
+//
+// The package defines two primary types: Config, which specifies a
+// set of initial packages to load and various other options; and
+// Program, which is the result of successfully loading the packages
+// specified by a configuration.
+//
+// The configuration can be set directly, but *Config provides various
+// convenience methods to simplify the common cases, each of which can
+// be called any number of times. Finally, these are followed by a
+// call to Load() to actually load and type-check the program.
+//
+// var conf loader.Config
+//
+// // Use the command-line arguments to specify
+// // a set of initial packages to load from source.
+// // See FromArgsUsage for help.
+// rest, err := conf.FromArgs(os.Args[1:], wantTests)
+//
+// // Parse the specified files and create an ad hoc package with path "foo".
+// // All files must have the same 'package' declaration.
+// conf.CreateFromFilenames("foo", "foo.go", "bar.go")
+//
+// // Create an ad hoc package with path "foo" from
+// // the specified already-parsed files.
+// // All ASTs must have the same 'package' declaration.
+// conf.CreateFromFiles("foo", parsedFiles)
+//
+// // Add "runtime" to the set of packages to be loaded.
+// conf.Import("runtime")
+//
+// // Adds "fmt" and "fmt_test" to the set of packages
+// // to be loaded. "fmt" will include *_test.go files.
+// conf.ImportWithTests("fmt")
+//
+// // Finally, load all the packages specified by the configuration.
+// prog, err := conf.Load()
+//
+// See examples_test.go for examples of API usage.
+//
+//
+// CONCEPTS AND TERMINOLOGY
+//
+// The WORKSPACE is the set of packages accessible to the loader. The
+// workspace is defined by Config.Build, a *build.Context. The
+// default context treats subdirectories of $GOROOT and $GOPATH as
+// packages, but this behavior may be overridden.
+//
+// An AD HOC package is one specified as a set of source files on the
+// command line. In the simplest case, it may consist of a single file
+// such as $GOROOT/src/net/http/triv.go.
+//
+// EXTERNAL TEST packages are those comprised of a set of *_test.go
+// files all with the same 'package foo_test' declaration, all in the
+// same directory. (go/build.Package calls these files XTestFiles.)
+//
+// An IMPORTABLE package is one that can be referred to by some import
+// spec. Every importable package is uniquely identified by its
+// PACKAGE PATH or just PATH, a string such as "fmt", "encoding/json",
+// or "cmd/vendor/golang.org/x/arch/x86/x86asm". A package path
+// typically denotes a subdirectory of the workspace.
+//
+// An import declaration uses an IMPORT PATH to refer to a package.
+// Most import declarations use the package path as the import path.
+//
+// Due to VENDORING (https://golang.org/s/go15vendor), the
+// interpretation of an import path may depend on the directory in which
+// it appears. To resolve an import path to a package path, go/build
+// must search the enclosing directories for a subdirectory named
+// "vendor".
+//
+// ad hoc packages and external test packages are NON-IMPORTABLE. The
+// path of an ad hoc package is inferred from the package
+// declarations of its files and is therefore not a unique package key.
+// For example, Config.CreatePkgs may specify two initial ad hoc
+// packages, both with path "main".
+//
+// An AUGMENTED package is an importable package P plus all the
+// *_test.go files with same 'package foo' declaration as P.
+// (go/build.Package calls these files TestFiles.)
+//
+// The INITIAL packages are those specified in the configuration. A
+// DEPENDENCY is a package loaded to satisfy an import in an initial
+// package or another dependency.
+//
+package loader
+
+// IMPLEMENTATION NOTES
+//
+// 'go test', in-package test files, and import cycles
+// ---------------------------------------------------
+//
+// An external test package may depend upon members of the augmented
+// package that are not in the unaugmented package, such as functions
+// that expose internals. (See bufio/export_test.go for an example.)
+// So, the loader must ensure that for each external test package
+// it loads, it also augments the corresponding non-test package.
+//
+// The import graph over n unaugmented packages must be acyclic; the
+// import graph over n-1 unaugmented packages plus one augmented
+// package must also be acyclic. ('go test' relies on this.) But the
+// import graph over n augmented packages may contain cycles.
+//
+// First, all the (unaugmented) non-test packages and their
+// dependencies are imported in the usual way; the loader reports an
+// error if it detects an import cycle.
+//
+// Then, each package P for which testing is desired is augmented by
+// the list P' of its in-package test files, by calling
+// (*types.Checker).Files. This arrangement ensures that P' may
+// reference definitions within P, but P may not reference definitions
+// within P'. Furthermore, P' may import any other package, including
+// ones that depend upon P, without an import cycle error.
+//
+// Consider two packages A and B, both of which have lists of
+// in-package test files we'll call A' and B', and which have the
+// following import graph edges:
+// B imports A
+// B' imports A
+// A' imports B
+// This last edge would be expected to create an error were it not
+// for the special type-checking discipline above.
+// Cycles of size greater than two are possible. For example:
+// compress/bzip2/bzip2_test.go (package bzip2) imports "io/ioutil"
+// io/ioutil/tempfile_test.go (package ioutil) imports "regexp"
+// regexp/exec_test.go (package regexp) imports "compress/bzip2"
+//
+//
+// Concurrency
+// -----------
+//
+// Let us define the import dependency graph as follows. Each node is a
+// list of files passed to (Checker).Files at once. Many of these lists
+// are the production code of an importable Go package, so those nodes
+// are labelled by the package's path. The remaining nodes are
+// ad hoc packages and lists of in-package *_test.go files that augment
+// an importable package; those nodes have no label.
+//
+// The edges of the graph represent import statements appearing within a
+// file. An edge connects a node (a list of files) to the node it
+// imports, which is importable and thus always labelled.
+//
+// Loading is controlled by this dependency graph.
+//
+// To reduce I/O latency, we start loading a package's dependencies
+// asynchronously as soon as we've parsed its files and enumerated its
+// imports (scanImports). This performs a preorder traversal of the
+// import dependency graph.
+//
+// To exploit hardware parallelism, we type-check unrelated packages in
+// parallel, where "unrelated" means not ordered by the partial order of
+// the import dependency graph.
+//
+// We use a concurrency-safe non-blocking cache (importer.imported) to
+// record the results of type-checking, whether success or failure. An
+// entry is created in this cache by startLoad the first time the
+// package is imported. The first goroutine to request an entry becomes
+// responsible for completing the task and broadcasting completion to
+// subsequent requestors, which block until then.
+//
+// Type checking occurs in (parallel) postorder: we cannot type-check a
+// set of files until we have loaded and type-checked all of their
+// immediate dependencies (and thus all of their transitive
+// dependencies). If the input were guaranteed free of import cycles,
+// this would be trivial: we could simply wait for completion of the
+// dependencies and then invoke the typechecker.
+//
+// But as we saw in the 'go test' section above, some cycles in the
+// import graph over packages are actually legal, so long as the
+// cycle-forming edge originates in the in-package test files that
+// augment the package. This explains why the nodes of the import
+// dependency graph are not packages, but lists of files: the unlabelled
+// nodes avoid the cycles. Consider packages A and B where B imports A
+// and A's in-package tests AT import B. The naively constructed import
+// graph over packages would contain a cycle (A+AT) --> B --> (A+AT) but
+// the graph over lists of files is AT --> B --> A, where AT is an
+// unlabelled node.
+//
+// Awaiting completion of the dependencies in a cyclic graph would
+// deadlock, so we must materialize the import dependency graph (as
+// importer.graph) and check whether each import edge forms a cycle. If
+// x imports y, and the graph already contains a path from y to x, then
+// there is an import cycle, in which case the processing of x must not
+// wait for the completion of processing of y.
+//
+// When the type-checker makes a callback (doImport) to the loader for a
+// given import edge, there are two possible cases. In the normal case,
+// the dependency has already been completely type-checked; doImport
+// does a cache lookup and returns it. In the cyclic case, the entry in
+// the cache is still necessarily incomplete, indicating a cycle. We
+// perform the cycle check again to obtain the error message, and return
+// the error.
+//
+// The result of using concurrency is about a 2.5x speedup for stdlib_test.
+
+// TODO(adonovan): overhaul the package documentation.
diff --git a/vendor/golang.org/x/tools/go/loader/example_test.go b/vendor/golang.org/x/tools/go/loader/example_test.go
new file mode 100644
index 00000000..88adde3c
--- /dev/null
+++ b/vendor/golang.org/x/tools/go/loader/example_test.go
@@ -0,0 +1,179 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build go1.8,!go1.9 // TODO(adonovan) determine which versions we need to test here
+// +build !windows
+
+package loader_test
+
+import (
+ "fmt"
+ "go/token"
+ "log"
+ "path/filepath"
+ "runtime"
+ "sort"
+ "strings"
+
+ "golang.org/x/tools/go/loader"
+)
+
+func printProgram(prog *loader.Program) {
+ // Created packages are the initial packages specified by a call
+ // to CreateFromFilenames or CreateFromFiles.
+ var names []string
+ for _, info := range prog.Created {
+ names = append(names, info.Pkg.Path())
+ }
+ fmt.Printf("created: %s\n", names)
+
+ // Imported packages are the initial packages specified by a
+ // call to Import or ImportWithTests.
+ names = nil
+ for _, info := range prog.Imported {
+ if strings.Contains(info.Pkg.Path(), "internal") {
+ continue // skip, to reduce fragility
+ }
+ names = append(names, info.Pkg.Path())
+ }
+ sort.Strings(names)
+ fmt.Printf("imported: %s\n", names)
+
+ // InitialPackages contains the union of created and imported.
+ names = nil
+ for _, info := range prog.InitialPackages() {
+ names = append(names, info.Pkg.Path())
+ }
+ sort.Strings(names)
+ fmt.Printf("initial: %s\n", names)
+
+ // AllPackages contains all initial packages and their dependencies.
+ names = nil
+ for pkg := range prog.AllPackages {
+ names = append(names, pkg.Path())
+ }
+ sort.Strings(names)
+ fmt.Printf("all: %s\n", names)
+}
+
+func printFilenames(fset *token.FileSet, info *loader.PackageInfo) {
+ var names []string
+ for _, f := range info.Files {
+ names = append(names, filepath.Base(fset.File(f.Pos()).Name()))
+ }
+ fmt.Printf("%s.Files: %s\n", info.Pkg.Path(), names)
+}
+
+// This example loads a set of packages and all of their dependencies
+// from a typical command-line. FromArgs parses a command line and
+// makes calls to the other methods of Config shown in the examples that
+// follow.
+func ExampleConfig_FromArgs() {
+ args := []string{"mytool", "unicode/utf8", "errors", "runtime", "--", "foo", "bar"}
+ const wantTests = false
+
+ var conf loader.Config
+ rest, err := conf.FromArgs(args[1:], wantTests)
+ prog, err := conf.Load()
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ fmt.Printf("rest: %s\n", rest)
+ printProgram(prog)
+ // Output:
+ // rest: [foo bar]
+ // created: []
+ // imported: [errors runtime unicode/utf8]
+ // initial: [errors runtime unicode/utf8]
+ // all: [errors runtime runtime/internal/atomic runtime/internal/sys unicode/utf8 unsafe]
+}
+
+// This example creates and type-checks a single package (without tests)
+// from a list of filenames, and loads all of its dependencies.
+// (The input files are actually only a small part of the math/cmplx package.)
+func ExampleConfig_CreateFromFilenames() {
+ var conf loader.Config
+ conf.CreateFromFilenames("math/cmplx",
+ filepath.Join(runtime.GOROOT(), "src/math/cmplx/abs.go"),
+ filepath.Join(runtime.GOROOT(), "src/math/cmplx/sin.go"))
+ prog, err := conf.Load()
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ printProgram(prog)
+ // Output:
+ // created: [math/cmplx]
+ // imported: []
+ // initial: [math/cmplx]
+ // all: [math math/cmplx unsafe]
+}
+
+// In the examples below, for stability, the chosen packages are
+// relatively small, platform-independent, and low-level (and thus
+// infrequently changing).
+// The strconv package has internal and external tests.
+
+const hello = `package main
+
+import "fmt"
+
+func main() {
+ fmt.Println("Hello, world.")
+}
+`
+
+// This example creates and type-checks a package from a list of
+// already-parsed files, and loads all its dependencies.
+func ExampleConfig_CreateFromFiles() {
+ var conf loader.Config
+ f, err := conf.ParseFile("hello.go", hello)
+ if err != nil {
+ log.Fatal(err)
+ }
+ conf.CreateFromFiles("hello", f)
+ prog, err := conf.Load()
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ printProgram(prog)
+ printFilenames(prog.Fset, prog.Package("strconv"))
+ // Output:
+ // created: [hello]
+ // imported: []
+ // initial: [hello]
+ // all: [errors fmt hello internal/race io math os reflect runtime runtime/internal/atomic runtime/internal/sys strconv sync sync/atomic syscall time unicode/utf8 unsafe]
+ // strconv.Files: [atob.go atof.go atoi.go decimal.go doc.go extfloat.go ftoa.go isprint.go itoa.go quote.go]
+}
+
+// This example imports three packages, including the tests for one of
+// them, and loads all their dependencies.
+func ExampleConfig_Import() {
+ // ImportWithTest("strconv") causes strconv to include
+ // internal_test.go, and creates an external test package,
+ // strconv_test.
+ // (Compare with the example of CreateFromFiles.)
+
+ var conf loader.Config
+ conf.Import("unicode/utf8")
+ conf.Import("errors")
+ conf.ImportWithTests("strconv")
+ prog, err := conf.Load()
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ printProgram(prog)
+ printFilenames(prog.Fset, prog.Package("strconv"))
+ printFilenames(prog.Fset, prog.Package("strconv_test"))
+ // Output:
+ // created: [strconv_test]
+ // imported: [errors strconv unicode/utf8]
+ // initial: [errors strconv strconv_test unicode/utf8]
+ // all: [bufio bytes errors flag fmt internal/race io log math math/rand os reflect runtime runtime/debug runtime/internal/atomic runtime/internal/sys runtime/trace sort strconv strconv_test strings sync sync/atomic syscall testing time unicode unicode/utf8 unsafe]
+ // strconv.Files: [atob.go atof.go atoi.go decimal.go doc.go extfloat.go ftoa.go isprint.go itoa.go quote.go internal_test.go]
+ // strconv_test.Files: [atob_test.go atof_test.go atoi_test.go decimal_test.go example_test.go fp_test.go ftoa_test.go itoa_test.go quote_test.go strconv_test.go]
+}
diff --git a/vendor/golang.org/x/tools/go/loader/loader.go b/vendor/golang.org/x/tools/go/loader/loader.go
new file mode 100644
index 00000000..f69a6684
--- /dev/null
+++ b/vendor/golang.org/x/tools/go/loader/loader.go
@@ -0,0 +1,1073 @@
+// Copyright 2013 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package loader
+
+// See doc.go for package documentation and implementation notes.
+
+import (
+ "errors"
+ "fmt"
+ "go/ast"
+ "go/build"
+ "go/parser"
+ "go/token"
+ "go/types"
+ "os"
+ "path/filepath"
+ "sort"
+ "strings"
+ "sync"
+ "time"
+
+ "golang.org/x/tools/go/ast/astutil"
+)
+
+var ignoreVendor build.ImportMode
+
+const trace = false // show timing info for type-checking
+
+// Config specifies the configuration for loading a whole program from
+// Go source code.
+// The zero value for Config is a ready-to-use default configuration.
+type Config struct {
+ // Fset is the file set for the parser to use when loading the
+ // program. If nil, it may be lazily initialized by any
+ // method of Config.
+ Fset *token.FileSet
+
+ // ParserMode specifies the mode to be used by the parser when
+ // loading source packages.
+ ParserMode parser.Mode
+
+ // TypeChecker contains options relating to the type checker.
+ //
+ // The supplied IgnoreFuncBodies is not used; the effective
+ // value comes from the TypeCheckFuncBodies func below.
+ // The supplied Import function is not used either.
+ TypeChecker types.Config
+
+ // TypeCheckFuncBodies is a predicate over package paths.
+ // A package for which the predicate is false will
+ // have its package-level declarations type checked, but not
+ // its function bodies; this can be used to quickly load
+ // dependencies from source. If nil, all func bodies are type
+ // checked.
+ TypeCheckFuncBodies func(path string) bool
+
+ // If Build is non-nil, it is used to locate source packages.
+ // Otherwise &build.Default is used.
+ //
+ // By default, cgo is invoked to preprocess Go files that
+ // import the fake package "C". This behaviour can be
+ // disabled by setting CGO_ENABLED=0 in the environment prior
+ // to startup, or by setting Build.CgoEnabled=false.
+ Build *build.Context
+
+ // The current directory, used for resolving relative package
+ // references such as "./go/loader". If empty, os.Getwd will be
+ // used instead.
+ Cwd string
+
+ // If DisplayPath is non-nil, it is used to transform each
+ // file name obtained from Build.Import(). This can be used
+ // to prevent a virtualized build.Config's file names from
+ // leaking into the user interface.
+ DisplayPath func(path string) string
+
+ // If AllowErrors is true, Load will return a Program even
+ // if some of the its packages contained I/O, parser or type
+ // errors; such errors are accessible via PackageInfo.Errors. If
+ // false, Load will fail if any package had an error.
+ AllowErrors bool
+
+ // CreatePkgs specifies a list of non-importable initial
+ // packages to create. The resulting packages will appear in
+ // the corresponding elements of the Program.Created slice.
+ CreatePkgs []PkgSpec
+
+ // ImportPkgs specifies a set of initial packages to load.
+ // The map keys are package paths.
+ //
+ // The map value indicates whether to load tests. If true, Load
+ // will add and type-check two lists of files to the package:
+ // non-test files followed by in-package *_test.go files. In
+ // addition, it will append the external test package (if any)
+ // to Program.Created.
+ ImportPkgs map[string]bool
+
+ // FindPackage is called during Load to create the build.Package
+ // for a given import path from a given directory.
+ // If FindPackage is nil, (*build.Context).Import is used.
+ // A client may use this hook to adapt to a proprietary build
+ // system that does not follow the "go build" layout
+ // conventions, for example.
+ //
+ // It must be safe to call concurrently from multiple goroutines.
+ FindPackage func(ctxt *build.Context, fromDir, importPath string, mode build.ImportMode) (*build.Package, error)
+
+ // AfterTypeCheck is called immediately after a list of files
+ // has been type-checked and appended to info.Files.
+ //
+ // This optional hook function is the earliest opportunity for
+ // the client to observe the output of the type checker,
+ // which may be useful to reduce analysis latency when loading
+ // a large program.
+ //
+ // The function is permitted to modify info.Info, for instance
+ // to clear data structures that are no longer needed, which can
+ // dramatically reduce peak memory consumption.
+ //
+ // The function may be called twice for the same PackageInfo:
+ // once for the files of the package and again for the
+ // in-package test files.
+ //
+ // It must be safe to call concurrently from multiple goroutines.
+ AfterTypeCheck func(info *PackageInfo, files []*ast.File)
+}
+
+// A PkgSpec specifies a non-importable package to be created by Load.
+// Files are processed first, but typically only one of Files and
+// Filenames is provided. The path needn't be globally unique.
+//
+// For vendoring purposes, the package's directory is the one that
+// contains the first file.
+type PkgSpec struct {
+ Path string // package path ("" => use package declaration)
+ Files []*ast.File // ASTs of already-parsed files
+ Filenames []string // names of files to be parsed
+}
+
+// A Program is a Go program loaded from source as specified by a Config.
+type Program struct {
+ Fset *token.FileSet // the file set for this program
+
+ // Created[i] contains the initial package whose ASTs or
+ // filenames were supplied by Config.CreatePkgs[i], followed by
+ // the external test package, if any, of each package in
+ // Config.ImportPkgs ordered by ImportPath.
+ //
+ // NOTE: these files must not import "C". Cgo preprocessing is
+ // only performed on imported packages, not ad hoc packages.
+ //
+ // TODO(adonovan): we need to copy and adapt the logic of
+ // goFilesPackage (from $GOROOT/src/cmd/go/build.go) and make
+ // Config.Import and Config.Create methods return the same kind
+ // of entity, essentially a build.Package.
+ // Perhaps we can even reuse that type directly.
+ Created []*PackageInfo
+
+ // Imported contains the initially imported packages,
+ // as specified by Config.ImportPkgs.
+ Imported map[string]*PackageInfo
+
+ // AllPackages contains the PackageInfo of every package
+ // encountered by Load: all initial packages and all
+ // dependencies, including incomplete ones.
+ AllPackages map[*types.Package]*PackageInfo
+
+ // importMap is the canonical mapping of package paths to
+ // packages. It contains all Imported initial packages, but not
+ // Created ones, and all imported dependencies.
+ importMap map[string]*types.Package
+}
+
+// PackageInfo holds the ASTs and facts derived by the type-checker
+// for a single package.
+//
+// Not mutated once exposed via the API.
+//
+type PackageInfo struct {
+ Pkg *types.Package
+ Importable bool // true if 'import "Pkg.Path()"' would resolve to this
+ TransitivelyErrorFree bool // true if Pkg and all its dependencies are free of errors
+ Files []*ast.File // syntax trees for the package's files
+ Errors []error // non-nil if the package had errors
+ types.Info // type-checker deductions.
+ dir string // package directory
+
+ checker *types.Checker // transient type-checker state
+ errorFunc func(error)
+}
+
+func (info *PackageInfo) String() string { return info.Pkg.Path() }
+
+func (info *PackageInfo) appendError(err error) {
+ if info.errorFunc != nil {
+ info.errorFunc(err)
+ } else {
+ fmt.Fprintln(os.Stderr, err)
+ }
+ info.Errors = append(info.Errors, err)
+}
+
+func (conf *Config) fset() *token.FileSet {
+ if conf.Fset == nil {
+ conf.Fset = token.NewFileSet()
+ }
+ return conf.Fset
+}
+
+// ParseFile is a convenience function (intended for testing) that invokes
+// the parser using the Config's FileSet, which is initialized if nil.
+//
+// src specifies the parser input as a string, []byte, or io.Reader, and
+// filename is its apparent name. If src is nil, the contents of
+// filename are read from the file system.
+//
+func (conf *Config) ParseFile(filename string, src interface{}) (*ast.File, error) {
+ // TODO(adonovan): use conf.build() etc like parseFiles does.
+ return parser.ParseFile(conf.fset(), filename, src, conf.ParserMode)
+}
+
+// FromArgsUsage is a partial usage message that applications calling
+// FromArgs may wish to include in their -help output.
+const FromArgsUsage = `
+ is a list of arguments denoting a set of initial packages.
+It may take one of two forms:
+
+1. A list of *.go source files.
+
+ All of the specified files are loaded, parsed and type-checked
+ as a single package. All the files must belong to the same directory.
+
+2. A list of import paths, each denoting a package.
+
+ The package's directory is found relative to the $GOROOT and
+ $GOPATH using similar logic to 'go build', and the *.go files in
+ that directory are loaded, parsed and type-checked as a single
+ package.
+
+ In addition, all *_test.go files in the directory are then loaded
+ and parsed. Those files whose package declaration equals that of
+ the non-*_test.go files are included in the primary package. Test
+ files whose package declaration ends with "_test" are type-checked
+ as another package, the 'external' test package, so that a single
+ import path may denote two packages. (Whether this behaviour is
+ enabled is tool-specific, and may depend on additional flags.)
+
+A '--' argument terminates the list of packages.
+`
+
+// FromArgs interprets args as a set of initial packages to load from
+// source and updates the configuration. It returns the list of
+// unconsumed arguments.
+//
+// It is intended for use in command-line interfaces that require a
+// set of initial packages to be specified; see FromArgsUsage message
+// for details.
+//
+// Only superficial errors are reported at this stage; errors dependent
+// on I/O are detected during Load.
+//
+func (conf *Config) FromArgs(args []string, xtest bool) ([]string, error) {
+ var rest []string
+ for i, arg := range args {
+ if arg == "--" {
+ rest = args[i+1:]
+ args = args[:i]
+ break // consume "--" and return the remaining args
+ }
+ }
+
+ if len(args) > 0 && strings.HasSuffix(args[0], ".go") {
+ // Assume args is a list of a *.go files
+ // denoting a single ad hoc package.
+ for _, arg := range args {
+ if !strings.HasSuffix(arg, ".go") {
+ return nil, fmt.Errorf("named files must be .go files: %s", arg)
+ }
+ }
+ conf.CreateFromFilenames("", args...)
+ } else {
+ // Assume args are directories each denoting a
+ // package and (perhaps) an external test, iff xtest.
+ for _, arg := range args {
+ if xtest {
+ conf.ImportWithTests(arg)
+ } else {
+ conf.Import(arg)
+ }
+ }
+ }
+
+ return rest, nil
+}
+
+// CreateFromFilenames is a convenience function that adds
+// a conf.CreatePkgs entry to create a package of the specified *.go
+// files.
+//
+func (conf *Config) CreateFromFilenames(path string, filenames ...string) {
+ conf.CreatePkgs = append(conf.CreatePkgs, PkgSpec{Path: path, Filenames: filenames})
+}
+
+// CreateFromFiles is a convenience function that adds a conf.CreatePkgs
+// entry to create package of the specified path and parsed files.
+//
+func (conf *Config) CreateFromFiles(path string, files ...*ast.File) {
+ conf.CreatePkgs = append(conf.CreatePkgs, PkgSpec{Path: path, Files: files})
+}
+
+// ImportWithTests is a convenience function that adds path to
+// ImportPkgs, the set of initial source packages located relative to
+// $GOPATH. The package will be augmented by any *_test.go files in
+// its directory that contain a "package x" (not "package x_test")
+// declaration.
+//
+// In addition, if any *_test.go files contain a "package x_test"
+// declaration, an additional package comprising just those files will
+// be added to CreatePkgs.
+//
+func (conf *Config) ImportWithTests(path string) { conf.addImport(path, true) }
+
+// Import is a convenience function that adds path to ImportPkgs, the
+// set of initial packages that will be imported from source.
+//
+func (conf *Config) Import(path string) { conf.addImport(path, false) }
+
+func (conf *Config) addImport(path string, tests bool) {
+ if path == "C" {
+ return // ignore; not a real package
+ }
+ if conf.ImportPkgs == nil {
+ conf.ImportPkgs = make(map[string]bool)
+ }
+ conf.ImportPkgs[path] = conf.ImportPkgs[path] || tests
+}
+
+// PathEnclosingInterval returns the PackageInfo and ast.Node that
+// contain source interval [start, end), and all the node's ancestors
+// up to the AST root. It searches all ast.Files of all packages in prog.
+// exact is defined as for astutil.PathEnclosingInterval.
+//
+// The zero value is returned if not found.
+//
+func (prog *Program) PathEnclosingInterval(start, end token.Pos) (pkg *PackageInfo, path []ast.Node, exact bool) {
+ for _, info := range prog.AllPackages {
+ for _, f := range info.Files {
+ if f.Pos() == token.NoPos {
+ // This can happen if the parser saw
+ // too many errors and bailed out.
+ // (Use parser.AllErrors to prevent that.)
+ continue
+ }
+ if !tokenFileContainsPos(prog.Fset.File(f.Pos()), start) {
+ continue
+ }
+ if path, exact := astutil.PathEnclosingInterval(f, start, end); path != nil {
+ return info, path, exact
+ }
+ }
+ }
+ return nil, nil, false
+}
+
+// InitialPackages returns a new slice containing the set of initial
+// packages (Created + Imported) in unspecified order.
+//
+func (prog *Program) InitialPackages() []*PackageInfo {
+ infos := make([]*PackageInfo, 0, len(prog.Created)+len(prog.Imported))
+ infos = append(infos, prog.Created...)
+ for _, info := range prog.Imported {
+ infos = append(infos, info)
+ }
+ return infos
+}
+
+// Package returns the ASTs and results of type checking for the
+// specified package.
+func (prog *Program) Package(path string) *PackageInfo {
+ if info, ok := prog.AllPackages[prog.importMap[path]]; ok {
+ return info
+ }
+ for _, info := range prog.Created {
+ if path == info.Pkg.Path() {
+ return info
+ }
+ }
+ return nil
+}
+
+// ---------- Implementation ----------
+
+// importer holds the working state of the algorithm.
+type importer struct {
+ conf *Config // the client configuration
+ start time.Time // for logging
+
+ progMu sync.Mutex // guards prog
+ prog *Program // the resulting program
+
+ // findpkg is a memoization of FindPackage.
+ findpkgMu sync.Mutex // guards findpkg
+ findpkg map[findpkgKey]*findpkgValue
+
+ importedMu sync.Mutex // guards imported
+ imported map[string]*importInfo // all imported packages (incl. failures) by import path
+
+ // import dependency graph: graph[x][y] => x imports y
+ //
+ // Since non-importable packages cannot be cyclic, we ignore
+ // their imports, thus we only need the subgraph over importable
+ // packages. Nodes are identified by their import paths.
+ graphMu sync.Mutex
+ graph map[string]map[string]bool
+}
+
+type findpkgKey struct {
+ importPath string
+ fromDir string
+ mode build.ImportMode
+}
+
+type findpkgValue struct {
+ ready chan struct{} // closed to broadcast readiness
+ bp *build.Package
+ err error
+}
+
+// importInfo tracks the success or failure of a single import.
+//
+// Upon completion, exactly one of info and err is non-nil:
+// info on successful creation of a package, err otherwise.
+// A successful package may still contain type errors.
+//
+type importInfo struct {
+ path string // import path
+ info *PackageInfo // results of typechecking (including errors)
+ complete chan struct{} // closed to broadcast that info is set.
+}
+
+// awaitCompletion blocks until ii is complete,
+// i.e. the info field is safe to inspect.
+func (ii *importInfo) awaitCompletion() {
+ <-ii.complete // wait for close
+}
+
+// Complete marks ii as complete.
+// Its info and err fields will not be subsequently updated.
+func (ii *importInfo) Complete(info *PackageInfo) {
+ if info == nil {
+ panic("info == nil")
+ }
+ ii.info = info
+ close(ii.complete)
+}
+
+type importError struct {
+ path string // import path
+ err error // reason for failure to create a package
+}
+
+// Load creates the initial packages specified by conf.{Create,Import}Pkgs,
+// loading their dependencies packages as needed.
+//
+// On success, Load returns a Program containing a PackageInfo for
+// each package. On failure, it returns an error.
+//
+// If AllowErrors is true, Load will return a Program even if some
+// packages contained I/O, parser or type errors, or if dependencies
+// were missing. (Such errors are accessible via PackageInfo.Errors. If
+// false, Load will fail if any package had an error.
+//
+// It is an error if no packages were loaded.
+//
+func (conf *Config) Load() (*Program, error) {
+ // Create a simple default error handler for parse/type errors.
+ if conf.TypeChecker.Error == nil {
+ conf.TypeChecker.Error = func(e error) { fmt.Fprintln(os.Stderr, e) }
+ }
+
+ // Set default working directory for relative package references.
+ if conf.Cwd == "" {
+ var err error
+ conf.Cwd, err = os.Getwd()
+ if err != nil {
+ return nil, err
+ }
+ }
+
+ // Install default FindPackage hook using go/build logic.
+ if conf.FindPackage == nil {
+ conf.FindPackage = (*build.Context).Import
+ }
+
+ prog := &Program{
+ Fset: conf.fset(),
+ Imported: make(map[string]*PackageInfo),
+ importMap: make(map[string]*types.Package),
+ AllPackages: make(map[*types.Package]*PackageInfo),
+ }
+
+ imp := importer{
+ conf: conf,
+ prog: prog,
+ findpkg: make(map[findpkgKey]*findpkgValue),
+ imported: make(map[string]*importInfo),
+ start: time.Now(),
+ graph: make(map[string]map[string]bool),
+ }
+
+ // -- loading proper (concurrent phase) --------------------------------
+
+ var errpkgs []string // packages that contained errors
+
+ // Load the initially imported packages and their dependencies,
+ // in parallel.
+ // No vendor check on packages imported from the command line.
+ infos, importErrors := imp.importAll("", conf.Cwd, conf.ImportPkgs, ignoreVendor)
+ for _, ie := range importErrors {
+ conf.TypeChecker.Error(ie.err) // failed to create package
+ errpkgs = append(errpkgs, ie.path)
+ }
+ for _, info := range infos {
+ prog.Imported[info.Pkg.Path()] = info
+ }
+
+ // Augment the designated initial packages by their tests.
+ // Dependencies are loaded in parallel.
+ var xtestPkgs []*build.Package
+ for importPath, augment := range conf.ImportPkgs {
+ if !augment {
+ continue
+ }
+
+ // No vendor check on packages imported from command line.
+ bp, err := imp.findPackage(importPath, conf.Cwd, ignoreVendor)
+ if err != nil {
+ // Package not found, or can't even parse package declaration.
+ // Already reported by previous loop; ignore it.
+ continue
+ }
+
+ // Needs external test package?
+ if len(bp.XTestGoFiles) > 0 {
+ xtestPkgs = append(xtestPkgs, bp)
+ }
+
+ // Consult the cache using the canonical package path.
+ path := bp.ImportPath
+ imp.importedMu.Lock() // (unnecessary, we're sequential here)
+ ii, ok := imp.imported[path]
+ // Paranoid checks added due to issue #11012.
+ if !ok {
+ // Unreachable.
+ // The previous loop called importAll and thus
+ // startLoad for each path in ImportPkgs, which
+ // populates imp.imported[path] with a non-zero value.
+ panic(fmt.Sprintf("imported[%q] not found", path))
+ }
+ if ii == nil {
+ // Unreachable.
+ // The ii values in this loop are the same as in
+ // the previous loop, which enforced the invariant
+ // that at least one of ii.err and ii.info is non-nil.
+ panic(fmt.Sprintf("imported[%q] == nil", path))
+ }
+ if ii.info == nil {
+ // Unreachable.
+ // awaitCompletion has the postcondition
+ // ii.info != nil.
+ panic(fmt.Sprintf("imported[%q].info = nil", path))
+ }
+ info := ii.info
+ imp.importedMu.Unlock()
+
+ // Parse the in-package test files.
+ files, errs := imp.conf.parsePackageFiles(bp, 't')
+ for _, err := range errs {
+ info.appendError(err)
+ }
+
+ // The test files augmenting package P cannot be imported,
+ // but may import packages that import P,
+ // so we must disable the cycle check.
+ imp.addFiles(info, files, false)
+ }
+
+ createPkg := func(path, dir string, files []*ast.File, errs []error) {
+ info := imp.newPackageInfo(path, dir)
+ for _, err := range errs {
+ info.appendError(err)
+ }
+
+ // Ad hoc packages are non-importable,
+ // so no cycle check is needed.
+ // addFiles loads dependencies in parallel.
+ imp.addFiles(info, files, false)
+ prog.Created = append(prog.Created, info)
+ }
+
+ // Create packages specified by conf.CreatePkgs.
+ for _, cp := range conf.CreatePkgs {
+ files, errs := parseFiles(conf.fset(), conf.build(), nil, conf.Cwd, cp.Filenames, conf.ParserMode)
+ files = append(files, cp.Files...)
+
+ path := cp.Path
+ if path == "" {
+ if len(files) > 0 {
+ path = files[0].Name.Name
+ } else {
+ path = "(unnamed)"
+ }
+ }
+
+ dir := conf.Cwd
+ if len(files) > 0 && files[0].Pos().IsValid() {
+ dir = filepath.Dir(conf.fset().File(files[0].Pos()).Name())
+ }
+ createPkg(path, dir, files, errs)
+ }
+
+ // Create external test packages.
+ sort.Sort(byImportPath(xtestPkgs))
+ for _, bp := range xtestPkgs {
+ files, errs := imp.conf.parsePackageFiles(bp, 'x')
+ createPkg(bp.ImportPath+"_test", bp.Dir, files, errs)
+ }
+
+ // -- finishing up (sequential) ----------------------------------------
+
+ if len(prog.Imported)+len(prog.Created) == 0 {
+ return nil, errors.New("no initial packages were loaded")
+ }
+
+ // Create infos for indirectly imported packages.
+ // e.g. incomplete packages without syntax, loaded from export data.
+ for _, obj := range prog.importMap {
+ info := prog.AllPackages[obj]
+ if info == nil {
+ prog.AllPackages[obj] = &PackageInfo{Pkg: obj, Importable: true}
+ } else {
+ // finished
+ info.checker = nil
+ info.errorFunc = nil
+ }
+ }
+
+ if !conf.AllowErrors {
+ // Report errors in indirectly imported packages.
+ for _, info := range prog.AllPackages {
+ if len(info.Errors) > 0 {
+ errpkgs = append(errpkgs, info.Pkg.Path())
+ }
+ }
+ if errpkgs != nil {
+ var more string
+ if len(errpkgs) > 3 {
+ more = fmt.Sprintf(" and %d more", len(errpkgs)-3)
+ errpkgs = errpkgs[:3]
+ }
+ return nil, fmt.Errorf("couldn't load packages due to errors: %s%s",
+ strings.Join(errpkgs, ", "), more)
+ }
+ }
+
+ markErrorFreePackages(prog.AllPackages)
+
+ return prog, nil
+}
+
+type byImportPath []*build.Package
+
+func (b byImportPath) Len() int { return len(b) }
+func (b byImportPath) Less(i, j int) bool { return b[i].ImportPath < b[j].ImportPath }
+func (b byImportPath) Swap(i, j int) { b[i], b[j] = b[j], b[i] }
+
+// markErrorFreePackages sets the TransitivelyErrorFree flag on all
+// applicable packages.
+func markErrorFreePackages(allPackages map[*types.Package]*PackageInfo) {
+ // Build the transpose of the import graph.
+ importedBy := make(map[*types.Package]map[*types.Package]bool)
+ for P := range allPackages {
+ for _, Q := range P.Imports() {
+ clients, ok := importedBy[Q]
+ if !ok {
+ clients = make(map[*types.Package]bool)
+ importedBy[Q] = clients
+ }
+ clients[P] = true
+ }
+ }
+
+ // Find all packages reachable from some error package.
+ reachable := make(map[*types.Package]bool)
+ var visit func(*types.Package)
+ visit = func(p *types.Package) {
+ if !reachable[p] {
+ reachable[p] = true
+ for q := range importedBy[p] {
+ visit(q)
+ }
+ }
+ }
+ for _, info := range allPackages {
+ if len(info.Errors) > 0 {
+ visit(info.Pkg)
+ }
+ }
+
+ // Mark the others as "transitively error-free".
+ for _, info := range allPackages {
+ if !reachable[info.Pkg] {
+ info.TransitivelyErrorFree = true
+ }
+ }
+}
+
+// build returns the effective build context.
+func (conf *Config) build() *build.Context {
+ if conf.Build != nil {
+ return conf.Build
+ }
+ return &build.Default
+}
+
+// parsePackageFiles enumerates the files belonging to package path,
+// then loads, parses and returns them, plus a list of I/O or parse
+// errors that were encountered.
+//
+// 'which' indicates which files to include:
+// 'g': include non-test *.go source files (GoFiles + processed CgoFiles)
+// 't': include in-package *_test.go source files (TestGoFiles)
+// 'x': include external *_test.go source files. (XTestGoFiles)
+//
+func (conf *Config) parsePackageFiles(bp *build.Package, which rune) ([]*ast.File, []error) {
+ if bp.ImportPath == "unsafe" {
+ return nil, nil
+ }
+ var filenames []string
+ switch which {
+ case 'g':
+ filenames = bp.GoFiles
+ case 't':
+ filenames = bp.TestGoFiles
+ case 'x':
+ filenames = bp.XTestGoFiles
+ default:
+ panic(which)
+ }
+
+ files, errs := parseFiles(conf.fset(), conf.build(), conf.DisplayPath, bp.Dir, filenames, conf.ParserMode)
+
+ // Preprocess CgoFiles and parse the outputs (sequentially).
+ if which == 'g' && bp.CgoFiles != nil {
+ cgofiles, err := processCgoFiles(bp, conf.fset(), conf.DisplayPath, conf.ParserMode)
+ if err != nil {
+ errs = append(errs, err)
+ } else {
+ files = append(files, cgofiles...)
+ }
+ }
+
+ return files, errs
+}
+
+// doImport imports the package denoted by path.
+// It implements the types.Importer signature.
+//
+// It returns an error if a package could not be created
+// (e.g. go/build or parse error), but type errors are reported via
+// the types.Config.Error callback (the first of which is also saved
+// in the package's PackageInfo).
+//
+// Idempotent.
+//
+func (imp *importer) doImport(from *PackageInfo, to string) (*types.Package, error) {
+ if to == "C" {
+ // This should be unreachable, but ad hoc packages are
+ // not currently subject to cgo preprocessing.
+ // See https://github.com/golang/go/issues/11627.
+ return nil, fmt.Errorf(`the loader doesn't cgo-process ad hoc packages like %q; see Go issue 11627`,
+ from.Pkg.Path())
+ }
+
+ bp, err := imp.findPackage(to, from.dir, 0)
+ if err != nil {
+ return nil, err
+ }
+
+ // The standard unsafe package is handled specially,
+ // and has no PackageInfo.
+ if bp.ImportPath == "unsafe" {
+ return types.Unsafe, nil
+ }
+
+ // Look for the package in the cache using its canonical path.
+ path := bp.ImportPath
+ imp.importedMu.Lock()
+ ii := imp.imported[path]
+ imp.importedMu.Unlock()
+ if ii == nil {
+ panic("internal error: unexpected import: " + path)
+ }
+ if ii.info != nil {
+ return ii.info.Pkg, nil
+ }
+
+ // Import of incomplete package: this indicates a cycle.
+ fromPath := from.Pkg.Path()
+ if cycle := imp.findPath(path, fromPath); cycle != nil {
+ cycle = append([]string{fromPath}, cycle...)
+ return nil, fmt.Errorf("import cycle: %s", strings.Join(cycle, " -> "))
+ }
+
+ panic("internal error: import of incomplete (yet acyclic) package: " + fromPath)
+}
+
+// findPackage locates the package denoted by the importPath in the
+// specified directory.
+func (imp *importer) findPackage(importPath, fromDir string, mode build.ImportMode) (*build.Package, error) {
+ // We use a non-blocking duplicate-suppressing cache (gopl.io §9.7)
+ // to avoid holding the lock around FindPackage.
+ key := findpkgKey{importPath, fromDir, mode}
+ imp.findpkgMu.Lock()
+ v, ok := imp.findpkg[key]
+ if ok {
+ // cache hit
+ imp.findpkgMu.Unlock()
+
+ <-v.ready // wait for entry to become ready
+ } else {
+ // Cache miss: this goroutine becomes responsible for
+ // populating the map entry and broadcasting its readiness.
+ v = &findpkgValue{ready: make(chan struct{})}
+ imp.findpkg[key] = v
+ imp.findpkgMu.Unlock()
+
+ ioLimit <- true
+ v.bp, v.err = imp.conf.FindPackage(imp.conf.build(), importPath, fromDir, mode)
+ <-ioLimit
+
+ if _, ok := v.err.(*build.NoGoError); ok {
+ v.err = nil // empty directory is not an error
+ }
+
+ close(v.ready) // broadcast ready condition
+ }
+ return v.bp, v.err
+}
+
+// importAll loads, parses, and type-checks the specified packages in
+// parallel and returns their completed importInfos in unspecified order.
+//
+// fromPath is the package path of the importing package, if it is
+// importable, "" otherwise. It is used for cycle detection.
+//
+// fromDir is the directory containing the import declaration that
+// caused these imports.
+//
+func (imp *importer) importAll(fromPath, fromDir string, imports map[string]bool, mode build.ImportMode) (infos []*PackageInfo, errors []importError) {
+ // TODO(adonovan): opt: do the loop in parallel once
+ // findPackage is non-blocking.
+ var pending []*importInfo
+ for importPath := range imports {
+ bp, err := imp.findPackage(importPath, fromDir, mode)
+ if err != nil {
+ errors = append(errors, importError{
+ path: importPath,
+ err: err,
+ })
+ continue
+ }
+ pending = append(pending, imp.startLoad(bp))
+ }
+
+ if fromPath != "" {
+ // We're loading a set of imports.
+ //
+ // We must record graph edges from the importing package
+ // to its dependencies, and check for cycles.
+ imp.graphMu.Lock()
+ deps, ok := imp.graph[fromPath]
+ if !ok {
+ deps = make(map[string]bool)
+ imp.graph[fromPath] = deps
+ }
+ for _, ii := range pending {
+ deps[ii.path] = true
+ }
+ imp.graphMu.Unlock()
+ }
+
+ for _, ii := range pending {
+ if fromPath != "" {
+ if cycle := imp.findPath(ii.path, fromPath); cycle != nil {
+ // Cycle-forming import: we must not await its
+ // completion since it would deadlock.
+ //
+ // We don't record the error in ii since
+ // the error is really associated with the
+ // cycle-forming edge, not the package itself.
+ // (Also it would complicate the
+ // invariants of importPath completion.)
+ if trace {
+ fmt.Fprintf(os.Stderr, "import cycle: %q\n", cycle)
+ }
+ continue
+ }
+ }
+ ii.awaitCompletion()
+ infos = append(infos, ii.info)
+ }
+
+ return infos, errors
+}
+
+// findPath returns an arbitrary path from 'from' to 'to' in the import
+// graph, or nil if there was none.
+func (imp *importer) findPath(from, to string) []string {
+ imp.graphMu.Lock()
+ defer imp.graphMu.Unlock()
+
+ seen := make(map[string]bool)
+ var search func(stack []string, importPath string) []string
+ search = func(stack []string, importPath string) []string {
+ if !seen[importPath] {
+ seen[importPath] = true
+ stack = append(stack, importPath)
+ if importPath == to {
+ return stack
+ }
+ for x := range imp.graph[importPath] {
+ if p := search(stack, x); p != nil {
+ return p
+ }
+ }
+ }
+ return nil
+ }
+ return search(make([]string, 0, 20), from)
+}
+
+// startLoad initiates the loading, parsing and type-checking of the
+// specified package and its dependencies, if it has not already begun.
+//
+// It returns an importInfo, not necessarily in a completed state. The
+// caller must call awaitCompletion() before accessing its info field.
+//
+// startLoad is concurrency-safe and idempotent.
+//
+func (imp *importer) startLoad(bp *build.Package) *importInfo {
+ path := bp.ImportPath
+ imp.importedMu.Lock()
+ ii, ok := imp.imported[path]
+ if !ok {
+ ii = &importInfo{path: path, complete: make(chan struct{})}
+ imp.imported[path] = ii
+ go func() {
+ info := imp.load(bp)
+ ii.Complete(info)
+ }()
+ }
+ imp.importedMu.Unlock()
+
+ return ii
+}
+
+// load implements package loading by parsing Go source files
+// located by go/build.
+func (imp *importer) load(bp *build.Package) *PackageInfo {
+ info := imp.newPackageInfo(bp.ImportPath, bp.Dir)
+ info.Importable = true
+ files, errs := imp.conf.parsePackageFiles(bp, 'g')
+ for _, err := range errs {
+ info.appendError(err)
+ }
+
+ imp.addFiles(info, files, true)
+
+ imp.progMu.Lock()
+ imp.prog.importMap[bp.ImportPath] = info.Pkg
+ imp.progMu.Unlock()
+
+ return info
+}
+
+// addFiles adds and type-checks the specified files to info, loading
+// their dependencies if needed. The order of files determines the
+// package initialization order. It may be called multiple times on the
+// same package. Errors are appended to the info.Errors field.
+//
+// cycleCheck determines whether the imports within files create
+// dependency edges that should be checked for potential cycles.
+//
+func (imp *importer) addFiles(info *PackageInfo, files []*ast.File, cycleCheck bool) {
+ // Ensure the dependencies are loaded, in parallel.
+ var fromPath string
+ if cycleCheck {
+ fromPath = info.Pkg.Path()
+ }
+ // TODO(adonovan): opt: make the caller do scanImports.
+ // Callers with a build.Package can skip it.
+ imp.importAll(fromPath, info.dir, scanImports(files), 0)
+
+ if trace {
+ fmt.Fprintf(os.Stderr, "%s: start %q (%d)\n",
+ time.Since(imp.start), info.Pkg.Path(), len(files))
+ }
+
+ if info.Pkg == types.Unsafe && len(files) > 0 {
+ panic(`addFiles("unsafe") not permitted`)
+ }
+
+ // Ignore the returned (first) error since we
+ // already collect them all in the PackageInfo.
+ info.checker.Files(files)
+ info.Files = append(info.Files, files...)
+
+ if imp.conf.AfterTypeCheck != nil {
+ imp.conf.AfterTypeCheck(info, files)
+ }
+
+ if trace {
+ fmt.Fprintf(os.Stderr, "%s: stop %q\n",
+ time.Since(imp.start), info.Pkg.Path())
+ }
+}
+
+func (imp *importer) newPackageInfo(path, dir string) *PackageInfo {
+ var pkg *types.Package
+ if path == "unsafe" {
+ pkg = types.Unsafe
+ } else {
+ pkg = types.NewPackage(path, "")
+ }
+ info := &PackageInfo{
+ Pkg: pkg,
+ Info: types.Info{
+ Types: make(map[ast.Expr]types.TypeAndValue),
+ Defs: make(map[*ast.Ident]types.Object),
+ Uses: make(map[*ast.Ident]types.Object),
+ Implicits: make(map[ast.Node]types.Object),
+ Scopes: make(map[ast.Node]*types.Scope),
+ Selections: make(map[*ast.SelectorExpr]*types.Selection),
+ },
+ errorFunc: imp.conf.TypeChecker.Error,
+ dir: dir,
+ }
+
+ // Copy the types.Config so we can vary it across PackageInfos.
+ tc := imp.conf.TypeChecker
+ tc.IgnoreFuncBodies = false
+ if f := imp.conf.TypeCheckFuncBodies; f != nil {
+ tc.IgnoreFuncBodies = !f(path)
+ }
+ tc.Importer = closure{imp, info}
+ tc.Error = info.appendError // appendError wraps the user's Error function
+
+ info.checker = types.NewChecker(&tc, imp.conf.fset(), pkg, &info.Info)
+ imp.progMu.Lock()
+ imp.prog.AllPackages[pkg] = info
+ imp.progMu.Unlock()
+ return info
+}
+
+type closure struct {
+ imp *importer
+ info *PackageInfo
+}
+
+func (c closure) Import(to string) (*types.Package, error) { return c.imp.doImport(c.info, to) }
diff --git a/vendor/golang.org/x/tools/go/loader/loader_test.go b/vendor/golang.org/x/tools/go/loader/loader_test.go
new file mode 100644
index 00000000..807f798c
--- /dev/null
+++ b/vendor/golang.org/x/tools/go/loader/loader_test.go
@@ -0,0 +1,802 @@
+// Copyright 2013 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// No testdata on Android.
+
+// +build !android
+
+package loader_test
+
+import (
+ "fmt"
+ "go/build"
+ "go/constant"
+ "go/types"
+ "path/filepath"
+ "reflect"
+ "sort"
+ "strings"
+ "sync"
+ "testing"
+
+ "golang.org/x/tools/go/buildutil"
+ "golang.org/x/tools/go/loader"
+)
+
+// TestFromArgs checks that conf.FromArgs populates conf correctly.
+// It does no I/O.
+func TestFromArgs(t *testing.T) {
+ type result struct {
+ Err string
+ Rest []string
+ ImportPkgs map[string]bool
+ CreatePkgs []loader.PkgSpec
+ }
+ for _, test := range []struct {
+ args []string
+ tests bool
+ want result
+ }{
+ // Mix of existing and non-existent packages.
+ {
+ args: []string{"nosuchpkg", "errors"},
+ want: result{
+ ImportPkgs: map[string]bool{"errors": false, "nosuchpkg": false},
+ },
+ },
+ // Same, with -test flag.
+ {
+ args: []string{"nosuchpkg", "errors"},
+ tests: true,
+ want: result{
+ ImportPkgs: map[string]bool{"errors": true, "nosuchpkg": true},
+ },
+ },
+ // Surplus arguments.
+ {
+ args: []string{"fmt", "errors", "--", "surplus"},
+ want: result{
+ Rest: []string{"surplus"},
+ ImportPkgs: map[string]bool{"errors": false, "fmt": false},
+ },
+ },
+ // Ad hoc package specified as *.go files.
+ {
+ args: []string{"foo.go", "bar.go"},
+ want: result{CreatePkgs: []loader.PkgSpec{{
+ Filenames: []string{"foo.go", "bar.go"},
+ }}},
+ },
+ // Mixture of *.go and import paths.
+ {
+ args: []string{"foo.go", "fmt"},
+ want: result{
+ Err: "named files must be .go files: fmt",
+ },
+ },
+ } {
+ var conf loader.Config
+ rest, err := conf.FromArgs(test.args, test.tests)
+ got := result{
+ Rest: rest,
+ ImportPkgs: conf.ImportPkgs,
+ CreatePkgs: conf.CreatePkgs,
+ }
+ if err != nil {
+ got.Err = err.Error()
+ }
+ if !reflect.DeepEqual(got, test.want) {
+ t.Errorf("FromArgs(%q) = %+v, want %+v", test.args, got, test.want)
+ }
+ }
+}
+
+func TestLoad_NoInitialPackages(t *testing.T) {
+ var conf loader.Config
+
+ const wantErr = "no initial packages were loaded"
+
+ prog, err := conf.Load()
+ if err == nil {
+ t.Errorf("Load succeeded unexpectedly, want %q", wantErr)
+ } else if err.Error() != wantErr {
+ t.Errorf("Load failed with wrong error %q, want %q", err, wantErr)
+ }
+ if prog != nil {
+ t.Errorf("Load unexpectedly returned a Program")
+ }
+}
+
+func TestLoad_MissingInitialPackage(t *testing.T) {
+ var conf loader.Config
+ conf.Import("nosuchpkg")
+ conf.Import("errors")
+
+ const wantErr = "couldn't load packages due to errors: nosuchpkg"
+
+ prog, err := conf.Load()
+ if err == nil {
+ t.Errorf("Load succeeded unexpectedly, want %q", wantErr)
+ } else if err.Error() != wantErr {
+ t.Errorf("Load failed with wrong error %q, want %q", err, wantErr)
+ }
+ if prog != nil {
+ t.Errorf("Load unexpectedly returned a Program")
+ }
+}
+
+func TestLoad_MissingInitialPackage_AllowErrors(t *testing.T) {
+ var conf loader.Config
+ conf.AllowErrors = true
+ conf.Import("nosuchpkg")
+ conf.ImportWithTests("errors")
+
+ prog, err := conf.Load()
+ if err != nil {
+ t.Errorf("Load failed unexpectedly: %v", err)
+ }
+ if prog == nil {
+ t.Fatalf("Load returned a nil Program")
+ }
+ if got, want := created(prog), "errors_test"; got != want {
+ t.Errorf("Created = %s, want %s", got, want)
+ }
+ if got, want := imported(prog), "errors"; got != want {
+ t.Errorf("Imported = %s, want %s", got, want)
+ }
+}
+
+func TestCreateUnnamedPackage(t *testing.T) {
+ var conf loader.Config
+ conf.CreateFromFilenames("")
+ prog, err := conf.Load()
+ if err != nil {
+ t.Fatalf("Load failed: %v", err)
+ }
+ if got, want := fmt.Sprint(prog.InitialPackages()), "[(unnamed)]"; got != want {
+ t.Errorf("InitialPackages = %s, want %s", got, want)
+ }
+}
+
+func TestLoad_MissingFileInCreatedPackage(t *testing.T) {
+ var conf loader.Config
+ conf.CreateFromFilenames("", "missing.go")
+
+ const wantErr = "couldn't load packages due to errors: (unnamed)"
+
+ prog, err := conf.Load()
+ if prog != nil {
+ t.Errorf("Load unexpectedly returned a Program")
+ }
+ if err == nil {
+ t.Fatalf("Load succeeded unexpectedly, want %q", wantErr)
+ }
+ if err.Error() != wantErr {
+ t.Fatalf("Load failed with wrong error %q, want %q", err, wantErr)
+ }
+}
+
+func TestLoad_MissingFileInCreatedPackage_AllowErrors(t *testing.T) {
+ conf := loader.Config{AllowErrors: true}
+ conf.CreateFromFilenames("", "missing.go")
+
+ prog, err := conf.Load()
+ if err != nil {
+ t.Errorf("Load failed: %v", err)
+ }
+ if got, want := fmt.Sprint(prog.InitialPackages()), "[(unnamed)]"; got != want {
+ t.Fatalf("InitialPackages = %s, want %s", got, want)
+ }
+}
+
+func TestLoad_ParseError(t *testing.T) {
+ var conf loader.Config
+ conf.CreateFromFilenames("badpkg", "testdata/badpkgdecl.go")
+
+ const wantErr = "couldn't load packages due to errors: badpkg"
+
+ prog, err := conf.Load()
+ if prog != nil {
+ t.Errorf("Load unexpectedly returned a Program")
+ }
+ if err == nil {
+ t.Fatalf("Load succeeded unexpectedly, want %q", wantErr)
+ }
+ if err.Error() != wantErr {
+ t.Fatalf("Load failed with wrong error %q, want %q", err, wantErr)
+ }
+}
+
+func TestLoad_ParseError_AllowErrors(t *testing.T) {
+ var conf loader.Config
+ conf.AllowErrors = true
+ conf.CreateFromFilenames("badpkg", "testdata/badpkgdecl.go")
+
+ prog, err := conf.Load()
+ if err != nil {
+ t.Errorf("Load failed unexpectedly: %v", err)
+ }
+ if prog == nil {
+ t.Fatalf("Load returned a nil Program")
+ }
+ if got, want := created(prog), "badpkg"; got != want {
+ t.Errorf("Created = %s, want %s", got, want)
+ }
+
+ badpkg := prog.Created[0]
+ if len(badpkg.Files) != 1 {
+ t.Errorf("badpkg has %d files, want 1", len(badpkg.Files))
+ }
+ wantErr := filepath.Join("testdata", "badpkgdecl.go") + ":1:34: expected 'package', found 'EOF'"
+ if !hasError(badpkg.Errors, wantErr) {
+ t.Errorf("badpkg.Errors = %v, want %s", badpkg.Errors, wantErr)
+ }
+}
+
+func TestLoad_FromSource_Success(t *testing.T) {
+ var conf loader.Config
+ conf.CreateFromFilenames("P", "testdata/a.go", "testdata/b.go")
+
+ prog, err := conf.Load()
+ if err != nil {
+ t.Errorf("Load failed unexpectedly: %v", err)
+ }
+ if prog == nil {
+ t.Fatalf("Load returned a nil Program")
+ }
+ if got, want := created(prog), "P"; got != want {
+ t.Errorf("Created = %s, want %s", got, want)
+ }
+}
+
+func TestLoad_FromImports_Success(t *testing.T) {
+ var conf loader.Config
+ conf.ImportWithTests("fmt")
+ conf.ImportWithTests("errors")
+
+ prog, err := conf.Load()
+ if err != nil {
+ t.Errorf("Load failed unexpectedly: %v", err)
+ }
+ if prog == nil {
+ t.Fatalf("Load returned a nil Program")
+ }
+ if got, want := created(prog), "errors_test fmt_test"; got != want {
+ t.Errorf("Created = %q, want %s", got, want)
+ }
+ if got, want := imported(prog), "errors fmt"; got != want {
+ t.Errorf("Imported = %s, want %s", got, want)
+ }
+ // Check set of transitive packages.
+ // There are >30 and the set may grow over time, so only check a few.
+ want := map[string]bool{
+ "strings": true,
+ "time": true,
+ "runtime": true,
+ "testing": true,
+ "unicode": true,
+ }
+ for _, path := range all(prog) {
+ delete(want, path)
+ }
+ if len(want) > 0 {
+ t.Errorf("AllPackages is missing these keys: %q", keys(want))
+ }
+}
+
+func TestLoad_MissingIndirectImport(t *testing.T) {
+ pkgs := map[string]string{
+ "a": `package a; import _ "b"`,
+ "b": `package b; import _ "c"`,
+ }
+ conf := loader.Config{Build: fakeContext(pkgs)}
+ conf.Import("a")
+
+ const wantErr = "couldn't load packages due to errors: b"
+
+ prog, err := conf.Load()
+ if err == nil {
+ t.Errorf("Load succeeded unexpectedly, want %q", wantErr)
+ } else if err.Error() != wantErr {
+ t.Errorf("Load failed with wrong error %q, want %q", err, wantErr)
+ }
+ if prog != nil {
+ t.Errorf("Load unexpectedly returned a Program")
+ }
+}
+
+func TestLoad_BadDependency_AllowErrors(t *testing.T) {
+ for _, test := range []struct {
+ descr string
+ pkgs map[string]string
+ wantPkgs string
+ }{
+
+ {
+ descr: "missing dependency",
+ pkgs: map[string]string{
+ "a": `package a; import _ "b"`,
+ "b": `package b; import _ "c"`,
+ },
+ wantPkgs: "a b",
+ },
+ {
+ descr: "bad package decl in dependency",
+ pkgs: map[string]string{
+ "a": `package a; import _ "b"`,
+ "b": `package b; import _ "c"`,
+ "c": `package`,
+ },
+ wantPkgs: "a b",
+ },
+ {
+ descr: "parse error in dependency",
+ pkgs: map[string]string{
+ "a": `package a; import _ "b"`,
+ "b": `package b; import _ "c"`,
+ "c": `package c; var x = `,
+ },
+ wantPkgs: "a b c",
+ },
+ } {
+ conf := loader.Config{
+ AllowErrors: true,
+ Build: fakeContext(test.pkgs),
+ }
+ conf.Import("a")
+
+ prog, err := conf.Load()
+ if err != nil {
+ t.Errorf("%s: Load failed unexpectedly: %v", test.descr, err)
+ }
+ if prog == nil {
+ t.Fatalf("%s: Load returned a nil Program", test.descr)
+ }
+
+ if got, want := imported(prog), "a"; got != want {
+ t.Errorf("%s: Imported = %s, want %s", test.descr, got, want)
+ }
+ if got := all(prog); strings.Join(got, " ") != test.wantPkgs {
+ t.Errorf("%s: AllPackages = %s, want %s", test.descr, got, test.wantPkgs)
+ }
+ }
+}
+
+func TestCwd(t *testing.T) {
+ ctxt := fakeContext(map[string]string{"one/two/three": `package three`})
+ for _, test := range []struct {
+ cwd, arg, want string
+ }{
+ {cwd: "/go/src/one", arg: "./two/three", want: "one/two/three"},
+ {cwd: "/go/src/one", arg: "../one/two/three", want: "one/two/three"},
+ {cwd: "/go/src/one", arg: "one/two/three", want: "one/two/three"},
+ {cwd: "/go/src/one/two/three", arg: ".", want: "one/two/three"},
+ {cwd: "/go/src/one", arg: "two/three", want: ""},
+ } {
+ conf := loader.Config{
+ Cwd: test.cwd,
+ Build: ctxt,
+ }
+ conf.Import(test.arg)
+
+ var got string
+ prog, err := conf.Load()
+ if prog != nil {
+ got = imported(prog)
+ }
+ if got != test.want {
+ t.Errorf("Load(%s) from %s: Imported = %s, want %s",
+ test.arg, test.cwd, got, test.want)
+ if err != nil {
+ t.Errorf("Load failed: %v", err)
+ }
+ }
+ }
+}
+
+func TestLoad_vendor(t *testing.T) {
+ pkgs := map[string]string{
+ "a": `package a; import _ "x"`,
+ "a/vendor": ``, // mkdir a/vendor
+ "a/vendor/x": `package xa`,
+ "b": `package b; import _ "x"`,
+ "b/vendor": ``, // mkdir b/vendor
+ "b/vendor/x": `package xb`,
+ "c": `package c; import _ "x"`,
+ "x": `package xc`,
+ }
+ conf := loader.Config{Build: fakeContext(pkgs)}
+ conf.Import("a")
+ conf.Import("b")
+ conf.Import("c")
+
+ prog, err := conf.Load()
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ // Check that a, b, and c see different versions of x.
+ for _, r := range "abc" {
+ name := string(r)
+ got := prog.Package(name).Pkg.Imports()[0]
+ want := "x" + name
+ if got.Name() != want {
+ t.Errorf("package %s import %q = %s, want %s",
+ name, "x", got.Name(), want)
+ }
+ }
+}
+
+func TestVendorCwd(t *testing.T) {
+ // Test the interaction of cwd and vendor directories.
+ ctxt := fakeContext(map[string]string{
+ "net": ``, // mkdir net
+ "net/http": `package http; import _ "hpack"`,
+ "vendor": ``, // mkdir vendor
+ "vendor/hpack": `package vendorhpack`,
+ "hpack": `package hpack`,
+ })
+ for i, test := range []struct {
+ cwd, arg, want string
+ }{
+ {cwd: "/go/src/net", arg: "http"}, // not found
+ {cwd: "/go/src/net", arg: "./http", want: "net/http vendor/hpack"},
+ {cwd: "/go/src/net", arg: "hpack", want: "vendor/hpack"},
+ {cwd: "/go/src/vendor", arg: "hpack", want: "vendor/hpack"},
+ {cwd: "/go/src/vendor", arg: "./hpack", want: "vendor/hpack"},
+ } {
+ conf := loader.Config{
+ Cwd: test.cwd,
+ Build: ctxt,
+ }
+ conf.Import(test.arg)
+
+ var got string
+ prog, err := conf.Load()
+ if prog != nil {
+ got = strings.Join(all(prog), " ")
+ }
+ if got != test.want {
+ t.Errorf("#%d: Load(%s) from %s: got %s, want %s",
+ i, test.arg, test.cwd, got, test.want)
+ if err != nil {
+ t.Errorf("Load failed: %v", err)
+ }
+ }
+ }
+}
+
+func TestVendorCwdIssue16580(t *testing.T) {
+ // Regression test for Go issue 16580.
+ // Import decls in "created" packages were vendor-resolved
+ // w.r.t. cwd, not the parent directory of the package's files.
+ ctxt := fakeContext(map[string]string{
+ "a": ``, // mkdir a
+ "a/vendor": ``, // mkdir a/vendor
+ "a/vendor/b": `package b; const X = true`,
+ "b": `package b; const X = false`,
+ })
+ for _, test := range []struct {
+ filename, cwd string
+ want bool // expected value of b.X; depends on filename, not on cwd
+ }{
+ {filename: "c.go", cwd: "/go/src", want: false},
+ {filename: "c.go", cwd: "/go/src/a", want: false},
+ {filename: "c.go", cwd: "/go/src/a/b", want: false},
+ {filename: "c.go", cwd: "/go/src/a/vendor/b", want: false},
+
+ {filename: "/go/src/a/c.go", cwd: "/go/src", want: true},
+ {filename: "/go/src/a/c.go", cwd: "/go/src/a", want: true},
+ {filename: "/go/src/a/c.go", cwd: "/go/src/a/b", want: true},
+ {filename: "/go/src/a/c.go", cwd: "/go/src/a/vendor/b", want: true},
+
+ {filename: "/go/src/c/c.go", cwd: "/go/src", want: false},
+ {filename: "/go/src/c/c.go", cwd: "/go/src/a", want: false},
+ {filename: "/go/src/c/c.go", cwd: "/go/src/a/b", want: false},
+ {filename: "/go/src/c/c.go", cwd: "/go/src/a/vendor/b", want: false},
+ } {
+ conf := loader.Config{
+ Cwd: test.cwd,
+ Build: ctxt,
+ }
+ f, err := conf.ParseFile(test.filename, `package dummy; import "b"; const X = b.X`)
+ if err != nil {
+ t.Fatal(f)
+ }
+ conf.CreateFromFiles("dummy", f)
+
+ prog, err := conf.Load()
+ if err != nil {
+ t.Errorf("%+v: Load failed: %v", test, err)
+ continue
+ }
+
+ x := constant.BoolVal(prog.Created[0].Pkg.Scope().Lookup("X").(*types.Const).Val())
+ if x != test.want {
+ t.Errorf("%+v: b.X = %t", test, x)
+ }
+ }
+
+ // TODO(adonovan): also test imports within XTestGoFiles.
+}
+
+// TODO(adonovan): more Load tests:
+//
+// failures:
+// - to parse package decl of *_test.go files
+// - to parse package decl of external *_test.go files
+// - to parse whole of *_test.go files
+// - to parse whole of external *_test.go files
+// - to open a *.go file during import scanning
+// - to import from binary
+
+// features:
+// - InitialPackages
+// - PackageCreated hook
+// - TypeCheckFuncBodies hook
+
+func TestTransitivelyErrorFreeFlag(t *testing.T) {
+ // Create an minimal custom build.Context
+ // that fakes the following packages:
+ //
+ // a --> b --> c! c has an error
+ // \ d and e are transitively error-free.
+ // e --> d
+ //
+ // Each package [a-e] consists of one file, x.go.
+ pkgs := map[string]string{
+ "a": `package a; import (_ "b"; _ "e")`,
+ "b": `package b; import _ "c"`,
+ "c": `package c; func f() { _ = int(false) }`, // type error within function body
+ "d": `package d;`,
+ "e": `package e; import _ "d"`,
+ }
+ conf := loader.Config{
+ AllowErrors: true,
+ Build: fakeContext(pkgs),
+ }
+ conf.Import("a")
+
+ prog, err := conf.Load()
+ if err != nil {
+ t.Errorf("Load failed: %s", err)
+ }
+ if prog == nil {
+ t.Fatalf("Load returned nil *Program")
+ }
+
+ for pkg, info := range prog.AllPackages {
+ var wantErr, wantTEF bool
+ switch pkg.Path() {
+ case "a", "b":
+ case "c":
+ wantErr = true
+ case "d", "e":
+ wantTEF = true
+ default:
+ t.Errorf("unexpected package: %q", pkg.Path())
+ continue
+ }
+
+ if (info.Errors != nil) != wantErr {
+ if wantErr {
+ t.Errorf("Package %q.Error = nil, want error", pkg.Path())
+ } else {
+ t.Errorf("Package %q has unexpected Errors: %v",
+ pkg.Path(), info.Errors)
+ }
+ }
+
+ if info.TransitivelyErrorFree != wantTEF {
+ t.Errorf("Package %q.TransitivelyErrorFree=%t, want %t",
+ pkg.Path(), info.TransitivelyErrorFree, wantTEF)
+ }
+ }
+}
+
+// Test that syntax (scan/parse), type, and loader errors are recorded
+// (in PackageInfo.Errors) and reported (via Config.TypeChecker.Error).
+func TestErrorReporting(t *testing.T) {
+ pkgs := map[string]string{
+ "a": `package a; import (_ "b"; _ "c"); var x int = false`,
+ "b": `package b; 'syntax error!`,
+ }
+ conf := loader.Config{
+ AllowErrors: true,
+ Build: fakeContext(pkgs),
+ }
+ var mu sync.Mutex
+ var allErrors []error
+ conf.TypeChecker.Error = func(err error) {
+ mu.Lock()
+ allErrors = append(allErrors, err)
+ mu.Unlock()
+ }
+ conf.Import("a")
+
+ prog, err := conf.Load()
+ if err != nil {
+ t.Errorf("Load failed: %s", err)
+ }
+ if prog == nil {
+ t.Fatalf("Load returned nil *Program")
+ }
+
+ // TODO(adonovan): test keys of ImportMap.
+
+ // Check errors recorded in each PackageInfo.
+ for pkg, info := range prog.AllPackages {
+ switch pkg.Path() {
+ case "a":
+ if !hasError(info.Errors, "cannot convert false") {
+ t.Errorf("a.Errors = %v, want bool conversion (type) error", info.Errors)
+ }
+ if !hasError(info.Errors, "could not import c") {
+ t.Errorf("a.Errors = %v, want import (loader) error", info.Errors)
+ }
+ case "b":
+ if !hasError(info.Errors, "rune literal not terminated") {
+ t.Errorf("b.Errors = %v, want unterminated literal (syntax) error", info.Errors)
+ }
+ }
+ }
+
+ // Check errors reported via error handler.
+ if !hasError(allErrors, "cannot convert false") ||
+ !hasError(allErrors, "rune literal not terminated") ||
+ !hasError(allErrors, "could not import c") {
+ t.Errorf("allErrors = %v, want syntax, type and loader errors", allErrors)
+ }
+}
+
+func TestCycles(t *testing.T) {
+ for _, test := range []struct {
+ descr string
+ ctxt *build.Context
+ wantErr string
+ }{
+ {
+ "self-cycle",
+ fakeContext(map[string]string{
+ "main": `package main; import _ "selfcycle"`,
+ "selfcycle": `package selfcycle; import _ "selfcycle"`,
+ }),
+ `import cycle: selfcycle -> selfcycle`,
+ },
+ {
+ "three-package cycle",
+ fakeContext(map[string]string{
+ "main": `package main; import _ "a"`,
+ "a": `package a; import _ "b"`,
+ "b": `package b; import _ "c"`,
+ "c": `package c; import _ "a"`,
+ }),
+ `import cycle: c -> a -> b -> c`,
+ },
+ {
+ "self-cycle in dependency of test file",
+ buildutil.FakeContext(map[string]map[string]string{
+ "main": {
+ "main.go": `package main`,
+ "main_test.go": `package main; import _ "a"`,
+ },
+ "a": {
+ "a.go": `package a; import _ "a"`,
+ },
+ }),
+ `import cycle: a -> a`,
+ },
+ // TODO(adonovan): fix: these fail
+ // {
+ // "two-package cycle in dependency of test file",
+ // buildutil.FakeContext(map[string]map[string]string{
+ // "main": {
+ // "main.go": `package main`,
+ // "main_test.go": `package main; import _ "a"`,
+ // },
+ // "a": {
+ // "a.go": `package a; import _ "main"`,
+ // },
+ // }),
+ // `import cycle: main -> a -> main`,
+ // },
+ // {
+ // "self-cycle in augmented package",
+ // buildutil.FakeContext(map[string]map[string]string{
+ // "main": {
+ // "main.go": `package main`,
+ // "main_test.go": `package main; import _ "main"`,
+ // },
+ // }),
+ // `import cycle: main -> main`,
+ // },
+ } {
+ conf := loader.Config{
+ AllowErrors: true,
+ Build: test.ctxt,
+ }
+ var mu sync.Mutex
+ var allErrors []error
+ conf.TypeChecker.Error = func(err error) {
+ mu.Lock()
+ allErrors = append(allErrors, err)
+ mu.Unlock()
+ }
+ conf.ImportWithTests("main")
+
+ prog, err := conf.Load()
+ if err != nil {
+ t.Errorf("%s: Load failed: %s", test.descr, err)
+ }
+ if prog == nil {
+ t.Fatalf("%s: Load returned nil *Program", test.descr)
+ }
+
+ if !hasError(allErrors, test.wantErr) {
+ t.Errorf("%s: Load() errors = %q, want %q",
+ test.descr, allErrors, test.wantErr)
+ }
+ }
+
+ // TODO(adonovan):
+ // - Test that in a legal test cycle, none of the symbols
+ // defined by augmentation are visible via import.
+}
+
+// ---- utilities ----
+
+// Simplifying wrapper around buildutil.FakeContext for single-file packages.
+func fakeContext(pkgs map[string]string) *build.Context {
+ pkgs2 := make(map[string]map[string]string)
+ for path, content := range pkgs {
+ pkgs2[path] = map[string]string{"x.go": content}
+ }
+ return buildutil.FakeContext(pkgs2)
+}
+
+func hasError(errors []error, substr string) bool {
+ for _, err := range errors {
+ if strings.Contains(err.Error(), substr) {
+ return true
+ }
+ }
+ return false
+}
+
+func keys(m map[string]bool) (keys []string) {
+ for key := range m {
+ keys = append(keys, key)
+ }
+ sort.Strings(keys)
+ return
+}
+
+// Returns all loaded packages.
+func all(prog *loader.Program) []string {
+ var pkgs []string
+ for _, info := range prog.AllPackages {
+ pkgs = append(pkgs, info.Pkg.Path())
+ }
+ sort.Strings(pkgs)
+ return pkgs
+}
+
+// Returns initially imported packages, as a string.
+func imported(prog *loader.Program) string {
+ var pkgs []string
+ for _, info := range prog.Imported {
+ pkgs = append(pkgs, info.Pkg.Path())
+ }
+ sort.Strings(pkgs)
+ return strings.Join(pkgs, " ")
+}
+
+// Returns initially created packages, as a string.
+func created(prog *loader.Program) string {
+ var pkgs []string
+ for _, info := range prog.Created {
+ pkgs = append(pkgs, info.Pkg.Path())
+ }
+ return strings.Join(pkgs, " ")
+}
diff --git a/vendor/golang.org/x/tools/go/loader/stdlib_test.go b/vendor/golang.org/x/tools/go/loader/stdlib_test.go
new file mode 100644
index 00000000..2cd066f8
--- /dev/null
+++ b/vendor/golang.org/x/tools/go/loader/stdlib_test.go
@@ -0,0 +1,201 @@
+// Copyright 2013 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package loader_test
+
+// This file enumerates all packages beneath $GOROOT, loads them, plus
+// their external tests if any, runs the type checker on them, and
+// prints some summary information.
+
+import (
+ "bytes"
+ "fmt"
+ "go/ast"
+ "go/build"
+ "go/token"
+ "go/types"
+ "io/ioutil"
+ "path/filepath"
+ "runtime"
+ "strings"
+ "testing"
+ "time"
+
+ "golang.org/x/tools/go/buildutil"
+ "golang.org/x/tools/go/loader"
+)
+
+func TestStdlib(t *testing.T) {
+ if runtime.GOOS == "android" {
+ t.Skipf("incomplete std lib on %s", runtime.GOOS)
+ }
+ if testing.Short() {
+ t.Skip("skipping in short mode; uses tons of memory (golang.org/issue/14113)")
+ }
+
+ runtime.GC()
+ t0 := time.Now()
+ var memstats runtime.MemStats
+ runtime.ReadMemStats(&memstats)
+ alloc := memstats.Alloc
+
+ // Load, parse and type-check the program.
+ ctxt := build.Default // copy
+ ctxt.GOPATH = "" // disable GOPATH
+ conf := loader.Config{Build: &ctxt}
+ for _, path := range buildutil.AllPackages(conf.Build) {
+ conf.ImportWithTests(path)
+ }
+
+ prog, err := conf.Load()
+ if err != nil {
+ t.Fatalf("Load failed: %v", err)
+ }
+
+ t1 := time.Now()
+ runtime.GC()
+ runtime.ReadMemStats(&memstats)
+
+ numPkgs := len(prog.AllPackages)
+ if want := 205; numPkgs < want {
+ t.Errorf("Loaded only %d packages, want at least %d", numPkgs, want)
+ }
+
+ // Dump package members.
+ if false {
+ for pkg := range prog.AllPackages {
+ fmt.Printf("Package %s:\n", pkg.Path())
+ scope := pkg.Scope()
+ qualifier := types.RelativeTo(pkg)
+ for _, name := range scope.Names() {
+ if ast.IsExported(name) {
+ fmt.Printf("\t%s\n", types.ObjectString(scope.Lookup(name), qualifier))
+ }
+ }
+ fmt.Println()
+ }
+ }
+
+ // Check that Test functions for io/ioutil, regexp and
+ // compress/bzip2 are all simultaneously present.
+ // (The apparent cycle formed when augmenting all three of
+ // these packages by their tests was the original motivation
+ // for reporting b/7114.)
+ //
+ // compress/bzip2.TestBitReader in bzip2_test.go imports io/ioutil
+ // io/ioutil.TestTempFile in tempfile_test.go imports regexp
+ // regexp.TestRE2Search in exec_test.go imports compress/bzip2
+ for _, test := range []struct{ pkg, fn string }{
+ {"io/ioutil", "TestTempFile"},
+ {"regexp", "TestRE2Search"},
+ {"compress/bzip2", "TestBitReader"},
+ } {
+ info := prog.Imported[test.pkg]
+ if info == nil {
+ t.Errorf("failed to load package %q", test.pkg)
+ continue
+ }
+ obj, _ := info.Pkg.Scope().Lookup(test.fn).(*types.Func)
+ if obj == nil {
+ t.Errorf("package %q has no func %q", test.pkg, test.fn)
+ continue
+ }
+ }
+
+ // Dump some statistics.
+
+ // determine line count
+ var lineCount int
+ prog.Fset.Iterate(func(f *token.File) bool {
+ lineCount += f.LineCount()
+ return true
+ })
+
+ t.Log("GOMAXPROCS: ", runtime.GOMAXPROCS(0))
+ t.Log("#Source lines: ", lineCount)
+ t.Log("Load/parse/typecheck: ", t1.Sub(t0))
+ t.Log("#MB: ", int64(memstats.Alloc-alloc)/1000000)
+}
+
+func TestCgoOption(t *testing.T) {
+ if testing.Short() {
+ t.Skip("skipping in short mode; uses tons of memory (golang.org/issue/14113)")
+ }
+ switch runtime.GOOS {
+ // On these systems, the net and os/user packages don't use cgo
+ // or the std library is incomplete (Android).
+ case "android", "plan9", "solaris", "windows":
+ t.Skipf("no cgo or incomplete std lib on %s", runtime.GOOS)
+ }
+ // In nocgo builds (e.g. linux-amd64-nocgo),
+ // there is no "runtime/cgo" package,
+ // so cgo-generated Go files will have a failing import.
+ if !build.Default.CgoEnabled {
+ return
+ }
+ // Test that we can load cgo-using packages with
+ // CGO_ENABLED=[01], which causes go/build to select pure
+ // Go/native implementations, respectively, based on build
+ // tags.
+ //
+ // Each entry specifies a package-level object and the generic
+ // file expected to define it when cgo is disabled.
+ // When cgo is enabled, the exact file is not specified (since
+ // it varies by platform), but must differ from the generic one.
+ //
+ // The test also loads the actual file to verify that the
+ // object is indeed defined at that location.
+ for _, test := range []struct {
+ pkg, name, genericFile string
+ }{
+ {"net", "cgoLookupHost", "cgo_stub.go"},
+ {"os/user", "current", "lookup_stubs.go"},
+ } {
+ ctxt := build.Default
+ for _, ctxt.CgoEnabled = range []bool{false, true} {
+ conf := loader.Config{Build: &ctxt}
+ conf.Import(test.pkg)
+ prog, err := conf.Load()
+ if err != nil {
+ t.Errorf("Load failed: %v", err)
+ continue
+ }
+ info := prog.Imported[test.pkg]
+ if info == nil {
+ t.Errorf("package %s not found", test.pkg)
+ continue
+ }
+ obj := info.Pkg.Scope().Lookup(test.name)
+ if obj == nil {
+ t.Errorf("no object %s.%s", test.pkg, test.name)
+ continue
+ }
+ posn := prog.Fset.Position(obj.Pos())
+ t.Logf("%s: %s (CgoEnabled=%t)", posn, obj, ctxt.CgoEnabled)
+
+ gotFile := filepath.Base(posn.Filename)
+ filesMatch := gotFile == test.genericFile
+
+ if ctxt.CgoEnabled && filesMatch {
+ t.Errorf("CGO_ENABLED=1: %s found in %s, want native file",
+ obj, gotFile)
+ } else if !ctxt.CgoEnabled && !filesMatch {
+ t.Errorf("CGO_ENABLED=0: %s found in %s, want %s",
+ obj, gotFile, test.genericFile)
+ }
+
+ // Load the file and check the object is declared at the right place.
+ b, err := ioutil.ReadFile(posn.Filename)
+ if err != nil {
+ t.Errorf("can't read %s: %s", posn.Filename, err)
+ continue
+ }
+ line := string(bytes.Split(b, []byte("\n"))[posn.Line-1])
+ ident := line[posn.Column-1:]
+ if !strings.HasPrefix(ident, test.name) {
+ t.Errorf("%s: %s not declared here (looking at %q)", posn, obj, ident)
+ }
+ }
+ }
+}
diff --git a/vendor/golang.org/x/tools/go/loader/util.go b/vendor/golang.org/x/tools/go/loader/util.go
new file mode 100644
index 00000000..7f38dd74
--- /dev/null
+++ b/vendor/golang.org/x/tools/go/loader/util.go
@@ -0,0 +1,124 @@
+// Copyright 2013 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package loader
+
+import (
+ "go/ast"
+ "go/build"
+ "go/parser"
+ "go/token"
+ "io"
+ "os"
+ "strconv"
+ "sync"
+
+ "golang.org/x/tools/go/buildutil"
+)
+
+// We use a counting semaphore to limit
+// the number of parallel I/O calls per process.
+var ioLimit = make(chan bool, 10)
+
+// parseFiles parses the Go source files within directory dir and
+// returns the ASTs of the ones that could be at least partially parsed,
+// along with a list of I/O and parse errors encountered.
+//
+// I/O is done via ctxt, which may specify a virtual file system.
+// displayPath is used to transform the filenames attached to the ASTs.
+//
+func parseFiles(fset *token.FileSet, ctxt *build.Context, displayPath func(string) string, dir string, files []string, mode parser.Mode) ([]*ast.File, []error) {
+ if displayPath == nil {
+ displayPath = func(path string) string { return path }
+ }
+ var wg sync.WaitGroup
+ n := len(files)
+ parsed := make([]*ast.File, n)
+ errors := make([]error, n)
+ for i, file := range files {
+ if !buildutil.IsAbsPath(ctxt, file) {
+ file = buildutil.JoinPath(ctxt, dir, file)
+ }
+ wg.Add(1)
+ go func(i int, file string) {
+ ioLimit <- true // wait
+ defer func() {
+ wg.Done()
+ <-ioLimit // signal
+ }()
+ var rd io.ReadCloser
+ var err error
+ if ctxt.OpenFile != nil {
+ rd, err = ctxt.OpenFile(file)
+ } else {
+ rd, err = os.Open(file)
+ }
+ if err != nil {
+ errors[i] = err // open failed
+ return
+ }
+
+ // ParseFile may return both an AST and an error.
+ parsed[i], errors[i] = parser.ParseFile(fset, displayPath(file), rd, mode)
+ rd.Close()
+ }(i, file)
+ }
+ wg.Wait()
+
+ // Eliminate nils, preserving order.
+ var o int
+ for _, f := range parsed {
+ if f != nil {
+ parsed[o] = f
+ o++
+ }
+ }
+ parsed = parsed[:o]
+
+ o = 0
+ for _, err := range errors {
+ if err != nil {
+ errors[o] = err
+ o++
+ }
+ }
+ errors = errors[:o]
+
+ return parsed, errors
+}
+
+// scanImports returns the set of all import paths from all
+// import specs in the specified files.
+func scanImports(files []*ast.File) map[string]bool {
+ imports := make(map[string]bool)
+ for _, f := range files {
+ for _, decl := range f.Decls {
+ if decl, ok := decl.(*ast.GenDecl); ok && decl.Tok == token.IMPORT {
+ for _, spec := range decl.Specs {
+ spec := spec.(*ast.ImportSpec)
+
+ // NB: do not assume the program is well-formed!
+ path, err := strconv.Unquote(spec.Path.Value)
+ if err != nil {
+ continue // quietly ignore the error
+ }
+ if path == "C" {
+ continue // skip pseudopackage
+ }
+ imports[path] = true
+ }
+ }
+ }
+ }
+ return imports
+}
+
+// ---------- Internal helpers ----------
+
+// TODO(adonovan): make this a method: func (*token.File) Contains(token.Pos)
+func tokenFileContainsPos(f *token.File, pos token.Pos) bool {
+ p := int(pos)
+ base := f.Base()
+ return base <= p && p < base+f.Size()
+}
diff --git a/vendor/golang.org/x/tools/imports/fastwalk.go b/vendor/golang.org/x/tools/imports/fastwalk.go
new file mode 100644
index 00000000..157c7922
--- /dev/null
+++ b/vendor/golang.org/x/tools/imports/fastwalk.go
@@ -0,0 +1,172 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// A faster implementation of filepath.Walk.
+//
+// filepath.Walk's design necessarily calls os.Lstat on each file,
+// even if the caller needs less info. And goimports only need to know
+// the type of each file. The kernel interface provides the type in
+// the Readdir call but the standard library ignored it.
+// fastwalk_unix.go contains a fork of the syscall routines.
+//
+// See golang.org/issue/16399
+
+package imports
+
+import (
+ "errors"
+ "os"
+ "path/filepath"
+ "runtime"
+)
+
+// traverseLink is a sentinel error for fastWalk, similar to filepath.SkipDir.
+var traverseLink = errors.New("traverse symlink, assuming target is a directory")
+
+// fastWalk walks the file tree rooted at root, calling walkFn for
+// each file or directory in the tree, including root.
+//
+// If fastWalk returns filepath.SkipDir, the directory is skipped.
+//
+// Unlike filepath.Walk:
+// * file stat calls must be done by the user.
+// The only provided metadata is the file type, which does not include
+// any permission bits.
+// * multiple goroutines stat the filesystem concurrently. The provided
+// walkFn must be safe for concurrent use.
+// * fastWalk can follow symlinks if walkFn returns the traverseLink
+// sentinel error. It is the walkFn's responsibility to prevent
+// fastWalk from going into symlink cycles.
+func fastWalk(root string, walkFn func(path string, typ os.FileMode) error) error {
+ // TODO(bradfitz): make numWorkers configurable? We used a
+ // minimum of 4 to give the kernel more info about multiple
+ // things we want, in hopes its I/O scheduling can take
+ // advantage of that. Hopefully most are in cache. Maybe 4 is
+ // even too low of a minimum. Profile more.
+ numWorkers := 4
+ if n := runtime.NumCPU(); n > numWorkers {
+ numWorkers = n
+ }
+ w := &walker{
+ fn: walkFn,
+ enqueuec: make(chan walkItem, numWorkers), // buffered for performance
+ workc: make(chan walkItem, numWorkers), // buffered for performance
+ donec: make(chan struct{}),
+
+ // buffered for correctness & not leaking goroutines:
+ resc: make(chan error, numWorkers),
+ }
+ defer close(w.donec)
+ // TODO(bradfitz): start the workers as needed? maybe not worth it.
+ for i := 0; i < numWorkers; i++ {
+ go w.doWork()
+ }
+ todo := []walkItem{{dir: root}}
+ out := 0
+ for {
+ workc := w.workc
+ var workItem walkItem
+ if len(todo) == 0 {
+ workc = nil
+ } else {
+ workItem = todo[len(todo)-1]
+ }
+ select {
+ case workc <- workItem:
+ todo = todo[:len(todo)-1]
+ out++
+ case it := <-w.enqueuec:
+ todo = append(todo, it)
+ case err := <-w.resc:
+ out--
+ if err != nil {
+ return err
+ }
+ if out == 0 && len(todo) == 0 {
+ // It's safe to quit here, as long as the buffered
+ // enqueue channel isn't also readable, which might
+ // happen if the worker sends both another unit of
+ // work and its result before the other select was
+ // scheduled and both w.resc and w.enqueuec were
+ // readable.
+ select {
+ case it := <-w.enqueuec:
+ todo = append(todo, it)
+ default:
+ return nil
+ }
+ }
+ }
+ }
+}
+
+// doWork reads directories as instructed (via workc) and runs the
+// user's callback function.
+func (w *walker) doWork() {
+ for {
+ select {
+ case <-w.donec:
+ return
+ case it := <-w.workc:
+ w.resc <- w.walk(it.dir, !it.callbackDone)
+ }
+ }
+}
+
+type walker struct {
+ fn func(path string, typ os.FileMode) error
+
+ donec chan struct{} // closed on fastWalk's return
+ workc chan walkItem // to workers
+ enqueuec chan walkItem // from workers
+ resc chan error // from workers
+}
+
+type walkItem struct {
+ dir string
+ callbackDone bool // callback already called; don't do it again
+}
+
+func (w *walker) enqueue(it walkItem) {
+ select {
+ case w.enqueuec <- it:
+ case <-w.donec:
+ }
+}
+
+func (w *walker) onDirEnt(dirName, baseName string, typ os.FileMode) error {
+ joined := dirName + string(os.PathSeparator) + baseName
+ if typ == os.ModeDir {
+ w.enqueue(walkItem{dir: joined})
+ return nil
+ }
+
+ err := w.fn(joined, typ)
+ if typ == os.ModeSymlink {
+ if err == traverseLink {
+ // Set callbackDone so we don't call it twice for both the
+ // symlink-as-symlink and the symlink-as-directory later:
+ w.enqueue(walkItem{dir: joined, callbackDone: true})
+ return nil
+ }
+ if err == filepath.SkipDir {
+ // Permit SkipDir on symlinks too.
+ return nil
+ }
+ }
+ return err
+}
+func (w *walker) walk(root string, runUserCallback bool) error {
+ if runUserCallback {
+ err := w.fn(root, os.ModeDir)
+ if err == filepath.SkipDir {
+ return nil
+ }
+ if err != nil {
+ return err
+ }
+ }
+
+ return readDir(root, w.onDirEnt)
+}
diff --git a/vendor/golang.org/x/tools/imports/fastwalk_dirent_fileno.go b/vendor/golang.org/x/tools/imports/fastwalk_dirent_fileno.go
new file mode 100644
index 00000000..f1fd6494
--- /dev/null
+++ b/vendor/golang.org/x/tools/imports/fastwalk_dirent_fileno.go
@@ -0,0 +1,13 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build freebsd openbsd netbsd
+
+package imports
+
+import "syscall"
+
+func direntInode(dirent *syscall.Dirent) uint64 {
+ return uint64(dirent.Fileno)
+}
diff --git a/vendor/golang.org/x/tools/imports/fastwalk_dirent_ino.go b/vendor/golang.org/x/tools/imports/fastwalk_dirent_ino.go
new file mode 100644
index 00000000..ee85bc4d
--- /dev/null
+++ b/vendor/golang.org/x/tools/imports/fastwalk_dirent_ino.go
@@ -0,0 +1,13 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build linux,!appengine darwin
+
+package imports
+
+import "syscall"
+
+func direntInode(dirent *syscall.Dirent) uint64 {
+ return uint64(dirent.Ino)
+}
diff --git a/vendor/golang.org/x/tools/imports/fastwalk_portable.go b/vendor/golang.org/x/tools/imports/fastwalk_portable.go
new file mode 100644
index 00000000..6c265834
--- /dev/null
+++ b/vendor/golang.org/x/tools/imports/fastwalk_portable.go
@@ -0,0 +1,29 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build appengine !linux,!darwin,!freebsd,!openbsd,!netbsd
+
+package imports
+
+import (
+ "io/ioutil"
+ "os"
+)
+
+// readDir calls fn for each directory entry in dirName.
+// It does not descend into directories or follow symlinks.
+// If fn returns a non-nil error, readDir returns with that error
+// immediately.
+func readDir(dirName string, fn func(dirName, entName string, typ os.FileMode) error) error {
+ fis, err := ioutil.ReadDir(dirName)
+ if err != nil {
+ return err
+ }
+ for _, fi := range fis {
+ if err := fn(dirName, fi.Name(), fi.Mode()&os.ModeType); err != nil {
+ return err
+ }
+ }
+ return nil
+}
diff --git a/vendor/golang.org/x/tools/imports/fastwalk_test.go b/vendor/golang.org/x/tools/imports/fastwalk_test.go
new file mode 100644
index 00000000..5b307d11
--- /dev/null
+++ b/vendor/golang.org/x/tools/imports/fastwalk_test.go
@@ -0,0 +1,171 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package imports
+
+import (
+ "bytes"
+ "flag"
+ "fmt"
+ "os"
+ "path/filepath"
+ "reflect"
+ "runtime"
+ "sort"
+ "strings"
+ "sync"
+ "testing"
+)
+
+func formatFileModes(m map[string]os.FileMode) string {
+ var keys []string
+ for k := range m {
+ keys = append(keys, k)
+ }
+ sort.Strings(keys)
+ var buf bytes.Buffer
+ for _, k := range keys {
+ fmt.Fprintf(&buf, "%-20s: %v\n", k, m[k])
+ }
+ return buf.String()
+}
+
+func testFastWalk(t *testing.T, files map[string]string, callback func(path string, typ os.FileMode) error, want map[string]os.FileMode) {
+ testConfig{
+ gopathFiles: files,
+ }.test(t, func(t *goimportTest) {
+ got := map[string]os.FileMode{}
+ var mu sync.Mutex
+ if err := fastWalk(t.gopath, func(path string, typ os.FileMode) error {
+ mu.Lock()
+ defer mu.Unlock()
+ if !strings.HasPrefix(path, t.gopath) {
+ t.Fatalf("bogus prefix on %q, expect %q", path, t.gopath)
+ }
+ key := filepath.ToSlash(strings.TrimPrefix(path, t.gopath))
+ if old, dup := got[key]; dup {
+ t.Fatalf("callback called twice for key %q: %v -> %v", key, old, typ)
+ }
+ got[key] = typ
+ return callback(path, typ)
+ }); err != nil {
+ t.Fatalf("callback returned: %v", err)
+ }
+ if !reflect.DeepEqual(got, want) {
+ t.Errorf("walk mismatch.\n got:\n%v\nwant:\n%v", formatFileModes(got), formatFileModes(want))
+ }
+ })
+}
+
+func TestFastWalk_Basic(t *testing.T) {
+ testFastWalk(t, map[string]string{
+ "foo/foo.go": "one",
+ "bar/bar.go": "two",
+ "skip/skip.go": "skip",
+ },
+ func(path string, typ os.FileMode) error {
+ return nil
+ },
+ map[string]os.FileMode{
+ "": os.ModeDir,
+ "/src": os.ModeDir,
+ "/src/bar": os.ModeDir,
+ "/src/bar/bar.go": 0,
+ "/src/foo": os.ModeDir,
+ "/src/foo/foo.go": 0,
+ "/src/skip": os.ModeDir,
+ "/src/skip/skip.go": 0,
+ })
+}
+
+func TestFastWalk_Symlink(t *testing.T) {
+ switch runtime.GOOS {
+ case "windows", "plan9":
+ t.Skipf("skipping on %s", runtime.GOOS)
+ }
+ testFastWalk(t, map[string]string{
+ "foo/foo.go": "one",
+ "bar/bar.go": "LINK:../foo.go",
+ "symdir": "LINK:foo",
+ },
+ func(path string, typ os.FileMode) error {
+ return nil
+ },
+ map[string]os.FileMode{
+ "": os.ModeDir,
+ "/src": os.ModeDir,
+ "/src/bar": os.ModeDir,
+ "/src/bar/bar.go": os.ModeSymlink,
+ "/src/foo": os.ModeDir,
+ "/src/foo/foo.go": 0,
+ "/src/symdir": os.ModeSymlink,
+ })
+}
+
+func TestFastWalk_SkipDir(t *testing.T) {
+ testFastWalk(t, map[string]string{
+ "foo/foo.go": "one",
+ "bar/bar.go": "two",
+ "skip/skip.go": "skip",
+ },
+ func(path string, typ os.FileMode) error {
+ if typ == os.ModeDir && strings.HasSuffix(path, "skip") {
+ return filepath.SkipDir
+ }
+ return nil
+ },
+ map[string]os.FileMode{
+ "": os.ModeDir,
+ "/src": os.ModeDir,
+ "/src/bar": os.ModeDir,
+ "/src/bar/bar.go": 0,
+ "/src/foo": os.ModeDir,
+ "/src/foo/foo.go": 0,
+ "/src/skip": os.ModeDir,
+ })
+}
+
+func TestFastWalk_TraverseSymlink(t *testing.T) {
+ switch runtime.GOOS {
+ case "windows", "plan9":
+ t.Skipf("skipping on %s", runtime.GOOS)
+ }
+
+ testFastWalk(t, map[string]string{
+ "foo/foo.go": "one",
+ "bar/bar.go": "two",
+ "skip/skip.go": "skip",
+ "symdir": "LINK:foo",
+ },
+ func(path string, typ os.FileMode) error {
+ if typ == os.ModeSymlink {
+ return traverseLink
+ }
+ return nil
+ },
+ map[string]os.FileMode{
+ "": os.ModeDir,
+ "/src": os.ModeDir,
+ "/src/bar": os.ModeDir,
+ "/src/bar/bar.go": 0,
+ "/src/foo": os.ModeDir,
+ "/src/foo/foo.go": 0,
+ "/src/skip": os.ModeDir,
+ "/src/skip/skip.go": 0,
+ "/src/symdir": os.ModeSymlink,
+ "/src/symdir/foo.go": 0,
+ })
+}
+
+var benchDir = flag.String("benchdir", runtime.GOROOT(), "The directory to scan for BenchmarkFastWalk")
+
+func BenchmarkFastWalk(b *testing.B) {
+ b.ReportAllocs()
+ for i := 0; i < b.N; i++ {
+ err := fastWalk(*benchDir, func(path string, typ os.FileMode) error { return nil })
+ if err != nil {
+ b.Fatal(err)
+ }
+ }
+}
diff --git a/vendor/golang.org/x/tools/imports/fastwalk_unix.go b/vendor/golang.org/x/tools/imports/fastwalk_unix.go
new file mode 100644
index 00000000..5854233d
--- /dev/null
+++ b/vendor/golang.org/x/tools/imports/fastwalk_unix.go
@@ -0,0 +1,122 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build linux,!appengine darwin freebsd openbsd netbsd
+
+package imports
+
+import (
+ "bytes"
+ "fmt"
+ "os"
+ "syscall"
+ "unsafe"
+)
+
+const blockSize = 8 << 10
+
+// unknownFileMode is a sentinel (and bogus) os.FileMode
+// value used to represent a syscall.DT_UNKNOWN Dirent.Type.
+const unknownFileMode os.FileMode = os.ModeNamedPipe | os.ModeSocket | os.ModeDevice
+
+func readDir(dirName string, fn func(dirName, entName string, typ os.FileMode) error) error {
+ fd, err := syscall.Open(dirName, 0, 0)
+ if err != nil {
+ return err
+ }
+ defer syscall.Close(fd)
+
+ // The buffer must be at least a block long.
+ buf := make([]byte, blockSize) // stack-allocated; doesn't escape
+ bufp := 0 // starting read position in buf
+ nbuf := 0 // end valid data in buf
+ for {
+ if bufp >= nbuf {
+ bufp = 0
+ nbuf, err = syscall.ReadDirent(fd, buf)
+ if err != nil {
+ return os.NewSyscallError("readdirent", err)
+ }
+ if nbuf <= 0 {
+ return nil
+ }
+ }
+ consumed, name, typ := parseDirEnt(buf[bufp:nbuf])
+ bufp += consumed
+ if name == "" || name == "." || name == ".." {
+ continue
+ }
+ // Fallback for filesystems (like old XFS) that don't
+ // support Dirent.Type and have DT_UNKNOWN (0) there
+ // instead.
+ if typ == unknownFileMode {
+ fi, err := os.Lstat(dirName + "/" + name)
+ if err != nil {
+ // It got deleted in the meantime.
+ if os.IsNotExist(err) {
+ continue
+ }
+ return err
+ }
+ typ = fi.Mode() & os.ModeType
+ }
+ if err := fn(dirName, name, typ); err != nil {
+ return err
+ }
+ }
+}
+
+func parseDirEnt(buf []byte) (consumed int, name string, typ os.FileMode) {
+ // golang.org/issue/15653
+ dirent := (*syscall.Dirent)(unsafe.Pointer(&buf[0]))
+ if v := unsafe.Offsetof(dirent.Reclen) + unsafe.Sizeof(dirent.Reclen); uintptr(len(buf)) < v {
+ panic(fmt.Sprintf("buf size of %d smaller than dirent header size %d", len(buf), v))
+ }
+ if len(buf) < int(dirent.Reclen) {
+ panic(fmt.Sprintf("buf size %d < record length %d", len(buf), dirent.Reclen))
+ }
+ consumed = int(dirent.Reclen)
+ if direntInode(dirent) == 0 { // File absent in directory.
+ return
+ }
+ switch dirent.Type {
+ case syscall.DT_REG:
+ typ = 0
+ case syscall.DT_DIR:
+ typ = os.ModeDir
+ case syscall.DT_LNK:
+ typ = os.ModeSymlink
+ case syscall.DT_BLK:
+ typ = os.ModeDevice
+ case syscall.DT_FIFO:
+ typ = os.ModeNamedPipe
+ case syscall.DT_SOCK:
+ typ = os.ModeSocket
+ case syscall.DT_UNKNOWN:
+ typ = unknownFileMode
+ default:
+ // Skip weird things.
+ // It's probably a DT_WHT (http://lwn.net/Articles/325369/)
+ // or something. Revisit if/when this package is moved outside
+ // of goimports. goimports only cares about regular files,
+ // symlinks, and directories.
+ return
+ }
+
+ nameBuf := (*[unsafe.Sizeof(dirent.Name)]byte)(unsafe.Pointer(&dirent.Name[0]))
+ nameLen := bytes.IndexByte(nameBuf[:], 0)
+ if nameLen < 0 {
+ panic("failed to find terminating 0 byte in dirent")
+ }
+
+ // Special cases for common things:
+ if nameLen == 1 && nameBuf[0] == '.' {
+ name = "."
+ } else if nameLen == 2 && nameBuf[0] == '.' && nameBuf[1] == '.' {
+ name = ".."
+ } else {
+ name = string(nameBuf[:nameLen])
+ }
+ return
+}
diff --git a/vendor/golang.org/x/tools/imports/fix.go b/vendor/golang.org/x/tools/imports/fix.go
new file mode 100644
index 00000000..9cdbbe91
--- /dev/null
+++ b/vendor/golang.org/x/tools/imports/fix.go
@@ -0,0 +1,970 @@
+// Copyright 2013 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package imports
+
+import (
+ "bufio"
+ "bytes"
+ "fmt"
+ "go/ast"
+ "go/build"
+ "go/parser"
+ "go/token"
+ "io/ioutil"
+ "log"
+ "os"
+ "path"
+ "path/filepath"
+ "sort"
+ "strings"
+ "sync"
+
+ "golang.org/x/tools/go/ast/astutil"
+)
+
+// Debug controls verbose logging.
+var Debug = false
+
+var (
+ inTests = false // set true by fix_test.go; if false, no need to use testMu
+ testMu sync.RWMutex // guards globals reset by tests; used only if inTests
+)
+
+// If set, LocalPrefix instructs Process to sort import paths with the given
+// prefix into another group after 3rd-party packages.
+var LocalPrefix string
+
+// importToGroup is a list of functions which map from an import path to
+// a group number.
+var importToGroup = []func(importPath string) (num int, ok bool){
+ func(importPath string) (num int, ok bool) {
+ if LocalPrefix != "" && strings.HasPrefix(importPath, LocalPrefix) {
+ return 3, true
+ }
+ return
+ },
+ func(importPath string) (num int, ok bool) {
+ if strings.HasPrefix(importPath, "appengine") {
+ return 2, true
+ }
+ return
+ },
+ func(importPath string) (num int, ok bool) {
+ if strings.Contains(importPath, ".") {
+ return 1, true
+ }
+ return
+ },
+}
+
+func importGroup(importPath string) int {
+ for _, fn := range importToGroup {
+ if n, ok := fn(importPath); ok {
+ return n
+ }
+ }
+ return 0
+}
+
+// packageInfo is a summary of features found in a package.
+type packageInfo struct {
+ Globals map[string]bool // symbol => true
+}
+
+// dirPackageInfo gets information from other files in the package.
+func dirPackageInfo(srcDir, filename string) (*packageInfo, error) {
+ considerTests := strings.HasSuffix(filename, "_test.go")
+
+ // Handle file from stdin
+ if _, err := os.Stat(filename); err != nil {
+ if os.IsNotExist(err) {
+ return &packageInfo{}, nil
+ }
+ return nil, err
+ }
+
+ fileBase := filepath.Base(filename)
+ packageFileInfos, err := ioutil.ReadDir(srcDir)
+ if err != nil {
+ return nil, err
+ }
+
+ info := &packageInfo{Globals: make(map[string]bool)}
+ for _, fi := range packageFileInfos {
+ if fi.Name() == fileBase || !strings.HasSuffix(fi.Name(), ".go") {
+ continue
+ }
+ if !considerTests && strings.HasSuffix(fi.Name(), "_test.go") {
+ continue
+ }
+
+ fileSet := token.NewFileSet()
+ root, err := parser.ParseFile(fileSet, filepath.Join(srcDir, fi.Name()), nil, 0)
+ if err != nil {
+ continue
+ }
+
+ for _, decl := range root.Decls {
+ genDecl, ok := decl.(*ast.GenDecl)
+ if !ok {
+ continue
+ }
+
+ for _, spec := range genDecl.Specs {
+ valueSpec, ok := spec.(*ast.ValueSpec)
+ if !ok {
+ continue
+ }
+ info.Globals[valueSpec.Names[0].Name] = true
+ }
+ }
+ }
+ return info, nil
+}
+
+func fixImports(fset *token.FileSet, f *ast.File, filename string) (added []string, err error) {
+ // refs are a set of possible package references currently unsatisfied by imports.
+ // first key: either base package (e.g. "fmt") or renamed package
+ // second key: referenced package symbol (e.g. "Println")
+ refs := make(map[string]map[string]bool)
+
+ // decls are the current package imports. key is base package or renamed package.
+ decls := make(map[string]*ast.ImportSpec)
+
+ abs, err := filepath.Abs(filename)
+ if err != nil {
+ return nil, err
+ }
+ srcDir := filepath.Dir(abs)
+ if Debug {
+ log.Printf("fixImports(filename=%q), abs=%q, srcDir=%q ...", filename, abs, srcDir)
+ }
+
+ var packageInfo *packageInfo
+ var loadedPackageInfo bool
+
+ // collect potential uses of packages.
+ var visitor visitFn
+ visitor = visitFn(func(node ast.Node) ast.Visitor {
+ if node == nil {
+ return visitor
+ }
+ switch v := node.(type) {
+ case *ast.ImportSpec:
+ if v.Name != nil {
+ decls[v.Name.Name] = v
+ break
+ }
+ ipath := strings.Trim(v.Path.Value, `"`)
+ if ipath == "C" {
+ break
+ }
+ local := importPathToName(ipath, srcDir)
+ decls[local] = v
+ case *ast.SelectorExpr:
+ xident, ok := v.X.(*ast.Ident)
+ if !ok {
+ break
+ }
+ if xident.Obj != nil {
+ // if the parser can resolve it, it's not a package ref
+ break
+ }
+ pkgName := xident.Name
+ if refs[pkgName] == nil {
+ refs[pkgName] = make(map[string]bool)
+ }
+ if !loadedPackageInfo {
+ loadedPackageInfo = true
+ packageInfo, _ = dirPackageInfo(srcDir, filename)
+ }
+ if decls[pkgName] == nil && (packageInfo == nil || !packageInfo.Globals[pkgName]) {
+ refs[pkgName][v.Sel.Name] = true
+ }
+ }
+ return visitor
+ })
+ ast.Walk(visitor, f)
+
+ // Nil out any unused ImportSpecs, to be removed in following passes
+ unusedImport := map[string]string{}
+ for pkg, is := range decls {
+ if refs[pkg] == nil && pkg != "_" && pkg != "." {
+ name := ""
+ if is.Name != nil {
+ name = is.Name.Name
+ }
+ unusedImport[strings.Trim(is.Path.Value, `"`)] = name
+ }
+ }
+ for ipath, name := range unusedImport {
+ if ipath == "C" {
+ // Don't remove cgo stuff.
+ continue
+ }
+ astutil.DeleteNamedImport(fset, f, name, ipath)
+ }
+
+ for pkgName, symbols := range refs {
+ if len(symbols) == 0 {
+ // skip over packages already imported
+ delete(refs, pkgName)
+ }
+ }
+
+ // Search for imports matching potential package references.
+ searches := 0
+ type result struct {
+ ipath string // import path (if err == nil)
+ name string // optional name to rename import as
+ err error
+ }
+ results := make(chan result)
+ for pkgName, symbols := range refs {
+ go func(pkgName string, symbols map[string]bool) {
+ ipath, rename, err := findImport(pkgName, symbols, filename)
+ r := result{ipath: ipath, err: err}
+ if rename {
+ r.name = pkgName
+ }
+ results <- r
+ }(pkgName, symbols)
+ searches++
+ }
+ for i := 0; i < searches; i++ {
+ result := <-results
+ if result.err != nil {
+ return nil, result.err
+ }
+ if result.ipath != "" {
+ if result.name != "" {
+ astutil.AddNamedImport(fset, f, result.name, result.ipath)
+ } else {
+ astutil.AddImport(fset, f, result.ipath)
+ }
+ added = append(added, result.ipath)
+ }
+ }
+
+ return added, nil
+}
+
+// importPathToName returns the package name for the given import path.
+var importPathToName func(importPath, srcDir string) (packageName string) = importPathToNameGoPath
+
+// importPathToNameBasic assumes the package name is the base of import path.
+func importPathToNameBasic(importPath, srcDir string) (packageName string) {
+ return path.Base(importPath)
+}
+
+// importPathToNameGoPath finds out the actual package name, as declared in its .go files.
+// If there's a problem, it falls back to using importPathToNameBasic.
+func importPathToNameGoPath(importPath, srcDir string) (packageName string) {
+ // Fast path for standard library without going to disk.
+ if pkg, ok := stdImportPackage[importPath]; ok {
+ return pkg
+ }
+
+ pkgName, err := importPathToNameGoPathParse(importPath, srcDir)
+ if Debug {
+ log.Printf("importPathToNameGoPathParse(%q, srcDir=%q) = %q, %v", importPath, srcDir, pkgName, err)
+ }
+ if err == nil {
+ return pkgName
+ }
+ return importPathToNameBasic(importPath, srcDir)
+}
+
+// importPathToNameGoPathParse is a faster version of build.Import if
+// the only thing desired is the package name. It uses build.FindOnly
+// to find the directory and then only parses one file in the package,
+// trusting that the files in the directory are consistent.
+func importPathToNameGoPathParse(importPath, srcDir string) (packageName string, err error) {
+ buildPkg, err := build.Import(importPath, srcDir, build.FindOnly)
+ if err != nil {
+ return "", err
+ }
+ d, err := os.Open(buildPkg.Dir)
+ if err != nil {
+ return "", err
+ }
+ names, err := d.Readdirnames(-1)
+ d.Close()
+ if err != nil {
+ return "", err
+ }
+ sort.Strings(names) // to have predictable behavior
+ var lastErr error
+ var nfile int
+ for _, name := range names {
+ if !strings.HasSuffix(name, ".go") {
+ continue
+ }
+ if strings.HasSuffix(name, "_test.go") {
+ continue
+ }
+ nfile++
+ fullFile := filepath.Join(buildPkg.Dir, name)
+
+ fset := token.NewFileSet()
+ f, err := parser.ParseFile(fset, fullFile, nil, parser.PackageClauseOnly)
+ if err != nil {
+ lastErr = err
+ continue
+ }
+ pkgName := f.Name.Name
+ if pkgName == "documentation" {
+ // Special case from go/build.ImportDir, not
+ // handled by ctx.MatchFile.
+ continue
+ }
+ if pkgName == "main" {
+ // Also skip package main, assuming it's a +build ignore generator or example.
+ // Since you can't import a package main anyway, there's no harm here.
+ continue
+ }
+ return pkgName, nil
+ }
+ if lastErr != nil {
+ return "", lastErr
+ }
+ return "", fmt.Errorf("no importable package found in %d Go files", nfile)
+}
+
+var stdImportPackage = map[string]string{} // "net/http" => "http"
+
+func init() {
+ // Nothing in the standard library has a package name not
+ // matching its import base name.
+ for _, pkg := range stdlib {
+ if _, ok := stdImportPackage[pkg]; !ok {
+ stdImportPackage[pkg] = path.Base(pkg)
+ }
+ }
+}
+
+// Directory-scanning state.
+var (
+ // scanGoRootOnce guards calling scanGoRoot (for $GOROOT)
+ scanGoRootOnce sync.Once
+ // scanGoPathOnce guards calling scanGoPath (for $GOPATH)
+ scanGoPathOnce sync.Once
+
+ // populateIgnoreOnce guards calling populateIgnore
+ populateIgnoreOnce sync.Once
+ ignoredDirs []os.FileInfo
+
+ dirScanMu sync.RWMutex
+ dirScan map[string]*pkg // abs dir path => *pkg
+)
+
+type pkg struct {
+ dir string // absolute file path to pkg directory ("/usr/lib/go/src/net/http")
+ importPath string // full pkg import path ("net/http", "foo/bar/vendor/a/b")
+ importPathShort string // vendorless import path ("net/http", "a/b")
+}
+
+// byImportPathShortLength sorts by the short import path length, breaking ties on the
+// import string itself.
+type byImportPathShortLength []*pkg
+
+func (s byImportPathShortLength) Len() int { return len(s) }
+func (s byImportPathShortLength) Less(i, j int) bool {
+ vi, vj := s[i].importPathShort, s[j].importPathShort
+ return len(vi) < len(vj) || (len(vi) == len(vj) && vi < vj)
+
+}
+func (s byImportPathShortLength) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
+
+// guarded by populateIgnoreOnce; populates ignoredDirs.
+func populateIgnore() {
+ for _, srcDir := range build.Default.SrcDirs() {
+ if srcDir == filepath.Join(build.Default.GOROOT, "src") {
+ continue
+ }
+ populateIgnoredDirs(srcDir)
+ }
+}
+
+// populateIgnoredDirs reads an optional config file at /.goimportsignore
+// of relative directories to ignore when scanning for go files.
+// The provided path is one of the $GOPATH entries with "src" appended.
+func populateIgnoredDirs(path string) {
+ file := filepath.Join(path, ".goimportsignore")
+ slurp, err := ioutil.ReadFile(file)
+ if Debug {
+ if err != nil {
+ log.Print(err)
+ } else {
+ log.Printf("Read %s", file)
+ }
+ }
+ if err != nil {
+ return
+ }
+ bs := bufio.NewScanner(bytes.NewReader(slurp))
+ for bs.Scan() {
+ line := strings.TrimSpace(bs.Text())
+ if line == "" || strings.HasPrefix(line, "#") {
+ continue
+ }
+ full := filepath.Join(path, line)
+ if fi, err := os.Stat(full); err == nil {
+ ignoredDirs = append(ignoredDirs, fi)
+ if Debug {
+ log.Printf("Directory added to ignore list: %s", full)
+ }
+ } else if Debug {
+ log.Printf("Error statting entry in .goimportsignore: %v", err)
+ }
+ }
+}
+
+func skipDir(fi os.FileInfo) bool {
+ for _, ignoredDir := range ignoredDirs {
+ if os.SameFile(fi, ignoredDir) {
+ return true
+ }
+ }
+ return false
+}
+
+// shouldTraverse reports whether the symlink fi should, found in dir,
+// should be followed. It makes sure symlinks were never visited
+// before to avoid symlink loops.
+func shouldTraverse(dir string, fi os.FileInfo) bool {
+ path := filepath.Join(dir, fi.Name())
+ target, err := filepath.EvalSymlinks(path)
+ if err != nil {
+ if !os.IsNotExist(err) {
+ fmt.Fprintln(os.Stderr, err)
+ }
+ return false
+ }
+ ts, err := os.Stat(target)
+ if err != nil {
+ fmt.Fprintln(os.Stderr, err)
+ return false
+ }
+ if !ts.IsDir() {
+ return false
+ }
+ if skipDir(ts) {
+ return false
+ }
+ // Check for symlink loops by statting each directory component
+ // and seeing if any are the same file as ts.
+ for {
+ parent := filepath.Dir(path)
+ if parent == path {
+ // Made it to the root without seeing a cycle.
+ // Use this symlink.
+ return true
+ }
+ parentInfo, err := os.Stat(parent)
+ if err != nil {
+ return false
+ }
+ if os.SameFile(ts, parentInfo) {
+ // Cycle. Don't traverse.
+ return false
+ }
+ path = parent
+ }
+
+}
+
+var testHookScanDir = func(dir string) {}
+
+var scanGoRootDone = make(chan struct{}) // closed when scanGoRoot is done
+
+func scanGoRoot() {
+ go func() {
+ scanGoDirs(true)
+ close(scanGoRootDone)
+ }()
+}
+
+func scanGoPath() { scanGoDirs(false) }
+
+func scanGoDirs(goRoot bool) {
+ if Debug {
+ which := "$GOROOT"
+ if !goRoot {
+ which = "$GOPATH"
+ }
+ log.Printf("scanning " + which)
+ defer log.Printf("scanned " + which)
+ }
+ dirScanMu.Lock()
+ if dirScan == nil {
+ dirScan = make(map[string]*pkg)
+ }
+ dirScanMu.Unlock()
+
+ for _, srcDir := range build.Default.SrcDirs() {
+ isGoroot := srcDir == filepath.Join(build.Default.GOROOT, "src")
+ if isGoroot != goRoot {
+ continue
+ }
+ testHookScanDir(srcDir)
+ walkFn := func(path string, typ os.FileMode) error {
+ dir := filepath.Dir(path)
+ if typ.IsRegular() {
+ if dir == srcDir {
+ // Doesn't make sense to have regular files
+ // directly in your $GOPATH/src or $GOROOT/src.
+ return nil
+ }
+ if !strings.HasSuffix(path, ".go") {
+ return nil
+ }
+ dirScanMu.Lock()
+ if _, dup := dirScan[dir]; !dup {
+ importpath := filepath.ToSlash(dir[len(srcDir)+len("/"):])
+ dirScan[dir] = &pkg{
+ importPath: importpath,
+ importPathShort: vendorlessImportPath(importpath),
+ dir: dir,
+ }
+ }
+ dirScanMu.Unlock()
+ return nil
+ }
+ if typ == os.ModeDir {
+ base := filepath.Base(path)
+ if base == "" || base[0] == '.' || base[0] == '_' ||
+ base == "testdata" || base == "node_modules" {
+ return filepath.SkipDir
+ }
+ fi, err := os.Lstat(path)
+ if err == nil && skipDir(fi) {
+ if Debug {
+ log.Printf("skipping directory %q under %s", fi.Name(), dir)
+ }
+ return filepath.SkipDir
+ }
+ return nil
+ }
+ if typ == os.ModeSymlink {
+ base := filepath.Base(path)
+ if strings.HasPrefix(base, ".#") {
+ // Emacs noise.
+ return nil
+ }
+ fi, err := os.Lstat(path)
+ if err != nil {
+ // Just ignore it.
+ return nil
+ }
+ if shouldTraverse(dir, fi) {
+ return traverseLink
+ }
+ }
+ return nil
+ }
+ if err := fastWalk(srcDir, walkFn); err != nil {
+ log.Printf("goimports: scanning directory %v: %v", srcDir, err)
+ }
+ }
+}
+
+// vendorlessImportPath returns the devendorized version of the provided import path.
+// e.g. "foo/bar/vendor/a/b" => "a/b"
+func vendorlessImportPath(ipath string) string {
+ // Devendorize for use in import statement.
+ if i := strings.LastIndex(ipath, "/vendor/"); i >= 0 {
+ return ipath[i+len("/vendor/"):]
+ }
+ if strings.HasPrefix(ipath, "vendor/") {
+ return ipath[len("vendor/"):]
+ }
+ return ipath
+}
+
+// loadExports returns the set of exported symbols in the package at dir.
+// It returns nil on error or if the package name in dir does not match expectPackage.
+var loadExports func(expectPackage, dir string) map[string]bool = loadExportsGoPath
+
+func loadExportsGoPath(expectPackage, dir string) map[string]bool {
+ if Debug {
+ log.Printf("loading exports in dir %s (seeking package %s)", dir, expectPackage)
+ }
+ exports := make(map[string]bool)
+
+ ctx := build.Default
+
+ // ReadDir is like ioutil.ReadDir, but only returns *.go files
+ // and filters out _test.go files since they're not relevant
+ // and only slow things down.
+ ctx.ReadDir = func(dir string) (notTests []os.FileInfo, err error) {
+ all, err := ioutil.ReadDir(dir)
+ if err != nil {
+ return nil, err
+ }
+ notTests = all[:0]
+ for _, fi := range all {
+ name := fi.Name()
+ if strings.HasSuffix(name, ".go") && !strings.HasSuffix(name, "_test.go") {
+ notTests = append(notTests, fi)
+ }
+ }
+ return notTests, nil
+ }
+
+ files, err := ctx.ReadDir(dir)
+ if err != nil {
+ log.Print(err)
+ return nil
+ }
+
+ fset := token.NewFileSet()
+
+ for _, fi := range files {
+ match, err := ctx.MatchFile(dir, fi.Name())
+ if err != nil || !match {
+ continue
+ }
+ fullFile := filepath.Join(dir, fi.Name())
+ f, err := parser.ParseFile(fset, fullFile, nil, 0)
+ if err != nil {
+ if Debug {
+ log.Printf("Parsing %s: %v", fullFile, err)
+ }
+ return nil
+ }
+ pkgName := f.Name.Name
+ if pkgName == "documentation" {
+ // Special case from go/build.ImportDir, not
+ // handled by ctx.MatchFile.
+ continue
+ }
+ if pkgName != expectPackage {
+ if Debug {
+ log.Printf("scan of dir %v is not expected package %v (actually %v)", dir, expectPackage, pkgName)
+ }
+ return nil
+ }
+ for name := range f.Scope.Objects {
+ if ast.IsExported(name) {
+ exports[name] = true
+ }
+ }
+ }
+
+ if Debug {
+ exportList := make([]string, 0, len(exports))
+ for k := range exports {
+ exportList = append(exportList, k)
+ }
+ sort.Strings(exportList)
+ log.Printf("loaded exports in dir %v (package %v): %v", dir, expectPackage, strings.Join(exportList, ", "))
+ }
+ return exports
+}
+
+// findImport searches for a package with the given symbols.
+// If no package is found, findImport returns ("", false, nil)
+//
+// This is declared as a variable rather than a function so goimports
+// can be easily extended by adding a file with an init function.
+//
+// The rename value tells goimports whether to use the package name as
+// a local qualifier in an import. For example, if findImports("pkg",
+// "X") returns ("foo/bar", rename=true), then goimports adds the
+// import line:
+// import pkg "foo/bar"
+// to satisfy uses of pkg.X in the file.
+var findImport func(pkgName string, symbols map[string]bool, filename string) (foundPkg string, rename bool, err error) = findImportGoPath
+
+// findImportGoPath is the normal implementation of findImport.
+// (Some companies have their own internally.)
+func findImportGoPath(pkgName string, symbols map[string]bool, filename string) (foundPkg string, rename bool, err error) {
+ if inTests {
+ testMu.RLock()
+ defer testMu.RUnlock()
+ }
+
+ // Fast path for the standard library.
+ // In the common case we hopefully never have to scan the GOPATH, which can
+ // be slow with moving disks.
+ if pkg, rename, ok := findImportStdlib(pkgName, symbols); ok {
+ return pkg, rename, nil
+ }
+ if pkgName == "rand" && symbols["Read"] {
+ // Special-case rand.Read.
+ //
+ // If findImportStdlib didn't find it above, don't go
+ // searching for it, lest it find and pick math/rand
+ // in GOROOT (new as of Go 1.6)
+ //
+ // crypto/rand is the safer choice.
+ return "", false, nil
+ }
+
+ // TODO(sameer): look at the import lines for other Go files in the
+ // local directory, since the user is likely to import the same packages
+ // in the current Go file. Return rename=true when the other Go files
+ // use a renamed package that's also used in the current file.
+
+ // Read all the $GOPATH/src/.goimportsignore files before scanning directories.
+ populateIgnoreOnce.Do(populateIgnore)
+
+ // Start scanning the $GOROOT asynchronously, then run the
+ // GOPATH scan synchronously if needed, and then wait for the
+ // $GOROOT to finish.
+ //
+ // TODO(bradfitz): run each $GOPATH entry async. But nobody
+ // really has more than one anyway, so low priority.
+ scanGoRootOnce.Do(scanGoRoot) // async
+ if !fileInDir(filename, build.Default.GOROOT) {
+ scanGoPathOnce.Do(scanGoPath) // blocking
+ }
+ <-scanGoRootDone
+
+ // Find candidate packages, looking only at their directory names first.
+ var candidates []*pkg
+ for _, pkg := range dirScan {
+ if pkgIsCandidate(filename, pkgName, pkg) {
+ candidates = append(candidates, pkg)
+ }
+ }
+
+ // Sort the candidates by their import package length,
+ // assuming that shorter package names are better than long
+ // ones. Note that this sorts by the de-vendored name, so
+ // there's no "penalty" for vendoring.
+ sort.Sort(byImportPathShortLength(candidates))
+ if Debug {
+ for i, pkg := range candidates {
+ log.Printf("%s candidate %d/%d: %v", pkgName, i+1, len(candidates), pkg.importPathShort)
+ }
+ }
+
+ // Collect exports for packages with matching names.
+
+ done := make(chan struct{}) // closed when we find the answer
+ defer close(done)
+
+ rescv := make([]chan *pkg, len(candidates))
+ for i := range candidates {
+ rescv[i] = make(chan *pkg)
+ }
+ const maxConcurrentPackageImport = 4
+ loadExportsSem := make(chan struct{}, maxConcurrentPackageImport)
+
+ go func() {
+ for i, pkg := range candidates {
+ select {
+ case loadExportsSem <- struct{}{}:
+ select {
+ case <-done:
+ default:
+ }
+ case <-done:
+ return
+ }
+ pkg := pkg
+ resc := rescv[i]
+ go func() {
+ if inTests {
+ testMu.RLock()
+ defer testMu.RUnlock()
+ }
+ defer func() { <-loadExportsSem }()
+ exports := loadExports(pkgName, pkg.dir)
+
+ // If it doesn't have the right
+ // symbols, send nil to mean no match.
+ for symbol := range symbols {
+ if !exports[symbol] {
+ pkg = nil
+ break
+ }
+ }
+ select {
+ case resc <- pkg:
+ case <-done:
+ }
+ }()
+ }
+ }()
+ for _, resc := range rescv {
+ pkg := <-resc
+ if pkg == nil {
+ continue
+ }
+ // If the package name in the source doesn't match the import path's base,
+ // return true so the rewriter adds a name (import foo "github.com/bar/go-foo")
+ needsRename := path.Base(pkg.importPath) != pkgName
+ return pkg.importPathShort, needsRename, nil
+ }
+ return "", false, nil
+}
+
+// pkgIsCandidate reports whether pkg is a candidate for satisfying the
+// finding which package pkgIdent in the file named by filename is trying
+// to refer to.
+//
+// This check is purely lexical and is meant to be as fast as possible
+// because it's run over all $GOPATH directories to filter out poor
+// candidates in order to limit the CPU and I/O later parsing the
+// exports in candidate packages.
+//
+// filename is the file being formatted.
+// pkgIdent is the package being searched for, like "client" (if
+// searching for "client.New")
+func pkgIsCandidate(filename, pkgIdent string, pkg *pkg) bool {
+ // Check "internal" and "vendor" visibility:
+ if !canUse(filename, pkg.dir) {
+ return false
+ }
+
+ // Speed optimization to minimize disk I/O:
+ // the last two components on disk must contain the
+ // package name somewhere.
+ //
+ // This permits mismatch naming like directory
+ // "go-foo" being package "foo", or "pkg.v3" being "pkg",
+ // or directory "google.golang.org/api/cloudbilling/v1"
+ // being package "cloudbilling", but doesn't
+ // permit a directory "foo" to be package
+ // "bar", which is strongly discouraged
+ // anyway. There's no reason goimports needs
+ // to be slow just to accomodate that.
+ lastTwo := lastTwoComponents(pkg.importPathShort)
+ if strings.Contains(lastTwo, pkgIdent) {
+ return true
+ }
+ if hasHyphenOrUpperASCII(lastTwo) && !hasHyphenOrUpperASCII(pkgIdent) {
+ lastTwo = lowerASCIIAndRemoveHyphen(lastTwo)
+ if strings.Contains(lastTwo, pkgIdent) {
+ return true
+ }
+ }
+
+ return false
+}
+
+func hasHyphenOrUpperASCII(s string) bool {
+ for i := 0; i < len(s); i++ {
+ b := s[i]
+ if b == '-' || ('A' <= b && b <= 'Z') {
+ return true
+ }
+ }
+ return false
+}
+
+func lowerASCIIAndRemoveHyphen(s string) (ret string) {
+ buf := make([]byte, 0, len(s))
+ for i := 0; i < len(s); i++ {
+ b := s[i]
+ switch {
+ case b == '-':
+ continue
+ case 'A' <= b && b <= 'Z':
+ buf = append(buf, b+('a'-'A'))
+ default:
+ buf = append(buf, b)
+ }
+ }
+ return string(buf)
+}
+
+// canUse reports whether the package in dir is usable from filename,
+// respecting the Go "internal" and "vendor" visibility rules.
+func canUse(filename, dir string) bool {
+ // Fast path check, before any allocations. If it doesn't contain vendor
+ // or internal, it's not tricky:
+ // Note that this can false-negative on directories like "notinternal",
+ // but we check it correctly below. This is just a fast path.
+ if !strings.Contains(dir, "vendor") && !strings.Contains(dir, "internal") {
+ return true
+ }
+
+ dirSlash := filepath.ToSlash(dir)
+ if !strings.Contains(dirSlash, "/vendor/") && !strings.Contains(dirSlash, "/internal/") && !strings.HasSuffix(dirSlash, "/internal") {
+ return true
+ }
+ // Vendor or internal directory only visible from children of parent.
+ // That means the path from the current directory to the target directory
+ // can contain ../vendor or ../internal but not ../foo/vendor or ../foo/internal
+ // or bar/vendor or bar/internal.
+ // After stripping all the leading ../, the only okay place to see vendor or internal
+ // is at the very beginning of the path.
+ absfile, err := filepath.Abs(filename)
+ if err != nil {
+ return false
+ }
+ absdir, err := filepath.Abs(dir)
+ if err != nil {
+ return false
+ }
+ rel, err := filepath.Rel(absfile, absdir)
+ if err != nil {
+ return false
+ }
+ relSlash := filepath.ToSlash(rel)
+ if i := strings.LastIndex(relSlash, "../"); i >= 0 {
+ relSlash = relSlash[i+len("../"):]
+ }
+ return !strings.Contains(relSlash, "/vendor/") && !strings.Contains(relSlash, "/internal/") && !strings.HasSuffix(relSlash, "/internal")
+}
+
+// lastTwoComponents returns at most the last two path components
+// of v, using either / or \ as the path separator.
+func lastTwoComponents(v string) string {
+ nslash := 0
+ for i := len(v) - 1; i >= 0; i-- {
+ if v[i] == '/' || v[i] == '\\' {
+ nslash++
+ if nslash == 2 {
+ return v[i:]
+ }
+ }
+ }
+ return v
+}
+
+type visitFn func(node ast.Node) ast.Visitor
+
+func (fn visitFn) Visit(node ast.Node) ast.Visitor {
+ return fn(node)
+}
+
+func findImportStdlib(shortPkg string, symbols map[string]bool) (importPath string, rename, ok bool) {
+ for symbol := range symbols {
+ key := shortPkg + "." + symbol
+ path := stdlib[key]
+ if path == "" {
+ if key == "rand.Read" {
+ continue
+ }
+ return "", false, false
+ }
+ if importPath != "" && importPath != path {
+ // Ambiguous. Symbols pointed to different things.
+ return "", false, false
+ }
+ importPath = path
+ }
+ if importPath == "" && shortPkg == "rand" && symbols["Read"] {
+ return "crypto/rand", false, true
+ }
+ return importPath, false, importPath != ""
+}
+
+// fileInDir reports whether the provided file path looks like
+// it's in dir. (without hitting the filesystem)
+func fileInDir(file, dir string) bool {
+ rest := strings.TrimPrefix(file, dir)
+ if len(rest) == len(file) {
+ // dir is not a prefix of file.
+ return false
+ }
+ // Check for boundary: either nothing (file == dir), or a slash.
+ return len(rest) == 0 || rest[0] == '/' || rest[0] == '\\'
+}
diff --git a/vendor/golang.org/x/tools/imports/fix_test.go b/vendor/golang.org/x/tools/imports/fix_test.go
new file mode 100644
index 00000000..048b9c3a
--- /dev/null
+++ b/vendor/golang.org/x/tools/imports/fix_test.go
@@ -0,0 +1,1754 @@
+// Copyright 2013 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package imports
+
+import (
+ "bytes"
+ "flag"
+ "go/build"
+ "io/ioutil"
+ "os"
+ "path/filepath"
+ "runtime"
+ "strings"
+ "sync"
+ "testing"
+)
+
+var only = flag.String("only", "", "If non-empty, the fix test to run")
+
+var tests = []struct {
+ name string
+ formatOnly bool
+ in, out string
+}{
+ // Adding an import to an existing parenthesized import
+ {
+ name: "factored_imports_add",
+ in: `package foo
+import (
+ "fmt"
+)
+func bar() {
+var b bytes.Buffer
+fmt.Println(b.String())
+}
+`,
+ out: `package foo
+
+import (
+ "bytes"
+ "fmt"
+)
+
+func bar() {
+ var b bytes.Buffer
+ fmt.Println(b.String())
+}
+`,
+ },
+
+ // Adding an import to an existing parenthesized import,
+ // verifying it goes into the first section.
+ {
+ name: "factored_imports_add_first_sec",
+ in: `package foo
+import (
+ "fmt"
+
+ "appengine"
+)
+func bar() {
+var b bytes.Buffer
+_ = appengine.IsDevServer
+fmt.Println(b.String())
+}
+`,
+ out: `package foo
+
+import (
+ "bytes"
+ "fmt"
+
+ "appengine"
+)
+
+func bar() {
+ var b bytes.Buffer
+ _ = appengine.IsDevServer
+ fmt.Println(b.String())
+}
+`,
+ },
+
+ // Adding an import to an existing parenthesized import,
+ // verifying it goes into the first section. (test 2)
+ {
+ name: "factored_imports_add_first_sec_2",
+ in: `package foo
+import (
+ "fmt"
+
+ "appengine"
+)
+func bar() {
+_ = math.NaN
+_ = fmt.Sprintf
+_ = appengine.IsDevServer
+}
+`,
+ out: `package foo
+
+import (
+ "fmt"
+ "math"
+
+ "appengine"
+)
+
+func bar() {
+ _ = math.NaN
+ _ = fmt.Sprintf
+ _ = appengine.IsDevServer
+}
+`,
+ },
+
+ // Adding a new import line, without parens
+ {
+ name: "add_import_section",
+ in: `package foo
+func bar() {
+var b bytes.Buffer
+}
+`,
+ out: `package foo
+
+import "bytes"
+
+func bar() {
+ var b bytes.Buffer
+}
+`,
+ },
+
+ // Adding two new imports, which should make a parenthesized import decl.
+ {
+ name: "add_import_paren_section",
+ in: `package foo
+func bar() {
+_, _ := bytes.Buffer, zip.NewReader
+}
+`,
+ out: `package foo
+
+import (
+ "archive/zip"
+ "bytes"
+)
+
+func bar() {
+ _, _ := bytes.Buffer, zip.NewReader
+}
+`,
+ },
+
+ // Make sure we don't add things twice
+ {
+ name: "no_double_add",
+ in: `package foo
+func bar() {
+_, _ := bytes.Buffer, bytes.NewReader
+}
+`,
+ out: `package foo
+
+import "bytes"
+
+func bar() {
+ _, _ := bytes.Buffer, bytes.NewReader
+}
+`,
+ },
+
+ // Remove unused imports, 1 of a factored block
+ {
+ name: "remove_unused_1_of_2",
+ in: `package foo
+import (
+"bytes"
+"fmt"
+)
+
+func bar() {
+_, _ := bytes.Buffer, bytes.NewReader
+}
+`,
+ out: `package foo
+
+import (
+ "bytes"
+)
+
+func bar() {
+ _, _ := bytes.Buffer, bytes.NewReader
+}
+`,
+ },
+
+ // Remove unused imports, 2 of 2
+ {
+ name: "remove_unused_2_of_2",
+ in: `package foo
+import (
+"bytes"
+"fmt"
+)
+
+func bar() {
+}
+`,
+ out: `package foo
+
+func bar() {
+}
+`,
+ },
+
+ // Remove unused imports, 1 of 1
+ {
+ name: "remove_unused_1_of_1",
+ in: `package foo
+
+import "fmt"
+
+func bar() {
+}
+`,
+ out: `package foo
+
+func bar() {
+}
+`,
+ },
+
+ // Don't remove empty imports.
+ {
+ name: "dont_remove_empty_imports",
+ in: `package foo
+import (
+_ "image/png"
+_ "image/jpeg"
+)
+`,
+ out: `package foo
+
+import (
+ _ "image/jpeg"
+ _ "image/png"
+)
+`,
+ },
+
+ // Don't remove dot imports.
+ {
+ name: "dont_remove_dot_imports",
+ in: `package foo
+import (
+. "foo"
+. "bar"
+)
+`,
+ out: `package foo
+
+import (
+ . "bar"
+ . "foo"
+)
+`,
+ },
+
+ // Skip refs the parser can resolve.
+ {
+ name: "skip_resolved_refs",
+ in: `package foo
+
+func f() {
+ type t struct{ Println func(string) }
+ fmt := t{Println: func(string) {}}
+ fmt.Println("foo")
+}
+`,
+ out: `package foo
+
+func f() {
+ type t struct{ Println func(string) }
+ fmt := t{Println: func(string) {}}
+ fmt.Println("foo")
+}
+`,
+ },
+
+ // Do not add a package we already have a resolution for.
+ {
+ name: "skip_template",
+ in: `package foo
+
+import "html/template"
+
+func f() { t = template.New("sometemplate") }
+`,
+ out: `package foo
+
+import "html/template"
+
+func f() { t = template.New("sometemplate") }
+`,
+ },
+
+ // Don't touch cgo
+ {
+ name: "cgo",
+ in: `package foo
+
+/*
+#include
+*/
+import "C"
+`,
+ out: `package foo
+
+/*
+#include
+*/
+import "C"
+`,
+ },
+
+ // Put some things in their own section
+ {
+ name: "make_sections",
+ in: `package foo
+
+import (
+"os"
+)
+
+func foo () {
+_, _ = os.Args, fmt.Println
+_, _ = appengine.FooSomething, user.Current
+}
+`,
+ out: `package foo
+
+import (
+ "fmt"
+ "os"
+
+ "appengine"
+ "appengine/user"
+)
+
+func foo() {
+ _, _ = os.Args, fmt.Println
+ _, _ = appengine.FooSomething, user.Current
+}
+`,
+ },
+
+ // Delete existing empty import block
+ {
+ name: "delete_empty_import_block",
+ in: `package foo
+
+import ()
+`,
+ out: `package foo
+`,
+ },
+
+ // Use existing empty import block
+ {
+ name: "use_empty_import_block",
+ in: `package foo
+
+import ()
+
+func f() {
+ _ = fmt.Println
+}
+`,
+ out: `package foo
+
+import "fmt"
+
+func f() {
+ _ = fmt.Println
+}
+`,
+ },
+
+ // Blank line before adding new section.
+ {
+ name: "blank_line_before_new_group",
+ in: `package foo
+
+import (
+ "fmt"
+ "net"
+)
+
+func f() {
+ _ = net.Dial
+ _ = fmt.Printf
+ _ = snappy.Foo
+}
+`,
+ out: `package foo
+
+import (
+ "fmt"
+ "net"
+
+ "code.google.com/p/snappy-go/snappy"
+)
+
+func f() {
+ _ = net.Dial
+ _ = fmt.Printf
+ _ = snappy.Foo
+}
+`,
+ },
+
+ // Blank line between standard library and third-party stuff.
+ {
+ name: "blank_line_separating_std_and_third_party",
+ in: `package foo
+
+import (
+ "code.google.com/p/snappy-go/snappy"
+ "fmt"
+ "net"
+)
+
+func f() {
+ _ = net.Dial
+ _ = fmt.Printf
+ _ = snappy.Foo
+}
+`,
+ out: `package foo
+
+import (
+ "fmt"
+ "net"
+
+ "code.google.com/p/snappy-go/snappy"
+)
+
+func f() {
+ _ = net.Dial
+ _ = fmt.Printf
+ _ = snappy.Foo
+}
+`,
+ },
+
+ // golang.org/issue/6884
+ {
+ name: "issue 6884",
+ in: `package main
+
+// A comment
+func main() {
+ fmt.Println("Hello, world")
+}
+`,
+ out: `package main
+
+import "fmt"
+
+// A comment
+func main() {
+ fmt.Println("Hello, world")
+}
+`,
+ },
+
+ // golang.org/issue/7132
+ {
+ name: "issue 7132",
+ in: `package main
+
+import (
+"fmt"
+
+"gu"
+"github.com/foo/bar"
+)
+
+var (
+a = bar.a
+b = gu.a
+c = fmt.Printf
+)
+`,
+ out: `package main
+
+import (
+ "fmt"
+
+ "gu"
+
+ "github.com/foo/bar"
+)
+
+var (
+ a = bar.a
+ b = gu.a
+ c = fmt.Printf
+)
+`,
+ },
+
+ {
+ name: "renamed package",
+ in: `package main
+
+var _ = str.HasPrefix
+`,
+ out: `package main
+
+import str "strings"
+
+var _ = str.HasPrefix
+`,
+ },
+
+ {
+ name: "fragment with main",
+ in: `func main(){fmt.Println("Hello, world")}`,
+ out: `package main
+
+import "fmt"
+
+func main() { fmt.Println("Hello, world") }
+`,
+ },
+
+ {
+ name: "fragment without main",
+ in: `func notmain(){fmt.Println("Hello, world")}`,
+ out: `import "fmt"
+
+func notmain() { fmt.Println("Hello, world") }`,
+ },
+
+ // Remove first import within in a 2nd/3rd/4th/etc. section.
+ // golang.org/issue/7679
+ {
+ name: "issue 7679",
+ in: `package main
+
+import (
+ "fmt"
+
+ "github.com/foo/bar"
+ "github.com/foo/qux"
+)
+
+func main() {
+ var _ = fmt.Println
+ //var _ = bar.A
+ var _ = qux.B
+}
+`,
+ out: `package main
+
+import (
+ "fmt"
+
+ "github.com/foo/qux"
+)
+
+func main() {
+ var _ = fmt.Println
+ //var _ = bar.A
+ var _ = qux.B
+}
+`,
+ },
+
+ // Blank line can be added before all types of import declarations.
+ // golang.org/issue/7866
+ {
+ name: "issue 7866",
+ in: `package main
+
+import (
+ "fmt"
+ renamed_bar "github.com/foo/bar"
+
+ . "github.com/foo/baz"
+ "io"
+
+ _ "github.com/foo/qux"
+ "strings"
+)
+
+func main() {
+ _, _, _, _, _ = fmt.Errorf, io.Copy, strings.Contains, renamed_bar.A, B
+}
+`,
+ out: `package main
+
+import (
+ "fmt"
+
+ renamed_bar "github.com/foo/bar"
+
+ "io"
+
+ . "github.com/foo/baz"
+
+ "strings"
+
+ _ "github.com/foo/qux"
+)
+
+func main() {
+ _, _, _, _, _ = fmt.Errorf, io.Copy, strings.Contains, renamed_bar.A, B
+}
+`,
+ },
+
+ // Non-idempotent comment formatting
+ // golang.org/issue/8035
+ {
+ name: "issue 8035",
+ in: `package main
+
+import (
+ "fmt" // A
+ "go/ast" // B
+ _ "launchpad.net/gocheck" // C
+)
+
+func main() { _, _ = fmt.Print, ast.Walk }
+`,
+ out: `package main
+
+import (
+ "fmt" // A
+ "go/ast" // B
+
+ _ "launchpad.net/gocheck" // C
+)
+
+func main() { _, _ = fmt.Print, ast.Walk }
+`,
+ },
+
+ // Failure to delete all duplicate imports
+ // golang.org/issue/8459
+ {
+ name: "issue 8459",
+ in: `package main
+
+import (
+ "fmt"
+ "log"
+ "log"
+ "math"
+)
+
+func main() { fmt.Println("pi:", math.Pi) }
+`,
+ out: `package main
+
+import (
+ "fmt"
+ "math"
+)
+
+func main() { fmt.Println("pi:", math.Pi) }
+`,
+ },
+
+ // Too aggressive prefix matching
+ // golang.org/issue/9961
+ {
+ name: "issue 9961",
+ in: `package p
+
+import (
+ "zip"
+
+ "rsc.io/p"
+)
+
+var (
+ _ = fmt.Print
+ _ = zip.Store
+ _ p.P
+ _ = regexp.Compile
+)
+`,
+ out: `package p
+
+import (
+ "fmt"
+ "regexp"
+ "zip"
+
+ "rsc.io/p"
+)
+
+var (
+ _ = fmt.Print
+ _ = zip.Store
+ _ p.P
+ _ = regexp.Compile
+)
+`,
+ },
+
+ // Unused named import is mistaken for unnamed import
+ // golang.org/issue/8149
+ {
+ name: "issue 8149",
+ in: `package main
+
+import foo "fmt"
+
+func main() { fmt.Println() }
+`,
+ out: `package main
+
+import "fmt"
+
+func main() { fmt.Println() }
+`,
+ },
+
+ // Unused named import is mistaken for unnamed import
+ // golang.org/issue/8149
+ {
+ name: "issue 8149",
+ in: `package main
+
+import (
+ "fmt"
+ x "fmt"
+)
+
+func main() { fmt.Println() }
+`,
+ out: `package main
+
+import (
+ "fmt"
+)
+
+func main() { fmt.Println() }
+`,
+ },
+
+ // FormatOnly
+ {
+ name: "format only",
+ formatOnly: true,
+ in: `package main
+
+import (
+"fmt"
+"golang.org/x/foo"
+)
+
+func main() {}
+`,
+ out: `package main
+
+import (
+ "fmt"
+
+ "golang.org/x/foo"
+)
+
+func main() {}
+`,
+ },
+
+ {
+ name: "do not make grouped imports non-grouped",
+ in: `package p
+
+import (
+ "bytes"
+ "fmt"
+)
+
+var _ = fmt.Sprintf
+`,
+ out: `package p
+
+import (
+ "fmt"
+)
+
+var _ = fmt.Sprintf
+`,
+ },
+}
+
+func TestFixImports(t *testing.T) {
+ simplePkgs := map[string]string{
+ "appengine": "appengine",
+ "bytes": "bytes",
+ "fmt": "fmt",
+ "math": "math",
+ "os": "os",
+ "p": "rsc.io/p",
+ "regexp": "regexp",
+ "snappy": "code.google.com/p/snappy-go/snappy",
+ "str": "strings",
+ "user": "appengine/user",
+ "zip": "archive/zip",
+ }
+ old := findImport
+ defer func() {
+ findImport = old
+ }()
+ findImport = func(pkgName string, symbols map[string]bool, filename string) (string, bool, error) {
+ return simplePkgs[pkgName], pkgName == "str", nil
+ }
+
+ options := &Options{
+ TabWidth: 8,
+ TabIndent: true,
+ Comments: true,
+ Fragment: true,
+ }
+
+ for _, tt := range tests {
+ options.FormatOnly = tt.formatOnly
+ if *only != "" && tt.name != *only {
+ continue
+ }
+ buf, err := Process(tt.name+".go", []byte(tt.in), options)
+ if err != nil {
+ t.Errorf("error on %q: %v", tt.name, err)
+ continue
+ }
+ if got := string(buf); got != tt.out {
+ t.Errorf("results diff on %q\nGOT:\n%s\nWANT:\n%s\n", tt.name, got, tt.out)
+ }
+ }
+}
+
+// Test support for packages in GOPATH that are actually symlinks.
+// Also test that a symlink loop does not block the process.
+func TestImportSymlinks(t *testing.T) {
+ switch runtime.GOOS {
+ case "windows", "plan9":
+ t.Skipf("skipping test on %q as there are no symlinks", runtime.GOOS)
+ }
+
+ newGoPath, err := ioutil.TempDir("", "symlinktest")
+ if err != nil {
+ t.Fatal(err)
+ }
+ defer os.RemoveAll(newGoPath)
+
+ // Create:
+ // $GOPATH/target/
+ // $GOPATH/target/f.go // package mypkg\nvar Foo = 123\n
+ // $GOPATH/src/x/
+ // $GOPATH/src/x/mypkg => $GOPATH/target // symlink
+ // $GOPATH/src/x/apkg => $GOPATH/src/x // symlink loop
+ // Test:
+ // $GOPATH/src/myotherpkg/toformat.go referencing mypkg.Foo
+
+ targetPath := newGoPath + "/target"
+ if err := os.MkdirAll(targetPath, 0755); err != nil {
+ t.Fatal(err)
+ }
+ if err := ioutil.WriteFile(targetPath+"/f.go", []byte("package mypkg\nvar Foo = 123\n"), 0666); err != nil {
+ t.Fatal(err)
+ }
+
+ symlinkPath := newGoPath + "/src/x/mypkg"
+ if err := os.MkdirAll(filepath.Dir(symlinkPath), 0755); err != nil {
+ t.Fatal(err)
+ }
+ if err := os.Symlink(targetPath, symlinkPath); err != nil {
+ t.Fatal(err)
+ }
+
+ // Add a symlink loop.
+ if err := os.Symlink(newGoPath+"/src/x", newGoPath+"/src/x/apkg"); err != nil {
+ t.Fatal(err)
+ }
+
+ withEmptyGoPath(func() {
+ build.Default.GOPATH = newGoPath
+
+ input := `package p
+
+var (
+ _ = fmt.Print
+ _ = mypkg.Foo
+)
+`
+ output := `package p
+
+import (
+ "fmt"
+ "x/mypkg"
+)
+
+var (
+ _ = fmt.Print
+ _ = mypkg.Foo
+)
+`
+ buf, err := Process(newGoPath+"/src/myotherpkg/toformat.go", []byte(input), &Options{})
+ if err != nil {
+ t.Fatal(err)
+ }
+ if got := string(buf); got != output {
+ t.Fatalf("results differ\nGOT:\n%s\nWANT:\n%s\n", got, output)
+ }
+ })
+
+ // Add a .goimportsignore and ensure it is respected.
+ if err := ioutil.WriteFile(newGoPath+"/src/.goimportsignore", []byte("x/mypkg\n"), 0666); err != nil {
+ t.Fatal(err)
+ }
+
+ withEmptyGoPath(func() {
+ build.Default.GOPATH = newGoPath
+
+ input := `package p
+
+var (
+ _ = fmt.Print
+ _ = mypkg.Foo
+)
+`
+ output := `package p
+
+import "fmt"
+
+var (
+ _ = fmt.Print
+ _ = mypkg.Foo
+)
+`
+ buf, err := Process(newGoPath+"/src/myotherpkg/toformat.go", []byte(input), &Options{})
+ if err != nil {
+ t.Fatal(err)
+ }
+ if got := string(buf); got != output {
+ t.Fatalf("ignored results differ\nGOT:\n%s\nWANT:\n%s\n", got, output)
+ }
+ })
+
+}
+
+// Test for correctly identifying the name of a vendored package when it
+// differs from its directory name. In this test, the import line
+// "mypkg.com/mypkg.v1" would be removed if goimports wasn't able to detect
+// that the package name is "mypkg".
+func TestFixImportsVendorPackage(t *testing.T) {
+ // Skip this test on go versions with no vendor support.
+ if _, err := os.Stat(filepath.Join(runtime.GOROOT(), "src/vendor")); err != nil {
+ t.Skip(err)
+ }
+ testConfig{
+ gopathFiles: map[string]string{
+ "mypkg.com/outpkg/vendor/mypkg.com/mypkg.v1/f.go": "package mypkg\nvar Foo = 123\n",
+ },
+ }.test(t, func(t *goimportTest) {
+ input := `package p
+
+import (
+ "fmt"
+
+ "mypkg.com/mypkg.v1"
+)
+
+var (
+ _ = fmt.Print
+ _ = mypkg.Foo
+)
+`
+ buf, err := Process(filepath.Join(t.gopath, "src/mypkg.com/outpkg/toformat.go"), []byte(input), &Options{})
+ if err != nil {
+ t.Fatal(err)
+ }
+ if got := string(buf); got != input {
+ t.Fatalf("results differ\nGOT:\n%s\nWANT:\n%s\n", got, input)
+ }
+ })
+}
+
+func TestFindImportGoPath(t *testing.T) {
+ goroot, err := ioutil.TempDir("", "goimports-")
+ if err != nil {
+ t.Fatal(err)
+ }
+ defer os.RemoveAll(goroot)
+
+ origStdlib := stdlib
+ defer func() {
+ stdlib = origStdlib
+ }()
+ stdlib = nil
+
+ withEmptyGoPath(func() {
+ // Test against imaginary bits/bytes package in std lib
+ bytesDir := filepath.Join(goroot, "src", "pkg", "bits", "bytes")
+ for _, tag := range build.Default.ReleaseTags {
+ // Go 1.4 rearranged the GOROOT tree to remove the "pkg" path component.
+ if tag == "go1.4" {
+ bytesDir = filepath.Join(goroot, "src", "bits", "bytes")
+ }
+ }
+ if err := os.MkdirAll(bytesDir, 0755); err != nil {
+ t.Fatal(err)
+ }
+ bytesSrcPath := filepath.Join(bytesDir, "bytes.go")
+ bytesPkgPath := "bits/bytes"
+ bytesSrc := []byte(`package bytes
+
+type Buffer2 struct {}
+`)
+ if err := ioutil.WriteFile(bytesSrcPath, bytesSrc, 0775); err != nil {
+ t.Fatal(err)
+ }
+ build.Default.GOROOT = goroot
+
+ got, rename, err := findImportGoPath("bytes", map[string]bool{"Buffer2": true}, "x.go")
+ if err != nil {
+ t.Fatal(err)
+ }
+ if got != bytesPkgPath || rename {
+ t.Errorf(`findImportGoPath("bytes", Buffer2 ...)=%q, %t, want "%s", false`, got, rename, bytesPkgPath)
+ }
+
+ got, rename, err = findImportGoPath("bytes", map[string]bool{"Missing": true}, "x.go")
+ if err != nil {
+ t.Fatal(err)
+ }
+ if got != "" || rename {
+ t.Errorf(`findImportGoPath("bytes", Missing ...)=%q, %t, want "", false`, got, rename)
+ }
+ })
+}
+
+func init() {
+ inTests = true
+}
+
+func withEmptyGoPath(fn func()) {
+ testMu.Lock()
+
+ dirScanMu.Lock()
+ populateIgnoreOnce = sync.Once{}
+ scanGoRootOnce = sync.Once{}
+ scanGoPathOnce = sync.Once{}
+ dirScan = nil
+ ignoredDirs = nil
+ scanGoRootDone = make(chan struct{})
+ dirScanMu.Unlock()
+
+ oldGOPATH := build.Default.GOPATH
+ oldGOROOT := build.Default.GOROOT
+ build.Default.GOPATH = ""
+ testHookScanDir = func(string) {}
+ testMu.Unlock()
+
+ defer func() {
+ testMu.Lock()
+ testHookScanDir = func(string) {}
+ build.Default.GOPATH = oldGOPATH
+ build.Default.GOROOT = oldGOROOT
+ testMu.Unlock()
+ }()
+
+ fn()
+}
+
+func TestFindImportInternal(t *testing.T) {
+ withEmptyGoPath(func() {
+ // Check for src/internal/race, not just src/internal,
+ // so that we can run this test also against go1.5
+ // (which doesn't contain that file).
+ _, err := os.Stat(filepath.Join(runtime.GOROOT(), "src/internal/race"))
+ if err != nil {
+ t.Skip(err)
+ }
+
+ got, rename, err := findImportGoPath("race", map[string]bool{"Acquire": true}, filepath.Join(runtime.GOROOT(), "src/math/x.go"))
+ if err != nil {
+ t.Fatal(err)
+ }
+ if got != "internal/race" || rename {
+ t.Errorf(`findImportGoPath("race", Acquire ...) = %q, %t; want "internal/race", false`, got, rename)
+ }
+
+ // should not be able to use internal from outside that tree
+ got, rename, err = findImportGoPath("race", map[string]bool{"Acquire": true}, filepath.Join(runtime.GOROOT(), "x.go"))
+ if err != nil {
+ t.Fatal(err)
+ }
+ if got != "" || rename {
+ t.Errorf(`findImportGoPath("race", Acquire ...)=%q, %t, want "", false`, got, rename)
+ }
+ })
+}
+
+// rand.Read should prefer crypto/rand.Read, not math/rand.Read.
+func TestFindImportRandRead(t *testing.T) {
+ withEmptyGoPath(func() {
+ file := filepath.Join(runtime.GOROOT(), "src/foo/x.go") // dummy
+ tests := []struct {
+ syms []string
+ want string
+ }{
+ {
+ syms: []string{"Read"},
+ want: "crypto/rand",
+ },
+ {
+ syms: []string{"Read", "NewZipf"},
+ want: "math/rand",
+ },
+ {
+ syms: []string{"NewZipf"},
+ want: "math/rand",
+ },
+ {
+ syms: []string{"Read", "Prime"},
+ want: "crypto/rand",
+ },
+ }
+ for _, tt := range tests {
+ m := map[string]bool{}
+ for _, sym := range tt.syms {
+ m[sym] = true
+ }
+ got, _, err := findImportGoPath("rand", m, file)
+ if err != nil {
+ t.Errorf("for %q: %v", tt.syms, err)
+ continue
+ }
+ if got != tt.want {
+ t.Errorf("for %q, findImportGoPath = %q; want %q", tt.syms, got, tt.want)
+ }
+ }
+ })
+}
+
+func TestFindImportVendor(t *testing.T) {
+ testConfig{
+ gorootFiles: map[string]string{
+ "vendor/golang.org/x/net/http2/hpack/huffman.go": "package hpack\nfunc HuffmanDecode() { }\n",
+ },
+ }.test(t, func(t *goimportTest) {
+ got, rename, err := findImportGoPath("hpack", map[string]bool{"HuffmanDecode": true}, filepath.Join(t.goroot, "src/math/x.go"))
+ if err != nil {
+ t.Fatal(err)
+ }
+ want := "golang.org/x/net/http2/hpack"
+ if got != want || rename {
+ t.Errorf(`findImportGoPath("hpack", HuffmanDecode ...) = %q, %t; want %q, false`, got, rename, want)
+ }
+ })
+}
+
+func TestProcessVendor(t *testing.T) {
+ withEmptyGoPath(func() {
+ _, err := os.Stat(filepath.Join(runtime.GOROOT(), "src/vendor"))
+ if err != nil {
+ t.Skip(err)
+ }
+
+ target := filepath.Join(runtime.GOROOT(), "src/math/x.go")
+ out, err := Process(target, []byte("package http\nimport \"bytes\"\nfunc f() { strings.NewReader(); hpack.HuffmanDecode() }\n"), nil)
+
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ want := "golang_org/x/net/http2/hpack"
+ if _, err := os.Stat(filepath.Join(runtime.GOROOT(), "src/vendor", want)); os.IsNotExist(err) {
+ want = "golang.org/x/net/http2/hpack"
+ }
+
+ if !bytes.Contains(out, []byte(want)) {
+ t.Fatalf("Process(%q) did not add expected hpack import %q; got:\n%s", target, want, out)
+ }
+ })
+}
+
+func TestFindImportStdlib(t *testing.T) {
+ tests := []struct {
+ pkg string
+ symbols []string
+ want string
+ }{
+ {"http", []string{"Get"}, "net/http"},
+ {"http", []string{"Get", "Post"}, "net/http"},
+ {"http", []string{"Get", "Foo"}, ""},
+ {"bytes", []string{"Buffer"}, "bytes"},
+ {"ioutil", []string{"Discard"}, "io/ioutil"},
+ }
+ for _, tt := range tests {
+ got, rename, ok := findImportStdlib(tt.pkg, strSet(tt.symbols))
+ if (got != "") != ok {
+ t.Error("findImportStdlib return value inconsistent")
+ }
+ if got != tt.want || rename {
+ t.Errorf("findImportStdlib(%q, %q) = %q, %t; want %q, false", tt.pkg, tt.symbols, got, rename, tt.want)
+ }
+ }
+}
+
+type testConfig struct {
+ // goroot and gopath optionally specifies the path on disk
+ // to use for the GOROOT and GOPATH. If empty, a temp directory
+ // is made if needed.
+ goroot, gopath string
+
+ // gorootFiles optionally specifies the complete contents of GOROOT to use,
+ // If nil, the normal current $GOROOT is used.
+ gorootFiles map[string]string // paths relative to $GOROOT/src to contents
+
+ // gopathFiles is like gorootFiles, but for $GOPATH.
+ // If nil, there is no GOPATH, though.
+ gopathFiles map[string]string // paths relative to $GOPATH/src to contents
+}
+
+func mustTempDir(t *testing.T, prefix string) string {
+ dir, err := ioutil.TempDir("", prefix)
+ if err != nil {
+ t.Fatal(err)
+ }
+ return dir
+}
+
+func mapToDir(destDir string, files map[string]string) error {
+ for path, contents := range files {
+ file := filepath.Join(destDir, "src", path)
+ if err := os.MkdirAll(filepath.Dir(file), 0755); err != nil {
+ return err
+ }
+ var err error
+ if strings.HasPrefix(contents, "LINK:") {
+ err = os.Symlink(strings.TrimPrefix(contents, "LINK:"), file)
+ } else {
+ err = ioutil.WriteFile(file, []byte(contents), 0644)
+ }
+ if err != nil {
+ return err
+ }
+ }
+ return nil
+}
+
+func (c testConfig) test(t *testing.T, fn func(*goimportTest)) {
+ goroot := c.goroot
+ gopath := c.gopath
+
+ if c.gorootFiles != nil && goroot == "" {
+ goroot = mustTempDir(t, "goroot-")
+ defer os.RemoveAll(goroot)
+ }
+ if err := mapToDir(goroot, c.gorootFiles); err != nil {
+ t.Fatal(err)
+ }
+
+ if c.gopathFiles != nil && gopath == "" {
+ gopath = mustTempDir(t, "gopath-")
+ defer os.RemoveAll(gopath)
+ }
+ if err := mapToDir(gopath, c.gopathFiles); err != nil {
+ t.Fatal(err)
+ }
+
+ withEmptyGoPath(func() {
+ if goroot != "" {
+ build.Default.GOROOT = goroot
+ }
+ build.Default.GOPATH = gopath
+
+ it := &goimportTest{
+ T: t,
+ goroot: build.Default.GOROOT,
+ gopath: gopath,
+ ctx: &build.Default,
+ }
+ fn(it)
+ })
+}
+
+type goimportTest struct {
+ *testing.T
+ ctx *build.Context
+ goroot string
+ gopath string
+}
+
+// Tests that added imports are renamed when the import path's base doesn't
+// match its package name. For example, we want to generate:
+//
+// import cloudbilling "google.golang.org/api/cloudbilling/v1"
+func TestRenameWhenPackageNameMismatch(t *testing.T) {
+ testConfig{
+ gopathFiles: map[string]string{
+ "foo/bar/v1/x.go": "package bar \n const X = 1",
+ },
+ }.test(t, func(t *goimportTest) {
+ buf, err := Process(t.gopath+"/src/test/t.go", []byte("package main \n const Y = bar.X"), &Options{})
+ if err != nil {
+ t.Fatal(err)
+ }
+ const want = `package main
+
+import bar "foo/bar/v1"
+
+const Y = bar.X
+`
+ if string(buf) != want {
+ t.Errorf("Got:\n%s\nWant:\n%s", buf, want)
+ }
+ })
+}
+
+// Tests that the LocalPrefix option causes imports
+// to be added into a later group (num=3).
+func TestLocalPrefix(t *testing.T) {
+ defer func(s string) { LocalPrefix = s }(LocalPrefix)
+ LocalPrefix = "foo/"
+
+ testConfig{
+ gopathFiles: map[string]string{
+ "foo/bar/bar.go": "package bar \n const X = 1",
+ },
+ }.test(t, func(t *goimportTest) {
+ buf, err := Process(t.gopath+"/src/test/t.go", []byte("package main \n const Y = bar.X \n const _ = runtime.GOOS"), &Options{})
+ if err != nil {
+ t.Fatal(err)
+ }
+ const want = `package main
+
+import (
+ "runtime"
+
+ "foo/bar"
+)
+
+const Y = bar.X
+const _ = runtime.GOOS
+`
+ if string(buf) != want {
+ t.Errorf("Got:\n%s\nWant:\n%s", buf, want)
+ }
+ })
+}
+
+// Tests that running goimport on files in GOROOT (for people hacking
+// on Go itself) don't cause the GOPATH to be scanned (which might be
+// much bigger).
+func TestOptimizationWhenInGoroot(t *testing.T) {
+ testConfig{
+ gopathFiles: map[string]string{
+ "foo/foo.go": "package foo\nconst X = 1\n",
+ },
+ }.test(t, func(t *goimportTest) {
+ testHookScanDir = func(dir string) {
+ if dir != filepath.Join(build.Default.GOROOT, "src") {
+ t.Errorf("unexpected dir scan of %s", dir)
+ }
+ }
+ const in = "package foo\n\nconst Y = bar.X\n"
+ buf, err := Process(t.goroot+"/src/foo/foo.go", []byte(in), nil)
+ if err != nil {
+ t.Fatal(err)
+ }
+ if string(buf) != in {
+ t.Errorf("got:\n%q\nwant unchanged:\n%q\n", in, buf)
+ }
+ })
+}
+
+// Tests that "package documentation" files are ignored.
+func TestIgnoreDocumentationPackage(t *testing.T) {
+ testConfig{
+ gopathFiles: map[string]string{
+ "foo/foo.go": "package foo\nconst X = 1\n",
+ "foo/doc.go": "package documentation \n // just to confuse things\n",
+ },
+ }.test(t, func(t *goimportTest) {
+ const in = "package x\n\nconst Y = foo.X\n"
+ const want = "package x\n\nimport \"foo\"\n\nconst Y = foo.X\n"
+ buf, err := Process(t.gopath+"/src/x/x.go", []byte(in), nil)
+ if err != nil {
+ t.Fatal(err)
+ }
+ if string(buf) != want {
+ t.Errorf("wrong output.\ngot:\n%q\nwant:\n%q\n", in, want)
+ }
+ })
+}
+
+// Tests importPathToNameGoPathParse and in particular that it stops
+// after finding the first non-documentation package name, not
+// reporting an error on inconsistent package names (since it should
+// never make it that far).
+func TestImportPathToNameGoPathParse(t *testing.T) {
+ testConfig{
+ gopathFiles: map[string]string{
+ "example.net/pkg/doc.go": "package documentation\n", // ignored
+ "example.net/pkg/gen.go": "package main\n", // also ignored
+ "example.net/pkg/pkg.go": "package the_pkg_name_to_find\n and this syntax error is ignored because of parser.PackageClauseOnly",
+ "example.net/pkg/z.go": "package inconsistent\n", // inconsistent but ignored
+ },
+ }.test(t, func(t *goimportTest) {
+ got, err := importPathToNameGoPathParse("example.net/pkg", filepath.Join(t.gopath, "src", "other.net"))
+ if err != nil {
+ t.Fatal(err)
+ }
+ const want = "the_pkg_name_to_find"
+ if got != want {
+ t.Errorf("importPathToNameGoPathParse(..) = %q; want %q", got, want)
+ }
+ })
+}
+
+func TestIgnoreConfiguration(t *testing.T) {
+ testConfig{
+ gopathFiles: map[string]string{
+ ".goimportsignore": "# comment line\n\n example.net", // tests comment, blank line, whitespace trimming
+ "example.net/pkg/pkg.go": "package pkg\nconst X = 1",
+ "otherwise-longer-so-worse.example.net/foo/pkg/pkg.go": "package pkg\nconst X = 1",
+ },
+ }.test(t, func(t *goimportTest) {
+ const in = "package x\n\nconst _ = pkg.X\n"
+ const want = "package x\n\nimport \"otherwise-longer-so-worse.example.net/foo/pkg\"\n\nconst _ = pkg.X\n"
+ buf, err := Process(t.gopath+"/src/x/x.go", []byte(in), nil)
+ if err != nil {
+ t.Fatal(err)
+ }
+ if string(buf) != want {
+ t.Errorf("wrong output.\ngot:\n%q\nwant:\n%q\n", buf, want)
+ }
+ })
+}
+
+// Skip "node_modules" directory.
+func TestSkipNodeModules(t *testing.T) {
+ testConfig{
+ gopathFiles: map[string]string{
+ "example.net/node_modules/pkg/a.go": "package pkg\nconst X = 1",
+ "otherwise-longer.net/not_modules/pkg/a.go": "package pkg\nconst X = 1",
+ },
+ }.test(t, func(t *goimportTest) {
+ const in = "package x\n\nconst _ = pkg.X\n"
+ const want = "package x\n\nimport \"otherwise-longer.net/not_modules/pkg\"\n\nconst _ = pkg.X\n"
+ buf, err := Process(t.gopath+"/src/x/x.go", []byte(in), nil)
+ if err != nil {
+ t.Fatal(err)
+ }
+ if string(buf) != want {
+ t.Errorf("wrong output.\ngot:\n%q\nwant:\n%q\n", buf, want)
+ }
+ })
+}
+
+// golang.org/issue/16458 -- if GOROOT is a prefix of GOPATH, GOPATH is ignored.
+func TestGoRootPrefixOfGoPath(t *testing.T) {
+ dir := mustTempDir(t, "importstest")
+ defer os.RemoveAll(dir)
+ testConfig{
+ goroot: filepath.Join(dir, "go"),
+ gopath: filepath.Join(dir, "gopath"),
+ gopathFiles: map[string]string{
+ "example.com/foo/pkg.go": "package foo\nconst X = 1",
+ },
+ }.test(t, func(t *goimportTest) {
+ const in = "package x\n\nconst _ = foo.X\n"
+ const want = "package x\n\nimport \"example.com/foo\"\n\nconst _ = foo.X\n"
+ buf, err := Process(t.gopath+"/src/x/x.go", []byte(in), nil)
+ if err != nil {
+ t.Fatal(err)
+ }
+ if string(buf) != want {
+ t.Errorf("wrong output.\ngot:\n%q\nwant:\n%q\n", buf, want)
+ }
+ })
+
+}
+
+const testGlobalImportsUsesGlobal = `package globalimporttest
+
+func doSomething() {
+ t := time.Now()
+}
+`
+
+const testGlobalImportsGlobalDecl = `package globalimporttest
+
+type Time struct{}
+
+func (t Time) Now() Time {
+ return Time{}
+}
+
+var time Time
+`
+
+// Tests that package global variables with the same name and function name as
+// a function in a separate package do not result in an import which masks
+// the global variable
+func TestGlobalImports(t *testing.T) {
+ const pkg = "globalimporttest"
+ const usesGlobalFile = pkg + "/uses_global.go"
+ testConfig{
+ gopathFiles: map[string]string{
+ usesGlobalFile: testGlobalImportsUsesGlobal,
+ pkg + "/global.go": testGlobalImportsGlobalDecl,
+ },
+ }.test(t, func(t *goimportTest) {
+ buf, err := Process(
+ t.gopath+"/src/"+usesGlobalFile, []byte(testGlobalImportsUsesGlobal), nil)
+ if err != nil {
+ t.Fatal(err)
+ }
+ if string(buf) != testGlobalImportsUsesGlobal {
+ t.Errorf("wrong output.\ngot:\n%q\nwant:\n%q\n", buf, testGlobalImportsUsesGlobal)
+ }
+ })
+}
+
+func strSet(ss []string) map[string]bool {
+ m := make(map[string]bool)
+ for _, s := range ss {
+ m[s] = true
+ }
+ return m
+}
+
+func TestPkgIsCandidate(t *testing.T) {
+ tests := [...]struct {
+ filename string
+ pkgIdent string
+ pkg *pkg
+ want bool
+ }{
+ // normal match
+ 0: {
+ filename: "/gopath/src/my/pkg/pkg.go",
+ pkgIdent: "client",
+ pkg: &pkg{
+ dir: "/gopath/src/client",
+ importPath: "client",
+ importPathShort: "client",
+ },
+ want: true,
+ },
+ // not a match
+ 1: {
+ filename: "/gopath/src/my/pkg/pkg.go",
+ pkgIdent: "zzz",
+ pkg: &pkg{
+ dir: "/gopath/src/client",
+ importPath: "client",
+ importPathShort: "client",
+ },
+ want: false,
+ },
+ // would be a match, but "client" appears too deep.
+ 2: {
+ filename: "/gopath/src/my/pkg/pkg.go",
+ pkgIdent: "client",
+ pkg: &pkg{
+ dir: "/gopath/src/client/foo/foo/foo",
+ importPath: "client/foo/foo",
+ importPathShort: "client/foo/foo",
+ },
+ want: false,
+ },
+ // not an exact match, but substring is good enough.
+ 3: {
+ filename: "/gopath/src/my/pkg/pkg.go",
+ pkgIdent: "client",
+ pkg: &pkg{
+ dir: "/gopath/src/foo/go-client",
+ importPath: "foo/go-client",
+ importPathShort: "foo/go-client",
+ },
+ want: true,
+ },
+ // "internal" package, and not visible
+ 4: {
+ filename: "/gopath/src/my/pkg/pkg.go",
+ pkgIdent: "client",
+ pkg: &pkg{
+ dir: "/gopath/src/foo/internal/client",
+ importPath: "foo/internal/client",
+ importPathShort: "foo/internal/client",
+ },
+ want: false,
+ },
+ // "internal" package but visible
+ 5: {
+ filename: "/gopath/src/foo/bar.go",
+ pkgIdent: "client",
+ pkg: &pkg{
+ dir: "/gopath/src/foo/internal/client",
+ importPath: "foo/internal/client",
+ importPathShort: "foo/internal/client",
+ },
+ want: true,
+ },
+ // "vendor" package not visible
+ 6: {
+ filename: "/gopath/src/foo/bar.go",
+ pkgIdent: "client",
+ pkg: &pkg{
+ dir: "/gopath/src/other/vendor/client",
+ importPath: "other/vendor/client",
+ importPathShort: "client",
+ },
+ want: false,
+ },
+ // "vendor" package, visible
+ 7: {
+ filename: "/gopath/src/foo/bar.go",
+ pkgIdent: "client",
+ pkg: &pkg{
+ dir: "/gopath/src/foo/vendor/client",
+ importPath: "other/foo/client",
+ importPathShort: "client",
+ },
+ want: true,
+ },
+ // Ignore hyphens.
+ 8: {
+ filename: "/gopath/src/foo/bar.go",
+ pkgIdent: "socketio",
+ pkg: &pkg{
+ dir: "/gopath/src/foo/socket-io",
+ importPath: "foo/socket-io",
+ importPathShort: "foo/socket-io",
+ },
+ want: true,
+ },
+ // Ignore case.
+ 9: {
+ filename: "/gopath/src/foo/bar.go",
+ pkgIdent: "fooprod",
+ pkg: &pkg{
+ dir: "/gopath/src/foo/FooPROD",
+ importPath: "foo/FooPROD",
+ importPathShort: "foo/FooPROD",
+ },
+ want: true,
+ },
+ // Ignoring both hyphens and case together.
+ 10: {
+ filename: "/gopath/src/foo/bar.go",
+ pkgIdent: "fooprod",
+ pkg: &pkg{
+ dir: "/gopath/src/foo/Foo-PROD",
+ importPath: "foo/Foo-PROD",
+ importPathShort: "foo/Foo-PROD",
+ },
+ want: true,
+ },
+ }
+ for i, tt := range tests {
+ got := pkgIsCandidate(tt.filename, tt.pkgIdent, tt.pkg)
+ if got != tt.want {
+ t.Errorf("test %d. pkgIsCandidate(%q, %q, %+v) = %v; want %v",
+ i, tt.filename, tt.pkgIdent, *tt.pkg, got, tt.want)
+ }
+ }
+}
+
+func TestShouldTraverse(t *testing.T) {
+ switch runtime.GOOS {
+ case "windows", "plan9":
+ t.Skipf("skipping symlink-requiring test on %s", runtime.GOOS)
+ }
+
+ dir, err := ioutil.TempDir("", "goimports-")
+ if err != nil {
+ t.Fatal(err)
+ }
+ defer os.RemoveAll(dir)
+
+ // Note: mapToDir prepends "src" to each element, since
+ // mapToDir was made for creating GOPATHs.
+ if err := mapToDir(dir, map[string]string{
+ "foo/foo2/file.txt": "",
+ "foo/foo2/link-to-src": "LINK:" + dir + "/src",
+ "foo/foo2/link-to-src-foo": "LINK:" + dir + "/src/foo",
+ "foo/foo2/link-to-dot": "LINK:.",
+ "bar/bar2/file.txt": "",
+ "bar/bar2/link-to-src-foo": "LINK:" + dir + "/src/foo",
+
+ "a/b/c": "LINK:" + dir + "/src/a/d",
+ "a/d/e": "LINK:" + dir + "/src/a/b",
+ }); err != nil {
+ t.Fatal(err)
+ }
+ tests := []struct {
+ dir string
+ file string
+ want bool
+ }{
+ {
+ dir: dir + "/src/foo/foo2",
+ file: "link-to-src-foo",
+ want: false, // loop
+ },
+ {
+ dir: dir + "/src/foo/foo2",
+ file: "link-to-src",
+ want: false, // loop
+ },
+ {
+ dir: dir + "/src/foo/foo2",
+ file: "link-to-dot",
+ want: false, // loop
+ },
+ {
+ dir: dir + "/src/bar/bar2",
+ file: "link-to-src-foo",
+ want: true, // not a loop
+ },
+ {
+ dir: dir + "/src/a/b/c",
+ file: "e",
+ want: false, // loop: "e" is the same as "b".
+ },
+ }
+ for i, tt := range tests {
+ fi, err := os.Stat(filepath.Join(tt.dir, tt.file))
+ if err != nil {
+ t.Errorf("%d. Stat = %v", i, err)
+ continue
+ }
+ got := shouldTraverse(tt.dir, fi)
+ if got != tt.want {
+ t.Errorf("%d. shouldTraverse(%q, %q) = %v; want %v", i, tt.dir, tt.file, got, tt.want)
+ }
+ }
+}
diff --git a/vendor/golang.org/x/tools/imports/imports.go b/vendor/golang.org/x/tools/imports/imports.go
new file mode 100644
index 00000000..67573f49
--- /dev/null
+++ b/vendor/golang.org/x/tools/imports/imports.go
@@ -0,0 +1,289 @@
+// Copyright 2013 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+//go:generate go run mkstdlib.go
+
+// Package imports implements a Go pretty-printer (like package "go/format")
+// that also adds or removes import statements as necessary.
+package imports // import "golang.org/x/tools/imports"
+
+import (
+ "bufio"
+ "bytes"
+ "fmt"
+ "go/ast"
+ "go/format"
+ "go/parser"
+ "go/printer"
+ "go/token"
+ "io"
+ "regexp"
+ "strconv"
+ "strings"
+
+ "golang.org/x/tools/go/ast/astutil"
+)
+
+// Options specifies options for processing files.
+type Options struct {
+ Fragment bool // Accept fragment of a source file (no package statement)
+ AllErrors bool // Report all errors (not just the first 10 on different lines)
+
+ Comments bool // Print comments (true if nil *Options provided)
+ TabIndent bool // Use tabs for indent (true if nil *Options provided)
+ TabWidth int // Tab width (8 if nil *Options provided)
+
+ FormatOnly bool // Disable the insertion and deletion of imports
+}
+
+// Process formats and adjusts imports for the provided file.
+// If opt is nil the defaults are used.
+//
+// Note that filename's directory influences which imports can be chosen,
+// so it is important that filename be accurate.
+// To process data ``as if'' it were in filename, pass the data as a non-nil src.
+func Process(filename string, src []byte, opt *Options) ([]byte, error) {
+ if opt == nil {
+ opt = &Options{Comments: true, TabIndent: true, TabWidth: 8}
+ }
+
+ fileSet := token.NewFileSet()
+ file, adjust, err := parse(fileSet, filename, src, opt)
+ if err != nil {
+ return nil, err
+ }
+
+ if !opt.FormatOnly {
+ _, err = fixImports(fileSet, file, filename)
+ if err != nil {
+ return nil, err
+ }
+ }
+
+ sortImports(fileSet, file)
+ imps := astutil.Imports(fileSet, file)
+
+ var spacesBefore []string // import paths we need spaces before
+ for _, impSection := range imps {
+ // Within each block of contiguous imports, see if any
+ // import lines are in different group numbers. If so,
+ // we'll need to put a space between them so it's
+ // compatible with gofmt.
+ lastGroup := -1
+ for _, importSpec := range impSection {
+ importPath, _ := strconv.Unquote(importSpec.Path.Value)
+ groupNum := importGroup(importPath)
+ if groupNum != lastGroup && lastGroup != -1 {
+ spacesBefore = append(spacesBefore, importPath)
+ }
+ lastGroup = groupNum
+ }
+
+ }
+
+ printerMode := printer.UseSpaces
+ if opt.TabIndent {
+ printerMode |= printer.TabIndent
+ }
+ printConfig := &printer.Config{Mode: printerMode, Tabwidth: opt.TabWidth}
+
+ var buf bytes.Buffer
+ err = printConfig.Fprint(&buf, fileSet, file)
+ if err != nil {
+ return nil, err
+ }
+ out := buf.Bytes()
+ if adjust != nil {
+ out = adjust(src, out)
+ }
+ if len(spacesBefore) > 0 {
+ out = addImportSpaces(bytes.NewReader(out), spacesBefore)
+ }
+
+ out, err = format.Source(out)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+// parse parses src, which was read from filename,
+// as a Go source file or statement list.
+func parse(fset *token.FileSet, filename string, src []byte, opt *Options) (*ast.File, func(orig, src []byte) []byte, error) {
+ parserMode := parser.Mode(0)
+ if opt.Comments {
+ parserMode |= parser.ParseComments
+ }
+ if opt.AllErrors {
+ parserMode |= parser.AllErrors
+ }
+
+ // Try as whole source file.
+ file, err := parser.ParseFile(fset, filename, src, parserMode)
+ if err == nil {
+ return file, nil, nil
+ }
+ // If the error is that the source file didn't begin with a
+ // package line and we accept fragmented input, fall through to
+ // try as a source fragment. Stop and return on any other error.
+ if !opt.Fragment || !strings.Contains(err.Error(), "expected 'package'") {
+ return nil, nil, err
+ }
+
+ // If this is a declaration list, make it a source file
+ // by inserting a package clause.
+ // Insert using a ;, not a newline, so that the line numbers
+ // in psrc match the ones in src.
+ psrc := append([]byte("package main;"), src...)
+ file, err = parser.ParseFile(fset, filename, psrc, parserMode)
+ if err == nil {
+ // If a main function exists, we will assume this is a main
+ // package and leave the file.
+ if containsMainFunc(file) {
+ return file, nil, nil
+ }
+
+ adjust := func(orig, src []byte) []byte {
+ // Remove the package clause.
+ // Gofmt has turned the ; into a \n.
+ src = src[len("package main\n"):]
+ return matchSpace(orig, src)
+ }
+ return file, adjust, nil
+ }
+ // If the error is that the source file didn't begin with a
+ // declaration, fall through to try as a statement list.
+ // Stop and return on any other error.
+ if !strings.Contains(err.Error(), "expected declaration") {
+ return nil, nil, err
+ }
+
+ // If this is a statement list, make it a source file
+ // by inserting a package clause and turning the list
+ // into a function body. This handles expressions too.
+ // Insert using a ;, not a newline, so that the line numbers
+ // in fsrc match the ones in src.
+ fsrc := append(append([]byte("package p; func _() {"), src...), '}')
+ file, err = parser.ParseFile(fset, filename, fsrc, parserMode)
+ if err == nil {
+ adjust := func(orig, src []byte) []byte {
+ // Remove the wrapping.
+ // Gofmt has turned the ; into a \n\n.
+ src = src[len("package p\n\nfunc _() {"):]
+ src = src[:len(src)-len("}\n")]
+ // Gofmt has also indented the function body one level.
+ // Remove that indent.
+ src = bytes.Replace(src, []byte("\n\t"), []byte("\n"), -1)
+ return matchSpace(orig, src)
+ }
+ return file, adjust, nil
+ }
+
+ // Failed, and out of options.
+ return nil, nil, err
+}
+
+// containsMainFunc checks if a file contains a function declaration with the
+// function signature 'func main()'
+func containsMainFunc(file *ast.File) bool {
+ for _, decl := range file.Decls {
+ if f, ok := decl.(*ast.FuncDecl); ok {
+ if f.Name.Name != "main" {
+ continue
+ }
+
+ if len(f.Type.Params.List) != 0 {
+ continue
+ }
+
+ if f.Type.Results != nil && len(f.Type.Results.List) != 0 {
+ continue
+ }
+
+ return true
+ }
+ }
+
+ return false
+}
+
+func cutSpace(b []byte) (before, middle, after []byte) {
+ i := 0
+ for i < len(b) && (b[i] == ' ' || b[i] == '\t' || b[i] == '\n') {
+ i++
+ }
+ j := len(b)
+ for j > 0 && (b[j-1] == ' ' || b[j-1] == '\t' || b[j-1] == '\n') {
+ j--
+ }
+ if i <= j {
+ return b[:i], b[i:j], b[j:]
+ }
+ return nil, nil, b[j:]
+}
+
+// matchSpace reformats src to use the same space context as orig.
+// 1) If orig begins with blank lines, matchSpace inserts them at the beginning of src.
+// 2) matchSpace copies the indentation of the first non-blank line in orig
+// to every non-blank line in src.
+// 3) matchSpace copies the trailing space from orig and uses it in place
+// of src's trailing space.
+func matchSpace(orig []byte, src []byte) []byte {
+ before, _, after := cutSpace(orig)
+ i := bytes.LastIndex(before, []byte{'\n'})
+ before, indent := before[:i+1], before[i+1:]
+
+ _, src, _ = cutSpace(src)
+
+ var b bytes.Buffer
+ b.Write(before)
+ for len(src) > 0 {
+ line := src
+ if i := bytes.IndexByte(line, '\n'); i >= 0 {
+ line, src = line[:i+1], line[i+1:]
+ } else {
+ src = nil
+ }
+ if len(line) > 0 && line[0] != '\n' { // not blank
+ b.Write(indent)
+ }
+ b.Write(line)
+ }
+ b.Write(after)
+ return b.Bytes()
+}
+
+var impLine = regexp.MustCompile(`^\s+(?:[\w\.]+\s+)?"(.+)"`)
+
+func addImportSpaces(r io.Reader, breaks []string) []byte {
+ var out bytes.Buffer
+ sc := bufio.NewScanner(r)
+ inImports := false
+ done := false
+ for sc.Scan() {
+ s := sc.Text()
+
+ if !inImports && !done && strings.HasPrefix(s, "import") {
+ inImports = true
+ }
+ if inImports && (strings.HasPrefix(s, "var") ||
+ strings.HasPrefix(s, "func") ||
+ strings.HasPrefix(s, "const") ||
+ strings.HasPrefix(s, "type")) {
+ done = true
+ inImports = false
+ }
+ if inImports && len(breaks) > 0 {
+ if m := impLine.FindStringSubmatch(s); m != nil {
+ if m[1] == breaks[0] {
+ out.WriteByte('\n')
+ breaks = breaks[1:]
+ }
+ }
+ }
+
+ fmt.Fprintln(&out, s)
+ }
+ return out.Bytes()
+}
diff --git a/vendor/golang.org/x/tools/imports/mkindex.go b/vendor/golang.org/x/tools/imports/mkindex.go
new file mode 100644
index 00000000..755e2394
--- /dev/null
+++ b/vendor/golang.org/x/tools/imports/mkindex.go
@@ -0,0 +1,173 @@
+// +build ignore
+
+// Copyright 2013 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Command mkindex creates the file "pkgindex.go" containing an index of the Go
+// standard library. The file is intended to be built as part of the imports
+// package, so that the package may be used in environments where a GOROOT is
+// not available (such as App Engine).
+package main
+
+import (
+ "bytes"
+ "fmt"
+ "go/ast"
+ "go/build"
+ "go/format"
+ "go/parser"
+ "go/token"
+ "io/ioutil"
+ "log"
+ "os"
+ "path"
+ "path/filepath"
+ "strings"
+)
+
+var (
+ pkgIndex = make(map[string][]pkg)
+ exports = make(map[string]map[string]bool)
+)
+
+func main() {
+ // Don't use GOPATH.
+ ctx := build.Default
+ ctx.GOPATH = ""
+
+ // Populate pkgIndex global from GOROOT.
+ for _, path := range ctx.SrcDirs() {
+ f, err := os.Open(path)
+ if err != nil {
+ log.Print(err)
+ continue
+ }
+ children, err := f.Readdir(-1)
+ f.Close()
+ if err != nil {
+ log.Print(err)
+ continue
+ }
+ for _, child := range children {
+ if child.IsDir() {
+ loadPkg(path, child.Name())
+ }
+ }
+ }
+ // Populate exports global.
+ for _, ps := range pkgIndex {
+ for _, p := range ps {
+ e := loadExports(p.dir)
+ if e != nil {
+ exports[p.dir] = e
+ }
+ }
+ }
+
+ // Construct source file.
+ var buf bytes.Buffer
+ fmt.Fprint(&buf, pkgIndexHead)
+ fmt.Fprintf(&buf, "var pkgIndexMaster = %#v\n", pkgIndex)
+ fmt.Fprintf(&buf, "var exportsMaster = %#v\n", exports)
+ src := buf.Bytes()
+
+ // Replace main.pkg type name with pkg.
+ src = bytes.Replace(src, []byte("main.pkg"), []byte("pkg"), -1)
+ // Replace actual GOROOT with "/go".
+ src = bytes.Replace(src, []byte(ctx.GOROOT), []byte("/go"), -1)
+ // Add some line wrapping.
+ src = bytes.Replace(src, []byte("}, "), []byte("},\n"), -1)
+ src = bytes.Replace(src, []byte("true, "), []byte("true,\n"), -1)
+
+ var err error
+ src, err = format.Source(src)
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ // Write out source file.
+ err = ioutil.WriteFile("pkgindex.go", src, 0644)
+ if err != nil {
+ log.Fatal(err)
+ }
+}
+
+const pkgIndexHead = `package imports
+
+func init() {
+ pkgIndexOnce.Do(func() {
+ pkgIndex.m = pkgIndexMaster
+ })
+ loadExports = func(dir string) map[string]bool {
+ return exportsMaster[dir]
+ }
+}
+`
+
+type pkg struct {
+ importpath string // full pkg import path, e.g. "net/http"
+ dir string // absolute file path to pkg directory e.g. "/usr/lib/go/src/fmt"
+}
+
+var fset = token.NewFileSet()
+
+func loadPkg(root, importpath string) {
+ shortName := path.Base(importpath)
+ if shortName == "testdata" {
+ return
+ }
+
+ dir := filepath.Join(root, importpath)
+ pkgIndex[shortName] = append(pkgIndex[shortName], pkg{
+ importpath: importpath,
+ dir: dir,
+ })
+
+ pkgDir, err := os.Open(dir)
+ if err != nil {
+ return
+ }
+ children, err := pkgDir.Readdir(-1)
+ pkgDir.Close()
+ if err != nil {
+ return
+ }
+ for _, child := range children {
+ name := child.Name()
+ if name == "" {
+ continue
+ }
+ if c := name[0]; c == '.' || ('0' <= c && c <= '9') {
+ continue
+ }
+ if child.IsDir() {
+ loadPkg(root, filepath.Join(importpath, name))
+ }
+ }
+}
+
+func loadExports(dir string) map[string]bool {
+ exports := make(map[string]bool)
+ buildPkg, err := build.ImportDir(dir, 0)
+ if err != nil {
+ if strings.Contains(err.Error(), "no buildable Go source files in") {
+ return nil
+ }
+ log.Printf("could not import %q: %v", dir, err)
+ return nil
+ }
+ for _, file := range buildPkg.GoFiles {
+ f, err := parser.ParseFile(fset, filepath.Join(dir, file), nil, 0)
+ if err != nil {
+ log.Printf("could not parse %q: %v", file, err)
+ continue
+ }
+ for name := range f.Scope.Objects {
+ if ast.IsExported(name) {
+ exports[name] = true
+ }
+ }
+ }
+ return exports
+}
diff --git a/vendor/golang.org/x/tools/imports/mkstdlib.go b/vendor/golang.org/x/tools/imports/mkstdlib.go
new file mode 100644
index 00000000..9f626629
--- /dev/null
+++ b/vendor/golang.org/x/tools/imports/mkstdlib.go
@@ -0,0 +1,104 @@
+// +build ignore
+
+// mkstdlib generates the zstdlib.go file, containing the Go standard
+// library API symbols. It's baked into the binary to avoid scanning
+// GOPATH in the common case.
+package main
+
+import (
+ "bufio"
+ "bytes"
+ "fmt"
+ "go/format"
+ "io"
+ "io/ioutil"
+ "log"
+ "os"
+ "path"
+ "path/filepath"
+ "regexp"
+ "sort"
+ "strings"
+)
+
+func mustOpen(name string) io.Reader {
+ f, err := os.Open(name)
+ if err != nil {
+ log.Fatal(err)
+ }
+ return f
+}
+
+func api(base string) string {
+ return filepath.Join(os.Getenv("GOROOT"), "api", base)
+}
+
+var sym = regexp.MustCompile(`^pkg (\S+).*?, (?:var|func|type|const) ([A-Z]\w*)`)
+
+func main() {
+ var buf bytes.Buffer
+ outf := func(format string, args ...interface{}) {
+ fmt.Fprintf(&buf, format, args...)
+ }
+ outf("// AUTO-GENERATED BY mkstdlib.go\n\n")
+ outf("package imports\n")
+ outf("var stdlib = map[string]string{\n")
+ f := io.MultiReader(
+ mustOpen(api("go1.txt")),
+ mustOpen(api("go1.1.txt")),
+ mustOpen(api("go1.2.txt")),
+ mustOpen(api("go1.3.txt")),
+ mustOpen(api("go1.4.txt")),
+ mustOpen(api("go1.5.txt")),
+ mustOpen(api("go1.6.txt")),
+ mustOpen(api("go1.7.txt")),
+ mustOpen(api("go1.8.txt")),
+ )
+ sc := bufio.NewScanner(f)
+ fullImport := map[string]string{} // "zip.NewReader" => "archive/zip"
+ ambiguous := map[string]bool{}
+ var keys []string
+ for sc.Scan() {
+ l := sc.Text()
+ has := func(v string) bool { return strings.Contains(l, v) }
+ if has("struct, ") || has("interface, ") || has(", method (") {
+ continue
+ }
+ if m := sym.FindStringSubmatch(l); m != nil {
+ full := m[1]
+ key := path.Base(full) + "." + m[2]
+ if exist, ok := fullImport[key]; ok {
+ if exist != full {
+ ambiguous[key] = true
+ }
+ } else {
+ fullImport[key] = full
+ keys = append(keys, key)
+ }
+ }
+ }
+ if err := sc.Err(); err != nil {
+ log.Fatal(err)
+ }
+ sort.Strings(keys)
+ for _, key := range keys {
+ if ambiguous[key] {
+ outf("\t// %q is ambiguous\n", key)
+ } else {
+ outf("\t%q: %q,\n", key, fullImport[key])
+ }
+ }
+ outf("\n")
+ for _, sym := range [...]string{"Alignof", "ArbitraryType", "Offsetof", "Pointer", "Sizeof"} {
+ outf("\t%q: %q,\n", "unsafe."+sym, "unsafe")
+ }
+ outf("}\n")
+ fmtbuf, err := format.Source(buf.Bytes())
+ if err != nil {
+ log.Fatal(err)
+ }
+ err = ioutil.WriteFile("zstdlib.go", fmtbuf, 0666)
+ if err != nil {
+ log.Fatal(err)
+ }
+}
diff --git a/vendor/golang.org/x/tools/imports/sortimports.go b/vendor/golang.org/x/tools/imports/sortimports.go
new file mode 100644
index 00000000..653afc51
--- /dev/null
+++ b/vendor/golang.org/x/tools/imports/sortimports.go
@@ -0,0 +1,212 @@
+// Copyright 2013 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Hacked up copy of go/ast/import.go
+
+package imports
+
+import (
+ "go/ast"
+ "go/token"
+ "sort"
+ "strconv"
+)
+
+// sortImports sorts runs of consecutive import lines in import blocks in f.
+// It also removes duplicate imports when it is possible to do so without data loss.
+func sortImports(fset *token.FileSet, f *ast.File) {
+ for i, d := range f.Decls {
+ d, ok := d.(*ast.GenDecl)
+ if !ok || d.Tok != token.IMPORT {
+ // Not an import declaration, so we're done.
+ // Imports are always first.
+ break
+ }
+
+ if len(d.Specs) == 0 {
+ // Empty import block, remove it.
+ f.Decls = append(f.Decls[:i], f.Decls[i+1:]...)
+ }
+
+ if !d.Lparen.IsValid() {
+ // Not a block: sorted by default.
+ continue
+ }
+
+ // Identify and sort runs of specs on successive lines.
+ i := 0
+ specs := d.Specs[:0]
+ for j, s := range d.Specs {
+ if j > i && fset.Position(s.Pos()).Line > 1+fset.Position(d.Specs[j-1].End()).Line {
+ // j begins a new run. End this one.
+ specs = append(specs, sortSpecs(fset, f, d.Specs[i:j])...)
+ i = j
+ }
+ }
+ specs = append(specs, sortSpecs(fset, f, d.Specs[i:])...)
+ d.Specs = specs
+
+ // Deduping can leave a blank line before the rparen; clean that up.
+ if len(d.Specs) > 0 {
+ lastSpec := d.Specs[len(d.Specs)-1]
+ lastLine := fset.Position(lastSpec.Pos()).Line
+ if rParenLine := fset.Position(d.Rparen).Line; rParenLine > lastLine+1 {
+ fset.File(d.Rparen).MergeLine(rParenLine - 1)
+ }
+ }
+ }
+}
+
+func importPath(s ast.Spec) string {
+ t, err := strconv.Unquote(s.(*ast.ImportSpec).Path.Value)
+ if err == nil {
+ return t
+ }
+ return ""
+}
+
+func importName(s ast.Spec) string {
+ n := s.(*ast.ImportSpec).Name
+ if n == nil {
+ return ""
+ }
+ return n.Name
+}
+
+func importComment(s ast.Spec) string {
+ c := s.(*ast.ImportSpec).Comment
+ if c == nil {
+ return ""
+ }
+ return c.Text()
+}
+
+// collapse indicates whether prev may be removed, leaving only next.
+func collapse(prev, next ast.Spec) bool {
+ if importPath(next) != importPath(prev) || importName(next) != importName(prev) {
+ return false
+ }
+ return prev.(*ast.ImportSpec).Comment == nil
+}
+
+type posSpan struct {
+ Start token.Pos
+ End token.Pos
+}
+
+func sortSpecs(fset *token.FileSet, f *ast.File, specs []ast.Spec) []ast.Spec {
+ // Can't short-circuit here even if specs are already sorted,
+ // since they might yet need deduplication.
+ // A lone import, however, may be safely ignored.
+ if len(specs) <= 1 {
+ return specs
+ }
+
+ // Record positions for specs.
+ pos := make([]posSpan, len(specs))
+ for i, s := range specs {
+ pos[i] = posSpan{s.Pos(), s.End()}
+ }
+
+ // Identify comments in this range.
+ // Any comment from pos[0].Start to the final line counts.
+ lastLine := fset.Position(pos[len(pos)-1].End).Line
+ cstart := len(f.Comments)
+ cend := len(f.Comments)
+ for i, g := range f.Comments {
+ if g.Pos() < pos[0].Start {
+ continue
+ }
+ if i < cstart {
+ cstart = i
+ }
+ if fset.Position(g.End()).Line > lastLine {
+ cend = i
+ break
+ }
+ }
+ comments := f.Comments[cstart:cend]
+
+ // Assign each comment to the import spec preceding it.
+ importComment := map[*ast.ImportSpec][]*ast.CommentGroup{}
+ specIndex := 0
+ for _, g := range comments {
+ for specIndex+1 < len(specs) && pos[specIndex+1].Start <= g.Pos() {
+ specIndex++
+ }
+ s := specs[specIndex].(*ast.ImportSpec)
+ importComment[s] = append(importComment[s], g)
+ }
+
+ // Sort the import specs by import path.
+ // Remove duplicates, when possible without data loss.
+ // Reassign the import paths to have the same position sequence.
+ // Reassign each comment to abut the end of its spec.
+ // Sort the comments by new position.
+ sort.Sort(byImportSpec(specs))
+
+ // Dedup. Thanks to our sorting, we can just consider
+ // adjacent pairs of imports.
+ deduped := specs[:0]
+ for i, s := range specs {
+ if i == len(specs)-1 || !collapse(s, specs[i+1]) {
+ deduped = append(deduped, s)
+ } else {
+ p := s.Pos()
+ fset.File(p).MergeLine(fset.Position(p).Line)
+ }
+ }
+ specs = deduped
+
+ // Fix up comment positions
+ for i, s := range specs {
+ s := s.(*ast.ImportSpec)
+ if s.Name != nil {
+ s.Name.NamePos = pos[i].Start
+ }
+ s.Path.ValuePos = pos[i].Start
+ s.EndPos = pos[i].End
+ for _, g := range importComment[s] {
+ for _, c := range g.List {
+ c.Slash = pos[i].End
+ }
+ }
+ }
+
+ sort.Sort(byCommentPos(comments))
+
+ return specs
+}
+
+type byImportSpec []ast.Spec // slice of *ast.ImportSpec
+
+func (x byImportSpec) Len() int { return len(x) }
+func (x byImportSpec) Swap(i, j int) { x[i], x[j] = x[j], x[i] }
+func (x byImportSpec) Less(i, j int) bool {
+ ipath := importPath(x[i])
+ jpath := importPath(x[j])
+
+ igroup := importGroup(ipath)
+ jgroup := importGroup(jpath)
+ if igroup != jgroup {
+ return igroup < jgroup
+ }
+
+ if ipath != jpath {
+ return ipath < jpath
+ }
+ iname := importName(x[i])
+ jname := importName(x[j])
+
+ if iname != jname {
+ return iname < jname
+ }
+ return importComment(x[i]) < importComment(x[j])
+}
+
+type byCommentPos []*ast.CommentGroup
+
+func (x byCommentPos) Len() int { return len(x) }
+func (x byCommentPos) Swap(i, j int) { x[i], x[j] = x[j], x[i] }
+func (x byCommentPos) Less(i, j int) bool { return x[i].Pos() < x[j].Pos() }
diff --git a/vendor/golang.org/x/tools/imports/zstdlib.go b/vendor/golang.org/x/tools/imports/zstdlib.go
new file mode 100644
index 00000000..b1a2114e
--- /dev/null
+++ b/vendor/golang.org/x/tools/imports/zstdlib.go
@@ -0,0 +1,9376 @@
+// AUTO-GENERATED BY mkstdlib.go
+
+package imports
+
+var stdlib = map[string]string{
+ "adler32.Checksum": "hash/adler32",
+ "adler32.New": "hash/adler32",
+ "adler32.Size": "hash/adler32",
+ "aes.BlockSize": "crypto/aes",
+ "aes.KeySizeError": "crypto/aes",
+ "aes.NewCipher": "crypto/aes",
+ "ascii85.CorruptInputError": "encoding/ascii85",
+ "ascii85.Decode": "encoding/ascii85",
+ "ascii85.Encode": "encoding/ascii85",
+ "ascii85.MaxEncodedLen": "encoding/ascii85",
+ "ascii85.NewDecoder": "encoding/ascii85",
+ "ascii85.NewEncoder": "encoding/ascii85",
+ "asn1.BitString": "encoding/asn1",
+ "asn1.ClassApplication": "encoding/asn1",
+ "asn1.ClassContextSpecific": "encoding/asn1",
+ "asn1.ClassPrivate": "encoding/asn1",
+ "asn1.ClassUniversal": "encoding/asn1",
+ "asn1.Enumerated": "encoding/asn1",
+ "asn1.Flag": "encoding/asn1",
+ "asn1.Marshal": "encoding/asn1",
+ "asn1.ObjectIdentifier": "encoding/asn1",
+ "asn1.RawContent": "encoding/asn1",
+ "asn1.RawValue": "encoding/asn1",
+ "asn1.StructuralError": "encoding/asn1",
+ "asn1.SyntaxError": "encoding/asn1",
+ "asn1.TagBitString": "encoding/asn1",
+ "asn1.TagBoolean": "encoding/asn1",
+ "asn1.TagEnum": "encoding/asn1",
+ "asn1.TagGeneralString": "encoding/asn1",
+ "asn1.TagGeneralizedTime": "encoding/asn1",
+ "asn1.TagIA5String": "encoding/asn1",
+ "asn1.TagInteger": "encoding/asn1",
+ "asn1.TagOID": "encoding/asn1",
+ "asn1.TagOctetString": "encoding/asn1",
+ "asn1.TagPrintableString": "encoding/asn1",
+ "asn1.TagSequence": "encoding/asn1",
+ "asn1.TagSet": "encoding/asn1",
+ "asn1.TagT61String": "encoding/asn1",
+ "asn1.TagUTCTime": "encoding/asn1",
+ "asn1.TagUTF8String": "encoding/asn1",
+ "asn1.Unmarshal": "encoding/asn1",
+ "asn1.UnmarshalWithParams": "encoding/asn1",
+ "ast.ArrayType": "go/ast",
+ "ast.AssignStmt": "go/ast",
+ "ast.Bad": "go/ast",
+ "ast.BadDecl": "go/ast",
+ "ast.BadExpr": "go/ast",
+ "ast.BadStmt": "go/ast",
+ "ast.BasicLit": "go/ast",
+ "ast.BinaryExpr": "go/ast",
+ "ast.BlockStmt": "go/ast",
+ "ast.BranchStmt": "go/ast",
+ "ast.CallExpr": "go/ast",
+ "ast.CaseClause": "go/ast",
+ "ast.ChanDir": "go/ast",
+ "ast.ChanType": "go/ast",
+ "ast.CommClause": "go/ast",
+ "ast.Comment": "go/ast",
+ "ast.CommentGroup": "go/ast",
+ "ast.CommentMap": "go/ast",
+ "ast.CompositeLit": "go/ast",
+ "ast.Con": "go/ast",
+ "ast.DeclStmt": "go/ast",
+ "ast.DeferStmt": "go/ast",
+ "ast.Ellipsis": "go/ast",
+ "ast.EmptyStmt": "go/ast",
+ "ast.ExprStmt": "go/ast",
+ "ast.Field": "go/ast",
+ "ast.FieldFilter": "go/ast",
+ "ast.FieldList": "go/ast",
+ "ast.File": "go/ast",
+ "ast.FileExports": "go/ast",
+ "ast.Filter": "go/ast",
+ "ast.FilterDecl": "go/ast",
+ "ast.FilterFile": "go/ast",
+ "ast.FilterFuncDuplicates": "go/ast",
+ "ast.FilterImportDuplicates": "go/ast",
+ "ast.FilterPackage": "go/ast",
+ "ast.FilterUnassociatedComments": "go/ast",
+ "ast.ForStmt": "go/ast",
+ "ast.Fprint": "go/ast",
+ "ast.Fun": "go/ast",
+ "ast.FuncDecl": "go/ast",
+ "ast.FuncLit": "go/ast",
+ "ast.FuncType": "go/ast",
+ "ast.GenDecl": "go/ast",
+ "ast.GoStmt": "go/ast",
+ "ast.Ident": "go/ast",
+ "ast.IfStmt": "go/ast",
+ "ast.ImportSpec": "go/ast",
+ "ast.Importer": "go/ast",
+ "ast.IncDecStmt": "go/ast",
+ "ast.IndexExpr": "go/ast",
+ "ast.Inspect": "go/ast",
+ "ast.InterfaceType": "go/ast",
+ "ast.IsExported": "go/ast",
+ "ast.KeyValueExpr": "go/ast",
+ "ast.LabeledStmt": "go/ast",
+ "ast.Lbl": "go/ast",
+ "ast.MapType": "go/ast",
+ "ast.MergeMode": "go/ast",
+ "ast.MergePackageFiles": "go/ast",
+ "ast.NewCommentMap": "go/ast",
+ "ast.NewIdent": "go/ast",
+ "ast.NewObj": "go/ast",
+ "ast.NewPackage": "go/ast",
+ "ast.NewScope": "go/ast",
+ "ast.Node": "go/ast",
+ "ast.NotNilFilter": "go/ast",
+ "ast.ObjKind": "go/ast",
+ "ast.Object": "go/ast",
+ "ast.Package": "go/ast",
+ "ast.PackageExports": "go/ast",
+ "ast.ParenExpr": "go/ast",
+ "ast.Pkg": "go/ast",
+ "ast.Print": "go/ast",
+ "ast.RECV": "go/ast",
+ "ast.RangeStmt": "go/ast",
+ "ast.ReturnStmt": "go/ast",
+ "ast.SEND": "go/ast",
+ "ast.Scope": "go/ast",
+ "ast.SelectStmt": "go/ast",
+ "ast.SelectorExpr": "go/ast",
+ "ast.SendStmt": "go/ast",
+ "ast.SliceExpr": "go/ast",
+ "ast.SortImports": "go/ast",
+ "ast.StarExpr": "go/ast",
+ "ast.StructType": "go/ast",
+ "ast.SwitchStmt": "go/ast",
+ "ast.Typ": "go/ast",
+ "ast.TypeAssertExpr": "go/ast",
+ "ast.TypeSpec": "go/ast",
+ "ast.TypeSwitchStmt": "go/ast",
+ "ast.UnaryExpr": "go/ast",
+ "ast.ValueSpec": "go/ast",
+ "ast.Var": "go/ast",
+ "ast.Visitor": "go/ast",
+ "ast.Walk": "go/ast",
+ "atomic.AddInt32": "sync/atomic",
+ "atomic.AddInt64": "sync/atomic",
+ "atomic.AddUint32": "sync/atomic",
+ "atomic.AddUint64": "sync/atomic",
+ "atomic.AddUintptr": "sync/atomic",
+ "atomic.CompareAndSwapInt32": "sync/atomic",
+ "atomic.CompareAndSwapInt64": "sync/atomic",
+ "atomic.CompareAndSwapPointer": "sync/atomic",
+ "atomic.CompareAndSwapUint32": "sync/atomic",
+ "atomic.CompareAndSwapUint64": "sync/atomic",
+ "atomic.CompareAndSwapUintptr": "sync/atomic",
+ "atomic.LoadInt32": "sync/atomic",
+ "atomic.LoadInt64": "sync/atomic",
+ "atomic.LoadPointer": "sync/atomic",
+ "atomic.LoadUint32": "sync/atomic",
+ "atomic.LoadUint64": "sync/atomic",
+ "atomic.LoadUintptr": "sync/atomic",
+ "atomic.StoreInt32": "sync/atomic",
+ "atomic.StoreInt64": "sync/atomic",
+ "atomic.StorePointer": "sync/atomic",
+ "atomic.StoreUint32": "sync/atomic",
+ "atomic.StoreUint64": "sync/atomic",
+ "atomic.StoreUintptr": "sync/atomic",
+ "atomic.SwapInt32": "sync/atomic",
+ "atomic.SwapInt64": "sync/atomic",
+ "atomic.SwapPointer": "sync/atomic",
+ "atomic.SwapUint32": "sync/atomic",
+ "atomic.SwapUint64": "sync/atomic",
+ "atomic.SwapUintptr": "sync/atomic",
+ "atomic.Value": "sync/atomic",
+ "base32.CorruptInputError": "encoding/base32",
+ "base32.Encoding": "encoding/base32",
+ "base32.HexEncoding": "encoding/base32",
+ "base32.NewDecoder": "encoding/base32",
+ "base32.NewEncoder": "encoding/base32",
+ "base32.NewEncoding": "encoding/base32",
+ "base32.StdEncoding": "encoding/base32",
+ "base64.CorruptInputError": "encoding/base64",
+ "base64.Encoding": "encoding/base64",
+ "base64.NewDecoder": "encoding/base64",
+ "base64.NewEncoder": "encoding/base64",
+ "base64.NewEncoding": "encoding/base64",
+ "base64.NoPadding": "encoding/base64",
+ "base64.RawStdEncoding": "encoding/base64",
+ "base64.RawURLEncoding": "encoding/base64",
+ "base64.StdEncoding": "encoding/base64",
+ "base64.StdPadding": "encoding/base64",
+ "base64.URLEncoding": "encoding/base64",
+ "big.Above": "math/big",
+ "big.Accuracy": "math/big",
+ "big.AwayFromZero": "math/big",
+ "big.Below": "math/big",
+ "big.ErrNaN": "math/big",
+ "big.Exact": "math/big",
+ "big.Float": "math/big",
+ "big.Int": "math/big",
+ "big.Jacobi": "math/big",
+ "big.MaxBase": "math/big",
+ "big.MaxExp": "math/big",
+ "big.MaxPrec": "math/big",
+ "big.MinExp": "math/big",
+ "big.NewFloat": "math/big",
+ "big.NewInt": "math/big",
+ "big.NewRat": "math/big",
+ "big.ParseFloat": "math/big",
+ "big.Rat": "math/big",
+ "big.RoundingMode": "math/big",
+ "big.ToNearestAway": "math/big",
+ "big.ToNearestEven": "math/big",
+ "big.ToNegativeInf": "math/big",
+ "big.ToPositiveInf": "math/big",
+ "big.ToZero": "math/big",
+ "big.Word": "math/big",
+ "binary.BigEndian": "encoding/binary",
+ "binary.ByteOrder": "encoding/binary",
+ "binary.LittleEndian": "encoding/binary",
+ "binary.MaxVarintLen16": "encoding/binary",
+ "binary.MaxVarintLen32": "encoding/binary",
+ "binary.MaxVarintLen64": "encoding/binary",
+ "binary.PutUvarint": "encoding/binary",
+ "binary.PutVarint": "encoding/binary",
+ "binary.Read": "encoding/binary",
+ "binary.ReadUvarint": "encoding/binary",
+ "binary.ReadVarint": "encoding/binary",
+ "binary.Size": "encoding/binary",
+ "binary.Uvarint": "encoding/binary",
+ "binary.Varint": "encoding/binary",
+ "binary.Write": "encoding/binary",
+ "bufio.ErrAdvanceTooFar": "bufio",
+ "bufio.ErrBufferFull": "bufio",
+ "bufio.ErrFinalToken": "bufio",
+ "bufio.ErrInvalidUnreadByte": "bufio",
+ "bufio.ErrInvalidUnreadRune": "bufio",
+ "bufio.ErrNegativeAdvance": "bufio",
+ "bufio.ErrNegativeCount": "bufio",
+ "bufio.ErrTooLong": "bufio",
+ "bufio.MaxScanTokenSize": "bufio",
+ "bufio.NewReadWriter": "bufio",
+ "bufio.NewReader": "bufio",
+ "bufio.NewReaderSize": "bufio",
+ "bufio.NewScanner": "bufio",
+ "bufio.NewWriter": "bufio",
+ "bufio.NewWriterSize": "bufio",
+ "bufio.ReadWriter": "bufio",
+ "bufio.Reader": "bufio",
+ "bufio.ScanBytes": "bufio",
+ "bufio.ScanLines": "bufio",
+ "bufio.ScanRunes": "bufio",
+ "bufio.ScanWords": "bufio",
+ "bufio.Scanner": "bufio",
+ "bufio.SplitFunc": "bufio",
+ "bufio.Writer": "bufio",
+ "build.AllowBinary": "go/build",
+ "build.ArchChar": "go/build",
+ "build.Context": "go/build",
+ "build.Default": "go/build",
+ "build.FindOnly": "go/build",
+ "build.IgnoreVendor": "go/build",
+ "build.Import": "go/build",
+ "build.ImportComment": "go/build",
+ "build.ImportDir": "go/build",
+ "build.ImportMode": "go/build",
+ "build.IsLocalImport": "go/build",
+ "build.MultiplePackageError": "go/build",
+ "build.NoGoError": "go/build",
+ "build.Package": "go/build",
+ "build.ToolDir": "go/build",
+ "bytes.Buffer": "bytes",
+ "bytes.Compare": "bytes",
+ "bytes.Contains": "bytes",
+ "bytes.ContainsAny": "bytes",
+ "bytes.ContainsRune": "bytes",
+ "bytes.Count": "bytes",
+ "bytes.Equal": "bytes",
+ "bytes.EqualFold": "bytes",
+ "bytes.ErrTooLarge": "bytes",
+ "bytes.Fields": "bytes",
+ "bytes.FieldsFunc": "bytes",
+ "bytes.HasPrefix": "bytes",
+ "bytes.HasSuffix": "bytes",
+ "bytes.Index": "bytes",
+ "bytes.IndexAny": "bytes",
+ "bytes.IndexByte": "bytes",
+ "bytes.IndexFunc": "bytes",
+ "bytes.IndexRune": "bytes",
+ "bytes.Join": "bytes",
+ "bytes.LastIndex": "bytes",
+ "bytes.LastIndexAny": "bytes",
+ "bytes.LastIndexByte": "bytes",
+ "bytes.LastIndexFunc": "bytes",
+ "bytes.Map": "bytes",
+ "bytes.MinRead": "bytes",
+ "bytes.NewBuffer": "bytes",
+ "bytes.NewBufferString": "bytes",
+ "bytes.NewReader": "bytes",
+ "bytes.Reader": "bytes",
+ "bytes.Repeat": "bytes",
+ "bytes.Replace": "bytes",
+ "bytes.Runes": "bytes",
+ "bytes.Split": "bytes",
+ "bytes.SplitAfter": "bytes",
+ "bytes.SplitAfterN": "bytes",
+ "bytes.SplitN": "bytes",
+ "bytes.Title": "bytes",
+ "bytes.ToLower": "bytes",
+ "bytes.ToLowerSpecial": "bytes",
+ "bytes.ToTitle": "bytes",
+ "bytes.ToTitleSpecial": "bytes",
+ "bytes.ToUpper": "bytes",
+ "bytes.ToUpperSpecial": "bytes",
+ "bytes.Trim": "bytes",
+ "bytes.TrimFunc": "bytes",
+ "bytes.TrimLeft": "bytes",
+ "bytes.TrimLeftFunc": "bytes",
+ "bytes.TrimPrefix": "bytes",
+ "bytes.TrimRight": "bytes",
+ "bytes.TrimRightFunc": "bytes",
+ "bytes.TrimSpace": "bytes",
+ "bytes.TrimSuffix": "bytes",
+ "bzip2.NewReader": "compress/bzip2",
+ "bzip2.StructuralError": "compress/bzip2",
+ "cgi.Handler": "net/http/cgi",
+ "cgi.Request": "net/http/cgi",
+ "cgi.RequestFromMap": "net/http/cgi",
+ "cgi.Serve": "net/http/cgi",
+ "cipher.AEAD": "crypto/cipher",
+ "cipher.Block": "crypto/cipher",
+ "cipher.BlockMode": "crypto/cipher",
+ "cipher.NewCBCDecrypter": "crypto/cipher",
+ "cipher.NewCBCEncrypter": "crypto/cipher",
+ "cipher.NewCFBDecrypter": "crypto/cipher",
+ "cipher.NewCFBEncrypter": "crypto/cipher",
+ "cipher.NewCTR": "crypto/cipher",
+ "cipher.NewGCM": "crypto/cipher",
+ "cipher.NewGCMWithNonceSize": "crypto/cipher",
+ "cipher.NewOFB": "crypto/cipher",
+ "cipher.Stream": "crypto/cipher",
+ "cipher.StreamReader": "crypto/cipher",
+ "cipher.StreamWriter": "crypto/cipher",
+ "cmplx.Abs": "math/cmplx",
+ "cmplx.Acos": "math/cmplx",
+ "cmplx.Acosh": "math/cmplx",
+ "cmplx.Asin": "math/cmplx",
+ "cmplx.Asinh": "math/cmplx",
+ "cmplx.Atan": "math/cmplx",
+ "cmplx.Atanh": "math/cmplx",
+ "cmplx.Conj": "math/cmplx",
+ "cmplx.Cos": "math/cmplx",
+ "cmplx.Cosh": "math/cmplx",
+ "cmplx.Cot": "math/cmplx",
+ "cmplx.Exp": "math/cmplx",
+ "cmplx.Inf": "math/cmplx",
+ "cmplx.IsInf": "math/cmplx",
+ "cmplx.IsNaN": "math/cmplx",
+ "cmplx.Log": "math/cmplx",
+ "cmplx.Log10": "math/cmplx",
+ "cmplx.NaN": "math/cmplx",
+ "cmplx.Phase": "math/cmplx",
+ "cmplx.Polar": "math/cmplx",
+ "cmplx.Pow": "math/cmplx",
+ "cmplx.Rect": "math/cmplx",
+ "cmplx.Sin": "math/cmplx",
+ "cmplx.Sinh": "math/cmplx",
+ "cmplx.Sqrt": "math/cmplx",
+ "cmplx.Tan": "math/cmplx",
+ "cmplx.Tanh": "math/cmplx",
+ "color.Alpha": "image/color",
+ "color.Alpha16": "image/color",
+ "color.Alpha16Model": "image/color",
+ "color.AlphaModel": "image/color",
+ "color.Black": "image/color",
+ "color.CMYK": "image/color",
+ "color.CMYKModel": "image/color",
+ "color.CMYKToRGB": "image/color",
+ "color.Color": "image/color",
+ "color.Gray": "image/color",
+ "color.Gray16": "image/color",
+ "color.Gray16Model": "image/color",
+ "color.GrayModel": "image/color",
+ "color.Model": "image/color",
+ "color.ModelFunc": "image/color",
+ "color.NRGBA": "image/color",
+ "color.NRGBA64": "image/color",
+ "color.NRGBA64Model": "image/color",
+ "color.NRGBAModel": "image/color",
+ "color.NYCbCrA": "image/color",
+ "color.NYCbCrAModel": "image/color",
+ "color.Opaque": "image/color",
+ "color.Palette": "image/color",
+ "color.RGBA": "image/color",
+ "color.RGBA64": "image/color",
+ "color.RGBA64Model": "image/color",
+ "color.RGBAModel": "image/color",
+ "color.RGBToCMYK": "image/color",
+ "color.RGBToYCbCr": "image/color",
+ "color.Transparent": "image/color",
+ "color.White": "image/color",
+ "color.YCbCr": "image/color",
+ "color.YCbCrModel": "image/color",
+ "color.YCbCrToRGB": "image/color",
+ "constant.BinaryOp": "go/constant",
+ "constant.BitLen": "go/constant",
+ "constant.Bool": "go/constant",
+ "constant.BoolVal": "go/constant",
+ "constant.Bytes": "go/constant",
+ "constant.Compare": "go/constant",
+ "constant.Complex": "go/constant",
+ "constant.Denom": "go/constant",
+ "constant.Float": "go/constant",
+ "constant.Float32Val": "go/constant",
+ "constant.Float64Val": "go/constant",
+ "constant.Imag": "go/constant",
+ "constant.Int": "go/constant",
+ "constant.Int64Val": "go/constant",
+ "constant.Kind": "go/constant",
+ "constant.MakeBool": "go/constant",
+ "constant.MakeFloat64": "go/constant",
+ "constant.MakeFromBytes": "go/constant",
+ "constant.MakeFromLiteral": "go/constant",
+ "constant.MakeImag": "go/constant",
+ "constant.MakeInt64": "go/constant",
+ "constant.MakeString": "go/constant",
+ "constant.MakeUint64": "go/constant",
+ "constant.MakeUnknown": "go/constant",
+ "constant.Num": "go/constant",
+ "constant.Real": "go/constant",
+ "constant.Shift": "go/constant",
+ "constant.Sign": "go/constant",
+ "constant.String": "go/constant",
+ "constant.StringVal": "go/constant",
+ "constant.ToComplex": "go/constant",
+ "constant.ToFloat": "go/constant",
+ "constant.ToInt": "go/constant",
+ "constant.Uint64Val": "go/constant",
+ "constant.UnaryOp": "go/constant",
+ "constant.Unknown": "go/constant",
+ "context.Background": "context",
+ "context.CancelFunc": "context",
+ "context.Canceled": "context",
+ "context.Context": "context",
+ "context.DeadlineExceeded": "context",
+ "context.TODO": "context",
+ "context.WithCancel": "context",
+ "context.WithDeadline": "context",
+ "context.WithTimeout": "context",
+ "context.WithValue": "context",
+ "cookiejar.Jar": "net/http/cookiejar",
+ "cookiejar.New": "net/http/cookiejar",
+ "cookiejar.Options": "net/http/cookiejar",
+ "cookiejar.PublicSuffixList": "net/http/cookiejar",
+ "crc32.Castagnoli": "hash/crc32",
+ "crc32.Checksum": "hash/crc32",
+ "crc32.ChecksumIEEE": "hash/crc32",
+ "crc32.IEEE": "hash/crc32",
+ "crc32.IEEETable": "hash/crc32",
+ "crc32.Koopman": "hash/crc32",
+ "crc32.MakeTable": "hash/crc32",
+ "crc32.New": "hash/crc32",
+ "crc32.NewIEEE": "hash/crc32",
+ "crc32.Size": "hash/crc32",
+ "crc32.Table": "hash/crc32",
+ "crc32.Update": "hash/crc32",
+ "crc64.Checksum": "hash/crc64",
+ "crc64.ECMA": "hash/crc64",
+ "crc64.ISO": "hash/crc64",
+ "crc64.MakeTable": "hash/crc64",
+ "crc64.New": "hash/crc64",
+ "crc64.Size": "hash/crc64",
+ "crc64.Table": "hash/crc64",
+ "crc64.Update": "hash/crc64",
+ "crypto.Decrypter": "crypto",
+ "crypto.DecrypterOpts": "crypto",
+ "crypto.Hash": "crypto",
+ "crypto.MD4": "crypto",
+ "crypto.MD5": "crypto",
+ "crypto.MD5SHA1": "crypto",
+ "crypto.PrivateKey": "crypto",
+ "crypto.PublicKey": "crypto",
+ "crypto.RIPEMD160": "crypto",
+ "crypto.RegisterHash": "crypto",
+ "crypto.SHA1": "crypto",
+ "crypto.SHA224": "crypto",
+ "crypto.SHA256": "crypto",
+ "crypto.SHA384": "crypto",
+ "crypto.SHA3_224": "crypto",
+ "crypto.SHA3_256": "crypto",
+ "crypto.SHA3_384": "crypto",
+ "crypto.SHA3_512": "crypto",
+ "crypto.SHA512": "crypto",
+ "crypto.SHA512_224": "crypto",
+ "crypto.SHA512_256": "crypto",
+ "crypto.Signer": "crypto",
+ "crypto.SignerOpts": "crypto",
+ "csv.ErrBareQuote": "encoding/csv",
+ "csv.ErrFieldCount": "encoding/csv",
+ "csv.ErrQuote": "encoding/csv",
+ "csv.ErrTrailingComma": "encoding/csv",
+ "csv.NewReader": "encoding/csv",
+ "csv.NewWriter": "encoding/csv",
+ "csv.ParseError": "encoding/csv",
+ "csv.Reader": "encoding/csv",
+ "csv.Writer": "encoding/csv",
+ "debug.FreeOSMemory": "runtime/debug",
+ "debug.GCStats": "runtime/debug",
+ "debug.PrintStack": "runtime/debug",
+ "debug.ReadGCStats": "runtime/debug",
+ "debug.SetGCPercent": "runtime/debug",
+ "debug.SetMaxStack": "runtime/debug",
+ "debug.SetMaxThreads": "runtime/debug",
+ "debug.SetPanicOnFault": "runtime/debug",
+ "debug.SetTraceback": "runtime/debug",
+ "debug.Stack": "runtime/debug",
+ "debug.WriteHeapDump": "runtime/debug",
+ "des.BlockSize": "crypto/des",
+ "des.KeySizeError": "crypto/des",
+ "des.NewCipher": "crypto/des",
+ "des.NewTripleDESCipher": "crypto/des",
+ "doc.AllDecls": "go/doc",
+ "doc.AllMethods": "go/doc",
+ "doc.Example": "go/doc",
+ "doc.Examples": "go/doc",
+ "doc.Filter": "go/doc",
+ "doc.Func": "go/doc",
+ "doc.IllegalPrefixes": "go/doc",
+ "doc.IsPredeclared": "go/doc",
+ "doc.Mode": "go/doc",
+ "doc.New": "go/doc",
+ "doc.Note": "go/doc",
+ "doc.Package": "go/doc",
+ "doc.Synopsis": "go/doc",
+ "doc.ToHTML": "go/doc",
+ "doc.ToText": "go/doc",
+ "doc.Type": "go/doc",
+ "doc.Value": "go/doc",
+ "draw.Draw": "image/draw",
+ "draw.DrawMask": "image/draw",
+ "draw.Drawer": "image/draw",
+ "draw.FloydSteinberg": "image/draw",
+ "draw.Image": "image/draw",
+ "draw.Op": "image/draw",
+ "draw.Over": "image/draw",
+ "draw.Quantizer": "image/draw",
+ "draw.Src": "image/draw",
+ "driver.Bool": "database/sql/driver",
+ "driver.ColumnConverter": "database/sql/driver",
+ "driver.Conn": "database/sql/driver",
+ "driver.ConnBeginTx": "database/sql/driver",
+ "driver.ConnPrepareContext": "database/sql/driver",
+ "driver.DefaultParameterConverter": "database/sql/driver",
+ "driver.Driver": "database/sql/driver",
+ "driver.ErrBadConn": "database/sql/driver",
+ "driver.ErrSkip": "database/sql/driver",
+ "driver.Execer": "database/sql/driver",
+ "driver.ExecerContext": "database/sql/driver",
+ "driver.Int32": "database/sql/driver",
+ "driver.IsScanValue": "database/sql/driver",
+ "driver.IsValue": "database/sql/driver",
+ "driver.IsolationLevel": "database/sql/driver",
+ "driver.NamedValue": "database/sql/driver",
+ "driver.NotNull": "database/sql/driver",
+ "driver.Null": "database/sql/driver",
+ "driver.Pinger": "database/sql/driver",
+ "driver.Queryer": "database/sql/driver",
+ "driver.QueryerContext": "database/sql/driver",
+ "driver.Result": "database/sql/driver",
+ "driver.ResultNoRows": "database/sql/driver",
+ "driver.Rows": "database/sql/driver",
+ "driver.RowsAffected": "database/sql/driver",
+ "driver.RowsColumnTypeDatabaseTypeName": "database/sql/driver",
+ "driver.RowsColumnTypeLength": "database/sql/driver",
+ "driver.RowsColumnTypeNullable": "database/sql/driver",
+ "driver.RowsColumnTypePrecisionScale": "database/sql/driver",
+ "driver.RowsColumnTypeScanType": "database/sql/driver",
+ "driver.RowsNextResultSet": "database/sql/driver",
+ "driver.Stmt": "database/sql/driver",
+ "driver.StmtExecContext": "database/sql/driver",
+ "driver.StmtQueryContext": "database/sql/driver",
+ "driver.String": "database/sql/driver",
+ "driver.Tx": "database/sql/driver",
+ "driver.TxOptions": "database/sql/driver",
+ "driver.Value": "database/sql/driver",
+ "driver.ValueConverter": "database/sql/driver",
+ "driver.Valuer": "database/sql/driver",
+ "dsa.ErrInvalidPublicKey": "crypto/dsa",
+ "dsa.GenerateKey": "crypto/dsa",
+ "dsa.GenerateParameters": "crypto/dsa",
+ "dsa.L1024N160": "crypto/dsa",
+ "dsa.L2048N224": "crypto/dsa",
+ "dsa.L2048N256": "crypto/dsa",
+ "dsa.L3072N256": "crypto/dsa",
+ "dsa.ParameterSizes": "crypto/dsa",
+ "dsa.Parameters": "crypto/dsa",
+ "dsa.PrivateKey": "crypto/dsa",
+ "dsa.PublicKey": "crypto/dsa",
+ "dsa.Sign": "crypto/dsa",
+ "dsa.Verify": "crypto/dsa",
+ "dwarf.AddrType": "debug/dwarf",
+ "dwarf.ArrayType": "debug/dwarf",
+ "dwarf.Attr": "debug/dwarf",
+ "dwarf.AttrAbstractOrigin": "debug/dwarf",
+ "dwarf.AttrAccessibility": "debug/dwarf",
+ "dwarf.AttrAddrClass": "debug/dwarf",
+ "dwarf.AttrAllocated": "debug/dwarf",
+ "dwarf.AttrArtificial": "debug/dwarf",
+ "dwarf.AttrAssociated": "debug/dwarf",
+ "dwarf.AttrBaseTypes": "debug/dwarf",
+ "dwarf.AttrBitOffset": "debug/dwarf",
+ "dwarf.AttrBitSize": "debug/dwarf",
+ "dwarf.AttrByteSize": "debug/dwarf",
+ "dwarf.AttrCallColumn": "debug/dwarf",
+ "dwarf.AttrCallFile": "debug/dwarf",
+ "dwarf.AttrCallLine": "debug/dwarf",
+ "dwarf.AttrCalling": "debug/dwarf",
+ "dwarf.AttrCommonRef": "debug/dwarf",
+ "dwarf.AttrCompDir": "debug/dwarf",
+ "dwarf.AttrConstValue": "debug/dwarf",
+ "dwarf.AttrContainingType": "debug/dwarf",
+ "dwarf.AttrCount": "debug/dwarf",
+ "dwarf.AttrDataLocation": "debug/dwarf",
+ "dwarf.AttrDataMemberLoc": "debug/dwarf",
+ "dwarf.AttrDeclColumn": "debug/dwarf",
+ "dwarf.AttrDeclFile": "debug/dwarf",
+ "dwarf.AttrDeclLine": "debug/dwarf",
+ "dwarf.AttrDeclaration": "debug/dwarf",
+ "dwarf.AttrDefaultValue": "debug/dwarf",
+ "dwarf.AttrDescription": "debug/dwarf",
+ "dwarf.AttrDiscr": "debug/dwarf",
+ "dwarf.AttrDiscrList": "debug/dwarf",
+ "dwarf.AttrDiscrValue": "debug/dwarf",
+ "dwarf.AttrEncoding": "debug/dwarf",
+ "dwarf.AttrEntrypc": "debug/dwarf",
+ "dwarf.AttrExtension": "debug/dwarf",
+ "dwarf.AttrExternal": "debug/dwarf",
+ "dwarf.AttrFrameBase": "debug/dwarf",
+ "dwarf.AttrFriend": "debug/dwarf",
+ "dwarf.AttrHighpc": "debug/dwarf",
+ "dwarf.AttrIdentifierCase": "debug/dwarf",
+ "dwarf.AttrImport": "debug/dwarf",
+ "dwarf.AttrInline": "debug/dwarf",
+ "dwarf.AttrIsOptional": "debug/dwarf",
+ "dwarf.AttrLanguage": "debug/dwarf",
+ "dwarf.AttrLocation": "debug/dwarf",
+ "dwarf.AttrLowerBound": "debug/dwarf",
+ "dwarf.AttrLowpc": "debug/dwarf",
+ "dwarf.AttrMacroInfo": "debug/dwarf",
+ "dwarf.AttrName": "debug/dwarf",
+ "dwarf.AttrNamelistItem": "debug/dwarf",
+ "dwarf.AttrOrdering": "debug/dwarf",
+ "dwarf.AttrPriority": "debug/dwarf",
+ "dwarf.AttrProducer": "debug/dwarf",
+ "dwarf.AttrPrototyped": "debug/dwarf",
+ "dwarf.AttrRanges": "debug/dwarf",
+ "dwarf.AttrReturnAddr": "debug/dwarf",
+ "dwarf.AttrSegment": "debug/dwarf",
+ "dwarf.AttrSibling": "debug/dwarf",
+ "dwarf.AttrSpecification": "debug/dwarf",
+ "dwarf.AttrStartScope": "debug/dwarf",
+ "dwarf.AttrStaticLink": "debug/dwarf",
+ "dwarf.AttrStmtList": "debug/dwarf",
+ "dwarf.AttrStride": "debug/dwarf",
+ "dwarf.AttrStrideSize": "debug/dwarf",
+ "dwarf.AttrStringLength": "debug/dwarf",
+ "dwarf.AttrTrampoline": "debug/dwarf",
+ "dwarf.AttrType": "debug/dwarf",
+ "dwarf.AttrUpperBound": "debug/dwarf",
+ "dwarf.AttrUseLocation": "debug/dwarf",
+ "dwarf.AttrUseUTF8": "debug/dwarf",
+ "dwarf.AttrVarParam": "debug/dwarf",
+ "dwarf.AttrVirtuality": "debug/dwarf",
+ "dwarf.AttrVisibility": "debug/dwarf",
+ "dwarf.AttrVtableElemLoc": "debug/dwarf",
+ "dwarf.BasicType": "debug/dwarf",
+ "dwarf.BoolType": "debug/dwarf",
+ "dwarf.CharType": "debug/dwarf",
+ "dwarf.Class": "debug/dwarf",
+ "dwarf.ClassAddress": "debug/dwarf",
+ "dwarf.ClassBlock": "debug/dwarf",
+ "dwarf.ClassConstant": "debug/dwarf",
+ "dwarf.ClassExprLoc": "debug/dwarf",
+ "dwarf.ClassFlag": "debug/dwarf",
+ "dwarf.ClassLinePtr": "debug/dwarf",
+ "dwarf.ClassLocListPtr": "debug/dwarf",
+ "dwarf.ClassMacPtr": "debug/dwarf",
+ "dwarf.ClassRangeListPtr": "debug/dwarf",
+ "dwarf.ClassReference": "debug/dwarf",
+ "dwarf.ClassReferenceAlt": "debug/dwarf",
+ "dwarf.ClassReferenceSig": "debug/dwarf",
+ "dwarf.ClassString": "debug/dwarf",
+ "dwarf.ClassStringAlt": "debug/dwarf",
+ "dwarf.ClassUnknown": "debug/dwarf",
+ "dwarf.CommonType": "debug/dwarf",
+ "dwarf.ComplexType": "debug/dwarf",
+ "dwarf.Data": "debug/dwarf",
+ "dwarf.DecodeError": "debug/dwarf",
+ "dwarf.DotDotDotType": "debug/dwarf",
+ "dwarf.Entry": "debug/dwarf",
+ "dwarf.EnumType": "debug/dwarf",
+ "dwarf.EnumValue": "debug/dwarf",
+ "dwarf.ErrUnknownPC": "debug/dwarf",
+ "dwarf.Field": "debug/dwarf",
+ "dwarf.FloatType": "debug/dwarf",
+ "dwarf.FuncType": "debug/dwarf",
+ "dwarf.IntType": "debug/dwarf",
+ "dwarf.LineEntry": "debug/dwarf",
+ "dwarf.LineFile": "debug/dwarf",
+ "dwarf.LineReader": "debug/dwarf",
+ "dwarf.LineReaderPos": "debug/dwarf",
+ "dwarf.New": "debug/dwarf",
+ "dwarf.Offset": "debug/dwarf",
+ "dwarf.PtrType": "debug/dwarf",
+ "dwarf.QualType": "debug/dwarf",
+ "dwarf.Reader": "debug/dwarf",
+ "dwarf.StructField": "debug/dwarf",
+ "dwarf.StructType": "debug/dwarf",
+ "dwarf.Tag": "debug/dwarf",
+ "dwarf.TagAccessDeclaration": "debug/dwarf",
+ "dwarf.TagArrayType": "debug/dwarf",
+ "dwarf.TagBaseType": "debug/dwarf",
+ "dwarf.TagCatchDwarfBlock": "debug/dwarf",
+ "dwarf.TagClassType": "debug/dwarf",
+ "dwarf.TagCommonDwarfBlock": "debug/dwarf",
+ "dwarf.TagCommonInclusion": "debug/dwarf",
+ "dwarf.TagCompileUnit": "debug/dwarf",
+ "dwarf.TagCondition": "debug/dwarf",
+ "dwarf.TagConstType": "debug/dwarf",
+ "dwarf.TagConstant": "debug/dwarf",
+ "dwarf.TagDwarfProcedure": "debug/dwarf",
+ "dwarf.TagEntryPoint": "debug/dwarf",
+ "dwarf.TagEnumerationType": "debug/dwarf",
+ "dwarf.TagEnumerator": "debug/dwarf",
+ "dwarf.TagFileType": "debug/dwarf",
+ "dwarf.TagFormalParameter": "debug/dwarf",
+ "dwarf.TagFriend": "debug/dwarf",
+ "dwarf.TagImportedDeclaration": "debug/dwarf",
+ "dwarf.TagImportedModule": "debug/dwarf",
+ "dwarf.TagImportedUnit": "debug/dwarf",
+ "dwarf.TagInheritance": "debug/dwarf",
+ "dwarf.TagInlinedSubroutine": "debug/dwarf",
+ "dwarf.TagInterfaceType": "debug/dwarf",
+ "dwarf.TagLabel": "debug/dwarf",
+ "dwarf.TagLexDwarfBlock": "debug/dwarf",
+ "dwarf.TagMember": "debug/dwarf",
+ "dwarf.TagModule": "debug/dwarf",
+ "dwarf.TagMutableType": "debug/dwarf",
+ "dwarf.TagNamelist": "debug/dwarf",
+ "dwarf.TagNamelistItem": "debug/dwarf",
+ "dwarf.TagNamespace": "debug/dwarf",
+ "dwarf.TagPackedType": "debug/dwarf",
+ "dwarf.TagPartialUnit": "debug/dwarf",
+ "dwarf.TagPointerType": "debug/dwarf",
+ "dwarf.TagPtrToMemberType": "debug/dwarf",
+ "dwarf.TagReferenceType": "debug/dwarf",
+ "dwarf.TagRestrictType": "debug/dwarf",
+ "dwarf.TagRvalueReferenceType": "debug/dwarf",
+ "dwarf.TagSetType": "debug/dwarf",
+ "dwarf.TagSharedType": "debug/dwarf",
+ "dwarf.TagStringType": "debug/dwarf",
+ "dwarf.TagStructType": "debug/dwarf",
+ "dwarf.TagSubprogram": "debug/dwarf",
+ "dwarf.TagSubrangeType": "debug/dwarf",
+ "dwarf.TagSubroutineType": "debug/dwarf",
+ "dwarf.TagTemplateAlias": "debug/dwarf",
+ "dwarf.TagTemplateTypeParameter": "debug/dwarf",
+ "dwarf.TagTemplateValueParameter": "debug/dwarf",
+ "dwarf.TagThrownType": "debug/dwarf",
+ "dwarf.TagTryDwarfBlock": "debug/dwarf",
+ "dwarf.TagTypeUnit": "debug/dwarf",
+ "dwarf.TagTypedef": "debug/dwarf",
+ "dwarf.TagUnionType": "debug/dwarf",
+ "dwarf.TagUnspecifiedParameters": "debug/dwarf",
+ "dwarf.TagUnspecifiedType": "debug/dwarf",
+ "dwarf.TagVariable": "debug/dwarf",
+ "dwarf.TagVariant": "debug/dwarf",
+ "dwarf.TagVariantPart": "debug/dwarf",
+ "dwarf.TagVolatileType": "debug/dwarf",
+ "dwarf.TagWithStmt": "debug/dwarf",
+ "dwarf.Type": "debug/dwarf",
+ "dwarf.TypedefType": "debug/dwarf",
+ "dwarf.UcharType": "debug/dwarf",
+ "dwarf.UintType": "debug/dwarf",
+ "dwarf.UnspecifiedType": "debug/dwarf",
+ "dwarf.VoidType": "debug/dwarf",
+ "ecdsa.GenerateKey": "crypto/ecdsa",
+ "ecdsa.PrivateKey": "crypto/ecdsa",
+ "ecdsa.PublicKey": "crypto/ecdsa",
+ "ecdsa.Sign": "crypto/ecdsa",
+ "ecdsa.Verify": "crypto/ecdsa",
+ "elf.ARM_MAGIC_TRAMP_NUMBER": "debug/elf",
+ "elf.COMPRESS_HIOS": "debug/elf",
+ "elf.COMPRESS_HIPROC": "debug/elf",
+ "elf.COMPRESS_LOOS": "debug/elf",
+ "elf.COMPRESS_LOPROC": "debug/elf",
+ "elf.COMPRESS_ZLIB": "debug/elf",
+ "elf.Chdr32": "debug/elf",
+ "elf.Chdr64": "debug/elf",
+ "elf.Class": "debug/elf",
+ "elf.CompressionType": "debug/elf",
+ "elf.DF_BIND_NOW": "debug/elf",
+ "elf.DF_ORIGIN": "debug/elf",
+ "elf.DF_STATIC_TLS": "debug/elf",
+ "elf.DF_SYMBOLIC": "debug/elf",
+ "elf.DF_TEXTREL": "debug/elf",
+ "elf.DT_BIND_NOW": "debug/elf",
+ "elf.DT_DEBUG": "debug/elf",
+ "elf.DT_ENCODING": "debug/elf",
+ "elf.DT_FINI": "debug/elf",
+ "elf.DT_FINI_ARRAY": "debug/elf",
+ "elf.DT_FINI_ARRAYSZ": "debug/elf",
+ "elf.DT_FLAGS": "debug/elf",
+ "elf.DT_HASH": "debug/elf",
+ "elf.DT_HIOS": "debug/elf",
+ "elf.DT_HIPROC": "debug/elf",
+ "elf.DT_INIT": "debug/elf",
+ "elf.DT_INIT_ARRAY": "debug/elf",
+ "elf.DT_INIT_ARRAYSZ": "debug/elf",
+ "elf.DT_JMPREL": "debug/elf",
+ "elf.DT_LOOS": "debug/elf",
+ "elf.DT_LOPROC": "debug/elf",
+ "elf.DT_NEEDED": "debug/elf",
+ "elf.DT_NULL": "debug/elf",
+ "elf.DT_PLTGOT": "debug/elf",
+ "elf.DT_PLTREL": "debug/elf",
+ "elf.DT_PLTRELSZ": "debug/elf",
+ "elf.DT_PREINIT_ARRAY": "debug/elf",
+ "elf.DT_PREINIT_ARRAYSZ": "debug/elf",
+ "elf.DT_REL": "debug/elf",
+ "elf.DT_RELA": "debug/elf",
+ "elf.DT_RELAENT": "debug/elf",
+ "elf.DT_RELASZ": "debug/elf",
+ "elf.DT_RELENT": "debug/elf",
+ "elf.DT_RELSZ": "debug/elf",
+ "elf.DT_RPATH": "debug/elf",
+ "elf.DT_RUNPATH": "debug/elf",
+ "elf.DT_SONAME": "debug/elf",
+ "elf.DT_STRSZ": "debug/elf",
+ "elf.DT_STRTAB": "debug/elf",
+ "elf.DT_SYMBOLIC": "debug/elf",
+ "elf.DT_SYMENT": "debug/elf",
+ "elf.DT_SYMTAB": "debug/elf",
+ "elf.DT_TEXTREL": "debug/elf",
+ "elf.DT_VERNEED": "debug/elf",
+ "elf.DT_VERNEEDNUM": "debug/elf",
+ "elf.DT_VERSYM": "debug/elf",
+ "elf.Data": "debug/elf",
+ "elf.Dyn32": "debug/elf",
+ "elf.Dyn64": "debug/elf",
+ "elf.DynFlag": "debug/elf",
+ "elf.DynTag": "debug/elf",
+ "elf.EI_ABIVERSION": "debug/elf",
+ "elf.EI_CLASS": "debug/elf",
+ "elf.EI_DATA": "debug/elf",
+ "elf.EI_NIDENT": "debug/elf",
+ "elf.EI_OSABI": "debug/elf",
+ "elf.EI_PAD": "debug/elf",
+ "elf.EI_VERSION": "debug/elf",
+ "elf.ELFCLASS32": "debug/elf",
+ "elf.ELFCLASS64": "debug/elf",
+ "elf.ELFCLASSNONE": "debug/elf",
+ "elf.ELFDATA2LSB": "debug/elf",
+ "elf.ELFDATA2MSB": "debug/elf",
+ "elf.ELFDATANONE": "debug/elf",
+ "elf.ELFMAG": "debug/elf",
+ "elf.ELFOSABI_86OPEN": "debug/elf",
+ "elf.ELFOSABI_AIX": "debug/elf",
+ "elf.ELFOSABI_ARM": "debug/elf",
+ "elf.ELFOSABI_FREEBSD": "debug/elf",
+ "elf.ELFOSABI_HPUX": "debug/elf",
+ "elf.ELFOSABI_HURD": "debug/elf",
+ "elf.ELFOSABI_IRIX": "debug/elf",
+ "elf.ELFOSABI_LINUX": "debug/elf",
+ "elf.ELFOSABI_MODESTO": "debug/elf",
+ "elf.ELFOSABI_NETBSD": "debug/elf",
+ "elf.ELFOSABI_NONE": "debug/elf",
+ "elf.ELFOSABI_NSK": "debug/elf",
+ "elf.ELFOSABI_OPENBSD": "debug/elf",
+ "elf.ELFOSABI_OPENVMS": "debug/elf",
+ "elf.ELFOSABI_SOLARIS": "debug/elf",
+ "elf.ELFOSABI_STANDALONE": "debug/elf",
+ "elf.ELFOSABI_TRU64": "debug/elf",
+ "elf.EM_386": "debug/elf",
+ "elf.EM_486": "debug/elf",
+ "elf.EM_68HC12": "debug/elf",
+ "elf.EM_68K": "debug/elf",
+ "elf.EM_860": "debug/elf",
+ "elf.EM_88K": "debug/elf",
+ "elf.EM_960": "debug/elf",
+ "elf.EM_AARCH64": "debug/elf",
+ "elf.EM_ALPHA": "debug/elf",
+ "elf.EM_ALPHA_STD": "debug/elf",
+ "elf.EM_ARC": "debug/elf",
+ "elf.EM_ARM": "debug/elf",
+ "elf.EM_COLDFIRE": "debug/elf",
+ "elf.EM_FR20": "debug/elf",
+ "elf.EM_H8S": "debug/elf",
+ "elf.EM_H8_300": "debug/elf",
+ "elf.EM_H8_300H": "debug/elf",
+ "elf.EM_H8_500": "debug/elf",
+ "elf.EM_IA_64": "debug/elf",
+ "elf.EM_M32": "debug/elf",
+ "elf.EM_ME16": "debug/elf",
+ "elf.EM_MIPS": "debug/elf",
+ "elf.EM_MIPS_RS3_LE": "debug/elf",
+ "elf.EM_MIPS_RS4_BE": "debug/elf",
+ "elf.EM_MIPS_X": "debug/elf",
+ "elf.EM_MMA": "debug/elf",
+ "elf.EM_NCPU": "debug/elf",
+ "elf.EM_NDR1": "debug/elf",
+ "elf.EM_NONE": "debug/elf",
+ "elf.EM_PARISC": "debug/elf",
+ "elf.EM_PCP": "debug/elf",
+ "elf.EM_PPC": "debug/elf",
+ "elf.EM_PPC64": "debug/elf",
+ "elf.EM_RCE": "debug/elf",
+ "elf.EM_RH32": "debug/elf",
+ "elf.EM_S370": "debug/elf",
+ "elf.EM_S390": "debug/elf",
+ "elf.EM_SH": "debug/elf",
+ "elf.EM_SPARC": "debug/elf",
+ "elf.EM_SPARC32PLUS": "debug/elf",
+ "elf.EM_SPARCV9": "debug/elf",
+ "elf.EM_ST100": "debug/elf",
+ "elf.EM_STARCORE": "debug/elf",
+ "elf.EM_TINYJ": "debug/elf",
+ "elf.EM_TRICORE": "debug/elf",
+ "elf.EM_V800": "debug/elf",
+ "elf.EM_VPP500": "debug/elf",
+ "elf.EM_X86_64": "debug/elf",
+ "elf.ET_CORE": "debug/elf",
+ "elf.ET_DYN": "debug/elf",
+ "elf.ET_EXEC": "debug/elf",
+ "elf.ET_HIOS": "debug/elf",
+ "elf.ET_HIPROC": "debug/elf",
+ "elf.ET_LOOS": "debug/elf",
+ "elf.ET_LOPROC": "debug/elf",
+ "elf.ET_NONE": "debug/elf",
+ "elf.ET_REL": "debug/elf",
+ "elf.EV_CURRENT": "debug/elf",
+ "elf.EV_NONE": "debug/elf",
+ "elf.ErrNoSymbols": "debug/elf",
+ "elf.File": "debug/elf",
+ "elf.FileHeader": "debug/elf",
+ "elf.FormatError": "debug/elf",
+ "elf.Header32": "debug/elf",
+ "elf.Header64": "debug/elf",
+ "elf.ImportedSymbol": "debug/elf",
+ "elf.Machine": "debug/elf",
+ "elf.NT_FPREGSET": "debug/elf",
+ "elf.NT_PRPSINFO": "debug/elf",
+ "elf.NT_PRSTATUS": "debug/elf",
+ "elf.NType": "debug/elf",
+ "elf.NewFile": "debug/elf",
+ "elf.OSABI": "debug/elf",
+ "elf.Open": "debug/elf",
+ "elf.PF_MASKOS": "debug/elf",
+ "elf.PF_MASKPROC": "debug/elf",
+ "elf.PF_R": "debug/elf",
+ "elf.PF_W": "debug/elf",
+ "elf.PF_X": "debug/elf",
+ "elf.PT_DYNAMIC": "debug/elf",
+ "elf.PT_HIOS": "debug/elf",
+ "elf.PT_HIPROC": "debug/elf",
+ "elf.PT_INTERP": "debug/elf",
+ "elf.PT_LOAD": "debug/elf",
+ "elf.PT_LOOS": "debug/elf",
+ "elf.PT_LOPROC": "debug/elf",
+ "elf.PT_NOTE": "debug/elf",
+ "elf.PT_NULL": "debug/elf",
+ "elf.PT_PHDR": "debug/elf",
+ "elf.PT_SHLIB": "debug/elf",
+ "elf.PT_TLS": "debug/elf",
+ "elf.Prog": "debug/elf",
+ "elf.Prog32": "debug/elf",
+ "elf.Prog64": "debug/elf",
+ "elf.ProgFlag": "debug/elf",
+ "elf.ProgHeader": "debug/elf",
+ "elf.ProgType": "debug/elf",
+ "elf.R_386": "debug/elf",
+ "elf.R_386_32": "debug/elf",
+ "elf.R_386_COPY": "debug/elf",
+ "elf.R_386_GLOB_DAT": "debug/elf",
+ "elf.R_386_GOT32": "debug/elf",
+ "elf.R_386_GOTOFF": "debug/elf",
+ "elf.R_386_GOTPC": "debug/elf",
+ "elf.R_386_JMP_SLOT": "debug/elf",
+ "elf.R_386_NONE": "debug/elf",
+ "elf.R_386_PC32": "debug/elf",
+ "elf.R_386_PLT32": "debug/elf",
+ "elf.R_386_RELATIVE": "debug/elf",
+ "elf.R_386_TLS_DTPMOD32": "debug/elf",
+ "elf.R_386_TLS_DTPOFF32": "debug/elf",
+ "elf.R_386_TLS_GD": "debug/elf",
+ "elf.R_386_TLS_GD_32": "debug/elf",
+ "elf.R_386_TLS_GD_CALL": "debug/elf",
+ "elf.R_386_TLS_GD_POP": "debug/elf",
+ "elf.R_386_TLS_GD_PUSH": "debug/elf",
+ "elf.R_386_TLS_GOTIE": "debug/elf",
+ "elf.R_386_TLS_IE": "debug/elf",
+ "elf.R_386_TLS_IE_32": "debug/elf",
+ "elf.R_386_TLS_LDM": "debug/elf",
+ "elf.R_386_TLS_LDM_32": "debug/elf",
+ "elf.R_386_TLS_LDM_CALL": "debug/elf",
+ "elf.R_386_TLS_LDM_POP": "debug/elf",
+ "elf.R_386_TLS_LDM_PUSH": "debug/elf",
+ "elf.R_386_TLS_LDO_32": "debug/elf",
+ "elf.R_386_TLS_LE": "debug/elf",
+ "elf.R_386_TLS_LE_32": "debug/elf",
+ "elf.R_386_TLS_TPOFF": "debug/elf",
+ "elf.R_386_TLS_TPOFF32": "debug/elf",
+ "elf.R_390": "debug/elf",
+ "elf.R_390_12": "debug/elf",
+ "elf.R_390_16": "debug/elf",
+ "elf.R_390_20": "debug/elf",
+ "elf.R_390_32": "debug/elf",
+ "elf.R_390_64": "debug/elf",
+ "elf.R_390_8": "debug/elf",
+ "elf.R_390_COPY": "debug/elf",
+ "elf.R_390_GLOB_DAT": "debug/elf",
+ "elf.R_390_GOT12": "debug/elf",
+ "elf.R_390_GOT16": "debug/elf",
+ "elf.R_390_GOT20": "debug/elf",
+ "elf.R_390_GOT32": "debug/elf",
+ "elf.R_390_GOT64": "debug/elf",
+ "elf.R_390_GOTENT": "debug/elf",
+ "elf.R_390_GOTOFF": "debug/elf",
+ "elf.R_390_GOTOFF16": "debug/elf",
+ "elf.R_390_GOTOFF64": "debug/elf",
+ "elf.R_390_GOTPC": "debug/elf",
+ "elf.R_390_GOTPCDBL": "debug/elf",
+ "elf.R_390_GOTPLT12": "debug/elf",
+ "elf.R_390_GOTPLT16": "debug/elf",
+ "elf.R_390_GOTPLT20": "debug/elf",
+ "elf.R_390_GOTPLT32": "debug/elf",
+ "elf.R_390_GOTPLT64": "debug/elf",
+ "elf.R_390_GOTPLTENT": "debug/elf",
+ "elf.R_390_GOTPLTOFF16": "debug/elf",
+ "elf.R_390_GOTPLTOFF32": "debug/elf",
+ "elf.R_390_GOTPLTOFF64": "debug/elf",
+ "elf.R_390_JMP_SLOT": "debug/elf",
+ "elf.R_390_NONE": "debug/elf",
+ "elf.R_390_PC16": "debug/elf",
+ "elf.R_390_PC16DBL": "debug/elf",
+ "elf.R_390_PC32": "debug/elf",
+ "elf.R_390_PC32DBL": "debug/elf",
+ "elf.R_390_PC64": "debug/elf",
+ "elf.R_390_PLT16DBL": "debug/elf",
+ "elf.R_390_PLT32": "debug/elf",
+ "elf.R_390_PLT32DBL": "debug/elf",
+ "elf.R_390_PLT64": "debug/elf",
+ "elf.R_390_RELATIVE": "debug/elf",
+ "elf.R_390_TLS_DTPMOD": "debug/elf",
+ "elf.R_390_TLS_DTPOFF": "debug/elf",
+ "elf.R_390_TLS_GD32": "debug/elf",
+ "elf.R_390_TLS_GD64": "debug/elf",
+ "elf.R_390_TLS_GDCALL": "debug/elf",
+ "elf.R_390_TLS_GOTIE12": "debug/elf",
+ "elf.R_390_TLS_GOTIE20": "debug/elf",
+ "elf.R_390_TLS_GOTIE32": "debug/elf",
+ "elf.R_390_TLS_GOTIE64": "debug/elf",
+ "elf.R_390_TLS_IE32": "debug/elf",
+ "elf.R_390_TLS_IE64": "debug/elf",
+ "elf.R_390_TLS_IEENT": "debug/elf",
+ "elf.R_390_TLS_LDCALL": "debug/elf",
+ "elf.R_390_TLS_LDM32": "debug/elf",
+ "elf.R_390_TLS_LDM64": "debug/elf",
+ "elf.R_390_TLS_LDO32": "debug/elf",
+ "elf.R_390_TLS_LDO64": "debug/elf",
+ "elf.R_390_TLS_LE32": "debug/elf",
+ "elf.R_390_TLS_LE64": "debug/elf",
+ "elf.R_390_TLS_LOAD": "debug/elf",
+ "elf.R_390_TLS_TPOFF": "debug/elf",
+ "elf.R_AARCH64": "debug/elf",
+ "elf.R_AARCH64_ABS16": "debug/elf",
+ "elf.R_AARCH64_ABS32": "debug/elf",
+ "elf.R_AARCH64_ABS64": "debug/elf",
+ "elf.R_AARCH64_ADD_ABS_LO12_NC": "debug/elf",
+ "elf.R_AARCH64_ADR_GOT_PAGE": "debug/elf",
+ "elf.R_AARCH64_ADR_PREL_LO21": "debug/elf",
+ "elf.R_AARCH64_ADR_PREL_PG_HI21": "debug/elf",
+ "elf.R_AARCH64_ADR_PREL_PG_HI21_NC": "debug/elf",
+ "elf.R_AARCH64_CALL26": "debug/elf",
+ "elf.R_AARCH64_CONDBR19": "debug/elf",
+ "elf.R_AARCH64_COPY": "debug/elf",
+ "elf.R_AARCH64_GLOB_DAT": "debug/elf",
+ "elf.R_AARCH64_GOT_LD_PREL19": "debug/elf",
+ "elf.R_AARCH64_IRELATIVE": "debug/elf",
+ "elf.R_AARCH64_JUMP26": "debug/elf",
+ "elf.R_AARCH64_JUMP_SLOT": "debug/elf",
+ "elf.R_AARCH64_LD64_GOT_LO12_NC": "debug/elf",
+ "elf.R_AARCH64_LDST128_ABS_LO12_NC": "debug/elf",
+ "elf.R_AARCH64_LDST16_ABS_LO12_NC": "debug/elf",
+ "elf.R_AARCH64_LDST32_ABS_LO12_NC": "debug/elf",
+ "elf.R_AARCH64_LDST64_ABS_LO12_NC": "debug/elf",
+ "elf.R_AARCH64_LDST8_ABS_LO12_NC": "debug/elf",
+ "elf.R_AARCH64_LD_PREL_LO19": "debug/elf",
+ "elf.R_AARCH64_MOVW_SABS_G0": "debug/elf",
+ "elf.R_AARCH64_MOVW_SABS_G1": "debug/elf",
+ "elf.R_AARCH64_MOVW_SABS_G2": "debug/elf",
+ "elf.R_AARCH64_MOVW_UABS_G0": "debug/elf",
+ "elf.R_AARCH64_MOVW_UABS_G0_NC": "debug/elf",
+ "elf.R_AARCH64_MOVW_UABS_G1": "debug/elf",
+ "elf.R_AARCH64_MOVW_UABS_G1_NC": "debug/elf",
+ "elf.R_AARCH64_MOVW_UABS_G2": "debug/elf",
+ "elf.R_AARCH64_MOVW_UABS_G2_NC": "debug/elf",
+ "elf.R_AARCH64_MOVW_UABS_G3": "debug/elf",
+ "elf.R_AARCH64_NONE": "debug/elf",
+ "elf.R_AARCH64_NULL": "debug/elf",
+ "elf.R_AARCH64_P32_ABS16": "debug/elf",
+ "elf.R_AARCH64_P32_ABS32": "debug/elf",
+ "elf.R_AARCH64_P32_ADD_ABS_LO12_NC": "debug/elf",
+ "elf.R_AARCH64_P32_ADR_GOT_PAGE": "debug/elf",
+ "elf.R_AARCH64_P32_ADR_PREL_LO21": "debug/elf",
+ "elf.R_AARCH64_P32_ADR_PREL_PG_HI21": "debug/elf",
+ "elf.R_AARCH64_P32_CALL26": "debug/elf",
+ "elf.R_AARCH64_P32_CONDBR19": "debug/elf",
+ "elf.R_AARCH64_P32_COPY": "debug/elf",
+ "elf.R_AARCH64_P32_GLOB_DAT": "debug/elf",
+ "elf.R_AARCH64_P32_GOT_LD_PREL19": "debug/elf",
+ "elf.R_AARCH64_P32_IRELATIVE": "debug/elf",
+ "elf.R_AARCH64_P32_JUMP26": "debug/elf",
+ "elf.R_AARCH64_P32_JUMP_SLOT": "debug/elf",
+ "elf.R_AARCH64_P32_LD32_GOT_LO12_NC": "debug/elf",
+ "elf.R_AARCH64_P32_LDST128_ABS_LO12_NC": "debug/elf",
+ "elf.R_AARCH64_P32_LDST16_ABS_LO12_NC": "debug/elf",
+ "elf.R_AARCH64_P32_LDST32_ABS_LO12_NC": "debug/elf",
+ "elf.R_AARCH64_P32_LDST64_ABS_LO12_NC": "debug/elf",
+ "elf.R_AARCH64_P32_LDST8_ABS_LO12_NC": "debug/elf",
+ "elf.R_AARCH64_P32_LD_PREL_LO19": "debug/elf",
+ "elf.R_AARCH64_P32_MOVW_SABS_G0": "debug/elf",
+ "elf.R_AARCH64_P32_MOVW_UABS_G0": "debug/elf",
+ "elf.R_AARCH64_P32_MOVW_UABS_G0_NC": "debug/elf",
+ "elf.R_AARCH64_P32_MOVW_UABS_G1": "debug/elf",
+ "elf.R_AARCH64_P32_PREL16": "debug/elf",
+ "elf.R_AARCH64_P32_PREL32": "debug/elf",
+ "elf.R_AARCH64_P32_RELATIVE": "debug/elf",
+ "elf.R_AARCH64_P32_TLSDESC": "debug/elf",
+ "elf.R_AARCH64_P32_TLSDESC_ADD_LO12_NC": "debug/elf",
+ "elf.R_AARCH64_P32_TLSDESC_ADR_PAGE21": "debug/elf",
+ "elf.R_AARCH64_P32_TLSDESC_ADR_PREL21": "debug/elf",
+ "elf.R_AARCH64_P32_TLSDESC_CALL": "debug/elf",
+ "elf.R_AARCH64_P32_TLSDESC_LD32_LO12_NC": "debug/elf",
+ "elf.R_AARCH64_P32_TLSDESC_LD_PREL19": "debug/elf",
+ "elf.R_AARCH64_P32_TLSGD_ADD_LO12_NC": "debug/elf",
+ "elf.R_AARCH64_P32_TLSGD_ADR_PAGE21": "debug/elf",
+ "elf.R_AARCH64_P32_TLSIE_ADR_GOTTPREL_PAGE21": "debug/elf",
+ "elf.R_AARCH64_P32_TLSIE_LD32_GOTTPREL_LO12_NC": "debug/elf",
+ "elf.R_AARCH64_P32_TLSIE_LD_GOTTPREL_PREL19": "debug/elf",
+ "elf.R_AARCH64_P32_TLSLE_ADD_TPREL_HI12": "debug/elf",
+ "elf.R_AARCH64_P32_TLSLE_ADD_TPREL_LO12": "debug/elf",
+ "elf.R_AARCH64_P32_TLSLE_ADD_TPREL_LO12_NC": "debug/elf",
+ "elf.R_AARCH64_P32_TLSLE_MOVW_TPREL_G0": "debug/elf",
+ "elf.R_AARCH64_P32_TLSLE_MOVW_TPREL_G0_NC": "debug/elf",
+ "elf.R_AARCH64_P32_TLSLE_MOVW_TPREL_G1": "debug/elf",
+ "elf.R_AARCH64_P32_TLS_DTPMOD": "debug/elf",
+ "elf.R_AARCH64_P32_TLS_DTPREL": "debug/elf",
+ "elf.R_AARCH64_P32_TLS_TPREL": "debug/elf",
+ "elf.R_AARCH64_P32_TSTBR14": "debug/elf",
+ "elf.R_AARCH64_PREL16": "debug/elf",
+ "elf.R_AARCH64_PREL32": "debug/elf",
+ "elf.R_AARCH64_PREL64": "debug/elf",
+ "elf.R_AARCH64_RELATIVE": "debug/elf",
+ "elf.R_AARCH64_TLSDESC": "debug/elf",
+ "elf.R_AARCH64_TLSDESC_ADD": "debug/elf",
+ "elf.R_AARCH64_TLSDESC_ADD_LO12_NC": "debug/elf",
+ "elf.R_AARCH64_TLSDESC_ADR_PAGE21": "debug/elf",
+ "elf.R_AARCH64_TLSDESC_ADR_PREL21": "debug/elf",
+ "elf.R_AARCH64_TLSDESC_CALL": "debug/elf",
+ "elf.R_AARCH64_TLSDESC_LD64_LO12_NC": "debug/elf",
+ "elf.R_AARCH64_TLSDESC_LDR": "debug/elf",
+ "elf.R_AARCH64_TLSDESC_LD_PREL19": "debug/elf",
+ "elf.R_AARCH64_TLSDESC_OFF_G0_NC": "debug/elf",
+ "elf.R_AARCH64_TLSDESC_OFF_G1": "debug/elf",
+ "elf.R_AARCH64_TLSGD_ADD_LO12_NC": "debug/elf",
+ "elf.R_AARCH64_TLSGD_ADR_PAGE21": "debug/elf",
+ "elf.R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21": "debug/elf",
+ "elf.R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC": "debug/elf",
+ "elf.R_AARCH64_TLSIE_LD_GOTTPREL_PREL19": "debug/elf",
+ "elf.R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC": "debug/elf",
+ "elf.R_AARCH64_TLSIE_MOVW_GOTTPREL_G1": "debug/elf",
+ "elf.R_AARCH64_TLSLE_ADD_TPREL_HI12": "debug/elf",
+ "elf.R_AARCH64_TLSLE_ADD_TPREL_LO12": "debug/elf",
+ "elf.R_AARCH64_TLSLE_ADD_TPREL_LO12_NC": "debug/elf",
+ "elf.R_AARCH64_TLSLE_MOVW_TPREL_G0": "debug/elf",
+ "elf.R_AARCH64_TLSLE_MOVW_TPREL_G0_NC": "debug/elf",
+ "elf.R_AARCH64_TLSLE_MOVW_TPREL_G1": "debug/elf",
+ "elf.R_AARCH64_TLSLE_MOVW_TPREL_G1_NC": "debug/elf",
+ "elf.R_AARCH64_TLSLE_MOVW_TPREL_G2": "debug/elf",
+ "elf.R_AARCH64_TLS_DTPMOD64": "debug/elf",
+ "elf.R_AARCH64_TLS_DTPREL64": "debug/elf",
+ "elf.R_AARCH64_TLS_TPREL64": "debug/elf",
+ "elf.R_AARCH64_TSTBR14": "debug/elf",
+ "elf.R_ALPHA": "debug/elf",
+ "elf.R_ALPHA_BRADDR": "debug/elf",
+ "elf.R_ALPHA_COPY": "debug/elf",
+ "elf.R_ALPHA_GLOB_DAT": "debug/elf",
+ "elf.R_ALPHA_GPDISP": "debug/elf",
+ "elf.R_ALPHA_GPREL32": "debug/elf",
+ "elf.R_ALPHA_GPRELHIGH": "debug/elf",
+ "elf.R_ALPHA_GPRELLOW": "debug/elf",
+ "elf.R_ALPHA_GPVALUE": "debug/elf",
+ "elf.R_ALPHA_HINT": "debug/elf",
+ "elf.R_ALPHA_IMMED_BR_HI32": "debug/elf",
+ "elf.R_ALPHA_IMMED_GP_16": "debug/elf",
+ "elf.R_ALPHA_IMMED_GP_HI32": "debug/elf",
+ "elf.R_ALPHA_IMMED_LO32": "debug/elf",
+ "elf.R_ALPHA_IMMED_SCN_HI32": "debug/elf",
+ "elf.R_ALPHA_JMP_SLOT": "debug/elf",
+ "elf.R_ALPHA_LITERAL": "debug/elf",
+ "elf.R_ALPHA_LITUSE": "debug/elf",
+ "elf.R_ALPHA_NONE": "debug/elf",
+ "elf.R_ALPHA_OP_PRSHIFT": "debug/elf",
+ "elf.R_ALPHA_OP_PSUB": "debug/elf",
+ "elf.R_ALPHA_OP_PUSH": "debug/elf",
+ "elf.R_ALPHA_OP_STORE": "debug/elf",
+ "elf.R_ALPHA_REFLONG": "debug/elf",
+ "elf.R_ALPHA_REFQUAD": "debug/elf",
+ "elf.R_ALPHA_RELATIVE": "debug/elf",
+ "elf.R_ALPHA_SREL16": "debug/elf",
+ "elf.R_ALPHA_SREL32": "debug/elf",
+ "elf.R_ALPHA_SREL64": "debug/elf",
+ "elf.R_ARM": "debug/elf",
+ "elf.R_ARM_ABS12": "debug/elf",
+ "elf.R_ARM_ABS16": "debug/elf",
+ "elf.R_ARM_ABS32": "debug/elf",
+ "elf.R_ARM_ABS8": "debug/elf",
+ "elf.R_ARM_AMP_VCALL9": "debug/elf",
+ "elf.R_ARM_COPY": "debug/elf",
+ "elf.R_ARM_GLOB_DAT": "debug/elf",
+ "elf.R_ARM_GNU_VTENTRY": "debug/elf",
+ "elf.R_ARM_GNU_VTINHERIT": "debug/elf",
+ "elf.R_ARM_GOT32": "debug/elf",
+ "elf.R_ARM_GOTOFF": "debug/elf",
+ "elf.R_ARM_GOTPC": "debug/elf",
+ "elf.R_ARM_JUMP_SLOT": "debug/elf",
+ "elf.R_ARM_NONE": "debug/elf",
+ "elf.R_ARM_PC13": "debug/elf",
+ "elf.R_ARM_PC24": "debug/elf",
+ "elf.R_ARM_PLT32": "debug/elf",
+ "elf.R_ARM_RABS32": "debug/elf",
+ "elf.R_ARM_RBASE": "debug/elf",
+ "elf.R_ARM_REL32": "debug/elf",
+ "elf.R_ARM_RELATIVE": "debug/elf",
+ "elf.R_ARM_RPC24": "debug/elf",
+ "elf.R_ARM_RREL32": "debug/elf",
+ "elf.R_ARM_RSBREL32": "debug/elf",
+ "elf.R_ARM_SBREL32": "debug/elf",
+ "elf.R_ARM_SWI24": "debug/elf",
+ "elf.R_ARM_THM_ABS5": "debug/elf",
+ "elf.R_ARM_THM_PC22": "debug/elf",
+ "elf.R_ARM_THM_PC8": "debug/elf",
+ "elf.R_ARM_THM_RPC22": "debug/elf",
+ "elf.R_ARM_THM_SWI8": "debug/elf",
+ "elf.R_ARM_THM_XPC22": "debug/elf",
+ "elf.R_ARM_XPC25": "debug/elf",
+ "elf.R_INFO": "debug/elf",
+ "elf.R_INFO32": "debug/elf",
+ "elf.R_MIPS": "debug/elf",
+ "elf.R_MIPS_16": "debug/elf",
+ "elf.R_MIPS_26": "debug/elf",
+ "elf.R_MIPS_32": "debug/elf",
+ "elf.R_MIPS_64": "debug/elf",
+ "elf.R_MIPS_ADD_IMMEDIATE": "debug/elf",
+ "elf.R_MIPS_CALL16": "debug/elf",
+ "elf.R_MIPS_CALL_HI16": "debug/elf",
+ "elf.R_MIPS_CALL_LO16": "debug/elf",
+ "elf.R_MIPS_DELETE": "debug/elf",
+ "elf.R_MIPS_GOT16": "debug/elf",
+ "elf.R_MIPS_GOT_DISP": "debug/elf",
+ "elf.R_MIPS_GOT_HI16": "debug/elf",
+ "elf.R_MIPS_GOT_LO16": "debug/elf",
+ "elf.R_MIPS_GOT_OFST": "debug/elf",
+ "elf.R_MIPS_GOT_PAGE": "debug/elf",
+ "elf.R_MIPS_GPREL16": "debug/elf",
+ "elf.R_MIPS_GPREL32": "debug/elf",
+ "elf.R_MIPS_HI16": "debug/elf",
+ "elf.R_MIPS_HIGHER": "debug/elf",
+ "elf.R_MIPS_HIGHEST": "debug/elf",
+ "elf.R_MIPS_INSERT_A": "debug/elf",
+ "elf.R_MIPS_INSERT_B": "debug/elf",
+ "elf.R_MIPS_JALR": "debug/elf",
+ "elf.R_MIPS_LITERAL": "debug/elf",
+ "elf.R_MIPS_LO16": "debug/elf",
+ "elf.R_MIPS_NONE": "debug/elf",
+ "elf.R_MIPS_PC16": "debug/elf",
+ "elf.R_MIPS_PJUMP": "debug/elf",
+ "elf.R_MIPS_REL16": "debug/elf",
+ "elf.R_MIPS_REL32": "debug/elf",
+ "elf.R_MIPS_RELGOT": "debug/elf",
+ "elf.R_MIPS_SCN_DISP": "debug/elf",
+ "elf.R_MIPS_SHIFT5": "debug/elf",
+ "elf.R_MIPS_SHIFT6": "debug/elf",
+ "elf.R_MIPS_SUB": "debug/elf",
+ "elf.R_MIPS_TLS_DTPMOD32": "debug/elf",
+ "elf.R_MIPS_TLS_DTPMOD64": "debug/elf",
+ "elf.R_MIPS_TLS_DTPREL32": "debug/elf",
+ "elf.R_MIPS_TLS_DTPREL64": "debug/elf",
+ "elf.R_MIPS_TLS_DTPREL_HI16": "debug/elf",
+ "elf.R_MIPS_TLS_DTPREL_LO16": "debug/elf",
+ "elf.R_MIPS_TLS_GD": "debug/elf",
+ "elf.R_MIPS_TLS_GOTTPREL": "debug/elf",
+ "elf.R_MIPS_TLS_LDM": "debug/elf",
+ "elf.R_MIPS_TLS_TPREL32": "debug/elf",
+ "elf.R_MIPS_TLS_TPREL64": "debug/elf",
+ "elf.R_MIPS_TLS_TPREL_HI16": "debug/elf",
+ "elf.R_MIPS_TLS_TPREL_LO16": "debug/elf",
+ "elf.R_PPC": "debug/elf",
+ "elf.R_PPC64": "debug/elf",
+ "elf.R_PPC64_ADDR14": "debug/elf",
+ "elf.R_PPC64_ADDR14_BRNTAKEN": "debug/elf",
+ "elf.R_PPC64_ADDR14_BRTAKEN": "debug/elf",
+ "elf.R_PPC64_ADDR16": "debug/elf",
+ "elf.R_PPC64_ADDR16_DS": "debug/elf",
+ "elf.R_PPC64_ADDR16_HA": "debug/elf",
+ "elf.R_PPC64_ADDR16_HI": "debug/elf",
+ "elf.R_PPC64_ADDR16_HIGHER": "debug/elf",
+ "elf.R_PPC64_ADDR16_HIGHERA": "debug/elf",
+ "elf.R_PPC64_ADDR16_HIGHEST": "debug/elf",
+ "elf.R_PPC64_ADDR16_HIGHESTA": "debug/elf",
+ "elf.R_PPC64_ADDR16_LO": "debug/elf",
+ "elf.R_PPC64_ADDR16_LO_DS": "debug/elf",
+ "elf.R_PPC64_ADDR24": "debug/elf",
+ "elf.R_PPC64_ADDR32": "debug/elf",
+ "elf.R_PPC64_ADDR64": "debug/elf",
+ "elf.R_PPC64_DTPMOD64": "debug/elf",
+ "elf.R_PPC64_DTPREL16": "debug/elf",
+ "elf.R_PPC64_DTPREL16_DS": "debug/elf",
+ "elf.R_PPC64_DTPREL16_HA": "debug/elf",
+ "elf.R_PPC64_DTPREL16_HI": "debug/elf",
+ "elf.R_PPC64_DTPREL16_HIGHER": "debug/elf",
+ "elf.R_PPC64_DTPREL16_HIGHERA": "debug/elf",
+ "elf.R_PPC64_DTPREL16_HIGHEST": "debug/elf",
+ "elf.R_PPC64_DTPREL16_HIGHESTA": "debug/elf",
+ "elf.R_PPC64_DTPREL16_LO": "debug/elf",
+ "elf.R_PPC64_DTPREL16_LO_DS": "debug/elf",
+ "elf.R_PPC64_DTPREL64": "debug/elf",
+ "elf.R_PPC64_GOT16": "debug/elf",
+ "elf.R_PPC64_GOT16_DS": "debug/elf",
+ "elf.R_PPC64_GOT16_HA": "debug/elf",
+ "elf.R_PPC64_GOT16_HI": "debug/elf",
+ "elf.R_PPC64_GOT16_LO": "debug/elf",
+ "elf.R_PPC64_GOT16_LO_DS": "debug/elf",
+ "elf.R_PPC64_GOT_DTPREL16_DS": "debug/elf",
+ "elf.R_PPC64_GOT_DTPREL16_HA": "debug/elf",
+ "elf.R_PPC64_GOT_DTPREL16_HI": "debug/elf",
+ "elf.R_PPC64_GOT_DTPREL16_LO_DS": "debug/elf",
+ "elf.R_PPC64_GOT_TLSGD16": "debug/elf",
+ "elf.R_PPC64_GOT_TLSGD16_HA": "debug/elf",
+ "elf.R_PPC64_GOT_TLSGD16_HI": "debug/elf",
+ "elf.R_PPC64_GOT_TLSGD16_LO": "debug/elf",
+ "elf.R_PPC64_GOT_TLSLD16": "debug/elf",
+ "elf.R_PPC64_GOT_TLSLD16_HA": "debug/elf",
+ "elf.R_PPC64_GOT_TLSLD16_HI": "debug/elf",
+ "elf.R_PPC64_GOT_TLSLD16_LO": "debug/elf",
+ "elf.R_PPC64_GOT_TPREL16_DS": "debug/elf",
+ "elf.R_PPC64_GOT_TPREL16_HA": "debug/elf",
+ "elf.R_PPC64_GOT_TPREL16_HI": "debug/elf",
+ "elf.R_PPC64_GOT_TPREL16_LO_DS": "debug/elf",
+ "elf.R_PPC64_JMP_SLOT": "debug/elf",
+ "elf.R_PPC64_NONE": "debug/elf",
+ "elf.R_PPC64_REL14": "debug/elf",
+ "elf.R_PPC64_REL14_BRNTAKEN": "debug/elf",
+ "elf.R_PPC64_REL14_BRTAKEN": "debug/elf",
+ "elf.R_PPC64_REL16": "debug/elf",
+ "elf.R_PPC64_REL16_HA": "debug/elf",
+ "elf.R_PPC64_REL16_HI": "debug/elf",
+ "elf.R_PPC64_REL16_LO": "debug/elf",
+ "elf.R_PPC64_REL24": "debug/elf",
+ "elf.R_PPC64_REL32": "debug/elf",
+ "elf.R_PPC64_REL64": "debug/elf",
+ "elf.R_PPC64_TLS": "debug/elf",
+ "elf.R_PPC64_TLSGD": "debug/elf",
+ "elf.R_PPC64_TLSLD": "debug/elf",
+ "elf.R_PPC64_TOC": "debug/elf",
+ "elf.R_PPC64_TOC16": "debug/elf",
+ "elf.R_PPC64_TOC16_DS": "debug/elf",
+ "elf.R_PPC64_TOC16_HA": "debug/elf",
+ "elf.R_PPC64_TOC16_HI": "debug/elf",
+ "elf.R_PPC64_TOC16_LO": "debug/elf",
+ "elf.R_PPC64_TOC16_LO_DS": "debug/elf",
+ "elf.R_PPC64_TPREL16": "debug/elf",
+ "elf.R_PPC64_TPREL16_DS": "debug/elf",
+ "elf.R_PPC64_TPREL16_HA": "debug/elf",
+ "elf.R_PPC64_TPREL16_HI": "debug/elf",
+ "elf.R_PPC64_TPREL16_HIGHER": "debug/elf",
+ "elf.R_PPC64_TPREL16_HIGHERA": "debug/elf",
+ "elf.R_PPC64_TPREL16_HIGHEST": "debug/elf",
+ "elf.R_PPC64_TPREL16_HIGHESTA": "debug/elf",
+ "elf.R_PPC64_TPREL16_LO": "debug/elf",
+ "elf.R_PPC64_TPREL16_LO_DS": "debug/elf",
+ "elf.R_PPC64_TPREL64": "debug/elf",
+ "elf.R_PPC_ADDR14": "debug/elf",
+ "elf.R_PPC_ADDR14_BRNTAKEN": "debug/elf",
+ "elf.R_PPC_ADDR14_BRTAKEN": "debug/elf",
+ "elf.R_PPC_ADDR16": "debug/elf",
+ "elf.R_PPC_ADDR16_HA": "debug/elf",
+ "elf.R_PPC_ADDR16_HI": "debug/elf",
+ "elf.R_PPC_ADDR16_LO": "debug/elf",
+ "elf.R_PPC_ADDR24": "debug/elf",
+ "elf.R_PPC_ADDR32": "debug/elf",
+ "elf.R_PPC_COPY": "debug/elf",
+ "elf.R_PPC_DTPMOD32": "debug/elf",
+ "elf.R_PPC_DTPREL16": "debug/elf",
+ "elf.R_PPC_DTPREL16_HA": "debug/elf",
+ "elf.R_PPC_DTPREL16_HI": "debug/elf",
+ "elf.R_PPC_DTPREL16_LO": "debug/elf",
+ "elf.R_PPC_DTPREL32": "debug/elf",
+ "elf.R_PPC_EMB_BIT_FLD": "debug/elf",
+ "elf.R_PPC_EMB_MRKREF": "debug/elf",
+ "elf.R_PPC_EMB_NADDR16": "debug/elf",
+ "elf.R_PPC_EMB_NADDR16_HA": "debug/elf",
+ "elf.R_PPC_EMB_NADDR16_HI": "debug/elf",
+ "elf.R_PPC_EMB_NADDR16_LO": "debug/elf",
+ "elf.R_PPC_EMB_NADDR32": "debug/elf",
+ "elf.R_PPC_EMB_RELSDA": "debug/elf",
+ "elf.R_PPC_EMB_RELSEC16": "debug/elf",
+ "elf.R_PPC_EMB_RELST_HA": "debug/elf",
+ "elf.R_PPC_EMB_RELST_HI": "debug/elf",
+ "elf.R_PPC_EMB_RELST_LO": "debug/elf",
+ "elf.R_PPC_EMB_SDA21": "debug/elf",
+ "elf.R_PPC_EMB_SDA2I16": "debug/elf",
+ "elf.R_PPC_EMB_SDA2REL": "debug/elf",
+ "elf.R_PPC_EMB_SDAI16": "debug/elf",
+ "elf.R_PPC_GLOB_DAT": "debug/elf",
+ "elf.R_PPC_GOT16": "debug/elf",
+ "elf.R_PPC_GOT16_HA": "debug/elf",
+ "elf.R_PPC_GOT16_HI": "debug/elf",
+ "elf.R_PPC_GOT16_LO": "debug/elf",
+ "elf.R_PPC_GOT_TLSGD16": "debug/elf",
+ "elf.R_PPC_GOT_TLSGD16_HA": "debug/elf",
+ "elf.R_PPC_GOT_TLSGD16_HI": "debug/elf",
+ "elf.R_PPC_GOT_TLSGD16_LO": "debug/elf",
+ "elf.R_PPC_GOT_TLSLD16": "debug/elf",
+ "elf.R_PPC_GOT_TLSLD16_HA": "debug/elf",
+ "elf.R_PPC_GOT_TLSLD16_HI": "debug/elf",
+ "elf.R_PPC_GOT_TLSLD16_LO": "debug/elf",
+ "elf.R_PPC_GOT_TPREL16": "debug/elf",
+ "elf.R_PPC_GOT_TPREL16_HA": "debug/elf",
+ "elf.R_PPC_GOT_TPREL16_HI": "debug/elf",
+ "elf.R_PPC_GOT_TPREL16_LO": "debug/elf",
+ "elf.R_PPC_JMP_SLOT": "debug/elf",
+ "elf.R_PPC_LOCAL24PC": "debug/elf",
+ "elf.R_PPC_NONE": "debug/elf",
+ "elf.R_PPC_PLT16_HA": "debug/elf",
+ "elf.R_PPC_PLT16_HI": "debug/elf",
+ "elf.R_PPC_PLT16_LO": "debug/elf",
+ "elf.R_PPC_PLT32": "debug/elf",
+ "elf.R_PPC_PLTREL24": "debug/elf",
+ "elf.R_PPC_PLTREL32": "debug/elf",
+ "elf.R_PPC_REL14": "debug/elf",
+ "elf.R_PPC_REL14_BRNTAKEN": "debug/elf",
+ "elf.R_PPC_REL14_BRTAKEN": "debug/elf",
+ "elf.R_PPC_REL24": "debug/elf",
+ "elf.R_PPC_REL32": "debug/elf",
+ "elf.R_PPC_RELATIVE": "debug/elf",
+ "elf.R_PPC_SDAREL16": "debug/elf",
+ "elf.R_PPC_SECTOFF": "debug/elf",
+ "elf.R_PPC_SECTOFF_HA": "debug/elf",
+ "elf.R_PPC_SECTOFF_HI": "debug/elf",
+ "elf.R_PPC_SECTOFF_LO": "debug/elf",
+ "elf.R_PPC_TLS": "debug/elf",
+ "elf.R_PPC_TPREL16": "debug/elf",
+ "elf.R_PPC_TPREL16_HA": "debug/elf",
+ "elf.R_PPC_TPREL16_HI": "debug/elf",
+ "elf.R_PPC_TPREL16_LO": "debug/elf",
+ "elf.R_PPC_TPREL32": "debug/elf",
+ "elf.R_PPC_UADDR16": "debug/elf",
+ "elf.R_PPC_UADDR32": "debug/elf",
+ "elf.R_SPARC": "debug/elf",
+ "elf.R_SPARC_10": "debug/elf",
+ "elf.R_SPARC_11": "debug/elf",
+ "elf.R_SPARC_13": "debug/elf",
+ "elf.R_SPARC_16": "debug/elf",
+ "elf.R_SPARC_22": "debug/elf",
+ "elf.R_SPARC_32": "debug/elf",
+ "elf.R_SPARC_5": "debug/elf",
+ "elf.R_SPARC_6": "debug/elf",
+ "elf.R_SPARC_64": "debug/elf",
+ "elf.R_SPARC_7": "debug/elf",
+ "elf.R_SPARC_8": "debug/elf",
+ "elf.R_SPARC_COPY": "debug/elf",
+ "elf.R_SPARC_DISP16": "debug/elf",
+ "elf.R_SPARC_DISP32": "debug/elf",
+ "elf.R_SPARC_DISP64": "debug/elf",
+ "elf.R_SPARC_DISP8": "debug/elf",
+ "elf.R_SPARC_GLOB_DAT": "debug/elf",
+ "elf.R_SPARC_GLOB_JMP": "debug/elf",
+ "elf.R_SPARC_GOT10": "debug/elf",
+ "elf.R_SPARC_GOT13": "debug/elf",
+ "elf.R_SPARC_GOT22": "debug/elf",
+ "elf.R_SPARC_H44": "debug/elf",
+ "elf.R_SPARC_HH22": "debug/elf",
+ "elf.R_SPARC_HI22": "debug/elf",
+ "elf.R_SPARC_HIPLT22": "debug/elf",
+ "elf.R_SPARC_HIX22": "debug/elf",
+ "elf.R_SPARC_HM10": "debug/elf",
+ "elf.R_SPARC_JMP_SLOT": "debug/elf",
+ "elf.R_SPARC_L44": "debug/elf",
+ "elf.R_SPARC_LM22": "debug/elf",
+ "elf.R_SPARC_LO10": "debug/elf",
+ "elf.R_SPARC_LOPLT10": "debug/elf",
+ "elf.R_SPARC_LOX10": "debug/elf",
+ "elf.R_SPARC_M44": "debug/elf",
+ "elf.R_SPARC_NONE": "debug/elf",
+ "elf.R_SPARC_OLO10": "debug/elf",
+ "elf.R_SPARC_PC10": "debug/elf",
+ "elf.R_SPARC_PC22": "debug/elf",
+ "elf.R_SPARC_PCPLT10": "debug/elf",
+ "elf.R_SPARC_PCPLT22": "debug/elf",
+ "elf.R_SPARC_PCPLT32": "debug/elf",
+ "elf.R_SPARC_PC_HH22": "debug/elf",
+ "elf.R_SPARC_PC_HM10": "debug/elf",
+ "elf.R_SPARC_PC_LM22": "debug/elf",
+ "elf.R_SPARC_PLT32": "debug/elf",
+ "elf.R_SPARC_PLT64": "debug/elf",
+ "elf.R_SPARC_REGISTER": "debug/elf",
+ "elf.R_SPARC_RELATIVE": "debug/elf",
+ "elf.R_SPARC_UA16": "debug/elf",
+ "elf.R_SPARC_UA32": "debug/elf",
+ "elf.R_SPARC_UA64": "debug/elf",
+ "elf.R_SPARC_WDISP16": "debug/elf",
+ "elf.R_SPARC_WDISP19": "debug/elf",
+ "elf.R_SPARC_WDISP22": "debug/elf",
+ "elf.R_SPARC_WDISP30": "debug/elf",
+ "elf.R_SPARC_WPLT30": "debug/elf",
+ "elf.R_SYM32": "debug/elf",
+ "elf.R_SYM64": "debug/elf",
+ "elf.R_TYPE32": "debug/elf",
+ "elf.R_TYPE64": "debug/elf",
+ "elf.R_X86_64": "debug/elf",
+ "elf.R_X86_64_16": "debug/elf",
+ "elf.R_X86_64_32": "debug/elf",
+ "elf.R_X86_64_32S": "debug/elf",
+ "elf.R_X86_64_64": "debug/elf",
+ "elf.R_X86_64_8": "debug/elf",
+ "elf.R_X86_64_COPY": "debug/elf",
+ "elf.R_X86_64_DTPMOD64": "debug/elf",
+ "elf.R_X86_64_DTPOFF32": "debug/elf",
+ "elf.R_X86_64_DTPOFF64": "debug/elf",
+ "elf.R_X86_64_GLOB_DAT": "debug/elf",
+ "elf.R_X86_64_GOT32": "debug/elf",
+ "elf.R_X86_64_GOTPCREL": "debug/elf",
+ "elf.R_X86_64_GOTTPOFF": "debug/elf",
+ "elf.R_X86_64_JMP_SLOT": "debug/elf",
+ "elf.R_X86_64_NONE": "debug/elf",
+ "elf.R_X86_64_PC16": "debug/elf",
+ "elf.R_X86_64_PC32": "debug/elf",
+ "elf.R_X86_64_PC8": "debug/elf",
+ "elf.R_X86_64_PLT32": "debug/elf",
+ "elf.R_X86_64_RELATIVE": "debug/elf",
+ "elf.R_X86_64_TLSGD": "debug/elf",
+ "elf.R_X86_64_TLSLD": "debug/elf",
+ "elf.R_X86_64_TPOFF32": "debug/elf",
+ "elf.R_X86_64_TPOFF64": "debug/elf",
+ "elf.Rel32": "debug/elf",
+ "elf.Rel64": "debug/elf",
+ "elf.Rela32": "debug/elf",
+ "elf.Rela64": "debug/elf",
+ "elf.SHF_ALLOC": "debug/elf",
+ "elf.SHF_COMPRESSED": "debug/elf",
+ "elf.SHF_EXECINSTR": "debug/elf",
+ "elf.SHF_GROUP": "debug/elf",
+ "elf.SHF_INFO_LINK": "debug/elf",
+ "elf.SHF_LINK_ORDER": "debug/elf",
+ "elf.SHF_MASKOS": "debug/elf",
+ "elf.SHF_MASKPROC": "debug/elf",
+ "elf.SHF_MERGE": "debug/elf",
+ "elf.SHF_OS_NONCONFORMING": "debug/elf",
+ "elf.SHF_STRINGS": "debug/elf",
+ "elf.SHF_TLS": "debug/elf",
+ "elf.SHF_WRITE": "debug/elf",
+ "elf.SHN_ABS": "debug/elf",
+ "elf.SHN_COMMON": "debug/elf",
+ "elf.SHN_HIOS": "debug/elf",
+ "elf.SHN_HIPROC": "debug/elf",
+ "elf.SHN_HIRESERVE": "debug/elf",
+ "elf.SHN_LOOS": "debug/elf",
+ "elf.SHN_LOPROC": "debug/elf",
+ "elf.SHN_LORESERVE": "debug/elf",
+ "elf.SHN_UNDEF": "debug/elf",
+ "elf.SHN_XINDEX": "debug/elf",
+ "elf.SHT_DYNAMIC": "debug/elf",
+ "elf.SHT_DYNSYM": "debug/elf",
+ "elf.SHT_FINI_ARRAY": "debug/elf",
+ "elf.SHT_GNU_ATTRIBUTES": "debug/elf",
+ "elf.SHT_GNU_HASH": "debug/elf",
+ "elf.SHT_GNU_LIBLIST": "debug/elf",
+ "elf.SHT_GNU_VERDEF": "debug/elf",
+ "elf.SHT_GNU_VERNEED": "debug/elf",
+ "elf.SHT_GNU_VERSYM": "debug/elf",
+ "elf.SHT_GROUP": "debug/elf",
+ "elf.SHT_HASH": "debug/elf",
+ "elf.SHT_HIOS": "debug/elf",
+ "elf.SHT_HIPROC": "debug/elf",
+ "elf.SHT_HIUSER": "debug/elf",
+ "elf.SHT_INIT_ARRAY": "debug/elf",
+ "elf.SHT_LOOS": "debug/elf",
+ "elf.SHT_LOPROC": "debug/elf",
+ "elf.SHT_LOUSER": "debug/elf",
+ "elf.SHT_NOBITS": "debug/elf",
+ "elf.SHT_NOTE": "debug/elf",
+ "elf.SHT_NULL": "debug/elf",
+ "elf.SHT_PREINIT_ARRAY": "debug/elf",
+ "elf.SHT_PROGBITS": "debug/elf",
+ "elf.SHT_REL": "debug/elf",
+ "elf.SHT_RELA": "debug/elf",
+ "elf.SHT_SHLIB": "debug/elf",
+ "elf.SHT_STRTAB": "debug/elf",
+ "elf.SHT_SYMTAB": "debug/elf",
+ "elf.SHT_SYMTAB_SHNDX": "debug/elf",
+ "elf.STB_GLOBAL": "debug/elf",
+ "elf.STB_HIOS": "debug/elf",
+ "elf.STB_HIPROC": "debug/elf",
+ "elf.STB_LOCAL": "debug/elf",
+ "elf.STB_LOOS": "debug/elf",
+ "elf.STB_LOPROC": "debug/elf",
+ "elf.STB_WEAK": "debug/elf",
+ "elf.STT_COMMON": "debug/elf",
+ "elf.STT_FILE": "debug/elf",
+ "elf.STT_FUNC": "debug/elf",
+ "elf.STT_HIOS": "debug/elf",
+ "elf.STT_HIPROC": "debug/elf",
+ "elf.STT_LOOS": "debug/elf",
+ "elf.STT_LOPROC": "debug/elf",
+ "elf.STT_NOTYPE": "debug/elf",
+ "elf.STT_OBJECT": "debug/elf",
+ "elf.STT_SECTION": "debug/elf",
+ "elf.STT_TLS": "debug/elf",
+ "elf.STV_DEFAULT": "debug/elf",
+ "elf.STV_HIDDEN": "debug/elf",
+ "elf.STV_INTERNAL": "debug/elf",
+ "elf.STV_PROTECTED": "debug/elf",
+ "elf.ST_BIND": "debug/elf",
+ "elf.ST_INFO": "debug/elf",
+ "elf.ST_TYPE": "debug/elf",
+ "elf.ST_VISIBILITY": "debug/elf",
+ "elf.Section": "debug/elf",
+ "elf.Section32": "debug/elf",
+ "elf.Section64": "debug/elf",
+ "elf.SectionFlag": "debug/elf",
+ "elf.SectionHeader": "debug/elf",
+ "elf.SectionIndex": "debug/elf",
+ "elf.SectionType": "debug/elf",
+ "elf.Sym32": "debug/elf",
+ "elf.Sym32Size": "debug/elf",
+ "elf.Sym64": "debug/elf",
+ "elf.Sym64Size": "debug/elf",
+ "elf.SymBind": "debug/elf",
+ "elf.SymType": "debug/elf",
+ "elf.SymVis": "debug/elf",
+ "elf.Symbol": "debug/elf",
+ "elf.Type": "debug/elf",
+ "elf.Version": "debug/elf",
+ "elliptic.Curve": "crypto/elliptic",
+ "elliptic.CurveParams": "crypto/elliptic",
+ "elliptic.GenerateKey": "crypto/elliptic",
+ "elliptic.Marshal": "crypto/elliptic",
+ "elliptic.P224": "crypto/elliptic",
+ "elliptic.P256": "crypto/elliptic",
+ "elliptic.P384": "crypto/elliptic",
+ "elliptic.P521": "crypto/elliptic",
+ "elliptic.Unmarshal": "crypto/elliptic",
+ "encoding.BinaryMarshaler": "encoding",
+ "encoding.BinaryUnmarshaler": "encoding",
+ "encoding.TextMarshaler": "encoding",
+ "encoding.TextUnmarshaler": "encoding",
+ "errors.New": "errors",
+ "exec.Cmd": "os/exec",
+ "exec.Command": "os/exec",
+ "exec.CommandContext": "os/exec",
+ "exec.ErrNotFound": "os/exec",
+ "exec.Error": "os/exec",
+ "exec.ExitError": "os/exec",
+ "exec.LookPath": "os/exec",
+ "expvar.Do": "expvar",
+ "expvar.Float": "expvar",
+ "expvar.Func": "expvar",
+ "expvar.Get": "expvar",
+ "expvar.Handler": "expvar",
+ "expvar.Int": "expvar",
+ "expvar.KeyValue": "expvar",
+ "expvar.Map": "expvar",
+ "expvar.NewFloat": "expvar",
+ "expvar.NewInt": "expvar",
+ "expvar.NewMap": "expvar",
+ "expvar.NewString": "expvar",
+ "expvar.Publish": "expvar",
+ "expvar.String": "expvar",
+ "expvar.Var": "expvar",
+ "fcgi.ErrConnClosed": "net/http/fcgi",
+ "fcgi.ErrRequestAborted": "net/http/fcgi",
+ "fcgi.Serve": "net/http/fcgi",
+ "filepath.Abs": "path/filepath",
+ "filepath.Base": "path/filepath",
+ "filepath.Clean": "path/filepath",
+ "filepath.Dir": "path/filepath",
+ "filepath.ErrBadPattern": "path/filepath",
+ "filepath.EvalSymlinks": "path/filepath",
+ "filepath.Ext": "path/filepath",
+ "filepath.FromSlash": "path/filepath",
+ "filepath.Glob": "path/filepath",
+ "filepath.HasPrefix": "path/filepath",
+ "filepath.IsAbs": "path/filepath",
+ "filepath.Join": "path/filepath",
+ "filepath.ListSeparator": "path/filepath",
+ "filepath.Match": "path/filepath",
+ "filepath.Rel": "path/filepath",
+ "filepath.Separator": "path/filepath",
+ "filepath.SkipDir": "path/filepath",
+ "filepath.Split": "path/filepath",
+ "filepath.SplitList": "path/filepath",
+ "filepath.ToSlash": "path/filepath",
+ "filepath.VolumeName": "path/filepath",
+ "filepath.Walk": "path/filepath",
+ "filepath.WalkFunc": "path/filepath",
+ "flag.Arg": "flag",
+ "flag.Args": "flag",
+ "flag.Bool": "flag",
+ "flag.BoolVar": "flag",
+ "flag.CommandLine": "flag",
+ "flag.ContinueOnError": "flag",
+ "flag.Duration": "flag",
+ "flag.DurationVar": "flag",
+ "flag.ErrHelp": "flag",
+ "flag.ErrorHandling": "flag",
+ "flag.ExitOnError": "flag",
+ "flag.Flag": "flag",
+ "flag.FlagSet": "flag",
+ "flag.Float64": "flag",
+ "flag.Float64Var": "flag",
+ "flag.Getter": "flag",
+ "flag.Int": "flag",
+ "flag.Int64": "flag",
+ "flag.Int64Var": "flag",
+ "flag.IntVar": "flag",
+ "flag.Lookup": "flag",
+ "flag.NArg": "flag",
+ "flag.NFlag": "flag",
+ "flag.NewFlagSet": "flag",
+ "flag.PanicOnError": "flag",
+ "flag.Parse": "flag",
+ "flag.Parsed": "flag",
+ "flag.PrintDefaults": "flag",
+ "flag.Set": "flag",
+ "flag.String": "flag",
+ "flag.StringVar": "flag",
+ "flag.Uint": "flag",
+ "flag.Uint64": "flag",
+ "flag.Uint64Var": "flag",
+ "flag.UintVar": "flag",
+ "flag.UnquoteUsage": "flag",
+ "flag.Usage": "flag",
+ "flag.Value": "flag",
+ "flag.Var": "flag",
+ "flag.Visit": "flag",
+ "flag.VisitAll": "flag",
+ "flate.BestCompression": "compress/flate",
+ "flate.BestSpeed": "compress/flate",
+ "flate.CorruptInputError": "compress/flate",
+ "flate.DefaultCompression": "compress/flate",
+ "flate.HuffmanOnly": "compress/flate",
+ "flate.InternalError": "compress/flate",
+ "flate.NewReader": "compress/flate",
+ "flate.NewReaderDict": "compress/flate",
+ "flate.NewWriter": "compress/flate",
+ "flate.NewWriterDict": "compress/flate",
+ "flate.NoCompression": "compress/flate",
+ "flate.ReadError": "compress/flate",
+ "flate.Reader": "compress/flate",
+ "flate.Resetter": "compress/flate",
+ "flate.WriteError": "compress/flate",
+ "flate.Writer": "compress/flate",
+ "fmt.Errorf": "fmt",
+ "fmt.Formatter": "fmt",
+ "fmt.Fprint": "fmt",
+ "fmt.Fprintf": "fmt",
+ "fmt.Fprintln": "fmt",
+ "fmt.Fscan": "fmt",
+ "fmt.Fscanf": "fmt",
+ "fmt.Fscanln": "fmt",
+ "fmt.GoStringer": "fmt",
+ "fmt.Print": "fmt",
+ "fmt.Printf": "fmt",
+ "fmt.Println": "fmt",
+ "fmt.Scan": "fmt",
+ "fmt.ScanState": "fmt",
+ "fmt.Scanf": "fmt",
+ "fmt.Scanln": "fmt",
+ "fmt.Scanner": "fmt",
+ "fmt.Sprint": "fmt",
+ "fmt.Sprintf": "fmt",
+ "fmt.Sprintln": "fmt",
+ "fmt.Sscan": "fmt",
+ "fmt.Sscanf": "fmt",
+ "fmt.Sscanln": "fmt",
+ "fmt.State": "fmt",
+ "fmt.Stringer": "fmt",
+ "fnv.New32": "hash/fnv",
+ "fnv.New32a": "hash/fnv",
+ "fnv.New64": "hash/fnv",
+ "fnv.New64a": "hash/fnv",
+ "format.Node": "go/format",
+ "format.Source": "go/format",
+ "gif.Decode": "image/gif",
+ "gif.DecodeAll": "image/gif",
+ "gif.DecodeConfig": "image/gif",
+ "gif.DisposalBackground": "image/gif",
+ "gif.DisposalNone": "image/gif",
+ "gif.DisposalPrevious": "image/gif",
+ "gif.Encode": "image/gif",
+ "gif.EncodeAll": "image/gif",
+ "gif.GIF": "image/gif",
+ "gif.Options": "image/gif",
+ "gob.CommonType": "encoding/gob",
+ "gob.Decoder": "encoding/gob",
+ "gob.Encoder": "encoding/gob",
+ "gob.GobDecoder": "encoding/gob",
+ "gob.GobEncoder": "encoding/gob",
+ "gob.NewDecoder": "encoding/gob",
+ "gob.NewEncoder": "encoding/gob",
+ "gob.Register": "encoding/gob",
+ "gob.RegisterName": "encoding/gob",
+ "gosym.DecodingError": "debug/gosym",
+ "gosym.Func": "debug/gosym",
+ "gosym.LineTable": "debug/gosym",
+ "gosym.NewLineTable": "debug/gosym",
+ "gosym.NewTable": "debug/gosym",
+ "gosym.Obj": "debug/gosym",
+ "gosym.Sym": "debug/gosym",
+ "gosym.Table": "debug/gosym",
+ "gosym.UnknownFileError": "debug/gosym",
+ "gosym.UnknownLineError": "debug/gosym",
+ "gzip.BestCompression": "compress/gzip",
+ "gzip.BestSpeed": "compress/gzip",
+ "gzip.DefaultCompression": "compress/gzip",
+ "gzip.ErrChecksum": "compress/gzip",
+ "gzip.ErrHeader": "compress/gzip",
+ "gzip.Header": "compress/gzip",
+ "gzip.HuffmanOnly": "compress/gzip",
+ "gzip.NewReader": "compress/gzip",
+ "gzip.NewWriter": "compress/gzip",
+ "gzip.NewWriterLevel": "compress/gzip",
+ "gzip.NoCompression": "compress/gzip",
+ "gzip.Reader": "compress/gzip",
+ "gzip.Writer": "compress/gzip",
+ "hash.Hash": "hash",
+ "hash.Hash32": "hash",
+ "hash.Hash64": "hash",
+ "heap.Fix": "container/heap",
+ "heap.Init": "container/heap",
+ "heap.Interface": "container/heap",
+ "heap.Pop": "container/heap",
+ "heap.Push": "container/heap",
+ "heap.Remove": "container/heap",
+ "hex.Decode": "encoding/hex",
+ "hex.DecodeString": "encoding/hex",
+ "hex.DecodedLen": "encoding/hex",
+ "hex.Dump": "encoding/hex",
+ "hex.Dumper": "encoding/hex",
+ "hex.Encode": "encoding/hex",
+ "hex.EncodeToString": "encoding/hex",
+ "hex.EncodedLen": "encoding/hex",
+ "hex.ErrLength": "encoding/hex",
+ "hex.InvalidByteError": "encoding/hex",
+ "hmac.Equal": "crypto/hmac",
+ "hmac.New": "crypto/hmac",
+ "html.EscapeString": "html",
+ "html.UnescapeString": "html",
+ "http.CanonicalHeaderKey": "net/http",
+ "http.Client": "net/http",
+ "http.CloseNotifier": "net/http",
+ "http.ConnState": "net/http",
+ "http.Cookie": "net/http",
+ "http.CookieJar": "net/http",
+ "http.DefaultClient": "net/http",
+ "http.DefaultMaxHeaderBytes": "net/http",
+ "http.DefaultMaxIdleConnsPerHost": "net/http",
+ "http.DefaultServeMux": "net/http",
+ "http.DefaultTransport": "net/http",
+ "http.DetectContentType": "net/http",
+ "http.Dir": "net/http",
+ "http.ErrAbortHandler": "net/http",
+ "http.ErrBodyNotAllowed": "net/http",
+ "http.ErrBodyReadAfterClose": "net/http",
+ "http.ErrContentLength": "net/http",
+ "http.ErrHandlerTimeout": "net/http",
+ "http.ErrHeaderTooLong": "net/http",
+ "http.ErrHijacked": "net/http",
+ "http.ErrLineTooLong": "net/http",
+ "http.ErrMissingBoundary": "net/http",
+ "http.ErrMissingContentLength": "net/http",
+ "http.ErrMissingFile": "net/http",
+ "http.ErrNoCookie": "net/http",
+ "http.ErrNoLocation": "net/http",
+ "http.ErrNotMultipart": "net/http",
+ "http.ErrNotSupported": "net/http",
+ "http.ErrServerClosed": "net/http",
+ "http.ErrShortBody": "net/http",
+ "http.ErrSkipAltProtocol": "net/http",
+ "http.ErrUnexpectedTrailer": "net/http",
+ "http.ErrUseLastResponse": "net/http",
+ "http.ErrWriteAfterFlush": "net/http",
+ "http.Error": "net/http",
+ "http.File": "net/http",
+ "http.FileServer": "net/http",
+ "http.FileSystem": "net/http",
+ "http.Flusher": "net/http",
+ "http.Get": "net/http",
+ "http.Handle": "net/http",
+ "http.HandleFunc": "net/http",
+ "http.Handler": "net/http",
+ "http.HandlerFunc": "net/http",
+ "http.Head": "net/http",
+ "http.Header": "net/http",
+ "http.Hijacker": "net/http",
+ "http.ListenAndServe": "net/http",
+ "http.ListenAndServeTLS": "net/http",
+ "http.LocalAddrContextKey": "net/http",
+ "http.MaxBytesReader": "net/http",
+ "http.MethodConnect": "net/http",
+ "http.MethodDelete": "net/http",
+ "http.MethodGet": "net/http",
+ "http.MethodHead": "net/http",
+ "http.MethodOptions": "net/http",
+ "http.MethodPatch": "net/http",
+ "http.MethodPost": "net/http",
+ "http.MethodPut": "net/http",
+ "http.MethodTrace": "net/http",
+ "http.NewFileTransport": "net/http",
+ "http.NewRequest": "net/http",
+ "http.NewServeMux": "net/http",
+ "http.NoBody": "net/http",
+ "http.NotFound": "net/http",
+ "http.NotFoundHandler": "net/http",
+ "http.ParseHTTPVersion": "net/http",
+ "http.ParseTime": "net/http",
+ "http.Post": "net/http",
+ "http.PostForm": "net/http",
+ "http.ProtocolError": "net/http",
+ "http.ProxyFromEnvironment": "net/http",
+ "http.ProxyURL": "net/http",
+ "http.PushOptions": "net/http",
+ "http.Pusher": "net/http",
+ "http.ReadRequest": "net/http",
+ "http.ReadResponse": "net/http",
+ "http.Redirect": "net/http",
+ "http.RedirectHandler": "net/http",
+ "http.Request": "net/http",
+ "http.Response": "net/http",
+ "http.ResponseWriter": "net/http",
+ "http.RoundTripper": "net/http",
+ "http.Serve": "net/http",
+ "http.ServeContent": "net/http",
+ "http.ServeFile": "net/http",
+ "http.ServeMux": "net/http",
+ "http.Server": "net/http",
+ "http.ServerContextKey": "net/http",
+ "http.SetCookie": "net/http",
+ "http.StateActive": "net/http",
+ "http.StateClosed": "net/http",
+ "http.StateHijacked": "net/http",
+ "http.StateIdle": "net/http",
+ "http.StateNew": "net/http",
+ "http.StatusAccepted": "net/http",
+ "http.StatusAlreadyReported": "net/http",
+ "http.StatusBadGateway": "net/http",
+ "http.StatusBadRequest": "net/http",
+ "http.StatusConflict": "net/http",
+ "http.StatusContinue": "net/http",
+ "http.StatusCreated": "net/http",
+ "http.StatusExpectationFailed": "net/http",
+ "http.StatusFailedDependency": "net/http",
+ "http.StatusForbidden": "net/http",
+ "http.StatusFound": "net/http",
+ "http.StatusGatewayTimeout": "net/http",
+ "http.StatusGone": "net/http",
+ "http.StatusHTTPVersionNotSupported": "net/http",
+ "http.StatusIMUsed": "net/http",
+ "http.StatusInsufficientStorage": "net/http",
+ "http.StatusInternalServerError": "net/http",
+ "http.StatusLengthRequired": "net/http",
+ "http.StatusLocked": "net/http",
+ "http.StatusLoopDetected": "net/http",
+ "http.StatusMethodNotAllowed": "net/http",
+ "http.StatusMovedPermanently": "net/http",
+ "http.StatusMultiStatus": "net/http",
+ "http.StatusMultipleChoices": "net/http",
+ "http.StatusNetworkAuthenticationRequired": "net/http",
+ "http.StatusNoContent": "net/http",
+ "http.StatusNonAuthoritativeInfo": "net/http",
+ "http.StatusNotAcceptable": "net/http",
+ "http.StatusNotExtended": "net/http",
+ "http.StatusNotFound": "net/http",
+ "http.StatusNotImplemented": "net/http",
+ "http.StatusNotModified": "net/http",
+ "http.StatusOK": "net/http",
+ "http.StatusPartialContent": "net/http",
+ "http.StatusPaymentRequired": "net/http",
+ "http.StatusPermanentRedirect": "net/http",
+ "http.StatusPreconditionFailed": "net/http",
+ "http.StatusPreconditionRequired": "net/http",
+ "http.StatusProcessing": "net/http",
+ "http.StatusProxyAuthRequired": "net/http",
+ "http.StatusRequestEntityTooLarge": "net/http",
+ "http.StatusRequestHeaderFieldsTooLarge": "net/http",
+ "http.StatusRequestTimeout": "net/http",
+ "http.StatusRequestURITooLong": "net/http",
+ "http.StatusRequestedRangeNotSatisfiable": "net/http",
+ "http.StatusResetContent": "net/http",
+ "http.StatusSeeOther": "net/http",
+ "http.StatusServiceUnavailable": "net/http",
+ "http.StatusSwitchingProtocols": "net/http",
+ "http.StatusTeapot": "net/http",
+ "http.StatusTemporaryRedirect": "net/http",
+ "http.StatusText": "net/http",
+ "http.StatusTooManyRequests": "net/http",
+ "http.StatusUnauthorized": "net/http",
+ "http.StatusUnavailableForLegalReasons": "net/http",
+ "http.StatusUnprocessableEntity": "net/http",
+ "http.StatusUnsupportedMediaType": "net/http",
+ "http.StatusUpgradeRequired": "net/http",
+ "http.StatusUseProxy": "net/http",
+ "http.StatusVariantAlsoNegotiates": "net/http",
+ "http.StripPrefix": "net/http",
+ "http.TimeFormat": "net/http",
+ "http.TimeoutHandler": "net/http",
+ "http.TrailerPrefix": "net/http",
+ "http.Transport": "net/http",
+ "httptest.DefaultRemoteAddr": "net/http/httptest",
+ "httptest.NewRecorder": "net/http/httptest",
+ "httptest.NewRequest": "net/http/httptest",
+ "httptest.NewServer": "net/http/httptest",
+ "httptest.NewTLSServer": "net/http/httptest",
+ "httptest.NewUnstartedServer": "net/http/httptest",
+ "httptest.ResponseRecorder": "net/http/httptest",
+ "httptest.Server": "net/http/httptest",
+ "httptrace.ClientTrace": "net/http/httptrace",
+ "httptrace.ContextClientTrace": "net/http/httptrace",
+ "httptrace.DNSDoneInfo": "net/http/httptrace",
+ "httptrace.DNSStartInfo": "net/http/httptrace",
+ "httptrace.GotConnInfo": "net/http/httptrace",
+ "httptrace.WithClientTrace": "net/http/httptrace",
+ "httptrace.WroteRequestInfo": "net/http/httptrace",
+ "httputil.BufferPool": "net/http/httputil",
+ "httputil.ClientConn": "net/http/httputil",
+ "httputil.DumpRequest": "net/http/httputil",
+ "httputil.DumpRequestOut": "net/http/httputil",
+ "httputil.DumpResponse": "net/http/httputil",
+ "httputil.ErrClosed": "net/http/httputil",
+ "httputil.ErrLineTooLong": "net/http/httputil",
+ "httputil.ErrPersistEOF": "net/http/httputil",
+ "httputil.ErrPipeline": "net/http/httputil",
+ "httputil.NewChunkedReader": "net/http/httputil",
+ "httputil.NewChunkedWriter": "net/http/httputil",
+ "httputil.NewClientConn": "net/http/httputil",
+ "httputil.NewProxyClientConn": "net/http/httputil",
+ "httputil.NewServerConn": "net/http/httputil",
+ "httputil.NewSingleHostReverseProxy": "net/http/httputil",
+ "httputil.ReverseProxy": "net/http/httputil",
+ "httputil.ServerConn": "net/http/httputil",
+ "image.Alpha": "image",
+ "image.Alpha16": "image",
+ "image.Black": "image",
+ "image.CMYK": "image",
+ "image.Config": "image",
+ "image.Decode": "image",
+ "image.DecodeConfig": "image",
+ "image.ErrFormat": "image",
+ "image.Gray": "image",
+ "image.Gray16": "image",
+ "image.Image": "image",
+ "image.NRGBA": "image",
+ "image.NRGBA64": "image",
+ "image.NYCbCrA": "image",
+ "image.NewAlpha": "image",
+ "image.NewAlpha16": "image",
+ "image.NewCMYK": "image",
+ "image.NewGray": "image",
+ "image.NewGray16": "image",
+ "image.NewNRGBA": "image",
+ "image.NewNRGBA64": "image",
+ "image.NewNYCbCrA": "image",
+ "image.NewPaletted": "image",
+ "image.NewRGBA": "image",
+ "image.NewRGBA64": "image",
+ "image.NewUniform": "image",
+ "image.NewYCbCr": "image",
+ "image.Opaque": "image",
+ "image.Paletted": "image",
+ "image.PalettedImage": "image",
+ "image.Point": "image",
+ "image.Pt": "image",
+ "image.RGBA": "image",
+ "image.RGBA64": "image",
+ "image.Rect": "image",
+ "image.Rectangle": "image",
+ "image.RegisterFormat": "image",
+ "image.Transparent": "image",
+ "image.Uniform": "image",
+ "image.White": "image",
+ "image.YCbCr": "image",
+ "image.YCbCrSubsampleRatio": "image",
+ "image.YCbCrSubsampleRatio410": "image",
+ "image.YCbCrSubsampleRatio411": "image",
+ "image.YCbCrSubsampleRatio420": "image",
+ "image.YCbCrSubsampleRatio422": "image",
+ "image.YCbCrSubsampleRatio440": "image",
+ "image.YCbCrSubsampleRatio444": "image",
+ "image.ZP": "image",
+ "image.ZR": "image",
+ "importer.Default": "go/importer",
+ "importer.For": "go/importer",
+ "importer.Lookup": "go/importer",
+ "io.ByteReader": "io",
+ "io.ByteScanner": "io",
+ "io.ByteWriter": "io",
+ "io.Closer": "io",
+ "io.Copy": "io",
+ "io.CopyBuffer": "io",
+ "io.CopyN": "io",
+ "io.EOF": "io",
+ "io.ErrClosedPipe": "io",
+ "io.ErrNoProgress": "io",
+ "io.ErrShortBuffer": "io",
+ "io.ErrShortWrite": "io",
+ "io.ErrUnexpectedEOF": "io",
+ "io.LimitReader": "io",
+ "io.LimitedReader": "io",
+ "io.MultiReader": "io",
+ "io.MultiWriter": "io",
+ "io.NewSectionReader": "io",
+ "io.Pipe": "io",
+ "io.PipeReader": "io",
+ "io.PipeWriter": "io",
+ "io.ReadAtLeast": "io",
+ "io.ReadCloser": "io",
+ "io.ReadFull": "io",
+ "io.ReadSeeker": "io",
+ "io.ReadWriteCloser": "io",
+ "io.ReadWriteSeeker": "io",
+ "io.ReadWriter": "io",
+ "io.Reader": "io",
+ "io.ReaderAt": "io",
+ "io.ReaderFrom": "io",
+ "io.RuneReader": "io",
+ "io.RuneScanner": "io",
+ "io.SectionReader": "io",
+ "io.SeekCurrent": "io",
+ "io.SeekEnd": "io",
+ "io.SeekStart": "io",
+ "io.Seeker": "io",
+ "io.TeeReader": "io",
+ "io.WriteCloser": "io",
+ "io.WriteSeeker": "io",
+ "io.WriteString": "io",
+ "io.Writer": "io",
+ "io.WriterAt": "io",
+ "io.WriterTo": "io",
+ "iotest.DataErrReader": "testing/iotest",
+ "iotest.ErrTimeout": "testing/iotest",
+ "iotest.HalfReader": "testing/iotest",
+ "iotest.NewReadLogger": "testing/iotest",
+ "iotest.NewWriteLogger": "testing/iotest",
+ "iotest.OneByteReader": "testing/iotest",
+ "iotest.TimeoutReader": "testing/iotest",
+ "iotest.TruncateWriter": "testing/iotest",
+ "ioutil.Discard": "io/ioutil",
+ "ioutil.NopCloser": "io/ioutil",
+ "ioutil.ReadAll": "io/ioutil",
+ "ioutil.ReadDir": "io/ioutil",
+ "ioutil.ReadFile": "io/ioutil",
+ "ioutil.TempDir": "io/ioutil",
+ "ioutil.TempFile": "io/ioutil",
+ "ioutil.WriteFile": "io/ioutil",
+ "jpeg.Decode": "image/jpeg",
+ "jpeg.DecodeConfig": "image/jpeg",
+ "jpeg.DefaultQuality": "image/jpeg",
+ "jpeg.Encode": "image/jpeg",
+ "jpeg.FormatError": "image/jpeg",
+ "jpeg.Options": "image/jpeg",
+ "jpeg.Reader": "image/jpeg",
+ "jpeg.UnsupportedError": "image/jpeg",
+ "json.Compact": "encoding/json",
+ "json.Decoder": "encoding/json",
+ "json.Delim": "encoding/json",
+ "json.Encoder": "encoding/json",
+ "json.HTMLEscape": "encoding/json",
+ "json.Indent": "encoding/json",
+ "json.InvalidUTF8Error": "encoding/json",
+ "json.InvalidUnmarshalError": "encoding/json",
+ "json.Marshal": "encoding/json",
+ "json.MarshalIndent": "encoding/json",
+ "json.Marshaler": "encoding/json",
+ "json.MarshalerError": "encoding/json",
+ "json.NewDecoder": "encoding/json",
+ "json.NewEncoder": "encoding/json",
+ "json.Number": "encoding/json",
+ "json.RawMessage": "encoding/json",
+ "json.SyntaxError": "encoding/json",
+ "json.Token": "encoding/json",
+ "json.Unmarshal": "encoding/json",
+ "json.UnmarshalFieldError": "encoding/json",
+ "json.UnmarshalTypeError": "encoding/json",
+ "json.Unmarshaler": "encoding/json",
+ "json.UnsupportedTypeError": "encoding/json",
+ "json.UnsupportedValueError": "encoding/json",
+ "jsonrpc.Dial": "net/rpc/jsonrpc",
+ "jsonrpc.NewClient": "net/rpc/jsonrpc",
+ "jsonrpc.NewClientCodec": "net/rpc/jsonrpc",
+ "jsonrpc.NewServerCodec": "net/rpc/jsonrpc",
+ "jsonrpc.ServeConn": "net/rpc/jsonrpc",
+ "list.Element": "container/list",
+ "list.List": "container/list",
+ "list.New": "container/list",
+ "log.Fatal": "log",
+ "log.Fatalf": "log",
+ "log.Fatalln": "log",
+ "log.Flags": "log",
+ "log.LUTC": "log",
+ "log.Ldate": "log",
+ "log.Llongfile": "log",
+ "log.Lmicroseconds": "log",
+ "log.Logger": "log",
+ "log.Lshortfile": "log",
+ "log.LstdFlags": "log",
+ "log.Ltime": "log",
+ "log.New": "log",
+ "log.Output": "log",
+ "log.Panic": "log",
+ "log.Panicf": "log",
+ "log.Panicln": "log",
+ "log.Prefix": "log",
+ "log.Print": "log",
+ "log.Printf": "log",
+ "log.Println": "log",
+ "log.SetFlags": "log",
+ "log.SetOutput": "log",
+ "log.SetPrefix": "log",
+ "lzw.LSB": "compress/lzw",
+ "lzw.MSB": "compress/lzw",
+ "lzw.NewReader": "compress/lzw",
+ "lzw.NewWriter": "compress/lzw",
+ "lzw.Order": "compress/lzw",
+ "macho.Cpu": "debug/macho",
+ "macho.Cpu386": "debug/macho",
+ "macho.CpuAmd64": "debug/macho",
+ "macho.CpuArm": "debug/macho",
+ "macho.CpuPpc": "debug/macho",
+ "macho.CpuPpc64": "debug/macho",
+ "macho.Dylib": "debug/macho",
+ "macho.DylibCmd": "debug/macho",
+ "macho.Dysymtab": "debug/macho",
+ "macho.DysymtabCmd": "debug/macho",
+ "macho.ErrNotFat": "debug/macho",
+ "macho.FatArch": "debug/macho",
+ "macho.FatArchHeader": "debug/macho",
+ "macho.FatFile": "debug/macho",
+ "macho.File": "debug/macho",
+ "macho.FileHeader": "debug/macho",
+ "macho.FormatError": "debug/macho",
+ "macho.Load": "debug/macho",
+ "macho.LoadBytes": "debug/macho",
+ "macho.LoadCmd": "debug/macho",
+ "macho.LoadCmdDylib": "debug/macho",
+ "macho.LoadCmdDylinker": "debug/macho",
+ "macho.LoadCmdDysymtab": "debug/macho",
+ "macho.LoadCmdSegment": "debug/macho",
+ "macho.LoadCmdSegment64": "debug/macho",
+ "macho.LoadCmdSymtab": "debug/macho",
+ "macho.LoadCmdThread": "debug/macho",
+ "macho.LoadCmdUnixThread": "debug/macho",
+ "macho.Magic32": "debug/macho",
+ "macho.Magic64": "debug/macho",
+ "macho.MagicFat": "debug/macho",
+ "macho.NewFatFile": "debug/macho",
+ "macho.NewFile": "debug/macho",
+ "macho.Nlist32": "debug/macho",
+ "macho.Nlist64": "debug/macho",
+ "macho.Open": "debug/macho",
+ "macho.OpenFat": "debug/macho",
+ "macho.Regs386": "debug/macho",
+ "macho.RegsAMD64": "debug/macho",
+ "macho.Section": "debug/macho",
+ "macho.Section32": "debug/macho",
+ "macho.Section64": "debug/macho",
+ "macho.SectionHeader": "debug/macho",
+ "macho.Segment": "debug/macho",
+ "macho.Segment32": "debug/macho",
+ "macho.Segment64": "debug/macho",
+ "macho.SegmentHeader": "debug/macho",
+ "macho.Symbol": "debug/macho",
+ "macho.Symtab": "debug/macho",
+ "macho.SymtabCmd": "debug/macho",
+ "macho.Thread": "debug/macho",
+ "macho.Type": "debug/macho",
+ "macho.TypeBundle": "debug/macho",
+ "macho.TypeDylib": "debug/macho",
+ "macho.TypeExec": "debug/macho",
+ "macho.TypeObj": "debug/macho",
+ "mail.Address": "net/mail",
+ "mail.AddressParser": "net/mail",
+ "mail.ErrHeaderNotPresent": "net/mail",
+ "mail.Header": "net/mail",
+ "mail.Message": "net/mail",
+ "mail.ParseAddress": "net/mail",
+ "mail.ParseAddressList": "net/mail",
+ "mail.ParseDate": "net/mail",
+ "mail.ReadMessage": "net/mail",
+ "math.Abs": "math",
+ "math.Acos": "math",
+ "math.Acosh": "math",
+ "math.Asin": "math",
+ "math.Asinh": "math",
+ "math.Atan": "math",
+ "math.Atan2": "math",
+ "math.Atanh": "math",
+ "math.Cbrt": "math",
+ "math.Ceil": "math",
+ "math.Copysign": "math",
+ "math.Cos": "math",
+ "math.Cosh": "math",
+ "math.Dim": "math",
+ "math.E": "math",
+ "math.Erf": "math",
+ "math.Erfc": "math",
+ "math.Exp": "math",
+ "math.Exp2": "math",
+ "math.Expm1": "math",
+ "math.Float32bits": "math",
+ "math.Float32frombits": "math",
+ "math.Float64bits": "math",
+ "math.Float64frombits": "math",
+ "math.Floor": "math",
+ "math.Frexp": "math",
+ "math.Gamma": "math",
+ "math.Hypot": "math",
+ "math.Ilogb": "math",
+ "math.Inf": "math",
+ "math.IsInf": "math",
+ "math.IsNaN": "math",
+ "math.J0": "math",
+ "math.J1": "math",
+ "math.Jn": "math",
+ "math.Ldexp": "math",
+ "math.Lgamma": "math",
+ "math.Ln10": "math",
+ "math.Ln2": "math",
+ "math.Log": "math",
+ "math.Log10": "math",
+ "math.Log10E": "math",
+ "math.Log1p": "math",
+ "math.Log2": "math",
+ "math.Log2E": "math",
+ "math.Logb": "math",
+ "math.Max": "math",
+ "math.MaxFloat32": "math",
+ "math.MaxFloat64": "math",
+ "math.MaxInt16": "math",
+ "math.MaxInt32": "math",
+ "math.MaxInt64": "math",
+ "math.MaxInt8": "math",
+ "math.MaxUint16": "math",
+ "math.MaxUint32": "math",
+ "math.MaxUint64": "math",
+ "math.MaxUint8": "math",
+ "math.Min": "math",
+ "math.MinInt16": "math",
+ "math.MinInt32": "math",
+ "math.MinInt64": "math",
+ "math.MinInt8": "math",
+ "math.Mod": "math",
+ "math.Modf": "math",
+ "math.NaN": "math",
+ "math.Nextafter": "math",
+ "math.Nextafter32": "math",
+ "math.Phi": "math",
+ "math.Pi": "math",
+ "math.Pow": "math",
+ "math.Pow10": "math",
+ "math.Remainder": "math",
+ "math.Signbit": "math",
+ "math.Sin": "math",
+ "math.Sincos": "math",
+ "math.Sinh": "math",
+ "math.SmallestNonzeroFloat32": "math",
+ "math.SmallestNonzeroFloat64": "math",
+ "math.Sqrt": "math",
+ "math.Sqrt2": "math",
+ "math.SqrtE": "math",
+ "math.SqrtPhi": "math",
+ "math.SqrtPi": "math",
+ "math.Tan": "math",
+ "math.Tanh": "math",
+ "math.Trunc": "math",
+ "math.Y0": "math",
+ "math.Y1": "math",
+ "math.Yn": "math",
+ "md5.BlockSize": "crypto/md5",
+ "md5.New": "crypto/md5",
+ "md5.Size": "crypto/md5",
+ "md5.Sum": "crypto/md5",
+ "mime.AddExtensionType": "mime",
+ "mime.BEncoding": "mime",
+ "mime.ExtensionsByType": "mime",
+ "mime.FormatMediaType": "mime",
+ "mime.ParseMediaType": "mime",
+ "mime.QEncoding": "mime",
+ "mime.TypeByExtension": "mime",
+ "mime.WordDecoder": "mime",
+ "mime.WordEncoder": "mime",
+ "multipart.File": "mime/multipart",
+ "multipart.FileHeader": "mime/multipart",
+ "multipart.Form": "mime/multipart",
+ "multipart.NewReader": "mime/multipart",
+ "multipart.NewWriter": "mime/multipart",
+ "multipart.Part": "mime/multipart",
+ "multipart.Reader": "mime/multipart",
+ "multipart.Writer": "mime/multipart",
+ "net.Addr": "net",
+ "net.AddrError": "net",
+ "net.Buffers": "net",
+ "net.CIDRMask": "net",
+ "net.Conn": "net",
+ "net.DNSConfigError": "net",
+ "net.DNSError": "net",
+ "net.DefaultResolver": "net",
+ "net.Dial": "net",
+ "net.DialIP": "net",
+ "net.DialTCP": "net",
+ "net.DialTimeout": "net",
+ "net.DialUDP": "net",
+ "net.DialUnix": "net",
+ "net.Dialer": "net",
+ "net.ErrWriteToConnected": "net",
+ "net.Error": "net",
+ "net.FileConn": "net",
+ "net.FileListener": "net",
+ "net.FilePacketConn": "net",
+ "net.FlagBroadcast": "net",
+ "net.FlagLoopback": "net",
+ "net.FlagMulticast": "net",
+ "net.FlagPointToPoint": "net",
+ "net.FlagUp": "net",
+ "net.Flags": "net",
+ "net.HardwareAddr": "net",
+ "net.IP": "net",
+ "net.IPAddr": "net",
+ "net.IPConn": "net",
+ "net.IPMask": "net",
+ "net.IPNet": "net",
+ "net.IPv4": "net",
+ "net.IPv4Mask": "net",
+ "net.IPv4allrouter": "net",
+ "net.IPv4allsys": "net",
+ "net.IPv4bcast": "net",
+ "net.IPv4len": "net",
+ "net.IPv4zero": "net",
+ "net.IPv6interfacelocalallnodes": "net",
+ "net.IPv6len": "net",
+ "net.IPv6linklocalallnodes": "net",
+ "net.IPv6linklocalallrouters": "net",
+ "net.IPv6loopback": "net",
+ "net.IPv6unspecified": "net",
+ "net.IPv6zero": "net",
+ "net.Interface": "net",
+ "net.InterfaceAddrs": "net",
+ "net.InterfaceByIndex": "net",
+ "net.InterfaceByName": "net",
+ "net.Interfaces": "net",
+ "net.InvalidAddrError": "net",
+ "net.JoinHostPort": "net",
+ "net.Listen": "net",
+ "net.ListenIP": "net",
+ "net.ListenMulticastUDP": "net",
+ "net.ListenPacket": "net",
+ "net.ListenTCP": "net",
+ "net.ListenUDP": "net",
+ "net.ListenUnix": "net",
+ "net.ListenUnixgram": "net",
+ "net.Listener": "net",
+ "net.LookupAddr": "net",
+ "net.LookupCNAME": "net",
+ "net.LookupHost": "net",
+ "net.LookupIP": "net",
+ "net.LookupMX": "net",
+ "net.LookupNS": "net",
+ "net.LookupPort": "net",
+ "net.LookupSRV": "net",
+ "net.LookupTXT": "net",
+ "net.MX": "net",
+ "net.NS": "net",
+ "net.OpError": "net",
+ "net.PacketConn": "net",
+ "net.ParseCIDR": "net",
+ "net.ParseError": "net",
+ "net.ParseIP": "net",
+ "net.ParseMAC": "net",
+ "net.Pipe": "net",
+ "net.ResolveIPAddr": "net",
+ "net.ResolveTCPAddr": "net",
+ "net.ResolveUDPAddr": "net",
+ "net.ResolveUnixAddr": "net",
+ "net.Resolver": "net",
+ "net.SRV": "net",
+ "net.SplitHostPort": "net",
+ "net.TCPAddr": "net",
+ "net.TCPConn": "net",
+ "net.TCPListener": "net",
+ "net.UDPAddr": "net",
+ "net.UDPConn": "net",
+ "net.UnixAddr": "net",
+ "net.UnixConn": "net",
+ "net.UnixListener": "net",
+ "net.UnknownNetworkError": "net",
+ "os.Args": "os",
+ "os.Chdir": "os",
+ "os.Chmod": "os",
+ "os.Chown": "os",
+ "os.Chtimes": "os",
+ "os.Clearenv": "os",
+ "os.Create": "os",
+ "os.DevNull": "os",
+ "os.Environ": "os",
+ "os.ErrClosed": "os",
+ "os.ErrExist": "os",
+ "os.ErrInvalid": "os",
+ "os.ErrNotExist": "os",
+ "os.ErrPermission": "os",
+ "os.Executable": "os",
+ "os.Exit": "os",
+ "os.Expand": "os",
+ "os.ExpandEnv": "os",
+ "os.File": "os",
+ "os.FileInfo": "os",
+ "os.FileMode": "os",
+ "os.FindProcess": "os",
+ "os.Getegid": "os",
+ "os.Getenv": "os",
+ "os.Geteuid": "os",
+ "os.Getgid": "os",
+ "os.Getgroups": "os",
+ "os.Getpagesize": "os",
+ "os.Getpid": "os",
+ "os.Getppid": "os",
+ "os.Getuid": "os",
+ "os.Getwd": "os",
+ "os.Hostname": "os",
+ "os.Interrupt": "os",
+ "os.IsExist": "os",
+ "os.IsNotExist": "os",
+ "os.IsPathSeparator": "os",
+ "os.IsPermission": "os",
+ "os.Kill": "os",
+ "os.Lchown": "os",
+ "os.Link": "os",
+ "os.LinkError": "os",
+ "os.LookupEnv": "os",
+ "os.Lstat": "os",
+ "os.Mkdir": "os",
+ "os.MkdirAll": "os",
+ "os.ModeAppend": "os",
+ "os.ModeCharDevice": "os",
+ "os.ModeDevice": "os",
+ "os.ModeDir": "os",
+ "os.ModeExclusive": "os",
+ "os.ModeNamedPipe": "os",
+ "os.ModePerm": "os",
+ "os.ModeSetgid": "os",
+ "os.ModeSetuid": "os",
+ "os.ModeSocket": "os",
+ "os.ModeSticky": "os",
+ "os.ModeSymlink": "os",
+ "os.ModeTemporary": "os",
+ "os.ModeType": "os",
+ "os.NewFile": "os",
+ "os.NewSyscallError": "os",
+ "os.O_APPEND": "os",
+ "os.O_CREATE": "os",
+ "os.O_EXCL": "os",
+ "os.O_RDONLY": "os",
+ "os.O_RDWR": "os",
+ "os.O_SYNC": "os",
+ "os.O_TRUNC": "os",
+ "os.O_WRONLY": "os",
+ "os.Open": "os",
+ "os.OpenFile": "os",
+ "os.PathError": "os",
+ "os.PathListSeparator": "os",
+ "os.PathSeparator": "os",
+ "os.Pipe": "os",
+ "os.ProcAttr": "os",
+ "os.Process": "os",
+ "os.ProcessState": "os",
+ "os.Readlink": "os",
+ "os.Remove": "os",
+ "os.RemoveAll": "os",
+ "os.Rename": "os",
+ "os.SEEK_CUR": "os",
+ "os.SEEK_END": "os",
+ "os.SEEK_SET": "os",
+ "os.SameFile": "os",
+ "os.Setenv": "os",
+ "os.Signal": "os",
+ "os.StartProcess": "os",
+ "os.Stat": "os",
+ "os.Stderr": "os",
+ "os.Stdin": "os",
+ "os.Stdout": "os",
+ "os.Symlink": "os",
+ "os.SyscallError": "os",
+ "os.TempDir": "os",
+ "os.Truncate": "os",
+ "os.Unsetenv": "os",
+ "palette.Plan9": "image/color/palette",
+ "palette.WebSafe": "image/color/palette",
+ "parse.ActionNode": "text/template/parse",
+ "parse.BoolNode": "text/template/parse",
+ "parse.BranchNode": "text/template/parse",
+ "parse.ChainNode": "text/template/parse",
+ "parse.CommandNode": "text/template/parse",
+ "parse.DotNode": "text/template/parse",
+ "parse.FieldNode": "text/template/parse",
+ "parse.IdentifierNode": "text/template/parse",
+ "parse.IfNode": "text/template/parse",
+ "parse.IsEmptyTree": "text/template/parse",
+ "parse.ListNode": "text/template/parse",
+ "parse.New": "text/template/parse",
+ "parse.NewIdentifier": "text/template/parse",
+ "parse.NilNode": "text/template/parse",
+ "parse.Node": "text/template/parse",
+ "parse.NodeAction": "text/template/parse",
+ "parse.NodeBool": "text/template/parse",
+ "parse.NodeChain": "text/template/parse",
+ "parse.NodeCommand": "text/template/parse",
+ "parse.NodeDot": "text/template/parse",
+ "parse.NodeField": "text/template/parse",
+ "parse.NodeIdentifier": "text/template/parse",
+ "parse.NodeIf": "text/template/parse",
+ "parse.NodeList": "text/template/parse",
+ "parse.NodeNil": "text/template/parse",
+ "parse.NodeNumber": "text/template/parse",
+ "parse.NodePipe": "text/template/parse",
+ "parse.NodeRange": "text/template/parse",
+ "parse.NodeString": "text/template/parse",
+ "parse.NodeTemplate": "text/template/parse",
+ "parse.NodeText": "text/template/parse",
+ "parse.NodeType": "text/template/parse",
+ "parse.NodeVariable": "text/template/parse",
+ "parse.NodeWith": "text/template/parse",
+ "parse.NumberNode": "text/template/parse",
+ "parse.Parse": "text/template/parse",
+ "parse.PipeNode": "text/template/parse",
+ "parse.Pos": "text/template/parse",
+ "parse.RangeNode": "text/template/parse",
+ "parse.StringNode": "text/template/parse",
+ "parse.TemplateNode": "text/template/parse",
+ "parse.TextNode": "text/template/parse",
+ "parse.Tree": "text/template/parse",
+ "parse.VariableNode": "text/template/parse",
+ "parse.WithNode": "text/template/parse",
+ "parser.AllErrors": "go/parser",
+ "parser.DeclarationErrors": "go/parser",
+ "parser.ImportsOnly": "go/parser",
+ "parser.Mode": "go/parser",
+ "parser.PackageClauseOnly": "go/parser",
+ "parser.ParseComments": "go/parser",
+ "parser.ParseDir": "go/parser",
+ "parser.ParseExpr": "go/parser",
+ "parser.ParseExprFrom": "go/parser",
+ "parser.ParseFile": "go/parser",
+ "parser.SpuriousErrors": "go/parser",
+ "parser.Trace": "go/parser",
+ "path.Base": "path",
+ "path.Clean": "path",
+ "path.Dir": "path",
+ "path.ErrBadPattern": "path",
+ "path.Ext": "path",
+ "path.IsAbs": "path",
+ "path.Join": "path",
+ "path.Match": "path",
+ "path.Split": "path",
+ "pe.COFFSymbol": "debug/pe",
+ "pe.COFFSymbolSize": "debug/pe",
+ "pe.DataDirectory": "debug/pe",
+ "pe.File": "debug/pe",
+ "pe.FileHeader": "debug/pe",
+ "pe.FormatError": "debug/pe",
+ "pe.IMAGE_FILE_MACHINE_AM33": "debug/pe",
+ "pe.IMAGE_FILE_MACHINE_AMD64": "debug/pe",
+ "pe.IMAGE_FILE_MACHINE_ARM": "debug/pe",
+ "pe.IMAGE_FILE_MACHINE_EBC": "debug/pe",
+ "pe.IMAGE_FILE_MACHINE_I386": "debug/pe",
+ "pe.IMAGE_FILE_MACHINE_IA64": "debug/pe",
+ "pe.IMAGE_FILE_MACHINE_M32R": "debug/pe",
+ "pe.IMAGE_FILE_MACHINE_MIPS16": "debug/pe",
+ "pe.IMAGE_FILE_MACHINE_MIPSFPU": "debug/pe",
+ "pe.IMAGE_FILE_MACHINE_MIPSFPU16": "debug/pe",
+ "pe.IMAGE_FILE_MACHINE_POWERPC": "debug/pe",
+ "pe.IMAGE_FILE_MACHINE_POWERPCFP": "debug/pe",
+ "pe.IMAGE_FILE_MACHINE_R4000": "debug/pe",
+ "pe.IMAGE_FILE_MACHINE_SH3": "debug/pe",
+ "pe.IMAGE_FILE_MACHINE_SH3DSP": "debug/pe",
+ "pe.IMAGE_FILE_MACHINE_SH4": "debug/pe",
+ "pe.IMAGE_FILE_MACHINE_SH5": "debug/pe",
+ "pe.IMAGE_FILE_MACHINE_THUMB": "debug/pe",
+ "pe.IMAGE_FILE_MACHINE_UNKNOWN": "debug/pe",
+ "pe.IMAGE_FILE_MACHINE_WCEMIPSV2": "debug/pe",
+ "pe.ImportDirectory": "debug/pe",
+ "pe.NewFile": "debug/pe",
+ "pe.Open": "debug/pe",
+ "pe.OptionalHeader32": "debug/pe",
+ "pe.OptionalHeader64": "debug/pe",
+ "pe.Reloc": "debug/pe",
+ "pe.Section": "debug/pe",
+ "pe.SectionHeader": "debug/pe",
+ "pe.SectionHeader32": "debug/pe",
+ "pe.StringTable": "debug/pe",
+ "pe.Symbol": "debug/pe",
+ "pem.Block": "encoding/pem",
+ "pem.Decode": "encoding/pem",
+ "pem.Encode": "encoding/pem",
+ "pem.EncodeToMemory": "encoding/pem",
+ "pkix.AlgorithmIdentifier": "crypto/x509/pkix",
+ "pkix.AttributeTypeAndValue": "crypto/x509/pkix",
+ "pkix.AttributeTypeAndValueSET": "crypto/x509/pkix",
+ "pkix.CertificateList": "crypto/x509/pkix",
+ "pkix.Extension": "crypto/x509/pkix",
+ "pkix.Name": "crypto/x509/pkix",
+ "pkix.RDNSequence": "crypto/x509/pkix",
+ "pkix.RelativeDistinguishedNameSET": "crypto/x509/pkix",
+ "pkix.RevokedCertificate": "crypto/x509/pkix",
+ "pkix.TBSCertificateList": "crypto/x509/pkix",
+ "plan9obj.File": "debug/plan9obj",
+ "plan9obj.FileHeader": "debug/plan9obj",
+ "plan9obj.Magic386": "debug/plan9obj",
+ "plan9obj.Magic64": "debug/plan9obj",
+ "plan9obj.MagicAMD64": "debug/plan9obj",
+ "plan9obj.MagicARM": "debug/plan9obj",
+ "plan9obj.NewFile": "debug/plan9obj",
+ "plan9obj.Open": "debug/plan9obj",
+ "plan9obj.Section": "debug/plan9obj",
+ "plan9obj.SectionHeader": "debug/plan9obj",
+ "plan9obj.Sym": "debug/plan9obj",
+ "plugin.Open": "plugin",
+ "plugin.Plugin": "plugin",
+ "plugin.Symbol": "plugin",
+ "png.BestCompression": "image/png",
+ "png.BestSpeed": "image/png",
+ "png.CompressionLevel": "image/png",
+ "png.Decode": "image/png",
+ "png.DecodeConfig": "image/png",
+ "png.DefaultCompression": "image/png",
+ "png.Encode": "image/png",
+ "png.Encoder": "image/png",
+ "png.FormatError": "image/png",
+ "png.NoCompression": "image/png",
+ "png.UnsupportedError": "image/png",
+ "pprof.Cmdline": "net/http/pprof",
+ "pprof.Handler": "net/http/pprof",
+ "pprof.Index": "net/http/pprof",
+ "pprof.Lookup": "runtime/pprof",
+ "pprof.NewProfile": "runtime/pprof",
+ // "pprof.Profile" is ambiguous
+ "pprof.Profiles": "runtime/pprof",
+ "pprof.StartCPUProfile": "runtime/pprof",
+ "pprof.StopCPUProfile": "runtime/pprof",
+ "pprof.Symbol": "net/http/pprof",
+ "pprof.Trace": "net/http/pprof",
+ "pprof.WriteHeapProfile": "runtime/pprof",
+ "printer.CommentedNode": "go/printer",
+ "printer.Config": "go/printer",
+ "printer.Fprint": "go/printer",
+ "printer.Mode": "go/printer",
+ "printer.RawFormat": "go/printer",
+ "printer.SourcePos": "go/printer",
+ "printer.TabIndent": "go/printer",
+ "printer.UseSpaces": "go/printer",
+ "quick.Check": "testing/quick",
+ "quick.CheckEqual": "testing/quick",
+ "quick.CheckEqualError": "testing/quick",
+ "quick.CheckError": "testing/quick",
+ "quick.Config": "testing/quick",
+ "quick.Generator": "testing/quick",
+ "quick.SetupError": "testing/quick",
+ "quick.Value": "testing/quick",
+ "quotedprintable.NewReader": "mime/quotedprintable",
+ "quotedprintable.NewWriter": "mime/quotedprintable",
+ "quotedprintable.Reader": "mime/quotedprintable",
+ "quotedprintable.Writer": "mime/quotedprintable",
+ "rand.ExpFloat64": "math/rand",
+ "rand.Float32": "math/rand",
+ "rand.Float64": "math/rand",
+ // "rand.Int" is ambiguous
+ "rand.Int31": "math/rand",
+ "rand.Int31n": "math/rand",
+ "rand.Int63": "math/rand",
+ "rand.Int63n": "math/rand",
+ "rand.Intn": "math/rand",
+ "rand.New": "math/rand",
+ "rand.NewSource": "math/rand",
+ "rand.NewZipf": "math/rand",
+ "rand.NormFloat64": "math/rand",
+ "rand.Perm": "math/rand",
+ "rand.Prime": "crypto/rand",
+ "rand.Rand": "math/rand",
+ // "rand.Read" is ambiguous
+ "rand.Reader": "crypto/rand",
+ "rand.Seed": "math/rand",
+ "rand.Source": "math/rand",
+ "rand.Source64": "math/rand",
+ "rand.Uint32": "math/rand",
+ "rand.Uint64": "math/rand",
+ "rand.Zipf": "math/rand",
+ "rc4.Cipher": "crypto/rc4",
+ "rc4.KeySizeError": "crypto/rc4",
+ "rc4.NewCipher": "crypto/rc4",
+ "reflect.Append": "reflect",
+ "reflect.AppendSlice": "reflect",
+ "reflect.Array": "reflect",
+ "reflect.ArrayOf": "reflect",
+ "reflect.Bool": "reflect",
+ "reflect.BothDir": "reflect",
+ "reflect.Chan": "reflect",
+ "reflect.ChanDir": "reflect",
+ "reflect.ChanOf": "reflect",
+ "reflect.Complex128": "reflect",
+ "reflect.Complex64": "reflect",
+ "reflect.Copy": "reflect",
+ "reflect.DeepEqual": "reflect",
+ "reflect.Float32": "reflect",
+ "reflect.Float64": "reflect",
+ "reflect.Func": "reflect",
+ "reflect.FuncOf": "reflect",
+ "reflect.Indirect": "reflect",
+ "reflect.Int": "reflect",
+ "reflect.Int16": "reflect",
+ "reflect.Int32": "reflect",
+ "reflect.Int64": "reflect",
+ "reflect.Int8": "reflect",
+ "reflect.Interface": "reflect",
+ "reflect.Invalid": "reflect",
+ "reflect.Kind": "reflect",
+ "reflect.MakeChan": "reflect",
+ "reflect.MakeFunc": "reflect",
+ "reflect.MakeMap": "reflect",
+ "reflect.MakeSlice": "reflect",
+ "reflect.Map": "reflect",
+ "reflect.MapOf": "reflect",
+ "reflect.Method": "reflect",
+ "reflect.New": "reflect",
+ "reflect.NewAt": "reflect",
+ "reflect.Ptr": "reflect",
+ "reflect.PtrTo": "reflect",
+ "reflect.RecvDir": "reflect",
+ "reflect.Select": "reflect",
+ "reflect.SelectCase": "reflect",
+ "reflect.SelectDefault": "reflect",
+ "reflect.SelectDir": "reflect",
+ "reflect.SelectRecv": "reflect",
+ "reflect.SelectSend": "reflect",
+ "reflect.SendDir": "reflect",
+ "reflect.Slice": "reflect",
+ "reflect.SliceHeader": "reflect",
+ "reflect.SliceOf": "reflect",
+ "reflect.String": "reflect",
+ "reflect.StringHeader": "reflect",
+ "reflect.Struct": "reflect",
+ "reflect.StructField": "reflect",
+ "reflect.StructOf": "reflect",
+ "reflect.StructTag": "reflect",
+ "reflect.Swapper": "reflect",
+ "reflect.TypeOf": "reflect",
+ "reflect.Uint": "reflect",
+ "reflect.Uint16": "reflect",
+ "reflect.Uint32": "reflect",
+ "reflect.Uint64": "reflect",
+ "reflect.Uint8": "reflect",
+ "reflect.Uintptr": "reflect",
+ "reflect.UnsafePointer": "reflect",
+ "reflect.Value": "reflect",
+ "reflect.ValueError": "reflect",
+ "reflect.ValueOf": "reflect",
+ "reflect.Zero": "reflect",
+ "regexp.Compile": "regexp",
+ "regexp.CompilePOSIX": "regexp",
+ "regexp.Match": "regexp",
+ "regexp.MatchReader": "regexp",
+ "regexp.MatchString": "regexp",
+ "regexp.MustCompile": "regexp",
+ "regexp.MustCompilePOSIX": "regexp",
+ "regexp.QuoteMeta": "regexp",
+ "regexp.Regexp": "regexp",
+ "ring.New": "container/ring",
+ "ring.Ring": "container/ring",
+ "rpc.Accept": "net/rpc",
+ "rpc.Call": "net/rpc",
+ "rpc.Client": "net/rpc",
+ "rpc.ClientCodec": "net/rpc",
+ "rpc.DefaultDebugPath": "net/rpc",
+ "rpc.DefaultRPCPath": "net/rpc",
+ "rpc.DefaultServer": "net/rpc",
+ "rpc.Dial": "net/rpc",
+ "rpc.DialHTTP": "net/rpc",
+ "rpc.DialHTTPPath": "net/rpc",
+ "rpc.ErrShutdown": "net/rpc",
+ "rpc.HandleHTTP": "net/rpc",
+ "rpc.NewClient": "net/rpc",
+ "rpc.NewClientWithCodec": "net/rpc",
+ "rpc.NewServer": "net/rpc",
+ "rpc.Register": "net/rpc",
+ "rpc.RegisterName": "net/rpc",
+ "rpc.Request": "net/rpc",
+ "rpc.Response": "net/rpc",
+ "rpc.ServeCodec": "net/rpc",
+ "rpc.ServeConn": "net/rpc",
+ "rpc.ServeRequest": "net/rpc",
+ "rpc.Server": "net/rpc",
+ "rpc.ServerCodec": "net/rpc",
+ "rpc.ServerError": "net/rpc",
+ "rsa.CRTValue": "crypto/rsa",
+ "rsa.DecryptOAEP": "crypto/rsa",
+ "rsa.DecryptPKCS1v15": "crypto/rsa",
+ "rsa.DecryptPKCS1v15SessionKey": "crypto/rsa",
+ "rsa.EncryptOAEP": "crypto/rsa",
+ "rsa.EncryptPKCS1v15": "crypto/rsa",
+ "rsa.ErrDecryption": "crypto/rsa",
+ "rsa.ErrMessageTooLong": "crypto/rsa",
+ "rsa.ErrVerification": "crypto/rsa",
+ "rsa.GenerateKey": "crypto/rsa",
+ "rsa.GenerateMultiPrimeKey": "crypto/rsa",
+ "rsa.OAEPOptions": "crypto/rsa",
+ "rsa.PKCS1v15DecryptOptions": "crypto/rsa",
+ "rsa.PSSOptions": "crypto/rsa",
+ "rsa.PSSSaltLengthAuto": "crypto/rsa",
+ "rsa.PSSSaltLengthEqualsHash": "crypto/rsa",
+ "rsa.PrecomputedValues": "crypto/rsa",
+ "rsa.PrivateKey": "crypto/rsa",
+ "rsa.PublicKey": "crypto/rsa",
+ "rsa.SignPKCS1v15": "crypto/rsa",
+ "rsa.SignPSS": "crypto/rsa",
+ "rsa.VerifyPKCS1v15": "crypto/rsa",
+ "rsa.VerifyPSS": "crypto/rsa",
+ "runtime.BlockProfile": "runtime",
+ "runtime.BlockProfileRecord": "runtime",
+ "runtime.Breakpoint": "runtime",
+ "runtime.CPUProfile": "runtime",
+ "runtime.Caller": "runtime",
+ "runtime.Callers": "runtime",
+ "runtime.CallersFrames": "runtime",
+ "runtime.Compiler": "runtime",
+ "runtime.Error": "runtime",
+ "runtime.Frame": "runtime",
+ "runtime.Frames": "runtime",
+ "runtime.Func": "runtime",
+ "runtime.FuncForPC": "runtime",
+ "runtime.GC": "runtime",
+ "runtime.GOARCH": "runtime",
+ "runtime.GOMAXPROCS": "runtime",
+ "runtime.GOOS": "runtime",
+ "runtime.GOROOT": "runtime",
+ "runtime.Goexit": "runtime",
+ "runtime.GoroutineProfile": "runtime",
+ "runtime.Gosched": "runtime",
+ "runtime.KeepAlive": "runtime",
+ "runtime.LockOSThread": "runtime",
+ "runtime.MemProfile": "runtime",
+ "runtime.MemProfileRate": "runtime",
+ "runtime.MemProfileRecord": "runtime",
+ "runtime.MemStats": "runtime",
+ "runtime.MutexProfile": "runtime",
+ "runtime.NumCPU": "runtime",
+ "runtime.NumCgoCall": "runtime",
+ "runtime.NumGoroutine": "runtime",
+ "runtime.ReadMemStats": "runtime",
+ "runtime.ReadTrace": "runtime",
+ "runtime.SetBlockProfileRate": "runtime",
+ "runtime.SetCPUProfileRate": "runtime",
+ "runtime.SetCgoTraceback": "runtime",
+ "runtime.SetFinalizer": "runtime",
+ "runtime.SetMutexProfileFraction": "runtime",
+ "runtime.Stack": "runtime",
+ "runtime.StackRecord": "runtime",
+ "runtime.StartTrace": "runtime",
+ "runtime.StopTrace": "runtime",
+ "runtime.ThreadCreateProfile": "runtime",
+ "runtime.TypeAssertionError": "runtime",
+ "runtime.UnlockOSThread": "runtime",
+ "runtime.Version": "runtime",
+ "scanner.Char": "text/scanner",
+ "scanner.Comment": "text/scanner",
+ "scanner.EOF": "text/scanner",
+ "scanner.Error": "go/scanner",
+ "scanner.ErrorHandler": "go/scanner",
+ "scanner.ErrorList": "go/scanner",
+ "scanner.Float": "text/scanner",
+ "scanner.GoTokens": "text/scanner",
+ "scanner.GoWhitespace": "text/scanner",
+ "scanner.Ident": "text/scanner",
+ "scanner.Int": "text/scanner",
+ "scanner.Mode": "go/scanner",
+ "scanner.Position": "text/scanner",
+ "scanner.PrintError": "go/scanner",
+ "scanner.RawString": "text/scanner",
+ "scanner.ScanChars": "text/scanner",
+ // "scanner.ScanComments" is ambiguous
+ "scanner.ScanFloats": "text/scanner",
+ "scanner.ScanIdents": "text/scanner",
+ "scanner.ScanInts": "text/scanner",
+ "scanner.ScanRawStrings": "text/scanner",
+ "scanner.ScanStrings": "text/scanner",
+ // "scanner.Scanner" is ambiguous
+ "scanner.SkipComments": "text/scanner",
+ "scanner.String": "text/scanner",
+ "scanner.TokenString": "text/scanner",
+ "sha1.BlockSize": "crypto/sha1",
+ "sha1.New": "crypto/sha1",
+ "sha1.Size": "crypto/sha1",
+ "sha1.Sum": "crypto/sha1",
+ "sha256.BlockSize": "crypto/sha256",
+ "sha256.New": "crypto/sha256",
+ "sha256.New224": "crypto/sha256",
+ "sha256.Size": "crypto/sha256",
+ "sha256.Size224": "crypto/sha256",
+ "sha256.Sum224": "crypto/sha256",
+ "sha256.Sum256": "crypto/sha256",
+ "sha512.BlockSize": "crypto/sha512",
+ "sha512.New": "crypto/sha512",
+ "sha512.New384": "crypto/sha512",
+ "sha512.New512_224": "crypto/sha512",
+ "sha512.New512_256": "crypto/sha512",
+ "sha512.Size": "crypto/sha512",
+ "sha512.Size224": "crypto/sha512",
+ "sha512.Size256": "crypto/sha512",
+ "sha512.Size384": "crypto/sha512",
+ "sha512.Sum384": "crypto/sha512",
+ "sha512.Sum512": "crypto/sha512",
+ "sha512.Sum512_224": "crypto/sha512",
+ "sha512.Sum512_256": "crypto/sha512",
+ "signal.Ignore": "os/signal",
+ "signal.Notify": "os/signal",
+ "signal.Reset": "os/signal",
+ "signal.Stop": "os/signal",
+ "smtp.Auth": "net/smtp",
+ "smtp.CRAMMD5Auth": "net/smtp",
+ "smtp.Client": "net/smtp",
+ "smtp.Dial": "net/smtp",
+ "smtp.NewClient": "net/smtp",
+ "smtp.PlainAuth": "net/smtp",
+ "smtp.SendMail": "net/smtp",
+ "smtp.ServerInfo": "net/smtp",
+ "sort.Float64Slice": "sort",
+ "sort.Float64s": "sort",
+ "sort.Float64sAreSorted": "sort",
+ "sort.IntSlice": "sort",
+ "sort.Interface": "sort",
+ "sort.Ints": "sort",
+ "sort.IntsAreSorted": "sort",
+ "sort.IsSorted": "sort",
+ "sort.Reverse": "sort",
+ "sort.Search": "sort",
+ "sort.SearchFloat64s": "sort",
+ "sort.SearchInts": "sort",
+ "sort.SearchStrings": "sort",
+ "sort.Slice": "sort",
+ "sort.SliceIsSorted": "sort",
+ "sort.SliceStable": "sort",
+ "sort.Sort": "sort",
+ "sort.Stable": "sort",
+ "sort.StringSlice": "sort",
+ "sort.Strings": "sort",
+ "sort.StringsAreSorted": "sort",
+ "sql.ColumnType": "database/sql",
+ "sql.DB": "database/sql",
+ "sql.DBStats": "database/sql",
+ "sql.Drivers": "database/sql",
+ "sql.ErrNoRows": "database/sql",
+ "sql.ErrTxDone": "database/sql",
+ "sql.IsolationLevel": "database/sql",
+ "sql.LevelDefault": "database/sql",
+ "sql.LevelLinearizable": "database/sql",
+ "sql.LevelReadCommitted": "database/sql",
+ "sql.LevelReadUncommitted": "database/sql",
+ "sql.LevelRepeatableRead": "database/sql",
+ "sql.LevelSerializable": "database/sql",
+ "sql.LevelSnapshot": "database/sql",
+ "sql.LevelWriteCommitted": "database/sql",
+ "sql.Named": "database/sql",
+ "sql.NamedArg": "database/sql",
+ "sql.NullBool": "database/sql",
+ "sql.NullFloat64": "database/sql",
+ "sql.NullInt64": "database/sql",
+ "sql.NullString": "database/sql",
+ "sql.Open": "database/sql",
+ "sql.RawBytes": "database/sql",
+ "sql.Register": "database/sql",
+ "sql.Result": "database/sql",
+ "sql.Row": "database/sql",
+ "sql.Rows": "database/sql",
+ "sql.Scanner": "database/sql",
+ "sql.Stmt": "database/sql",
+ "sql.Tx": "database/sql",
+ "sql.TxOptions": "database/sql",
+ "strconv.AppendBool": "strconv",
+ "strconv.AppendFloat": "strconv",
+ "strconv.AppendInt": "strconv",
+ "strconv.AppendQuote": "strconv",
+ "strconv.AppendQuoteRune": "strconv",
+ "strconv.AppendQuoteRuneToASCII": "strconv",
+ "strconv.AppendQuoteRuneToGraphic": "strconv",
+ "strconv.AppendQuoteToASCII": "strconv",
+ "strconv.AppendQuoteToGraphic": "strconv",
+ "strconv.AppendUint": "strconv",
+ "strconv.Atoi": "strconv",
+ "strconv.CanBackquote": "strconv",
+ "strconv.ErrRange": "strconv",
+ "strconv.ErrSyntax": "strconv",
+ "strconv.FormatBool": "strconv",
+ "strconv.FormatFloat": "strconv",
+ "strconv.FormatInt": "strconv",
+ "strconv.FormatUint": "strconv",
+ "strconv.IntSize": "strconv",
+ "strconv.IsGraphic": "strconv",
+ "strconv.IsPrint": "strconv",
+ "strconv.Itoa": "strconv",
+ "strconv.NumError": "strconv",
+ "strconv.ParseBool": "strconv",
+ "strconv.ParseFloat": "strconv",
+ "strconv.ParseInt": "strconv",
+ "strconv.ParseUint": "strconv",
+ "strconv.Quote": "strconv",
+ "strconv.QuoteRune": "strconv",
+ "strconv.QuoteRuneToASCII": "strconv",
+ "strconv.QuoteRuneToGraphic": "strconv",
+ "strconv.QuoteToASCII": "strconv",
+ "strconv.QuoteToGraphic": "strconv",
+ "strconv.Unquote": "strconv",
+ "strconv.UnquoteChar": "strconv",
+ "strings.Compare": "strings",
+ "strings.Contains": "strings",
+ "strings.ContainsAny": "strings",
+ "strings.ContainsRune": "strings",
+ "strings.Count": "strings",
+ "strings.EqualFold": "strings",
+ "strings.Fields": "strings",
+ "strings.FieldsFunc": "strings",
+ "strings.HasPrefix": "strings",
+ "strings.HasSuffix": "strings",
+ "strings.Index": "strings",
+ "strings.IndexAny": "strings",
+ "strings.IndexByte": "strings",
+ "strings.IndexFunc": "strings",
+ "strings.IndexRune": "strings",
+ "strings.Join": "strings",
+ "strings.LastIndex": "strings",
+ "strings.LastIndexAny": "strings",
+ "strings.LastIndexByte": "strings",
+ "strings.LastIndexFunc": "strings",
+ "strings.Map": "strings",
+ "strings.NewReader": "strings",
+ "strings.NewReplacer": "strings",
+ "strings.Reader": "strings",
+ "strings.Repeat": "strings",
+ "strings.Replace": "strings",
+ "strings.Replacer": "strings",
+ "strings.Split": "strings",
+ "strings.SplitAfter": "strings",
+ "strings.SplitAfterN": "strings",
+ "strings.SplitN": "strings",
+ "strings.Title": "strings",
+ "strings.ToLower": "strings",
+ "strings.ToLowerSpecial": "strings",
+ "strings.ToTitle": "strings",
+ "strings.ToTitleSpecial": "strings",
+ "strings.ToUpper": "strings",
+ "strings.ToUpperSpecial": "strings",
+ "strings.Trim": "strings",
+ "strings.TrimFunc": "strings",
+ "strings.TrimLeft": "strings",
+ "strings.TrimLeftFunc": "strings",
+ "strings.TrimPrefix": "strings",
+ "strings.TrimRight": "strings",
+ "strings.TrimRightFunc": "strings",
+ "strings.TrimSpace": "strings",
+ "strings.TrimSuffix": "strings",
+ "subtle.ConstantTimeByteEq": "crypto/subtle",
+ "subtle.ConstantTimeCompare": "crypto/subtle",
+ "subtle.ConstantTimeCopy": "crypto/subtle",
+ "subtle.ConstantTimeEq": "crypto/subtle",
+ "subtle.ConstantTimeLessOrEq": "crypto/subtle",
+ "subtle.ConstantTimeSelect": "crypto/subtle",
+ "suffixarray.Index": "index/suffixarray",
+ "suffixarray.New": "index/suffixarray",
+ "sync.Cond": "sync",
+ "sync.Locker": "sync",
+ "sync.Mutex": "sync",
+ "sync.NewCond": "sync",
+ "sync.Once": "sync",
+ "sync.Pool": "sync",
+ "sync.RWMutex": "sync",
+ "sync.WaitGroup": "sync",
+ "syntax.ClassNL": "regexp/syntax",
+ "syntax.Compile": "regexp/syntax",
+ "syntax.DotNL": "regexp/syntax",
+ "syntax.EmptyBeginLine": "regexp/syntax",
+ "syntax.EmptyBeginText": "regexp/syntax",
+ "syntax.EmptyEndLine": "regexp/syntax",
+ "syntax.EmptyEndText": "regexp/syntax",
+ "syntax.EmptyNoWordBoundary": "regexp/syntax",
+ "syntax.EmptyOp": "regexp/syntax",
+ "syntax.EmptyOpContext": "regexp/syntax",
+ "syntax.EmptyWordBoundary": "regexp/syntax",
+ "syntax.ErrInternalError": "regexp/syntax",
+ "syntax.ErrInvalidCharClass": "regexp/syntax",
+ "syntax.ErrInvalidCharRange": "regexp/syntax",
+ "syntax.ErrInvalidEscape": "regexp/syntax",
+ "syntax.ErrInvalidNamedCapture": "regexp/syntax",
+ "syntax.ErrInvalidPerlOp": "regexp/syntax",
+ "syntax.ErrInvalidRepeatOp": "regexp/syntax",
+ "syntax.ErrInvalidRepeatSize": "regexp/syntax",
+ "syntax.ErrInvalidUTF8": "regexp/syntax",
+ "syntax.ErrMissingBracket": "regexp/syntax",
+ "syntax.ErrMissingParen": "regexp/syntax",
+ "syntax.ErrMissingRepeatArgument": "regexp/syntax",
+ "syntax.ErrTrailingBackslash": "regexp/syntax",
+ "syntax.ErrUnexpectedParen": "regexp/syntax",
+ "syntax.Error": "regexp/syntax",
+ "syntax.ErrorCode": "regexp/syntax",
+ "syntax.Flags": "regexp/syntax",
+ "syntax.FoldCase": "regexp/syntax",
+ "syntax.Inst": "regexp/syntax",
+ "syntax.InstAlt": "regexp/syntax",
+ "syntax.InstAltMatch": "regexp/syntax",
+ "syntax.InstCapture": "regexp/syntax",
+ "syntax.InstEmptyWidth": "regexp/syntax",
+ "syntax.InstFail": "regexp/syntax",
+ "syntax.InstMatch": "regexp/syntax",
+ "syntax.InstNop": "regexp/syntax",
+ "syntax.InstOp": "regexp/syntax",
+ "syntax.InstRune": "regexp/syntax",
+ "syntax.InstRune1": "regexp/syntax",
+ "syntax.InstRuneAny": "regexp/syntax",
+ "syntax.InstRuneAnyNotNL": "regexp/syntax",
+ "syntax.IsWordChar": "regexp/syntax",
+ "syntax.Literal": "regexp/syntax",
+ "syntax.MatchNL": "regexp/syntax",
+ "syntax.NonGreedy": "regexp/syntax",
+ "syntax.OneLine": "regexp/syntax",
+ "syntax.Op": "regexp/syntax",
+ "syntax.OpAlternate": "regexp/syntax",
+ "syntax.OpAnyChar": "regexp/syntax",
+ "syntax.OpAnyCharNotNL": "regexp/syntax",
+ "syntax.OpBeginLine": "regexp/syntax",
+ "syntax.OpBeginText": "regexp/syntax",
+ "syntax.OpCapture": "regexp/syntax",
+ "syntax.OpCharClass": "regexp/syntax",
+ "syntax.OpConcat": "regexp/syntax",
+ "syntax.OpEmptyMatch": "regexp/syntax",
+ "syntax.OpEndLine": "regexp/syntax",
+ "syntax.OpEndText": "regexp/syntax",
+ "syntax.OpLiteral": "regexp/syntax",
+ "syntax.OpNoMatch": "regexp/syntax",
+ "syntax.OpNoWordBoundary": "regexp/syntax",
+ "syntax.OpPlus": "regexp/syntax",
+ "syntax.OpQuest": "regexp/syntax",
+ "syntax.OpRepeat": "regexp/syntax",
+ "syntax.OpStar": "regexp/syntax",
+ "syntax.OpWordBoundary": "regexp/syntax",
+ "syntax.POSIX": "regexp/syntax",
+ "syntax.Parse": "regexp/syntax",
+ "syntax.Perl": "regexp/syntax",
+ "syntax.PerlX": "regexp/syntax",
+ "syntax.Prog": "regexp/syntax",
+ "syntax.Regexp": "regexp/syntax",
+ "syntax.Simple": "regexp/syntax",
+ "syntax.UnicodeGroups": "regexp/syntax",
+ "syntax.WasDollar": "regexp/syntax",
+ "syscall.AF_ALG": "syscall",
+ "syscall.AF_APPLETALK": "syscall",
+ "syscall.AF_ARP": "syscall",
+ "syscall.AF_ASH": "syscall",
+ "syscall.AF_ATM": "syscall",
+ "syscall.AF_ATMPVC": "syscall",
+ "syscall.AF_ATMSVC": "syscall",
+ "syscall.AF_AX25": "syscall",
+ "syscall.AF_BLUETOOTH": "syscall",
+ "syscall.AF_BRIDGE": "syscall",
+ "syscall.AF_CAIF": "syscall",
+ "syscall.AF_CAN": "syscall",
+ "syscall.AF_CCITT": "syscall",
+ "syscall.AF_CHAOS": "syscall",
+ "syscall.AF_CNT": "syscall",
+ "syscall.AF_COIP": "syscall",
+ "syscall.AF_DATAKIT": "syscall",
+ "syscall.AF_DECnet": "syscall",
+ "syscall.AF_DLI": "syscall",
+ "syscall.AF_E164": "syscall",
+ "syscall.AF_ECMA": "syscall",
+ "syscall.AF_ECONET": "syscall",
+ "syscall.AF_ENCAP": "syscall",
+ "syscall.AF_FILE": "syscall",
+ "syscall.AF_HYLINK": "syscall",
+ "syscall.AF_IEEE80211": "syscall",
+ "syscall.AF_IEEE802154": "syscall",
+ "syscall.AF_IMPLINK": "syscall",
+ "syscall.AF_INET": "syscall",
+ "syscall.AF_INET6": "syscall",
+ "syscall.AF_INET6_SDP": "syscall",
+ "syscall.AF_INET_SDP": "syscall",
+ "syscall.AF_IPX": "syscall",
+ "syscall.AF_IRDA": "syscall",
+ "syscall.AF_ISDN": "syscall",
+ "syscall.AF_ISO": "syscall",
+ "syscall.AF_IUCV": "syscall",
+ "syscall.AF_KEY": "syscall",
+ "syscall.AF_LAT": "syscall",
+ "syscall.AF_LINK": "syscall",
+ "syscall.AF_LLC": "syscall",
+ "syscall.AF_LOCAL": "syscall",
+ "syscall.AF_MAX": "syscall",
+ "syscall.AF_MPLS": "syscall",
+ "syscall.AF_NATM": "syscall",
+ "syscall.AF_NDRV": "syscall",
+ "syscall.AF_NETBEUI": "syscall",
+ "syscall.AF_NETBIOS": "syscall",
+ "syscall.AF_NETGRAPH": "syscall",
+ "syscall.AF_NETLINK": "syscall",
+ "syscall.AF_NETROM": "syscall",
+ "syscall.AF_NS": "syscall",
+ "syscall.AF_OROUTE": "syscall",
+ "syscall.AF_OSI": "syscall",
+ "syscall.AF_PACKET": "syscall",
+ "syscall.AF_PHONET": "syscall",
+ "syscall.AF_PPP": "syscall",
+ "syscall.AF_PPPOX": "syscall",
+ "syscall.AF_PUP": "syscall",
+ "syscall.AF_RDS": "syscall",
+ "syscall.AF_RESERVED_36": "syscall",
+ "syscall.AF_ROSE": "syscall",
+ "syscall.AF_ROUTE": "syscall",
+ "syscall.AF_RXRPC": "syscall",
+ "syscall.AF_SCLUSTER": "syscall",
+ "syscall.AF_SECURITY": "syscall",
+ "syscall.AF_SIP": "syscall",
+ "syscall.AF_SLOW": "syscall",
+ "syscall.AF_SNA": "syscall",
+ "syscall.AF_SYSTEM": "syscall",
+ "syscall.AF_TIPC": "syscall",
+ "syscall.AF_UNIX": "syscall",
+ "syscall.AF_UNSPEC": "syscall",
+ "syscall.AF_VENDOR00": "syscall",
+ "syscall.AF_VENDOR01": "syscall",
+ "syscall.AF_VENDOR02": "syscall",
+ "syscall.AF_VENDOR03": "syscall",
+ "syscall.AF_VENDOR04": "syscall",
+ "syscall.AF_VENDOR05": "syscall",
+ "syscall.AF_VENDOR06": "syscall",
+ "syscall.AF_VENDOR07": "syscall",
+ "syscall.AF_VENDOR08": "syscall",
+ "syscall.AF_VENDOR09": "syscall",
+ "syscall.AF_VENDOR10": "syscall",
+ "syscall.AF_VENDOR11": "syscall",
+ "syscall.AF_VENDOR12": "syscall",
+ "syscall.AF_VENDOR13": "syscall",
+ "syscall.AF_VENDOR14": "syscall",
+ "syscall.AF_VENDOR15": "syscall",
+ "syscall.AF_VENDOR16": "syscall",
+ "syscall.AF_VENDOR17": "syscall",
+ "syscall.AF_VENDOR18": "syscall",
+ "syscall.AF_VENDOR19": "syscall",
+ "syscall.AF_VENDOR20": "syscall",
+ "syscall.AF_VENDOR21": "syscall",
+ "syscall.AF_VENDOR22": "syscall",
+ "syscall.AF_VENDOR23": "syscall",
+ "syscall.AF_VENDOR24": "syscall",
+ "syscall.AF_VENDOR25": "syscall",
+ "syscall.AF_VENDOR26": "syscall",
+ "syscall.AF_VENDOR27": "syscall",
+ "syscall.AF_VENDOR28": "syscall",
+ "syscall.AF_VENDOR29": "syscall",
+ "syscall.AF_VENDOR30": "syscall",
+ "syscall.AF_VENDOR31": "syscall",
+ "syscall.AF_VENDOR32": "syscall",
+ "syscall.AF_VENDOR33": "syscall",
+ "syscall.AF_VENDOR34": "syscall",
+ "syscall.AF_VENDOR35": "syscall",
+ "syscall.AF_VENDOR36": "syscall",
+ "syscall.AF_VENDOR37": "syscall",
+ "syscall.AF_VENDOR38": "syscall",
+ "syscall.AF_VENDOR39": "syscall",
+ "syscall.AF_VENDOR40": "syscall",
+ "syscall.AF_VENDOR41": "syscall",
+ "syscall.AF_VENDOR42": "syscall",
+ "syscall.AF_VENDOR43": "syscall",
+ "syscall.AF_VENDOR44": "syscall",
+ "syscall.AF_VENDOR45": "syscall",
+ "syscall.AF_VENDOR46": "syscall",
+ "syscall.AF_VENDOR47": "syscall",
+ "syscall.AF_WANPIPE": "syscall",
+ "syscall.AF_X25": "syscall",
+ "syscall.AI_CANONNAME": "syscall",
+ "syscall.AI_NUMERICHOST": "syscall",
+ "syscall.AI_PASSIVE": "syscall",
+ "syscall.APPLICATION_ERROR": "syscall",
+ "syscall.ARPHRD_ADAPT": "syscall",
+ "syscall.ARPHRD_APPLETLK": "syscall",
+ "syscall.ARPHRD_ARCNET": "syscall",
+ "syscall.ARPHRD_ASH": "syscall",
+ "syscall.ARPHRD_ATM": "syscall",
+ "syscall.ARPHRD_AX25": "syscall",
+ "syscall.ARPHRD_BIF": "syscall",
+ "syscall.ARPHRD_CHAOS": "syscall",
+ "syscall.ARPHRD_CISCO": "syscall",
+ "syscall.ARPHRD_CSLIP": "syscall",
+ "syscall.ARPHRD_CSLIP6": "syscall",
+ "syscall.ARPHRD_DDCMP": "syscall",
+ "syscall.ARPHRD_DLCI": "syscall",
+ "syscall.ARPHRD_ECONET": "syscall",
+ "syscall.ARPHRD_EETHER": "syscall",
+ "syscall.ARPHRD_ETHER": "syscall",
+ "syscall.ARPHRD_EUI64": "syscall",
+ "syscall.ARPHRD_FCAL": "syscall",
+ "syscall.ARPHRD_FCFABRIC": "syscall",
+ "syscall.ARPHRD_FCPL": "syscall",
+ "syscall.ARPHRD_FCPP": "syscall",
+ "syscall.ARPHRD_FDDI": "syscall",
+ "syscall.ARPHRD_FRAD": "syscall",
+ "syscall.ARPHRD_FRELAY": "syscall",
+ "syscall.ARPHRD_HDLC": "syscall",
+ "syscall.ARPHRD_HIPPI": "syscall",
+ "syscall.ARPHRD_HWX25": "syscall",
+ "syscall.ARPHRD_IEEE1394": "syscall",
+ "syscall.ARPHRD_IEEE802": "syscall",
+ "syscall.ARPHRD_IEEE80211": "syscall",
+ "syscall.ARPHRD_IEEE80211_PRISM": "syscall",
+ "syscall.ARPHRD_IEEE80211_RADIOTAP": "syscall",
+ "syscall.ARPHRD_IEEE802154": "syscall",
+ "syscall.ARPHRD_IEEE802154_PHY": "syscall",
+ "syscall.ARPHRD_IEEE802_TR": "syscall",
+ "syscall.ARPHRD_INFINIBAND": "syscall",
+ "syscall.ARPHRD_IPDDP": "syscall",
+ "syscall.ARPHRD_IPGRE": "syscall",
+ "syscall.ARPHRD_IRDA": "syscall",
+ "syscall.ARPHRD_LAPB": "syscall",
+ "syscall.ARPHRD_LOCALTLK": "syscall",
+ "syscall.ARPHRD_LOOPBACK": "syscall",
+ "syscall.ARPHRD_METRICOM": "syscall",
+ "syscall.ARPHRD_NETROM": "syscall",
+ "syscall.ARPHRD_NONE": "syscall",
+ "syscall.ARPHRD_PIMREG": "syscall",
+ "syscall.ARPHRD_PPP": "syscall",
+ "syscall.ARPHRD_PRONET": "syscall",
+ "syscall.ARPHRD_RAWHDLC": "syscall",
+ "syscall.ARPHRD_ROSE": "syscall",
+ "syscall.ARPHRD_RSRVD": "syscall",
+ "syscall.ARPHRD_SIT": "syscall",
+ "syscall.ARPHRD_SKIP": "syscall",
+ "syscall.ARPHRD_SLIP": "syscall",
+ "syscall.ARPHRD_SLIP6": "syscall",
+ "syscall.ARPHRD_STRIP": "syscall",
+ "syscall.ARPHRD_TUNNEL": "syscall",
+ "syscall.ARPHRD_TUNNEL6": "syscall",
+ "syscall.ARPHRD_VOID": "syscall",
+ "syscall.ARPHRD_X25": "syscall",
+ "syscall.AUTHTYPE_CLIENT": "syscall",
+ "syscall.AUTHTYPE_SERVER": "syscall",
+ "syscall.Accept": "syscall",
+ "syscall.Accept4": "syscall",
+ "syscall.AcceptEx": "syscall",
+ "syscall.Access": "syscall",
+ "syscall.Acct": "syscall",
+ "syscall.AddrinfoW": "syscall",
+ "syscall.Adjtime": "syscall",
+ "syscall.Adjtimex": "syscall",
+ "syscall.AttachLsf": "syscall",
+ "syscall.B0": "syscall",
+ "syscall.B1000000": "syscall",
+ "syscall.B110": "syscall",
+ "syscall.B115200": "syscall",
+ "syscall.B1152000": "syscall",
+ "syscall.B1200": "syscall",
+ "syscall.B134": "syscall",
+ "syscall.B14400": "syscall",
+ "syscall.B150": "syscall",
+ "syscall.B1500000": "syscall",
+ "syscall.B1800": "syscall",
+ "syscall.B19200": "syscall",
+ "syscall.B200": "syscall",
+ "syscall.B2000000": "syscall",
+ "syscall.B230400": "syscall",
+ "syscall.B2400": "syscall",
+ "syscall.B2500000": "syscall",
+ "syscall.B28800": "syscall",
+ "syscall.B300": "syscall",
+ "syscall.B3000000": "syscall",
+ "syscall.B3500000": "syscall",
+ "syscall.B38400": "syscall",
+ "syscall.B4000000": "syscall",
+ "syscall.B460800": "syscall",
+ "syscall.B4800": "syscall",
+ "syscall.B50": "syscall",
+ "syscall.B500000": "syscall",
+ "syscall.B57600": "syscall",
+ "syscall.B576000": "syscall",
+ "syscall.B600": "syscall",
+ "syscall.B7200": "syscall",
+ "syscall.B75": "syscall",
+ "syscall.B76800": "syscall",
+ "syscall.B921600": "syscall",
+ "syscall.B9600": "syscall",
+ "syscall.BASE_PROTOCOL": "syscall",
+ "syscall.BIOCFEEDBACK": "syscall",
+ "syscall.BIOCFLUSH": "syscall",
+ "syscall.BIOCGBLEN": "syscall",
+ "syscall.BIOCGDIRECTION": "syscall",
+ "syscall.BIOCGDIRFILT": "syscall",
+ "syscall.BIOCGDLT": "syscall",
+ "syscall.BIOCGDLTLIST": "syscall",
+ "syscall.BIOCGETBUFMODE": "syscall",
+ "syscall.BIOCGETIF": "syscall",
+ "syscall.BIOCGETZMAX": "syscall",
+ "syscall.BIOCGFEEDBACK": "syscall",
+ "syscall.BIOCGFILDROP": "syscall",
+ "syscall.BIOCGHDRCMPLT": "syscall",
+ "syscall.BIOCGRSIG": "syscall",
+ "syscall.BIOCGRTIMEOUT": "syscall",
+ "syscall.BIOCGSEESENT": "syscall",
+ "syscall.BIOCGSTATS": "syscall",
+ "syscall.BIOCGSTATSOLD": "syscall",
+ "syscall.BIOCGTSTAMP": "syscall",
+ "syscall.BIOCIMMEDIATE": "syscall",
+ "syscall.BIOCLOCK": "syscall",
+ "syscall.BIOCPROMISC": "syscall",
+ "syscall.BIOCROTZBUF": "syscall",
+ "syscall.BIOCSBLEN": "syscall",
+ "syscall.BIOCSDIRECTION": "syscall",
+ "syscall.BIOCSDIRFILT": "syscall",
+ "syscall.BIOCSDLT": "syscall",
+ "syscall.BIOCSETBUFMODE": "syscall",
+ "syscall.BIOCSETF": "syscall",
+ "syscall.BIOCSETFNR": "syscall",
+ "syscall.BIOCSETIF": "syscall",
+ "syscall.BIOCSETWF": "syscall",
+ "syscall.BIOCSETZBUF": "syscall",
+ "syscall.BIOCSFEEDBACK": "syscall",
+ "syscall.BIOCSFILDROP": "syscall",
+ "syscall.BIOCSHDRCMPLT": "syscall",
+ "syscall.BIOCSRSIG": "syscall",
+ "syscall.BIOCSRTIMEOUT": "syscall",
+ "syscall.BIOCSSEESENT": "syscall",
+ "syscall.BIOCSTCPF": "syscall",
+ "syscall.BIOCSTSTAMP": "syscall",
+ "syscall.BIOCSUDPF": "syscall",
+ "syscall.BIOCVERSION": "syscall",
+ "syscall.BPF_A": "syscall",
+ "syscall.BPF_ABS": "syscall",
+ "syscall.BPF_ADD": "syscall",
+ "syscall.BPF_ALIGNMENT": "syscall",
+ "syscall.BPF_ALIGNMENT32": "syscall",
+ "syscall.BPF_ALU": "syscall",
+ "syscall.BPF_AND": "syscall",
+ "syscall.BPF_B": "syscall",
+ "syscall.BPF_BUFMODE_BUFFER": "syscall",
+ "syscall.BPF_BUFMODE_ZBUF": "syscall",
+ "syscall.BPF_DFLTBUFSIZE": "syscall",
+ "syscall.BPF_DIRECTION_IN": "syscall",
+ "syscall.BPF_DIRECTION_OUT": "syscall",
+ "syscall.BPF_DIV": "syscall",
+ "syscall.BPF_H": "syscall",
+ "syscall.BPF_IMM": "syscall",
+ "syscall.BPF_IND": "syscall",
+ "syscall.BPF_JA": "syscall",
+ "syscall.BPF_JEQ": "syscall",
+ "syscall.BPF_JGE": "syscall",
+ "syscall.BPF_JGT": "syscall",
+ "syscall.BPF_JMP": "syscall",
+ "syscall.BPF_JSET": "syscall",
+ "syscall.BPF_K": "syscall",
+ "syscall.BPF_LD": "syscall",
+ "syscall.BPF_LDX": "syscall",
+ "syscall.BPF_LEN": "syscall",
+ "syscall.BPF_LSH": "syscall",
+ "syscall.BPF_MAJOR_VERSION": "syscall",
+ "syscall.BPF_MAXBUFSIZE": "syscall",
+ "syscall.BPF_MAXINSNS": "syscall",
+ "syscall.BPF_MEM": "syscall",
+ "syscall.BPF_MEMWORDS": "syscall",
+ "syscall.BPF_MINBUFSIZE": "syscall",
+ "syscall.BPF_MINOR_VERSION": "syscall",
+ "syscall.BPF_MISC": "syscall",
+ "syscall.BPF_MSH": "syscall",
+ "syscall.BPF_MUL": "syscall",
+ "syscall.BPF_NEG": "syscall",
+ "syscall.BPF_OR": "syscall",
+ "syscall.BPF_RELEASE": "syscall",
+ "syscall.BPF_RET": "syscall",
+ "syscall.BPF_RSH": "syscall",
+ "syscall.BPF_ST": "syscall",
+ "syscall.BPF_STX": "syscall",
+ "syscall.BPF_SUB": "syscall",
+ "syscall.BPF_TAX": "syscall",
+ "syscall.BPF_TXA": "syscall",
+ "syscall.BPF_T_BINTIME": "syscall",
+ "syscall.BPF_T_BINTIME_FAST": "syscall",
+ "syscall.BPF_T_BINTIME_MONOTONIC": "syscall",
+ "syscall.BPF_T_BINTIME_MONOTONIC_FAST": "syscall",
+ "syscall.BPF_T_FAST": "syscall",
+ "syscall.BPF_T_FLAG_MASK": "syscall",
+ "syscall.BPF_T_FORMAT_MASK": "syscall",
+ "syscall.BPF_T_MICROTIME": "syscall",
+ "syscall.BPF_T_MICROTIME_FAST": "syscall",
+ "syscall.BPF_T_MICROTIME_MONOTONIC": "syscall",
+ "syscall.BPF_T_MICROTIME_MONOTONIC_FAST": "syscall",
+ "syscall.BPF_T_MONOTONIC": "syscall",
+ "syscall.BPF_T_MONOTONIC_FAST": "syscall",
+ "syscall.BPF_T_NANOTIME": "syscall",
+ "syscall.BPF_T_NANOTIME_FAST": "syscall",
+ "syscall.BPF_T_NANOTIME_MONOTONIC": "syscall",
+ "syscall.BPF_T_NANOTIME_MONOTONIC_FAST": "syscall",
+ "syscall.BPF_T_NONE": "syscall",
+ "syscall.BPF_T_NORMAL": "syscall",
+ "syscall.BPF_W": "syscall",
+ "syscall.BPF_X": "syscall",
+ "syscall.BRKINT": "syscall",
+ "syscall.Bind": "syscall",
+ "syscall.BindToDevice": "syscall",
+ "syscall.BpfBuflen": "syscall",
+ "syscall.BpfDatalink": "syscall",
+ "syscall.BpfHdr": "syscall",
+ "syscall.BpfHeadercmpl": "syscall",
+ "syscall.BpfInsn": "syscall",
+ "syscall.BpfInterface": "syscall",
+ "syscall.BpfJump": "syscall",
+ "syscall.BpfProgram": "syscall",
+ "syscall.BpfStat": "syscall",
+ "syscall.BpfStats": "syscall",
+ "syscall.BpfStmt": "syscall",
+ "syscall.BpfTimeout": "syscall",
+ "syscall.BpfTimeval": "syscall",
+ "syscall.BpfVersion": "syscall",
+ "syscall.BpfZbuf": "syscall",
+ "syscall.BpfZbufHeader": "syscall",
+ "syscall.ByHandleFileInformation": "syscall",
+ "syscall.BytePtrFromString": "syscall",
+ "syscall.ByteSliceFromString": "syscall",
+ "syscall.CCR0_FLUSH": "syscall",
+ "syscall.CERT_CHAIN_POLICY_AUTHENTICODE": "syscall",
+ "syscall.CERT_CHAIN_POLICY_AUTHENTICODE_TS": "syscall",
+ "syscall.CERT_CHAIN_POLICY_BASE": "syscall",
+ "syscall.CERT_CHAIN_POLICY_BASIC_CONSTRAINTS": "syscall",
+ "syscall.CERT_CHAIN_POLICY_EV": "syscall",
+ "syscall.CERT_CHAIN_POLICY_MICROSOFT_ROOT": "syscall",
+ "syscall.CERT_CHAIN_POLICY_NT_AUTH": "syscall",
+ "syscall.CERT_CHAIN_POLICY_SSL": "syscall",
+ "syscall.CERT_E_CN_NO_MATCH": "syscall",
+ "syscall.CERT_E_EXPIRED": "syscall",
+ "syscall.CERT_E_PURPOSE": "syscall",
+ "syscall.CERT_E_ROLE": "syscall",
+ "syscall.CERT_E_UNTRUSTEDROOT": "syscall",
+ "syscall.CERT_STORE_ADD_ALWAYS": "syscall",
+ "syscall.CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG": "syscall",
+ "syscall.CERT_STORE_PROV_MEMORY": "syscall",
+ "syscall.CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT": "syscall",
+ "syscall.CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT": "syscall",
+ "syscall.CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT": "syscall",
+ "syscall.CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT": "syscall",
+ "syscall.CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT": "syscall",
+ "syscall.CERT_TRUST_INVALID_BASIC_CONSTRAINTS": "syscall",
+ "syscall.CERT_TRUST_INVALID_EXTENSION": "syscall",
+ "syscall.CERT_TRUST_INVALID_NAME_CONSTRAINTS": "syscall",
+ "syscall.CERT_TRUST_INVALID_POLICY_CONSTRAINTS": "syscall",
+ "syscall.CERT_TRUST_IS_CYCLIC": "syscall",
+ "syscall.CERT_TRUST_IS_EXPLICIT_DISTRUST": "syscall",
+ "syscall.CERT_TRUST_IS_NOT_SIGNATURE_VALID": "syscall",
+ "syscall.CERT_TRUST_IS_NOT_TIME_VALID": "syscall",
+ "syscall.CERT_TRUST_IS_NOT_VALID_FOR_USAGE": "syscall",
+ "syscall.CERT_TRUST_IS_OFFLINE_REVOCATION": "syscall",
+ "syscall.CERT_TRUST_IS_REVOKED": "syscall",
+ "syscall.CERT_TRUST_IS_UNTRUSTED_ROOT": "syscall",
+ "syscall.CERT_TRUST_NO_ERROR": "syscall",
+ "syscall.CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY": "syscall",
+ "syscall.CERT_TRUST_REVOCATION_STATUS_UNKNOWN": "syscall",
+ "syscall.CFLUSH": "syscall",
+ "syscall.CLOCAL": "syscall",
+ "syscall.CLONE_CHILD_CLEARTID": "syscall",
+ "syscall.CLONE_CHILD_SETTID": "syscall",
+ "syscall.CLONE_CSIGNAL": "syscall",
+ "syscall.CLONE_DETACHED": "syscall",
+ "syscall.CLONE_FILES": "syscall",
+ "syscall.CLONE_FS": "syscall",
+ "syscall.CLONE_IO": "syscall",
+ "syscall.CLONE_NEWIPC": "syscall",
+ "syscall.CLONE_NEWNET": "syscall",
+ "syscall.CLONE_NEWNS": "syscall",
+ "syscall.CLONE_NEWPID": "syscall",
+ "syscall.CLONE_NEWUSER": "syscall",
+ "syscall.CLONE_NEWUTS": "syscall",
+ "syscall.CLONE_PARENT": "syscall",
+ "syscall.CLONE_PARENT_SETTID": "syscall",
+ "syscall.CLONE_PID": "syscall",
+ "syscall.CLONE_PTRACE": "syscall",
+ "syscall.CLONE_SETTLS": "syscall",
+ "syscall.CLONE_SIGHAND": "syscall",
+ "syscall.CLONE_SYSVSEM": "syscall",
+ "syscall.CLONE_THREAD": "syscall",
+ "syscall.CLONE_UNTRACED": "syscall",
+ "syscall.CLONE_VFORK": "syscall",
+ "syscall.CLONE_VM": "syscall",
+ "syscall.CPUID_CFLUSH": "syscall",
+ "syscall.CREAD": "syscall",
+ "syscall.CREATE_ALWAYS": "syscall",
+ "syscall.CREATE_NEW": "syscall",
+ "syscall.CREATE_NEW_PROCESS_GROUP": "syscall",
+ "syscall.CREATE_UNICODE_ENVIRONMENT": "syscall",
+ "syscall.CRYPT_DEFAULT_CONTAINER_OPTIONAL": "syscall",
+ "syscall.CRYPT_DELETEKEYSET": "syscall",
+ "syscall.CRYPT_MACHINE_KEYSET": "syscall",
+ "syscall.CRYPT_NEWKEYSET": "syscall",
+ "syscall.CRYPT_SILENT": "syscall",
+ "syscall.CRYPT_VERIFYCONTEXT": "syscall",
+ "syscall.CS5": "syscall",
+ "syscall.CS6": "syscall",
+ "syscall.CS7": "syscall",
+ "syscall.CS8": "syscall",
+ "syscall.CSIZE": "syscall",
+ "syscall.CSTART": "syscall",
+ "syscall.CSTATUS": "syscall",
+ "syscall.CSTOP": "syscall",
+ "syscall.CSTOPB": "syscall",
+ "syscall.CSUSP": "syscall",
+ "syscall.CTL_MAXNAME": "syscall",
+ "syscall.CTL_NET": "syscall",
+ "syscall.CTL_QUERY": "syscall",
+ "syscall.CTRL_BREAK_EVENT": "syscall",
+ "syscall.CTRL_C_EVENT": "syscall",
+ "syscall.CancelIo": "syscall",
+ "syscall.CancelIoEx": "syscall",
+ "syscall.CertAddCertificateContextToStore": "syscall",
+ "syscall.CertChainContext": "syscall",
+ "syscall.CertChainElement": "syscall",
+ "syscall.CertChainPara": "syscall",
+ "syscall.CertChainPolicyPara": "syscall",
+ "syscall.CertChainPolicyStatus": "syscall",
+ "syscall.CertCloseStore": "syscall",
+ "syscall.CertContext": "syscall",
+ "syscall.CertCreateCertificateContext": "syscall",
+ "syscall.CertEnhKeyUsage": "syscall",
+ "syscall.CertEnumCertificatesInStore": "syscall",
+ "syscall.CertFreeCertificateChain": "syscall",
+ "syscall.CertFreeCertificateContext": "syscall",
+ "syscall.CertGetCertificateChain": "syscall",
+ "syscall.CertOpenStore": "syscall",
+ "syscall.CertOpenSystemStore": "syscall",
+ "syscall.CertRevocationInfo": "syscall",
+ "syscall.CertSimpleChain": "syscall",
+ "syscall.CertTrustStatus": "syscall",
+ "syscall.CertUsageMatch": "syscall",
+ "syscall.CertVerifyCertificateChainPolicy": "syscall",
+ "syscall.Chdir": "syscall",
+ "syscall.CheckBpfVersion": "syscall",
+ "syscall.Chflags": "syscall",
+ "syscall.Chmod": "syscall",
+ "syscall.Chown": "syscall",
+ "syscall.Chroot": "syscall",
+ "syscall.Clearenv": "syscall",
+ "syscall.Close": "syscall",
+ "syscall.CloseHandle": "syscall",
+ "syscall.CloseOnExec": "syscall",
+ "syscall.Closesocket": "syscall",
+ "syscall.CmsgLen": "syscall",
+ "syscall.CmsgSpace": "syscall",
+ "syscall.Cmsghdr": "syscall",
+ "syscall.CommandLineToArgv": "syscall",
+ "syscall.ComputerName": "syscall",
+ "syscall.Connect": "syscall",
+ "syscall.ConnectEx": "syscall",
+ "syscall.ConvertSidToStringSid": "syscall",
+ "syscall.ConvertStringSidToSid": "syscall",
+ "syscall.CopySid": "syscall",
+ "syscall.Creat": "syscall",
+ "syscall.CreateDirectory": "syscall",
+ "syscall.CreateFile": "syscall",
+ "syscall.CreateFileMapping": "syscall",
+ "syscall.CreateHardLink": "syscall",
+ "syscall.CreateIoCompletionPort": "syscall",
+ "syscall.CreatePipe": "syscall",
+ "syscall.CreateProcess": "syscall",
+ "syscall.CreateSymbolicLink": "syscall",
+ "syscall.CreateToolhelp32Snapshot": "syscall",
+ "syscall.Credential": "syscall",
+ "syscall.CryptAcquireContext": "syscall",
+ "syscall.CryptGenRandom": "syscall",
+ "syscall.CryptReleaseContext": "syscall",
+ "syscall.DIOCBSFLUSH": "syscall",
+ "syscall.DIOCOSFPFLUSH": "syscall",
+ "syscall.DLL": "syscall",
+ "syscall.DLLError": "syscall",
+ "syscall.DLT_A429": "syscall",
+ "syscall.DLT_A653_ICM": "syscall",
+ "syscall.DLT_AIRONET_HEADER": "syscall",
+ "syscall.DLT_AOS": "syscall",
+ "syscall.DLT_APPLE_IP_OVER_IEEE1394": "syscall",
+ "syscall.DLT_ARCNET": "syscall",
+ "syscall.DLT_ARCNET_LINUX": "syscall",
+ "syscall.DLT_ATM_CLIP": "syscall",
+ "syscall.DLT_ATM_RFC1483": "syscall",
+ "syscall.DLT_AURORA": "syscall",
+ "syscall.DLT_AX25": "syscall",
+ "syscall.DLT_AX25_KISS": "syscall",
+ "syscall.DLT_BACNET_MS_TP": "syscall",
+ "syscall.DLT_BLUETOOTH_HCI_H4": "syscall",
+ "syscall.DLT_BLUETOOTH_HCI_H4_WITH_PHDR": "syscall",
+ "syscall.DLT_CAN20B": "syscall",
+ "syscall.DLT_CAN_SOCKETCAN": "syscall",
+ "syscall.DLT_CHAOS": "syscall",
+ "syscall.DLT_CHDLC": "syscall",
+ "syscall.DLT_CISCO_IOS": "syscall",
+ "syscall.DLT_C_HDLC": "syscall",
+ "syscall.DLT_C_HDLC_WITH_DIR": "syscall",
+ "syscall.DLT_DBUS": "syscall",
+ "syscall.DLT_DECT": "syscall",
+ "syscall.DLT_DOCSIS": "syscall",
+ "syscall.DLT_DVB_CI": "syscall",
+ "syscall.DLT_ECONET": "syscall",
+ "syscall.DLT_EN10MB": "syscall",
+ "syscall.DLT_EN3MB": "syscall",
+ "syscall.DLT_ENC": "syscall",
+ "syscall.DLT_ERF": "syscall",
+ "syscall.DLT_ERF_ETH": "syscall",
+ "syscall.DLT_ERF_POS": "syscall",
+ "syscall.DLT_FC_2": "syscall",
+ "syscall.DLT_FC_2_WITH_FRAME_DELIMS": "syscall",
+ "syscall.DLT_FDDI": "syscall",
+ "syscall.DLT_FLEXRAY": "syscall",
+ "syscall.DLT_FRELAY": "syscall",
+ "syscall.DLT_FRELAY_WITH_DIR": "syscall",
+ "syscall.DLT_GCOM_SERIAL": "syscall",
+ "syscall.DLT_GCOM_T1E1": "syscall",
+ "syscall.DLT_GPF_F": "syscall",
+ "syscall.DLT_GPF_T": "syscall",
+ "syscall.DLT_GPRS_LLC": "syscall",
+ "syscall.DLT_GSMTAP_ABIS": "syscall",
+ "syscall.DLT_GSMTAP_UM": "syscall",
+ "syscall.DLT_HDLC": "syscall",
+ "syscall.DLT_HHDLC": "syscall",
+ "syscall.DLT_HIPPI": "syscall",
+ "syscall.DLT_IBM_SN": "syscall",
+ "syscall.DLT_IBM_SP": "syscall",
+ "syscall.DLT_IEEE802": "syscall",
+ "syscall.DLT_IEEE802_11": "syscall",
+ "syscall.DLT_IEEE802_11_RADIO": "syscall",
+ "syscall.DLT_IEEE802_11_RADIO_AVS": "syscall",
+ "syscall.DLT_IEEE802_15_4": "syscall",
+ "syscall.DLT_IEEE802_15_4_LINUX": "syscall",
+ "syscall.DLT_IEEE802_15_4_NOFCS": "syscall",
+ "syscall.DLT_IEEE802_15_4_NONASK_PHY": "syscall",
+ "syscall.DLT_IEEE802_16_MAC_CPS": "syscall",
+ "syscall.DLT_IEEE802_16_MAC_CPS_RADIO": "syscall",
+ "syscall.DLT_IPFILTER": "syscall",
+ "syscall.DLT_IPMB": "syscall",
+ "syscall.DLT_IPMB_LINUX": "syscall",
+ "syscall.DLT_IPNET": "syscall",
+ "syscall.DLT_IPOIB": "syscall",
+ "syscall.DLT_IPV4": "syscall",
+ "syscall.DLT_IPV6": "syscall",
+ "syscall.DLT_IP_OVER_FC": "syscall",
+ "syscall.DLT_JUNIPER_ATM1": "syscall",
+ "syscall.DLT_JUNIPER_ATM2": "syscall",
+ "syscall.DLT_JUNIPER_ATM_CEMIC": "syscall",
+ "syscall.DLT_JUNIPER_CHDLC": "syscall",
+ "syscall.DLT_JUNIPER_ES": "syscall",
+ "syscall.DLT_JUNIPER_ETHER": "syscall",
+ "syscall.DLT_JUNIPER_FIBRECHANNEL": "syscall",
+ "syscall.DLT_JUNIPER_FRELAY": "syscall",
+ "syscall.DLT_JUNIPER_GGSN": "syscall",
+ "syscall.DLT_JUNIPER_ISM": "syscall",
+ "syscall.DLT_JUNIPER_MFR": "syscall",
+ "syscall.DLT_JUNIPER_MLFR": "syscall",
+ "syscall.DLT_JUNIPER_MLPPP": "syscall",
+ "syscall.DLT_JUNIPER_MONITOR": "syscall",
+ "syscall.DLT_JUNIPER_PIC_PEER": "syscall",
+ "syscall.DLT_JUNIPER_PPP": "syscall",
+ "syscall.DLT_JUNIPER_PPPOE": "syscall",
+ "syscall.DLT_JUNIPER_PPPOE_ATM": "syscall",
+ "syscall.DLT_JUNIPER_SERVICES": "syscall",
+ "syscall.DLT_JUNIPER_SRX_E2E": "syscall",
+ "syscall.DLT_JUNIPER_ST": "syscall",
+ "syscall.DLT_JUNIPER_VP": "syscall",
+ "syscall.DLT_JUNIPER_VS": "syscall",
+ "syscall.DLT_LAPB_WITH_DIR": "syscall",
+ "syscall.DLT_LAPD": "syscall",
+ "syscall.DLT_LIN": "syscall",
+ "syscall.DLT_LINUX_EVDEV": "syscall",
+ "syscall.DLT_LINUX_IRDA": "syscall",
+ "syscall.DLT_LINUX_LAPD": "syscall",
+ "syscall.DLT_LINUX_PPP_WITHDIRECTION": "syscall",
+ "syscall.DLT_LINUX_SLL": "syscall",
+ "syscall.DLT_LOOP": "syscall",
+ "syscall.DLT_LTALK": "syscall",
+ "syscall.DLT_MATCHING_MAX": "syscall",
+ "syscall.DLT_MATCHING_MIN": "syscall",
+ "syscall.DLT_MFR": "syscall",
+ "syscall.DLT_MOST": "syscall",
+ "syscall.DLT_MPEG_2_TS": "syscall",
+ "syscall.DLT_MPLS": "syscall",
+ "syscall.DLT_MTP2": "syscall",
+ "syscall.DLT_MTP2_WITH_PHDR": "syscall",
+ "syscall.DLT_MTP3": "syscall",
+ "syscall.DLT_MUX27010": "syscall",
+ "syscall.DLT_NETANALYZER": "syscall",
+ "syscall.DLT_NETANALYZER_TRANSPARENT": "syscall",
+ "syscall.DLT_NFC_LLCP": "syscall",
+ "syscall.DLT_NFLOG": "syscall",
+ "syscall.DLT_NG40": "syscall",
+ "syscall.DLT_NULL": "syscall",
+ "syscall.DLT_PCI_EXP": "syscall",
+ "syscall.DLT_PFLOG": "syscall",
+ "syscall.DLT_PFSYNC": "syscall",
+ "syscall.DLT_PPI": "syscall",
+ "syscall.DLT_PPP": "syscall",
+ "syscall.DLT_PPP_BSDOS": "syscall",
+ "syscall.DLT_PPP_ETHER": "syscall",
+ "syscall.DLT_PPP_PPPD": "syscall",
+ "syscall.DLT_PPP_SERIAL": "syscall",
+ "syscall.DLT_PPP_WITH_DIR": "syscall",
+ "syscall.DLT_PPP_WITH_DIRECTION": "syscall",
+ "syscall.DLT_PRISM_HEADER": "syscall",
+ "syscall.DLT_PRONET": "syscall",
+ "syscall.DLT_RAIF1": "syscall",
+ "syscall.DLT_RAW": "syscall",
+ "syscall.DLT_RAWAF_MASK": "syscall",
+ "syscall.DLT_RIO": "syscall",
+ "syscall.DLT_SCCP": "syscall",
+ "syscall.DLT_SITA": "syscall",
+ "syscall.DLT_SLIP": "syscall",
+ "syscall.DLT_SLIP_BSDOS": "syscall",
+ "syscall.DLT_STANAG_5066_D_PDU": "syscall",
+ "syscall.DLT_SUNATM": "syscall",
+ "syscall.DLT_SYMANTEC_FIREWALL": "syscall",
+ "syscall.DLT_TZSP": "syscall",
+ "syscall.DLT_USB": "syscall",
+ "syscall.DLT_USB_LINUX": "syscall",
+ "syscall.DLT_USB_LINUX_MMAPPED": "syscall",
+ "syscall.DLT_USER0": "syscall",
+ "syscall.DLT_USER1": "syscall",
+ "syscall.DLT_USER10": "syscall",
+ "syscall.DLT_USER11": "syscall",
+ "syscall.DLT_USER12": "syscall",
+ "syscall.DLT_USER13": "syscall",
+ "syscall.DLT_USER14": "syscall",
+ "syscall.DLT_USER15": "syscall",
+ "syscall.DLT_USER2": "syscall",
+ "syscall.DLT_USER3": "syscall",
+ "syscall.DLT_USER4": "syscall",
+ "syscall.DLT_USER5": "syscall",
+ "syscall.DLT_USER6": "syscall",
+ "syscall.DLT_USER7": "syscall",
+ "syscall.DLT_USER8": "syscall",
+ "syscall.DLT_USER9": "syscall",
+ "syscall.DLT_WIHART": "syscall",
+ "syscall.DLT_X2E_SERIAL": "syscall",
+ "syscall.DLT_X2E_XORAYA": "syscall",
+ "syscall.DNSMXData": "syscall",
+ "syscall.DNSPTRData": "syscall",
+ "syscall.DNSRecord": "syscall",
+ "syscall.DNSSRVData": "syscall",
+ "syscall.DNSTXTData": "syscall",
+ "syscall.DNS_INFO_NO_RECORDS": "syscall",
+ "syscall.DNS_TYPE_A": "syscall",
+ "syscall.DNS_TYPE_A6": "syscall",
+ "syscall.DNS_TYPE_AAAA": "syscall",
+ "syscall.DNS_TYPE_ADDRS": "syscall",
+ "syscall.DNS_TYPE_AFSDB": "syscall",
+ "syscall.DNS_TYPE_ALL": "syscall",
+ "syscall.DNS_TYPE_ANY": "syscall",
+ "syscall.DNS_TYPE_ATMA": "syscall",
+ "syscall.DNS_TYPE_AXFR": "syscall",
+ "syscall.DNS_TYPE_CERT": "syscall",
+ "syscall.DNS_TYPE_CNAME": "syscall",
+ "syscall.DNS_TYPE_DHCID": "syscall",
+ "syscall.DNS_TYPE_DNAME": "syscall",
+ "syscall.DNS_TYPE_DNSKEY": "syscall",
+ "syscall.DNS_TYPE_DS": "syscall",
+ "syscall.DNS_TYPE_EID": "syscall",
+ "syscall.DNS_TYPE_GID": "syscall",
+ "syscall.DNS_TYPE_GPOS": "syscall",
+ "syscall.DNS_TYPE_HINFO": "syscall",
+ "syscall.DNS_TYPE_ISDN": "syscall",
+ "syscall.DNS_TYPE_IXFR": "syscall",
+ "syscall.DNS_TYPE_KEY": "syscall",
+ "syscall.DNS_TYPE_KX": "syscall",
+ "syscall.DNS_TYPE_LOC": "syscall",
+ "syscall.DNS_TYPE_MAILA": "syscall",
+ "syscall.DNS_TYPE_MAILB": "syscall",
+ "syscall.DNS_TYPE_MB": "syscall",
+ "syscall.DNS_TYPE_MD": "syscall",
+ "syscall.DNS_TYPE_MF": "syscall",
+ "syscall.DNS_TYPE_MG": "syscall",
+ "syscall.DNS_TYPE_MINFO": "syscall",
+ "syscall.DNS_TYPE_MR": "syscall",
+ "syscall.DNS_TYPE_MX": "syscall",
+ "syscall.DNS_TYPE_NAPTR": "syscall",
+ "syscall.DNS_TYPE_NBSTAT": "syscall",
+ "syscall.DNS_TYPE_NIMLOC": "syscall",
+ "syscall.DNS_TYPE_NS": "syscall",
+ "syscall.DNS_TYPE_NSAP": "syscall",
+ "syscall.DNS_TYPE_NSAPPTR": "syscall",
+ "syscall.DNS_TYPE_NSEC": "syscall",
+ "syscall.DNS_TYPE_NULL": "syscall",
+ "syscall.DNS_TYPE_NXT": "syscall",
+ "syscall.DNS_TYPE_OPT": "syscall",
+ "syscall.DNS_TYPE_PTR": "syscall",
+ "syscall.DNS_TYPE_PX": "syscall",
+ "syscall.DNS_TYPE_RP": "syscall",
+ "syscall.DNS_TYPE_RRSIG": "syscall",
+ "syscall.DNS_TYPE_RT": "syscall",
+ "syscall.DNS_TYPE_SIG": "syscall",
+ "syscall.DNS_TYPE_SINK": "syscall",
+ "syscall.DNS_TYPE_SOA": "syscall",
+ "syscall.DNS_TYPE_SRV": "syscall",
+ "syscall.DNS_TYPE_TEXT": "syscall",
+ "syscall.DNS_TYPE_TKEY": "syscall",
+ "syscall.DNS_TYPE_TSIG": "syscall",
+ "syscall.DNS_TYPE_UID": "syscall",
+ "syscall.DNS_TYPE_UINFO": "syscall",
+ "syscall.DNS_TYPE_UNSPEC": "syscall",
+ "syscall.DNS_TYPE_WINS": "syscall",
+ "syscall.DNS_TYPE_WINSR": "syscall",
+ "syscall.DNS_TYPE_WKS": "syscall",
+ "syscall.DNS_TYPE_X25": "syscall",
+ "syscall.DT_BLK": "syscall",
+ "syscall.DT_CHR": "syscall",
+ "syscall.DT_DIR": "syscall",
+ "syscall.DT_FIFO": "syscall",
+ "syscall.DT_LNK": "syscall",
+ "syscall.DT_REG": "syscall",
+ "syscall.DT_SOCK": "syscall",
+ "syscall.DT_UNKNOWN": "syscall",
+ "syscall.DT_WHT": "syscall",
+ "syscall.DUPLICATE_CLOSE_SOURCE": "syscall",
+ "syscall.DUPLICATE_SAME_ACCESS": "syscall",
+ "syscall.DeleteFile": "syscall",
+ "syscall.DetachLsf": "syscall",
+ "syscall.DeviceIoControl": "syscall",
+ "syscall.Dirent": "syscall",
+ "syscall.DnsNameCompare": "syscall",
+ "syscall.DnsQuery": "syscall",
+ "syscall.DnsRecordListFree": "syscall",
+ "syscall.DnsSectionAdditional": "syscall",
+ "syscall.DnsSectionAnswer": "syscall",
+ "syscall.DnsSectionAuthority": "syscall",
+ "syscall.DnsSectionQuestion": "syscall",
+ "syscall.Dup": "syscall",
+ "syscall.Dup2": "syscall",
+ "syscall.Dup3": "syscall",
+ "syscall.DuplicateHandle": "syscall",
+ "syscall.E2BIG": "syscall",
+ "syscall.EACCES": "syscall",
+ "syscall.EADDRINUSE": "syscall",
+ "syscall.EADDRNOTAVAIL": "syscall",
+ "syscall.EADV": "syscall",
+ "syscall.EAFNOSUPPORT": "syscall",
+ "syscall.EAGAIN": "syscall",
+ "syscall.EALREADY": "syscall",
+ "syscall.EAUTH": "syscall",
+ "syscall.EBADARCH": "syscall",
+ "syscall.EBADE": "syscall",
+ "syscall.EBADEXEC": "syscall",
+ "syscall.EBADF": "syscall",
+ "syscall.EBADFD": "syscall",
+ "syscall.EBADMACHO": "syscall",
+ "syscall.EBADMSG": "syscall",
+ "syscall.EBADR": "syscall",
+ "syscall.EBADRPC": "syscall",
+ "syscall.EBADRQC": "syscall",
+ "syscall.EBADSLT": "syscall",
+ "syscall.EBFONT": "syscall",
+ "syscall.EBUSY": "syscall",
+ "syscall.ECANCELED": "syscall",
+ "syscall.ECAPMODE": "syscall",
+ "syscall.ECHILD": "syscall",
+ "syscall.ECHO": "syscall",
+ "syscall.ECHOCTL": "syscall",
+ "syscall.ECHOE": "syscall",
+ "syscall.ECHOK": "syscall",
+ "syscall.ECHOKE": "syscall",
+ "syscall.ECHONL": "syscall",
+ "syscall.ECHOPRT": "syscall",
+ "syscall.ECHRNG": "syscall",
+ "syscall.ECOMM": "syscall",
+ "syscall.ECONNABORTED": "syscall",
+ "syscall.ECONNREFUSED": "syscall",
+ "syscall.ECONNRESET": "syscall",
+ "syscall.EDEADLK": "syscall",
+ "syscall.EDEADLOCK": "syscall",
+ "syscall.EDESTADDRREQ": "syscall",
+ "syscall.EDEVERR": "syscall",
+ "syscall.EDOM": "syscall",
+ "syscall.EDOOFUS": "syscall",
+ "syscall.EDOTDOT": "syscall",
+ "syscall.EDQUOT": "syscall",
+ "syscall.EEXIST": "syscall",
+ "syscall.EFAULT": "syscall",
+ "syscall.EFBIG": "syscall",
+ "syscall.EFER_LMA": "syscall",
+ "syscall.EFER_LME": "syscall",
+ "syscall.EFER_NXE": "syscall",
+ "syscall.EFER_SCE": "syscall",
+ "syscall.EFTYPE": "syscall",
+ "syscall.EHOSTDOWN": "syscall",
+ "syscall.EHOSTUNREACH": "syscall",
+ "syscall.EHWPOISON": "syscall",
+ "syscall.EIDRM": "syscall",
+ "syscall.EILSEQ": "syscall",
+ "syscall.EINPROGRESS": "syscall",
+ "syscall.EINTR": "syscall",
+ "syscall.EINVAL": "syscall",
+ "syscall.EIO": "syscall",
+ "syscall.EIPSEC": "syscall",
+ "syscall.EISCONN": "syscall",
+ "syscall.EISDIR": "syscall",
+ "syscall.EISNAM": "syscall",
+ "syscall.EKEYEXPIRED": "syscall",
+ "syscall.EKEYREJECTED": "syscall",
+ "syscall.EKEYREVOKED": "syscall",
+ "syscall.EL2HLT": "syscall",
+ "syscall.EL2NSYNC": "syscall",
+ "syscall.EL3HLT": "syscall",
+ "syscall.EL3RST": "syscall",
+ "syscall.ELAST": "syscall",
+ "syscall.ELF_NGREG": "syscall",
+ "syscall.ELF_PRARGSZ": "syscall",
+ "syscall.ELIBACC": "syscall",
+ "syscall.ELIBBAD": "syscall",
+ "syscall.ELIBEXEC": "syscall",
+ "syscall.ELIBMAX": "syscall",
+ "syscall.ELIBSCN": "syscall",
+ "syscall.ELNRNG": "syscall",
+ "syscall.ELOOP": "syscall",
+ "syscall.EMEDIUMTYPE": "syscall",
+ "syscall.EMFILE": "syscall",
+ "syscall.EMLINK": "syscall",
+ "syscall.EMSGSIZE": "syscall",
+ "syscall.EMT_TAGOVF": "syscall",
+ "syscall.EMULTIHOP": "syscall",
+ "syscall.EMUL_ENABLED": "syscall",
+ "syscall.EMUL_LINUX": "syscall",
+ "syscall.EMUL_LINUX32": "syscall",
+ "syscall.EMUL_MAXID": "syscall",
+ "syscall.EMUL_NATIVE": "syscall",
+ "syscall.ENAMETOOLONG": "syscall",
+ "syscall.ENAVAIL": "syscall",
+ "syscall.ENDRUNDISC": "syscall",
+ "syscall.ENEEDAUTH": "syscall",
+ "syscall.ENETDOWN": "syscall",
+ "syscall.ENETRESET": "syscall",
+ "syscall.ENETUNREACH": "syscall",
+ "syscall.ENFILE": "syscall",
+ "syscall.ENOANO": "syscall",
+ "syscall.ENOATTR": "syscall",
+ "syscall.ENOBUFS": "syscall",
+ "syscall.ENOCSI": "syscall",
+ "syscall.ENODATA": "syscall",
+ "syscall.ENODEV": "syscall",
+ "syscall.ENOENT": "syscall",
+ "syscall.ENOEXEC": "syscall",
+ "syscall.ENOKEY": "syscall",
+ "syscall.ENOLCK": "syscall",
+ "syscall.ENOLINK": "syscall",
+ "syscall.ENOMEDIUM": "syscall",
+ "syscall.ENOMEM": "syscall",
+ "syscall.ENOMSG": "syscall",
+ "syscall.ENONET": "syscall",
+ "syscall.ENOPKG": "syscall",
+ "syscall.ENOPOLICY": "syscall",
+ "syscall.ENOPROTOOPT": "syscall",
+ "syscall.ENOSPC": "syscall",
+ "syscall.ENOSR": "syscall",
+ "syscall.ENOSTR": "syscall",
+ "syscall.ENOSYS": "syscall",
+ "syscall.ENOTBLK": "syscall",
+ "syscall.ENOTCAPABLE": "syscall",
+ "syscall.ENOTCONN": "syscall",
+ "syscall.ENOTDIR": "syscall",
+ "syscall.ENOTEMPTY": "syscall",
+ "syscall.ENOTNAM": "syscall",
+ "syscall.ENOTRECOVERABLE": "syscall",
+ "syscall.ENOTSOCK": "syscall",
+ "syscall.ENOTSUP": "syscall",
+ "syscall.ENOTTY": "syscall",
+ "syscall.ENOTUNIQ": "syscall",
+ "syscall.ENXIO": "syscall",
+ "syscall.EN_SW_CTL_INF": "syscall",
+ "syscall.EN_SW_CTL_PREC": "syscall",
+ "syscall.EN_SW_CTL_ROUND": "syscall",
+ "syscall.EN_SW_DATACHAIN": "syscall",
+ "syscall.EN_SW_DENORM": "syscall",
+ "syscall.EN_SW_INVOP": "syscall",
+ "syscall.EN_SW_OVERFLOW": "syscall",
+ "syscall.EN_SW_PRECLOSS": "syscall",
+ "syscall.EN_SW_UNDERFLOW": "syscall",
+ "syscall.EN_SW_ZERODIV": "syscall",
+ "syscall.EOPNOTSUPP": "syscall",
+ "syscall.EOVERFLOW": "syscall",
+ "syscall.EOWNERDEAD": "syscall",
+ "syscall.EPERM": "syscall",
+ "syscall.EPFNOSUPPORT": "syscall",
+ "syscall.EPIPE": "syscall",
+ "syscall.EPOLLERR": "syscall",
+ "syscall.EPOLLET": "syscall",
+ "syscall.EPOLLHUP": "syscall",
+ "syscall.EPOLLIN": "syscall",
+ "syscall.EPOLLMSG": "syscall",
+ "syscall.EPOLLONESHOT": "syscall",
+ "syscall.EPOLLOUT": "syscall",
+ "syscall.EPOLLPRI": "syscall",
+ "syscall.EPOLLRDBAND": "syscall",
+ "syscall.EPOLLRDHUP": "syscall",
+ "syscall.EPOLLRDNORM": "syscall",
+ "syscall.EPOLLWRBAND": "syscall",
+ "syscall.EPOLLWRNORM": "syscall",
+ "syscall.EPOLL_CLOEXEC": "syscall",
+ "syscall.EPOLL_CTL_ADD": "syscall",
+ "syscall.EPOLL_CTL_DEL": "syscall",
+ "syscall.EPOLL_CTL_MOD": "syscall",
+ "syscall.EPOLL_NONBLOCK": "syscall",
+ "syscall.EPROCLIM": "syscall",
+ "syscall.EPROCUNAVAIL": "syscall",
+ "syscall.EPROGMISMATCH": "syscall",
+ "syscall.EPROGUNAVAIL": "syscall",
+ "syscall.EPROTO": "syscall",
+ "syscall.EPROTONOSUPPORT": "syscall",
+ "syscall.EPROTOTYPE": "syscall",
+ "syscall.EPWROFF": "syscall",
+ "syscall.ERANGE": "syscall",
+ "syscall.EREMCHG": "syscall",
+ "syscall.EREMOTE": "syscall",
+ "syscall.EREMOTEIO": "syscall",
+ "syscall.ERESTART": "syscall",
+ "syscall.ERFKILL": "syscall",
+ "syscall.EROFS": "syscall",
+ "syscall.ERPCMISMATCH": "syscall",
+ "syscall.ERROR_ACCESS_DENIED": "syscall",
+ "syscall.ERROR_ALREADY_EXISTS": "syscall",
+ "syscall.ERROR_BROKEN_PIPE": "syscall",
+ "syscall.ERROR_BUFFER_OVERFLOW": "syscall",
+ "syscall.ERROR_DIR_NOT_EMPTY": "syscall",
+ "syscall.ERROR_ENVVAR_NOT_FOUND": "syscall",
+ "syscall.ERROR_FILE_EXISTS": "syscall",
+ "syscall.ERROR_FILE_NOT_FOUND": "syscall",
+ "syscall.ERROR_HANDLE_EOF": "syscall",
+ "syscall.ERROR_INSUFFICIENT_BUFFER": "syscall",
+ "syscall.ERROR_IO_PENDING": "syscall",
+ "syscall.ERROR_MOD_NOT_FOUND": "syscall",
+ "syscall.ERROR_MORE_DATA": "syscall",
+ "syscall.ERROR_NETNAME_DELETED": "syscall",
+ "syscall.ERROR_NOT_FOUND": "syscall",
+ "syscall.ERROR_NO_MORE_FILES": "syscall",
+ "syscall.ERROR_OPERATION_ABORTED": "syscall",
+ "syscall.ERROR_PATH_NOT_FOUND": "syscall",
+ "syscall.ERROR_PRIVILEGE_NOT_HELD": "syscall",
+ "syscall.ERROR_PROC_NOT_FOUND": "syscall",
+ "syscall.ESHLIBVERS": "syscall",
+ "syscall.ESHUTDOWN": "syscall",
+ "syscall.ESOCKTNOSUPPORT": "syscall",
+ "syscall.ESPIPE": "syscall",
+ "syscall.ESRCH": "syscall",
+ "syscall.ESRMNT": "syscall",
+ "syscall.ESTALE": "syscall",
+ "syscall.ESTRPIPE": "syscall",
+ "syscall.ETHERCAP_JUMBO_MTU": "syscall",
+ "syscall.ETHERCAP_VLAN_HWTAGGING": "syscall",
+ "syscall.ETHERCAP_VLAN_MTU": "syscall",
+ "syscall.ETHERMIN": "syscall",
+ "syscall.ETHERMTU": "syscall",
+ "syscall.ETHERMTU_JUMBO": "syscall",
+ "syscall.ETHERTYPE_8023": "syscall",
+ "syscall.ETHERTYPE_AARP": "syscall",
+ "syscall.ETHERTYPE_ACCTON": "syscall",
+ "syscall.ETHERTYPE_AEONIC": "syscall",
+ "syscall.ETHERTYPE_ALPHA": "syscall",
+ "syscall.ETHERTYPE_AMBER": "syscall",
+ "syscall.ETHERTYPE_AMOEBA": "syscall",
+ "syscall.ETHERTYPE_AOE": "syscall",
+ "syscall.ETHERTYPE_APOLLO": "syscall",
+ "syscall.ETHERTYPE_APOLLODOMAIN": "syscall",
+ "syscall.ETHERTYPE_APPLETALK": "syscall",
+ "syscall.ETHERTYPE_APPLITEK": "syscall",
+ "syscall.ETHERTYPE_ARGONAUT": "syscall",
+ "syscall.ETHERTYPE_ARP": "syscall",
+ "syscall.ETHERTYPE_AT": "syscall",
+ "syscall.ETHERTYPE_ATALK": "syscall",
+ "syscall.ETHERTYPE_ATOMIC": "syscall",
+ "syscall.ETHERTYPE_ATT": "syscall",
+ "syscall.ETHERTYPE_ATTSTANFORD": "syscall",
+ "syscall.ETHERTYPE_AUTOPHON": "syscall",
+ "syscall.ETHERTYPE_AXIS": "syscall",
+ "syscall.ETHERTYPE_BCLOOP": "syscall",
+ "syscall.ETHERTYPE_BOFL": "syscall",
+ "syscall.ETHERTYPE_CABLETRON": "syscall",
+ "syscall.ETHERTYPE_CHAOS": "syscall",
+ "syscall.ETHERTYPE_COMDESIGN": "syscall",
+ "syscall.ETHERTYPE_COMPUGRAPHIC": "syscall",
+ "syscall.ETHERTYPE_COUNTERPOINT": "syscall",
+ "syscall.ETHERTYPE_CRONUS": "syscall",
+ "syscall.ETHERTYPE_CRONUSVLN": "syscall",
+ "syscall.ETHERTYPE_DCA": "syscall",
+ "syscall.ETHERTYPE_DDE": "syscall",
+ "syscall.ETHERTYPE_DEBNI": "syscall",
+ "syscall.ETHERTYPE_DECAM": "syscall",
+ "syscall.ETHERTYPE_DECCUST": "syscall",
+ "syscall.ETHERTYPE_DECDIAG": "syscall",
+ "syscall.ETHERTYPE_DECDNS": "syscall",
+ "syscall.ETHERTYPE_DECDTS": "syscall",
+ "syscall.ETHERTYPE_DECEXPER": "syscall",
+ "syscall.ETHERTYPE_DECLAST": "syscall",
+ "syscall.ETHERTYPE_DECLTM": "syscall",
+ "syscall.ETHERTYPE_DECMUMPS": "syscall",
+ "syscall.ETHERTYPE_DECNETBIOS": "syscall",
+ "syscall.ETHERTYPE_DELTACON": "syscall",
+ "syscall.ETHERTYPE_DIDDLE": "syscall",
+ "syscall.ETHERTYPE_DLOG1": "syscall",
+ "syscall.ETHERTYPE_DLOG2": "syscall",
+ "syscall.ETHERTYPE_DN": "syscall",
+ "syscall.ETHERTYPE_DOGFIGHT": "syscall",
+ "syscall.ETHERTYPE_DSMD": "syscall",
+ "syscall.ETHERTYPE_ECMA": "syscall",
+ "syscall.ETHERTYPE_ENCRYPT": "syscall",
+ "syscall.ETHERTYPE_ES": "syscall",
+ "syscall.ETHERTYPE_EXCELAN": "syscall",
+ "syscall.ETHERTYPE_EXPERDATA": "syscall",
+ "syscall.ETHERTYPE_FLIP": "syscall",
+ "syscall.ETHERTYPE_FLOWCONTROL": "syscall",
+ "syscall.ETHERTYPE_FRARP": "syscall",
+ "syscall.ETHERTYPE_GENDYN": "syscall",
+ "syscall.ETHERTYPE_HAYES": "syscall",
+ "syscall.ETHERTYPE_HIPPI_FP": "syscall",
+ "syscall.ETHERTYPE_HITACHI": "syscall",
+ "syscall.ETHERTYPE_HP": "syscall",
+ "syscall.ETHERTYPE_IEEEPUP": "syscall",
+ "syscall.ETHERTYPE_IEEEPUPAT": "syscall",
+ "syscall.ETHERTYPE_IMLBL": "syscall",
+ "syscall.ETHERTYPE_IMLBLDIAG": "syscall",
+ "syscall.ETHERTYPE_IP": "syscall",
+ "syscall.ETHERTYPE_IPAS": "syscall",
+ "syscall.ETHERTYPE_IPV6": "syscall",
+ "syscall.ETHERTYPE_IPX": "syscall",
+ "syscall.ETHERTYPE_IPXNEW": "syscall",
+ "syscall.ETHERTYPE_KALPANA": "syscall",
+ "syscall.ETHERTYPE_LANBRIDGE": "syscall",
+ "syscall.ETHERTYPE_LANPROBE": "syscall",
+ "syscall.ETHERTYPE_LAT": "syscall",
+ "syscall.ETHERTYPE_LBACK": "syscall",
+ "syscall.ETHERTYPE_LITTLE": "syscall",
+ "syscall.ETHERTYPE_LLDP": "syscall",
+ "syscall.ETHERTYPE_LOGICRAFT": "syscall",
+ "syscall.ETHERTYPE_LOOPBACK": "syscall",
+ "syscall.ETHERTYPE_MATRA": "syscall",
+ "syscall.ETHERTYPE_MAX": "syscall",
+ "syscall.ETHERTYPE_MERIT": "syscall",
+ "syscall.ETHERTYPE_MICP": "syscall",
+ "syscall.ETHERTYPE_MOPDL": "syscall",
+ "syscall.ETHERTYPE_MOPRC": "syscall",
+ "syscall.ETHERTYPE_MOTOROLA": "syscall",
+ "syscall.ETHERTYPE_MPLS": "syscall",
+ "syscall.ETHERTYPE_MPLS_MCAST": "syscall",
+ "syscall.ETHERTYPE_MUMPS": "syscall",
+ "syscall.ETHERTYPE_NBPCC": "syscall",
+ "syscall.ETHERTYPE_NBPCLAIM": "syscall",
+ "syscall.ETHERTYPE_NBPCLREQ": "syscall",
+ "syscall.ETHERTYPE_NBPCLRSP": "syscall",
+ "syscall.ETHERTYPE_NBPCREQ": "syscall",
+ "syscall.ETHERTYPE_NBPCRSP": "syscall",
+ "syscall.ETHERTYPE_NBPDG": "syscall",
+ "syscall.ETHERTYPE_NBPDGB": "syscall",
+ "syscall.ETHERTYPE_NBPDLTE": "syscall",
+ "syscall.ETHERTYPE_NBPRAR": "syscall",
+ "syscall.ETHERTYPE_NBPRAS": "syscall",
+ "syscall.ETHERTYPE_NBPRST": "syscall",
+ "syscall.ETHERTYPE_NBPSCD": "syscall",
+ "syscall.ETHERTYPE_NBPVCD": "syscall",
+ "syscall.ETHERTYPE_NBS": "syscall",
+ "syscall.ETHERTYPE_NCD": "syscall",
+ "syscall.ETHERTYPE_NESTAR": "syscall",
+ "syscall.ETHERTYPE_NETBEUI": "syscall",
+ "syscall.ETHERTYPE_NOVELL": "syscall",
+ "syscall.ETHERTYPE_NS": "syscall",
+ "syscall.ETHERTYPE_NSAT": "syscall",
+ "syscall.ETHERTYPE_NSCOMPAT": "syscall",
+ "syscall.ETHERTYPE_NTRAILER": "syscall",
+ "syscall.ETHERTYPE_OS9": "syscall",
+ "syscall.ETHERTYPE_OS9NET": "syscall",
+ "syscall.ETHERTYPE_PACER": "syscall",
+ "syscall.ETHERTYPE_PAE": "syscall",
+ "syscall.ETHERTYPE_PCS": "syscall",
+ "syscall.ETHERTYPE_PLANNING": "syscall",
+ "syscall.ETHERTYPE_PPP": "syscall",
+ "syscall.ETHERTYPE_PPPOE": "syscall",
+ "syscall.ETHERTYPE_PPPOEDISC": "syscall",
+ "syscall.ETHERTYPE_PRIMENTS": "syscall",
+ "syscall.ETHERTYPE_PUP": "syscall",
+ "syscall.ETHERTYPE_PUPAT": "syscall",
+ "syscall.ETHERTYPE_QINQ": "syscall",
+ "syscall.ETHERTYPE_RACAL": "syscall",
+ "syscall.ETHERTYPE_RATIONAL": "syscall",
+ "syscall.ETHERTYPE_RAWFR": "syscall",
+ "syscall.ETHERTYPE_RCL": "syscall",
+ "syscall.ETHERTYPE_RDP": "syscall",
+ "syscall.ETHERTYPE_RETIX": "syscall",
+ "syscall.ETHERTYPE_REVARP": "syscall",
+ "syscall.ETHERTYPE_SCA": "syscall",
+ "syscall.ETHERTYPE_SECTRA": "syscall",
+ "syscall.ETHERTYPE_SECUREDATA": "syscall",
+ "syscall.ETHERTYPE_SGITW": "syscall",
+ "syscall.ETHERTYPE_SG_BOUNCE": "syscall",
+ "syscall.ETHERTYPE_SG_DIAG": "syscall",
+ "syscall.ETHERTYPE_SG_NETGAMES": "syscall",
+ "syscall.ETHERTYPE_SG_RESV": "syscall",
+ "syscall.ETHERTYPE_SIMNET": "syscall",
+ "syscall.ETHERTYPE_SLOW": "syscall",
+ "syscall.ETHERTYPE_SLOWPROTOCOLS": "syscall",
+ "syscall.ETHERTYPE_SNA": "syscall",
+ "syscall.ETHERTYPE_SNMP": "syscall",
+ "syscall.ETHERTYPE_SONIX": "syscall",
+ "syscall.ETHERTYPE_SPIDER": "syscall",
+ "syscall.ETHERTYPE_SPRITE": "syscall",
+ "syscall.ETHERTYPE_STP": "syscall",
+ "syscall.ETHERTYPE_TALARIS": "syscall",
+ "syscall.ETHERTYPE_TALARISMC": "syscall",
+ "syscall.ETHERTYPE_TCPCOMP": "syscall",
+ "syscall.ETHERTYPE_TCPSM": "syscall",
+ "syscall.ETHERTYPE_TEC": "syscall",
+ "syscall.ETHERTYPE_TIGAN": "syscall",
+ "syscall.ETHERTYPE_TRAIL": "syscall",
+ "syscall.ETHERTYPE_TRANSETHER": "syscall",
+ "syscall.ETHERTYPE_TYMSHARE": "syscall",
+ "syscall.ETHERTYPE_UBBST": "syscall",
+ "syscall.ETHERTYPE_UBDEBUG": "syscall",
+ "syscall.ETHERTYPE_UBDIAGLOOP": "syscall",
+ "syscall.ETHERTYPE_UBDL": "syscall",
+ "syscall.ETHERTYPE_UBNIU": "syscall",
+ "syscall.ETHERTYPE_UBNMC": "syscall",
+ "syscall.ETHERTYPE_VALID": "syscall",
+ "syscall.ETHERTYPE_VARIAN": "syscall",
+ "syscall.ETHERTYPE_VAXELN": "syscall",
+ "syscall.ETHERTYPE_VEECO": "syscall",
+ "syscall.ETHERTYPE_VEXP": "syscall",
+ "syscall.ETHERTYPE_VGLAB": "syscall",
+ "syscall.ETHERTYPE_VINES": "syscall",
+ "syscall.ETHERTYPE_VINESECHO": "syscall",
+ "syscall.ETHERTYPE_VINESLOOP": "syscall",
+ "syscall.ETHERTYPE_VITAL": "syscall",
+ "syscall.ETHERTYPE_VLAN": "syscall",
+ "syscall.ETHERTYPE_VLTLMAN": "syscall",
+ "syscall.ETHERTYPE_VPROD": "syscall",
+ "syscall.ETHERTYPE_VURESERVED": "syscall",
+ "syscall.ETHERTYPE_WATERLOO": "syscall",
+ "syscall.ETHERTYPE_WELLFLEET": "syscall",
+ "syscall.ETHERTYPE_X25": "syscall",
+ "syscall.ETHERTYPE_X75": "syscall",
+ "syscall.ETHERTYPE_XNSSM": "syscall",
+ "syscall.ETHERTYPE_XTP": "syscall",
+ "syscall.ETHER_ADDR_LEN": "syscall",
+ "syscall.ETHER_ALIGN": "syscall",
+ "syscall.ETHER_CRC_LEN": "syscall",
+ "syscall.ETHER_CRC_POLY_BE": "syscall",
+ "syscall.ETHER_CRC_POLY_LE": "syscall",
+ "syscall.ETHER_HDR_LEN": "syscall",
+ "syscall.ETHER_MAX_DIX_LEN": "syscall",
+ "syscall.ETHER_MAX_LEN": "syscall",
+ "syscall.ETHER_MAX_LEN_JUMBO": "syscall",
+ "syscall.ETHER_MIN_LEN": "syscall",
+ "syscall.ETHER_PPPOE_ENCAP_LEN": "syscall",
+ "syscall.ETHER_TYPE_LEN": "syscall",
+ "syscall.ETHER_VLAN_ENCAP_LEN": "syscall",
+ "syscall.ETH_P_1588": "syscall",
+ "syscall.ETH_P_8021Q": "syscall",
+ "syscall.ETH_P_802_2": "syscall",
+ "syscall.ETH_P_802_3": "syscall",
+ "syscall.ETH_P_AARP": "syscall",
+ "syscall.ETH_P_ALL": "syscall",
+ "syscall.ETH_P_AOE": "syscall",
+ "syscall.ETH_P_ARCNET": "syscall",
+ "syscall.ETH_P_ARP": "syscall",
+ "syscall.ETH_P_ATALK": "syscall",
+ "syscall.ETH_P_ATMFATE": "syscall",
+ "syscall.ETH_P_ATMMPOA": "syscall",
+ "syscall.ETH_P_AX25": "syscall",
+ "syscall.ETH_P_BPQ": "syscall",
+ "syscall.ETH_P_CAIF": "syscall",
+ "syscall.ETH_P_CAN": "syscall",
+ "syscall.ETH_P_CONTROL": "syscall",
+ "syscall.ETH_P_CUST": "syscall",
+ "syscall.ETH_P_DDCMP": "syscall",
+ "syscall.ETH_P_DEC": "syscall",
+ "syscall.ETH_P_DIAG": "syscall",
+ "syscall.ETH_P_DNA_DL": "syscall",
+ "syscall.ETH_P_DNA_RC": "syscall",
+ "syscall.ETH_P_DNA_RT": "syscall",
+ "syscall.ETH_P_DSA": "syscall",
+ "syscall.ETH_P_ECONET": "syscall",
+ "syscall.ETH_P_EDSA": "syscall",
+ "syscall.ETH_P_FCOE": "syscall",
+ "syscall.ETH_P_FIP": "syscall",
+ "syscall.ETH_P_HDLC": "syscall",
+ "syscall.ETH_P_IEEE802154": "syscall",
+ "syscall.ETH_P_IEEEPUP": "syscall",
+ "syscall.ETH_P_IEEEPUPAT": "syscall",
+ "syscall.ETH_P_IP": "syscall",
+ "syscall.ETH_P_IPV6": "syscall",
+ "syscall.ETH_P_IPX": "syscall",
+ "syscall.ETH_P_IRDA": "syscall",
+ "syscall.ETH_P_LAT": "syscall",
+ "syscall.ETH_P_LINK_CTL": "syscall",
+ "syscall.ETH_P_LOCALTALK": "syscall",
+ "syscall.ETH_P_LOOP": "syscall",
+ "syscall.ETH_P_MOBITEX": "syscall",
+ "syscall.ETH_P_MPLS_MC": "syscall",
+ "syscall.ETH_P_MPLS_UC": "syscall",
+ "syscall.ETH_P_PAE": "syscall",
+ "syscall.ETH_P_PAUSE": "syscall",
+ "syscall.ETH_P_PHONET": "syscall",
+ "syscall.ETH_P_PPPTALK": "syscall",
+ "syscall.ETH_P_PPP_DISC": "syscall",
+ "syscall.ETH_P_PPP_MP": "syscall",
+ "syscall.ETH_P_PPP_SES": "syscall",
+ "syscall.ETH_P_PUP": "syscall",
+ "syscall.ETH_P_PUPAT": "syscall",
+ "syscall.ETH_P_RARP": "syscall",
+ "syscall.ETH_P_SCA": "syscall",
+ "syscall.ETH_P_SLOW": "syscall",
+ "syscall.ETH_P_SNAP": "syscall",
+ "syscall.ETH_P_TEB": "syscall",
+ "syscall.ETH_P_TIPC": "syscall",
+ "syscall.ETH_P_TRAILER": "syscall",
+ "syscall.ETH_P_TR_802_2": "syscall",
+ "syscall.ETH_P_WAN_PPP": "syscall",
+ "syscall.ETH_P_WCCP": "syscall",
+ "syscall.ETH_P_X25": "syscall",
+ "syscall.ETIME": "syscall",
+ "syscall.ETIMEDOUT": "syscall",
+ "syscall.ETOOMANYREFS": "syscall",
+ "syscall.ETXTBSY": "syscall",
+ "syscall.EUCLEAN": "syscall",
+ "syscall.EUNATCH": "syscall",
+ "syscall.EUSERS": "syscall",
+ "syscall.EVFILT_AIO": "syscall",
+ "syscall.EVFILT_FS": "syscall",
+ "syscall.EVFILT_LIO": "syscall",
+ "syscall.EVFILT_MACHPORT": "syscall",
+ "syscall.EVFILT_PROC": "syscall",
+ "syscall.EVFILT_READ": "syscall",
+ "syscall.EVFILT_SIGNAL": "syscall",
+ "syscall.EVFILT_SYSCOUNT": "syscall",
+ "syscall.EVFILT_THREADMARKER": "syscall",
+ "syscall.EVFILT_TIMER": "syscall",
+ "syscall.EVFILT_USER": "syscall",
+ "syscall.EVFILT_VM": "syscall",
+ "syscall.EVFILT_VNODE": "syscall",
+ "syscall.EVFILT_WRITE": "syscall",
+ "syscall.EV_ADD": "syscall",
+ "syscall.EV_CLEAR": "syscall",
+ "syscall.EV_DELETE": "syscall",
+ "syscall.EV_DISABLE": "syscall",
+ "syscall.EV_DISPATCH": "syscall",
+ "syscall.EV_DROP": "syscall",
+ "syscall.EV_ENABLE": "syscall",
+ "syscall.EV_EOF": "syscall",
+ "syscall.EV_ERROR": "syscall",
+ "syscall.EV_FLAG0": "syscall",
+ "syscall.EV_FLAG1": "syscall",
+ "syscall.EV_ONESHOT": "syscall",
+ "syscall.EV_OOBAND": "syscall",
+ "syscall.EV_POLL": "syscall",
+ "syscall.EV_RECEIPT": "syscall",
+ "syscall.EV_SYSFLAGS": "syscall",
+ "syscall.EWINDOWS": "syscall",
+ "syscall.EWOULDBLOCK": "syscall",
+ "syscall.EXDEV": "syscall",
+ "syscall.EXFULL": "syscall",
+ "syscall.EXTA": "syscall",
+ "syscall.EXTB": "syscall",
+ "syscall.EXTPROC": "syscall",
+ "syscall.Environ": "syscall",
+ "syscall.EpollCreate": "syscall",
+ "syscall.EpollCreate1": "syscall",
+ "syscall.EpollCtl": "syscall",
+ "syscall.EpollEvent": "syscall",
+ "syscall.EpollWait": "syscall",
+ "syscall.Errno": "syscall",
+ "syscall.EscapeArg": "syscall",
+ "syscall.Exchangedata": "syscall",
+ "syscall.Exec": "syscall",
+ "syscall.Exit": "syscall",
+ "syscall.ExitProcess": "syscall",
+ "syscall.FD_CLOEXEC": "syscall",
+ "syscall.FD_SETSIZE": "syscall",
+ "syscall.FILE_ACTION_ADDED": "syscall",
+ "syscall.FILE_ACTION_MODIFIED": "syscall",
+ "syscall.FILE_ACTION_REMOVED": "syscall",
+ "syscall.FILE_ACTION_RENAMED_NEW_NAME": "syscall",
+ "syscall.FILE_ACTION_RENAMED_OLD_NAME": "syscall",
+ "syscall.FILE_APPEND_DATA": "syscall",
+ "syscall.FILE_ATTRIBUTE_ARCHIVE": "syscall",
+ "syscall.FILE_ATTRIBUTE_DIRECTORY": "syscall",
+ "syscall.FILE_ATTRIBUTE_HIDDEN": "syscall",
+ "syscall.FILE_ATTRIBUTE_NORMAL": "syscall",
+ "syscall.FILE_ATTRIBUTE_READONLY": "syscall",
+ "syscall.FILE_ATTRIBUTE_REPARSE_POINT": "syscall",
+ "syscall.FILE_ATTRIBUTE_SYSTEM": "syscall",
+ "syscall.FILE_BEGIN": "syscall",
+ "syscall.FILE_CURRENT": "syscall",
+ "syscall.FILE_END": "syscall",
+ "syscall.FILE_FLAG_BACKUP_SEMANTICS": "syscall",
+ "syscall.FILE_FLAG_OPEN_REPARSE_POINT": "syscall",
+ "syscall.FILE_FLAG_OVERLAPPED": "syscall",
+ "syscall.FILE_LIST_DIRECTORY": "syscall",
+ "syscall.FILE_MAP_COPY": "syscall",
+ "syscall.FILE_MAP_EXECUTE": "syscall",
+ "syscall.FILE_MAP_READ": "syscall",
+ "syscall.FILE_MAP_WRITE": "syscall",
+ "syscall.FILE_NOTIFY_CHANGE_ATTRIBUTES": "syscall",
+ "syscall.FILE_NOTIFY_CHANGE_CREATION": "syscall",
+ "syscall.FILE_NOTIFY_CHANGE_DIR_NAME": "syscall",
+ "syscall.FILE_NOTIFY_CHANGE_FILE_NAME": "syscall",
+ "syscall.FILE_NOTIFY_CHANGE_LAST_ACCESS": "syscall",
+ "syscall.FILE_NOTIFY_CHANGE_LAST_WRITE": "syscall",
+ "syscall.FILE_NOTIFY_CHANGE_SIZE": "syscall",
+ "syscall.FILE_SHARE_DELETE": "syscall",
+ "syscall.FILE_SHARE_READ": "syscall",
+ "syscall.FILE_SHARE_WRITE": "syscall",
+ "syscall.FILE_SKIP_COMPLETION_PORT_ON_SUCCESS": "syscall",
+ "syscall.FILE_SKIP_SET_EVENT_ON_HANDLE": "syscall",
+ "syscall.FILE_TYPE_CHAR": "syscall",
+ "syscall.FILE_TYPE_DISK": "syscall",
+ "syscall.FILE_TYPE_PIPE": "syscall",
+ "syscall.FILE_TYPE_REMOTE": "syscall",
+ "syscall.FILE_TYPE_UNKNOWN": "syscall",
+ "syscall.FILE_WRITE_ATTRIBUTES": "syscall",
+ "syscall.FLUSHO": "syscall",
+ "syscall.FORMAT_MESSAGE_ALLOCATE_BUFFER": "syscall",
+ "syscall.FORMAT_MESSAGE_ARGUMENT_ARRAY": "syscall",
+ "syscall.FORMAT_MESSAGE_FROM_HMODULE": "syscall",
+ "syscall.FORMAT_MESSAGE_FROM_STRING": "syscall",
+ "syscall.FORMAT_MESSAGE_FROM_SYSTEM": "syscall",
+ "syscall.FORMAT_MESSAGE_IGNORE_INSERTS": "syscall",
+ "syscall.FORMAT_MESSAGE_MAX_WIDTH_MASK": "syscall",
+ "syscall.FSCTL_GET_REPARSE_POINT": "syscall",
+ "syscall.F_ADDFILESIGS": "syscall",
+ "syscall.F_ADDSIGS": "syscall",
+ "syscall.F_ALLOCATEALL": "syscall",
+ "syscall.F_ALLOCATECONTIG": "syscall",
+ "syscall.F_CANCEL": "syscall",
+ "syscall.F_CHKCLEAN": "syscall",
+ "syscall.F_CLOSEM": "syscall",
+ "syscall.F_DUP2FD": "syscall",
+ "syscall.F_DUP2FD_CLOEXEC": "syscall",
+ "syscall.F_DUPFD": "syscall",
+ "syscall.F_DUPFD_CLOEXEC": "syscall",
+ "syscall.F_EXLCK": "syscall",
+ "syscall.F_FLUSH_DATA": "syscall",
+ "syscall.F_FREEZE_FS": "syscall",
+ "syscall.F_FSCTL": "syscall",
+ "syscall.F_FSDIRMASK": "syscall",
+ "syscall.F_FSIN": "syscall",
+ "syscall.F_FSINOUT": "syscall",
+ "syscall.F_FSOUT": "syscall",
+ "syscall.F_FSPRIV": "syscall",
+ "syscall.F_FSVOID": "syscall",
+ "syscall.F_FULLFSYNC": "syscall",
+ "syscall.F_GETFD": "syscall",
+ "syscall.F_GETFL": "syscall",
+ "syscall.F_GETLEASE": "syscall",
+ "syscall.F_GETLK": "syscall",
+ "syscall.F_GETLK64": "syscall",
+ "syscall.F_GETLKPID": "syscall",
+ "syscall.F_GETNOSIGPIPE": "syscall",
+ "syscall.F_GETOWN": "syscall",
+ "syscall.F_GETOWN_EX": "syscall",
+ "syscall.F_GETPATH": "syscall",
+ "syscall.F_GETPATH_MTMINFO": "syscall",
+ "syscall.F_GETPIPE_SZ": "syscall",
+ "syscall.F_GETPROTECTIONCLASS": "syscall",
+ "syscall.F_GETSIG": "syscall",
+ "syscall.F_GLOBAL_NOCACHE": "syscall",
+ "syscall.F_LOCK": "syscall",
+ "syscall.F_LOG2PHYS": "syscall",
+ "syscall.F_LOG2PHYS_EXT": "syscall",
+ "syscall.F_MARKDEPENDENCY": "syscall",
+ "syscall.F_MAXFD": "syscall",
+ "syscall.F_NOCACHE": "syscall",
+ "syscall.F_NODIRECT": "syscall",
+ "syscall.F_NOTIFY": "syscall",
+ "syscall.F_OGETLK": "syscall",
+ "syscall.F_OK": "syscall",
+ "syscall.F_OSETLK": "syscall",
+ "syscall.F_OSETLKW": "syscall",
+ "syscall.F_PARAM_MASK": "syscall",
+ "syscall.F_PARAM_MAX": "syscall",
+ "syscall.F_PATHPKG_CHECK": "syscall",
+ "syscall.F_PEOFPOSMODE": "syscall",
+ "syscall.F_PREALLOCATE": "syscall",
+ "syscall.F_RDADVISE": "syscall",
+ "syscall.F_RDAHEAD": "syscall",
+ "syscall.F_RDLCK": "syscall",
+ "syscall.F_READAHEAD": "syscall",
+ "syscall.F_READBOOTSTRAP": "syscall",
+ "syscall.F_SETBACKINGSTORE": "syscall",
+ "syscall.F_SETFD": "syscall",
+ "syscall.F_SETFL": "syscall",
+ "syscall.F_SETLEASE": "syscall",
+ "syscall.F_SETLK": "syscall",
+ "syscall.F_SETLK64": "syscall",
+ "syscall.F_SETLKW": "syscall",
+ "syscall.F_SETLKW64": "syscall",
+ "syscall.F_SETLK_REMOTE": "syscall",
+ "syscall.F_SETNOSIGPIPE": "syscall",
+ "syscall.F_SETOWN": "syscall",
+ "syscall.F_SETOWN_EX": "syscall",
+ "syscall.F_SETPIPE_SZ": "syscall",
+ "syscall.F_SETPROTECTIONCLASS": "syscall",
+ "syscall.F_SETSIG": "syscall",
+ "syscall.F_SETSIZE": "syscall",
+ "syscall.F_SHLCK": "syscall",
+ "syscall.F_TEST": "syscall",
+ "syscall.F_THAW_FS": "syscall",
+ "syscall.F_TLOCK": "syscall",
+ "syscall.F_ULOCK": "syscall",
+ "syscall.F_UNLCK": "syscall",
+ "syscall.F_UNLCKSYS": "syscall",
+ "syscall.F_VOLPOSMODE": "syscall",
+ "syscall.F_WRITEBOOTSTRAP": "syscall",
+ "syscall.F_WRLCK": "syscall",
+ "syscall.Faccessat": "syscall",
+ "syscall.Fallocate": "syscall",
+ "syscall.Fbootstraptransfer_t": "syscall",
+ "syscall.Fchdir": "syscall",
+ "syscall.Fchflags": "syscall",
+ "syscall.Fchmod": "syscall",
+ "syscall.Fchmodat": "syscall",
+ "syscall.Fchown": "syscall",
+ "syscall.Fchownat": "syscall",
+ "syscall.FcntlFlock": "syscall",
+ "syscall.FdSet": "syscall",
+ "syscall.Fdatasync": "syscall",
+ "syscall.FileNotifyInformation": "syscall",
+ "syscall.Filetime": "syscall",
+ "syscall.FindClose": "syscall",
+ "syscall.FindFirstFile": "syscall",
+ "syscall.FindNextFile": "syscall",
+ "syscall.Flock": "syscall",
+ "syscall.Flock_t": "syscall",
+ "syscall.FlushBpf": "syscall",
+ "syscall.FlushFileBuffers": "syscall",
+ "syscall.FlushViewOfFile": "syscall",
+ "syscall.ForkExec": "syscall",
+ "syscall.ForkLock": "syscall",
+ "syscall.FormatMessage": "syscall",
+ "syscall.Fpathconf": "syscall",
+ "syscall.FreeAddrInfoW": "syscall",
+ "syscall.FreeEnvironmentStrings": "syscall",
+ "syscall.FreeLibrary": "syscall",
+ "syscall.Fsid": "syscall",
+ "syscall.Fstat": "syscall",
+ "syscall.Fstatfs": "syscall",
+ "syscall.Fstore_t": "syscall",
+ "syscall.Fsync": "syscall",
+ "syscall.Ftruncate": "syscall",
+ "syscall.FullPath": "syscall",
+ "syscall.Futimes": "syscall",
+ "syscall.Futimesat": "syscall",
+ "syscall.GENERIC_ALL": "syscall",
+ "syscall.GENERIC_EXECUTE": "syscall",
+ "syscall.GENERIC_READ": "syscall",
+ "syscall.GENERIC_WRITE": "syscall",
+ "syscall.GUID": "syscall",
+ "syscall.GetAcceptExSockaddrs": "syscall",
+ "syscall.GetAdaptersInfo": "syscall",
+ "syscall.GetAddrInfoW": "syscall",
+ "syscall.GetCommandLine": "syscall",
+ "syscall.GetComputerName": "syscall",
+ "syscall.GetConsoleMode": "syscall",
+ "syscall.GetCurrentDirectory": "syscall",
+ "syscall.GetCurrentProcess": "syscall",
+ "syscall.GetEnvironmentStrings": "syscall",
+ "syscall.GetEnvironmentVariable": "syscall",
+ "syscall.GetExitCodeProcess": "syscall",
+ "syscall.GetFileAttributes": "syscall",
+ "syscall.GetFileAttributesEx": "syscall",
+ "syscall.GetFileExInfoStandard": "syscall",
+ "syscall.GetFileExMaxInfoLevel": "syscall",
+ "syscall.GetFileInformationByHandle": "syscall",
+ "syscall.GetFileType": "syscall",
+ "syscall.GetFullPathName": "syscall",
+ "syscall.GetHostByName": "syscall",
+ "syscall.GetIfEntry": "syscall",
+ "syscall.GetLastError": "syscall",
+ "syscall.GetLengthSid": "syscall",
+ "syscall.GetLongPathName": "syscall",
+ "syscall.GetProcAddress": "syscall",
+ "syscall.GetProcessTimes": "syscall",
+ "syscall.GetProtoByName": "syscall",
+ "syscall.GetQueuedCompletionStatus": "syscall",
+ "syscall.GetServByName": "syscall",
+ "syscall.GetShortPathName": "syscall",
+ "syscall.GetStartupInfo": "syscall",
+ "syscall.GetStdHandle": "syscall",
+ "syscall.GetSystemTimeAsFileTime": "syscall",
+ "syscall.GetTempPath": "syscall",
+ "syscall.GetTimeZoneInformation": "syscall",
+ "syscall.GetTokenInformation": "syscall",
+ "syscall.GetUserNameEx": "syscall",
+ "syscall.GetUserProfileDirectory": "syscall",
+ "syscall.GetVersion": "syscall",
+ "syscall.Getcwd": "syscall",
+ "syscall.Getdents": "syscall",
+ "syscall.Getdirentries": "syscall",
+ "syscall.Getdtablesize": "syscall",
+ "syscall.Getegid": "syscall",
+ "syscall.Getenv": "syscall",
+ "syscall.Geteuid": "syscall",
+ "syscall.Getfsstat": "syscall",
+ "syscall.Getgid": "syscall",
+ "syscall.Getgroups": "syscall",
+ "syscall.Getpagesize": "syscall",
+ "syscall.Getpeername": "syscall",
+ "syscall.Getpgid": "syscall",
+ "syscall.Getpgrp": "syscall",
+ "syscall.Getpid": "syscall",
+ "syscall.Getppid": "syscall",
+ "syscall.Getpriority": "syscall",
+ "syscall.Getrlimit": "syscall",
+ "syscall.Getrusage": "syscall",
+ "syscall.Getsid": "syscall",
+ "syscall.Getsockname": "syscall",
+ "syscall.Getsockopt": "syscall",
+ "syscall.GetsockoptByte": "syscall",
+ "syscall.GetsockoptICMPv6Filter": "syscall",
+ "syscall.GetsockoptIPMreq": "syscall",
+ "syscall.GetsockoptIPMreqn": "syscall",
+ "syscall.GetsockoptIPv6MTUInfo": "syscall",
+ "syscall.GetsockoptIPv6Mreq": "syscall",
+ "syscall.GetsockoptInet4Addr": "syscall",
+ "syscall.GetsockoptInt": "syscall",
+ "syscall.GetsockoptUcred": "syscall",
+ "syscall.Gettid": "syscall",
+ "syscall.Gettimeofday": "syscall",
+ "syscall.Getuid": "syscall",
+ "syscall.Getwd": "syscall",
+ "syscall.Getxattr": "syscall",
+ "syscall.HANDLE_FLAG_INHERIT": "syscall",
+ "syscall.HKEY_CLASSES_ROOT": "syscall",
+ "syscall.HKEY_CURRENT_CONFIG": "syscall",
+ "syscall.HKEY_CURRENT_USER": "syscall",
+ "syscall.HKEY_DYN_DATA": "syscall",
+ "syscall.HKEY_LOCAL_MACHINE": "syscall",
+ "syscall.HKEY_PERFORMANCE_DATA": "syscall",
+ "syscall.HKEY_USERS": "syscall",
+ "syscall.HUPCL": "syscall",
+ "syscall.Handle": "syscall",
+ "syscall.Hostent": "syscall",
+ "syscall.ICANON": "syscall",
+ "syscall.ICMP6_FILTER": "syscall",
+ "syscall.ICMPV6_FILTER": "syscall",
+ "syscall.ICMPv6Filter": "syscall",
+ "syscall.ICRNL": "syscall",
+ "syscall.IEXTEN": "syscall",
+ "syscall.IFAN_ARRIVAL": "syscall",
+ "syscall.IFAN_DEPARTURE": "syscall",
+ "syscall.IFA_ADDRESS": "syscall",
+ "syscall.IFA_ANYCAST": "syscall",
+ "syscall.IFA_BROADCAST": "syscall",
+ "syscall.IFA_CACHEINFO": "syscall",
+ "syscall.IFA_F_DADFAILED": "syscall",
+ "syscall.IFA_F_DEPRECATED": "syscall",
+ "syscall.IFA_F_HOMEADDRESS": "syscall",
+ "syscall.IFA_F_NODAD": "syscall",
+ "syscall.IFA_F_OPTIMISTIC": "syscall",
+ "syscall.IFA_F_PERMANENT": "syscall",
+ "syscall.IFA_F_SECONDARY": "syscall",
+ "syscall.IFA_F_TEMPORARY": "syscall",
+ "syscall.IFA_F_TENTATIVE": "syscall",
+ "syscall.IFA_LABEL": "syscall",
+ "syscall.IFA_LOCAL": "syscall",
+ "syscall.IFA_MAX": "syscall",
+ "syscall.IFA_MULTICAST": "syscall",
+ "syscall.IFA_ROUTE": "syscall",
+ "syscall.IFA_UNSPEC": "syscall",
+ "syscall.IFF_ALLMULTI": "syscall",
+ "syscall.IFF_ALTPHYS": "syscall",
+ "syscall.IFF_AUTOMEDIA": "syscall",
+ "syscall.IFF_BROADCAST": "syscall",
+ "syscall.IFF_CANTCHANGE": "syscall",
+ "syscall.IFF_CANTCONFIG": "syscall",
+ "syscall.IFF_DEBUG": "syscall",
+ "syscall.IFF_DRV_OACTIVE": "syscall",
+ "syscall.IFF_DRV_RUNNING": "syscall",
+ "syscall.IFF_DYING": "syscall",
+ "syscall.IFF_DYNAMIC": "syscall",
+ "syscall.IFF_LINK0": "syscall",
+ "syscall.IFF_LINK1": "syscall",
+ "syscall.IFF_LINK2": "syscall",
+ "syscall.IFF_LOOPBACK": "syscall",
+ "syscall.IFF_MASTER": "syscall",
+ "syscall.IFF_MONITOR": "syscall",
+ "syscall.IFF_MULTICAST": "syscall",
+ "syscall.IFF_NOARP": "syscall",
+ "syscall.IFF_NOTRAILERS": "syscall",
+ "syscall.IFF_NO_PI": "syscall",
+ "syscall.IFF_OACTIVE": "syscall",
+ "syscall.IFF_ONE_QUEUE": "syscall",
+ "syscall.IFF_POINTOPOINT": "syscall",
+ "syscall.IFF_POINTTOPOINT": "syscall",
+ "syscall.IFF_PORTSEL": "syscall",
+ "syscall.IFF_PPROMISC": "syscall",
+ "syscall.IFF_PROMISC": "syscall",
+ "syscall.IFF_RENAMING": "syscall",
+ "syscall.IFF_RUNNING": "syscall",
+ "syscall.IFF_SIMPLEX": "syscall",
+ "syscall.IFF_SLAVE": "syscall",
+ "syscall.IFF_SMART": "syscall",
+ "syscall.IFF_STATICARP": "syscall",
+ "syscall.IFF_TAP": "syscall",
+ "syscall.IFF_TUN": "syscall",
+ "syscall.IFF_TUN_EXCL": "syscall",
+ "syscall.IFF_UP": "syscall",
+ "syscall.IFF_VNET_HDR": "syscall",
+ "syscall.IFLA_ADDRESS": "syscall",
+ "syscall.IFLA_BROADCAST": "syscall",
+ "syscall.IFLA_COST": "syscall",
+ "syscall.IFLA_IFALIAS": "syscall",
+ "syscall.IFLA_IFNAME": "syscall",
+ "syscall.IFLA_LINK": "syscall",
+ "syscall.IFLA_LINKINFO": "syscall",
+ "syscall.IFLA_LINKMODE": "syscall",
+ "syscall.IFLA_MAP": "syscall",
+ "syscall.IFLA_MASTER": "syscall",
+ "syscall.IFLA_MAX": "syscall",
+ "syscall.IFLA_MTU": "syscall",
+ "syscall.IFLA_NET_NS_PID": "syscall",
+ "syscall.IFLA_OPERSTATE": "syscall",
+ "syscall.IFLA_PRIORITY": "syscall",
+ "syscall.IFLA_PROTINFO": "syscall",
+ "syscall.IFLA_QDISC": "syscall",
+ "syscall.IFLA_STATS": "syscall",
+ "syscall.IFLA_TXQLEN": "syscall",
+ "syscall.IFLA_UNSPEC": "syscall",
+ "syscall.IFLA_WEIGHT": "syscall",
+ "syscall.IFLA_WIRELESS": "syscall",
+ "syscall.IFNAMSIZ": "syscall",
+ "syscall.IFT_1822": "syscall",
+ "syscall.IFT_A12MPPSWITCH": "syscall",
+ "syscall.IFT_AAL2": "syscall",
+ "syscall.IFT_AAL5": "syscall",
+ "syscall.IFT_ADSL": "syscall",
+ "syscall.IFT_AFLANE8023": "syscall",
+ "syscall.IFT_AFLANE8025": "syscall",
+ "syscall.IFT_ARAP": "syscall",
+ "syscall.IFT_ARCNET": "syscall",
+ "syscall.IFT_ARCNETPLUS": "syscall",
+ "syscall.IFT_ASYNC": "syscall",
+ "syscall.IFT_ATM": "syscall",
+ "syscall.IFT_ATMDXI": "syscall",
+ "syscall.IFT_ATMFUNI": "syscall",
+ "syscall.IFT_ATMIMA": "syscall",
+ "syscall.IFT_ATMLOGICAL": "syscall",
+ "syscall.IFT_ATMRADIO": "syscall",
+ "syscall.IFT_ATMSUBINTERFACE": "syscall",
+ "syscall.IFT_ATMVCIENDPT": "syscall",
+ "syscall.IFT_ATMVIRTUAL": "syscall",
+ "syscall.IFT_BGPPOLICYACCOUNTING": "syscall",
+ "syscall.IFT_BLUETOOTH": "syscall",
+ "syscall.IFT_BRIDGE": "syscall",
+ "syscall.IFT_BSC": "syscall",
+ "syscall.IFT_CARP": "syscall",
+ "syscall.IFT_CCTEMUL": "syscall",
+ "syscall.IFT_CELLULAR": "syscall",
+ "syscall.IFT_CEPT": "syscall",
+ "syscall.IFT_CES": "syscall",
+ "syscall.IFT_CHANNEL": "syscall",
+ "syscall.IFT_CNR": "syscall",
+ "syscall.IFT_COFFEE": "syscall",
+ "syscall.IFT_COMPOSITELINK": "syscall",
+ "syscall.IFT_DCN": "syscall",
+ "syscall.IFT_DIGITALPOWERLINE": "syscall",
+ "syscall.IFT_DIGITALWRAPPEROVERHEADCHANNEL": "syscall",
+ "syscall.IFT_DLSW": "syscall",
+ "syscall.IFT_DOCSCABLEDOWNSTREAM": "syscall",
+ "syscall.IFT_DOCSCABLEMACLAYER": "syscall",
+ "syscall.IFT_DOCSCABLEUPSTREAM": "syscall",
+ "syscall.IFT_DOCSCABLEUPSTREAMCHANNEL": "syscall",
+ "syscall.IFT_DS0": "syscall",
+ "syscall.IFT_DS0BUNDLE": "syscall",
+ "syscall.IFT_DS1FDL": "syscall",
+ "syscall.IFT_DS3": "syscall",
+ "syscall.IFT_DTM": "syscall",
+ "syscall.IFT_DUMMY": "syscall",
+ "syscall.IFT_DVBASILN": "syscall",
+ "syscall.IFT_DVBASIOUT": "syscall",
+ "syscall.IFT_DVBRCCDOWNSTREAM": "syscall",
+ "syscall.IFT_DVBRCCMACLAYER": "syscall",
+ "syscall.IFT_DVBRCCUPSTREAM": "syscall",
+ "syscall.IFT_ECONET": "syscall",
+ "syscall.IFT_ENC": "syscall",
+ "syscall.IFT_EON": "syscall",
+ "syscall.IFT_EPLRS": "syscall",
+ "syscall.IFT_ESCON": "syscall",
+ "syscall.IFT_ETHER": "syscall",
+ "syscall.IFT_FAITH": "syscall",
+ "syscall.IFT_FAST": "syscall",
+ "syscall.IFT_FASTETHER": "syscall",
+ "syscall.IFT_FASTETHERFX": "syscall",
+ "syscall.IFT_FDDI": "syscall",
+ "syscall.IFT_FIBRECHANNEL": "syscall",
+ "syscall.IFT_FRAMERELAYINTERCONNECT": "syscall",
+ "syscall.IFT_FRAMERELAYMPI": "syscall",
+ "syscall.IFT_FRDLCIENDPT": "syscall",
+ "syscall.IFT_FRELAY": "syscall",
+ "syscall.IFT_FRELAYDCE": "syscall",
+ "syscall.IFT_FRF16MFRBUNDLE": "syscall",
+ "syscall.IFT_FRFORWARD": "syscall",
+ "syscall.IFT_G703AT2MB": "syscall",
+ "syscall.IFT_G703AT64K": "syscall",
+ "syscall.IFT_GIF": "syscall",
+ "syscall.IFT_GIGABITETHERNET": "syscall",
+ "syscall.IFT_GR303IDT": "syscall",
+ "syscall.IFT_GR303RDT": "syscall",
+ "syscall.IFT_H323GATEKEEPER": "syscall",
+ "syscall.IFT_H323PROXY": "syscall",
+ "syscall.IFT_HDH1822": "syscall",
+ "syscall.IFT_HDLC": "syscall",
+ "syscall.IFT_HDSL2": "syscall",
+ "syscall.IFT_HIPERLAN2": "syscall",
+ "syscall.IFT_HIPPI": "syscall",
+ "syscall.IFT_HIPPIINTERFACE": "syscall",
+ "syscall.IFT_HOSTPAD": "syscall",
+ "syscall.IFT_HSSI": "syscall",
+ "syscall.IFT_HY": "syscall",
+ "syscall.IFT_IBM370PARCHAN": "syscall",
+ "syscall.IFT_IDSL": "syscall",
+ "syscall.IFT_IEEE1394": "syscall",
+ "syscall.IFT_IEEE80211": "syscall",
+ "syscall.IFT_IEEE80212": "syscall",
+ "syscall.IFT_IEEE8023ADLAG": "syscall",
+ "syscall.IFT_IFGSN": "syscall",
+ "syscall.IFT_IMT": "syscall",
+ "syscall.IFT_INFINIBAND": "syscall",
+ "syscall.IFT_INTERLEAVE": "syscall",
+ "syscall.IFT_IP": "syscall",
+ "syscall.IFT_IPFORWARD": "syscall",
+ "syscall.IFT_IPOVERATM": "syscall",
+ "syscall.IFT_IPOVERCDLC": "syscall",
+ "syscall.IFT_IPOVERCLAW": "syscall",
+ "syscall.IFT_IPSWITCH": "syscall",
+ "syscall.IFT_IPXIP": "syscall",
+ "syscall.IFT_ISDN": "syscall",
+ "syscall.IFT_ISDNBASIC": "syscall",
+ "syscall.IFT_ISDNPRIMARY": "syscall",
+ "syscall.IFT_ISDNS": "syscall",
+ "syscall.IFT_ISDNU": "syscall",
+ "syscall.IFT_ISO88022LLC": "syscall",
+ "syscall.IFT_ISO88023": "syscall",
+ "syscall.IFT_ISO88024": "syscall",
+ "syscall.IFT_ISO88025": "syscall",
+ "syscall.IFT_ISO88025CRFPINT": "syscall",
+ "syscall.IFT_ISO88025DTR": "syscall",
+ "syscall.IFT_ISO88025FIBER": "syscall",
+ "syscall.IFT_ISO88026": "syscall",
+ "syscall.IFT_ISUP": "syscall",
+ "syscall.IFT_L2VLAN": "syscall",
+ "syscall.IFT_L3IPVLAN": "syscall",
+ "syscall.IFT_L3IPXVLAN": "syscall",
+ "syscall.IFT_LAPB": "syscall",
+ "syscall.IFT_LAPD": "syscall",
+ "syscall.IFT_LAPF": "syscall",
+ "syscall.IFT_LINEGROUP": "syscall",
+ "syscall.IFT_LOCALTALK": "syscall",
+ "syscall.IFT_LOOP": "syscall",
+ "syscall.IFT_MEDIAMAILOVERIP": "syscall",
+ "syscall.IFT_MFSIGLINK": "syscall",
+ "syscall.IFT_MIOX25": "syscall",
+ "syscall.IFT_MODEM": "syscall",
+ "syscall.IFT_MPC": "syscall",
+ "syscall.IFT_MPLS": "syscall",
+ "syscall.IFT_MPLSTUNNEL": "syscall",
+ "syscall.IFT_MSDSL": "syscall",
+ "syscall.IFT_MVL": "syscall",
+ "syscall.IFT_MYRINET": "syscall",
+ "syscall.IFT_NFAS": "syscall",
+ "syscall.IFT_NSIP": "syscall",
+ "syscall.IFT_OPTICALCHANNEL": "syscall",
+ "syscall.IFT_OPTICALTRANSPORT": "syscall",
+ "syscall.IFT_OTHER": "syscall",
+ "syscall.IFT_P10": "syscall",
+ "syscall.IFT_P80": "syscall",
+ "syscall.IFT_PARA": "syscall",
+ "syscall.IFT_PDP": "syscall",
+ "syscall.IFT_PFLOG": "syscall",
+ "syscall.IFT_PFLOW": "syscall",
+ "syscall.IFT_PFSYNC": "syscall",
+ "syscall.IFT_PLC": "syscall",
+ "syscall.IFT_PON155": "syscall",
+ "syscall.IFT_PON622": "syscall",
+ "syscall.IFT_POS": "syscall",
+ "syscall.IFT_PPP": "syscall",
+ "syscall.IFT_PPPMULTILINKBUNDLE": "syscall",
+ "syscall.IFT_PROPATM": "syscall",
+ "syscall.IFT_PROPBWAP2MP": "syscall",
+ "syscall.IFT_PROPCNLS": "syscall",
+ "syscall.IFT_PROPDOCSWIRELESSDOWNSTREAM": "syscall",
+ "syscall.IFT_PROPDOCSWIRELESSMACLAYER": "syscall",
+ "syscall.IFT_PROPDOCSWIRELESSUPSTREAM": "syscall",
+ "syscall.IFT_PROPMUX": "syscall",
+ "syscall.IFT_PROPVIRTUAL": "syscall",
+ "syscall.IFT_PROPWIRELESSP2P": "syscall",
+ "syscall.IFT_PTPSERIAL": "syscall",
+ "syscall.IFT_PVC": "syscall",
+ "syscall.IFT_Q2931": "syscall",
+ "syscall.IFT_QLLC": "syscall",
+ "syscall.IFT_RADIOMAC": "syscall",
+ "syscall.IFT_RADSL": "syscall",
+ "syscall.IFT_REACHDSL": "syscall",
+ "syscall.IFT_RFC1483": "syscall",
+ "syscall.IFT_RS232": "syscall",
+ "syscall.IFT_RSRB": "syscall",
+ "syscall.IFT_SDLC": "syscall",
+ "syscall.IFT_SDSL": "syscall",
+ "syscall.IFT_SHDSL": "syscall",
+ "syscall.IFT_SIP": "syscall",
+ "syscall.IFT_SIPSIG": "syscall",
+ "syscall.IFT_SIPTG": "syscall",
+ "syscall.IFT_SLIP": "syscall",
+ "syscall.IFT_SMDSDXI": "syscall",
+ "syscall.IFT_SMDSICIP": "syscall",
+ "syscall.IFT_SONET": "syscall",
+ "syscall.IFT_SONETOVERHEADCHANNEL": "syscall",
+ "syscall.IFT_SONETPATH": "syscall",
+ "syscall.IFT_SONETVT": "syscall",
+ "syscall.IFT_SRP": "syscall",
+ "syscall.IFT_SS7SIGLINK": "syscall",
+ "syscall.IFT_STACKTOSTACK": "syscall",
+ "syscall.IFT_STARLAN": "syscall",
+ "syscall.IFT_STF": "syscall",
+ "syscall.IFT_T1": "syscall",
+ "syscall.IFT_TDLC": "syscall",
+ "syscall.IFT_TELINK": "syscall",
+ "syscall.IFT_TERMPAD": "syscall",
+ "syscall.IFT_TR008": "syscall",
+ "syscall.IFT_TRANSPHDLC": "syscall",
+ "syscall.IFT_TUNNEL": "syscall",
+ "syscall.IFT_ULTRA": "syscall",
+ "syscall.IFT_USB": "syscall",
+ "syscall.IFT_V11": "syscall",
+ "syscall.IFT_V35": "syscall",
+ "syscall.IFT_V36": "syscall",
+ "syscall.IFT_V37": "syscall",
+ "syscall.IFT_VDSL": "syscall",
+ "syscall.IFT_VIRTUALIPADDRESS": "syscall",
+ "syscall.IFT_VIRTUALTG": "syscall",
+ "syscall.IFT_VOICEDID": "syscall",
+ "syscall.IFT_VOICEEM": "syscall",
+ "syscall.IFT_VOICEEMFGD": "syscall",
+ "syscall.IFT_VOICEENCAP": "syscall",
+ "syscall.IFT_VOICEFGDEANA": "syscall",
+ "syscall.IFT_VOICEFXO": "syscall",
+ "syscall.IFT_VOICEFXS": "syscall",
+ "syscall.IFT_VOICEOVERATM": "syscall",
+ "syscall.IFT_VOICEOVERCABLE": "syscall",
+ "syscall.IFT_VOICEOVERFRAMERELAY": "syscall",
+ "syscall.IFT_VOICEOVERIP": "syscall",
+ "syscall.IFT_X213": "syscall",
+ "syscall.IFT_X25": "syscall",
+ "syscall.IFT_X25DDN": "syscall",
+ "syscall.IFT_X25HUNTGROUP": "syscall",
+ "syscall.IFT_X25MLP": "syscall",
+ "syscall.IFT_X25PLE": "syscall",
+ "syscall.IFT_XETHER": "syscall",
+ "syscall.IGNBRK": "syscall",
+ "syscall.IGNCR": "syscall",
+ "syscall.IGNORE": "syscall",
+ "syscall.IGNPAR": "syscall",
+ "syscall.IMAXBEL": "syscall",
+ "syscall.INFINITE": "syscall",
+ "syscall.INLCR": "syscall",
+ "syscall.INPCK": "syscall",
+ "syscall.INVALID_FILE_ATTRIBUTES": "syscall",
+ "syscall.IN_ACCESS": "syscall",
+ "syscall.IN_ALL_EVENTS": "syscall",
+ "syscall.IN_ATTRIB": "syscall",
+ "syscall.IN_CLASSA_HOST": "syscall",
+ "syscall.IN_CLASSA_MAX": "syscall",
+ "syscall.IN_CLASSA_NET": "syscall",
+ "syscall.IN_CLASSA_NSHIFT": "syscall",
+ "syscall.IN_CLASSB_HOST": "syscall",
+ "syscall.IN_CLASSB_MAX": "syscall",
+ "syscall.IN_CLASSB_NET": "syscall",
+ "syscall.IN_CLASSB_NSHIFT": "syscall",
+ "syscall.IN_CLASSC_HOST": "syscall",
+ "syscall.IN_CLASSC_NET": "syscall",
+ "syscall.IN_CLASSC_NSHIFT": "syscall",
+ "syscall.IN_CLASSD_HOST": "syscall",
+ "syscall.IN_CLASSD_NET": "syscall",
+ "syscall.IN_CLASSD_NSHIFT": "syscall",
+ "syscall.IN_CLOEXEC": "syscall",
+ "syscall.IN_CLOSE": "syscall",
+ "syscall.IN_CLOSE_NOWRITE": "syscall",
+ "syscall.IN_CLOSE_WRITE": "syscall",
+ "syscall.IN_CREATE": "syscall",
+ "syscall.IN_DELETE": "syscall",
+ "syscall.IN_DELETE_SELF": "syscall",
+ "syscall.IN_DONT_FOLLOW": "syscall",
+ "syscall.IN_EXCL_UNLINK": "syscall",
+ "syscall.IN_IGNORED": "syscall",
+ "syscall.IN_ISDIR": "syscall",
+ "syscall.IN_LINKLOCALNETNUM": "syscall",
+ "syscall.IN_LOOPBACKNET": "syscall",
+ "syscall.IN_MASK_ADD": "syscall",
+ "syscall.IN_MODIFY": "syscall",
+ "syscall.IN_MOVE": "syscall",
+ "syscall.IN_MOVED_FROM": "syscall",
+ "syscall.IN_MOVED_TO": "syscall",
+ "syscall.IN_MOVE_SELF": "syscall",
+ "syscall.IN_NONBLOCK": "syscall",
+ "syscall.IN_ONESHOT": "syscall",
+ "syscall.IN_ONLYDIR": "syscall",
+ "syscall.IN_OPEN": "syscall",
+ "syscall.IN_Q_OVERFLOW": "syscall",
+ "syscall.IN_RFC3021_HOST": "syscall",
+ "syscall.IN_RFC3021_MASK": "syscall",
+ "syscall.IN_RFC3021_NET": "syscall",
+ "syscall.IN_RFC3021_NSHIFT": "syscall",
+ "syscall.IN_UNMOUNT": "syscall",
+ "syscall.IOC_IN": "syscall",
+ "syscall.IOC_INOUT": "syscall",
+ "syscall.IOC_OUT": "syscall",
+ "syscall.IOC_VENDOR": "syscall",
+ "syscall.IOC_WS2": "syscall",
+ "syscall.IO_REPARSE_TAG_SYMLINK": "syscall",
+ "syscall.IPMreq": "syscall",
+ "syscall.IPMreqn": "syscall",
+ "syscall.IPPROTO_3PC": "syscall",
+ "syscall.IPPROTO_ADFS": "syscall",
+ "syscall.IPPROTO_AH": "syscall",
+ "syscall.IPPROTO_AHIP": "syscall",
+ "syscall.IPPROTO_APES": "syscall",
+ "syscall.IPPROTO_ARGUS": "syscall",
+ "syscall.IPPROTO_AX25": "syscall",
+ "syscall.IPPROTO_BHA": "syscall",
+ "syscall.IPPROTO_BLT": "syscall",
+ "syscall.IPPROTO_BRSATMON": "syscall",
+ "syscall.IPPROTO_CARP": "syscall",
+ "syscall.IPPROTO_CFTP": "syscall",
+ "syscall.IPPROTO_CHAOS": "syscall",
+ "syscall.IPPROTO_CMTP": "syscall",
+ "syscall.IPPROTO_COMP": "syscall",
+ "syscall.IPPROTO_CPHB": "syscall",
+ "syscall.IPPROTO_CPNX": "syscall",
+ "syscall.IPPROTO_DCCP": "syscall",
+ "syscall.IPPROTO_DDP": "syscall",
+ "syscall.IPPROTO_DGP": "syscall",
+ "syscall.IPPROTO_DIVERT": "syscall",
+ "syscall.IPPROTO_DIVERT_INIT": "syscall",
+ "syscall.IPPROTO_DIVERT_RESP": "syscall",
+ "syscall.IPPROTO_DONE": "syscall",
+ "syscall.IPPROTO_DSTOPTS": "syscall",
+ "syscall.IPPROTO_EGP": "syscall",
+ "syscall.IPPROTO_EMCON": "syscall",
+ "syscall.IPPROTO_ENCAP": "syscall",
+ "syscall.IPPROTO_EON": "syscall",
+ "syscall.IPPROTO_ESP": "syscall",
+ "syscall.IPPROTO_ETHERIP": "syscall",
+ "syscall.IPPROTO_FRAGMENT": "syscall",
+ "syscall.IPPROTO_GGP": "syscall",
+ "syscall.IPPROTO_GMTP": "syscall",
+ "syscall.IPPROTO_GRE": "syscall",
+ "syscall.IPPROTO_HELLO": "syscall",
+ "syscall.IPPROTO_HMP": "syscall",
+ "syscall.IPPROTO_HOPOPTS": "syscall",
+ "syscall.IPPROTO_ICMP": "syscall",
+ "syscall.IPPROTO_ICMPV6": "syscall",
+ "syscall.IPPROTO_IDP": "syscall",
+ "syscall.IPPROTO_IDPR": "syscall",
+ "syscall.IPPROTO_IDRP": "syscall",
+ "syscall.IPPROTO_IGMP": "syscall",
+ "syscall.IPPROTO_IGP": "syscall",
+ "syscall.IPPROTO_IGRP": "syscall",
+ "syscall.IPPROTO_IL": "syscall",
+ "syscall.IPPROTO_INLSP": "syscall",
+ "syscall.IPPROTO_INP": "syscall",
+ "syscall.IPPROTO_IP": "syscall",
+ "syscall.IPPROTO_IPCOMP": "syscall",
+ "syscall.IPPROTO_IPCV": "syscall",
+ "syscall.IPPROTO_IPEIP": "syscall",
+ "syscall.IPPROTO_IPIP": "syscall",
+ "syscall.IPPROTO_IPPC": "syscall",
+ "syscall.IPPROTO_IPV4": "syscall",
+ "syscall.IPPROTO_IPV6": "syscall",
+ "syscall.IPPROTO_IPV6_ICMP": "syscall",
+ "syscall.IPPROTO_IRTP": "syscall",
+ "syscall.IPPROTO_KRYPTOLAN": "syscall",
+ "syscall.IPPROTO_LARP": "syscall",
+ "syscall.IPPROTO_LEAF1": "syscall",
+ "syscall.IPPROTO_LEAF2": "syscall",
+ "syscall.IPPROTO_MAX": "syscall",
+ "syscall.IPPROTO_MAXID": "syscall",
+ "syscall.IPPROTO_MEAS": "syscall",
+ "syscall.IPPROTO_MH": "syscall",
+ "syscall.IPPROTO_MHRP": "syscall",
+ "syscall.IPPROTO_MICP": "syscall",
+ "syscall.IPPROTO_MOBILE": "syscall",
+ "syscall.IPPROTO_MPLS": "syscall",
+ "syscall.IPPROTO_MTP": "syscall",
+ "syscall.IPPROTO_MUX": "syscall",
+ "syscall.IPPROTO_ND": "syscall",
+ "syscall.IPPROTO_NHRP": "syscall",
+ "syscall.IPPROTO_NONE": "syscall",
+ "syscall.IPPROTO_NSP": "syscall",
+ "syscall.IPPROTO_NVPII": "syscall",
+ "syscall.IPPROTO_OLD_DIVERT": "syscall",
+ "syscall.IPPROTO_OSPFIGP": "syscall",
+ "syscall.IPPROTO_PFSYNC": "syscall",
+ "syscall.IPPROTO_PGM": "syscall",
+ "syscall.IPPROTO_PIGP": "syscall",
+ "syscall.IPPROTO_PIM": "syscall",
+ "syscall.IPPROTO_PRM": "syscall",
+ "syscall.IPPROTO_PUP": "syscall",
+ "syscall.IPPROTO_PVP": "syscall",
+ "syscall.IPPROTO_RAW": "syscall",
+ "syscall.IPPROTO_RCCMON": "syscall",
+ "syscall.IPPROTO_RDP": "syscall",
+ "syscall.IPPROTO_ROUTING": "syscall",
+ "syscall.IPPROTO_RSVP": "syscall",
+ "syscall.IPPROTO_RVD": "syscall",
+ "syscall.IPPROTO_SATEXPAK": "syscall",
+ "syscall.IPPROTO_SATMON": "syscall",
+ "syscall.IPPROTO_SCCSP": "syscall",
+ "syscall.IPPROTO_SCTP": "syscall",
+ "syscall.IPPROTO_SDRP": "syscall",
+ "syscall.IPPROTO_SEND": "syscall",
+ "syscall.IPPROTO_SEP": "syscall",
+ "syscall.IPPROTO_SKIP": "syscall",
+ "syscall.IPPROTO_SPACER": "syscall",
+ "syscall.IPPROTO_SRPC": "syscall",
+ "syscall.IPPROTO_ST": "syscall",
+ "syscall.IPPROTO_SVMTP": "syscall",
+ "syscall.IPPROTO_SWIPE": "syscall",
+ "syscall.IPPROTO_TCF": "syscall",
+ "syscall.IPPROTO_TCP": "syscall",
+ "syscall.IPPROTO_TLSP": "syscall",
+ "syscall.IPPROTO_TP": "syscall",
+ "syscall.IPPROTO_TPXX": "syscall",
+ "syscall.IPPROTO_TRUNK1": "syscall",
+ "syscall.IPPROTO_TRUNK2": "syscall",
+ "syscall.IPPROTO_TTP": "syscall",
+ "syscall.IPPROTO_UDP": "syscall",
+ "syscall.IPPROTO_UDPLITE": "syscall",
+ "syscall.IPPROTO_VINES": "syscall",
+ "syscall.IPPROTO_VISA": "syscall",
+ "syscall.IPPROTO_VMTP": "syscall",
+ "syscall.IPPROTO_VRRP": "syscall",
+ "syscall.IPPROTO_WBEXPAK": "syscall",
+ "syscall.IPPROTO_WBMON": "syscall",
+ "syscall.IPPROTO_WSN": "syscall",
+ "syscall.IPPROTO_XNET": "syscall",
+ "syscall.IPPROTO_XTP": "syscall",
+ "syscall.IPV6_2292DSTOPTS": "syscall",
+ "syscall.IPV6_2292HOPLIMIT": "syscall",
+ "syscall.IPV6_2292HOPOPTS": "syscall",
+ "syscall.IPV6_2292NEXTHOP": "syscall",
+ "syscall.IPV6_2292PKTINFO": "syscall",
+ "syscall.IPV6_2292PKTOPTIONS": "syscall",
+ "syscall.IPV6_2292RTHDR": "syscall",
+ "syscall.IPV6_ADDRFORM": "syscall",
+ "syscall.IPV6_ADD_MEMBERSHIP": "syscall",
+ "syscall.IPV6_AUTHHDR": "syscall",
+ "syscall.IPV6_AUTH_LEVEL": "syscall",
+ "syscall.IPV6_AUTOFLOWLABEL": "syscall",
+ "syscall.IPV6_BINDANY": "syscall",
+ "syscall.IPV6_BINDV6ONLY": "syscall",
+ "syscall.IPV6_BOUND_IF": "syscall",
+ "syscall.IPV6_CHECKSUM": "syscall",
+ "syscall.IPV6_DEFAULT_MULTICAST_HOPS": "syscall",
+ "syscall.IPV6_DEFAULT_MULTICAST_LOOP": "syscall",
+ "syscall.IPV6_DEFHLIM": "syscall",
+ "syscall.IPV6_DONTFRAG": "syscall",
+ "syscall.IPV6_DROP_MEMBERSHIP": "syscall",
+ "syscall.IPV6_DSTOPTS": "syscall",
+ "syscall.IPV6_ESP_NETWORK_LEVEL": "syscall",
+ "syscall.IPV6_ESP_TRANS_LEVEL": "syscall",
+ "syscall.IPV6_FAITH": "syscall",
+ "syscall.IPV6_FLOWINFO_MASK": "syscall",
+ "syscall.IPV6_FLOWLABEL_MASK": "syscall",
+ "syscall.IPV6_FRAGTTL": "syscall",
+ "syscall.IPV6_FW_ADD": "syscall",
+ "syscall.IPV6_FW_DEL": "syscall",
+ "syscall.IPV6_FW_FLUSH": "syscall",
+ "syscall.IPV6_FW_GET": "syscall",
+ "syscall.IPV6_FW_ZERO": "syscall",
+ "syscall.IPV6_HLIMDEC": "syscall",
+ "syscall.IPV6_HOPLIMIT": "syscall",
+ "syscall.IPV6_HOPOPTS": "syscall",
+ "syscall.IPV6_IPCOMP_LEVEL": "syscall",
+ "syscall.IPV6_IPSEC_POLICY": "syscall",
+ "syscall.IPV6_JOIN_ANYCAST": "syscall",
+ "syscall.IPV6_JOIN_GROUP": "syscall",
+ "syscall.IPV6_LEAVE_ANYCAST": "syscall",
+ "syscall.IPV6_LEAVE_GROUP": "syscall",
+ "syscall.IPV6_MAXHLIM": "syscall",
+ "syscall.IPV6_MAXOPTHDR": "syscall",
+ "syscall.IPV6_MAXPACKET": "syscall",
+ "syscall.IPV6_MAX_GROUP_SRC_FILTER": "syscall",
+ "syscall.IPV6_MAX_MEMBERSHIPS": "syscall",
+ "syscall.IPV6_MAX_SOCK_SRC_FILTER": "syscall",
+ "syscall.IPV6_MIN_MEMBERSHIPS": "syscall",
+ "syscall.IPV6_MMTU": "syscall",
+ "syscall.IPV6_MSFILTER": "syscall",
+ "syscall.IPV6_MTU": "syscall",
+ "syscall.IPV6_MTU_DISCOVER": "syscall",
+ "syscall.IPV6_MULTICAST_HOPS": "syscall",
+ "syscall.IPV6_MULTICAST_IF": "syscall",
+ "syscall.IPV6_MULTICAST_LOOP": "syscall",
+ "syscall.IPV6_NEXTHOP": "syscall",
+ "syscall.IPV6_OPTIONS": "syscall",
+ "syscall.IPV6_PATHMTU": "syscall",
+ "syscall.IPV6_PIPEX": "syscall",
+ "syscall.IPV6_PKTINFO": "syscall",
+ "syscall.IPV6_PMTUDISC_DO": "syscall",
+ "syscall.IPV6_PMTUDISC_DONT": "syscall",
+ "syscall.IPV6_PMTUDISC_PROBE": "syscall",
+ "syscall.IPV6_PMTUDISC_WANT": "syscall",
+ "syscall.IPV6_PORTRANGE": "syscall",
+ "syscall.IPV6_PORTRANGE_DEFAULT": "syscall",
+ "syscall.IPV6_PORTRANGE_HIGH": "syscall",
+ "syscall.IPV6_PORTRANGE_LOW": "syscall",
+ "syscall.IPV6_PREFER_TEMPADDR": "syscall",
+ "syscall.IPV6_RECVDSTOPTS": "syscall",
+ "syscall.IPV6_RECVDSTPORT": "syscall",
+ "syscall.IPV6_RECVERR": "syscall",
+ "syscall.IPV6_RECVHOPLIMIT": "syscall",
+ "syscall.IPV6_RECVHOPOPTS": "syscall",
+ "syscall.IPV6_RECVPATHMTU": "syscall",
+ "syscall.IPV6_RECVPKTINFO": "syscall",
+ "syscall.IPV6_RECVRTHDR": "syscall",
+ "syscall.IPV6_RECVTCLASS": "syscall",
+ "syscall.IPV6_ROUTER_ALERT": "syscall",
+ "syscall.IPV6_RTABLE": "syscall",
+ "syscall.IPV6_RTHDR": "syscall",
+ "syscall.IPV6_RTHDRDSTOPTS": "syscall",
+ "syscall.IPV6_RTHDR_LOOSE": "syscall",
+ "syscall.IPV6_RTHDR_STRICT": "syscall",
+ "syscall.IPV6_RTHDR_TYPE_0": "syscall",
+ "syscall.IPV6_RXDSTOPTS": "syscall",
+ "syscall.IPV6_RXHOPOPTS": "syscall",
+ "syscall.IPV6_SOCKOPT_RESERVED1": "syscall",
+ "syscall.IPV6_TCLASS": "syscall",
+ "syscall.IPV6_UNICAST_HOPS": "syscall",
+ "syscall.IPV6_USE_MIN_MTU": "syscall",
+ "syscall.IPV6_V6ONLY": "syscall",
+ "syscall.IPV6_VERSION": "syscall",
+ "syscall.IPV6_VERSION_MASK": "syscall",
+ "syscall.IPV6_XFRM_POLICY": "syscall",
+ "syscall.IP_ADD_MEMBERSHIP": "syscall",
+ "syscall.IP_ADD_SOURCE_MEMBERSHIP": "syscall",
+ "syscall.IP_AUTH_LEVEL": "syscall",
+ "syscall.IP_BINDANY": "syscall",
+ "syscall.IP_BLOCK_SOURCE": "syscall",
+ "syscall.IP_BOUND_IF": "syscall",
+ "syscall.IP_DEFAULT_MULTICAST_LOOP": "syscall",
+ "syscall.IP_DEFAULT_MULTICAST_TTL": "syscall",
+ "syscall.IP_DF": "syscall",
+ "syscall.IP_DIVERTFL": "syscall",
+ "syscall.IP_DONTFRAG": "syscall",
+ "syscall.IP_DROP_MEMBERSHIP": "syscall",
+ "syscall.IP_DROP_SOURCE_MEMBERSHIP": "syscall",
+ "syscall.IP_DUMMYNET3": "syscall",
+ "syscall.IP_DUMMYNET_CONFIGURE": "syscall",
+ "syscall.IP_DUMMYNET_DEL": "syscall",
+ "syscall.IP_DUMMYNET_FLUSH": "syscall",
+ "syscall.IP_DUMMYNET_GET": "syscall",
+ "syscall.IP_EF": "syscall",
+ "syscall.IP_ERRORMTU": "syscall",
+ "syscall.IP_ESP_NETWORK_LEVEL": "syscall",
+ "syscall.IP_ESP_TRANS_LEVEL": "syscall",
+ "syscall.IP_FAITH": "syscall",
+ "syscall.IP_FREEBIND": "syscall",
+ "syscall.IP_FW3": "syscall",
+ "syscall.IP_FW_ADD": "syscall",
+ "syscall.IP_FW_DEL": "syscall",
+ "syscall.IP_FW_FLUSH": "syscall",
+ "syscall.IP_FW_GET": "syscall",
+ "syscall.IP_FW_NAT_CFG": "syscall",
+ "syscall.IP_FW_NAT_DEL": "syscall",
+ "syscall.IP_FW_NAT_GET_CONFIG": "syscall",
+ "syscall.IP_FW_NAT_GET_LOG": "syscall",
+ "syscall.IP_FW_RESETLOG": "syscall",
+ "syscall.IP_FW_TABLE_ADD": "syscall",
+ "syscall.IP_FW_TABLE_DEL": "syscall",
+ "syscall.IP_FW_TABLE_FLUSH": "syscall",
+ "syscall.IP_FW_TABLE_GETSIZE": "syscall",
+ "syscall.IP_FW_TABLE_LIST": "syscall",
+ "syscall.IP_FW_ZERO": "syscall",
+ "syscall.IP_HDRINCL": "syscall",
+ "syscall.IP_IPCOMP_LEVEL": "syscall",
+ "syscall.IP_IPSECFLOWINFO": "syscall",
+ "syscall.IP_IPSEC_LOCAL_AUTH": "syscall",
+ "syscall.IP_IPSEC_LOCAL_CRED": "syscall",
+ "syscall.IP_IPSEC_LOCAL_ID": "syscall",
+ "syscall.IP_IPSEC_POLICY": "syscall",
+ "syscall.IP_IPSEC_REMOTE_AUTH": "syscall",
+ "syscall.IP_IPSEC_REMOTE_CRED": "syscall",
+ "syscall.IP_IPSEC_REMOTE_ID": "syscall",
+ "syscall.IP_MAXPACKET": "syscall",
+ "syscall.IP_MAX_GROUP_SRC_FILTER": "syscall",
+ "syscall.IP_MAX_MEMBERSHIPS": "syscall",
+ "syscall.IP_MAX_SOCK_MUTE_FILTER": "syscall",
+ "syscall.IP_MAX_SOCK_SRC_FILTER": "syscall",
+ "syscall.IP_MAX_SOURCE_FILTER": "syscall",
+ "syscall.IP_MF": "syscall",
+ "syscall.IP_MINFRAGSIZE": "syscall",
+ "syscall.IP_MINTTL": "syscall",
+ "syscall.IP_MIN_MEMBERSHIPS": "syscall",
+ "syscall.IP_MSFILTER": "syscall",
+ "syscall.IP_MSS": "syscall",
+ "syscall.IP_MTU": "syscall",
+ "syscall.IP_MTU_DISCOVER": "syscall",
+ "syscall.IP_MULTICAST_IF": "syscall",
+ "syscall.IP_MULTICAST_IFINDEX": "syscall",
+ "syscall.IP_MULTICAST_LOOP": "syscall",
+ "syscall.IP_MULTICAST_TTL": "syscall",
+ "syscall.IP_MULTICAST_VIF": "syscall",
+ "syscall.IP_NAT__XXX": "syscall",
+ "syscall.IP_OFFMASK": "syscall",
+ "syscall.IP_OLD_FW_ADD": "syscall",
+ "syscall.IP_OLD_FW_DEL": "syscall",
+ "syscall.IP_OLD_FW_FLUSH": "syscall",
+ "syscall.IP_OLD_FW_GET": "syscall",
+ "syscall.IP_OLD_FW_RESETLOG": "syscall",
+ "syscall.IP_OLD_FW_ZERO": "syscall",
+ "syscall.IP_ONESBCAST": "syscall",
+ "syscall.IP_OPTIONS": "syscall",
+ "syscall.IP_ORIGDSTADDR": "syscall",
+ "syscall.IP_PASSSEC": "syscall",
+ "syscall.IP_PIPEX": "syscall",
+ "syscall.IP_PKTINFO": "syscall",
+ "syscall.IP_PKTOPTIONS": "syscall",
+ "syscall.IP_PMTUDISC": "syscall",
+ "syscall.IP_PMTUDISC_DO": "syscall",
+ "syscall.IP_PMTUDISC_DONT": "syscall",
+ "syscall.IP_PMTUDISC_PROBE": "syscall",
+ "syscall.IP_PMTUDISC_WANT": "syscall",
+ "syscall.IP_PORTRANGE": "syscall",
+ "syscall.IP_PORTRANGE_DEFAULT": "syscall",
+ "syscall.IP_PORTRANGE_HIGH": "syscall",
+ "syscall.IP_PORTRANGE_LOW": "syscall",
+ "syscall.IP_RECVDSTADDR": "syscall",
+ "syscall.IP_RECVDSTPORT": "syscall",
+ "syscall.IP_RECVERR": "syscall",
+ "syscall.IP_RECVIF": "syscall",
+ "syscall.IP_RECVOPTS": "syscall",
+ "syscall.IP_RECVORIGDSTADDR": "syscall",
+ "syscall.IP_RECVPKTINFO": "syscall",
+ "syscall.IP_RECVRETOPTS": "syscall",
+ "syscall.IP_RECVRTABLE": "syscall",
+ "syscall.IP_RECVTOS": "syscall",
+ "syscall.IP_RECVTTL": "syscall",
+ "syscall.IP_RETOPTS": "syscall",
+ "syscall.IP_RF": "syscall",
+ "syscall.IP_ROUTER_ALERT": "syscall",
+ "syscall.IP_RSVP_OFF": "syscall",
+ "syscall.IP_RSVP_ON": "syscall",
+ "syscall.IP_RSVP_VIF_OFF": "syscall",
+ "syscall.IP_RSVP_VIF_ON": "syscall",
+ "syscall.IP_RTABLE": "syscall",
+ "syscall.IP_SENDSRCADDR": "syscall",
+ "syscall.IP_STRIPHDR": "syscall",
+ "syscall.IP_TOS": "syscall",
+ "syscall.IP_TRAFFIC_MGT_BACKGROUND": "syscall",
+ "syscall.IP_TRANSPARENT": "syscall",
+ "syscall.IP_TTL": "syscall",
+ "syscall.IP_UNBLOCK_SOURCE": "syscall",
+ "syscall.IP_XFRM_POLICY": "syscall",
+ "syscall.IPv6MTUInfo": "syscall",
+ "syscall.IPv6Mreq": "syscall",
+ "syscall.ISIG": "syscall",
+ "syscall.ISTRIP": "syscall",
+ "syscall.IUCLC": "syscall",
+ "syscall.IUTF8": "syscall",
+ "syscall.IXANY": "syscall",
+ "syscall.IXOFF": "syscall",
+ "syscall.IXON": "syscall",
+ "syscall.IfAddrmsg": "syscall",
+ "syscall.IfAnnounceMsghdr": "syscall",
+ "syscall.IfData": "syscall",
+ "syscall.IfInfomsg": "syscall",
+ "syscall.IfMsghdr": "syscall",
+ "syscall.IfaMsghdr": "syscall",
+ "syscall.IfmaMsghdr": "syscall",
+ "syscall.IfmaMsghdr2": "syscall",
+ "syscall.ImplementsGetwd": "syscall",
+ "syscall.Inet4Pktinfo": "syscall",
+ "syscall.Inet6Pktinfo": "syscall",
+ "syscall.InotifyAddWatch": "syscall",
+ "syscall.InotifyEvent": "syscall",
+ "syscall.InotifyInit": "syscall",
+ "syscall.InotifyInit1": "syscall",
+ "syscall.InotifyRmWatch": "syscall",
+ "syscall.InterfaceAddrMessage": "syscall",
+ "syscall.InterfaceAnnounceMessage": "syscall",
+ "syscall.InterfaceInfo": "syscall",
+ "syscall.InterfaceMessage": "syscall",
+ "syscall.InterfaceMulticastAddrMessage": "syscall",
+ "syscall.InvalidHandle": "syscall",
+ "syscall.Ioperm": "syscall",
+ "syscall.Iopl": "syscall",
+ "syscall.Iovec": "syscall",
+ "syscall.IpAdapterInfo": "syscall",
+ "syscall.IpAddrString": "syscall",
+ "syscall.IpAddressString": "syscall",
+ "syscall.IpMaskString": "syscall",
+ "syscall.Issetugid": "syscall",
+ "syscall.KEY_ALL_ACCESS": "syscall",
+ "syscall.KEY_CREATE_LINK": "syscall",
+ "syscall.KEY_CREATE_SUB_KEY": "syscall",
+ "syscall.KEY_ENUMERATE_SUB_KEYS": "syscall",
+ "syscall.KEY_EXECUTE": "syscall",
+ "syscall.KEY_NOTIFY": "syscall",
+ "syscall.KEY_QUERY_VALUE": "syscall",
+ "syscall.KEY_READ": "syscall",
+ "syscall.KEY_SET_VALUE": "syscall",
+ "syscall.KEY_WOW64_32KEY": "syscall",
+ "syscall.KEY_WOW64_64KEY": "syscall",
+ "syscall.KEY_WRITE": "syscall",
+ "syscall.Kevent": "syscall",
+ "syscall.Kevent_t": "syscall",
+ "syscall.Kill": "syscall",
+ "syscall.Klogctl": "syscall",
+ "syscall.Kqueue": "syscall",
+ "syscall.LANG_ENGLISH": "syscall",
+ "syscall.LAYERED_PROTOCOL": "syscall",
+ "syscall.LCNT_OVERLOAD_FLUSH": "syscall",
+ "syscall.LINUX_REBOOT_CMD_CAD_OFF": "syscall",
+ "syscall.LINUX_REBOOT_CMD_CAD_ON": "syscall",
+ "syscall.LINUX_REBOOT_CMD_HALT": "syscall",
+ "syscall.LINUX_REBOOT_CMD_KEXEC": "syscall",
+ "syscall.LINUX_REBOOT_CMD_POWER_OFF": "syscall",
+ "syscall.LINUX_REBOOT_CMD_RESTART": "syscall",
+ "syscall.LINUX_REBOOT_CMD_RESTART2": "syscall",
+ "syscall.LINUX_REBOOT_CMD_SW_SUSPEND": "syscall",
+ "syscall.LINUX_REBOOT_MAGIC1": "syscall",
+ "syscall.LINUX_REBOOT_MAGIC2": "syscall",
+ "syscall.LOCK_EX": "syscall",
+ "syscall.LOCK_NB": "syscall",
+ "syscall.LOCK_SH": "syscall",
+ "syscall.LOCK_UN": "syscall",
+ "syscall.LazyDLL": "syscall",
+ "syscall.LazyProc": "syscall",
+ "syscall.Lchown": "syscall",
+ "syscall.Linger": "syscall",
+ "syscall.Link": "syscall",
+ "syscall.Listen": "syscall",
+ "syscall.Listxattr": "syscall",
+ "syscall.LoadCancelIoEx": "syscall",
+ "syscall.LoadConnectEx": "syscall",
+ "syscall.LoadCreateSymbolicLink": "syscall",
+ "syscall.LoadDLL": "syscall",
+ "syscall.LoadGetAddrInfo": "syscall",
+ "syscall.LoadLibrary": "syscall",
+ "syscall.LoadSetFileCompletionNotificationModes": "syscall",
+ "syscall.LocalFree": "syscall",
+ "syscall.Log2phys_t": "syscall",
+ "syscall.LookupAccountName": "syscall",
+ "syscall.LookupAccountSid": "syscall",
+ "syscall.LookupSID": "syscall",
+ "syscall.LsfJump": "syscall",
+ "syscall.LsfSocket": "syscall",
+ "syscall.LsfStmt": "syscall",
+ "syscall.Lstat": "syscall",
+ "syscall.MADV_AUTOSYNC": "syscall",
+ "syscall.MADV_CAN_REUSE": "syscall",
+ "syscall.MADV_CORE": "syscall",
+ "syscall.MADV_DOFORK": "syscall",
+ "syscall.MADV_DONTFORK": "syscall",
+ "syscall.MADV_DONTNEED": "syscall",
+ "syscall.MADV_FREE": "syscall",
+ "syscall.MADV_FREE_REUSABLE": "syscall",
+ "syscall.MADV_FREE_REUSE": "syscall",
+ "syscall.MADV_HUGEPAGE": "syscall",
+ "syscall.MADV_HWPOISON": "syscall",
+ "syscall.MADV_MERGEABLE": "syscall",
+ "syscall.MADV_NOCORE": "syscall",
+ "syscall.MADV_NOHUGEPAGE": "syscall",
+ "syscall.MADV_NORMAL": "syscall",
+ "syscall.MADV_NOSYNC": "syscall",
+ "syscall.MADV_PROTECT": "syscall",
+ "syscall.MADV_RANDOM": "syscall",
+ "syscall.MADV_REMOVE": "syscall",
+ "syscall.MADV_SEQUENTIAL": "syscall",
+ "syscall.MADV_SPACEAVAIL": "syscall",
+ "syscall.MADV_UNMERGEABLE": "syscall",
+ "syscall.MADV_WILLNEED": "syscall",
+ "syscall.MADV_ZERO_WIRED_PAGES": "syscall",
+ "syscall.MAP_32BIT": "syscall",
+ "syscall.MAP_ALIGNED_SUPER": "syscall",
+ "syscall.MAP_ALIGNMENT_16MB": "syscall",
+ "syscall.MAP_ALIGNMENT_1TB": "syscall",
+ "syscall.MAP_ALIGNMENT_256TB": "syscall",
+ "syscall.MAP_ALIGNMENT_4GB": "syscall",
+ "syscall.MAP_ALIGNMENT_64KB": "syscall",
+ "syscall.MAP_ALIGNMENT_64PB": "syscall",
+ "syscall.MAP_ALIGNMENT_MASK": "syscall",
+ "syscall.MAP_ALIGNMENT_SHIFT": "syscall",
+ "syscall.MAP_ANON": "syscall",
+ "syscall.MAP_ANONYMOUS": "syscall",
+ "syscall.MAP_COPY": "syscall",
+ "syscall.MAP_DENYWRITE": "syscall",
+ "syscall.MAP_EXECUTABLE": "syscall",
+ "syscall.MAP_FILE": "syscall",
+ "syscall.MAP_FIXED": "syscall",
+ "syscall.MAP_FLAGMASK": "syscall",
+ "syscall.MAP_GROWSDOWN": "syscall",
+ "syscall.MAP_HASSEMAPHORE": "syscall",
+ "syscall.MAP_HUGETLB": "syscall",
+ "syscall.MAP_INHERIT": "syscall",
+ "syscall.MAP_INHERIT_COPY": "syscall",
+ "syscall.MAP_INHERIT_DEFAULT": "syscall",
+ "syscall.MAP_INHERIT_DONATE_COPY": "syscall",
+ "syscall.MAP_INHERIT_NONE": "syscall",
+ "syscall.MAP_INHERIT_SHARE": "syscall",
+ "syscall.MAP_JIT": "syscall",
+ "syscall.MAP_LOCKED": "syscall",
+ "syscall.MAP_NOCACHE": "syscall",
+ "syscall.MAP_NOCORE": "syscall",
+ "syscall.MAP_NOEXTEND": "syscall",
+ "syscall.MAP_NONBLOCK": "syscall",
+ "syscall.MAP_NORESERVE": "syscall",
+ "syscall.MAP_NOSYNC": "syscall",
+ "syscall.MAP_POPULATE": "syscall",
+ "syscall.MAP_PREFAULT_READ": "syscall",
+ "syscall.MAP_PRIVATE": "syscall",
+ "syscall.MAP_RENAME": "syscall",
+ "syscall.MAP_RESERVED0080": "syscall",
+ "syscall.MAP_RESERVED0100": "syscall",
+ "syscall.MAP_SHARED": "syscall",
+ "syscall.MAP_STACK": "syscall",
+ "syscall.MAP_TRYFIXED": "syscall",
+ "syscall.MAP_TYPE": "syscall",
+ "syscall.MAP_WIRED": "syscall",
+ "syscall.MAXIMUM_REPARSE_DATA_BUFFER_SIZE": "syscall",
+ "syscall.MAXLEN_IFDESCR": "syscall",
+ "syscall.MAXLEN_PHYSADDR": "syscall",
+ "syscall.MAX_ADAPTER_ADDRESS_LENGTH": "syscall",
+ "syscall.MAX_ADAPTER_DESCRIPTION_LENGTH": "syscall",
+ "syscall.MAX_ADAPTER_NAME_LENGTH": "syscall",
+ "syscall.MAX_COMPUTERNAME_LENGTH": "syscall",
+ "syscall.MAX_INTERFACE_NAME_LEN": "syscall",
+ "syscall.MAX_LONG_PATH": "syscall",
+ "syscall.MAX_PATH": "syscall",
+ "syscall.MAX_PROTOCOL_CHAIN": "syscall",
+ "syscall.MCL_CURRENT": "syscall",
+ "syscall.MCL_FUTURE": "syscall",
+ "syscall.MNT_DETACH": "syscall",
+ "syscall.MNT_EXPIRE": "syscall",
+ "syscall.MNT_FORCE": "syscall",
+ "syscall.MSG_BCAST": "syscall",
+ "syscall.MSG_CMSG_CLOEXEC": "syscall",
+ "syscall.MSG_COMPAT": "syscall",
+ "syscall.MSG_CONFIRM": "syscall",
+ "syscall.MSG_CONTROLMBUF": "syscall",
+ "syscall.MSG_CTRUNC": "syscall",
+ "syscall.MSG_DONTROUTE": "syscall",
+ "syscall.MSG_DONTWAIT": "syscall",
+ "syscall.MSG_EOF": "syscall",
+ "syscall.MSG_EOR": "syscall",
+ "syscall.MSG_ERRQUEUE": "syscall",
+ "syscall.MSG_FASTOPEN": "syscall",
+ "syscall.MSG_FIN": "syscall",
+ "syscall.MSG_FLUSH": "syscall",
+ "syscall.MSG_HAVEMORE": "syscall",
+ "syscall.MSG_HOLD": "syscall",
+ "syscall.MSG_IOVUSRSPACE": "syscall",
+ "syscall.MSG_LENUSRSPACE": "syscall",
+ "syscall.MSG_MCAST": "syscall",
+ "syscall.MSG_MORE": "syscall",
+ "syscall.MSG_NAMEMBUF": "syscall",
+ "syscall.MSG_NBIO": "syscall",
+ "syscall.MSG_NEEDSA": "syscall",
+ "syscall.MSG_NOSIGNAL": "syscall",
+ "syscall.MSG_NOTIFICATION": "syscall",
+ "syscall.MSG_OOB": "syscall",
+ "syscall.MSG_PEEK": "syscall",
+ "syscall.MSG_PROXY": "syscall",
+ "syscall.MSG_RCVMORE": "syscall",
+ "syscall.MSG_RST": "syscall",
+ "syscall.MSG_SEND": "syscall",
+ "syscall.MSG_SYN": "syscall",
+ "syscall.MSG_TRUNC": "syscall",
+ "syscall.MSG_TRYHARD": "syscall",
+ "syscall.MSG_USERFLAGS": "syscall",
+ "syscall.MSG_WAITALL": "syscall",
+ "syscall.MSG_WAITFORONE": "syscall",
+ "syscall.MSG_WAITSTREAM": "syscall",
+ "syscall.MS_ACTIVE": "syscall",
+ "syscall.MS_ASYNC": "syscall",
+ "syscall.MS_BIND": "syscall",
+ "syscall.MS_DEACTIVATE": "syscall",
+ "syscall.MS_DIRSYNC": "syscall",
+ "syscall.MS_INVALIDATE": "syscall",
+ "syscall.MS_I_VERSION": "syscall",
+ "syscall.MS_KERNMOUNT": "syscall",
+ "syscall.MS_KILLPAGES": "syscall",
+ "syscall.MS_MANDLOCK": "syscall",
+ "syscall.MS_MGC_MSK": "syscall",
+ "syscall.MS_MGC_VAL": "syscall",
+ "syscall.MS_MOVE": "syscall",
+ "syscall.MS_NOATIME": "syscall",
+ "syscall.MS_NODEV": "syscall",
+ "syscall.MS_NODIRATIME": "syscall",
+ "syscall.MS_NOEXEC": "syscall",
+ "syscall.MS_NOSUID": "syscall",
+ "syscall.MS_NOUSER": "syscall",
+ "syscall.MS_POSIXACL": "syscall",
+ "syscall.MS_PRIVATE": "syscall",
+ "syscall.MS_RDONLY": "syscall",
+ "syscall.MS_REC": "syscall",
+ "syscall.MS_RELATIME": "syscall",
+ "syscall.MS_REMOUNT": "syscall",
+ "syscall.MS_RMT_MASK": "syscall",
+ "syscall.MS_SHARED": "syscall",
+ "syscall.MS_SILENT": "syscall",
+ "syscall.MS_SLAVE": "syscall",
+ "syscall.MS_STRICTATIME": "syscall",
+ "syscall.MS_SYNC": "syscall",
+ "syscall.MS_SYNCHRONOUS": "syscall",
+ "syscall.MS_UNBINDABLE": "syscall",
+ "syscall.Madvise": "syscall",
+ "syscall.MapViewOfFile": "syscall",
+ "syscall.MaxTokenInfoClass": "syscall",
+ "syscall.Mclpool": "syscall",
+ "syscall.MibIfRow": "syscall",
+ "syscall.Mkdir": "syscall",
+ "syscall.Mkdirat": "syscall",
+ "syscall.Mkfifo": "syscall",
+ "syscall.Mknod": "syscall",
+ "syscall.Mknodat": "syscall",
+ "syscall.Mlock": "syscall",
+ "syscall.Mlockall": "syscall",
+ "syscall.Mmap": "syscall",
+ "syscall.Mount": "syscall",
+ "syscall.MoveFile": "syscall",
+ "syscall.Mprotect": "syscall",
+ "syscall.Msghdr": "syscall",
+ "syscall.Munlock": "syscall",
+ "syscall.Munlockall": "syscall",
+ "syscall.Munmap": "syscall",
+ "syscall.MustLoadDLL": "syscall",
+ "syscall.NAME_MAX": "syscall",
+ "syscall.NETLINK_ADD_MEMBERSHIP": "syscall",
+ "syscall.NETLINK_AUDIT": "syscall",
+ "syscall.NETLINK_BROADCAST_ERROR": "syscall",
+ "syscall.NETLINK_CONNECTOR": "syscall",
+ "syscall.NETLINK_DNRTMSG": "syscall",
+ "syscall.NETLINK_DROP_MEMBERSHIP": "syscall",
+ "syscall.NETLINK_ECRYPTFS": "syscall",
+ "syscall.NETLINK_FIB_LOOKUP": "syscall",
+ "syscall.NETLINK_FIREWALL": "syscall",
+ "syscall.NETLINK_GENERIC": "syscall",
+ "syscall.NETLINK_INET_DIAG": "syscall",
+ "syscall.NETLINK_IP6_FW": "syscall",
+ "syscall.NETLINK_ISCSI": "syscall",
+ "syscall.NETLINK_KOBJECT_UEVENT": "syscall",
+ "syscall.NETLINK_NETFILTER": "syscall",
+ "syscall.NETLINK_NFLOG": "syscall",
+ "syscall.NETLINK_NO_ENOBUFS": "syscall",
+ "syscall.NETLINK_PKTINFO": "syscall",
+ "syscall.NETLINK_RDMA": "syscall",
+ "syscall.NETLINK_ROUTE": "syscall",
+ "syscall.NETLINK_SCSITRANSPORT": "syscall",
+ "syscall.NETLINK_SELINUX": "syscall",
+ "syscall.NETLINK_UNUSED": "syscall",
+ "syscall.NETLINK_USERSOCK": "syscall",
+ "syscall.NETLINK_XFRM": "syscall",
+ "syscall.NET_RT_DUMP": "syscall",
+ "syscall.NET_RT_DUMP2": "syscall",
+ "syscall.NET_RT_FLAGS": "syscall",
+ "syscall.NET_RT_IFLIST": "syscall",
+ "syscall.NET_RT_IFLIST2": "syscall",
+ "syscall.NET_RT_IFLISTL": "syscall",
+ "syscall.NET_RT_IFMALIST": "syscall",
+ "syscall.NET_RT_MAXID": "syscall",
+ "syscall.NET_RT_OIFLIST": "syscall",
+ "syscall.NET_RT_OOIFLIST": "syscall",
+ "syscall.NET_RT_STAT": "syscall",
+ "syscall.NET_RT_STATS": "syscall",
+ "syscall.NET_RT_TABLE": "syscall",
+ "syscall.NET_RT_TRASH": "syscall",
+ "syscall.NLA_ALIGNTO": "syscall",
+ "syscall.NLA_F_NESTED": "syscall",
+ "syscall.NLA_F_NET_BYTEORDER": "syscall",
+ "syscall.NLA_HDRLEN": "syscall",
+ "syscall.NLMSG_ALIGNTO": "syscall",
+ "syscall.NLMSG_DONE": "syscall",
+ "syscall.NLMSG_ERROR": "syscall",
+ "syscall.NLMSG_HDRLEN": "syscall",
+ "syscall.NLMSG_MIN_TYPE": "syscall",
+ "syscall.NLMSG_NOOP": "syscall",
+ "syscall.NLMSG_OVERRUN": "syscall",
+ "syscall.NLM_F_ACK": "syscall",
+ "syscall.NLM_F_APPEND": "syscall",
+ "syscall.NLM_F_ATOMIC": "syscall",
+ "syscall.NLM_F_CREATE": "syscall",
+ "syscall.NLM_F_DUMP": "syscall",
+ "syscall.NLM_F_ECHO": "syscall",
+ "syscall.NLM_F_EXCL": "syscall",
+ "syscall.NLM_F_MATCH": "syscall",
+ "syscall.NLM_F_MULTI": "syscall",
+ "syscall.NLM_F_REPLACE": "syscall",
+ "syscall.NLM_F_REQUEST": "syscall",
+ "syscall.NLM_F_ROOT": "syscall",
+ "syscall.NOFLSH": "syscall",
+ "syscall.NOTE_ABSOLUTE": "syscall",
+ "syscall.NOTE_ATTRIB": "syscall",
+ "syscall.NOTE_CHILD": "syscall",
+ "syscall.NOTE_DELETE": "syscall",
+ "syscall.NOTE_EOF": "syscall",
+ "syscall.NOTE_EXEC": "syscall",
+ "syscall.NOTE_EXIT": "syscall",
+ "syscall.NOTE_EXITSTATUS": "syscall",
+ "syscall.NOTE_EXTEND": "syscall",
+ "syscall.NOTE_FFAND": "syscall",
+ "syscall.NOTE_FFCOPY": "syscall",
+ "syscall.NOTE_FFCTRLMASK": "syscall",
+ "syscall.NOTE_FFLAGSMASK": "syscall",
+ "syscall.NOTE_FFNOP": "syscall",
+ "syscall.NOTE_FFOR": "syscall",
+ "syscall.NOTE_FORK": "syscall",
+ "syscall.NOTE_LINK": "syscall",
+ "syscall.NOTE_LOWAT": "syscall",
+ "syscall.NOTE_NONE": "syscall",
+ "syscall.NOTE_NSECONDS": "syscall",
+ "syscall.NOTE_PCTRLMASK": "syscall",
+ "syscall.NOTE_PDATAMASK": "syscall",
+ "syscall.NOTE_REAP": "syscall",
+ "syscall.NOTE_RENAME": "syscall",
+ "syscall.NOTE_RESOURCEEND": "syscall",
+ "syscall.NOTE_REVOKE": "syscall",
+ "syscall.NOTE_SECONDS": "syscall",
+ "syscall.NOTE_SIGNAL": "syscall",
+ "syscall.NOTE_TRACK": "syscall",
+ "syscall.NOTE_TRACKERR": "syscall",
+ "syscall.NOTE_TRIGGER": "syscall",
+ "syscall.NOTE_TRUNCATE": "syscall",
+ "syscall.NOTE_USECONDS": "syscall",
+ "syscall.NOTE_VM_ERROR": "syscall",
+ "syscall.NOTE_VM_PRESSURE": "syscall",
+ "syscall.NOTE_VM_PRESSURE_SUDDEN_TERMINATE": "syscall",
+ "syscall.NOTE_VM_PRESSURE_TERMINATE": "syscall",
+ "syscall.NOTE_WRITE": "syscall",
+ "syscall.NameCanonical": "syscall",
+ "syscall.NameCanonicalEx": "syscall",
+ "syscall.NameDisplay": "syscall",
+ "syscall.NameDnsDomain": "syscall",
+ "syscall.NameFullyQualifiedDN": "syscall",
+ "syscall.NameSamCompatible": "syscall",
+ "syscall.NameServicePrincipal": "syscall",
+ "syscall.NameUniqueId": "syscall",
+ "syscall.NameUnknown": "syscall",
+ "syscall.NameUserPrincipal": "syscall",
+ "syscall.Nanosleep": "syscall",
+ "syscall.NetApiBufferFree": "syscall",
+ "syscall.NetGetJoinInformation": "syscall",
+ "syscall.NetSetupDomainName": "syscall",
+ "syscall.NetSetupUnjoined": "syscall",
+ "syscall.NetSetupUnknownStatus": "syscall",
+ "syscall.NetSetupWorkgroupName": "syscall",
+ "syscall.NetUserGetInfo": "syscall",
+ "syscall.NetlinkMessage": "syscall",
+ "syscall.NetlinkRIB": "syscall",
+ "syscall.NetlinkRouteAttr": "syscall",
+ "syscall.NetlinkRouteRequest": "syscall",
+ "syscall.NewCallback": "syscall",
+ "syscall.NewCallbackCDecl": "syscall",
+ "syscall.NewLazyDLL": "syscall",
+ "syscall.NlAttr": "syscall",
+ "syscall.NlMsgerr": "syscall",
+ "syscall.NlMsghdr": "syscall",
+ "syscall.NsecToFiletime": "syscall",
+ "syscall.NsecToTimespec": "syscall",
+ "syscall.NsecToTimeval": "syscall",
+ "syscall.Ntohs": "syscall",
+ "syscall.OCRNL": "syscall",
+ "syscall.OFDEL": "syscall",
+ "syscall.OFILL": "syscall",
+ "syscall.OFIOGETBMAP": "syscall",
+ "syscall.OID_PKIX_KP_SERVER_AUTH": "syscall",
+ "syscall.OID_SERVER_GATED_CRYPTO": "syscall",
+ "syscall.OID_SGC_NETSCAPE": "syscall",
+ "syscall.OLCUC": "syscall",
+ "syscall.ONLCR": "syscall",
+ "syscall.ONLRET": "syscall",
+ "syscall.ONOCR": "syscall",
+ "syscall.ONOEOT": "syscall",
+ "syscall.OPEN_ALWAYS": "syscall",
+ "syscall.OPEN_EXISTING": "syscall",
+ "syscall.OPOST": "syscall",
+ "syscall.O_ACCMODE": "syscall",
+ "syscall.O_ALERT": "syscall",
+ "syscall.O_ALT_IO": "syscall",
+ "syscall.O_APPEND": "syscall",
+ "syscall.O_ASYNC": "syscall",
+ "syscall.O_CLOEXEC": "syscall",
+ "syscall.O_CREAT": "syscall",
+ "syscall.O_DIRECT": "syscall",
+ "syscall.O_DIRECTORY": "syscall",
+ "syscall.O_DSYNC": "syscall",
+ "syscall.O_EVTONLY": "syscall",
+ "syscall.O_EXCL": "syscall",
+ "syscall.O_EXEC": "syscall",
+ "syscall.O_EXLOCK": "syscall",
+ "syscall.O_FSYNC": "syscall",
+ "syscall.O_LARGEFILE": "syscall",
+ "syscall.O_NDELAY": "syscall",
+ "syscall.O_NOATIME": "syscall",
+ "syscall.O_NOCTTY": "syscall",
+ "syscall.O_NOFOLLOW": "syscall",
+ "syscall.O_NONBLOCK": "syscall",
+ "syscall.O_NOSIGPIPE": "syscall",
+ "syscall.O_POPUP": "syscall",
+ "syscall.O_RDONLY": "syscall",
+ "syscall.O_RDWR": "syscall",
+ "syscall.O_RSYNC": "syscall",
+ "syscall.O_SHLOCK": "syscall",
+ "syscall.O_SYMLINK": "syscall",
+ "syscall.O_SYNC": "syscall",
+ "syscall.O_TRUNC": "syscall",
+ "syscall.O_TTY_INIT": "syscall",
+ "syscall.O_WRONLY": "syscall",
+ "syscall.Open": "syscall",
+ "syscall.OpenCurrentProcessToken": "syscall",
+ "syscall.OpenProcess": "syscall",
+ "syscall.OpenProcessToken": "syscall",
+ "syscall.Openat": "syscall",
+ "syscall.Overlapped": "syscall",
+ "syscall.PACKET_ADD_MEMBERSHIP": "syscall",
+ "syscall.PACKET_BROADCAST": "syscall",
+ "syscall.PACKET_DROP_MEMBERSHIP": "syscall",
+ "syscall.PACKET_FASTROUTE": "syscall",
+ "syscall.PACKET_HOST": "syscall",
+ "syscall.PACKET_LOOPBACK": "syscall",
+ "syscall.PACKET_MR_ALLMULTI": "syscall",
+ "syscall.PACKET_MR_MULTICAST": "syscall",
+ "syscall.PACKET_MR_PROMISC": "syscall",
+ "syscall.PACKET_MULTICAST": "syscall",
+ "syscall.PACKET_OTHERHOST": "syscall",
+ "syscall.PACKET_OUTGOING": "syscall",
+ "syscall.PACKET_RECV_OUTPUT": "syscall",
+ "syscall.PACKET_RX_RING": "syscall",
+ "syscall.PACKET_STATISTICS": "syscall",
+ "syscall.PAGE_EXECUTE_READ": "syscall",
+ "syscall.PAGE_EXECUTE_READWRITE": "syscall",
+ "syscall.PAGE_EXECUTE_WRITECOPY": "syscall",
+ "syscall.PAGE_READONLY": "syscall",
+ "syscall.PAGE_READWRITE": "syscall",
+ "syscall.PAGE_WRITECOPY": "syscall",
+ "syscall.PARENB": "syscall",
+ "syscall.PARMRK": "syscall",
+ "syscall.PARODD": "syscall",
+ "syscall.PENDIN": "syscall",
+ "syscall.PFL_HIDDEN": "syscall",
+ "syscall.PFL_MATCHES_PROTOCOL_ZERO": "syscall",
+ "syscall.PFL_MULTIPLE_PROTO_ENTRIES": "syscall",
+ "syscall.PFL_NETWORKDIRECT_PROVIDER": "syscall",
+ "syscall.PFL_RECOMMENDED_PROTO_ENTRY": "syscall",
+ "syscall.PF_FLUSH": "syscall",
+ "syscall.PKCS_7_ASN_ENCODING": "syscall",
+ "syscall.PMC5_PIPELINE_FLUSH": "syscall",
+ "syscall.PRIO_PGRP": "syscall",
+ "syscall.PRIO_PROCESS": "syscall",
+ "syscall.PRIO_USER": "syscall",
+ "syscall.PRI_IOFLUSH": "syscall",
+ "syscall.PROCESS_QUERY_INFORMATION": "syscall",
+ "syscall.PROCESS_TERMINATE": "syscall",
+ "syscall.PROT_EXEC": "syscall",
+ "syscall.PROT_GROWSDOWN": "syscall",
+ "syscall.PROT_GROWSUP": "syscall",
+ "syscall.PROT_NONE": "syscall",
+ "syscall.PROT_READ": "syscall",
+ "syscall.PROT_WRITE": "syscall",
+ "syscall.PROV_DH_SCHANNEL": "syscall",
+ "syscall.PROV_DSS": "syscall",
+ "syscall.PROV_DSS_DH": "syscall",
+ "syscall.PROV_EC_ECDSA_FULL": "syscall",
+ "syscall.PROV_EC_ECDSA_SIG": "syscall",
+ "syscall.PROV_EC_ECNRA_FULL": "syscall",
+ "syscall.PROV_EC_ECNRA_SIG": "syscall",
+ "syscall.PROV_FORTEZZA": "syscall",
+ "syscall.PROV_INTEL_SEC": "syscall",
+ "syscall.PROV_MS_EXCHANGE": "syscall",
+ "syscall.PROV_REPLACE_OWF": "syscall",
+ "syscall.PROV_RNG": "syscall",
+ "syscall.PROV_RSA_AES": "syscall",
+ "syscall.PROV_RSA_FULL": "syscall",
+ "syscall.PROV_RSA_SCHANNEL": "syscall",
+ "syscall.PROV_RSA_SIG": "syscall",
+ "syscall.PROV_SPYRUS_LYNKS": "syscall",
+ "syscall.PROV_SSL": "syscall",
+ "syscall.PR_CAPBSET_DROP": "syscall",
+ "syscall.PR_CAPBSET_READ": "syscall",
+ "syscall.PR_CLEAR_SECCOMP_FILTER": "syscall",
+ "syscall.PR_ENDIAN_BIG": "syscall",
+ "syscall.PR_ENDIAN_LITTLE": "syscall",
+ "syscall.PR_ENDIAN_PPC_LITTLE": "syscall",
+ "syscall.PR_FPEMU_NOPRINT": "syscall",
+ "syscall.PR_FPEMU_SIGFPE": "syscall",
+ "syscall.PR_FP_EXC_ASYNC": "syscall",
+ "syscall.PR_FP_EXC_DISABLED": "syscall",
+ "syscall.PR_FP_EXC_DIV": "syscall",
+ "syscall.PR_FP_EXC_INV": "syscall",
+ "syscall.PR_FP_EXC_NONRECOV": "syscall",
+ "syscall.PR_FP_EXC_OVF": "syscall",
+ "syscall.PR_FP_EXC_PRECISE": "syscall",
+ "syscall.PR_FP_EXC_RES": "syscall",
+ "syscall.PR_FP_EXC_SW_ENABLE": "syscall",
+ "syscall.PR_FP_EXC_UND": "syscall",
+ "syscall.PR_GET_DUMPABLE": "syscall",
+ "syscall.PR_GET_ENDIAN": "syscall",
+ "syscall.PR_GET_FPEMU": "syscall",
+ "syscall.PR_GET_FPEXC": "syscall",
+ "syscall.PR_GET_KEEPCAPS": "syscall",
+ "syscall.PR_GET_NAME": "syscall",
+ "syscall.PR_GET_PDEATHSIG": "syscall",
+ "syscall.PR_GET_SECCOMP": "syscall",
+ "syscall.PR_GET_SECCOMP_FILTER": "syscall",
+ "syscall.PR_GET_SECUREBITS": "syscall",
+ "syscall.PR_GET_TIMERSLACK": "syscall",
+ "syscall.PR_GET_TIMING": "syscall",
+ "syscall.PR_GET_TSC": "syscall",
+ "syscall.PR_GET_UNALIGN": "syscall",
+ "syscall.PR_MCE_KILL": "syscall",
+ "syscall.PR_MCE_KILL_CLEAR": "syscall",
+ "syscall.PR_MCE_KILL_DEFAULT": "syscall",
+ "syscall.PR_MCE_KILL_EARLY": "syscall",
+ "syscall.PR_MCE_KILL_GET": "syscall",
+ "syscall.PR_MCE_KILL_LATE": "syscall",
+ "syscall.PR_MCE_KILL_SET": "syscall",
+ "syscall.PR_SECCOMP_FILTER_EVENT": "syscall",
+ "syscall.PR_SECCOMP_FILTER_SYSCALL": "syscall",
+ "syscall.PR_SET_DUMPABLE": "syscall",
+ "syscall.PR_SET_ENDIAN": "syscall",
+ "syscall.PR_SET_FPEMU": "syscall",
+ "syscall.PR_SET_FPEXC": "syscall",
+ "syscall.PR_SET_KEEPCAPS": "syscall",
+ "syscall.PR_SET_NAME": "syscall",
+ "syscall.PR_SET_PDEATHSIG": "syscall",
+ "syscall.PR_SET_PTRACER": "syscall",
+ "syscall.PR_SET_SECCOMP": "syscall",
+ "syscall.PR_SET_SECCOMP_FILTER": "syscall",
+ "syscall.PR_SET_SECUREBITS": "syscall",
+ "syscall.PR_SET_TIMERSLACK": "syscall",
+ "syscall.PR_SET_TIMING": "syscall",
+ "syscall.PR_SET_TSC": "syscall",
+ "syscall.PR_SET_UNALIGN": "syscall",
+ "syscall.PR_TASK_PERF_EVENTS_DISABLE": "syscall",
+ "syscall.PR_TASK_PERF_EVENTS_ENABLE": "syscall",
+ "syscall.PR_TIMING_STATISTICAL": "syscall",
+ "syscall.PR_TIMING_TIMESTAMP": "syscall",
+ "syscall.PR_TSC_ENABLE": "syscall",
+ "syscall.PR_TSC_SIGSEGV": "syscall",
+ "syscall.PR_UNALIGN_NOPRINT": "syscall",
+ "syscall.PR_UNALIGN_SIGBUS": "syscall",
+ "syscall.PTRACE_ARCH_PRCTL": "syscall",
+ "syscall.PTRACE_ATTACH": "syscall",
+ "syscall.PTRACE_CONT": "syscall",
+ "syscall.PTRACE_DETACH": "syscall",
+ "syscall.PTRACE_EVENT_CLONE": "syscall",
+ "syscall.PTRACE_EVENT_EXEC": "syscall",
+ "syscall.PTRACE_EVENT_EXIT": "syscall",
+ "syscall.PTRACE_EVENT_FORK": "syscall",
+ "syscall.PTRACE_EVENT_VFORK": "syscall",
+ "syscall.PTRACE_EVENT_VFORK_DONE": "syscall",
+ "syscall.PTRACE_GETCRUNCHREGS": "syscall",
+ "syscall.PTRACE_GETEVENTMSG": "syscall",
+ "syscall.PTRACE_GETFPREGS": "syscall",
+ "syscall.PTRACE_GETFPXREGS": "syscall",
+ "syscall.PTRACE_GETHBPREGS": "syscall",
+ "syscall.PTRACE_GETREGS": "syscall",
+ "syscall.PTRACE_GETREGSET": "syscall",
+ "syscall.PTRACE_GETSIGINFO": "syscall",
+ "syscall.PTRACE_GETVFPREGS": "syscall",
+ "syscall.PTRACE_GETWMMXREGS": "syscall",
+ "syscall.PTRACE_GET_THREAD_AREA": "syscall",
+ "syscall.PTRACE_KILL": "syscall",
+ "syscall.PTRACE_OLDSETOPTIONS": "syscall",
+ "syscall.PTRACE_O_MASK": "syscall",
+ "syscall.PTRACE_O_TRACECLONE": "syscall",
+ "syscall.PTRACE_O_TRACEEXEC": "syscall",
+ "syscall.PTRACE_O_TRACEEXIT": "syscall",
+ "syscall.PTRACE_O_TRACEFORK": "syscall",
+ "syscall.PTRACE_O_TRACESYSGOOD": "syscall",
+ "syscall.PTRACE_O_TRACEVFORK": "syscall",
+ "syscall.PTRACE_O_TRACEVFORKDONE": "syscall",
+ "syscall.PTRACE_PEEKDATA": "syscall",
+ "syscall.PTRACE_PEEKTEXT": "syscall",
+ "syscall.PTRACE_PEEKUSR": "syscall",
+ "syscall.PTRACE_POKEDATA": "syscall",
+ "syscall.PTRACE_POKETEXT": "syscall",
+ "syscall.PTRACE_POKEUSR": "syscall",
+ "syscall.PTRACE_SETCRUNCHREGS": "syscall",
+ "syscall.PTRACE_SETFPREGS": "syscall",
+ "syscall.PTRACE_SETFPXREGS": "syscall",
+ "syscall.PTRACE_SETHBPREGS": "syscall",
+ "syscall.PTRACE_SETOPTIONS": "syscall",
+ "syscall.PTRACE_SETREGS": "syscall",
+ "syscall.PTRACE_SETREGSET": "syscall",
+ "syscall.PTRACE_SETSIGINFO": "syscall",
+ "syscall.PTRACE_SETVFPREGS": "syscall",
+ "syscall.PTRACE_SETWMMXREGS": "syscall",
+ "syscall.PTRACE_SET_SYSCALL": "syscall",
+ "syscall.PTRACE_SET_THREAD_AREA": "syscall",
+ "syscall.PTRACE_SINGLEBLOCK": "syscall",
+ "syscall.PTRACE_SINGLESTEP": "syscall",
+ "syscall.PTRACE_SYSCALL": "syscall",
+ "syscall.PTRACE_SYSEMU": "syscall",
+ "syscall.PTRACE_SYSEMU_SINGLESTEP": "syscall",
+ "syscall.PTRACE_TRACEME": "syscall",
+ "syscall.PT_ATTACH": "syscall",
+ "syscall.PT_ATTACHEXC": "syscall",
+ "syscall.PT_CONTINUE": "syscall",
+ "syscall.PT_DATA_ADDR": "syscall",
+ "syscall.PT_DENY_ATTACH": "syscall",
+ "syscall.PT_DETACH": "syscall",
+ "syscall.PT_FIRSTMACH": "syscall",
+ "syscall.PT_FORCEQUOTA": "syscall",
+ "syscall.PT_KILL": "syscall",
+ "syscall.PT_MASK": "syscall",
+ "syscall.PT_READ_D": "syscall",
+ "syscall.PT_READ_I": "syscall",
+ "syscall.PT_READ_U": "syscall",
+ "syscall.PT_SIGEXC": "syscall",
+ "syscall.PT_STEP": "syscall",
+ "syscall.PT_TEXT_ADDR": "syscall",
+ "syscall.PT_TEXT_END_ADDR": "syscall",
+ "syscall.PT_THUPDATE": "syscall",
+ "syscall.PT_TRACE_ME": "syscall",
+ "syscall.PT_WRITE_D": "syscall",
+ "syscall.PT_WRITE_I": "syscall",
+ "syscall.PT_WRITE_U": "syscall",
+ "syscall.ParseDirent": "syscall",
+ "syscall.ParseNetlinkMessage": "syscall",
+ "syscall.ParseNetlinkRouteAttr": "syscall",
+ "syscall.ParseRoutingMessage": "syscall",
+ "syscall.ParseRoutingSockaddr": "syscall",
+ "syscall.ParseSocketControlMessage": "syscall",
+ "syscall.ParseUnixCredentials": "syscall",
+ "syscall.ParseUnixRights": "syscall",
+ "syscall.PathMax": "syscall",
+ "syscall.Pathconf": "syscall",
+ "syscall.Pause": "syscall",
+ "syscall.Pipe": "syscall",
+ "syscall.Pipe2": "syscall",
+ "syscall.PivotRoot": "syscall",
+ "syscall.PostQueuedCompletionStatus": "syscall",
+ "syscall.Pread": "syscall",
+ "syscall.Proc": "syscall",
+ "syscall.ProcAttr": "syscall",
+ "syscall.Process32First": "syscall",
+ "syscall.Process32Next": "syscall",
+ "syscall.ProcessEntry32": "syscall",
+ "syscall.ProcessInformation": "syscall",
+ "syscall.Protoent": "syscall",
+ "syscall.PtraceAttach": "syscall",
+ "syscall.PtraceCont": "syscall",
+ "syscall.PtraceDetach": "syscall",
+ "syscall.PtraceGetEventMsg": "syscall",
+ "syscall.PtraceGetRegs": "syscall",
+ "syscall.PtracePeekData": "syscall",
+ "syscall.PtracePeekText": "syscall",
+ "syscall.PtracePokeData": "syscall",
+ "syscall.PtracePokeText": "syscall",
+ "syscall.PtraceRegs": "syscall",
+ "syscall.PtraceSetOptions": "syscall",
+ "syscall.PtraceSetRegs": "syscall",
+ "syscall.PtraceSingleStep": "syscall",
+ "syscall.PtraceSyscall": "syscall",
+ "syscall.Pwrite": "syscall",
+ "syscall.REG_BINARY": "syscall",
+ "syscall.REG_DWORD": "syscall",
+ "syscall.REG_DWORD_BIG_ENDIAN": "syscall",
+ "syscall.REG_DWORD_LITTLE_ENDIAN": "syscall",
+ "syscall.REG_EXPAND_SZ": "syscall",
+ "syscall.REG_FULL_RESOURCE_DESCRIPTOR": "syscall",
+ "syscall.REG_LINK": "syscall",
+ "syscall.REG_MULTI_SZ": "syscall",
+ "syscall.REG_NONE": "syscall",
+ "syscall.REG_QWORD": "syscall",
+ "syscall.REG_QWORD_LITTLE_ENDIAN": "syscall",
+ "syscall.REG_RESOURCE_LIST": "syscall",
+ "syscall.REG_RESOURCE_REQUIREMENTS_LIST": "syscall",
+ "syscall.REG_SZ": "syscall",
+ "syscall.RLIMIT_AS": "syscall",
+ "syscall.RLIMIT_CORE": "syscall",
+ "syscall.RLIMIT_CPU": "syscall",
+ "syscall.RLIMIT_DATA": "syscall",
+ "syscall.RLIMIT_FSIZE": "syscall",
+ "syscall.RLIMIT_NOFILE": "syscall",
+ "syscall.RLIMIT_STACK": "syscall",
+ "syscall.RLIM_INFINITY": "syscall",
+ "syscall.RTAX_ADVMSS": "syscall",
+ "syscall.RTAX_AUTHOR": "syscall",
+ "syscall.RTAX_BRD": "syscall",
+ "syscall.RTAX_CWND": "syscall",
+ "syscall.RTAX_DST": "syscall",
+ "syscall.RTAX_FEATURES": "syscall",
+ "syscall.RTAX_FEATURE_ALLFRAG": "syscall",
+ "syscall.RTAX_FEATURE_ECN": "syscall",
+ "syscall.RTAX_FEATURE_SACK": "syscall",
+ "syscall.RTAX_FEATURE_TIMESTAMP": "syscall",
+ "syscall.RTAX_GATEWAY": "syscall",
+ "syscall.RTAX_GENMASK": "syscall",
+ "syscall.RTAX_HOPLIMIT": "syscall",
+ "syscall.RTAX_IFA": "syscall",
+ "syscall.RTAX_IFP": "syscall",
+ "syscall.RTAX_INITCWND": "syscall",
+ "syscall.RTAX_INITRWND": "syscall",
+ "syscall.RTAX_LABEL": "syscall",
+ "syscall.RTAX_LOCK": "syscall",
+ "syscall.RTAX_MAX": "syscall",
+ "syscall.RTAX_MTU": "syscall",
+ "syscall.RTAX_NETMASK": "syscall",
+ "syscall.RTAX_REORDERING": "syscall",
+ "syscall.RTAX_RTO_MIN": "syscall",
+ "syscall.RTAX_RTT": "syscall",
+ "syscall.RTAX_RTTVAR": "syscall",
+ "syscall.RTAX_SRC": "syscall",
+ "syscall.RTAX_SRCMASK": "syscall",
+ "syscall.RTAX_SSTHRESH": "syscall",
+ "syscall.RTAX_TAG": "syscall",
+ "syscall.RTAX_UNSPEC": "syscall",
+ "syscall.RTAX_WINDOW": "syscall",
+ "syscall.RTA_ALIGNTO": "syscall",
+ "syscall.RTA_AUTHOR": "syscall",
+ "syscall.RTA_BRD": "syscall",
+ "syscall.RTA_CACHEINFO": "syscall",
+ "syscall.RTA_DST": "syscall",
+ "syscall.RTA_FLOW": "syscall",
+ "syscall.RTA_GATEWAY": "syscall",
+ "syscall.RTA_GENMASK": "syscall",
+ "syscall.RTA_IFA": "syscall",
+ "syscall.RTA_IFP": "syscall",
+ "syscall.RTA_IIF": "syscall",
+ "syscall.RTA_LABEL": "syscall",
+ "syscall.RTA_MAX": "syscall",
+ "syscall.RTA_METRICS": "syscall",
+ "syscall.RTA_MULTIPATH": "syscall",
+ "syscall.RTA_NETMASK": "syscall",
+ "syscall.RTA_OIF": "syscall",
+ "syscall.RTA_PREFSRC": "syscall",
+ "syscall.RTA_PRIORITY": "syscall",
+ "syscall.RTA_SRC": "syscall",
+ "syscall.RTA_SRCMASK": "syscall",
+ "syscall.RTA_TABLE": "syscall",
+ "syscall.RTA_TAG": "syscall",
+ "syscall.RTA_UNSPEC": "syscall",
+ "syscall.RTCF_DIRECTSRC": "syscall",
+ "syscall.RTCF_DOREDIRECT": "syscall",
+ "syscall.RTCF_LOG": "syscall",
+ "syscall.RTCF_MASQ": "syscall",
+ "syscall.RTCF_NAT": "syscall",
+ "syscall.RTCF_VALVE": "syscall",
+ "syscall.RTF_ADDRCLASSMASK": "syscall",
+ "syscall.RTF_ADDRCONF": "syscall",
+ "syscall.RTF_ALLONLINK": "syscall",
+ "syscall.RTF_ANNOUNCE": "syscall",
+ "syscall.RTF_BLACKHOLE": "syscall",
+ "syscall.RTF_BROADCAST": "syscall",
+ "syscall.RTF_CACHE": "syscall",
+ "syscall.RTF_CLONED": "syscall",
+ "syscall.RTF_CLONING": "syscall",
+ "syscall.RTF_CONDEMNED": "syscall",
+ "syscall.RTF_DEFAULT": "syscall",
+ "syscall.RTF_DELCLONE": "syscall",
+ "syscall.RTF_DONE": "syscall",
+ "syscall.RTF_DYNAMIC": "syscall",
+ "syscall.RTF_FLOW": "syscall",
+ "syscall.RTF_FMASK": "syscall",
+ "syscall.RTF_GATEWAY": "syscall",
+ "syscall.RTF_GWFLAG_COMPAT": "syscall",
+ "syscall.RTF_HOST": "syscall",
+ "syscall.RTF_IFREF": "syscall",
+ "syscall.RTF_IFSCOPE": "syscall",
+ "syscall.RTF_INTERFACE": "syscall",
+ "syscall.RTF_IRTT": "syscall",
+ "syscall.RTF_LINKRT": "syscall",
+ "syscall.RTF_LLDATA": "syscall",
+ "syscall.RTF_LLINFO": "syscall",
+ "syscall.RTF_LOCAL": "syscall",
+ "syscall.RTF_MASK": "syscall",
+ "syscall.RTF_MODIFIED": "syscall",
+ "syscall.RTF_MPATH": "syscall",
+ "syscall.RTF_MPLS": "syscall",
+ "syscall.RTF_MSS": "syscall",
+ "syscall.RTF_MTU": "syscall",
+ "syscall.RTF_MULTICAST": "syscall",
+ "syscall.RTF_NAT": "syscall",
+ "syscall.RTF_NOFORWARD": "syscall",
+ "syscall.RTF_NONEXTHOP": "syscall",
+ "syscall.RTF_NOPMTUDISC": "syscall",
+ "syscall.RTF_PERMANENT_ARP": "syscall",
+ "syscall.RTF_PINNED": "syscall",
+ "syscall.RTF_POLICY": "syscall",
+ "syscall.RTF_PRCLONING": "syscall",
+ "syscall.RTF_PROTO1": "syscall",
+ "syscall.RTF_PROTO2": "syscall",
+ "syscall.RTF_PROTO3": "syscall",
+ "syscall.RTF_REINSTATE": "syscall",
+ "syscall.RTF_REJECT": "syscall",
+ "syscall.RTF_RNH_LOCKED": "syscall",
+ "syscall.RTF_SOURCE": "syscall",
+ "syscall.RTF_SRC": "syscall",
+ "syscall.RTF_STATIC": "syscall",
+ "syscall.RTF_STICKY": "syscall",
+ "syscall.RTF_THROW": "syscall",
+ "syscall.RTF_TUNNEL": "syscall",
+ "syscall.RTF_UP": "syscall",
+ "syscall.RTF_USETRAILERS": "syscall",
+ "syscall.RTF_WASCLONED": "syscall",
+ "syscall.RTF_WINDOW": "syscall",
+ "syscall.RTF_XRESOLVE": "syscall",
+ "syscall.RTM_ADD": "syscall",
+ "syscall.RTM_BASE": "syscall",
+ "syscall.RTM_CHANGE": "syscall",
+ "syscall.RTM_CHGADDR": "syscall",
+ "syscall.RTM_DELACTION": "syscall",
+ "syscall.RTM_DELADDR": "syscall",
+ "syscall.RTM_DELADDRLABEL": "syscall",
+ "syscall.RTM_DELETE": "syscall",
+ "syscall.RTM_DELLINK": "syscall",
+ "syscall.RTM_DELMADDR": "syscall",
+ "syscall.RTM_DELNEIGH": "syscall",
+ "syscall.RTM_DELQDISC": "syscall",
+ "syscall.RTM_DELROUTE": "syscall",
+ "syscall.RTM_DELRULE": "syscall",
+ "syscall.RTM_DELTCLASS": "syscall",
+ "syscall.RTM_DELTFILTER": "syscall",
+ "syscall.RTM_DESYNC": "syscall",
+ "syscall.RTM_F_CLONED": "syscall",
+ "syscall.RTM_F_EQUALIZE": "syscall",
+ "syscall.RTM_F_NOTIFY": "syscall",
+ "syscall.RTM_F_PREFIX": "syscall",
+ "syscall.RTM_GET": "syscall",
+ "syscall.RTM_GET2": "syscall",
+ "syscall.RTM_GETACTION": "syscall",
+ "syscall.RTM_GETADDR": "syscall",
+ "syscall.RTM_GETADDRLABEL": "syscall",
+ "syscall.RTM_GETANYCAST": "syscall",
+ "syscall.RTM_GETDCB": "syscall",
+ "syscall.RTM_GETLINK": "syscall",
+ "syscall.RTM_GETMULTICAST": "syscall",
+ "syscall.RTM_GETNEIGH": "syscall",
+ "syscall.RTM_GETNEIGHTBL": "syscall",
+ "syscall.RTM_GETQDISC": "syscall",
+ "syscall.RTM_GETROUTE": "syscall",
+ "syscall.RTM_GETRULE": "syscall",
+ "syscall.RTM_GETTCLASS": "syscall",
+ "syscall.RTM_GETTFILTER": "syscall",
+ "syscall.RTM_IEEE80211": "syscall",
+ "syscall.RTM_IFANNOUNCE": "syscall",
+ "syscall.RTM_IFINFO": "syscall",
+ "syscall.RTM_IFINFO2": "syscall",
+ "syscall.RTM_LLINFO_UPD": "syscall",
+ "syscall.RTM_LOCK": "syscall",
+ "syscall.RTM_LOSING": "syscall",
+ "syscall.RTM_MAX": "syscall",
+ "syscall.RTM_MAXSIZE": "syscall",
+ "syscall.RTM_MISS": "syscall",
+ "syscall.RTM_NEWACTION": "syscall",
+ "syscall.RTM_NEWADDR": "syscall",
+ "syscall.RTM_NEWADDRLABEL": "syscall",
+ "syscall.RTM_NEWLINK": "syscall",
+ "syscall.RTM_NEWMADDR": "syscall",
+ "syscall.RTM_NEWMADDR2": "syscall",
+ "syscall.RTM_NEWNDUSEROPT": "syscall",
+ "syscall.RTM_NEWNEIGH": "syscall",
+ "syscall.RTM_NEWNEIGHTBL": "syscall",
+ "syscall.RTM_NEWPREFIX": "syscall",
+ "syscall.RTM_NEWQDISC": "syscall",
+ "syscall.RTM_NEWROUTE": "syscall",
+ "syscall.RTM_NEWRULE": "syscall",
+ "syscall.RTM_NEWTCLASS": "syscall",
+ "syscall.RTM_NEWTFILTER": "syscall",
+ "syscall.RTM_NR_FAMILIES": "syscall",
+ "syscall.RTM_NR_MSGTYPES": "syscall",
+ "syscall.RTM_OIFINFO": "syscall",
+ "syscall.RTM_OLDADD": "syscall",
+ "syscall.RTM_OLDDEL": "syscall",
+ "syscall.RTM_OOIFINFO": "syscall",
+ "syscall.RTM_REDIRECT": "syscall",
+ "syscall.RTM_RESOLVE": "syscall",
+ "syscall.RTM_RTTUNIT": "syscall",
+ "syscall.RTM_SETDCB": "syscall",
+ "syscall.RTM_SETGATE": "syscall",
+ "syscall.RTM_SETLINK": "syscall",
+ "syscall.RTM_SETNEIGHTBL": "syscall",
+ "syscall.RTM_VERSION": "syscall",
+ "syscall.RTNH_ALIGNTO": "syscall",
+ "syscall.RTNH_F_DEAD": "syscall",
+ "syscall.RTNH_F_ONLINK": "syscall",
+ "syscall.RTNH_F_PERVASIVE": "syscall",
+ "syscall.RTNLGRP_IPV4_IFADDR": "syscall",
+ "syscall.RTNLGRP_IPV4_MROUTE": "syscall",
+ "syscall.RTNLGRP_IPV4_ROUTE": "syscall",
+ "syscall.RTNLGRP_IPV4_RULE": "syscall",
+ "syscall.RTNLGRP_IPV6_IFADDR": "syscall",
+ "syscall.RTNLGRP_IPV6_IFINFO": "syscall",
+ "syscall.RTNLGRP_IPV6_MROUTE": "syscall",
+ "syscall.RTNLGRP_IPV6_PREFIX": "syscall",
+ "syscall.RTNLGRP_IPV6_ROUTE": "syscall",
+ "syscall.RTNLGRP_IPV6_RULE": "syscall",
+ "syscall.RTNLGRP_LINK": "syscall",
+ "syscall.RTNLGRP_ND_USEROPT": "syscall",
+ "syscall.RTNLGRP_NEIGH": "syscall",
+ "syscall.RTNLGRP_NONE": "syscall",
+ "syscall.RTNLGRP_NOTIFY": "syscall",
+ "syscall.RTNLGRP_TC": "syscall",
+ "syscall.RTN_ANYCAST": "syscall",
+ "syscall.RTN_BLACKHOLE": "syscall",
+ "syscall.RTN_BROADCAST": "syscall",
+ "syscall.RTN_LOCAL": "syscall",
+ "syscall.RTN_MAX": "syscall",
+ "syscall.RTN_MULTICAST": "syscall",
+ "syscall.RTN_NAT": "syscall",
+ "syscall.RTN_PROHIBIT": "syscall",
+ "syscall.RTN_THROW": "syscall",
+ "syscall.RTN_UNICAST": "syscall",
+ "syscall.RTN_UNREACHABLE": "syscall",
+ "syscall.RTN_UNSPEC": "syscall",
+ "syscall.RTN_XRESOLVE": "syscall",
+ "syscall.RTPROT_BIRD": "syscall",
+ "syscall.RTPROT_BOOT": "syscall",
+ "syscall.RTPROT_DHCP": "syscall",
+ "syscall.RTPROT_DNROUTED": "syscall",
+ "syscall.RTPROT_GATED": "syscall",
+ "syscall.RTPROT_KERNEL": "syscall",
+ "syscall.RTPROT_MRT": "syscall",
+ "syscall.RTPROT_NTK": "syscall",
+ "syscall.RTPROT_RA": "syscall",
+ "syscall.RTPROT_REDIRECT": "syscall",
+ "syscall.RTPROT_STATIC": "syscall",
+ "syscall.RTPROT_UNSPEC": "syscall",
+ "syscall.RTPROT_XORP": "syscall",
+ "syscall.RTPROT_ZEBRA": "syscall",
+ "syscall.RTV_EXPIRE": "syscall",
+ "syscall.RTV_HOPCOUNT": "syscall",
+ "syscall.RTV_MTU": "syscall",
+ "syscall.RTV_RPIPE": "syscall",
+ "syscall.RTV_RTT": "syscall",
+ "syscall.RTV_RTTVAR": "syscall",
+ "syscall.RTV_SPIPE": "syscall",
+ "syscall.RTV_SSTHRESH": "syscall",
+ "syscall.RTV_WEIGHT": "syscall",
+ "syscall.RT_CACHING_CONTEXT": "syscall",
+ "syscall.RT_CLASS_DEFAULT": "syscall",
+ "syscall.RT_CLASS_LOCAL": "syscall",
+ "syscall.RT_CLASS_MAIN": "syscall",
+ "syscall.RT_CLASS_MAX": "syscall",
+ "syscall.RT_CLASS_UNSPEC": "syscall",
+ "syscall.RT_DEFAULT_FIB": "syscall",
+ "syscall.RT_NORTREF": "syscall",
+ "syscall.RT_SCOPE_HOST": "syscall",
+ "syscall.RT_SCOPE_LINK": "syscall",
+ "syscall.RT_SCOPE_NOWHERE": "syscall",
+ "syscall.RT_SCOPE_SITE": "syscall",
+ "syscall.RT_SCOPE_UNIVERSE": "syscall",
+ "syscall.RT_TABLEID_MAX": "syscall",
+ "syscall.RT_TABLE_COMPAT": "syscall",
+ "syscall.RT_TABLE_DEFAULT": "syscall",
+ "syscall.RT_TABLE_LOCAL": "syscall",
+ "syscall.RT_TABLE_MAIN": "syscall",
+ "syscall.RT_TABLE_MAX": "syscall",
+ "syscall.RT_TABLE_UNSPEC": "syscall",
+ "syscall.RUSAGE_CHILDREN": "syscall",
+ "syscall.RUSAGE_SELF": "syscall",
+ "syscall.RUSAGE_THREAD": "syscall",
+ "syscall.Radvisory_t": "syscall",
+ "syscall.RawSockaddr": "syscall",
+ "syscall.RawSockaddrAny": "syscall",
+ "syscall.RawSockaddrDatalink": "syscall",
+ "syscall.RawSockaddrInet4": "syscall",
+ "syscall.RawSockaddrInet6": "syscall",
+ "syscall.RawSockaddrLinklayer": "syscall",
+ "syscall.RawSockaddrNetlink": "syscall",
+ "syscall.RawSockaddrUnix": "syscall",
+ "syscall.RawSyscall": "syscall",
+ "syscall.RawSyscall6": "syscall",
+ "syscall.Read": "syscall",
+ "syscall.ReadConsole": "syscall",
+ "syscall.ReadDirectoryChanges": "syscall",
+ "syscall.ReadDirent": "syscall",
+ "syscall.ReadFile": "syscall",
+ "syscall.Readlink": "syscall",
+ "syscall.Reboot": "syscall",
+ "syscall.Recvfrom": "syscall",
+ "syscall.Recvmsg": "syscall",
+ "syscall.RegCloseKey": "syscall",
+ "syscall.RegEnumKeyEx": "syscall",
+ "syscall.RegOpenKeyEx": "syscall",
+ "syscall.RegQueryInfoKey": "syscall",
+ "syscall.RegQueryValueEx": "syscall",
+ "syscall.RemoveDirectory": "syscall",
+ "syscall.Removexattr": "syscall",
+ "syscall.Rename": "syscall",
+ "syscall.Renameat": "syscall",
+ "syscall.Revoke": "syscall",
+ "syscall.Rlimit": "syscall",
+ "syscall.Rmdir": "syscall",
+ "syscall.RouteMessage": "syscall",
+ "syscall.RouteRIB": "syscall",
+ "syscall.RtAttr": "syscall",
+ "syscall.RtGenmsg": "syscall",
+ "syscall.RtMetrics": "syscall",
+ "syscall.RtMsg": "syscall",
+ "syscall.RtMsghdr": "syscall",
+ "syscall.RtNexthop": "syscall",
+ "syscall.Rusage": "syscall",
+ "syscall.SCM_BINTIME": "syscall",
+ "syscall.SCM_CREDENTIALS": "syscall",
+ "syscall.SCM_CREDS": "syscall",
+ "syscall.SCM_RIGHTS": "syscall",
+ "syscall.SCM_TIMESTAMP": "syscall",
+ "syscall.SCM_TIMESTAMPING": "syscall",
+ "syscall.SCM_TIMESTAMPNS": "syscall",
+ "syscall.SCM_TIMESTAMP_MONOTONIC": "syscall",
+ "syscall.SHUT_RD": "syscall",
+ "syscall.SHUT_RDWR": "syscall",
+ "syscall.SHUT_WR": "syscall",
+ "syscall.SID": "syscall",
+ "syscall.SIDAndAttributes": "syscall",
+ "syscall.SIGABRT": "syscall",
+ "syscall.SIGALRM": "syscall",
+ "syscall.SIGBUS": "syscall",
+ "syscall.SIGCHLD": "syscall",
+ "syscall.SIGCLD": "syscall",
+ "syscall.SIGCONT": "syscall",
+ "syscall.SIGEMT": "syscall",
+ "syscall.SIGFPE": "syscall",
+ "syscall.SIGHUP": "syscall",
+ "syscall.SIGILL": "syscall",
+ "syscall.SIGINFO": "syscall",
+ "syscall.SIGINT": "syscall",
+ "syscall.SIGIO": "syscall",
+ "syscall.SIGIOT": "syscall",
+ "syscall.SIGKILL": "syscall",
+ "syscall.SIGLIBRT": "syscall",
+ "syscall.SIGLWP": "syscall",
+ "syscall.SIGPIPE": "syscall",
+ "syscall.SIGPOLL": "syscall",
+ "syscall.SIGPROF": "syscall",
+ "syscall.SIGPWR": "syscall",
+ "syscall.SIGQUIT": "syscall",
+ "syscall.SIGSEGV": "syscall",
+ "syscall.SIGSTKFLT": "syscall",
+ "syscall.SIGSTOP": "syscall",
+ "syscall.SIGSYS": "syscall",
+ "syscall.SIGTERM": "syscall",
+ "syscall.SIGTHR": "syscall",
+ "syscall.SIGTRAP": "syscall",
+ "syscall.SIGTSTP": "syscall",
+ "syscall.SIGTTIN": "syscall",
+ "syscall.SIGTTOU": "syscall",
+ "syscall.SIGUNUSED": "syscall",
+ "syscall.SIGURG": "syscall",
+ "syscall.SIGUSR1": "syscall",
+ "syscall.SIGUSR2": "syscall",
+ "syscall.SIGVTALRM": "syscall",
+ "syscall.SIGWINCH": "syscall",
+ "syscall.SIGXCPU": "syscall",
+ "syscall.SIGXFSZ": "syscall",
+ "syscall.SIOCADDDLCI": "syscall",
+ "syscall.SIOCADDMULTI": "syscall",
+ "syscall.SIOCADDRT": "syscall",
+ "syscall.SIOCAIFADDR": "syscall",
+ "syscall.SIOCAIFGROUP": "syscall",
+ "syscall.SIOCALIFADDR": "syscall",
+ "syscall.SIOCARPIPLL": "syscall",
+ "syscall.SIOCATMARK": "syscall",
+ "syscall.SIOCAUTOADDR": "syscall",
+ "syscall.SIOCAUTONETMASK": "syscall",
+ "syscall.SIOCBRDGADD": "syscall",
+ "syscall.SIOCBRDGADDS": "syscall",
+ "syscall.SIOCBRDGARL": "syscall",
+ "syscall.SIOCBRDGDADDR": "syscall",
+ "syscall.SIOCBRDGDEL": "syscall",
+ "syscall.SIOCBRDGDELS": "syscall",
+ "syscall.SIOCBRDGFLUSH": "syscall",
+ "syscall.SIOCBRDGFRL": "syscall",
+ "syscall.SIOCBRDGGCACHE": "syscall",
+ "syscall.SIOCBRDGGFD": "syscall",
+ "syscall.SIOCBRDGGHT": "syscall",
+ "syscall.SIOCBRDGGIFFLGS": "syscall",
+ "syscall.SIOCBRDGGMA": "syscall",
+ "syscall.SIOCBRDGGPARAM": "syscall",
+ "syscall.SIOCBRDGGPRI": "syscall",
+ "syscall.SIOCBRDGGRL": "syscall",
+ "syscall.SIOCBRDGGSIFS": "syscall",
+ "syscall.SIOCBRDGGTO": "syscall",
+ "syscall.SIOCBRDGIFS": "syscall",
+ "syscall.SIOCBRDGRTS": "syscall",
+ "syscall.SIOCBRDGSADDR": "syscall",
+ "syscall.SIOCBRDGSCACHE": "syscall",
+ "syscall.SIOCBRDGSFD": "syscall",
+ "syscall.SIOCBRDGSHT": "syscall",
+ "syscall.SIOCBRDGSIFCOST": "syscall",
+ "syscall.SIOCBRDGSIFFLGS": "syscall",
+ "syscall.SIOCBRDGSIFPRIO": "syscall",
+ "syscall.SIOCBRDGSMA": "syscall",
+ "syscall.SIOCBRDGSPRI": "syscall",
+ "syscall.SIOCBRDGSPROTO": "syscall",
+ "syscall.SIOCBRDGSTO": "syscall",
+ "syscall.SIOCBRDGSTXHC": "syscall",
+ "syscall.SIOCDARP": "syscall",
+ "syscall.SIOCDELDLCI": "syscall",
+ "syscall.SIOCDELMULTI": "syscall",
+ "syscall.SIOCDELRT": "syscall",
+ "syscall.SIOCDEVPRIVATE": "syscall",
+ "syscall.SIOCDIFADDR": "syscall",
+ "syscall.SIOCDIFGROUP": "syscall",
+ "syscall.SIOCDIFPHYADDR": "syscall",
+ "syscall.SIOCDLIFADDR": "syscall",
+ "syscall.SIOCDRARP": "syscall",
+ "syscall.SIOCGARP": "syscall",
+ "syscall.SIOCGDRVSPEC": "syscall",
+ "syscall.SIOCGETKALIVE": "syscall",
+ "syscall.SIOCGETLABEL": "syscall",
+ "syscall.SIOCGETPFLOW": "syscall",
+ "syscall.SIOCGETPFSYNC": "syscall",
+ "syscall.SIOCGETSGCNT": "syscall",
+ "syscall.SIOCGETVIFCNT": "syscall",
+ "syscall.SIOCGETVLAN": "syscall",
+ "syscall.SIOCGHIWAT": "syscall",
+ "syscall.SIOCGIFADDR": "syscall",
+ "syscall.SIOCGIFADDRPREF": "syscall",
+ "syscall.SIOCGIFALIAS": "syscall",
+ "syscall.SIOCGIFALTMTU": "syscall",
+ "syscall.SIOCGIFASYNCMAP": "syscall",
+ "syscall.SIOCGIFBOND": "syscall",
+ "syscall.SIOCGIFBR": "syscall",
+ "syscall.SIOCGIFBRDADDR": "syscall",
+ "syscall.SIOCGIFCAP": "syscall",
+ "syscall.SIOCGIFCONF": "syscall",
+ "syscall.SIOCGIFCOUNT": "syscall",
+ "syscall.SIOCGIFDATA": "syscall",
+ "syscall.SIOCGIFDESCR": "syscall",
+ "syscall.SIOCGIFDEVMTU": "syscall",
+ "syscall.SIOCGIFDLT": "syscall",
+ "syscall.SIOCGIFDSTADDR": "syscall",
+ "syscall.SIOCGIFENCAP": "syscall",
+ "syscall.SIOCGIFFIB": "syscall",
+ "syscall.SIOCGIFFLAGS": "syscall",
+ "syscall.SIOCGIFGATTR": "syscall",
+ "syscall.SIOCGIFGENERIC": "syscall",
+ "syscall.SIOCGIFGMEMB": "syscall",
+ "syscall.SIOCGIFGROUP": "syscall",
+ "syscall.SIOCGIFHARDMTU": "syscall",
+ "syscall.SIOCGIFHWADDR": "syscall",
+ "syscall.SIOCGIFINDEX": "syscall",
+ "syscall.SIOCGIFKPI": "syscall",
+ "syscall.SIOCGIFMAC": "syscall",
+ "syscall.SIOCGIFMAP": "syscall",
+ "syscall.SIOCGIFMEDIA": "syscall",
+ "syscall.SIOCGIFMEM": "syscall",
+ "syscall.SIOCGIFMETRIC": "syscall",
+ "syscall.SIOCGIFMTU": "syscall",
+ "syscall.SIOCGIFNAME": "syscall",
+ "syscall.SIOCGIFNETMASK": "syscall",
+ "syscall.SIOCGIFPDSTADDR": "syscall",
+ "syscall.SIOCGIFPFLAGS": "syscall",
+ "syscall.SIOCGIFPHYS": "syscall",
+ "syscall.SIOCGIFPRIORITY": "syscall",
+ "syscall.SIOCGIFPSRCADDR": "syscall",
+ "syscall.SIOCGIFRDOMAIN": "syscall",
+ "syscall.SIOCGIFRTLABEL": "syscall",
+ "syscall.SIOCGIFSLAVE": "syscall",
+ "syscall.SIOCGIFSTATUS": "syscall",
+ "syscall.SIOCGIFTIMESLOT": "syscall",
+ "syscall.SIOCGIFTXQLEN": "syscall",
+ "syscall.SIOCGIFVLAN": "syscall",
+ "syscall.SIOCGIFWAKEFLAGS": "syscall",
+ "syscall.SIOCGIFXFLAGS": "syscall",
+ "syscall.SIOCGLIFADDR": "syscall",
+ "syscall.SIOCGLIFPHYADDR": "syscall",
+ "syscall.SIOCGLIFPHYRTABLE": "syscall",
+ "syscall.SIOCGLIFPHYTTL": "syscall",
+ "syscall.SIOCGLINKSTR": "syscall",
+ "syscall.SIOCGLOWAT": "syscall",
+ "syscall.SIOCGPGRP": "syscall",
+ "syscall.SIOCGPRIVATE_0": "syscall",
+ "syscall.SIOCGPRIVATE_1": "syscall",
+ "syscall.SIOCGRARP": "syscall",
+ "syscall.SIOCGSPPPPARAMS": "syscall",
+ "syscall.SIOCGSTAMP": "syscall",
+ "syscall.SIOCGSTAMPNS": "syscall",
+ "syscall.SIOCGVH": "syscall",
+ "syscall.SIOCGVNETID": "syscall",
+ "syscall.SIOCIFCREATE": "syscall",
+ "syscall.SIOCIFCREATE2": "syscall",
+ "syscall.SIOCIFDESTROY": "syscall",
+ "syscall.SIOCIFGCLONERS": "syscall",
+ "syscall.SIOCINITIFADDR": "syscall",
+ "syscall.SIOCPROTOPRIVATE": "syscall",
+ "syscall.SIOCRSLVMULTI": "syscall",
+ "syscall.SIOCRTMSG": "syscall",
+ "syscall.SIOCSARP": "syscall",
+ "syscall.SIOCSDRVSPEC": "syscall",
+ "syscall.SIOCSETKALIVE": "syscall",
+ "syscall.SIOCSETLABEL": "syscall",
+ "syscall.SIOCSETPFLOW": "syscall",
+ "syscall.SIOCSETPFSYNC": "syscall",
+ "syscall.SIOCSETVLAN": "syscall",
+ "syscall.SIOCSHIWAT": "syscall",
+ "syscall.SIOCSIFADDR": "syscall",
+ "syscall.SIOCSIFADDRPREF": "syscall",
+ "syscall.SIOCSIFALTMTU": "syscall",
+ "syscall.SIOCSIFASYNCMAP": "syscall",
+ "syscall.SIOCSIFBOND": "syscall",
+ "syscall.SIOCSIFBR": "syscall",
+ "syscall.SIOCSIFBRDADDR": "syscall",
+ "syscall.SIOCSIFCAP": "syscall",
+ "syscall.SIOCSIFDESCR": "syscall",
+ "syscall.SIOCSIFDSTADDR": "syscall",
+ "syscall.SIOCSIFENCAP": "syscall",
+ "syscall.SIOCSIFFIB": "syscall",
+ "syscall.SIOCSIFFLAGS": "syscall",
+ "syscall.SIOCSIFGATTR": "syscall",
+ "syscall.SIOCSIFGENERIC": "syscall",
+ "syscall.SIOCSIFHWADDR": "syscall",
+ "syscall.SIOCSIFHWBROADCAST": "syscall",
+ "syscall.SIOCSIFKPI": "syscall",
+ "syscall.SIOCSIFLINK": "syscall",
+ "syscall.SIOCSIFLLADDR": "syscall",
+ "syscall.SIOCSIFMAC": "syscall",
+ "syscall.SIOCSIFMAP": "syscall",
+ "syscall.SIOCSIFMEDIA": "syscall",
+ "syscall.SIOCSIFMEM": "syscall",
+ "syscall.SIOCSIFMETRIC": "syscall",
+ "syscall.SIOCSIFMTU": "syscall",
+ "syscall.SIOCSIFNAME": "syscall",
+ "syscall.SIOCSIFNETMASK": "syscall",
+ "syscall.SIOCSIFPFLAGS": "syscall",
+ "syscall.SIOCSIFPHYADDR": "syscall",
+ "syscall.SIOCSIFPHYS": "syscall",
+ "syscall.SIOCSIFPRIORITY": "syscall",
+ "syscall.SIOCSIFRDOMAIN": "syscall",
+ "syscall.SIOCSIFRTLABEL": "syscall",
+ "syscall.SIOCSIFRVNET": "syscall",
+ "syscall.SIOCSIFSLAVE": "syscall",
+ "syscall.SIOCSIFTIMESLOT": "syscall",
+ "syscall.SIOCSIFTXQLEN": "syscall",
+ "syscall.SIOCSIFVLAN": "syscall",
+ "syscall.SIOCSIFVNET": "syscall",
+ "syscall.SIOCSIFXFLAGS": "syscall",
+ "syscall.SIOCSLIFPHYADDR": "syscall",
+ "syscall.SIOCSLIFPHYRTABLE": "syscall",
+ "syscall.SIOCSLIFPHYTTL": "syscall",
+ "syscall.SIOCSLINKSTR": "syscall",
+ "syscall.SIOCSLOWAT": "syscall",
+ "syscall.SIOCSPGRP": "syscall",
+ "syscall.SIOCSRARP": "syscall",
+ "syscall.SIOCSSPPPPARAMS": "syscall",
+ "syscall.SIOCSVH": "syscall",
+ "syscall.SIOCSVNETID": "syscall",
+ "syscall.SIOCZIFDATA": "syscall",
+ "syscall.SIO_GET_EXTENSION_FUNCTION_POINTER": "syscall",
+ "syscall.SIO_GET_INTERFACE_LIST": "syscall",
+ "syscall.SIO_KEEPALIVE_VALS": "syscall",
+ "syscall.SIO_UDP_CONNRESET": "syscall",
+ "syscall.SOCK_CLOEXEC": "syscall",
+ "syscall.SOCK_DCCP": "syscall",
+ "syscall.SOCK_DGRAM": "syscall",
+ "syscall.SOCK_FLAGS_MASK": "syscall",
+ "syscall.SOCK_MAXADDRLEN": "syscall",
+ "syscall.SOCK_NONBLOCK": "syscall",
+ "syscall.SOCK_NOSIGPIPE": "syscall",
+ "syscall.SOCK_PACKET": "syscall",
+ "syscall.SOCK_RAW": "syscall",
+ "syscall.SOCK_RDM": "syscall",
+ "syscall.SOCK_SEQPACKET": "syscall",
+ "syscall.SOCK_STREAM": "syscall",
+ "syscall.SOL_AAL": "syscall",
+ "syscall.SOL_ATM": "syscall",
+ "syscall.SOL_DECNET": "syscall",
+ "syscall.SOL_ICMPV6": "syscall",
+ "syscall.SOL_IP": "syscall",
+ "syscall.SOL_IPV6": "syscall",
+ "syscall.SOL_IRDA": "syscall",
+ "syscall.SOL_PACKET": "syscall",
+ "syscall.SOL_RAW": "syscall",
+ "syscall.SOL_SOCKET": "syscall",
+ "syscall.SOL_TCP": "syscall",
+ "syscall.SOL_X25": "syscall",
+ "syscall.SOMAXCONN": "syscall",
+ "syscall.SO_ACCEPTCONN": "syscall",
+ "syscall.SO_ACCEPTFILTER": "syscall",
+ "syscall.SO_ATTACH_FILTER": "syscall",
+ "syscall.SO_BINDANY": "syscall",
+ "syscall.SO_BINDTODEVICE": "syscall",
+ "syscall.SO_BINTIME": "syscall",
+ "syscall.SO_BROADCAST": "syscall",
+ "syscall.SO_BSDCOMPAT": "syscall",
+ "syscall.SO_DEBUG": "syscall",
+ "syscall.SO_DETACH_FILTER": "syscall",
+ "syscall.SO_DOMAIN": "syscall",
+ "syscall.SO_DONTROUTE": "syscall",
+ "syscall.SO_DONTTRUNC": "syscall",
+ "syscall.SO_ERROR": "syscall",
+ "syscall.SO_KEEPALIVE": "syscall",
+ "syscall.SO_LABEL": "syscall",
+ "syscall.SO_LINGER": "syscall",
+ "syscall.SO_LINGER_SEC": "syscall",
+ "syscall.SO_LISTENINCQLEN": "syscall",
+ "syscall.SO_LISTENQLEN": "syscall",
+ "syscall.SO_LISTENQLIMIT": "syscall",
+ "syscall.SO_MARK": "syscall",
+ "syscall.SO_NETPROC": "syscall",
+ "syscall.SO_NKE": "syscall",
+ "syscall.SO_NOADDRERR": "syscall",
+ "syscall.SO_NOHEADER": "syscall",
+ "syscall.SO_NOSIGPIPE": "syscall",
+ "syscall.SO_NOTIFYCONFLICT": "syscall",
+ "syscall.SO_NO_CHECK": "syscall",
+ "syscall.SO_NO_DDP": "syscall",
+ "syscall.SO_NO_OFFLOAD": "syscall",
+ "syscall.SO_NP_EXTENSIONS": "syscall",
+ "syscall.SO_NREAD": "syscall",
+ "syscall.SO_NWRITE": "syscall",
+ "syscall.SO_OOBINLINE": "syscall",
+ "syscall.SO_OVERFLOWED": "syscall",
+ "syscall.SO_PASSCRED": "syscall",
+ "syscall.SO_PASSSEC": "syscall",
+ "syscall.SO_PEERCRED": "syscall",
+ "syscall.SO_PEERLABEL": "syscall",
+ "syscall.SO_PEERNAME": "syscall",
+ "syscall.SO_PEERSEC": "syscall",
+ "syscall.SO_PRIORITY": "syscall",
+ "syscall.SO_PROTOCOL": "syscall",
+ "syscall.SO_PROTOTYPE": "syscall",
+ "syscall.SO_RANDOMPORT": "syscall",
+ "syscall.SO_RCVBUF": "syscall",
+ "syscall.SO_RCVBUFFORCE": "syscall",
+ "syscall.SO_RCVLOWAT": "syscall",
+ "syscall.SO_RCVTIMEO": "syscall",
+ "syscall.SO_RESTRICTIONS": "syscall",
+ "syscall.SO_RESTRICT_DENYIN": "syscall",
+ "syscall.SO_RESTRICT_DENYOUT": "syscall",
+ "syscall.SO_RESTRICT_DENYSET": "syscall",
+ "syscall.SO_REUSEADDR": "syscall",
+ "syscall.SO_REUSEPORT": "syscall",
+ "syscall.SO_REUSESHAREUID": "syscall",
+ "syscall.SO_RTABLE": "syscall",
+ "syscall.SO_RXQ_OVFL": "syscall",
+ "syscall.SO_SECURITY_AUTHENTICATION": "syscall",
+ "syscall.SO_SECURITY_ENCRYPTION_NETWORK": "syscall",
+ "syscall.SO_SECURITY_ENCRYPTION_TRANSPORT": "syscall",
+ "syscall.SO_SETFIB": "syscall",
+ "syscall.SO_SNDBUF": "syscall",
+ "syscall.SO_SNDBUFFORCE": "syscall",
+ "syscall.SO_SNDLOWAT": "syscall",
+ "syscall.SO_SNDTIMEO": "syscall",
+ "syscall.SO_SPLICE": "syscall",
+ "syscall.SO_TIMESTAMP": "syscall",
+ "syscall.SO_TIMESTAMPING": "syscall",
+ "syscall.SO_TIMESTAMPNS": "syscall",
+ "syscall.SO_TIMESTAMP_MONOTONIC": "syscall",
+ "syscall.SO_TYPE": "syscall",
+ "syscall.SO_UPCALLCLOSEWAIT": "syscall",
+ "syscall.SO_UPDATE_ACCEPT_CONTEXT": "syscall",
+ "syscall.SO_UPDATE_CONNECT_CONTEXT": "syscall",
+ "syscall.SO_USELOOPBACK": "syscall",
+ "syscall.SO_USER_COOKIE": "syscall",
+ "syscall.SO_VENDOR": "syscall",
+ "syscall.SO_WANTMORE": "syscall",
+ "syscall.SO_WANTOOBFLAG": "syscall",
+ "syscall.SSLExtraCertChainPolicyPara": "syscall",
+ "syscall.STANDARD_RIGHTS_ALL": "syscall",
+ "syscall.STANDARD_RIGHTS_EXECUTE": "syscall",
+ "syscall.STANDARD_RIGHTS_READ": "syscall",
+ "syscall.STANDARD_RIGHTS_REQUIRED": "syscall",
+ "syscall.STANDARD_RIGHTS_WRITE": "syscall",
+ "syscall.STARTF_USESHOWWINDOW": "syscall",
+ "syscall.STARTF_USESTDHANDLES": "syscall",
+ "syscall.STD_ERROR_HANDLE": "syscall",
+ "syscall.STD_INPUT_HANDLE": "syscall",
+ "syscall.STD_OUTPUT_HANDLE": "syscall",
+ "syscall.SUBLANG_ENGLISH_US": "syscall",
+ "syscall.SW_FORCEMINIMIZE": "syscall",
+ "syscall.SW_HIDE": "syscall",
+ "syscall.SW_MAXIMIZE": "syscall",
+ "syscall.SW_MINIMIZE": "syscall",
+ "syscall.SW_NORMAL": "syscall",
+ "syscall.SW_RESTORE": "syscall",
+ "syscall.SW_SHOW": "syscall",
+ "syscall.SW_SHOWDEFAULT": "syscall",
+ "syscall.SW_SHOWMAXIMIZED": "syscall",
+ "syscall.SW_SHOWMINIMIZED": "syscall",
+ "syscall.SW_SHOWMINNOACTIVE": "syscall",
+ "syscall.SW_SHOWNA": "syscall",
+ "syscall.SW_SHOWNOACTIVATE": "syscall",
+ "syscall.SW_SHOWNORMAL": "syscall",
+ "syscall.SYMBOLIC_LINK_FLAG_DIRECTORY": "syscall",
+ "syscall.SYNCHRONIZE": "syscall",
+ "syscall.SYSCTL_VERSION": "syscall",
+ "syscall.SYSCTL_VERS_0": "syscall",
+ "syscall.SYSCTL_VERS_1": "syscall",
+ "syscall.SYSCTL_VERS_MASK": "syscall",
+ "syscall.SYS_ABORT2": "syscall",
+ "syscall.SYS_ACCEPT": "syscall",
+ "syscall.SYS_ACCEPT4": "syscall",
+ "syscall.SYS_ACCEPT_NOCANCEL": "syscall",
+ "syscall.SYS_ACCESS": "syscall",
+ "syscall.SYS_ACCESS_EXTENDED": "syscall",
+ "syscall.SYS_ACCT": "syscall",
+ "syscall.SYS_ADD_KEY": "syscall",
+ "syscall.SYS_ADD_PROFIL": "syscall",
+ "syscall.SYS_ADJFREQ": "syscall",
+ "syscall.SYS_ADJTIME": "syscall",
+ "syscall.SYS_ADJTIMEX": "syscall",
+ "syscall.SYS_AFS_SYSCALL": "syscall",
+ "syscall.SYS_AIO_CANCEL": "syscall",
+ "syscall.SYS_AIO_ERROR": "syscall",
+ "syscall.SYS_AIO_FSYNC": "syscall",
+ "syscall.SYS_AIO_READ": "syscall",
+ "syscall.SYS_AIO_RETURN": "syscall",
+ "syscall.SYS_AIO_SUSPEND": "syscall",
+ "syscall.SYS_AIO_SUSPEND_NOCANCEL": "syscall",
+ "syscall.SYS_AIO_WRITE": "syscall",
+ "syscall.SYS_ALARM": "syscall",
+ "syscall.SYS_ARCH_PRCTL": "syscall",
+ "syscall.SYS_ARM_FADVISE64_64": "syscall",
+ "syscall.SYS_ARM_SYNC_FILE_RANGE": "syscall",
+ "syscall.SYS_ATGETMSG": "syscall",
+ "syscall.SYS_ATPGETREQ": "syscall",
+ "syscall.SYS_ATPGETRSP": "syscall",
+ "syscall.SYS_ATPSNDREQ": "syscall",
+ "syscall.SYS_ATPSNDRSP": "syscall",
+ "syscall.SYS_ATPUTMSG": "syscall",
+ "syscall.SYS_ATSOCKET": "syscall",
+ "syscall.SYS_AUDIT": "syscall",
+ "syscall.SYS_AUDITCTL": "syscall",
+ "syscall.SYS_AUDITON": "syscall",
+ "syscall.SYS_AUDIT_SESSION_JOIN": "syscall",
+ "syscall.SYS_AUDIT_SESSION_PORT": "syscall",
+ "syscall.SYS_AUDIT_SESSION_SELF": "syscall",
+ "syscall.SYS_BDFLUSH": "syscall",
+ "syscall.SYS_BIND": "syscall",
+ "syscall.SYS_BINDAT": "syscall",
+ "syscall.SYS_BREAK": "syscall",
+ "syscall.SYS_BRK": "syscall",
+ "syscall.SYS_BSDTHREAD_CREATE": "syscall",
+ "syscall.SYS_BSDTHREAD_REGISTER": "syscall",
+ "syscall.SYS_BSDTHREAD_TERMINATE": "syscall",
+ "syscall.SYS_CAPGET": "syscall",
+ "syscall.SYS_CAPSET": "syscall",
+ "syscall.SYS_CAP_ENTER": "syscall",
+ "syscall.SYS_CAP_FCNTLS_GET": "syscall",
+ "syscall.SYS_CAP_FCNTLS_LIMIT": "syscall",
+ "syscall.SYS_CAP_GETMODE": "syscall",
+ "syscall.SYS_CAP_GETRIGHTS": "syscall",
+ "syscall.SYS_CAP_IOCTLS_GET": "syscall",
+ "syscall.SYS_CAP_IOCTLS_LIMIT": "syscall",
+ "syscall.SYS_CAP_NEW": "syscall",
+ "syscall.SYS_CAP_RIGHTS_GET": "syscall",
+ "syscall.SYS_CAP_RIGHTS_LIMIT": "syscall",
+ "syscall.SYS_CHDIR": "syscall",
+ "syscall.SYS_CHFLAGS": "syscall",
+ "syscall.SYS_CHFLAGSAT": "syscall",
+ "syscall.SYS_CHMOD": "syscall",
+ "syscall.SYS_CHMOD_EXTENDED": "syscall",
+ "syscall.SYS_CHOWN": "syscall",
+ "syscall.SYS_CHOWN32": "syscall",
+ "syscall.SYS_CHROOT": "syscall",
+ "syscall.SYS_CHUD": "syscall",
+ "syscall.SYS_CLOCK_ADJTIME": "syscall",
+ "syscall.SYS_CLOCK_GETCPUCLOCKID2": "syscall",
+ "syscall.SYS_CLOCK_GETRES": "syscall",
+ "syscall.SYS_CLOCK_GETTIME": "syscall",
+ "syscall.SYS_CLOCK_NANOSLEEP": "syscall",
+ "syscall.SYS_CLOCK_SETTIME": "syscall",
+ "syscall.SYS_CLONE": "syscall",
+ "syscall.SYS_CLOSE": "syscall",
+ "syscall.SYS_CLOSEFROM": "syscall",
+ "syscall.SYS_CLOSE_NOCANCEL": "syscall",
+ "syscall.SYS_CONNECT": "syscall",
+ "syscall.SYS_CONNECTAT": "syscall",
+ "syscall.SYS_CONNECT_NOCANCEL": "syscall",
+ "syscall.SYS_COPYFILE": "syscall",
+ "syscall.SYS_CPUSET": "syscall",
+ "syscall.SYS_CPUSET_GETAFFINITY": "syscall",
+ "syscall.SYS_CPUSET_GETID": "syscall",
+ "syscall.SYS_CPUSET_SETAFFINITY": "syscall",
+ "syscall.SYS_CPUSET_SETID": "syscall",
+ "syscall.SYS_CREAT": "syscall",
+ "syscall.SYS_CREATE_MODULE": "syscall",
+ "syscall.SYS_CSOPS": "syscall",
+ "syscall.SYS_DELETE": "syscall",
+ "syscall.SYS_DELETE_MODULE": "syscall",
+ "syscall.SYS_DUP": "syscall",
+ "syscall.SYS_DUP2": "syscall",
+ "syscall.SYS_DUP3": "syscall",
+ "syscall.SYS_EACCESS": "syscall",
+ "syscall.SYS_EPOLL_CREATE": "syscall",
+ "syscall.SYS_EPOLL_CREATE1": "syscall",
+ "syscall.SYS_EPOLL_CTL": "syscall",
+ "syscall.SYS_EPOLL_CTL_OLD": "syscall",
+ "syscall.SYS_EPOLL_PWAIT": "syscall",
+ "syscall.SYS_EPOLL_WAIT": "syscall",
+ "syscall.SYS_EPOLL_WAIT_OLD": "syscall",
+ "syscall.SYS_EVENTFD": "syscall",
+ "syscall.SYS_EVENTFD2": "syscall",
+ "syscall.SYS_EXCHANGEDATA": "syscall",
+ "syscall.SYS_EXECVE": "syscall",
+ "syscall.SYS_EXIT": "syscall",
+ "syscall.SYS_EXIT_GROUP": "syscall",
+ "syscall.SYS_EXTATTRCTL": "syscall",
+ "syscall.SYS_EXTATTR_DELETE_FD": "syscall",
+ "syscall.SYS_EXTATTR_DELETE_FILE": "syscall",
+ "syscall.SYS_EXTATTR_DELETE_LINK": "syscall",
+ "syscall.SYS_EXTATTR_GET_FD": "syscall",
+ "syscall.SYS_EXTATTR_GET_FILE": "syscall",
+ "syscall.SYS_EXTATTR_GET_LINK": "syscall",
+ "syscall.SYS_EXTATTR_LIST_FD": "syscall",
+ "syscall.SYS_EXTATTR_LIST_FILE": "syscall",
+ "syscall.SYS_EXTATTR_LIST_LINK": "syscall",
+ "syscall.SYS_EXTATTR_SET_FD": "syscall",
+ "syscall.SYS_EXTATTR_SET_FILE": "syscall",
+ "syscall.SYS_EXTATTR_SET_LINK": "syscall",
+ "syscall.SYS_FACCESSAT": "syscall",
+ "syscall.SYS_FADVISE64": "syscall",
+ "syscall.SYS_FADVISE64_64": "syscall",
+ "syscall.SYS_FALLOCATE": "syscall",
+ "syscall.SYS_FANOTIFY_INIT": "syscall",
+ "syscall.SYS_FANOTIFY_MARK": "syscall",
+ "syscall.SYS_FCHDIR": "syscall",
+ "syscall.SYS_FCHFLAGS": "syscall",
+ "syscall.SYS_FCHMOD": "syscall",
+ "syscall.SYS_FCHMODAT": "syscall",
+ "syscall.SYS_FCHMOD_EXTENDED": "syscall",
+ "syscall.SYS_FCHOWN": "syscall",
+ "syscall.SYS_FCHOWN32": "syscall",
+ "syscall.SYS_FCHOWNAT": "syscall",
+ "syscall.SYS_FCHROOT": "syscall",
+ "syscall.SYS_FCNTL": "syscall",
+ "syscall.SYS_FCNTL64": "syscall",
+ "syscall.SYS_FCNTL_NOCANCEL": "syscall",
+ "syscall.SYS_FDATASYNC": "syscall",
+ "syscall.SYS_FEXECVE": "syscall",
+ "syscall.SYS_FFCLOCK_GETCOUNTER": "syscall",
+ "syscall.SYS_FFCLOCK_GETESTIMATE": "syscall",
+ "syscall.SYS_FFCLOCK_SETESTIMATE": "syscall",
+ "syscall.SYS_FFSCTL": "syscall",
+ "syscall.SYS_FGETATTRLIST": "syscall",
+ "syscall.SYS_FGETXATTR": "syscall",
+ "syscall.SYS_FHOPEN": "syscall",
+ "syscall.SYS_FHSTAT": "syscall",
+ "syscall.SYS_FHSTATFS": "syscall",
+ "syscall.SYS_FILEPORT_MAKEFD": "syscall",
+ "syscall.SYS_FILEPORT_MAKEPORT": "syscall",
+ "syscall.SYS_FKTRACE": "syscall",
+ "syscall.SYS_FLISTXATTR": "syscall",
+ "syscall.SYS_FLOCK": "syscall",
+ "syscall.SYS_FORK": "syscall",
+ "syscall.SYS_FPATHCONF": "syscall",
+ "syscall.SYS_FREEBSD6_FTRUNCATE": "syscall",
+ "syscall.SYS_FREEBSD6_LSEEK": "syscall",
+ "syscall.SYS_FREEBSD6_MMAP": "syscall",
+ "syscall.SYS_FREEBSD6_PREAD": "syscall",
+ "syscall.SYS_FREEBSD6_PWRITE": "syscall",
+ "syscall.SYS_FREEBSD6_TRUNCATE": "syscall",
+ "syscall.SYS_FREMOVEXATTR": "syscall",
+ "syscall.SYS_FSCTL": "syscall",
+ "syscall.SYS_FSETATTRLIST": "syscall",
+ "syscall.SYS_FSETXATTR": "syscall",
+ "syscall.SYS_FSGETPATH": "syscall",
+ "syscall.SYS_FSTAT": "syscall",
+ "syscall.SYS_FSTAT64": "syscall",
+ "syscall.SYS_FSTAT64_EXTENDED": "syscall",
+ "syscall.SYS_FSTATAT": "syscall",
+ "syscall.SYS_FSTATAT64": "syscall",
+ "syscall.SYS_FSTATFS": "syscall",
+ "syscall.SYS_FSTATFS64": "syscall",
+ "syscall.SYS_FSTATV": "syscall",
+ "syscall.SYS_FSTATVFS1": "syscall",
+ "syscall.SYS_FSTAT_EXTENDED": "syscall",
+ "syscall.SYS_FSYNC": "syscall",
+ "syscall.SYS_FSYNC_NOCANCEL": "syscall",
+ "syscall.SYS_FSYNC_RANGE": "syscall",
+ "syscall.SYS_FTIME": "syscall",
+ "syscall.SYS_FTRUNCATE": "syscall",
+ "syscall.SYS_FTRUNCATE64": "syscall",
+ "syscall.SYS_FUTEX": "syscall",
+ "syscall.SYS_FUTIMENS": "syscall",
+ "syscall.SYS_FUTIMES": "syscall",
+ "syscall.SYS_FUTIMESAT": "syscall",
+ "syscall.SYS_GETATTRLIST": "syscall",
+ "syscall.SYS_GETAUDIT": "syscall",
+ "syscall.SYS_GETAUDIT_ADDR": "syscall",
+ "syscall.SYS_GETAUID": "syscall",
+ "syscall.SYS_GETCONTEXT": "syscall",
+ "syscall.SYS_GETCPU": "syscall",
+ "syscall.SYS_GETCWD": "syscall",
+ "syscall.SYS_GETDENTS": "syscall",
+ "syscall.SYS_GETDENTS64": "syscall",
+ "syscall.SYS_GETDIRENTRIES": "syscall",
+ "syscall.SYS_GETDIRENTRIES64": "syscall",
+ "syscall.SYS_GETDIRENTRIESATTR": "syscall",
+ "syscall.SYS_GETDTABLECOUNT": "syscall",
+ "syscall.SYS_GETDTABLESIZE": "syscall",
+ "syscall.SYS_GETEGID": "syscall",
+ "syscall.SYS_GETEGID32": "syscall",
+ "syscall.SYS_GETEUID": "syscall",
+ "syscall.SYS_GETEUID32": "syscall",
+ "syscall.SYS_GETFH": "syscall",
+ "syscall.SYS_GETFSSTAT": "syscall",
+ "syscall.SYS_GETFSSTAT64": "syscall",
+ "syscall.SYS_GETGID": "syscall",
+ "syscall.SYS_GETGID32": "syscall",
+ "syscall.SYS_GETGROUPS": "syscall",
+ "syscall.SYS_GETGROUPS32": "syscall",
+ "syscall.SYS_GETHOSTUUID": "syscall",
+ "syscall.SYS_GETITIMER": "syscall",
+ "syscall.SYS_GETLCID": "syscall",
+ "syscall.SYS_GETLOGIN": "syscall",
+ "syscall.SYS_GETLOGINCLASS": "syscall",
+ "syscall.SYS_GETPEERNAME": "syscall",
+ "syscall.SYS_GETPGID": "syscall",
+ "syscall.SYS_GETPGRP": "syscall",
+ "syscall.SYS_GETPID": "syscall",
+ "syscall.SYS_GETPMSG": "syscall",
+ "syscall.SYS_GETPPID": "syscall",
+ "syscall.SYS_GETPRIORITY": "syscall",
+ "syscall.SYS_GETRESGID": "syscall",
+ "syscall.SYS_GETRESGID32": "syscall",
+ "syscall.SYS_GETRESUID": "syscall",
+ "syscall.SYS_GETRESUID32": "syscall",
+ "syscall.SYS_GETRLIMIT": "syscall",
+ "syscall.SYS_GETRTABLE": "syscall",
+ "syscall.SYS_GETRUSAGE": "syscall",
+ "syscall.SYS_GETSGROUPS": "syscall",
+ "syscall.SYS_GETSID": "syscall",
+ "syscall.SYS_GETSOCKNAME": "syscall",
+ "syscall.SYS_GETSOCKOPT": "syscall",
+ "syscall.SYS_GETTHRID": "syscall",
+ "syscall.SYS_GETTID": "syscall",
+ "syscall.SYS_GETTIMEOFDAY": "syscall",
+ "syscall.SYS_GETUID": "syscall",
+ "syscall.SYS_GETUID32": "syscall",
+ "syscall.SYS_GETVFSSTAT": "syscall",
+ "syscall.SYS_GETWGROUPS": "syscall",
+ "syscall.SYS_GETXATTR": "syscall",
+ "syscall.SYS_GET_KERNEL_SYMS": "syscall",
+ "syscall.SYS_GET_MEMPOLICY": "syscall",
+ "syscall.SYS_GET_ROBUST_LIST": "syscall",
+ "syscall.SYS_GET_THREAD_AREA": "syscall",
+ "syscall.SYS_GTTY": "syscall",
+ "syscall.SYS_IDENTITYSVC": "syscall",
+ "syscall.SYS_IDLE": "syscall",
+ "syscall.SYS_INITGROUPS": "syscall",
+ "syscall.SYS_INIT_MODULE": "syscall",
+ "syscall.SYS_INOTIFY_ADD_WATCH": "syscall",
+ "syscall.SYS_INOTIFY_INIT": "syscall",
+ "syscall.SYS_INOTIFY_INIT1": "syscall",
+ "syscall.SYS_INOTIFY_RM_WATCH": "syscall",
+ "syscall.SYS_IOCTL": "syscall",
+ "syscall.SYS_IOPERM": "syscall",
+ "syscall.SYS_IOPL": "syscall",
+ "syscall.SYS_IOPOLICYSYS": "syscall",
+ "syscall.SYS_IOPRIO_GET": "syscall",
+ "syscall.SYS_IOPRIO_SET": "syscall",
+ "syscall.SYS_IO_CANCEL": "syscall",
+ "syscall.SYS_IO_DESTROY": "syscall",
+ "syscall.SYS_IO_GETEVENTS": "syscall",
+ "syscall.SYS_IO_SETUP": "syscall",
+ "syscall.SYS_IO_SUBMIT": "syscall",
+ "syscall.SYS_IPC": "syscall",
+ "syscall.SYS_ISSETUGID": "syscall",
+ "syscall.SYS_JAIL": "syscall",
+ "syscall.SYS_JAIL_ATTACH": "syscall",
+ "syscall.SYS_JAIL_GET": "syscall",
+ "syscall.SYS_JAIL_REMOVE": "syscall",
+ "syscall.SYS_JAIL_SET": "syscall",
+ "syscall.SYS_KDEBUG_TRACE": "syscall",
+ "syscall.SYS_KENV": "syscall",
+ "syscall.SYS_KEVENT": "syscall",
+ "syscall.SYS_KEVENT64": "syscall",
+ "syscall.SYS_KEXEC_LOAD": "syscall",
+ "syscall.SYS_KEYCTL": "syscall",
+ "syscall.SYS_KILL": "syscall",
+ "syscall.SYS_KLDFIND": "syscall",
+ "syscall.SYS_KLDFIRSTMOD": "syscall",
+ "syscall.SYS_KLDLOAD": "syscall",
+ "syscall.SYS_KLDNEXT": "syscall",
+ "syscall.SYS_KLDSTAT": "syscall",
+ "syscall.SYS_KLDSYM": "syscall",
+ "syscall.SYS_KLDUNLOAD": "syscall",
+ "syscall.SYS_KLDUNLOADF": "syscall",
+ "syscall.SYS_KQUEUE": "syscall",
+ "syscall.SYS_KQUEUE1": "syscall",
+ "syscall.SYS_KTIMER_CREATE": "syscall",
+ "syscall.SYS_KTIMER_DELETE": "syscall",
+ "syscall.SYS_KTIMER_GETOVERRUN": "syscall",
+ "syscall.SYS_KTIMER_GETTIME": "syscall",
+ "syscall.SYS_KTIMER_SETTIME": "syscall",
+ "syscall.SYS_KTRACE": "syscall",
+ "syscall.SYS_LCHFLAGS": "syscall",
+ "syscall.SYS_LCHMOD": "syscall",
+ "syscall.SYS_LCHOWN": "syscall",
+ "syscall.SYS_LCHOWN32": "syscall",
+ "syscall.SYS_LGETFH": "syscall",
+ "syscall.SYS_LGETXATTR": "syscall",
+ "syscall.SYS_LINK": "syscall",
+ "syscall.SYS_LINKAT": "syscall",
+ "syscall.SYS_LIO_LISTIO": "syscall",
+ "syscall.SYS_LISTEN": "syscall",
+ "syscall.SYS_LISTXATTR": "syscall",
+ "syscall.SYS_LLISTXATTR": "syscall",
+ "syscall.SYS_LOCK": "syscall",
+ "syscall.SYS_LOOKUP_DCOOKIE": "syscall",
+ "syscall.SYS_LPATHCONF": "syscall",
+ "syscall.SYS_LREMOVEXATTR": "syscall",
+ "syscall.SYS_LSEEK": "syscall",
+ "syscall.SYS_LSETXATTR": "syscall",
+ "syscall.SYS_LSTAT": "syscall",
+ "syscall.SYS_LSTAT64": "syscall",
+ "syscall.SYS_LSTAT64_EXTENDED": "syscall",
+ "syscall.SYS_LSTATV": "syscall",
+ "syscall.SYS_LSTAT_EXTENDED": "syscall",
+ "syscall.SYS_LUTIMES": "syscall",
+ "syscall.SYS_MAC_SYSCALL": "syscall",
+ "syscall.SYS_MADVISE": "syscall",
+ "syscall.SYS_MADVISE1": "syscall",
+ "syscall.SYS_MAXSYSCALL": "syscall",
+ "syscall.SYS_MBIND": "syscall",
+ "syscall.SYS_MIGRATE_PAGES": "syscall",
+ "syscall.SYS_MINCORE": "syscall",
+ "syscall.SYS_MINHERIT": "syscall",
+ "syscall.SYS_MKCOMPLEX": "syscall",
+ "syscall.SYS_MKDIR": "syscall",
+ "syscall.SYS_MKDIRAT": "syscall",
+ "syscall.SYS_MKDIR_EXTENDED": "syscall",
+ "syscall.SYS_MKFIFO": "syscall",
+ "syscall.SYS_MKFIFOAT": "syscall",
+ "syscall.SYS_MKFIFO_EXTENDED": "syscall",
+ "syscall.SYS_MKNOD": "syscall",
+ "syscall.SYS_MKNODAT": "syscall",
+ "syscall.SYS_MLOCK": "syscall",
+ "syscall.SYS_MLOCKALL": "syscall",
+ "syscall.SYS_MMAP": "syscall",
+ "syscall.SYS_MMAP2": "syscall",
+ "syscall.SYS_MODCTL": "syscall",
+ "syscall.SYS_MODFIND": "syscall",
+ "syscall.SYS_MODFNEXT": "syscall",
+ "syscall.SYS_MODIFY_LDT": "syscall",
+ "syscall.SYS_MODNEXT": "syscall",
+ "syscall.SYS_MODSTAT": "syscall",
+ "syscall.SYS_MODWATCH": "syscall",
+ "syscall.SYS_MOUNT": "syscall",
+ "syscall.SYS_MOVE_PAGES": "syscall",
+ "syscall.SYS_MPROTECT": "syscall",
+ "syscall.SYS_MPX": "syscall",
+ "syscall.SYS_MQUERY": "syscall",
+ "syscall.SYS_MQ_GETSETATTR": "syscall",
+ "syscall.SYS_MQ_NOTIFY": "syscall",
+ "syscall.SYS_MQ_OPEN": "syscall",
+ "syscall.SYS_MQ_TIMEDRECEIVE": "syscall",
+ "syscall.SYS_MQ_TIMEDSEND": "syscall",
+ "syscall.SYS_MQ_UNLINK": "syscall",
+ "syscall.SYS_MREMAP": "syscall",
+ "syscall.SYS_MSGCTL": "syscall",
+ "syscall.SYS_MSGGET": "syscall",
+ "syscall.SYS_MSGRCV": "syscall",
+ "syscall.SYS_MSGRCV_NOCANCEL": "syscall",
+ "syscall.SYS_MSGSND": "syscall",
+ "syscall.SYS_MSGSND_NOCANCEL": "syscall",
+ "syscall.SYS_MSGSYS": "syscall",
+ "syscall.SYS_MSYNC": "syscall",
+ "syscall.SYS_MSYNC_NOCANCEL": "syscall",
+ "syscall.SYS_MUNLOCK": "syscall",
+ "syscall.SYS_MUNLOCKALL": "syscall",
+ "syscall.SYS_MUNMAP": "syscall",
+ "syscall.SYS_NAME_TO_HANDLE_AT": "syscall",
+ "syscall.SYS_NANOSLEEP": "syscall",
+ "syscall.SYS_NEWFSTATAT": "syscall",
+ "syscall.SYS_NFSCLNT": "syscall",
+ "syscall.SYS_NFSSERVCTL": "syscall",
+ "syscall.SYS_NFSSVC": "syscall",
+ "syscall.SYS_NFSTAT": "syscall",
+ "syscall.SYS_NICE": "syscall",
+ "syscall.SYS_NLSTAT": "syscall",
+ "syscall.SYS_NMOUNT": "syscall",
+ "syscall.SYS_NSTAT": "syscall",
+ "syscall.SYS_NTP_ADJTIME": "syscall",
+ "syscall.SYS_NTP_GETTIME": "syscall",
+ "syscall.SYS_OABI_SYSCALL_BASE": "syscall",
+ "syscall.SYS_OBREAK": "syscall",
+ "syscall.SYS_OLDFSTAT": "syscall",
+ "syscall.SYS_OLDLSTAT": "syscall",
+ "syscall.SYS_OLDOLDUNAME": "syscall",
+ "syscall.SYS_OLDSTAT": "syscall",
+ "syscall.SYS_OLDUNAME": "syscall",
+ "syscall.SYS_OPEN": "syscall",
+ "syscall.SYS_OPENAT": "syscall",
+ "syscall.SYS_OPENBSD_POLL": "syscall",
+ "syscall.SYS_OPEN_BY_HANDLE_AT": "syscall",
+ "syscall.SYS_OPEN_EXTENDED": "syscall",
+ "syscall.SYS_OPEN_NOCANCEL": "syscall",
+ "syscall.SYS_OVADVISE": "syscall",
+ "syscall.SYS_PACCEPT": "syscall",
+ "syscall.SYS_PATHCONF": "syscall",
+ "syscall.SYS_PAUSE": "syscall",
+ "syscall.SYS_PCICONFIG_IOBASE": "syscall",
+ "syscall.SYS_PCICONFIG_READ": "syscall",
+ "syscall.SYS_PCICONFIG_WRITE": "syscall",
+ "syscall.SYS_PDFORK": "syscall",
+ "syscall.SYS_PDGETPID": "syscall",
+ "syscall.SYS_PDKILL": "syscall",
+ "syscall.SYS_PERF_EVENT_OPEN": "syscall",
+ "syscall.SYS_PERSONALITY": "syscall",
+ "syscall.SYS_PID_HIBERNATE": "syscall",
+ "syscall.SYS_PID_RESUME": "syscall",
+ "syscall.SYS_PID_SHUTDOWN_SOCKETS": "syscall",
+ "syscall.SYS_PID_SUSPEND": "syscall",
+ "syscall.SYS_PIPE": "syscall",
+ "syscall.SYS_PIPE2": "syscall",
+ "syscall.SYS_PIVOT_ROOT": "syscall",
+ "syscall.SYS_PMC_CONTROL": "syscall",
+ "syscall.SYS_PMC_GET_INFO": "syscall",
+ "syscall.SYS_POLL": "syscall",
+ "syscall.SYS_POLLTS": "syscall",
+ "syscall.SYS_POLL_NOCANCEL": "syscall",
+ "syscall.SYS_POSIX_FADVISE": "syscall",
+ "syscall.SYS_POSIX_FALLOCATE": "syscall",
+ "syscall.SYS_POSIX_OPENPT": "syscall",
+ "syscall.SYS_POSIX_SPAWN": "syscall",
+ "syscall.SYS_PPOLL": "syscall",
+ "syscall.SYS_PRCTL": "syscall",
+ "syscall.SYS_PREAD": "syscall",
+ "syscall.SYS_PREAD64": "syscall",
+ "syscall.SYS_PREADV": "syscall",
+ "syscall.SYS_PREAD_NOCANCEL": "syscall",
+ "syscall.SYS_PRLIMIT64": "syscall",
+ "syscall.SYS_PROCCTL": "syscall",
+ "syscall.SYS_PROCESS_POLICY": "syscall",
+ "syscall.SYS_PROCESS_VM_READV": "syscall",
+ "syscall.SYS_PROCESS_VM_WRITEV": "syscall",
+ "syscall.SYS_PROC_INFO": "syscall",
+ "syscall.SYS_PROF": "syscall",
+ "syscall.SYS_PROFIL": "syscall",
+ "syscall.SYS_PSELECT": "syscall",
+ "syscall.SYS_PSELECT6": "syscall",
+ "syscall.SYS_PSET_ASSIGN": "syscall",
+ "syscall.SYS_PSET_CREATE": "syscall",
+ "syscall.SYS_PSET_DESTROY": "syscall",
+ "syscall.SYS_PSYNCH_CVBROAD": "syscall",
+ "syscall.SYS_PSYNCH_CVCLRPREPOST": "syscall",
+ "syscall.SYS_PSYNCH_CVSIGNAL": "syscall",
+ "syscall.SYS_PSYNCH_CVWAIT": "syscall",
+ "syscall.SYS_PSYNCH_MUTEXDROP": "syscall",
+ "syscall.SYS_PSYNCH_MUTEXWAIT": "syscall",
+ "syscall.SYS_PSYNCH_RW_DOWNGRADE": "syscall",
+ "syscall.SYS_PSYNCH_RW_LONGRDLOCK": "syscall",
+ "syscall.SYS_PSYNCH_RW_RDLOCK": "syscall",
+ "syscall.SYS_PSYNCH_RW_UNLOCK": "syscall",
+ "syscall.SYS_PSYNCH_RW_UNLOCK2": "syscall",
+ "syscall.SYS_PSYNCH_RW_UPGRADE": "syscall",
+ "syscall.SYS_PSYNCH_RW_WRLOCK": "syscall",
+ "syscall.SYS_PSYNCH_RW_YIELDWRLOCK": "syscall",
+ "syscall.SYS_PTRACE": "syscall",
+ "syscall.SYS_PUTPMSG": "syscall",
+ "syscall.SYS_PWRITE": "syscall",
+ "syscall.SYS_PWRITE64": "syscall",
+ "syscall.SYS_PWRITEV": "syscall",
+ "syscall.SYS_PWRITE_NOCANCEL": "syscall",
+ "syscall.SYS_QUERY_MODULE": "syscall",
+ "syscall.SYS_QUOTACTL": "syscall",
+ "syscall.SYS_RASCTL": "syscall",
+ "syscall.SYS_RCTL_ADD_RULE": "syscall",
+ "syscall.SYS_RCTL_GET_LIMITS": "syscall",
+ "syscall.SYS_RCTL_GET_RACCT": "syscall",
+ "syscall.SYS_RCTL_GET_RULES": "syscall",
+ "syscall.SYS_RCTL_REMOVE_RULE": "syscall",
+ "syscall.SYS_READ": "syscall",
+ "syscall.SYS_READAHEAD": "syscall",
+ "syscall.SYS_READDIR": "syscall",
+ "syscall.SYS_READLINK": "syscall",
+ "syscall.SYS_READLINKAT": "syscall",
+ "syscall.SYS_READV": "syscall",
+ "syscall.SYS_READV_NOCANCEL": "syscall",
+ "syscall.SYS_READ_NOCANCEL": "syscall",
+ "syscall.SYS_REBOOT": "syscall",
+ "syscall.SYS_RECV": "syscall",
+ "syscall.SYS_RECVFROM": "syscall",
+ "syscall.SYS_RECVFROM_NOCANCEL": "syscall",
+ "syscall.SYS_RECVMMSG": "syscall",
+ "syscall.SYS_RECVMSG": "syscall",
+ "syscall.SYS_RECVMSG_NOCANCEL": "syscall",
+ "syscall.SYS_REMAP_FILE_PAGES": "syscall",
+ "syscall.SYS_REMOVEXATTR": "syscall",
+ "syscall.SYS_RENAME": "syscall",
+ "syscall.SYS_RENAMEAT": "syscall",
+ "syscall.SYS_REQUEST_KEY": "syscall",
+ "syscall.SYS_RESTART_SYSCALL": "syscall",
+ "syscall.SYS_REVOKE": "syscall",
+ "syscall.SYS_RFORK": "syscall",
+ "syscall.SYS_RMDIR": "syscall",
+ "syscall.SYS_RTPRIO": "syscall",
+ "syscall.SYS_RTPRIO_THREAD": "syscall",
+ "syscall.SYS_RT_SIGACTION": "syscall",
+ "syscall.SYS_RT_SIGPENDING": "syscall",
+ "syscall.SYS_RT_SIGPROCMASK": "syscall",
+ "syscall.SYS_RT_SIGQUEUEINFO": "syscall",
+ "syscall.SYS_RT_SIGRETURN": "syscall",
+ "syscall.SYS_RT_SIGSUSPEND": "syscall",
+ "syscall.SYS_RT_SIGTIMEDWAIT": "syscall",
+ "syscall.SYS_RT_TGSIGQUEUEINFO": "syscall",
+ "syscall.SYS_SBRK": "syscall",
+ "syscall.SYS_SCHED_GETAFFINITY": "syscall",
+ "syscall.SYS_SCHED_GETPARAM": "syscall",
+ "syscall.SYS_SCHED_GETSCHEDULER": "syscall",
+ "syscall.SYS_SCHED_GET_PRIORITY_MAX": "syscall",
+ "syscall.SYS_SCHED_GET_PRIORITY_MIN": "syscall",
+ "syscall.SYS_SCHED_RR_GET_INTERVAL": "syscall",
+ "syscall.SYS_SCHED_SETAFFINITY": "syscall",
+ "syscall.SYS_SCHED_SETPARAM": "syscall",
+ "syscall.SYS_SCHED_SETSCHEDULER": "syscall",
+ "syscall.SYS_SCHED_YIELD": "syscall",
+ "syscall.SYS_SCTP_GENERIC_RECVMSG": "syscall",
+ "syscall.SYS_SCTP_GENERIC_SENDMSG": "syscall",
+ "syscall.SYS_SCTP_GENERIC_SENDMSG_IOV": "syscall",
+ "syscall.SYS_SCTP_PEELOFF": "syscall",
+ "syscall.SYS_SEARCHFS": "syscall",
+ "syscall.SYS_SECURITY": "syscall",
+ "syscall.SYS_SELECT": "syscall",
+ "syscall.SYS_SELECT_NOCANCEL": "syscall",
+ "syscall.SYS_SEMCONFIG": "syscall",
+ "syscall.SYS_SEMCTL": "syscall",
+ "syscall.SYS_SEMGET": "syscall",
+ "syscall.SYS_SEMOP": "syscall",
+ "syscall.SYS_SEMSYS": "syscall",
+ "syscall.SYS_SEMTIMEDOP": "syscall",
+ "syscall.SYS_SEM_CLOSE": "syscall",
+ "syscall.SYS_SEM_DESTROY": "syscall",
+ "syscall.SYS_SEM_GETVALUE": "syscall",
+ "syscall.SYS_SEM_INIT": "syscall",
+ "syscall.SYS_SEM_OPEN": "syscall",
+ "syscall.SYS_SEM_POST": "syscall",
+ "syscall.SYS_SEM_TRYWAIT": "syscall",
+ "syscall.SYS_SEM_UNLINK": "syscall",
+ "syscall.SYS_SEM_WAIT": "syscall",
+ "syscall.SYS_SEM_WAIT_NOCANCEL": "syscall",
+ "syscall.SYS_SEND": "syscall",
+ "syscall.SYS_SENDFILE": "syscall",
+ "syscall.SYS_SENDFILE64": "syscall",
+ "syscall.SYS_SENDMMSG": "syscall",
+ "syscall.SYS_SENDMSG": "syscall",
+ "syscall.SYS_SENDMSG_NOCANCEL": "syscall",
+ "syscall.SYS_SENDTO": "syscall",
+ "syscall.SYS_SENDTO_NOCANCEL": "syscall",
+ "syscall.SYS_SETATTRLIST": "syscall",
+ "syscall.SYS_SETAUDIT": "syscall",
+ "syscall.SYS_SETAUDIT_ADDR": "syscall",
+ "syscall.SYS_SETAUID": "syscall",
+ "syscall.SYS_SETCONTEXT": "syscall",
+ "syscall.SYS_SETDOMAINNAME": "syscall",
+ "syscall.SYS_SETEGID": "syscall",
+ "syscall.SYS_SETEUID": "syscall",
+ "syscall.SYS_SETFIB": "syscall",
+ "syscall.SYS_SETFSGID": "syscall",
+ "syscall.SYS_SETFSGID32": "syscall",
+ "syscall.SYS_SETFSUID": "syscall",
+ "syscall.SYS_SETFSUID32": "syscall",
+ "syscall.SYS_SETGID": "syscall",
+ "syscall.SYS_SETGID32": "syscall",
+ "syscall.SYS_SETGROUPS": "syscall",
+ "syscall.SYS_SETGROUPS32": "syscall",
+ "syscall.SYS_SETHOSTNAME": "syscall",
+ "syscall.SYS_SETITIMER": "syscall",
+ "syscall.SYS_SETLCID": "syscall",
+ "syscall.SYS_SETLOGIN": "syscall",
+ "syscall.SYS_SETLOGINCLASS": "syscall",
+ "syscall.SYS_SETNS": "syscall",
+ "syscall.SYS_SETPGID": "syscall",
+ "syscall.SYS_SETPRIORITY": "syscall",
+ "syscall.SYS_SETPRIVEXEC": "syscall",
+ "syscall.SYS_SETREGID": "syscall",
+ "syscall.SYS_SETREGID32": "syscall",
+ "syscall.SYS_SETRESGID": "syscall",
+ "syscall.SYS_SETRESGID32": "syscall",
+ "syscall.SYS_SETRESUID": "syscall",
+ "syscall.SYS_SETRESUID32": "syscall",
+ "syscall.SYS_SETREUID": "syscall",
+ "syscall.SYS_SETREUID32": "syscall",
+ "syscall.SYS_SETRLIMIT": "syscall",
+ "syscall.SYS_SETRTABLE": "syscall",
+ "syscall.SYS_SETSGROUPS": "syscall",
+ "syscall.SYS_SETSID": "syscall",
+ "syscall.SYS_SETSOCKOPT": "syscall",
+ "syscall.SYS_SETTID": "syscall",
+ "syscall.SYS_SETTID_WITH_PID": "syscall",
+ "syscall.SYS_SETTIMEOFDAY": "syscall",
+ "syscall.SYS_SETUID": "syscall",
+ "syscall.SYS_SETUID32": "syscall",
+ "syscall.SYS_SETWGROUPS": "syscall",
+ "syscall.SYS_SETXATTR": "syscall",
+ "syscall.SYS_SET_MEMPOLICY": "syscall",
+ "syscall.SYS_SET_ROBUST_LIST": "syscall",
+ "syscall.SYS_SET_THREAD_AREA": "syscall",
+ "syscall.SYS_SET_TID_ADDRESS": "syscall",
+ "syscall.SYS_SGETMASK": "syscall",
+ "syscall.SYS_SHARED_REGION_CHECK_NP": "syscall",
+ "syscall.SYS_SHARED_REGION_MAP_AND_SLIDE_NP": "syscall",
+ "syscall.SYS_SHMAT": "syscall",
+ "syscall.SYS_SHMCTL": "syscall",
+ "syscall.SYS_SHMDT": "syscall",
+ "syscall.SYS_SHMGET": "syscall",
+ "syscall.SYS_SHMSYS": "syscall",
+ "syscall.SYS_SHM_OPEN": "syscall",
+ "syscall.SYS_SHM_UNLINK": "syscall",
+ "syscall.SYS_SHUTDOWN": "syscall",
+ "syscall.SYS_SIGACTION": "syscall",
+ "syscall.SYS_SIGALTSTACK": "syscall",
+ "syscall.SYS_SIGNAL": "syscall",
+ "syscall.SYS_SIGNALFD": "syscall",
+ "syscall.SYS_SIGNALFD4": "syscall",
+ "syscall.SYS_SIGPENDING": "syscall",
+ "syscall.SYS_SIGPROCMASK": "syscall",
+ "syscall.SYS_SIGQUEUE": "syscall",
+ "syscall.SYS_SIGQUEUEINFO": "syscall",
+ "syscall.SYS_SIGRETURN": "syscall",
+ "syscall.SYS_SIGSUSPEND": "syscall",
+ "syscall.SYS_SIGSUSPEND_NOCANCEL": "syscall",
+ "syscall.SYS_SIGTIMEDWAIT": "syscall",
+ "syscall.SYS_SIGWAIT": "syscall",
+ "syscall.SYS_SIGWAITINFO": "syscall",
+ "syscall.SYS_SOCKET": "syscall",
+ "syscall.SYS_SOCKETCALL": "syscall",
+ "syscall.SYS_SOCKETPAIR": "syscall",
+ "syscall.SYS_SPLICE": "syscall",
+ "syscall.SYS_SSETMASK": "syscall",
+ "syscall.SYS_SSTK": "syscall",
+ "syscall.SYS_STACK_SNAPSHOT": "syscall",
+ "syscall.SYS_STAT": "syscall",
+ "syscall.SYS_STAT64": "syscall",
+ "syscall.SYS_STAT64_EXTENDED": "syscall",
+ "syscall.SYS_STATFS": "syscall",
+ "syscall.SYS_STATFS64": "syscall",
+ "syscall.SYS_STATV": "syscall",
+ "syscall.SYS_STATVFS1": "syscall",
+ "syscall.SYS_STAT_EXTENDED": "syscall",
+ "syscall.SYS_STIME": "syscall",
+ "syscall.SYS_STTY": "syscall",
+ "syscall.SYS_SWAPCONTEXT": "syscall",
+ "syscall.SYS_SWAPCTL": "syscall",
+ "syscall.SYS_SWAPOFF": "syscall",
+ "syscall.SYS_SWAPON": "syscall",
+ "syscall.SYS_SYMLINK": "syscall",
+ "syscall.SYS_SYMLINKAT": "syscall",
+ "syscall.SYS_SYNC": "syscall",
+ "syscall.SYS_SYNCFS": "syscall",
+ "syscall.SYS_SYNC_FILE_RANGE": "syscall",
+ "syscall.SYS_SYSARCH": "syscall",
+ "syscall.SYS_SYSCALL": "syscall",
+ "syscall.SYS_SYSCALL_BASE": "syscall",
+ "syscall.SYS_SYSFS": "syscall",
+ "syscall.SYS_SYSINFO": "syscall",
+ "syscall.SYS_SYSLOG": "syscall",
+ "syscall.SYS_TEE": "syscall",
+ "syscall.SYS_TGKILL": "syscall",
+ "syscall.SYS_THREAD_SELFID": "syscall",
+ "syscall.SYS_THR_CREATE": "syscall",
+ "syscall.SYS_THR_EXIT": "syscall",
+ "syscall.SYS_THR_KILL": "syscall",
+ "syscall.SYS_THR_KILL2": "syscall",
+ "syscall.SYS_THR_NEW": "syscall",
+ "syscall.SYS_THR_SELF": "syscall",
+ "syscall.SYS_THR_SET_NAME": "syscall",
+ "syscall.SYS_THR_SUSPEND": "syscall",
+ "syscall.SYS_THR_WAKE": "syscall",
+ "syscall.SYS_TIME": "syscall",
+ "syscall.SYS_TIMERFD_CREATE": "syscall",
+ "syscall.SYS_TIMERFD_GETTIME": "syscall",
+ "syscall.SYS_TIMERFD_SETTIME": "syscall",
+ "syscall.SYS_TIMER_CREATE": "syscall",
+ "syscall.SYS_TIMER_DELETE": "syscall",
+ "syscall.SYS_TIMER_GETOVERRUN": "syscall",
+ "syscall.SYS_TIMER_GETTIME": "syscall",
+ "syscall.SYS_TIMER_SETTIME": "syscall",
+ "syscall.SYS_TIMES": "syscall",
+ "syscall.SYS_TKILL": "syscall",
+ "syscall.SYS_TRUNCATE": "syscall",
+ "syscall.SYS_TRUNCATE64": "syscall",
+ "syscall.SYS_TUXCALL": "syscall",
+ "syscall.SYS_UGETRLIMIT": "syscall",
+ "syscall.SYS_ULIMIT": "syscall",
+ "syscall.SYS_UMASK": "syscall",
+ "syscall.SYS_UMASK_EXTENDED": "syscall",
+ "syscall.SYS_UMOUNT": "syscall",
+ "syscall.SYS_UMOUNT2": "syscall",
+ "syscall.SYS_UNAME": "syscall",
+ "syscall.SYS_UNDELETE": "syscall",
+ "syscall.SYS_UNLINK": "syscall",
+ "syscall.SYS_UNLINKAT": "syscall",
+ "syscall.SYS_UNMOUNT": "syscall",
+ "syscall.SYS_UNSHARE": "syscall",
+ "syscall.SYS_USELIB": "syscall",
+ "syscall.SYS_USTAT": "syscall",
+ "syscall.SYS_UTIME": "syscall",
+ "syscall.SYS_UTIMENSAT": "syscall",
+ "syscall.SYS_UTIMES": "syscall",
+ "syscall.SYS_UTRACE": "syscall",
+ "syscall.SYS_UUIDGEN": "syscall",
+ "syscall.SYS_VADVISE": "syscall",
+ "syscall.SYS_VFORK": "syscall",
+ "syscall.SYS_VHANGUP": "syscall",
+ "syscall.SYS_VM86": "syscall",
+ "syscall.SYS_VM86OLD": "syscall",
+ "syscall.SYS_VMSPLICE": "syscall",
+ "syscall.SYS_VM_PRESSURE_MONITOR": "syscall",
+ "syscall.SYS_VSERVER": "syscall",
+ "syscall.SYS_WAIT4": "syscall",
+ "syscall.SYS_WAIT4_NOCANCEL": "syscall",
+ "syscall.SYS_WAIT6": "syscall",
+ "syscall.SYS_WAITEVENT": "syscall",
+ "syscall.SYS_WAITID": "syscall",
+ "syscall.SYS_WAITID_NOCANCEL": "syscall",
+ "syscall.SYS_WAITPID": "syscall",
+ "syscall.SYS_WATCHEVENT": "syscall",
+ "syscall.SYS_WORKQ_KERNRETURN": "syscall",
+ "syscall.SYS_WORKQ_OPEN": "syscall",
+ "syscall.SYS_WRITE": "syscall",
+ "syscall.SYS_WRITEV": "syscall",
+ "syscall.SYS_WRITEV_NOCANCEL": "syscall",
+ "syscall.SYS_WRITE_NOCANCEL": "syscall",
+ "syscall.SYS_YIELD": "syscall",
+ "syscall.SYS__LLSEEK": "syscall",
+ "syscall.SYS__LWP_CONTINUE": "syscall",
+ "syscall.SYS__LWP_CREATE": "syscall",
+ "syscall.SYS__LWP_CTL": "syscall",
+ "syscall.SYS__LWP_DETACH": "syscall",
+ "syscall.SYS__LWP_EXIT": "syscall",
+ "syscall.SYS__LWP_GETNAME": "syscall",
+ "syscall.SYS__LWP_GETPRIVATE": "syscall",
+ "syscall.SYS__LWP_KILL": "syscall",
+ "syscall.SYS__LWP_PARK": "syscall",
+ "syscall.SYS__LWP_SELF": "syscall",
+ "syscall.SYS__LWP_SETNAME": "syscall",
+ "syscall.SYS__LWP_SETPRIVATE": "syscall",
+ "syscall.SYS__LWP_SUSPEND": "syscall",
+ "syscall.SYS__LWP_UNPARK": "syscall",
+ "syscall.SYS__LWP_UNPARK_ALL": "syscall",
+ "syscall.SYS__LWP_WAIT": "syscall",
+ "syscall.SYS__LWP_WAKEUP": "syscall",
+ "syscall.SYS__NEWSELECT": "syscall",
+ "syscall.SYS__PSET_BIND": "syscall",
+ "syscall.SYS__SCHED_GETAFFINITY": "syscall",
+ "syscall.SYS__SCHED_GETPARAM": "syscall",
+ "syscall.SYS__SCHED_SETAFFINITY": "syscall",
+ "syscall.SYS__SCHED_SETPARAM": "syscall",
+ "syscall.SYS__SYSCTL": "syscall",
+ "syscall.SYS__UMTX_LOCK": "syscall",
+ "syscall.SYS__UMTX_OP": "syscall",
+ "syscall.SYS__UMTX_UNLOCK": "syscall",
+ "syscall.SYS___ACL_ACLCHECK_FD": "syscall",
+ "syscall.SYS___ACL_ACLCHECK_FILE": "syscall",
+ "syscall.SYS___ACL_ACLCHECK_LINK": "syscall",
+ "syscall.SYS___ACL_DELETE_FD": "syscall",
+ "syscall.SYS___ACL_DELETE_FILE": "syscall",
+ "syscall.SYS___ACL_DELETE_LINK": "syscall",
+ "syscall.SYS___ACL_GET_FD": "syscall",
+ "syscall.SYS___ACL_GET_FILE": "syscall",
+ "syscall.SYS___ACL_GET_LINK": "syscall",
+ "syscall.SYS___ACL_SET_FD": "syscall",
+ "syscall.SYS___ACL_SET_FILE": "syscall",
+ "syscall.SYS___ACL_SET_LINK": "syscall",
+ "syscall.SYS___CLONE": "syscall",
+ "syscall.SYS___DISABLE_THREADSIGNAL": "syscall",
+ "syscall.SYS___GETCWD": "syscall",
+ "syscall.SYS___GETLOGIN": "syscall",
+ "syscall.SYS___GET_TCB": "syscall",
+ "syscall.SYS___MAC_EXECVE": "syscall",
+ "syscall.SYS___MAC_GETFSSTAT": "syscall",
+ "syscall.SYS___MAC_GET_FD": "syscall",
+ "syscall.SYS___MAC_GET_FILE": "syscall",
+ "syscall.SYS___MAC_GET_LCID": "syscall",
+ "syscall.SYS___MAC_GET_LCTX": "syscall",
+ "syscall.SYS___MAC_GET_LINK": "syscall",
+ "syscall.SYS___MAC_GET_MOUNT": "syscall",
+ "syscall.SYS___MAC_GET_PID": "syscall",
+ "syscall.SYS___MAC_GET_PROC": "syscall",
+ "syscall.SYS___MAC_MOUNT": "syscall",
+ "syscall.SYS___MAC_SET_FD": "syscall",
+ "syscall.SYS___MAC_SET_FILE": "syscall",
+ "syscall.SYS___MAC_SET_LCTX": "syscall",
+ "syscall.SYS___MAC_SET_LINK": "syscall",
+ "syscall.SYS___MAC_SET_PROC": "syscall",
+ "syscall.SYS___MAC_SYSCALL": "syscall",
+ "syscall.SYS___OLD_SEMWAIT_SIGNAL": "syscall",
+ "syscall.SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL": "syscall",
+ "syscall.SYS___POSIX_CHOWN": "syscall",
+ "syscall.SYS___POSIX_FCHOWN": "syscall",
+ "syscall.SYS___POSIX_LCHOWN": "syscall",
+ "syscall.SYS___POSIX_RENAME": "syscall",
+ "syscall.SYS___PTHREAD_CANCELED": "syscall",
+ "syscall.SYS___PTHREAD_CHDIR": "syscall",
+ "syscall.SYS___PTHREAD_FCHDIR": "syscall",
+ "syscall.SYS___PTHREAD_KILL": "syscall",
+ "syscall.SYS___PTHREAD_MARKCANCEL": "syscall",
+ "syscall.SYS___PTHREAD_SIGMASK": "syscall",
+ "syscall.SYS___QUOTACTL": "syscall",
+ "syscall.SYS___SEMCTL": "syscall",
+ "syscall.SYS___SEMWAIT_SIGNAL": "syscall",
+ "syscall.SYS___SEMWAIT_SIGNAL_NOCANCEL": "syscall",
+ "syscall.SYS___SETLOGIN": "syscall",
+ "syscall.SYS___SETUGID": "syscall",
+ "syscall.SYS___SET_TCB": "syscall",
+ "syscall.SYS___SIGACTION_SIGTRAMP": "syscall",
+ "syscall.SYS___SIGTIMEDWAIT": "syscall",
+ "syscall.SYS___SIGWAIT": "syscall",
+ "syscall.SYS___SIGWAIT_NOCANCEL": "syscall",
+ "syscall.SYS___SYSCTL": "syscall",
+ "syscall.SYS___TFORK": "syscall",
+ "syscall.SYS___THREXIT": "syscall",
+ "syscall.SYS___THRSIGDIVERT": "syscall",
+ "syscall.SYS___THRSLEEP": "syscall",
+ "syscall.SYS___THRWAKEUP": "syscall",
+ "syscall.S_ARCH1": "syscall",
+ "syscall.S_ARCH2": "syscall",
+ "syscall.S_BLKSIZE": "syscall",
+ "syscall.S_IEXEC": "syscall",
+ "syscall.S_IFBLK": "syscall",
+ "syscall.S_IFCHR": "syscall",
+ "syscall.S_IFDIR": "syscall",
+ "syscall.S_IFIFO": "syscall",
+ "syscall.S_IFLNK": "syscall",
+ "syscall.S_IFMT": "syscall",
+ "syscall.S_IFREG": "syscall",
+ "syscall.S_IFSOCK": "syscall",
+ "syscall.S_IFWHT": "syscall",
+ "syscall.S_IREAD": "syscall",
+ "syscall.S_IRGRP": "syscall",
+ "syscall.S_IROTH": "syscall",
+ "syscall.S_IRUSR": "syscall",
+ "syscall.S_IRWXG": "syscall",
+ "syscall.S_IRWXO": "syscall",
+ "syscall.S_IRWXU": "syscall",
+ "syscall.S_ISGID": "syscall",
+ "syscall.S_ISTXT": "syscall",
+ "syscall.S_ISUID": "syscall",
+ "syscall.S_ISVTX": "syscall",
+ "syscall.S_IWGRP": "syscall",
+ "syscall.S_IWOTH": "syscall",
+ "syscall.S_IWRITE": "syscall",
+ "syscall.S_IWUSR": "syscall",
+ "syscall.S_IXGRP": "syscall",
+ "syscall.S_IXOTH": "syscall",
+ "syscall.S_IXUSR": "syscall",
+ "syscall.S_LOGIN_SET": "syscall",
+ "syscall.SecurityAttributes": "syscall",
+ "syscall.Seek": "syscall",
+ "syscall.Select": "syscall",
+ "syscall.Sendfile": "syscall",
+ "syscall.Sendmsg": "syscall",
+ "syscall.SendmsgN": "syscall",
+ "syscall.Sendto": "syscall",
+ "syscall.Servent": "syscall",
+ "syscall.SetBpf": "syscall",
+ "syscall.SetBpfBuflen": "syscall",
+ "syscall.SetBpfDatalink": "syscall",
+ "syscall.SetBpfHeadercmpl": "syscall",
+ "syscall.SetBpfImmediate": "syscall",
+ "syscall.SetBpfInterface": "syscall",
+ "syscall.SetBpfPromisc": "syscall",
+ "syscall.SetBpfTimeout": "syscall",
+ "syscall.SetCurrentDirectory": "syscall",
+ "syscall.SetEndOfFile": "syscall",
+ "syscall.SetEnvironmentVariable": "syscall",
+ "syscall.SetFileAttributes": "syscall",
+ "syscall.SetFileCompletionNotificationModes": "syscall",
+ "syscall.SetFilePointer": "syscall",
+ "syscall.SetFileTime": "syscall",
+ "syscall.SetHandleInformation": "syscall",
+ "syscall.SetKevent": "syscall",
+ "syscall.SetLsfPromisc": "syscall",
+ "syscall.SetNonblock": "syscall",
+ "syscall.Setdomainname": "syscall",
+ "syscall.Setegid": "syscall",
+ "syscall.Setenv": "syscall",
+ "syscall.Seteuid": "syscall",
+ "syscall.Setfsgid": "syscall",
+ "syscall.Setfsuid": "syscall",
+ "syscall.Setgid": "syscall",
+ "syscall.Setgroups": "syscall",
+ "syscall.Sethostname": "syscall",
+ "syscall.Setlogin": "syscall",
+ "syscall.Setpgid": "syscall",
+ "syscall.Setpriority": "syscall",
+ "syscall.Setprivexec": "syscall",
+ "syscall.Setregid": "syscall",
+ "syscall.Setresgid": "syscall",
+ "syscall.Setresuid": "syscall",
+ "syscall.Setreuid": "syscall",
+ "syscall.Setrlimit": "syscall",
+ "syscall.Setsid": "syscall",
+ "syscall.Setsockopt": "syscall",
+ "syscall.SetsockoptByte": "syscall",
+ "syscall.SetsockoptICMPv6Filter": "syscall",
+ "syscall.SetsockoptIPMreq": "syscall",
+ "syscall.SetsockoptIPMreqn": "syscall",
+ "syscall.SetsockoptIPv6Mreq": "syscall",
+ "syscall.SetsockoptInet4Addr": "syscall",
+ "syscall.SetsockoptInt": "syscall",
+ "syscall.SetsockoptLinger": "syscall",
+ "syscall.SetsockoptString": "syscall",
+ "syscall.SetsockoptTimeval": "syscall",
+ "syscall.Settimeofday": "syscall",
+ "syscall.Setuid": "syscall",
+ "syscall.Setxattr": "syscall",
+ "syscall.Shutdown": "syscall",
+ "syscall.SidTypeAlias": "syscall",
+ "syscall.SidTypeComputer": "syscall",
+ "syscall.SidTypeDeletedAccount": "syscall",
+ "syscall.SidTypeDomain": "syscall",
+ "syscall.SidTypeGroup": "syscall",
+ "syscall.SidTypeInvalid": "syscall",
+ "syscall.SidTypeLabel": "syscall",
+ "syscall.SidTypeUnknown": "syscall",
+ "syscall.SidTypeUser": "syscall",
+ "syscall.SidTypeWellKnownGroup": "syscall",
+ "syscall.Signal": "syscall",
+ "syscall.SizeofBpfHdr": "syscall",
+ "syscall.SizeofBpfInsn": "syscall",
+ "syscall.SizeofBpfProgram": "syscall",
+ "syscall.SizeofBpfStat": "syscall",
+ "syscall.SizeofBpfVersion": "syscall",
+ "syscall.SizeofBpfZbuf": "syscall",
+ "syscall.SizeofBpfZbufHeader": "syscall",
+ "syscall.SizeofCmsghdr": "syscall",
+ "syscall.SizeofICMPv6Filter": "syscall",
+ "syscall.SizeofIPMreq": "syscall",
+ "syscall.SizeofIPMreqn": "syscall",
+ "syscall.SizeofIPv6MTUInfo": "syscall",
+ "syscall.SizeofIPv6Mreq": "syscall",
+ "syscall.SizeofIfAddrmsg": "syscall",
+ "syscall.SizeofIfAnnounceMsghdr": "syscall",
+ "syscall.SizeofIfData": "syscall",
+ "syscall.SizeofIfInfomsg": "syscall",
+ "syscall.SizeofIfMsghdr": "syscall",
+ "syscall.SizeofIfaMsghdr": "syscall",
+ "syscall.SizeofIfmaMsghdr": "syscall",
+ "syscall.SizeofIfmaMsghdr2": "syscall",
+ "syscall.SizeofInet4Pktinfo": "syscall",
+ "syscall.SizeofInet6Pktinfo": "syscall",
+ "syscall.SizeofInotifyEvent": "syscall",
+ "syscall.SizeofLinger": "syscall",
+ "syscall.SizeofMsghdr": "syscall",
+ "syscall.SizeofNlAttr": "syscall",
+ "syscall.SizeofNlMsgerr": "syscall",
+ "syscall.SizeofNlMsghdr": "syscall",
+ "syscall.SizeofRtAttr": "syscall",
+ "syscall.SizeofRtGenmsg": "syscall",
+ "syscall.SizeofRtMetrics": "syscall",
+ "syscall.SizeofRtMsg": "syscall",
+ "syscall.SizeofRtMsghdr": "syscall",
+ "syscall.SizeofRtNexthop": "syscall",
+ "syscall.SizeofSockFilter": "syscall",
+ "syscall.SizeofSockFprog": "syscall",
+ "syscall.SizeofSockaddrAny": "syscall",
+ "syscall.SizeofSockaddrDatalink": "syscall",
+ "syscall.SizeofSockaddrInet4": "syscall",
+ "syscall.SizeofSockaddrInet6": "syscall",
+ "syscall.SizeofSockaddrLinklayer": "syscall",
+ "syscall.SizeofSockaddrNetlink": "syscall",
+ "syscall.SizeofSockaddrUnix": "syscall",
+ "syscall.SizeofTCPInfo": "syscall",
+ "syscall.SizeofUcred": "syscall",
+ "syscall.SlicePtrFromStrings": "syscall",
+ "syscall.SockFilter": "syscall",
+ "syscall.SockFprog": "syscall",
+ "syscall.SockaddrDatalink": "syscall",
+ "syscall.SockaddrGen": "syscall",
+ "syscall.SockaddrInet4": "syscall",
+ "syscall.SockaddrInet6": "syscall",
+ "syscall.SockaddrLinklayer": "syscall",
+ "syscall.SockaddrNetlink": "syscall",
+ "syscall.SockaddrUnix": "syscall",
+ "syscall.Socket": "syscall",
+ "syscall.SocketControlMessage": "syscall",
+ "syscall.SocketDisableIPv6": "syscall",
+ "syscall.Socketpair": "syscall",
+ "syscall.Splice": "syscall",
+ "syscall.StartProcess": "syscall",
+ "syscall.StartupInfo": "syscall",
+ "syscall.Stat": "syscall",
+ "syscall.Stat_t": "syscall",
+ "syscall.Statfs": "syscall",
+ "syscall.Statfs_t": "syscall",
+ "syscall.Stderr": "syscall",
+ "syscall.Stdin": "syscall",
+ "syscall.Stdout": "syscall",
+ "syscall.StringBytePtr": "syscall",
+ "syscall.StringByteSlice": "syscall",
+ "syscall.StringSlicePtr": "syscall",
+ "syscall.StringToSid": "syscall",
+ "syscall.StringToUTF16": "syscall",
+ "syscall.StringToUTF16Ptr": "syscall",
+ "syscall.Symlink": "syscall",
+ "syscall.Sync": "syscall",
+ "syscall.SyncFileRange": "syscall",
+ "syscall.SysProcAttr": "syscall",
+ "syscall.SysProcIDMap": "syscall",
+ "syscall.Syscall": "syscall",
+ "syscall.Syscall12": "syscall",
+ "syscall.Syscall15": "syscall",
+ "syscall.Syscall6": "syscall",
+ "syscall.Syscall9": "syscall",
+ "syscall.Sysctl": "syscall",
+ "syscall.SysctlUint32": "syscall",
+ "syscall.Sysctlnode": "syscall",
+ "syscall.Sysinfo": "syscall",
+ "syscall.Sysinfo_t": "syscall",
+ "syscall.Systemtime": "syscall",
+ "syscall.TCGETS": "syscall",
+ "syscall.TCIFLUSH": "syscall",
+ "syscall.TCIOFLUSH": "syscall",
+ "syscall.TCOFLUSH": "syscall",
+ "syscall.TCPInfo": "syscall",
+ "syscall.TCPKeepalive": "syscall",
+ "syscall.TCP_CA_NAME_MAX": "syscall",
+ "syscall.TCP_CONGCTL": "syscall",
+ "syscall.TCP_CONGESTION": "syscall",
+ "syscall.TCP_CONNECTIONTIMEOUT": "syscall",
+ "syscall.TCP_CORK": "syscall",
+ "syscall.TCP_DEFER_ACCEPT": "syscall",
+ "syscall.TCP_INFO": "syscall",
+ "syscall.TCP_KEEPALIVE": "syscall",
+ "syscall.TCP_KEEPCNT": "syscall",
+ "syscall.TCP_KEEPIDLE": "syscall",
+ "syscall.TCP_KEEPINIT": "syscall",
+ "syscall.TCP_KEEPINTVL": "syscall",
+ "syscall.TCP_LINGER2": "syscall",
+ "syscall.TCP_MAXBURST": "syscall",
+ "syscall.TCP_MAXHLEN": "syscall",
+ "syscall.TCP_MAXOLEN": "syscall",
+ "syscall.TCP_MAXSEG": "syscall",
+ "syscall.TCP_MAXWIN": "syscall",
+ "syscall.TCP_MAX_SACK": "syscall",
+ "syscall.TCP_MAX_WINSHIFT": "syscall",
+ "syscall.TCP_MD5SIG": "syscall",
+ "syscall.TCP_MD5SIG_MAXKEYLEN": "syscall",
+ "syscall.TCP_MINMSS": "syscall",
+ "syscall.TCP_MINMSSOVERLOAD": "syscall",
+ "syscall.TCP_MSS": "syscall",
+ "syscall.TCP_NODELAY": "syscall",
+ "syscall.TCP_NOOPT": "syscall",
+ "syscall.TCP_NOPUSH": "syscall",
+ "syscall.TCP_NSTATES": "syscall",
+ "syscall.TCP_QUICKACK": "syscall",
+ "syscall.TCP_RXT_CONNDROPTIME": "syscall",
+ "syscall.TCP_RXT_FINDROP": "syscall",
+ "syscall.TCP_SACK_ENABLE": "syscall",
+ "syscall.TCP_SYNCNT": "syscall",
+ "syscall.TCP_VENDOR": "syscall",
+ "syscall.TCP_WINDOW_CLAMP": "syscall",
+ "syscall.TCSAFLUSH": "syscall",
+ "syscall.TCSETS": "syscall",
+ "syscall.TF_DISCONNECT": "syscall",
+ "syscall.TF_REUSE_SOCKET": "syscall",
+ "syscall.TF_USE_DEFAULT_WORKER": "syscall",
+ "syscall.TF_USE_KERNEL_APC": "syscall",
+ "syscall.TF_USE_SYSTEM_THREAD": "syscall",
+ "syscall.TF_WRITE_BEHIND": "syscall",
+ "syscall.TH32CS_INHERIT": "syscall",
+ "syscall.TH32CS_SNAPALL": "syscall",
+ "syscall.TH32CS_SNAPHEAPLIST": "syscall",
+ "syscall.TH32CS_SNAPMODULE": "syscall",
+ "syscall.TH32CS_SNAPMODULE32": "syscall",
+ "syscall.TH32CS_SNAPPROCESS": "syscall",
+ "syscall.TH32CS_SNAPTHREAD": "syscall",
+ "syscall.TIME_ZONE_ID_DAYLIGHT": "syscall",
+ "syscall.TIME_ZONE_ID_STANDARD": "syscall",
+ "syscall.TIME_ZONE_ID_UNKNOWN": "syscall",
+ "syscall.TIOCCBRK": "syscall",
+ "syscall.TIOCCDTR": "syscall",
+ "syscall.TIOCCONS": "syscall",
+ "syscall.TIOCDCDTIMESTAMP": "syscall",
+ "syscall.TIOCDRAIN": "syscall",
+ "syscall.TIOCDSIMICROCODE": "syscall",
+ "syscall.TIOCEXCL": "syscall",
+ "syscall.TIOCEXT": "syscall",
+ "syscall.TIOCFLAG_CDTRCTS": "syscall",
+ "syscall.TIOCFLAG_CLOCAL": "syscall",
+ "syscall.TIOCFLAG_CRTSCTS": "syscall",
+ "syscall.TIOCFLAG_MDMBUF": "syscall",
+ "syscall.TIOCFLAG_PPS": "syscall",
+ "syscall.TIOCFLAG_SOFTCAR": "syscall",
+ "syscall.TIOCFLUSH": "syscall",
+ "syscall.TIOCGDEV": "syscall",
+ "syscall.TIOCGDRAINWAIT": "syscall",
+ "syscall.TIOCGETA": "syscall",
+ "syscall.TIOCGETD": "syscall",
+ "syscall.TIOCGFLAGS": "syscall",
+ "syscall.TIOCGICOUNT": "syscall",
+ "syscall.TIOCGLCKTRMIOS": "syscall",
+ "syscall.TIOCGLINED": "syscall",
+ "syscall.TIOCGPGRP": "syscall",
+ "syscall.TIOCGPTN": "syscall",
+ "syscall.TIOCGQSIZE": "syscall",
+ "syscall.TIOCGRANTPT": "syscall",
+ "syscall.TIOCGRS485": "syscall",
+ "syscall.TIOCGSERIAL": "syscall",
+ "syscall.TIOCGSID": "syscall",
+ "syscall.TIOCGSIZE": "syscall",
+ "syscall.TIOCGSOFTCAR": "syscall",
+ "syscall.TIOCGTSTAMP": "syscall",
+ "syscall.TIOCGWINSZ": "syscall",
+ "syscall.TIOCINQ": "syscall",
+ "syscall.TIOCIXOFF": "syscall",
+ "syscall.TIOCIXON": "syscall",
+ "syscall.TIOCLINUX": "syscall",
+ "syscall.TIOCMBIC": "syscall",
+ "syscall.TIOCMBIS": "syscall",
+ "syscall.TIOCMGDTRWAIT": "syscall",
+ "syscall.TIOCMGET": "syscall",
+ "syscall.TIOCMIWAIT": "syscall",
+ "syscall.TIOCMODG": "syscall",
+ "syscall.TIOCMODS": "syscall",
+ "syscall.TIOCMSDTRWAIT": "syscall",
+ "syscall.TIOCMSET": "syscall",
+ "syscall.TIOCM_CAR": "syscall",
+ "syscall.TIOCM_CD": "syscall",
+ "syscall.TIOCM_CTS": "syscall",
+ "syscall.TIOCM_DCD": "syscall",
+ "syscall.TIOCM_DSR": "syscall",
+ "syscall.TIOCM_DTR": "syscall",
+ "syscall.TIOCM_LE": "syscall",
+ "syscall.TIOCM_RI": "syscall",
+ "syscall.TIOCM_RNG": "syscall",
+ "syscall.TIOCM_RTS": "syscall",
+ "syscall.TIOCM_SR": "syscall",
+ "syscall.TIOCM_ST": "syscall",
+ "syscall.TIOCNOTTY": "syscall",
+ "syscall.TIOCNXCL": "syscall",
+ "syscall.TIOCOUTQ": "syscall",
+ "syscall.TIOCPKT": "syscall",
+ "syscall.TIOCPKT_DATA": "syscall",
+ "syscall.TIOCPKT_DOSTOP": "syscall",
+ "syscall.TIOCPKT_FLUSHREAD": "syscall",
+ "syscall.TIOCPKT_FLUSHWRITE": "syscall",
+ "syscall.TIOCPKT_IOCTL": "syscall",
+ "syscall.TIOCPKT_NOSTOP": "syscall",
+ "syscall.TIOCPKT_START": "syscall",
+ "syscall.TIOCPKT_STOP": "syscall",
+ "syscall.TIOCPTMASTER": "syscall",
+ "syscall.TIOCPTMGET": "syscall",
+ "syscall.TIOCPTSNAME": "syscall",
+ "syscall.TIOCPTYGNAME": "syscall",
+ "syscall.TIOCPTYGRANT": "syscall",
+ "syscall.TIOCPTYUNLK": "syscall",
+ "syscall.TIOCRCVFRAME": "syscall",
+ "syscall.TIOCREMOTE": "syscall",
+ "syscall.TIOCSBRK": "syscall",
+ "syscall.TIOCSCONS": "syscall",
+ "syscall.TIOCSCTTY": "syscall",
+ "syscall.TIOCSDRAINWAIT": "syscall",
+ "syscall.TIOCSDTR": "syscall",
+ "syscall.TIOCSERCONFIG": "syscall",
+ "syscall.TIOCSERGETLSR": "syscall",
+ "syscall.TIOCSERGETMULTI": "syscall",
+ "syscall.TIOCSERGSTRUCT": "syscall",
+ "syscall.TIOCSERGWILD": "syscall",
+ "syscall.TIOCSERSETMULTI": "syscall",
+ "syscall.TIOCSERSWILD": "syscall",
+ "syscall.TIOCSER_TEMT": "syscall",
+ "syscall.TIOCSETA": "syscall",
+ "syscall.TIOCSETAF": "syscall",
+ "syscall.TIOCSETAW": "syscall",
+ "syscall.TIOCSETD": "syscall",
+ "syscall.TIOCSFLAGS": "syscall",
+ "syscall.TIOCSIG": "syscall",
+ "syscall.TIOCSLCKTRMIOS": "syscall",
+ "syscall.TIOCSLINED": "syscall",
+ "syscall.TIOCSPGRP": "syscall",
+ "syscall.TIOCSPTLCK": "syscall",
+ "syscall.TIOCSQSIZE": "syscall",
+ "syscall.TIOCSRS485": "syscall",
+ "syscall.TIOCSSERIAL": "syscall",
+ "syscall.TIOCSSIZE": "syscall",
+ "syscall.TIOCSSOFTCAR": "syscall",
+ "syscall.TIOCSTART": "syscall",
+ "syscall.TIOCSTAT": "syscall",
+ "syscall.TIOCSTI": "syscall",
+ "syscall.TIOCSTOP": "syscall",
+ "syscall.TIOCSTSTAMP": "syscall",
+ "syscall.TIOCSWINSZ": "syscall",
+ "syscall.TIOCTIMESTAMP": "syscall",
+ "syscall.TIOCUCNTL": "syscall",
+ "syscall.TIOCVHANGUP": "syscall",
+ "syscall.TIOCXMTFRAME": "syscall",
+ "syscall.TOKEN_ADJUST_DEFAULT": "syscall",
+ "syscall.TOKEN_ADJUST_GROUPS": "syscall",
+ "syscall.TOKEN_ADJUST_PRIVILEGES": "syscall",
+ "syscall.TOKEN_ALL_ACCESS": "syscall",
+ "syscall.TOKEN_ASSIGN_PRIMARY": "syscall",
+ "syscall.TOKEN_DUPLICATE": "syscall",
+ "syscall.TOKEN_EXECUTE": "syscall",
+ "syscall.TOKEN_IMPERSONATE": "syscall",
+ "syscall.TOKEN_QUERY": "syscall",
+ "syscall.TOKEN_QUERY_SOURCE": "syscall",
+ "syscall.TOKEN_READ": "syscall",
+ "syscall.TOKEN_WRITE": "syscall",
+ "syscall.TOSTOP": "syscall",
+ "syscall.TRUNCATE_EXISTING": "syscall",
+ "syscall.TUNATTACHFILTER": "syscall",
+ "syscall.TUNDETACHFILTER": "syscall",
+ "syscall.TUNGETFEATURES": "syscall",
+ "syscall.TUNGETIFF": "syscall",
+ "syscall.TUNGETSNDBUF": "syscall",
+ "syscall.TUNGETVNETHDRSZ": "syscall",
+ "syscall.TUNSETDEBUG": "syscall",
+ "syscall.TUNSETGROUP": "syscall",
+ "syscall.TUNSETIFF": "syscall",
+ "syscall.TUNSETLINK": "syscall",
+ "syscall.TUNSETNOCSUM": "syscall",
+ "syscall.TUNSETOFFLOAD": "syscall",
+ "syscall.TUNSETOWNER": "syscall",
+ "syscall.TUNSETPERSIST": "syscall",
+ "syscall.TUNSETSNDBUF": "syscall",
+ "syscall.TUNSETTXFILTER": "syscall",
+ "syscall.TUNSETVNETHDRSZ": "syscall",
+ "syscall.Tee": "syscall",
+ "syscall.TerminateProcess": "syscall",
+ "syscall.Termios": "syscall",
+ "syscall.Tgkill": "syscall",
+ "syscall.Time": "syscall",
+ "syscall.Time_t": "syscall",
+ "syscall.Times": "syscall",
+ "syscall.Timespec": "syscall",
+ "syscall.TimespecToNsec": "syscall",
+ "syscall.Timeval": "syscall",
+ "syscall.Timeval32": "syscall",
+ "syscall.TimevalToNsec": "syscall",
+ "syscall.Timex": "syscall",
+ "syscall.Timezoneinformation": "syscall",
+ "syscall.Tms": "syscall",
+ "syscall.Token": "syscall",
+ "syscall.TokenAccessInformation": "syscall",
+ "syscall.TokenAuditPolicy": "syscall",
+ "syscall.TokenDefaultDacl": "syscall",
+ "syscall.TokenElevation": "syscall",
+ "syscall.TokenElevationType": "syscall",
+ "syscall.TokenGroups": "syscall",
+ "syscall.TokenGroupsAndPrivileges": "syscall",
+ "syscall.TokenHasRestrictions": "syscall",
+ "syscall.TokenImpersonationLevel": "syscall",
+ "syscall.TokenIntegrityLevel": "syscall",
+ "syscall.TokenLinkedToken": "syscall",
+ "syscall.TokenLogonSid": "syscall",
+ "syscall.TokenMandatoryPolicy": "syscall",
+ "syscall.TokenOrigin": "syscall",
+ "syscall.TokenOwner": "syscall",
+ "syscall.TokenPrimaryGroup": "syscall",
+ "syscall.TokenPrivileges": "syscall",
+ "syscall.TokenRestrictedSids": "syscall",
+ "syscall.TokenSandBoxInert": "syscall",
+ "syscall.TokenSessionId": "syscall",
+ "syscall.TokenSessionReference": "syscall",
+ "syscall.TokenSource": "syscall",
+ "syscall.TokenStatistics": "syscall",
+ "syscall.TokenType": "syscall",
+ "syscall.TokenUIAccess": "syscall",
+ "syscall.TokenUser": "syscall",
+ "syscall.TokenVirtualizationAllowed": "syscall",
+ "syscall.TokenVirtualizationEnabled": "syscall",
+ "syscall.Tokenprimarygroup": "syscall",
+ "syscall.Tokenuser": "syscall",
+ "syscall.TranslateAccountName": "syscall",
+ "syscall.TranslateName": "syscall",
+ "syscall.TransmitFile": "syscall",
+ "syscall.TransmitFileBuffers": "syscall",
+ "syscall.Truncate": "syscall",
+ "syscall.USAGE_MATCH_TYPE_AND": "syscall",
+ "syscall.USAGE_MATCH_TYPE_OR": "syscall",
+ "syscall.UTF16FromString": "syscall",
+ "syscall.UTF16PtrFromString": "syscall",
+ "syscall.UTF16ToString": "syscall",
+ "syscall.Ucred": "syscall",
+ "syscall.Umask": "syscall",
+ "syscall.Uname": "syscall",
+ "syscall.Undelete": "syscall",
+ "syscall.UnixCredentials": "syscall",
+ "syscall.UnixRights": "syscall",
+ "syscall.Unlink": "syscall",
+ "syscall.Unlinkat": "syscall",
+ "syscall.UnmapViewOfFile": "syscall",
+ "syscall.Unmount": "syscall",
+ "syscall.Unsetenv": "syscall",
+ "syscall.Unshare": "syscall",
+ "syscall.UserInfo10": "syscall",
+ "syscall.Ustat": "syscall",
+ "syscall.Ustat_t": "syscall",
+ "syscall.Utimbuf": "syscall",
+ "syscall.Utime": "syscall",
+ "syscall.Utimes": "syscall",
+ "syscall.UtimesNano": "syscall",
+ "syscall.Utsname": "syscall",
+ "syscall.VDISCARD": "syscall",
+ "syscall.VDSUSP": "syscall",
+ "syscall.VEOF": "syscall",
+ "syscall.VEOL": "syscall",
+ "syscall.VEOL2": "syscall",
+ "syscall.VERASE": "syscall",
+ "syscall.VERASE2": "syscall",
+ "syscall.VINTR": "syscall",
+ "syscall.VKILL": "syscall",
+ "syscall.VLNEXT": "syscall",
+ "syscall.VMIN": "syscall",
+ "syscall.VQUIT": "syscall",
+ "syscall.VREPRINT": "syscall",
+ "syscall.VSTART": "syscall",
+ "syscall.VSTATUS": "syscall",
+ "syscall.VSTOP": "syscall",
+ "syscall.VSUSP": "syscall",
+ "syscall.VSWTC": "syscall",
+ "syscall.VT0": "syscall",
+ "syscall.VT1": "syscall",
+ "syscall.VTDLY": "syscall",
+ "syscall.VTIME": "syscall",
+ "syscall.VWERASE": "syscall",
+ "syscall.VirtualLock": "syscall",
+ "syscall.VirtualUnlock": "syscall",
+ "syscall.WAIT_ABANDONED": "syscall",
+ "syscall.WAIT_FAILED": "syscall",
+ "syscall.WAIT_OBJECT_0": "syscall",
+ "syscall.WAIT_TIMEOUT": "syscall",
+ "syscall.WALL": "syscall",
+ "syscall.WALLSIG": "syscall",
+ "syscall.WALTSIG": "syscall",
+ "syscall.WCLONE": "syscall",
+ "syscall.WCONTINUED": "syscall",
+ "syscall.WCOREFLAG": "syscall",
+ "syscall.WEXITED": "syscall",
+ "syscall.WLINUXCLONE": "syscall",
+ "syscall.WNOHANG": "syscall",
+ "syscall.WNOTHREAD": "syscall",
+ "syscall.WNOWAIT": "syscall",
+ "syscall.WNOZOMBIE": "syscall",
+ "syscall.WOPTSCHECKED": "syscall",
+ "syscall.WORDSIZE": "syscall",
+ "syscall.WSABuf": "syscall",
+ "syscall.WSACleanup": "syscall",
+ "syscall.WSADESCRIPTION_LEN": "syscall",
+ "syscall.WSAData": "syscall",
+ "syscall.WSAEACCES": "syscall",
+ "syscall.WSAECONNRESET": "syscall",
+ "syscall.WSAEnumProtocols": "syscall",
+ "syscall.WSAID_CONNECTEX": "syscall",
+ "syscall.WSAIoctl": "syscall",
+ "syscall.WSAPROTOCOL_LEN": "syscall",
+ "syscall.WSAProtocolChain": "syscall",
+ "syscall.WSAProtocolInfo": "syscall",
+ "syscall.WSARecv": "syscall",
+ "syscall.WSARecvFrom": "syscall",
+ "syscall.WSASYS_STATUS_LEN": "syscall",
+ "syscall.WSASend": "syscall",
+ "syscall.WSASendTo": "syscall",
+ "syscall.WSASendto": "syscall",
+ "syscall.WSAStartup": "syscall",
+ "syscall.WSTOPPED": "syscall",
+ "syscall.WTRAPPED": "syscall",
+ "syscall.WUNTRACED": "syscall",
+ "syscall.Wait4": "syscall",
+ "syscall.WaitForSingleObject": "syscall",
+ "syscall.WaitStatus": "syscall",
+ "syscall.Win32FileAttributeData": "syscall",
+ "syscall.Win32finddata": "syscall",
+ "syscall.Write": "syscall",
+ "syscall.WriteConsole": "syscall",
+ "syscall.WriteFile": "syscall",
+ "syscall.X509_ASN_ENCODING": "syscall",
+ "syscall.XCASE": "syscall",
+ "syscall.XP1_CONNECTIONLESS": "syscall",
+ "syscall.XP1_CONNECT_DATA": "syscall",
+ "syscall.XP1_DISCONNECT_DATA": "syscall",
+ "syscall.XP1_EXPEDITED_DATA": "syscall",
+ "syscall.XP1_GRACEFUL_CLOSE": "syscall",
+ "syscall.XP1_GUARANTEED_DELIVERY": "syscall",
+ "syscall.XP1_GUARANTEED_ORDER": "syscall",
+ "syscall.XP1_IFS_HANDLES": "syscall",
+ "syscall.XP1_MESSAGE_ORIENTED": "syscall",
+ "syscall.XP1_MULTIPOINT_CONTROL_PLANE": "syscall",
+ "syscall.XP1_MULTIPOINT_DATA_PLANE": "syscall",
+ "syscall.XP1_PARTIAL_MESSAGE": "syscall",
+ "syscall.XP1_PSEUDO_STREAM": "syscall",
+ "syscall.XP1_QOS_SUPPORTED": "syscall",
+ "syscall.XP1_SAN_SUPPORT_SDP": "syscall",
+ "syscall.XP1_SUPPORT_BROADCAST": "syscall",
+ "syscall.XP1_SUPPORT_MULTIPOINT": "syscall",
+ "syscall.XP1_UNI_RECV": "syscall",
+ "syscall.XP1_UNI_SEND": "syscall",
+ "syslog.Dial": "log/syslog",
+ "syslog.LOG_ALERT": "log/syslog",
+ "syslog.LOG_AUTH": "log/syslog",
+ "syslog.LOG_AUTHPRIV": "log/syslog",
+ "syslog.LOG_CRIT": "log/syslog",
+ "syslog.LOG_CRON": "log/syslog",
+ "syslog.LOG_DAEMON": "log/syslog",
+ "syslog.LOG_DEBUG": "log/syslog",
+ "syslog.LOG_EMERG": "log/syslog",
+ "syslog.LOG_ERR": "log/syslog",
+ "syslog.LOG_FTP": "log/syslog",
+ "syslog.LOG_INFO": "log/syslog",
+ "syslog.LOG_KERN": "log/syslog",
+ "syslog.LOG_LOCAL0": "log/syslog",
+ "syslog.LOG_LOCAL1": "log/syslog",
+ "syslog.LOG_LOCAL2": "log/syslog",
+ "syslog.LOG_LOCAL3": "log/syslog",
+ "syslog.LOG_LOCAL4": "log/syslog",
+ "syslog.LOG_LOCAL5": "log/syslog",
+ "syslog.LOG_LOCAL6": "log/syslog",
+ "syslog.LOG_LOCAL7": "log/syslog",
+ "syslog.LOG_LPR": "log/syslog",
+ "syslog.LOG_MAIL": "log/syslog",
+ "syslog.LOG_NEWS": "log/syslog",
+ "syslog.LOG_NOTICE": "log/syslog",
+ "syslog.LOG_SYSLOG": "log/syslog",
+ "syslog.LOG_USER": "log/syslog",
+ "syslog.LOG_UUCP": "log/syslog",
+ "syslog.LOG_WARNING": "log/syslog",
+ "syslog.New": "log/syslog",
+ "syslog.NewLogger": "log/syslog",
+ "syslog.Priority": "log/syslog",
+ "syslog.Writer": "log/syslog",
+ "tabwriter.AlignRight": "text/tabwriter",
+ "tabwriter.Debug": "text/tabwriter",
+ "tabwriter.DiscardEmptyColumns": "text/tabwriter",
+ "tabwriter.Escape": "text/tabwriter",
+ "tabwriter.FilterHTML": "text/tabwriter",
+ "tabwriter.NewWriter": "text/tabwriter",
+ "tabwriter.StripEscape": "text/tabwriter",
+ "tabwriter.TabIndent": "text/tabwriter",
+ "tabwriter.Writer": "text/tabwriter",
+ "tar.ErrFieldTooLong": "archive/tar",
+ "tar.ErrHeader": "archive/tar",
+ "tar.ErrWriteAfterClose": "archive/tar",
+ "tar.ErrWriteTooLong": "archive/tar",
+ "tar.FileInfoHeader": "archive/tar",
+ "tar.Header": "archive/tar",
+ "tar.NewReader": "archive/tar",
+ "tar.NewWriter": "archive/tar",
+ "tar.Reader": "archive/tar",
+ "tar.TypeBlock": "archive/tar",
+ "tar.TypeChar": "archive/tar",
+ "tar.TypeCont": "archive/tar",
+ "tar.TypeDir": "archive/tar",
+ "tar.TypeFifo": "archive/tar",
+ "tar.TypeGNULongLink": "archive/tar",
+ "tar.TypeGNULongName": "archive/tar",
+ "tar.TypeGNUSparse": "archive/tar",
+ "tar.TypeLink": "archive/tar",
+ "tar.TypeReg": "archive/tar",
+ "tar.TypeRegA": "archive/tar",
+ "tar.TypeSymlink": "archive/tar",
+ "tar.TypeXGlobalHeader": "archive/tar",
+ "tar.TypeXHeader": "archive/tar",
+ "tar.Writer": "archive/tar",
+ "template.CSS": "html/template",
+ "template.ErrAmbigContext": "html/template",
+ "template.ErrBadHTML": "html/template",
+ "template.ErrBranchEnd": "html/template",
+ "template.ErrEndContext": "html/template",
+ "template.ErrNoSuchTemplate": "html/template",
+ "template.ErrOutputContext": "html/template",
+ "template.ErrPartialCharset": "html/template",
+ "template.ErrPartialEscape": "html/template",
+ "template.ErrRangeLoopReentry": "html/template",
+ "template.ErrSlashAmbig": "html/template",
+ "template.Error": "html/template",
+ "template.ErrorCode": "html/template",
+ "template.ExecError": "text/template",
+ // "template.FuncMap" is ambiguous
+ "template.HTML": "html/template",
+ "template.HTMLAttr": "html/template",
+ // "template.HTMLEscape" is ambiguous
+ // "template.HTMLEscapeString" is ambiguous
+ // "template.HTMLEscaper" is ambiguous
+ // "template.IsTrue" is ambiguous
+ "template.JS": "html/template",
+ // "template.JSEscape" is ambiguous
+ // "template.JSEscapeString" is ambiguous
+ // "template.JSEscaper" is ambiguous
+ "template.JSStr": "html/template",
+ // "template.Must" is ambiguous
+ // "template.New" is ambiguous
+ "template.OK": "html/template",
+ // "template.ParseFiles" is ambiguous
+ // "template.ParseGlob" is ambiguous
+ // "template.Template" is ambiguous
+ "template.URL": "html/template",
+ // "template.URLQueryEscaper" is ambiguous
+ "testing.AllocsPerRun": "testing",
+ "testing.B": "testing",
+ "testing.Benchmark": "testing",
+ "testing.BenchmarkResult": "testing",
+ "testing.Cover": "testing",
+ "testing.CoverBlock": "testing",
+ "testing.CoverMode": "testing",
+ "testing.Coverage": "testing",
+ "testing.InternalBenchmark": "testing",
+ "testing.InternalExample": "testing",
+ "testing.InternalTest": "testing",
+ "testing.M": "testing",
+ "testing.Main": "testing",
+ "testing.MainStart": "testing",
+ "testing.PB": "testing",
+ "testing.RegisterCover": "testing",
+ "testing.RunBenchmarks": "testing",
+ "testing.RunExamples": "testing",
+ "testing.RunTests": "testing",
+ "testing.Short": "testing",
+ "testing.T": "testing",
+ "testing.Verbose": "testing",
+ "textproto.CanonicalMIMEHeaderKey": "net/textproto",
+ "textproto.Conn": "net/textproto",
+ "textproto.Dial": "net/textproto",
+ "textproto.Error": "net/textproto",
+ "textproto.MIMEHeader": "net/textproto",
+ "textproto.NewConn": "net/textproto",
+ "textproto.NewReader": "net/textproto",
+ "textproto.NewWriter": "net/textproto",
+ "textproto.Pipeline": "net/textproto",
+ "textproto.ProtocolError": "net/textproto",
+ "textproto.Reader": "net/textproto",
+ "textproto.TrimBytes": "net/textproto",
+ "textproto.TrimString": "net/textproto",
+ "textproto.Writer": "net/textproto",
+ "time.ANSIC": "time",
+ "time.After": "time",
+ "time.AfterFunc": "time",
+ "time.April": "time",
+ "time.August": "time",
+ "time.Date": "time",
+ "time.December": "time",
+ "time.Duration": "time",
+ "time.February": "time",
+ "time.FixedZone": "time",
+ "time.Friday": "time",
+ "time.Hour": "time",
+ "time.January": "time",
+ "time.July": "time",
+ "time.June": "time",
+ "time.Kitchen": "time",
+ "time.LoadLocation": "time",
+ "time.Local": "time",
+ "time.Location": "time",
+ "time.March": "time",
+ "time.May": "time",
+ "time.Microsecond": "time",
+ "time.Millisecond": "time",
+ "time.Minute": "time",
+ "time.Monday": "time",
+ "time.Month": "time",
+ "time.Nanosecond": "time",
+ "time.NewTicker": "time",
+ "time.NewTimer": "time",
+ "time.November": "time",
+ "time.Now": "time",
+ "time.October": "time",
+ "time.Parse": "time",
+ "time.ParseDuration": "time",
+ "time.ParseError": "time",
+ "time.ParseInLocation": "time",
+ "time.RFC1123": "time",
+ "time.RFC1123Z": "time",
+ "time.RFC3339": "time",
+ "time.RFC3339Nano": "time",
+ "time.RFC822": "time",
+ "time.RFC822Z": "time",
+ "time.RFC850": "time",
+ "time.RubyDate": "time",
+ "time.Saturday": "time",
+ "time.Second": "time",
+ "time.September": "time",
+ "time.Since": "time",
+ "time.Sleep": "time",
+ "time.Stamp": "time",
+ "time.StampMicro": "time",
+ "time.StampMilli": "time",
+ "time.StampNano": "time",
+ "time.Sunday": "time",
+ "time.Thursday": "time",
+ "time.Tick": "time",
+ "time.Ticker": "time",
+ "time.Time": "time",
+ "time.Timer": "time",
+ "time.Tuesday": "time",
+ "time.UTC": "time",
+ "time.Unix": "time",
+ "time.UnixDate": "time",
+ "time.Until": "time",
+ "time.Wednesday": "time",
+ "time.Weekday": "time",
+ "tls.Certificate": "crypto/tls",
+ "tls.CertificateRequestInfo": "crypto/tls",
+ "tls.Client": "crypto/tls",
+ "tls.ClientAuthType": "crypto/tls",
+ "tls.ClientHelloInfo": "crypto/tls",
+ "tls.ClientSessionCache": "crypto/tls",
+ "tls.ClientSessionState": "crypto/tls",
+ "tls.Config": "crypto/tls",
+ "tls.Conn": "crypto/tls",
+ "tls.ConnectionState": "crypto/tls",
+ "tls.CurveID": "crypto/tls",
+ "tls.CurveP256": "crypto/tls",
+ "tls.CurveP384": "crypto/tls",
+ "tls.CurveP521": "crypto/tls",
+ "tls.Dial": "crypto/tls",
+ "tls.DialWithDialer": "crypto/tls",
+ "tls.ECDSAWithP256AndSHA256": "crypto/tls",
+ "tls.ECDSAWithP384AndSHA384": "crypto/tls",
+ "tls.ECDSAWithP521AndSHA512": "crypto/tls",
+ "tls.Listen": "crypto/tls",
+ "tls.LoadX509KeyPair": "crypto/tls",
+ "tls.NewLRUClientSessionCache": "crypto/tls",
+ "tls.NewListener": "crypto/tls",
+ "tls.NoClientCert": "crypto/tls",
+ "tls.PKCS1WithSHA1": "crypto/tls",
+ "tls.PKCS1WithSHA256": "crypto/tls",
+ "tls.PKCS1WithSHA384": "crypto/tls",
+ "tls.PKCS1WithSHA512": "crypto/tls",
+ "tls.PSSWithSHA256": "crypto/tls",
+ "tls.PSSWithSHA384": "crypto/tls",
+ "tls.PSSWithSHA512": "crypto/tls",
+ "tls.RecordHeaderError": "crypto/tls",
+ "tls.RenegotiateFreelyAsClient": "crypto/tls",
+ "tls.RenegotiateNever": "crypto/tls",
+ "tls.RenegotiateOnceAsClient": "crypto/tls",
+ "tls.RenegotiationSupport": "crypto/tls",
+ "tls.RequestClientCert": "crypto/tls",
+ "tls.RequireAndVerifyClientCert": "crypto/tls",
+ "tls.RequireAnyClientCert": "crypto/tls",
+ "tls.Server": "crypto/tls",
+ "tls.SignatureScheme": "crypto/tls",
+ "tls.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA": "crypto/tls",
+ "tls.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256": "crypto/tls",
+ "tls.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256": "crypto/tls",
+ "tls.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA": "crypto/tls",
+ "tls.TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384": "crypto/tls",
+ "tls.TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305": "crypto/tls",
+ "tls.TLS_ECDHE_ECDSA_WITH_RC4_128_SHA": "crypto/tls",
+ "tls.TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA": "crypto/tls",
+ "tls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA": "crypto/tls",
+ "tls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256": "crypto/tls",
+ "tls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256": "crypto/tls",
+ "tls.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA": "crypto/tls",
+ "tls.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384": "crypto/tls",
+ "tls.TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305": "crypto/tls",
+ "tls.TLS_ECDHE_RSA_WITH_RC4_128_SHA": "crypto/tls",
+ "tls.TLS_FALLBACK_SCSV": "crypto/tls",
+ "tls.TLS_RSA_WITH_3DES_EDE_CBC_SHA": "crypto/tls",
+ "tls.TLS_RSA_WITH_AES_128_CBC_SHA": "crypto/tls",
+ "tls.TLS_RSA_WITH_AES_128_CBC_SHA256": "crypto/tls",
+ "tls.TLS_RSA_WITH_AES_128_GCM_SHA256": "crypto/tls",
+ "tls.TLS_RSA_WITH_AES_256_CBC_SHA": "crypto/tls",
+ "tls.TLS_RSA_WITH_AES_256_GCM_SHA384": "crypto/tls",
+ "tls.TLS_RSA_WITH_RC4_128_SHA": "crypto/tls",
+ "tls.VerifyClientCertIfGiven": "crypto/tls",
+ "tls.VersionSSL30": "crypto/tls",
+ "tls.VersionTLS10": "crypto/tls",
+ "tls.VersionTLS11": "crypto/tls",
+ "tls.VersionTLS12": "crypto/tls",
+ "tls.X25519": "crypto/tls",
+ "tls.X509KeyPair": "crypto/tls",
+ "token.ADD": "go/token",
+ "token.ADD_ASSIGN": "go/token",
+ "token.AND": "go/token",
+ "token.AND_ASSIGN": "go/token",
+ "token.AND_NOT": "go/token",
+ "token.AND_NOT_ASSIGN": "go/token",
+ "token.ARROW": "go/token",
+ "token.ASSIGN": "go/token",
+ "token.BREAK": "go/token",
+ "token.CASE": "go/token",
+ "token.CHAN": "go/token",
+ "token.CHAR": "go/token",
+ "token.COLON": "go/token",
+ "token.COMMA": "go/token",
+ "token.COMMENT": "go/token",
+ "token.CONST": "go/token",
+ "token.CONTINUE": "go/token",
+ "token.DEC": "go/token",
+ "token.DEFAULT": "go/token",
+ "token.DEFER": "go/token",
+ "token.DEFINE": "go/token",
+ "token.ELLIPSIS": "go/token",
+ "token.ELSE": "go/token",
+ "token.EOF": "go/token",
+ "token.EQL": "go/token",
+ "token.FALLTHROUGH": "go/token",
+ "token.FLOAT": "go/token",
+ "token.FOR": "go/token",
+ "token.FUNC": "go/token",
+ "token.File": "go/token",
+ "token.FileSet": "go/token",
+ "token.GEQ": "go/token",
+ "token.GO": "go/token",
+ "token.GOTO": "go/token",
+ "token.GTR": "go/token",
+ "token.HighestPrec": "go/token",
+ "token.IDENT": "go/token",
+ "token.IF": "go/token",
+ "token.ILLEGAL": "go/token",
+ "token.IMAG": "go/token",
+ "token.IMPORT": "go/token",
+ "token.INC": "go/token",
+ "token.INT": "go/token",
+ "token.INTERFACE": "go/token",
+ "token.LAND": "go/token",
+ "token.LBRACE": "go/token",
+ "token.LBRACK": "go/token",
+ "token.LEQ": "go/token",
+ "token.LOR": "go/token",
+ "token.LPAREN": "go/token",
+ "token.LSS": "go/token",
+ "token.Lookup": "go/token",
+ "token.LowestPrec": "go/token",
+ "token.MAP": "go/token",
+ "token.MUL": "go/token",
+ "token.MUL_ASSIGN": "go/token",
+ "token.NEQ": "go/token",
+ "token.NOT": "go/token",
+ "token.NewFileSet": "go/token",
+ "token.NoPos": "go/token",
+ "token.OR": "go/token",
+ "token.OR_ASSIGN": "go/token",
+ "token.PACKAGE": "go/token",
+ "token.PERIOD": "go/token",
+ "token.Pos": "go/token",
+ "token.Position": "go/token",
+ "token.QUO": "go/token",
+ "token.QUO_ASSIGN": "go/token",
+ "token.RANGE": "go/token",
+ "token.RBRACE": "go/token",
+ "token.RBRACK": "go/token",
+ "token.REM": "go/token",
+ "token.REM_ASSIGN": "go/token",
+ "token.RETURN": "go/token",
+ "token.RPAREN": "go/token",
+ "token.SELECT": "go/token",
+ "token.SEMICOLON": "go/token",
+ "token.SHL": "go/token",
+ "token.SHL_ASSIGN": "go/token",
+ "token.SHR": "go/token",
+ "token.SHR_ASSIGN": "go/token",
+ "token.STRING": "go/token",
+ "token.STRUCT": "go/token",
+ "token.SUB": "go/token",
+ "token.SUB_ASSIGN": "go/token",
+ "token.SWITCH": "go/token",
+ "token.TYPE": "go/token",
+ "token.Token": "go/token",
+ "token.UnaryPrec": "go/token",
+ "token.VAR": "go/token",
+ "token.XOR": "go/token",
+ "token.XOR_ASSIGN": "go/token",
+ "trace.Start": "runtime/trace",
+ "trace.Stop": "runtime/trace",
+ "types.Array": "go/types",
+ "types.AssertableTo": "go/types",
+ "types.AssignableTo": "go/types",
+ "types.Basic": "go/types",
+ "types.BasicInfo": "go/types",
+ "types.BasicKind": "go/types",
+ "types.Bool": "go/types",
+ "types.Builtin": "go/types",
+ "types.Byte": "go/types",
+ "types.Chan": "go/types",
+ "types.ChanDir": "go/types",
+ "types.Checker": "go/types",
+ "types.Comparable": "go/types",
+ "types.Complex128": "go/types",
+ "types.Complex64": "go/types",
+ "types.Config": "go/types",
+ "types.Const": "go/types",
+ "types.ConvertibleTo": "go/types",
+ "types.DefPredeclaredTestFuncs": "go/types",
+ "types.Default": "go/types",
+ "types.Error": "go/types",
+ "types.Eval": "go/types",
+ "types.ExprString": "go/types",
+ "types.FieldVal": "go/types",
+ "types.Float32": "go/types",
+ "types.Float64": "go/types",
+ "types.Func": "go/types",
+ "types.Id": "go/types",
+ "types.Identical": "go/types",
+ "types.IdenticalIgnoreTags": "go/types",
+ "types.Implements": "go/types",
+ "types.ImportMode": "go/types",
+ "types.Importer": "go/types",
+ "types.ImporterFrom": "go/types",
+ "types.Info": "go/types",
+ "types.Initializer": "go/types",
+ "types.Int": "go/types",
+ "types.Int16": "go/types",
+ "types.Int32": "go/types",
+ "types.Int64": "go/types",
+ "types.Int8": "go/types",
+ "types.Interface": "go/types",
+ "types.Invalid": "go/types",
+ "types.IsBoolean": "go/types",
+ "types.IsComplex": "go/types",
+ "types.IsConstType": "go/types",
+ "types.IsFloat": "go/types",
+ "types.IsInteger": "go/types",
+ "types.IsInterface": "go/types",
+ "types.IsNumeric": "go/types",
+ "types.IsOrdered": "go/types",
+ "types.IsString": "go/types",
+ "types.IsUnsigned": "go/types",
+ "types.IsUntyped": "go/types",
+ "types.Label": "go/types",
+ "types.LookupFieldOrMethod": "go/types",
+ "types.Map": "go/types",
+ "types.MethodExpr": "go/types",
+ "types.MethodSet": "go/types",
+ "types.MethodVal": "go/types",
+ "types.MissingMethod": "go/types",
+ "types.Named": "go/types",
+ "types.NewArray": "go/types",
+ "types.NewChan": "go/types",
+ "types.NewChecker": "go/types",
+ "types.NewConst": "go/types",
+ "types.NewField": "go/types",
+ "types.NewFunc": "go/types",
+ "types.NewInterface": "go/types",
+ "types.NewLabel": "go/types",
+ "types.NewMap": "go/types",
+ "types.NewMethodSet": "go/types",
+ "types.NewNamed": "go/types",
+ "types.NewPackage": "go/types",
+ "types.NewParam": "go/types",
+ "types.NewPkgName": "go/types",
+ "types.NewPointer": "go/types",
+ "types.NewScope": "go/types",
+ "types.NewSignature": "go/types",
+ "types.NewSlice": "go/types",
+ "types.NewStruct": "go/types",
+ "types.NewTuple": "go/types",
+ "types.NewTypeName": "go/types",
+ "types.NewVar": "go/types",
+ "types.Nil": "go/types",
+ "types.ObjectString": "go/types",
+ "types.Package": "go/types",
+ "types.PkgName": "go/types",
+ "types.Pointer": "go/types",
+ "types.Qualifier": "go/types",
+ "types.RecvOnly": "go/types",
+ "types.RelativeTo": "go/types",
+ "types.Rune": "go/types",
+ "types.Scope": "go/types",
+ "types.Selection": "go/types",
+ "types.SelectionKind": "go/types",
+ "types.SelectionString": "go/types",
+ "types.SendOnly": "go/types",
+ "types.SendRecv": "go/types",
+ "types.Signature": "go/types",
+ "types.Sizes": "go/types",
+ "types.Slice": "go/types",
+ "types.StdSizes": "go/types",
+ "types.String": "go/types",
+ "types.Struct": "go/types",
+ "types.Tuple": "go/types",
+ "types.Typ": "go/types",
+ "types.Type": "go/types",
+ "types.TypeAndValue": "go/types",
+ "types.TypeName": "go/types",
+ "types.TypeString": "go/types",
+ "types.Uint": "go/types",
+ "types.Uint16": "go/types",
+ "types.Uint32": "go/types",
+ "types.Uint64": "go/types",
+ "types.Uint8": "go/types",
+ "types.Uintptr": "go/types",
+ "types.Universe": "go/types",
+ "types.Unsafe": "go/types",
+ "types.UnsafePointer": "go/types",
+ "types.UntypedBool": "go/types",
+ "types.UntypedComplex": "go/types",
+ "types.UntypedFloat": "go/types",
+ "types.UntypedInt": "go/types",
+ "types.UntypedNil": "go/types",
+ "types.UntypedRune": "go/types",
+ "types.UntypedString": "go/types",
+ "types.Var": "go/types",
+ "types.WriteExpr": "go/types",
+ "types.WriteSignature": "go/types",
+ "types.WriteType": "go/types",
+ "unicode.ASCII_Hex_Digit": "unicode",
+ "unicode.Adlam": "unicode",
+ "unicode.Ahom": "unicode",
+ "unicode.Anatolian_Hieroglyphs": "unicode",
+ "unicode.Arabic": "unicode",
+ "unicode.Armenian": "unicode",
+ "unicode.Avestan": "unicode",
+ "unicode.AzeriCase": "unicode",
+ "unicode.Balinese": "unicode",
+ "unicode.Bamum": "unicode",
+ "unicode.Bassa_Vah": "unicode",
+ "unicode.Batak": "unicode",
+ "unicode.Bengali": "unicode",
+ "unicode.Bhaiksuki": "unicode",
+ "unicode.Bidi_Control": "unicode",
+ "unicode.Bopomofo": "unicode",
+ "unicode.Brahmi": "unicode",
+ "unicode.Braille": "unicode",
+ "unicode.Buginese": "unicode",
+ "unicode.Buhid": "unicode",
+ "unicode.C": "unicode",
+ "unicode.Canadian_Aboriginal": "unicode",
+ "unicode.Carian": "unicode",
+ "unicode.CaseRange": "unicode",
+ "unicode.CaseRanges": "unicode",
+ "unicode.Categories": "unicode",
+ "unicode.Caucasian_Albanian": "unicode",
+ "unicode.Cc": "unicode",
+ "unicode.Cf": "unicode",
+ "unicode.Chakma": "unicode",
+ "unicode.Cham": "unicode",
+ "unicode.Cherokee": "unicode",
+ "unicode.Co": "unicode",
+ "unicode.Common": "unicode",
+ "unicode.Coptic": "unicode",
+ "unicode.Cs": "unicode",
+ "unicode.Cuneiform": "unicode",
+ "unicode.Cypriot": "unicode",
+ "unicode.Cyrillic": "unicode",
+ "unicode.Dash": "unicode",
+ "unicode.Deprecated": "unicode",
+ "unicode.Deseret": "unicode",
+ "unicode.Devanagari": "unicode",
+ "unicode.Diacritic": "unicode",
+ "unicode.Digit": "unicode",
+ "unicode.Duployan": "unicode",
+ "unicode.Egyptian_Hieroglyphs": "unicode",
+ "unicode.Elbasan": "unicode",
+ "unicode.Ethiopic": "unicode",
+ "unicode.Extender": "unicode",
+ "unicode.FoldCategory": "unicode",
+ "unicode.FoldScript": "unicode",
+ "unicode.Georgian": "unicode",
+ "unicode.Glagolitic": "unicode",
+ "unicode.Gothic": "unicode",
+ "unicode.Grantha": "unicode",
+ "unicode.GraphicRanges": "unicode",
+ "unicode.Greek": "unicode",
+ "unicode.Gujarati": "unicode",
+ "unicode.Gurmukhi": "unicode",
+ "unicode.Han": "unicode",
+ "unicode.Hangul": "unicode",
+ "unicode.Hanunoo": "unicode",
+ "unicode.Hatran": "unicode",
+ "unicode.Hebrew": "unicode",
+ "unicode.Hex_Digit": "unicode",
+ "unicode.Hiragana": "unicode",
+ "unicode.Hyphen": "unicode",
+ "unicode.IDS_Binary_Operator": "unicode",
+ "unicode.IDS_Trinary_Operator": "unicode",
+ "unicode.Ideographic": "unicode",
+ "unicode.Imperial_Aramaic": "unicode",
+ "unicode.In": "unicode",
+ "unicode.Inherited": "unicode",
+ "unicode.Inscriptional_Pahlavi": "unicode",
+ "unicode.Inscriptional_Parthian": "unicode",
+ "unicode.Is": "unicode",
+ "unicode.IsControl": "unicode",
+ "unicode.IsDigit": "unicode",
+ "unicode.IsGraphic": "unicode",
+ "unicode.IsLetter": "unicode",
+ "unicode.IsLower": "unicode",
+ "unicode.IsMark": "unicode",
+ "unicode.IsNumber": "unicode",
+ "unicode.IsOneOf": "unicode",
+ "unicode.IsPrint": "unicode",
+ "unicode.IsPunct": "unicode",
+ "unicode.IsSpace": "unicode",
+ "unicode.IsSymbol": "unicode",
+ "unicode.IsTitle": "unicode",
+ "unicode.IsUpper": "unicode",
+ "unicode.Javanese": "unicode",
+ "unicode.Join_Control": "unicode",
+ "unicode.Kaithi": "unicode",
+ "unicode.Kannada": "unicode",
+ "unicode.Katakana": "unicode",
+ "unicode.Kayah_Li": "unicode",
+ "unicode.Kharoshthi": "unicode",
+ "unicode.Khmer": "unicode",
+ "unicode.Khojki": "unicode",
+ "unicode.Khudawadi": "unicode",
+ "unicode.L": "unicode",
+ "unicode.Lao": "unicode",
+ "unicode.Latin": "unicode",
+ "unicode.Lepcha": "unicode",
+ "unicode.Letter": "unicode",
+ "unicode.Limbu": "unicode",
+ "unicode.Linear_A": "unicode",
+ "unicode.Linear_B": "unicode",
+ "unicode.Lisu": "unicode",
+ "unicode.Ll": "unicode",
+ "unicode.Lm": "unicode",
+ "unicode.Lo": "unicode",
+ "unicode.Logical_Order_Exception": "unicode",
+ "unicode.Lower": "unicode",
+ "unicode.LowerCase": "unicode",
+ "unicode.Lt": "unicode",
+ "unicode.Lu": "unicode",
+ "unicode.Lycian": "unicode",
+ "unicode.Lydian": "unicode",
+ "unicode.M": "unicode",
+ "unicode.Mahajani": "unicode",
+ "unicode.Malayalam": "unicode",
+ "unicode.Mandaic": "unicode",
+ "unicode.Manichaean": "unicode",
+ "unicode.Marchen": "unicode",
+ "unicode.Mark": "unicode",
+ "unicode.MaxASCII": "unicode",
+ "unicode.MaxCase": "unicode",
+ "unicode.MaxLatin1": "unicode",
+ "unicode.MaxRune": "unicode",
+ "unicode.Mc": "unicode",
+ "unicode.Me": "unicode",
+ "unicode.Meetei_Mayek": "unicode",
+ "unicode.Mende_Kikakui": "unicode",
+ "unicode.Meroitic_Cursive": "unicode",
+ "unicode.Meroitic_Hieroglyphs": "unicode",
+ "unicode.Miao": "unicode",
+ "unicode.Mn": "unicode",
+ "unicode.Modi": "unicode",
+ "unicode.Mongolian": "unicode",
+ "unicode.Mro": "unicode",
+ "unicode.Multani": "unicode",
+ "unicode.Myanmar": "unicode",
+ "unicode.N": "unicode",
+ "unicode.Nabataean": "unicode",
+ "unicode.Nd": "unicode",
+ "unicode.New_Tai_Lue": "unicode",
+ "unicode.Newa": "unicode",
+ "unicode.Nko": "unicode",
+ "unicode.Nl": "unicode",
+ "unicode.No": "unicode",
+ "unicode.Noncharacter_Code_Point": "unicode",
+ "unicode.Number": "unicode",
+ "unicode.Ogham": "unicode",
+ "unicode.Ol_Chiki": "unicode",
+ "unicode.Old_Hungarian": "unicode",
+ "unicode.Old_Italic": "unicode",
+ "unicode.Old_North_Arabian": "unicode",
+ "unicode.Old_Permic": "unicode",
+ "unicode.Old_Persian": "unicode",
+ "unicode.Old_South_Arabian": "unicode",
+ "unicode.Old_Turkic": "unicode",
+ "unicode.Oriya": "unicode",
+ "unicode.Osage": "unicode",
+ "unicode.Osmanya": "unicode",
+ "unicode.Other": "unicode",
+ "unicode.Other_Alphabetic": "unicode",
+ "unicode.Other_Default_Ignorable_Code_Point": "unicode",
+ "unicode.Other_Grapheme_Extend": "unicode",
+ "unicode.Other_ID_Continue": "unicode",
+ "unicode.Other_ID_Start": "unicode",
+ "unicode.Other_Lowercase": "unicode",
+ "unicode.Other_Math": "unicode",
+ "unicode.Other_Uppercase": "unicode",
+ "unicode.P": "unicode",
+ "unicode.Pahawh_Hmong": "unicode",
+ "unicode.Palmyrene": "unicode",
+ "unicode.Pattern_Syntax": "unicode",
+ "unicode.Pattern_White_Space": "unicode",
+ "unicode.Pau_Cin_Hau": "unicode",
+ "unicode.Pc": "unicode",
+ "unicode.Pd": "unicode",
+ "unicode.Pe": "unicode",
+ "unicode.Pf": "unicode",
+ "unicode.Phags_Pa": "unicode",
+ "unicode.Phoenician": "unicode",
+ "unicode.Pi": "unicode",
+ "unicode.Po": "unicode",
+ "unicode.Prepended_Concatenation_Mark": "unicode",
+ "unicode.PrintRanges": "unicode",
+ "unicode.Properties": "unicode",
+ "unicode.Ps": "unicode",
+ "unicode.Psalter_Pahlavi": "unicode",
+ "unicode.Punct": "unicode",
+ "unicode.Quotation_Mark": "unicode",
+ "unicode.Radical": "unicode",
+ "unicode.Range16": "unicode",
+ "unicode.Range32": "unicode",
+ "unicode.RangeTable": "unicode",
+ "unicode.Rejang": "unicode",
+ "unicode.ReplacementChar": "unicode",
+ "unicode.Runic": "unicode",
+ "unicode.S": "unicode",
+ "unicode.STerm": "unicode",
+ "unicode.Samaritan": "unicode",
+ "unicode.Saurashtra": "unicode",
+ "unicode.Sc": "unicode",
+ "unicode.Scripts": "unicode",
+ "unicode.Sentence_Terminal": "unicode",
+ "unicode.Sharada": "unicode",
+ "unicode.Shavian": "unicode",
+ "unicode.Siddham": "unicode",
+ "unicode.SignWriting": "unicode",
+ "unicode.SimpleFold": "unicode",
+ "unicode.Sinhala": "unicode",
+ "unicode.Sk": "unicode",
+ "unicode.Sm": "unicode",
+ "unicode.So": "unicode",
+ "unicode.Soft_Dotted": "unicode",
+ "unicode.Sora_Sompeng": "unicode",
+ "unicode.Space": "unicode",
+ "unicode.SpecialCase": "unicode",
+ "unicode.Sundanese": "unicode",
+ "unicode.Syloti_Nagri": "unicode",
+ "unicode.Symbol": "unicode",
+ "unicode.Syriac": "unicode",
+ "unicode.Tagalog": "unicode",
+ "unicode.Tagbanwa": "unicode",
+ "unicode.Tai_Le": "unicode",
+ "unicode.Tai_Tham": "unicode",
+ "unicode.Tai_Viet": "unicode",
+ "unicode.Takri": "unicode",
+ "unicode.Tamil": "unicode",
+ "unicode.Tangut": "unicode",
+ "unicode.Telugu": "unicode",
+ "unicode.Terminal_Punctuation": "unicode",
+ "unicode.Thaana": "unicode",
+ "unicode.Thai": "unicode",
+ "unicode.Tibetan": "unicode",
+ "unicode.Tifinagh": "unicode",
+ "unicode.Tirhuta": "unicode",
+ "unicode.Title": "unicode",
+ "unicode.TitleCase": "unicode",
+ "unicode.To": "unicode",
+ "unicode.ToLower": "unicode",
+ "unicode.ToTitle": "unicode",
+ "unicode.ToUpper": "unicode",
+ "unicode.TurkishCase": "unicode",
+ "unicode.Ugaritic": "unicode",
+ "unicode.Unified_Ideograph": "unicode",
+ "unicode.Upper": "unicode",
+ "unicode.UpperCase": "unicode",
+ "unicode.UpperLower": "unicode",
+ "unicode.Vai": "unicode",
+ "unicode.Variation_Selector": "unicode",
+ "unicode.Version": "unicode",
+ "unicode.Warang_Citi": "unicode",
+ "unicode.White_Space": "unicode",
+ "unicode.Yi": "unicode",
+ "unicode.Z": "unicode",
+ "unicode.Zl": "unicode",
+ "unicode.Zp": "unicode",
+ "unicode.Zs": "unicode",
+ "url.Error": "net/url",
+ "url.EscapeError": "net/url",
+ "url.InvalidHostError": "net/url",
+ "url.Parse": "net/url",
+ "url.ParseQuery": "net/url",
+ "url.ParseRequestURI": "net/url",
+ "url.PathEscape": "net/url",
+ "url.PathUnescape": "net/url",
+ "url.QueryEscape": "net/url",
+ "url.QueryUnescape": "net/url",
+ "url.URL": "net/url",
+ "url.User": "net/url",
+ "url.UserPassword": "net/url",
+ "url.Userinfo": "net/url",
+ "url.Values": "net/url",
+ "user.Current": "os/user",
+ "user.Group": "os/user",
+ "user.Lookup": "os/user",
+ "user.LookupGroup": "os/user",
+ "user.LookupGroupId": "os/user",
+ "user.LookupId": "os/user",
+ "user.UnknownGroupError": "os/user",
+ "user.UnknownGroupIdError": "os/user",
+ "user.UnknownUserError": "os/user",
+ "user.UnknownUserIdError": "os/user",
+ "user.User": "os/user",
+ "utf16.Decode": "unicode/utf16",
+ "utf16.DecodeRune": "unicode/utf16",
+ "utf16.Encode": "unicode/utf16",
+ "utf16.EncodeRune": "unicode/utf16",
+ "utf16.IsSurrogate": "unicode/utf16",
+ "utf8.DecodeLastRune": "unicode/utf8",
+ "utf8.DecodeLastRuneInString": "unicode/utf8",
+ "utf8.DecodeRune": "unicode/utf8",
+ "utf8.DecodeRuneInString": "unicode/utf8",
+ "utf8.EncodeRune": "unicode/utf8",
+ "utf8.FullRune": "unicode/utf8",
+ "utf8.FullRuneInString": "unicode/utf8",
+ "utf8.MaxRune": "unicode/utf8",
+ "utf8.RuneCount": "unicode/utf8",
+ "utf8.RuneCountInString": "unicode/utf8",
+ "utf8.RuneError": "unicode/utf8",
+ "utf8.RuneLen": "unicode/utf8",
+ "utf8.RuneSelf": "unicode/utf8",
+ "utf8.RuneStart": "unicode/utf8",
+ "utf8.UTFMax": "unicode/utf8",
+ "utf8.Valid": "unicode/utf8",
+ "utf8.ValidRune": "unicode/utf8",
+ "utf8.ValidString": "unicode/utf8",
+ "x509.CANotAuthorizedForThisName": "crypto/x509",
+ "x509.CertPool": "crypto/x509",
+ "x509.Certificate": "crypto/x509",
+ "x509.CertificateInvalidError": "crypto/x509",
+ "x509.CertificateRequest": "crypto/x509",
+ "x509.ConstraintViolationError": "crypto/x509",
+ "x509.CreateCertificate": "crypto/x509",
+ "x509.CreateCertificateRequest": "crypto/x509",
+ "x509.DSA": "crypto/x509",
+ "x509.DSAWithSHA1": "crypto/x509",
+ "x509.DSAWithSHA256": "crypto/x509",
+ "x509.DecryptPEMBlock": "crypto/x509",
+ "x509.ECDSA": "crypto/x509",
+ "x509.ECDSAWithSHA1": "crypto/x509",
+ "x509.ECDSAWithSHA256": "crypto/x509",
+ "x509.ECDSAWithSHA384": "crypto/x509",
+ "x509.ECDSAWithSHA512": "crypto/x509",
+ "x509.EncryptPEMBlock": "crypto/x509",
+ "x509.ErrUnsupportedAlgorithm": "crypto/x509",
+ "x509.Expired": "crypto/x509",
+ "x509.ExtKeyUsage": "crypto/x509",
+ "x509.ExtKeyUsageAny": "crypto/x509",
+ "x509.ExtKeyUsageClientAuth": "crypto/x509",
+ "x509.ExtKeyUsageCodeSigning": "crypto/x509",
+ "x509.ExtKeyUsageEmailProtection": "crypto/x509",
+ "x509.ExtKeyUsageIPSECEndSystem": "crypto/x509",
+ "x509.ExtKeyUsageIPSECTunnel": "crypto/x509",
+ "x509.ExtKeyUsageIPSECUser": "crypto/x509",
+ "x509.ExtKeyUsageMicrosoftServerGatedCrypto": "crypto/x509",
+ "x509.ExtKeyUsageNetscapeServerGatedCrypto": "crypto/x509",
+ "x509.ExtKeyUsageOCSPSigning": "crypto/x509",
+ "x509.ExtKeyUsageServerAuth": "crypto/x509",
+ "x509.ExtKeyUsageTimeStamping": "crypto/x509",
+ "x509.HostnameError": "crypto/x509",
+ "x509.IncompatibleUsage": "crypto/x509",
+ "x509.IncorrectPasswordError": "crypto/x509",
+ "x509.InsecureAlgorithmError": "crypto/x509",
+ "x509.InvalidReason": "crypto/x509",
+ "x509.IsEncryptedPEMBlock": "crypto/x509",
+ "x509.KeyUsage": "crypto/x509",
+ "x509.KeyUsageCRLSign": "crypto/x509",
+ "x509.KeyUsageCertSign": "crypto/x509",
+ "x509.KeyUsageContentCommitment": "crypto/x509",
+ "x509.KeyUsageDataEncipherment": "crypto/x509",
+ "x509.KeyUsageDecipherOnly": "crypto/x509",
+ "x509.KeyUsageDigitalSignature": "crypto/x509",
+ "x509.KeyUsageEncipherOnly": "crypto/x509",
+ "x509.KeyUsageKeyAgreement": "crypto/x509",
+ "x509.KeyUsageKeyEncipherment": "crypto/x509",
+ "x509.MD2WithRSA": "crypto/x509",
+ "x509.MD5WithRSA": "crypto/x509",
+ "x509.MarshalECPrivateKey": "crypto/x509",
+ "x509.MarshalPKCS1PrivateKey": "crypto/x509",
+ "x509.MarshalPKIXPublicKey": "crypto/x509",
+ "x509.NameMismatch": "crypto/x509",
+ "x509.NewCertPool": "crypto/x509",
+ "x509.NotAuthorizedToSign": "crypto/x509",
+ "x509.PEMCipher": "crypto/x509",
+ "x509.PEMCipher3DES": "crypto/x509",
+ "x509.PEMCipherAES128": "crypto/x509",
+ "x509.PEMCipherAES192": "crypto/x509",
+ "x509.PEMCipherAES256": "crypto/x509",
+ "x509.PEMCipherDES": "crypto/x509",
+ "x509.ParseCRL": "crypto/x509",
+ "x509.ParseCertificate": "crypto/x509",
+ "x509.ParseCertificateRequest": "crypto/x509",
+ "x509.ParseCertificates": "crypto/x509",
+ "x509.ParseDERCRL": "crypto/x509",
+ "x509.ParseECPrivateKey": "crypto/x509",
+ "x509.ParsePKCS1PrivateKey": "crypto/x509",
+ "x509.ParsePKCS8PrivateKey": "crypto/x509",
+ "x509.ParsePKIXPublicKey": "crypto/x509",
+ "x509.PublicKeyAlgorithm": "crypto/x509",
+ "x509.RSA": "crypto/x509",
+ "x509.SHA1WithRSA": "crypto/x509",
+ "x509.SHA256WithRSA": "crypto/x509",
+ "x509.SHA256WithRSAPSS": "crypto/x509",
+ "x509.SHA384WithRSA": "crypto/x509",
+ "x509.SHA384WithRSAPSS": "crypto/x509",
+ "x509.SHA512WithRSA": "crypto/x509",
+ "x509.SHA512WithRSAPSS": "crypto/x509",
+ "x509.SignatureAlgorithm": "crypto/x509",
+ "x509.SystemCertPool": "crypto/x509",
+ "x509.SystemRootsError": "crypto/x509",
+ "x509.TooManyIntermediates": "crypto/x509",
+ "x509.UnhandledCriticalExtension": "crypto/x509",
+ "x509.UnknownAuthorityError": "crypto/x509",
+ "x509.UnknownPublicKeyAlgorithm": "crypto/x509",
+ "x509.UnknownSignatureAlgorithm": "crypto/x509",
+ "x509.VerifyOptions": "crypto/x509",
+ "xml.Attr": "encoding/xml",
+ "xml.CharData": "encoding/xml",
+ "xml.Comment": "encoding/xml",
+ "xml.CopyToken": "encoding/xml",
+ "xml.Decoder": "encoding/xml",
+ "xml.Directive": "encoding/xml",
+ "xml.Encoder": "encoding/xml",
+ "xml.EndElement": "encoding/xml",
+ "xml.Escape": "encoding/xml",
+ "xml.EscapeText": "encoding/xml",
+ "xml.HTMLAutoClose": "encoding/xml",
+ "xml.HTMLEntity": "encoding/xml",
+ "xml.Header": "encoding/xml",
+ "xml.Marshal": "encoding/xml",
+ "xml.MarshalIndent": "encoding/xml",
+ "xml.Marshaler": "encoding/xml",
+ "xml.MarshalerAttr": "encoding/xml",
+ "xml.Name": "encoding/xml",
+ "xml.NewDecoder": "encoding/xml",
+ "xml.NewEncoder": "encoding/xml",
+ "xml.ProcInst": "encoding/xml",
+ "xml.StartElement": "encoding/xml",
+ "xml.SyntaxError": "encoding/xml",
+ "xml.TagPathError": "encoding/xml",
+ "xml.Token": "encoding/xml",
+ "xml.Unmarshal": "encoding/xml",
+ "xml.UnmarshalError": "encoding/xml",
+ "xml.Unmarshaler": "encoding/xml",
+ "xml.UnmarshalerAttr": "encoding/xml",
+ "xml.UnsupportedTypeError": "encoding/xml",
+ "zip.Compressor": "archive/zip",
+ "zip.Decompressor": "archive/zip",
+ "zip.Deflate": "archive/zip",
+ "zip.ErrAlgorithm": "archive/zip",
+ "zip.ErrChecksum": "archive/zip",
+ "zip.ErrFormat": "archive/zip",
+ "zip.File": "archive/zip",
+ "zip.FileHeader": "archive/zip",
+ "zip.FileInfoHeader": "archive/zip",
+ "zip.NewReader": "archive/zip",
+ "zip.NewWriter": "archive/zip",
+ "zip.OpenReader": "archive/zip",
+ "zip.ReadCloser": "archive/zip",
+ "zip.Reader": "archive/zip",
+ "zip.RegisterCompressor": "archive/zip",
+ "zip.RegisterDecompressor": "archive/zip",
+ "zip.Store": "archive/zip",
+ "zip.Writer": "archive/zip",
+ "zlib.BestCompression": "compress/zlib",
+ "zlib.BestSpeed": "compress/zlib",
+ "zlib.DefaultCompression": "compress/zlib",
+ "zlib.ErrChecksum": "compress/zlib",
+ "zlib.ErrDictionary": "compress/zlib",
+ "zlib.ErrHeader": "compress/zlib",
+ "zlib.HuffmanOnly": "compress/zlib",
+ "zlib.NewReader": "compress/zlib",
+ "zlib.NewReaderDict": "compress/zlib",
+ "zlib.NewWriter": "compress/zlib",
+ "zlib.NewWriterLevel": "compress/zlib",
+ "zlib.NewWriterLevelDict": "compress/zlib",
+ "zlib.NoCompression": "compress/zlib",
+ "zlib.Resetter": "compress/zlib",
+ "zlib.Writer": "compress/zlib",
+
+ "unsafe.Alignof": "unsafe",
+ "unsafe.ArbitraryType": "unsafe",
+ "unsafe.Offsetof": "unsafe",
+ "unsafe.Pointer": "unsafe",
+ "unsafe.Sizeof": "unsafe",
+}