From 45b1c5485de0c97bc3da8e6402c7eda4b5360b85 Mon Sep 17 00:00:00 2001 From: Tim Hockin Date: Fri, 12 Aug 2022 21:25:13 -0700 Subject: [PATCH] Move tools into a tools/ subdir This avoids vendoring all the deps in the root. --- Makefile | 14 +- go.mod | 55 +- go.sum | 387 ---- tools/go.mod | 74 + tools/go.sum | 856 +++++++++ tools.go => tools/tools.go | 0 vendor/github.com/emirpasic/gods/LICENSE | 41 - .../emirpasic/gods/containers/containers.go | 35 - .../emirpasic/gods/containers/enumerable.go | 61 - .../emirpasic/gods/containers/iterator.go | 109 -- .../gods/containers/serialization.go | 17 - .../gods/lists/arraylist/arraylist.go | 228 --- .../gods/lists/arraylist/enumerable.go | 79 - .../gods/lists/arraylist/iterator.go | 83 - .../gods/lists/arraylist/serialization.go | 29 - .../github.com/emirpasic/gods/lists/lists.go | 33 - .../gods/trees/binaryheap/binaryheap.go | 163 -- .../gods/trees/binaryheap/iterator.go | 84 - .../gods/trees/binaryheap/serialization.go | 22 - .../github.com/emirpasic/gods/trees/trees.go | 21 - .../emirpasic/gods/utils/comparator.go | 251 --- .../github.com/emirpasic/gods/utils/sort.go | 29 - .../github.com/emirpasic/gods/utils/utils.go | 47 - vendor/github.com/golang/glog/LICENSE | 191 -- vendor/github.com/golang/glog/README | 44 - vendor/github.com/golang/glog/glog.go | 1180 ------------ vendor/github.com/golang/glog/glog_file.go | 124 -- vendor/github.com/golang/groupcache/LICENSE | 191 -- .../github.com/golang/groupcache/lru/lru.go | 133 -- .../google/go-licenses/CONTRIBUTING.md | 28 - .../github.com/google/go-licenses/Dockerfile | 34 - vendor/github.com/google/go-licenses/LICENSE | 202 -- vendor/github.com/google/go-licenses/Makefile | 32 - .../github.com/google/go-licenses/README.md | 212 --- vendor/github.com/google/go-licenses/check.go | 62 - vendor/github.com/google/go-licenses/csv.go | 81 - .../internal/third_party/pkgsite/LICENSE | 24 - .../internal/third_party/pkgsite/PATENTS | 20 - .../third_party/pkgsite/derrors/derrors.go | 47 - .../third_party/pkgsite/source/meta-tags.go | 161 -- .../third_party/pkgsite/source/source.go | 946 ---------- .../pkgsite/source/source_patch.go | 33 - .../third_party/pkgsite/stdlib/stdlib.go | 111 -- .../third_party/pkgsite/version/version.go | 24 - .../google/go-licenses/licenses/classifier.go | 101 - .../google/go-licenses/licenses/find.go | 95 - .../google/go-licenses/licenses/git.go | 100 - .../google/go-licenses/licenses/library.go | 290 --- .../google/go-licenses/licenses/module.go | 69 - vendor/github.com/google/go-licenses/main.go | 85 - vendor/github.com/google/go-licenses/save.go | 155 -- .../google/licenseclassifier/.travis.yml | 14 - .../google/licenseclassifier/CHANGELOG | 14 - .../google/licenseclassifier/CONTRIBUTING.md | 24 - .../google/licenseclassifier/LICENSE | 202 -- .../google/licenseclassifier/README.md | 66 - .../google/licenseclassifier/classifier.go | 472 ----- .../file_system_resources.go | 34 - .../google/licenseclassifier/forbidden.go | 48 - .../licenseclassifier/internal/sets/sets.go | 20 - .../internal/sets/stringset.go | 228 --- .../google/licenseclassifier/license_type.go | 394 ---- .../licenseclassifier/licenses/0BSD.txt | 12 - .../licenses/AFL-1.1.header.txt | 1 - .../licenseclassifier/licenses/AFL-1.1.txt | 83 - .../licenses/AFL-1.2.header.txt | 1 - .../licenseclassifier/licenses/AFL-1.2.txt | 90 - .../licenses/AFL-2.0.header.txt | 1 - .../licenseclassifier/licenses/AFL-2.0.txt | 159 -- .../licenses/AFL-2.1.header.txt | 1 - .../licenseclassifier/licenses/AFL-2.1.txt | 160 -- .../licenses/AFL-3.0.header.txt | 1 - .../licenseclassifier/licenses/AFL-3.0.txt | 173 -- .../licenseclassifier/licenses/AGPL-1.0.txt | 279 --- .../licenses/AGPL-3.0.header.txt | 12 - .../licenseclassifier/licenses/AGPL-3.0.txt | 619 ------ .../licenses/APSL-1.0.header.txt | 14 - .../licenseclassifier/licenses/APSL-1.0.txt | 276 --- .../licenses/APSL-1.1.header.txt | 14 - .../licenseclassifier/licenses/APSL-1.1.txt | 278 --- .../licenses/APSL-1.2.header.txt | 14 - .../licenseclassifier/licenses/APSL-1.2.txt | 254 --- .../licenses/APSL-2.0.header.txt | 14 - .../licenseclassifier/licenses/APSL-2.0.txt | 252 --- .../licenseclassifier/licenses/Apache-1.0.txt | 36 - .../licenseclassifier/licenses/Apache-1.1.txt | 40 - .../licenses/Apache-2.0.header.txt | 11 - .../licenseclassifier/licenses/Apache-2.0.txt | 143 -- .../licenses/Artistic-1.0-Perl.txt | 85 - .../licenses/Artistic-1.0-cl8.txt | 89 - .../licenses/Artistic-1.0.txt | 83 - .../licenses/Artistic-2.0.txt | 181 -- .../google/licenseclassifier/licenses/BCL.txt | 69 - .../licenses/BSD-2-Clause-FreeBSD.txt | 24 - .../licenses/BSD-2-Clause-NetBSD.txt | 24 - .../licenses/BSD-2-Clause.txt | 21 - .../licenses/BSD-3-Clause-Attribution.txt | 22 - .../licenses/BSD-3-Clause-Clear.txt | 28 - .../licenses/BSD-3-Clause-LBNL.txt | 41 - .../licenses/BSD-3-Clause.txt | 24 - .../licenses/BSD-4-Clause-UC.txt | 29 - .../licenses/BSD-4-Clause.txt | 29 - .../licenses/BSD-Protection.txt | 128 -- .../licenseclassifier/licenses/BSL-1.0.txt | 24 - .../licenseclassifier/licenses/Beerware.txt | 5 - .../licenseclassifier/licenses/CC-BY-1.0.txt | 197 -- .../licenseclassifier/licenses/CC-BY-2.0.txt | 214 --- .../licenseclassifier/licenses/CC-BY-2.5.txt | 217 --- .../licenseclassifier/licenses/CC-BY-3.0.txt | 319 ---- .../licenseclassifier/licenses/CC-BY-4.0.txt | 396 ---- .../licenses/CC-BY-NC-1.0.txt | 73 - .../licenses/CC-BY-NC-2.0.txt | 80 - .../licenses/CC-BY-NC-2.5.txt | 79 - .../licenses/CC-BY-NC-3.0.txt | 334 ---- .../licenses/CC-BY-NC-4.0.txt | 408 ---- .../licenses/CC-BY-NC-ND-1.0.txt | 73 - .../licenses/CC-BY-NC-ND-2.0.txt | 75 - .../licenses/CC-BY-NC-ND-2.5.txt | 76 - .../licenses/CC-BY-NC-ND-3.0.txt | 308 --- .../licenses/CC-BY-NC-ND-4.0.txt | 403 ---- .../licenses/CC-BY-NC-SA-1.0.txt | 81 - .../licenses/CC-BY-NC-SA-2.0.txt | 86 - .../licenses/CC-BY-NC-SA-2.5.txt | 86 - .../licenses/CC-BY-NC-SA-3.0.txt | 360 ---- .../licenses/CC-BY-NC-SA-4.0.txt | 438 ----- .../licenses/CC-BY-ND-1.0.txt | 179 -- .../licenses/CC-BY-ND-2.0.txt | 197 -- .../licenses/CC-BY-ND-2.5.txt | 200 -- .../licenses/CC-BY-ND-3.0.txt | 293 --- .../licenses/CC-BY-ND-4.0.txt | 390 ---- .../licenses/CC-BY-SA-1.0.txt | 212 --- .../licenses/CC-BY-SA-2.0.txt | 238 --- .../licenses/CC-BY-SA-2.5.txt | 241 --- .../licenses/CC-BY-SA-3.0.txt | 359 ---- .../licenses/CC-BY-SA-4.0.txt | 428 ----- .../licenseclassifier/licenses/CC0-1.0.txt | 86 - .../licenseclassifier/licenses/CDDL-1.0.txt | 318 ---- .../licenseclassifier/licenses/CDDL-1.1.txt | 333 ---- .../licenses/CPAL-1.0.header.txt | 28 - .../licenseclassifier/licenses/CPAL-1.0.txt | 512 ----- .../licenseclassifier/licenses/CPL-1.0.txt | 220 --- .../licenses/Commons-Clause.txt | 13 - .../licenseclassifier/licenses/EPL-1.0.txt | 212 --- .../licenseclassifier/licenses/EPL-2.0.txt | 277 --- .../licenseclassifier/licenses/EUPL-1.0.txt | 284 --- .../licenseclassifier/licenses/EUPL-1.1.txt | 265 --- .../google/licenseclassifier/licenses/FTL.txt | 141 -- .../licenses/Facebook-2-Clause.txt | 19 - .../licenses/Facebook-3-Clause.txt | 20 - .../licenses/Facebook-Examples.txt | 9 - .../licenseclassifier/licenses/FreeImage.txt | 117 -- .../licenses/GPL-1.0.header.txt | 13 - .../licenseclassifier/licenses/GPL-1.0.txt | 191 -- .../licenses/GPL-2.0-with-GCC-exception.txt | 290 --- .../GPL-2.0-with-autoconf-exception.txt | 308 --- .../licenses/GPL-2.0-with-bison-exception.txt | 294 --- .../GPL-2.0-with-classpath-exception.txt | 297 --- .../licenses/GPL-2.0-with-font-exception.txt | 291 --- .../licenses/GPL-2.0.header.txt | 13 - .../licenseclassifier/licenses/GPL-2.0.txt | 280 --- .../licenses/GPL-3.0-with-GCC-exception.txt | 75 - .../GPL-3.0-with-autoconf-exception.txt | 44 - .../licenses/GPL-3.0.header.txt | 12 - .../licenseclassifier/licenses/GPL-3.0.txt | 621 ------ .../licenses/GUST-Font-License.txt | 28 - .../licenseclassifier/licenses/IPL-1.0.txt | 371 ---- .../google/licenseclassifier/licenses/ISC.txt | 12 - .../licenses/ImageMagick.header.txt | 13 - .../licenses/ImageMagick.txt | 149 -- .../licenses/LGPL-2.0.header.txt | 12 - .../licenseclassifier/licenses/LGPL-2.0.txt | 397 ---- .../licenses/LGPL-2.1.header.txt | 13 - .../licenseclassifier/licenses/LGPL-2.1.txt | 458 ----- .../licenses/LGPL-3.0.header.txt | 12 - .../licenseclassifier/licenses/LGPL-3.0.txt | 165 -- .../licenseclassifier/licenses/LGPLLR.txt | 180 -- .../licenseclassifier/licenses/LPL-1.0.txt | 218 --- .../licenseclassifier/licenses/LPL-1.02.txt | 220 --- .../licenseclassifier/licenses/LPPL-1.3c.txt | 415 ---- .../licenseclassifier/licenses/Libpng.txt | 127 -- .../licenseclassifier/licenses/Lil-1.0.txt | 20 - .../licenses/Linux-OpenIB.txt | 17 - .../google/licenseclassifier/licenses/MIT.txt | 18 - .../licenses/MPL-1.0.header.txt | 14 - .../licenseclassifier/licenses/MPL-1.0.txt | 344 ---- .../licenses/MPL-1.1.header.txt | 25 - .../licenseclassifier/licenses/MPL-1.1.txt | 429 ----- .../MPL-2.0-no-copyleft-exception.header.txt | 6 - .../licenses/MPL-2.0.header.txt | 3 - .../licenseclassifier/licenses/MPL-2.0.txt | 317 ---- .../licenseclassifier/licenses/MS-PL.txt | 53 - .../licenseclassifier/licenses/NCSA.txt | 28 - .../licenseclassifier/licenses/NPL-1.0.txt | 378 ---- .../licenseclassifier/licenses/NPL-1.1.txt | 522 ----- .../licenseclassifier/licenses/OFL-1.1.txt | 85 - .../licenseclassifier/licenses/OSL-1.0.txt | 153 -- .../licenseclassifier/licenses/OSL-1.1.txt | 162 -- .../licenseclassifier/licenses/OSL-2.0.txt | 167 -- .../licenseclassifier/licenses/OSL-2.1.txt | 167 -- .../licenses/OSL-3.0.header.txt | 5 - .../licenseclassifier/licenses/OSL-3.0.txt | 173 -- .../licenseclassifier/licenses/OpenSSL.txt | 89 - .../licenseclassifier/licenses/OpenVision.txt | 33 - .../licenseclassifier/licenses/PHP-3.0.txt | 43 - .../licenseclassifier/licenses/PHP-3.01.txt | 41 - .../google/licenseclassifier/licenses/PIL.txt | 24 - .../licenseclassifier/licenses/PostgreSQL.txt | 14 - .../licenses/Python-2.0-complete.txt | 94 - .../licenseclassifier/licenses/Python-2.0.txt | 17 - .../licenseclassifier/licenses/QPL-1.0.txt | 83 - .../licenseclassifier/licenses/README.md | 28 - .../licenseclassifier/licenses/Ruby.txt | 38 - .../licenses/SGI-B-1.0.header.txt | 20 - .../licenseclassifier/licenses/SGI-B-1.0.txt | 234 --- .../licenses/SGI-B-1.1.header.txt | 20 - .../licenseclassifier/licenses/SGI-B-1.1.txt | 250 --- .../licenseclassifier/licenses/SGI-B-2.0.txt | 25 - .../licenses/SISSL-1.2.header.txt | 20 - .../licenseclassifier/licenses/SISSL-1.2.txt | 250 --- .../licenses/SISSL.header.txt | 21 - .../licenseclassifier/licenses/SISSL.txt | 281 --- .../licenseclassifier/licenses/Sleepycat.txt | 71 - .../licenseclassifier/licenses/UPL-1.0.txt | 19 - .../licenses/Unicode-DFS-2015.txt | 18 - .../licenses/Unicode-DFS-2016.txt | 21 - .../licenses/Unicode-TOU.txt | 68 - .../licenseclassifier/licenses/Unlicense.txt | 24 - .../licenses/W3C-19980720.txt | 48 - .../licenses/W3C-20150513.txt | 41 - .../licenseclassifier/licenses/W3C.header.txt | 6 - .../google/licenseclassifier/licenses/W3C.txt | 60 - .../licenseclassifier/licenses/WTFPL.txt | 16 - .../google/licenseclassifier/licenses/X11.txt | 27 - .../licenseclassifier/licenses/Xnet.txt | 21 - .../licenseclassifier/licenses/ZPL-1.1.txt | 50 - .../licenseclassifier/licenses/ZPL-2.0.txt | 38 - .../licenseclassifier/licenses/ZPL-2.1.txt | 34 - .../licenseclassifier/licenses/Zend-2.0.txt | 30 - .../licenseclassifier/licenses/Zlib.txt | 19 - .../licenseclassifier/licenses/eGenix.txt | 83 - .../licenseclassifier/licenses/embed.go | 19 - .../licenses/forbidden_licenses.db | Bin 1107122 -> 0 bytes .../licenseclassifier/licenses/licenses.db | Bin 5565366 -> 0 bytes .../licenses/zlib-acknowledgement.txt | 24 - .../stringclassifier/CONTRIBUTING.md | 24 - .../stringclassifier/LICENSE | 202 -- .../stringclassifier/README.md | 65 - .../stringclassifier/classifier.go | 560 ------ .../stringclassifier/internal/pq/priority.go | 111 -- .../stringclassifier/searchset/searchset.go | 491 ----- .../searchset/tokenizer/tokenizer.go | 175 -- .../inconshreveable/mousetrap/LICENSE | 13 - .../inconshreveable/mousetrap/README.md | 23 - .../inconshreveable/mousetrap/trap_others.go | 15 - .../inconshreveable/mousetrap/trap_windows.go | 98 - .../mousetrap/trap_windows_1.4.go | 46 - vendor/github.com/jbenet/go-context/LICENSE | 21 - .../github.com/jbenet/go-context/io/ctxio.go | 120 -- .../kevinburke/ssh_config/.gitattributes | 1 - .../kevinburke/ssh_config/.gitignore | 0 .../github.com/kevinburke/ssh_config/.mailmap | 1 - .../kevinburke/ssh_config/.travis.yml | 14 - .../kevinburke/ssh_config/AUTHORS.txt | 5 - .../github.com/kevinburke/ssh_config/LICENSE | 49 - .../github.com/kevinburke/ssh_config/Makefile | 30 - .../kevinburke/ssh_config/README.md | 81 - .../kevinburke/ssh_config/config.go | 649 ------- .../github.com/kevinburke/ssh_config/lexer.go | 240 --- .../kevinburke/ssh_config/parser.go | 191 -- .../kevinburke/ssh_config/position.go | 25 - .../github.com/kevinburke/ssh_config/token.go | 49 - .../kevinburke/ssh_config/validators.go | 162 -- .../github.com/mitchellh/go-homedir/LICENSE | 21 - .../github.com/mitchellh/go-homedir/README.md | 14 - .../mitchellh/go-homedir/homedir.go | 167 -- vendor/github.com/otiai10/copy/.gitignore | 5 - vendor/github.com/otiai10/copy/LICENSE | 21 - vendor/github.com/otiai10/copy/README.md | 62 - vendor/github.com/otiai10/copy/copy.go | 228 --- .../otiai10/copy/copy_namedpipes.go | 17 - .../otiai10/copy/copy_namedpipes_windows.go | 12 - vendor/github.com/otiai10/copy/options.go | 86 - .../github.com/otiai10/copy/preserve_times.go | 11 - vendor/github.com/otiai10/copy/stat_times.go | 21 - .../otiai10/copy/stat_times_darwin.go | 19 - .../otiai10/copy/stat_times_freebsd.go | 19 - .../otiai10/copy/stat_times_windows.go | 18 - vendor/github.com/otiai10/copy/test_setup.go | 17 - .../otiai10/copy/test_setup_windows.go | 15 - vendor/github.com/sergi/go-diff/AUTHORS | 25 - vendor/github.com/sergi/go-diff/CONTRIBUTORS | 32 - vendor/github.com/sergi/go-diff/LICENSE | 20 - .../sergi/go-diff/diffmatchpatch/diff.go | 1352 ------------- .../go-diff/diffmatchpatch/diffmatchpatch.go | 46 - .../sergi/go-diff/diffmatchpatch/match.go | 160 -- .../sergi/go-diff/diffmatchpatch/mathutil.go | 23 - .../diffmatchpatch/operation_string.go | 17 - .../sergi/go-diff/diffmatchpatch/patch.go | 556 ------ .../go-diff/diffmatchpatch/stringutil.go | 106 -- vendor/github.com/spf13/cobra/.gitignore | 39 - vendor/github.com/spf13/cobra/.golangci.yml | 48 - vendor/github.com/spf13/cobra/.mailmap | 3 - vendor/github.com/spf13/cobra/CHANGELOG.md | 51 - vendor/github.com/spf13/cobra/CONDUCT.md | 37 - vendor/github.com/spf13/cobra/CONTRIBUTING.md | 50 - vendor/github.com/spf13/cobra/LICENSE.txt | 174 -- vendor/github.com/spf13/cobra/MAINTAINERS | 13 - vendor/github.com/spf13/cobra/Makefile | 35 - vendor/github.com/spf13/cobra/README.md | 111 -- vendor/github.com/spf13/cobra/args.go | 121 -- .../spf13/cobra/bash_completions.go | 697 ------- .../spf13/cobra/bash_completions.md | 93 - .../spf13/cobra/bash_completionsV2.go | 331 ---- vendor/github.com/spf13/cobra/cobra.go | 222 --- vendor/github.com/spf13/cobra/command.go | 1680 ----------------- .../github.com/spf13/cobra/command_notwin.go | 6 - vendor/github.com/spf13/cobra/command_win.go | 27 - vendor/github.com/spf13/cobra/completions.go | 811 -------- .../spf13/cobra/fish_completions.go | 219 --- .../spf13/cobra/fish_completions.md | 4 - .../spf13/cobra/powershell_completions.go | 285 --- .../spf13/cobra/powershell_completions.md | 3 - .../spf13/cobra/projects_using_cobra.md | 51 - .../spf13/cobra/shell_completions.go | 84 - .../spf13/cobra/shell_completions.md | 548 ------ vendor/github.com/spf13/cobra/user_guide.md | 638 ------- .../github.com/spf13/cobra/zsh_completions.go | 258 --- .../github.com/spf13/cobra/zsh_completions.md | 48 - vendor/github.com/src-d/gcfg/LICENSE | 28 - vendor/github.com/src-d/gcfg/README | 4 - vendor/github.com/src-d/gcfg/doc.go | 145 -- vendor/github.com/src-d/gcfg/errors.go | 41 - vendor/github.com/src-d/gcfg/go1_0.go | 7 - vendor/github.com/src-d/gcfg/go1_2.go | 9 - vendor/github.com/src-d/gcfg/read.go | 273 --- .../github.com/src-d/gcfg/scanner/errors.go | 121 -- .../github.com/src-d/gcfg/scanner/scanner.go | 342 ---- vendor/github.com/src-d/gcfg/set.go | 332 ---- .../github.com/src-d/gcfg/token/position.go | 435 ----- .../github.com/src-d/gcfg/token/serialize.go | 56 - vendor/github.com/src-d/gcfg/token/token.go | 83 - vendor/github.com/src-d/gcfg/types/bool.go | 23 - vendor/github.com/src-d/gcfg/types/doc.go | 4 - vendor/github.com/src-d/gcfg/types/enum.go | 44 - vendor/github.com/src-d/gcfg/types/int.go | 86 - vendor/github.com/src-d/gcfg/types/scan.go | 23 - vendor/github.com/xanzy/ssh-agent/.gitignore | 24 - vendor/github.com/xanzy/ssh-agent/LICENSE | 202 -- vendor/github.com/xanzy/ssh-agent/README.md | 23 - .../xanzy/ssh-agent/pageant_windows.go | 146 -- vendor/github.com/xanzy/ssh-agent/sshagent.go | 49 - .../xanzy/ssh-agent/sshagent_windows.go | 80 - vendor/go.opencensus.io/.gitignore | 9 - vendor/go.opencensus.io/AUTHORS | 1 - vendor/go.opencensus.io/CONTRIBUTING.md | 63 - vendor/go.opencensus.io/LICENSE | 202 -- vendor/go.opencensus.io/Makefile | 97 - vendor/go.opencensus.io/README.md | 267 --- vendor/go.opencensus.io/appveyor.yml | 24 - vendor/go.opencensus.io/internal/internal.go | 37 - vendor/go.opencensus.io/internal/sanitize.go | 50 - .../internal/tagencoding/tagencoding.go | 75 - .../internal/traceinternals.go | 53 - .../go.opencensus.io/metric/metricdata/doc.go | 19 - .../metric/metricdata/exemplar.go | 38 - .../metric/metricdata/label.go | 35 - .../metric/metricdata/metric.go | 46 - .../metric/metricdata/point.go | 193 -- .../metric/metricdata/type_string.go | 16 - .../metric/metricdata/unit.go | 27 - .../metric/metricproducer/manager.go | 78 - .../metric/metricproducer/producer.go | 28 - vendor/go.opencensus.io/opencensus.go | 21 - .../go.opencensus.io/plugin/ochttp/client.go | 117 -- .../plugin/ochttp/client_stats.go | 143 -- vendor/go.opencensus.io/plugin/ochttp/doc.go | 19 - .../plugin/ochttp/propagation/b3/b3.go | 123 -- .../go.opencensus.io/plugin/ochttp/route.go | 61 - .../go.opencensus.io/plugin/ochttp/server.go | 453 ----- .../ochttp/span_annotating_client_trace.go | 169 -- .../go.opencensus.io/plugin/ochttp/stats.go | 292 --- .../go.opencensus.io/plugin/ochttp/trace.go | 244 --- .../plugin/ochttp/wrapped_body.go | 44 - vendor/go.opencensus.io/resource/resource.go | 164 -- vendor/go.opencensus.io/stats/doc.go | 69 - .../go.opencensus.io/stats/internal/record.go | 25 - vendor/go.opencensus.io/stats/measure.go | 109 -- .../go.opencensus.io/stats/measure_float64.go | 55 - .../go.opencensus.io/stats/measure_int64.go | 55 - vendor/go.opencensus.io/stats/record.go | 137 -- vendor/go.opencensus.io/stats/units.go | 26 - .../stats/view/aggregation.go | 123 -- .../stats/view/aggregation_data.go | 336 ---- .../go.opencensus.io/stats/view/collector.go | 86 - vendor/go.opencensus.io/stats/view/doc.go | 47 - vendor/go.opencensus.io/stats/view/export.go | 45 - vendor/go.opencensus.io/stats/view/view.go | 221 --- .../stats/view/view_to_metric.go | 147 -- vendor/go.opencensus.io/stats/view/worker.go | 405 ---- .../stats/view/worker_commands.go | 186 -- vendor/go.opencensus.io/tag/context.go | 43 - vendor/go.opencensus.io/tag/doc.go | 26 - vendor/go.opencensus.io/tag/key.go | 44 - vendor/go.opencensus.io/tag/map.go | 229 --- vendor/go.opencensus.io/tag/map_codec.go | 239 --- vendor/go.opencensus.io/tag/metadata.go | 52 - vendor/go.opencensus.io/tag/profile_19.go | 31 - vendor/go.opencensus.io/tag/profile_not19.go | 23 - vendor/go.opencensus.io/tag/validate.go | 56 - vendor/go.opencensus.io/trace/basetypes.go | 129 -- vendor/go.opencensus.io/trace/config.go | 86 - vendor/go.opencensus.io/trace/doc.go | 53 - vendor/go.opencensus.io/trace/evictedqueue.go | 38 - vendor/go.opencensus.io/trace/export.go | 97 - .../trace/internal/internal.go | 22 - vendor/go.opencensus.io/trace/lrumap.go | 61 - .../trace/propagation/propagation.go | 108 -- vendor/go.opencensus.io/trace/sampling.go | 75 - vendor/go.opencensus.io/trace/spanbucket.go | 130 -- vendor/go.opencensus.io/trace/spanstore.go | 308 --- vendor/go.opencensus.io/trace/status_codes.go | 37 - vendor/go.opencensus.io/trace/trace.go | 595 ------ vendor/go.opencensus.io/trace/trace_api.go | 265 --- vendor/go.opencensus.io/trace/trace_go11.go | 32 - .../go.opencensus.io/trace/trace_nongo11.go | 25 - .../trace/tracestate/tracestate.go | 147 -- vendor/golang.org/x/crypto/AUTHORS | 3 - vendor/golang.org/x/crypto/CONTRIBUTORS | 3 - vendor/golang.org/x/crypto/LICENSE | 27 - vendor/golang.org/x/crypto/PATENTS | 22 - vendor/golang.org/x/crypto/blowfish/block.go | 159 -- vendor/golang.org/x/crypto/blowfish/cipher.go | 99 - vendor/golang.org/x/crypto/blowfish/const.go | 199 -- vendor/golang.org/x/crypto/cast5/cast5.go | 533 ------ .../x/crypto/chacha20/chacha_arm64.go | 17 - .../x/crypto/chacha20/chacha_arm64.s | 308 --- .../x/crypto/chacha20/chacha_generic.go | 398 ---- .../x/crypto/chacha20/chacha_noasm.go | 14 - .../x/crypto/chacha20/chacha_ppc64le.go | 17 - .../x/crypto/chacha20/chacha_ppc64le.s | 450 ----- .../x/crypto/chacha20/chacha_s390x.go | 28 - .../x/crypto/chacha20/chacha_s390x.s | 225 --- vendor/golang.org/x/crypto/chacha20/xor.go | 42 - .../x/crypto/curve25519/curve25519.go | 145 -- .../x/crypto/curve25519/internal/field/README | 7 - .../x/crypto/curve25519/internal/field/fe.go | 416 ---- .../curve25519/internal/field/fe_amd64.go | 16 - .../curve25519/internal/field/fe_amd64.s | 379 ---- .../internal/field/fe_amd64_noasm.go | 12 - .../curve25519/internal/field/fe_arm64.go | 16 - .../curve25519/internal/field/fe_arm64.s | 43 - .../internal/field/fe_arm64_noasm.go | 12 - .../curve25519/internal/field/fe_generic.go | 264 --- .../curve25519/internal/field/sync.checkpoint | 1 - .../crypto/curve25519/internal/field/sync.sh | 19 - vendor/golang.org/x/crypto/ed25519/ed25519.go | 71 - .../x/crypto/internal/poly1305/bits_compat.go | 40 - .../x/crypto/internal/poly1305/bits_go1.13.go | 22 - .../x/crypto/internal/poly1305/mac_noasm.go | 10 - .../x/crypto/internal/poly1305/poly1305.go | 99 - .../x/crypto/internal/poly1305/sum_amd64.go | 48 - .../x/crypto/internal/poly1305/sum_amd64.s | 109 -- .../x/crypto/internal/poly1305/sum_generic.go | 309 --- .../x/crypto/internal/poly1305/sum_ppc64le.go | 48 - .../x/crypto/internal/poly1305/sum_ppc64le.s | 182 -- .../x/crypto/internal/poly1305/sum_s390x.go | 77 - .../x/crypto/internal/poly1305/sum_s390x.s | 504 ----- .../x/crypto/internal/subtle/aliasing.go | 33 - .../crypto/internal/subtle/aliasing_purego.go | 36 - .../x/crypto/openpgp/armor/armor.go | 232 --- .../x/crypto/openpgp/armor/encode.go | 161 -- .../x/crypto/openpgp/canonical_text.go | 59 - .../x/crypto/openpgp/elgamal/elgamal.go | 130 -- .../x/crypto/openpgp/errors/errors.go | 78 - vendor/golang.org/x/crypto/openpgp/keys.go | 693 ------- .../x/crypto/openpgp/packet/compressed.go | 123 -- .../x/crypto/openpgp/packet/config.go | 91 - .../x/crypto/openpgp/packet/encrypted_key.go | 208 -- .../x/crypto/openpgp/packet/literal.go | 89 - .../x/crypto/openpgp/packet/ocfb.go | 143 -- .../openpgp/packet/one_pass_signature.go | 73 - .../x/crypto/openpgp/packet/opaque.go | 162 -- .../x/crypto/openpgp/packet/packet.go | 590 ------ .../x/crypto/openpgp/packet/private_key.go | 385 ---- .../x/crypto/openpgp/packet/public_key.go | 753 -------- .../x/crypto/openpgp/packet/public_key_v3.go | 279 --- .../x/crypto/openpgp/packet/reader.go | 76 - .../x/crypto/openpgp/packet/signature.go | 731 ------- .../x/crypto/openpgp/packet/signature_v3.go | 146 -- .../openpgp/packet/symmetric_key_encrypted.go | 155 -- .../openpgp/packet/symmetrically_encrypted.go | 290 --- .../x/crypto/openpgp/packet/userattribute.go | 91 - .../x/crypto/openpgp/packet/userid.go | 160 -- vendor/golang.org/x/crypto/openpgp/read.go | 448 ----- vendor/golang.org/x/crypto/openpgp/s2k/s2k.go | 279 --- vendor/golang.org/x/crypto/openpgp/write.go | 418 ---- .../golang.org/x/crypto/ssh/agent/client.go | 847 --------- .../golang.org/x/crypto/ssh/agent/forward.go | 103 - .../golang.org/x/crypto/ssh/agent/keyring.go | 241 --- .../golang.org/x/crypto/ssh/agent/server.go | 570 ------ vendor/golang.org/x/crypto/ssh/buffer.go | 97 - vendor/golang.org/x/crypto/ssh/certs.go | 589 ------ vendor/golang.org/x/crypto/ssh/channel.go | 633 ------- vendor/golang.org/x/crypto/ssh/cipher.go | 789 -------- vendor/golang.org/x/crypto/ssh/client.go | 282 --- vendor/golang.org/x/crypto/ssh/client_auth.go | 725 ------- vendor/golang.org/x/crypto/ssh/common.go | 430 ----- vendor/golang.org/x/crypto/ssh/connection.go | 143 -- vendor/golang.org/x/crypto/ssh/doc.go | 22 - vendor/golang.org/x/crypto/ssh/handshake.go | 704 ------- .../ssh/internal/bcrypt_pbkdf/bcrypt_pbkdf.go | 93 - vendor/golang.org/x/crypto/ssh/kex.go | 774 -------- vendor/golang.org/x/crypto/ssh/keys.go | 1447 -------------- .../x/crypto/ssh/knownhosts/knownhosts.go | 540 ------ vendor/golang.org/x/crypto/ssh/mac.go | 61 - vendor/golang.org/x/crypto/ssh/messages.go | 877 --------- vendor/golang.org/x/crypto/ssh/mux.go | 351 ---- vendor/golang.org/x/crypto/ssh/server.go | 752 -------- vendor/golang.org/x/crypto/ssh/session.go | 648 ------- vendor/golang.org/x/crypto/ssh/ssh_gss.go | 139 -- vendor/golang.org/x/crypto/ssh/streamlocal.go | 116 -- vendor/golang.org/x/crypto/ssh/tcpip.go | 474 ----- vendor/golang.org/x/crypto/ssh/transport.go | 357 ---- vendor/golang.org/x/mod/LICENSE | 27 - vendor/golang.org/x/mod/PATENTS | 22 - vendor/golang.org/x/mod/semver/semver.go | 401 ---- vendor/golang.org/x/net/AUTHORS | 3 - vendor/golang.org/x/net/CONTRIBUTORS | 3 - vendor/golang.org/x/net/LICENSE | 27 - vendor/golang.org/x/net/PATENTS | 22 - vendor/golang.org/x/net/context/context.go | 56 - .../x/net/context/ctxhttp/ctxhttp.go | 71 - vendor/golang.org/x/net/context/go17.go | 73 - vendor/golang.org/x/net/context/go19.go | 21 - vendor/golang.org/x/net/context/pre_go17.go | 301 --- vendor/golang.org/x/net/context/pre_go19.go | 110 -- .../golang.org/x/net/internal/socks/client.go | 168 -- .../golang.org/x/net/internal/socks/socks.go | 317 ---- vendor/golang.org/x/net/proxy/dial.go | 54 - vendor/golang.org/x/net/proxy/direct.go | 31 - vendor/golang.org/x/net/proxy/per_host.go | 155 -- vendor/golang.org/x/net/proxy/proxy.go | 149 -- vendor/golang.org/x/net/proxy/socks5.go | 42 - vendor/golang.org/x/sys/cpu/asm_aix_ppc64.s | 18 - vendor/golang.org/x/sys/cpu/byteorder.go | 66 - vendor/golang.org/x/sys/cpu/cpu.go | 287 --- vendor/golang.org/x/sys/cpu/cpu_aix.go | 34 - vendor/golang.org/x/sys/cpu/cpu_arm.go | 73 - vendor/golang.org/x/sys/cpu/cpu_arm64.go | 172 -- vendor/golang.org/x/sys/cpu/cpu_arm64.s | 32 - vendor/golang.org/x/sys/cpu/cpu_gc_arm64.go | 12 - vendor/golang.org/x/sys/cpu/cpu_gc_s390x.go | 22 - vendor/golang.org/x/sys/cpu/cpu_gc_x86.go | 17 - .../golang.org/x/sys/cpu/cpu_gccgo_arm64.go | 12 - .../golang.org/x/sys/cpu/cpu_gccgo_s390x.go | 23 - vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.c | 43 - vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.go | 33 - vendor/golang.org/x/sys/cpu/cpu_linux.go | 16 - vendor/golang.org/x/sys/cpu/cpu_linux_arm.go | 39 - .../golang.org/x/sys/cpu/cpu_linux_arm64.go | 71 - .../golang.org/x/sys/cpu/cpu_linux_mips64x.go | 24 - .../golang.org/x/sys/cpu/cpu_linux_noinit.go | 10 - .../golang.org/x/sys/cpu/cpu_linux_ppc64x.go | 32 - .../golang.org/x/sys/cpu/cpu_linux_s390x.go | 40 - vendor/golang.org/x/sys/cpu/cpu_mips64x.go | 16 - vendor/golang.org/x/sys/cpu/cpu_mipsx.go | 12 - .../golang.org/x/sys/cpu/cpu_netbsd_arm64.go | 173 -- vendor/golang.org/x/sys/cpu/cpu_other_arm.go | 10 - .../golang.org/x/sys/cpu/cpu_other_arm64.go | 10 - .../golang.org/x/sys/cpu/cpu_other_mips64x.go | 13 - vendor/golang.org/x/sys/cpu/cpu_ppc64x.go | 17 - vendor/golang.org/x/sys/cpu/cpu_riscv64.go | 12 - vendor/golang.org/x/sys/cpu/cpu_s390x.go | 172 -- vendor/golang.org/x/sys/cpu/cpu_s390x.s | 58 - vendor/golang.org/x/sys/cpu/cpu_wasm.go | 18 - vendor/golang.org/x/sys/cpu/cpu_x86.go | 145 -- vendor/golang.org/x/sys/cpu/cpu_x86.s | 28 - vendor/golang.org/x/sys/cpu/cpu_zos.go | 10 - vendor/golang.org/x/sys/cpu/cpu_zos_s390x.go | 25 - vendor/golang.org/x/sys/cpu/hwcap_linux.go | 56 - .../golang.org/x/sys/cpu/syscall_aix_gccgo.go | 27 - .../x/sys/cpu/syscall_aix_ppc64_gc.go | 36 - vendor/golang.org/x/sys/execabs/execabs.go | 102 - .../golang.org/x/sys/unix/asm_linux_loong64.s | 54 + .../x/sys/unix/syscall_linux_alarm.go | 14 + vendor/golang.org/x/tools/AUTHORS | 3 - vendor/golang.org/x/tools/CONTRIBUTORS | 3 - vendor/golang.org/x/tools/LICENSE | 27 - vendor/golang.org/x/tools/PATENTS | 22 - .../x/tools/go/gcexportdata/gcexportdata.go | 146 -- .../x/tools/go/gcexportdata/importer.go | 73 - .../x/tools/go/internal/gcimporter/bexport.go | 851 --------- .../x/tools/go/internal/gcimporter/bimport.go | 1053 ----------- .../go/internal/gcimporter/exportdata.go | 99 - .../go/internal/gcimporter/gcimporter.go | 1084 ----------- .../x/tools/go/internal/gcimporter/iexport.go | 1007 ---------- .../x/tools/go/internal/gcimporter/iimport.go | 896 --------- .../go/internal/gcimporter/newInterface10.go | 22 - .../go/internal/gcimporter/newInterface11.go | 14 - .../go/internal/gcimporter/support_go117.go | 16 - .../go/internal/gcimporter/support_go118.go | 23 - .../tools/go/internal/packagesdriver/sizes.go | 49 - vendor/golang.org/x/tools/go/packages/doc.go | 221 --- .../x/tools/go/packages/external.go | 101 - .../golang.org/x/tools/go/packages/golist.go | 1099 ----------- .../x/tools/go/packages/golist_overlay.go | 575 ------ .../x/tools/go/packages/loadmode_string.go | 57 - .../x/tools/go/packages/packages.go | 1244 ------------ .../golang.org/x/tools/go/packages/visit.go | 59 - .../x/tools/internal/event/core/event.go | 85 - .../x/tools/internal/event/core/export.go | 70 - .../x/tools/internal/event/core/fast.go | 77 - .../golang.org/x/tools/internal/event/doc.go | 7 - .../x/tools/internal/event/event.go | 127 -- .../x/tools/internal/event/keys/keys.go | 564 ------ .../x/tools/internal/event/keys/standard.go | 22 - .../x/tools/internal/event/label/label.go | 215 --- .../x/tools/internal/gocommand/invoke.go | 281 --- .../x/tools/internal/gocommand/vendor.go | 109 -- .../x/tools/internal/gocommand/version.go | 51 - .../internal/packagesinternal/packages.go | 28 - .../x/tools/internal/typeparams/common.go | 180 -- .../internal/typeparams/enabled_go117.go | 12 - .../internal/typeparams/enabled_go118.go | 15 - .../x/tools/internal/typeparams/normalize.go | 216 --- .../x/tools/internal/typeparams/termlist.go | 172 -- .../internal/typeparams/typeparams_go117.go | 197 -- .../internal/typeparams/typeparams_go118.go | 151 -- .../x/tools/internal/typeparams/typeterm.go | 170 -- .../tools/internal/typesinternal/errorcode.go | 1526 --------------- .../typesinternal/errorcode_string.go | 167 -- .../x/tools/internal/typesinternal/types.go | 52 - .../tools/internal/typesinternal/types_118.go | 19 - vendor/golang.org/x/xerrors/LICENSE | 27 - vendor/golang.org/x/xerrors/PATENTS | 22 - vendor/golang.org/x/xerrors/README | 2 - vendor/golang.org/x/xerrors/adaptor.go | 193 -- vendor/golang.org/x/xerrors/codereview.cfg | 1 - vendor/golang.org/x/xerrors/doc.go | 22 - vendor/golang.org/x/xerrors/errors.go | 33 - vendor/golang.org/x/xerrors/fmt.go | 187 -- vendor/golang.org/x/xerrors/format.go | 34 - vendor/golang.org/x/xerrors/frame.go | 56 - .../golang.org/x/xerrors/internal/internal.go | 8 - vendor/golang.org/x/xerrors/wrap.go | 106 -- vendor/gopkg.in/src-d/go-billy.v4/.gitignore | 4 - vendor/gopkg.in/src-d/go-billy.v4/.travis.yml | 17 - vendor/gopkg.in/src-d/go-billy.v4/DCO | 25 - vendor/gopkg.in/src-d/go-billy.v4/LICENSE | 201 -- vendor/gopkg.in/src-d/go-billy.v4/MAINTAINERS | 1 - vendor/gopkg.in/src-d/go-billy.v4/Makefile | 25 - vendor/gopkg.in/src-d/go-billy.v4/README.md | 72 - .../gopkg.in/src-d/go-billy.v4/appveyor.yml | 15 - vendor/gopkg.in/src-d/go-billy.v4/fs.go | 202 -- .../src-d/go-billy.v4/helper/chroot/chroot.go | 242 --- .../go-billy.v4/helper/polyfill/polyfill.go | 105 -- vendor/gopkg.in/src-d/go-billy.v4/osfs/os.go | 139 -- .../src-d/go-billy.v4/osfs/os_posix.go | 21 - .../src-d/go-billy.v4/osfs/os_windows.go | 57 - .../gopkg.in/src-d/go-billy.v4/util/glob.go | 111 -- .../gopkg.in/src-d/go-billy.v4/util/util.go | 224 --- vendor/gopkg.in/src-d/go-git.v4/.gitignore | 4 - vendor/gopkg.in/src-d/go-git.v4/.travis.yml | 37 - .../src-d/go-git.v4/CODE_OF_CONDUCT.md | 74 - .../gopkg.in/src-d/go-git.v4/COMPATIBILITY.md | 111 -- .../gopkg.in/src-d/go-git.v4/CONTRIBUTING.md | 59 - vendor/gopkg.in/src-d/go-git.v4/DCO | 36 - vendor/gopkg.in/src-d/go-git.v4/LICENSE | 201 -- vendor/gopkg.in/src-d/go-git.v4/MAINTAINERS | 3 - vendor/gopkg.in/src-d/go-git.v4/Makefile | 52 - vendor/gopkg.in/src-d/go-git.v4/README.md | 123 -- vendor/gopkg.in/src-d/go-git.v4/appveyor.yml | 21 - vendor/gopkg.in/src-d/go-git.v4/blame.go | 302 --- vendor/gopkg.in/src-d/go-git.v4/common.go | 22 - .../gopkg.in/src-d/go-git.v4/config/branch.go | 90 - .../gopkg.in/src-d/go-git.v4/config/config.go | 407 ---- .../src-d/go-git.v4/config/modules.go | 139 -- .../src-d/go-git.v4/config/refspec.go | 150 -- vendor/gopkg.in/src-d/go-git.v4/doc.go | 10 - .../go-git.v4/internal/revision/parser.go | 622 ------ .../go-git.v4/internal/revision/scanner.go | 117 -- .../go-git.v4/internal/revision/token.go | 28 - .../src-d/go-git.v4/internal/url/url.go | 37 - .../gopkg.in/src-d/go-git.v4/object_walker.go | 104 - vendor/gopkg.in/src-d/go-git.v4/options.go | 492 ----- .../go-git.v4/plumbing/cache/buffer_lru.go | 98 - .../src-d/go-git.v4/plumbing/cache/common.go | 39 - .../go-git.v4/plumbing/cache/object_lru.go | 101 - .../src-d/go-git.v4/plumbing/error.go | 35 - .../go-git.v4/plumbing/filemode/filemode.go | 188 -- .../plumbing/format/config/common.go | 99 - .../plumbing/format/config/decoder.go | 37 - .../go-git.v4/plumbing/format/config/doc.go | 122 -- .../plumbing/format/config/encoder.go | 77 - .../plumbing/format/config/option.go | 117 -- .../plumbing/format/config/section.go | 146 -- .../go-git.v4/plumbing/format/diff/patch.go | 58 - .../plumbing/format/diff/unified_encoder.go | 360 ---- .../plumbing/format/gitignore/dir.go | 136 -- .../plumbing/format/gitignore/doc.go | 70 - .../plumbing/format/gitignore/matcher.go | 30 - .../plumbing/format/gitignore/pattern.go | 153 -- .../plumbing/format/idxfile/decoder.go | 177 -- .../go-git.v4/plumbing/format/idxfile/doc.go | 128 -- .../plumbing/format/idxfile/encoder.go | 142 -- .../plumbing/format/idxfile/idxfile.go | 346 ---- .../plumbing/format/idxfile/writer.go | 186 -- .../plumbing/format/index/decoder.go | 477 ----- .../go-git.v4/plumbing/format/index/doc.go | 360 ---- .../plumbing/format/index/encoder.go | 150 -- .../go-git.v4/plumbing/format/index/index.go | 213 --- .../go-git.v4/plumbing/format/index/match.go | 186 -- .../go-git.v4/plumbing/format/objfile/doc.go | 2 - .../plumbing/format/objfile/reader.go | 114 -- .../plumbing/format/objfile/writer.go | 109 -- .../plumbing/format/packfile/common.go | 78 - .../plumbing/format/packfile/delta_index.go | 297 --- .../format/packfile/delta_selector.go | 369 ---- .../plumbing/format/packfile/diff_delta.go | 200 -- .../go-git.v4/plumbing/format/packfile/doc.go | 39 - .../plumbing/format/packfile/encoder.go | 219 --- .../plumbing/format/packfile/error.go | 30 - .../plumbing/format/packfile/fsobject.go | 116 -- .../plumbing/format/packfile/object_pack.go | 164 -- .../plumbing/format/packfile/packfile.go | 562 ------ .../plumbing/format/packfile/parser.go | 483 ----- .../plumbing/format/packfile/patch_delta.go | 229 --- .../plumbing/format/packfile/scanner.go | 466 ----- .../plumbing/format/pktline/encoder.go | 122 -- .../plumbing/format/pktline/scanner.go | 134 -- .../gopkg.in/src-d/go-git.v4/plumbing/hash.go | 73 - .../src-d/go-git.v4/plumbing/memory.go | 61 - .../src-d/go-git.v4/plumbing/object.go | 111 -- .../src-d/go-git.v4/plumbing/object/blob.go | 144 -- .../src-d/go-git.v4/plumbing/object/change.go | 157 -- .../plumbing/object/change_adaptor.go | 61 - .../src-d/go-git.v4/plumbing/object/commit.go | 430 ----- .../plumbing/object/commit_walker.go | 327 ---- .../plumbing/object/commit_walker_bfs.go | 100 - .../object/commit_walker_bfs_filtered.go | 176 -- .../plumbing/object/commit_walker_ctime.go | 103 - .../plumbing/object/commit_walker_file.go | 145 -- .../src-d/go-git.v4/plumbing/object/common.go | 12 - .../go-git.v4/plumbing/object/difftree.go | 37 - .../src-d/go-git.v4/plumbing/object/file.go | 137 -- .../go-git.v4/plumbing/object/merge_base.go | 210 --- .../src-d/go-git.v4/plumbing/object/object.go | 237 --- .../src-d/go-git.v4/plumbing/object/patch.go | 346 ---- .../src-d/go-git.v4/plumbing/object/tag.go | 357 ---- .../src-d/go-git.v4/plumbing/object/tree.go | 520 ----- .../go-git.v4/plumbing/object/treenoder.go | 136 -- .../plumbing/protocol/packp/advrefs.go | 203 -- .../plumbing/protocol/packp/advrefs_decode.go | 288 --- .../plumbing/protocol/packp/advrefs_encode.go | 176 -- .../protocol/packp/capability/capability.go | 252 --- .../protocol/packp/capability/list.go | 196 -- .../plumbing/protocol/packp/common.go | 70 - .../go-git.v4/plumbing/protocol/packp/doc.go | 724 ------- .../plumbing/protocol/packp/report_status.go | 165 -- .../plumbing/protocol/packp/shallowupd.go | 92 - .../protocol/packp/sideband/common.go | 33 - .../plumbing/protocol/packp/sideband/demux.go | 148 -- .../plumbing/protocol/packp/sideband/doc.go | 31 - .../plumbing/protocol/packp/sideband/muxer.go | 65 - .../plumbing/protocol/packp/srvresp.go | 127 -- .../plumbing/protocol/packp/ulreq.go | 168 -- .../plumbing/protocol/packp/ulreq_decode.go | 257 --- .../plumbing/protocol/packp/ulreq_encode.go | 145 -- .../plumbing/protocol/packp/updreq.go | 122 -- .../plumbing/protocol/packp/updreq_decode.go | 250 --- .../plumbing/protocol/packp/updreq_encode.go | 75 - .../plumbing/protocol/packp/uppackreq.go | 98 - .../plumbing/protocol/packp/uppackresp.go | 109 -- .../src-d/go-git.v4/plumbing/reference.go | 209 -- .../src-d/go-git.v4/plumbing/revision.go | 11 - .../go-git.v4/plumbing/revlist/revlist.go | 230 --- .../src-d/go-git.v4/plumbing/storer/doc.go | 2 - .../src-d/go-git.v4/plumbing/storer/index.go | 9 - .../src-d/go-git.v4/plumbing/storer/object.go | 288 --- .../go-git.v4/plumbing/storer/reference.go | 240 --- .../go-git.v4/plumbing/storer/shallow.go | 10 - .../src-d/go-git.v4/plumbing/storer/storer.go | 15 - .../plumbing/transport/client/client.go | 48 - .../go-git.v4/plumbing/transport/common.go | 274 --- .../plumbing/transport/file/client.go | 156 -- .../plumbing/transport/file/server.go | 53 - .../plumbing/transport/git/common.go | 109 -- .../plumbing/transport/http/common.go | 281 --- .../plumbing/transport/http/receive_pack.go | 106 -- .../plumbing/transport/http/upload_pack.go | 123 -- .../transport/internal/common/common.go | 467 ----- .../transport/internal/common/server.go | 73 - .../plumbing/transport/server/loader.go | 64 - .../plumbing/transport/server/server.go | 422 ----- .../plumbing/transport/ssh/auth_method.go | 322 ---- .../plumbing/transport/ssh/common.go | 228 --- vendor/gopkg.in/src-d/go-git.v4/prune.go | 66 - vendor/gopkg.in/src-d/go-git.v4/references.go | 264 --- vendor/gopkg.in/src-d/go-git.v4/remote.go | 1114 ----------- vendor/gopkg.in/src-d/go-git.v4/repository.go | 1545 --------------- vendor/gopkg.in/src-d/go-git.v4/status.go | 79 - .../go-git.v4/storage/filesystem/config.go | 61 - .../storage/filesystem/deltaobject.go | 37 - .../storage/filesystem/dotgit/dotgit.go | 1099 ----------- .../dotgit/dotgit_rewrite_packed_refs.go | 81 - .../filesystem/dotgit/dotgit_setref.go | 90 - .../storage/filesystem/dotgit/writers.go | 284 --- .../go-git.v4/storage/filesystem/index.go | 54 - .../go-git.v4/storage/filesystem/module.go | 20 - .../go-git.v4/storage/filesystem/object.go | 815 -------- .../go-git.v4/storage/filesystem/reference.go | 44 - .../go-git.v4/storage/filesystem/shallow.go | 54 - .../go-git.v4/storage/filesystem/storage.go | 73 - .../src-d/go-git.v4/storage/memory/storage.go | 320 ---- .../src-d/go-git.v4/storage/storer.go | 30 - vendor/gopkg.in/src-d/go-git.v4/submodule.go | 357 ---- .../src-d/go-git.v4/utils/binary/read.go | 180 -- .../src-d/go-git.v4/utils/binary/write.go | 50 - .../src-d/go-git.v4/utils/diff/diff.go | 61 - .../src-d/go-git.v4/utils/ioutil/common.go | 170 -- .../go-git.v4/utils/merkletrie/change.go | 149 -- .../go-git.v4/utils/merkletrie/difftree.go | 424 ----- .../src-d/go-git.v4/utils/merkletrie/doc.go | 34 - .../go-git.v4/utils/merkletrie/doubleiter.go | 187 -- .../utils/merkletrie/filesystem/node.go | 196 -- .../go-git.v4/utils/merkletrie/index/node.go | 90 - .../utils/merkletrie/internal/frame/frame.go | 91 - .../src-d/go-git.v4/utils/merkletrie/iter.go | 216 --- .../go-git.v4/utils/merkletrie/noder/noder.go | 59 - .../go-git.v4/utils/merkletrie/noder/path.go | 90 - vendor/gopkg.in/src-d/go-git.v4/worktree.go | 954 ---------- .../gopkg.in/src-d/go-git.v4/worktree_bsd.go | 26 - .../src-d/go-git.v4/worktree_commit.go | 228 --- .../src-d/go-git.v4/worktree_linux.go | 26 - .../src-d/go-git.v4/worktree_status.go | 660 ------- .../src-d/go-git.v4/worktree_unix_other.go | 26 - .../src-d/go-git.v4/worktree_windows.go | 35 - vendor/gopkg.in/warnings.v0/LICENSE | 24 - vendor/gopkg.in/warnings.v0/README | 77 - vendor/gopkg.in/warnings.v0/warnings.go | 194 -- vendor/modules.txt | 346 +--- 841 files changed, 1011 insertions(+), 135306 deletions(-) create mode 100644 tools/go.mod create mode 100644 tools/go.sum rename tools.go => tools/tools.go (100%) delete mode 100644 vendor/github.com/emirpasic/gods/LICENSE delete mode 100644 vendor/github.com/emirpasic/gods/containers/containers.go delete mode 100644 vendor/github.com/emirpasic/gods/containers/enumerable.go delete mode 100644 vendor/github.com/emirpasic/gods/containers/iterator.go delete mode 100644 vendor/github.com/emirpasic/gods/containers/serialization.go delete mode 100644 vendor/github.com/emirpasic/gods/lists/arraylist/arraylist.go delete mode 100644 vendor/github.com/emirpasic/gods/lists/arraylist/enumerable.go delete mode 100644 vendor/github.com/emirpasic/gods/lists/arraylist/iterator.go delete mode 100644 vendor/github.com/emirpasic/gods/lists/arraylist/serialization.go delete mode 100644 vendor/github.com/emirpasic/gods/lists/lists.go delete mode 100644 vendor/github.com/emirpasic/gods/trees/binaryheap/binaryheap.go delete mode 100644 vendor/github.com/emirpasic/gods/trees/binaryheap/iterator.go delete mode 100644 vendor/github.com/emirpasic/gods/trees/binaryheap/serialization.go delete mode 100644 vendor/github.com/emirpasic/gods/trees/trees.go delete mode 100644 vendor/github.com/emirpasic/gods/utils/comparator.go delete mode 100644 vendor/github.com/emirpasic/gods/utils/sort.go delete mode 100644 vendor/github.com/emirpasic/gods/utils/utils.go delete mode 100644 vendor/github.com/golang/glog/LICENSE delete mode 100644 vendor/github.com/golang/glog/README delete mode 100644 vendor/github.com/golang/glog/glog.go delete mode 100644 vendor/github.com/golang/glog/glog_file.go delete mode 100644 vendor/github.com/golang/groupcache/LICENSE delete mode 100644 vendor/github.com/golang/groupcache/lru/lru.go delete mode 100644 vendor/github.com/google/go-licenses/CONTRIBUTING.md delete mode 100644 vendor/github.com/google/go-licenses/Dockerfile delete mode 100644 vendor/github.com/google/go-licenses/LICENSE delete mode 100644 vendor/github.com/google/go-licenses/Makefile delete mode 100644 vendor/github.com/google/go-licenses/README.md delete mode 100644 vendor/github.com/google/go-licenses/check.go delete mode 100644 vendor/github.com/google/go-licenses/csv.go delete mode 100644 vendor/github.com/google/go-licenses/internal/third_party/pkgsite/LICENSE delete mode 100644 vendor/github.com/google/go-licenses/internal/third_party/pkgsite/PATENTS delete mode 100644 vendor/github.com/google/go-licenses/internal/third_party/pkgsite/derrors/derrors.go delete mode 100644 vendor/github.com/google/go-licenses/internal/third_party/pkgsite/source/meta-tags.go delete mode 100644 vendor/github.com/google/go-licenses/internal/third_party/pkgsite/source/source.go delete mode 100644 vendor/github.com/google/go-licenses/internal/third_party/pkgsite/source/source_patch.go delete mode 100644 vendor/github.com/google/go-licenses/internal/third_party/pkgsite/stdlib/stdlib.go delete mode 100644 vendor/github.com/google/go-licenses/internal/third_party/pkgsite/version/version.go delete mode 100644 vendor/github.com/google/go-licenses/licenses/classifier.go delete mode 100644 vendor/github.com/google/go-licenses/licenses/find.go delete mode 100644 vendor/github.com/google/go-licenses/licenses/git.go delete mode 100644 vendor/github.com/google/go-licenses/licenses/library.go delete mode 100644 vendor/github.com/google/go-licenses/licenses/module.go delete mode 100644 vendor/github.com/google/go-licenses/main.go delete mode 100644 vendor/github.com/google/go-licenses/save.go delete mode 100644 vendor/github.com/google/licenseclassifier/.travis.yml delete mode 100644 vendor/github.com/google/licenseclassifier/CHANGELOG delete mode 100644 vendor/github.com/google/licenseclassifier/CONTRIBUTING.md delete mode 100644 vendor/github.com/google/licenseclassifier/LICENSE delete mode 100644 vendor/github.com/google/licenseclassifier/README.md delete mode 100644 vendor/github.com/google/licenseclassifier/classifier.go delete mode 100644 vendor/github.com/google/licenseclassifier/file_system_resources.go delete mode 100644 vendor/github.com/google/licenseclassifier/forbidden.go delete mode 100644 vendor/github.com/google/licenseclassifier/internal/sets/sets.go delete mode 100644 vendor/github.com/google/licenseclassifier/internal/sets/stringset.go delete mode 100644 vendor/github.com/google/licenseclassifier/license_type.go delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/0BSD.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/AFL-1.1.header.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/AFL-1.1.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/AFL-1.2.header.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/AFL-1.2.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/AFL-2.0.header.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/AFL-2.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/AFL-2.1.header.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/AFL-2.1.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/AFL-3.0.header.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/AFL-3.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/AGPL-1.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/AGPL-3.0.header.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/AGPL-3.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/APSL-1.0.header.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/APSL-1.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/APSL-1.1.header.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/APSL-1.1.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/APSL-1.2.header.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/APSL-1.2.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/APSL-2.0.header.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/APSL-2.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/Apache-1.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/Apache-1.1.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/Apache-2.0.header.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/Apache-2.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/Artistic-1.0-Perl.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/Artistic-1.0-cl8.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/Artistic-1.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/Artistic-2.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/BCL.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/BSD-2-Clause-FreeBSD.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/BSD-2-Clause-NetBSD.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/BSD-2-Clause.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/BSD-3-Clause-Attribution.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/BSD-3-Clause-Clear.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/BSD-3-Clause-LBNL.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/BSD-3-Clause.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/BSD-4-Clause-UC.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/BSD-4-Clause.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/BSD-Protection.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/BSL-1.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/Beerware.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/CC-BY-1.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/CC-BY-2.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/CC-BY-2.5.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/CC-BY-3.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/CC-BY-4.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-1.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-2.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-2.5.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-3.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-4.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-ND-1.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-ND-2.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-ND-2.5.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-ND-3.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-ND-4.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-SA-1.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-SA-2.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-SA-2.5.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-SA-3.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-SA-4.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/CC-BY-ND-1.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/CC-BY-ND-2.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/CC-BY-ND-2.5.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/CC-BY-ND-3.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/CC-BY-ND-4.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/CC-BY-SA-1.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/CC-BY-SA-2.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/CC-BY-SA-2.5.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/CC-BY-SA-3.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/CC-BY-SA-4.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/CC0-1.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/CDDL-1.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/CDDL-1.1.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/CPAL-1.0.header.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/CPAL-1.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/CPL-1.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/Commons-Clause.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/EPL-1.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/EPL-2.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/EUPL-1.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/EUPL-1.1.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/FTL.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/Facebook-2-Clause.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/Facebook-3-Clause.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/Facebook-Examples.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/FreeImage.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/GPL-1.0.header.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/GPL-1.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/GPL-2.0-with-GCC-exception.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/GPL-2.0-with-autoconf-exception.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/GPL-2.0-with-bison-exception.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/GPL-2.0-with-classpath-exception.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/GPL-2.0-with-font-exception.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/GPL-2.0.header.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/GPL-2.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/GPL-3.0-with-GCC-exception.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/GPL-3.0-with-autoconf-exception.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/GPL-3.0.header.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/GPL-3.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/GUST-Font-License.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/IPL-1.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/ISC.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/ImageMagick.header.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/ImageMagick.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/LGPL-2.0.header.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/LGPL-2.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/LGPL-2.1.header.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/LGPL-2.1.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/LGPL-3.0.header.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/LGPL-3.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/LGPLLR.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/LPL-1.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/LPL-1.02.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/LPPL-1.3c.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/Libpng.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/Lil-1.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/Linux-OpenIB.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/MIT.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/MPL-1.0.header.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/MPL-1.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/MPL-1.1.header.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/MPL-1.1.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/MPL-2.0-no-copyleft-exception.header.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/MPL-2.0.header.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/MPL-2.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/MS-PL.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/NCSA.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/NPL-1.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/NPL-1.1.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/OFL-1.1.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/OSL-1.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/OSL-1.1.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/OSL-2.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/OSL-2.1.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/OSL-3.0.header.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/OSL-3.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/OpenSSL.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/OpenVision.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/PHP-3.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/PHP-3.01.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/PIL.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/PostgreSQL.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/Python-2.0-complete.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/Python-2.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/QPL-1.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/README.md delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/Ruby.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/SGI-B-1.0.header.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/SGI-B-1.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/SGI-B-1.1.header.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/SGI-B-1.1.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/SGI-B-2.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/SISSL-1.2.header.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/SISSL-1.2.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/SISSL.header.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/SISSL.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/Sleepycat.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/UPL-1.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/Unicode-DFS-2015.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/Unicode-DFS-2016.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/Unicode-TOU.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/Unlicense.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/W3C-19980720.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/W3C-20150513.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/W3C.header.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/W3C.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/WTFPL.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/X11.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/Xnet.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/ZPL-1.1.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/ZPL-2.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/ZPL-2.1.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/Zend-2.0.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/Zlib.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/eGenix.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/embed.go delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/forbidden_licenses.db delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/licenses.db delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/zlib-acknowledgement.txt delete mode 100644 vendor/github.com/google/licenseclassifier/stringclassifier/CONTRIBUTING.md delete mode 100644 vendor/github.com/google/licenseclassifier/stringclassifier/LICENSE delete mode 100644 vendor/github.com/google/licenseclassifier/stringclassifier/README.md delete mode 100644 vendor/github.com/google/licenseclassifier/stringclassifier/classifier.go delete mode 100644 vendor/github.com/google/licenseclassifier/stringclassifier/internal/pq/priority.go delete mode 100644 vendor/github.com/google/licenseclassifier/stringclassifier/searchset/searchset.go delete mode 100644 vendor/github.com/google/licenseclassifier/stringclassifier/searchset/tokenizer/tokenizer.go delete mode 100644 vendor/github.com/inconshreveable/mousetrap/LICENSE delete mode 100644 vendor/github.com/inconshreveable/mousetrap/README.md delete mode 100644 vendor/github.com/inconshreveable/mousetrap/trap_others.go delete mode 100644 vendor/github.com/inconshreveable/mousetrap/trap_windows.go delete mode 100644 vendor/github.com/inconshreveable/mousetrap/trap_windows_1.4.go delete mode 100644 vendor/github.com/jbenet/go-context/LICENSE delete mode 100644 vendor/github.com/jbenet/go-context/io/ctxio.go delete mode 100644 vendor/github.com/kevinburke/ssh_config/.gitattributes delete mode 100644 vendor/github.com/kevinburke/ssh_config/.gitignore delete mode 100644 vendor/github.com/kevinburke/ssh_config/.mailmap delete mode 100644 vendor/github.com/kevinburke/ssh_config/.travis.yml delete mode 100644 vendor/github.com/kevinburke/ssh_config/AUTHORS.txt delete mode 100644 vendor/github.com/kevinburke/ssh_config/LICENSE delete mode 100644 vendor/github.com/kevinburke/ssh_config/Makefile delete mode 100644 vendor/github.com/kevinburke/ssh_config/README.md delete mode 100644 vendor/github.com/kevinburke/ssh_config/config.go delete mode 100644 vendor/github.com/kevinburke/ssh_config/lexer.go delete mode 100644 vendor/github.com/kevinburke/ssh_config/parser.go delete mode 100644 vendor/github.com/kevinburke/ssh_config/position.go delete mode 100644 vendor/github.com/kevinburke/ssh_config/token.go delete mode 100644 vendor/github.com/kevinburke/ssh_config/validators.go delete mode 100644 vendor/github.com/mitchellh/go-homedir/LICENSE delete mode 100644 vendor/github.com/mitchellh/go-homedir/README.md delete mode 100644 vendor/github.com/mitchellh/go-homedir/homedir.go delete mode 100644 vendor/github.com/otiai10/copy/.gitignore delete mode 100644 vendor/github.com/otiai10/copy/LICENSE delete mode 100644 vendor/github.com/otiai10/copy/README.md delete mode 100644 vendor/github.com/otiai10/copy/copy.go delete mode 100644 vendor/github.com/otiai10/copy/copy_namedpipes.go delete mode 100644 vendor/github.com/otiai10/copy/copy_namedpipes_windows.go delete mode 100644 vendor/github.com/otiai10/copy/options.go delete mode 100644 vendor/github.com/otiai10/copy/preserve_times.go delete mode 100644 vendor/github.com/otiai10/copy/stat_times.go delete mode 100644 vendor/github.com/otiai10/copy/stat_times_darwin.go delete mode 100644 vendor/github.com/otiai10/copy/stat_times_freebsd.go delete mode 100644 vendor/github.com/otiai10/copy/stat_times_windows.go delete mode 100644 vendor/github.com/otiai10/copy/test_setup.go delete mode 100644 vendor/github.com/otiai10/copy/test_setup_windows.go delete mode 100644 vendor/github.com/sergi/go-diff/AUTHORS delete mode 100644 vendor/github.com/sergi/go-diff/CONTRIBUTORS delete mode 100644 vendor/github.com/sergi/go-diff/LICENSE delete mode 100644 vendor/github.com/sergi/go-diff/diffmatchpatch/diff.go delete mode 100644 vendor/github.com/sergi/go-diff/diffmatchpatch/diffmatchpatch.go delete mode 100644 vendor/github.com/sergi/go-diff/diffmatchpatch/match.go delete mode 100644 vendor/github.com/sergi/go-diff/diffmatchpatch/mathutil.go delete mode 100644 vendor/github.com/sergi/go-diff/diffmatchpatch/operation_string.go delete mode 100644 vendor/github.com/sergi/go-diff/diffmatchpatch/patch.go delete mode 100644 vendor/github.com/sergi/go-diff/diffmatchpatch/stringutil.go delete mode 100644 vendor/github.com/spf13/cobra/.gitignore delete mode 100644 vendor/github.com/spf13/cobra/.golangci.yml delete mode 100644 vendor/github.com/spf13/cobra/.mailmap delete mode 100644 vendor/github.com/spf13/cobra/CHANGELOG.md delete mode 100644 vendor/github.com/spf13/cobra/CONDUCT.md delete mode 100644 vendor/github.com/spf13/cobra/CONTRIBUTING.md delete mode 100644 vendor/github.com/spf13/cobra/LICENSE.txt delete mode 100644 vendor/github.com/spf13/cobra/MAINTAINERS delete mode 100644 vendor/github.com/spf13/cobra/Makefile delete mode 100644 vendor/github.com/spf13/cobra/README.md delete mode 100644 vendor/github.com/spf13/cobra/args.go delete mode 100644 vendor/github.com/spf13/cobra/bash_completions.go delete mode 100644 vendor/github.com/spf13/cobra/bash_completions.md delete mode 100644 vendor/github.com/spf13/cobra/bash_completionsV2.go delete mode 100644 vendor/github.com/spf13/cobra/cobra.go delete mode 100644 vendor/github.com/spf13/cobra/command.go delete mode 100644 vendor/github.com/spf13/cobra/command_notwin.go delete mode 100644 vendor/github.com/spf13/cobra/command_win.go delete mode 100644 vendor/github.com/spf13/cobra/completions.go delete mode 100644 vendor/github.com/spf13/cobra/fish_completions.go delete mode 100644 vendor/github.com/spf13/cobra/fish_completions.md delete mode 100644 vendor/github.com/spf13/cobra/powershell_completions.go delete mode 100644 vendor/github.com/spf13/cobra/powershell_completions.md delete mode 100644 vendor/github.com/spf13/cobra/projects_using_cobra.md delete mode 100644 vendor/github.com/spf13/cobra/shell_completions.go delete mode 100644 vendor/github.com/spf13/cobra/shell_completions.md delete mode 100644 vendor/github.com/spf13/cobra/user_guide.md delete mode 100644 vendor/github.com/spf13/cobra/zsh_completions.go delete mode 100644 vendor/github.com/spf13/cobra/zsh_completions.md delete mode 100644 vendor/github.com/src-d/gcfg/LICENSE delete mode 100644 vendor/github.com/src-d/gcfg/README delete mode 100644 vendor/github.com/src-d/gcfg/doc.go delete mode 100644 vendor/github.com/src-d/gcfg/errors.go delete mode 100644 vendor/github.com/src-d/gcfg/go1_0.go delete mode 100644 vendor/github.com/src-d/gcfg/go1_2.go delete mode 100644 vendor/github.com/src-d/gcfg/read.go delete mode 100644 vendor/github.com/src-d/gcfg/scanner/errors.go delete mode 100644 vendor/github.com/src-d/gcfg/scanner/scanner.go delete mode 100644 vendor/github.com/src-d/gcfg/set.go delete mode 100644 vendor/github.com/src-d/gcfg/token/position.go delete mode 100644 vendor/github.com/src-d/gcfg/token/serialize.go delete mode 100644 vendor/github.com/src-d/gcfg/token/token.go delete mode 100644 vendor/github.com/src-d/gcfg/types/bool.go delete mode 100644 vendor/github.com/src-d/gcfg/types/doc.go delete mode 100644 vendor/github.com/src-d/gcfg/types/enum.go delete mode 100644 vendor/github.com/src-d/gcfg/types/int.go delete mode 100644 vendor/github.com/src-d/gcfg/types/scan.go delete mode 100644 vendor/github.com/xanzy/ssh-agent/.gitignore delete mode 100644 vendor/github.com/xanzy/ssh-agent/LICENSE delete mode 100644 vendor/github.com/xanzy/ssh-agent/README.md delete mode 100644 vendor/github.com/xanzy/ssh-agent/pageant_windows.go delete mode 100644 vendor/github.com/xanzy/ssh-agent/sshagent.go delete mode 100644 vendor/github.com/xanzy/ssh-agent/sshagent_windows.go delete mode 100644 vendor/go.opencensus.io/.gitignore delete mode 100644 vendor/go.opencensus.io/AUTHORS delete mode 100644 vendor/go.opencensus.io/CONTRIBUTING.md delete mode 100644 vendor/go.opencensus.io/LICENSE delete mode 100644 vendor/go.opencensus.io/Makefile delete mode 100644 vendor/go.opencensus.io/README.md delete mode 100644 vendor/go.opencensus.io/appveyor.yml delete mode 100644 vendor/go.opencensus.io/internal/internal.go delete mode 100644 vendor/go.opencensus.io/internal/sanitize.go delete mode 100644 vendor/go.opencensus.io/internal/tagencoding/tagencoding.go delete mode 100644 vendor/go.opencensus.io/internal/traceinternals.go delete mode 100644 vendor/go.opencensus.io/metric/metricdata/doc.go delete mode 100644 vendor/go.opencensus.io/metric/metricdata/exemplar.go delete mode 100644 vendor/go.opencensus.io/metric/metricdata/label.go delete mode 100644 vendor/go.opencensus.io/metric/metricdata/metric.go delete mode 100644 vendor/go.opencensus.io/metric/metricdata/point.go delete mode 100644 vendor/go.opencensus.io/metric/metricdata/type_string.go delete mode 100644 vendor/go.opencensus.io/metric/metricdata/unit.go delete mode 100644 vendor/go.opencensus.io/metric/metricproducer/manager.go delete mode 100644 vendor/go.opencensus.io/metric/metricproducer/producer.go delete mode 100644 vendor/go.opencensus.io/opencensus.go delete mode 100644 vendor/go.opencensus.io/plugin/ochttp/client.go delete mode 100644 vendor/go.opencensus.io/plugin/ochttp/client_stats.go delete mode 100644 vendor/go.opencensus.io/plugin/ochttp/doc.go delete mode 100644 vendor/go.opencensus.io/plugin/ochttp/propagation/b3/b3.go delete mode 100644 vendor/go.opencensus.io/plugin/ochttp/route.go delete mode 100644 vendor/go.opencensus.io/plugin/ochttp/server.go delete mode 100644 vendor/go.opencensus.io/plugin/ochttp/span_annotating_client_trace.go delete mode 100644 vendor/go.opencensus.io/plugin/ochttp/stats.go delete mode 100644 vendor/go.opencensus.io/plugin/ochttp/trace.go delete mode 100644 vendor/go.opencensus.io/plugin/ochttp/wrapped_body.go delete mode 100644 vendor/go.opencensus.io/resource/resource.go delete mode 100644 vendor/go.opencensus.io/stats/doc.go delete mode 100644 vendor/go.opencensus.io/stats/internal/record.go delete mode 100644 vendor/go.opencensus.io/stats/measure.go delete mode 100644 vendor/go.opencensus.io/stats/measure_float64.go delete mode 100644 vendor/go.opencensus.io/stats/measure_int64.go delete mode 100644 vendor/go.opencensus.io/stats/record.go delete mode 100644 vendor/go.opencensus.io/stats/units.go delete mode 100644 vendor/go.opencensus.io/stats/view/aggregation.go delete mode 100644 vendor/go.opencensus.io/stats/view/aggregation_data.go delete mode 100644 vendor/go.opencensus.io/stats/view/collector.go delete mode 100644 vendor/go.opencensus.io/stats/view/doc.go delete mode 100644 vendor/go.opencensus.io/stats/view/export.go delete mode 100644 vendor/go.opencensus.io/stats/view/view.go delete mode 100644 vendor/go.opencensus.io/stats/view/view_to_metric.go delete mode 100644 vendor/go.opencensus.io/stats/view/worker.go delete mode 100644 vendor/go.opencensus.io/stats/view/worker_commands.go delete mode 100644 vendor/go.opencensus.io/tag/context.go delete mode 100644 vendor/go.opencensus.io/tag/doc.go delete mode 100644 vendor/go.opencensus.io/tag/key.go delete mode 100644 vendor/go.opencensus.io/tag/map.go delete mode 100644 vendor/go.opencensus.io/tag/map_codec.go delete mode 100644 vendor/go.opencensus.io/tag/metadata.go delete mode 100644 vendor/go.opencensus.io/tag/profile_19.go delete mode 100644 vendor/go.opencensus.io/tag/profile_not19.go delete mode 100644 vendor/go.opencensus.io/tag/validate.go delete mode 100644 vendor/go.opencensus.io/trace/basetypes.go delete mode 100644 vendor/go.opencensus.io/trace/config.go delete mode 100644 vendor/go.opencensus.io/trace/doc.go delete mode 100644 vendor/go.opencensus.io/trace/evictedqueue.go delete mode 100644 vendor/go.opencensus.io/trace/export.go delete mode 100644 vendor/go.opencensus.io/trace/internal/internal.go delete mode 100644 vendor/go.opencensus.io/trace/lrumap.go delete mode 100644 vendor/go.opencensus.io/trace/propagation/propagation.go delete mode 100644 vendor/go.opencensus.io/trace/sampling.go delete mode 100644 vendor/go.opencensus.io/trace/spanbucket.go delete mode 100644 vendor/go.opencensus.io/trace/spanstore.go delete mode 100644 vendor/go.opencensus.io/trace/status_codes.go delete mode 100644 vendor/go.opencensus.io/trace/trace.go delete mode 100644 vendor/go.opencensus.io/trace/trace_api.go delete mode 100644 vendor/go.opencensus.io/trace/trace_go11.go delete mode 100644 vendor/go.opencensus.io/trace/trace_nongo11.go delete mode 100644 vendor/go.opencensus.io/trace/tracestate/tracestate.go delete mode 100644 vendor/golang.org/x/crypto/AUTHORS delete mode 100644 vendor/golang.org/x/crypto/CONTRIBUTORS delete mode 100644 vendor/golang.org/x/crypto/LICENSE delete mode 100644 vendor/golang.org/x/crypto/PATENTS delete mode 100644 vendor/golang.org/x/crypto/blowfish/block.go delete mode 100644 vendor/golang.org/x/crypto/blowfish/cipher.go delete mode 100644 vendor/golang.org/x/crypto/blowfish/const.go delete mode 100644 vendor/golang.org/x/crypto/cast5/cast5.go delete mode 100644 vendor/golang.org/x/crypto/chacha20/chacha_arm64.go delete mode 100644 vendor/golang.org/x/crypto/chacha20/chacha_arm64.s delete mode 100644 vendor/golang.org/x/crypto/chacha20/chacha_generic.go delete mode 100644 vendor/golang.org/x/crypto/chacha20/chacha_noasm.go delete mode 100644 vendor/golang.org/x/crypto/chacha20/chacha_ppc64le.go delete mode 100644 vendor/golang.org/x/crypto/chacha20/chacha_ppc64le.s delete mode 100644 vendor/golang.org/x/crypto/chacha20/chacha_s390x.go delete mode 100644 vendor/golang.org/x/crypto/chacha20/chacha_s390x.s delete mode 100644 vendor/golang.org/x/crypto/chacha20/xor.go delete mode 100644 vendor/golang.org/x/crypto/curve25519/curve25519.go delete mode 100644 vendor/golang.org/x/crypto/curve25519/internal/field/README delete mode 100644 vendor/golang.org/x/crypto/curve25519/internal/field/fe.go delete mode 100644 vendor/golang.org/x/crypto/curve25519/internal/field/fe_amd64.go delete mode 100644 vendor/golang.org/x/crypto/curve25519/internal/field/fe_amd64.s delete mode 100644 vendor/golang.org/x/crypto/curve25519/internal/field/fe_amd64_noasm.go delete mode 100644 vendor/golang.org/x/crypto/curve25519/internal/field/fe_arm64.go delete mode 100644 vendor/golang.org/x/crypto/curve25519/internal/field/fe_arm64.s delete mode 100644 vendor/golang.org/x/crypto/curve25519/internal/field/fe_arm64_noasm.go delete mode 100644 vendor/golang.org/x/crypto/curve25519/internal/field/fe_generic.go delete mode 100644 vendor/golang.org/x/crypto/curve25519/internal/field/sync.checkpoint delete mode 100644 vendor/golang.org/x/crypto/curve25519/internal/field/sync.sh delete mode 100644 vendor/golang.org/x/crypto/ed25519/ed25519.go delete mode 100644 vendor/golang.org/x/crypto/internal/poly1305/bits_compat.go delete mode 100644 vendor/golang.org/x/crypto/internal/poly1305/bits_go1.13.go delete mode 100644 vendor/golang.org/x/crypto/internal/poly1305/mac_noasm.go delete mode 100644 vendor/golang.org/x/crypto/internal/poly1305/poly1305.go delete mode 100644 vendor/golang.org/x/crypto/internal/poly1305/sum_amd64.go delete mode 100644 vendor/golang.org/x/crypto/internal/poly1305/sum_amd64.s delete mode 100644 vendor/golang.org/x/crypto/internal/poly1305/sum_generic.go delete mode 100644 vendor/golang.org/x/crypto/internal/poly1305/sum_ppc64le.go delete mode 100644 vendor/golang.org/x/crypto/internal/poly1305/sum_ppc64le.s delete mode 100644 vendor/golang.org/x/crypto/internal/poly1305/sum_s390x.go delete mode 100644 vendor/golang.org/x/crypto/internal/poly1305/sum_s390x.s delete mode 100644 vendor/golang.org/x/crypto/internal/subtle/aliasing.go delete mode 100644 vendor/golang.org/x/crypto/internal/subtle/aliasing_purego.go delete mode 100644 vendor/golang.org/x/crypto/openpgp/armor/armor.go delete mode 100644 vendor/golang.org/x/crypto/openpgp/armor/encode.go delete mode 100644 vendor/golang.org/x/crypto/openpgp/canonical_text.go delete mode 100644 vendor/golang.org/x/crypto/openpgp/elgamal/elgamal.go delete mode 100644 vendor/golang.org/x/crypto/openpgp/errors/errors.go delete mode 100644 vendor/golang.org/x/crypto/openpgp/keys.go delete mode 100644 vendor/golang.org/x/crypto/openpgp/packet/compressed.go delete mode 100644 vendor/golang.org/x/crypto/openpgp/packet/config.go delete mode 100644 vendor/golang.org/x/crypto/openpgp/packet/encrypted_key.go delete mode 100644 vendor/golang.org/x/crypto/openpgp/packet/literal.go delete mode 100644 vendor/golang.org/x/crypto/openpgp/packet/ocfb.go delete mode 100644 vendor/golang.org/x/crypto/openpgp/packet/one_pass_signature.go delete mode 100644 vendor/golang.org/x/crypto/openpgp/packet/opaque.go delete mode 100644 vendor/golang.org/x/crypto/openpgp/packet/packet.go delete mode 100644 vendor/golang.org/x/crypto/openpgp/packet/private_key.go delete mode 100644 vendor/golang.org/x/crypto/openpgp/packet/public_key.go delete mode 100644 vendor/golang.org/x/crypto/openpgp/packet/public_key_v3.go delete mode 100644 vendor/golang.org/x/crypto/openpgp/packet/reader.go delete mode 100644 vendor/golang.org/x/crypto/openpgp/packet/signature.go delete mode 100644 vendor/golang.org/x/crypto/openpgp/packet/signature_v3.go delete mode 100644 vendor/golang.org/x/crypto/openpgp/packet/symmetric_key_encrypted.go delete mode 100644 vendor/golang.org/x/crypto/openpgp/packet/symmetrically_encrypted.go delete mode 100644 vendor/golang.org/x/crypto/openpgp/packet/userattribute.go delete mode 100644 vendor/golang.org/x/crypto/openpgp/packet/userid.go delete mode 100644 vendor/golang.org/x/crypto/openpgp/read.go delete mode 100644 vendor/golang.org/x/crypto/openpgp/s2k/s2k.go delete mode 100644 vendor/golang.org/x/crypto/openpgp/write.go delete mode 100644 vendor/golang.org/x/crypto/ssh/agent/client.go delete mode 100644 vendor/golang.org/x/crypto/ssh/agent/forward.go delete mode 100644 vendor/golang.org/x/crypto/ssh/agent/keyring.go delete mode 100644 vendor/golang.org/x/crypto/ssh/agent/server.go delete mode 100644 vendor/golang.org/x/crypto/ssh/buffer.go delete mode 100644 vendor/golang.org/x/crypto/ssh/certs.go delete mode 100644 vendor/golang.org/x/crypto/ssh/channel.go delete mode 100644 vendor/golang.org/x/crypto/ssh/cipher.go delete mode 100644 vendor/golang.org/x/crypto/ssh/client.go delete mode 100644 vendor/golang.org/x/crypto/ssh/client_auth.go delete mode 100644 vendor/golang.org/x/crypto/ssh/common.go delete mode 100644 vendor/golang.org/x/crypto/ssh/connection.go delete mode 100644 vendor/golang.org/x/crypto/ssh/doc.go delete mode 100644 vendor/golang.org/x/crypto/ssh/handshake.go delete mode 100644 vendor/golang.org/x/crypto/ssh/internal/bcrypt_pbkdf/bcrypt_pbkdf.go delete mode 100644 vendor/golang.org/x/crypto/ssh/kex.go delete mode 100644 vendor/golang.org/x/crypto/ssh/keys.go delete mode 100644 vendor/golang.org/x/crypto/ssh/knownhosts/knownhosts.go delete mode 100644 vendor/golang.org/x/crypto/ssh/mac.go delete mode 100644 vendor/golang.org/x/crypto/ssh/messages.go delete mode 100644 vendor/golang.org/x/crypto/ssh/mux.go delete mode 100644 vendor/golang.org/x/crypto/ssh/server.go delete mode 100644 vendor/golang.org/x/crypto/ssh/session.go delete mode 100644 vendor/golang.org/x/crypto/ssh/ssh_gss.go delete mode 100644 vendor/golang.org/x/crypto/ssh/streamlocal.go delete mode 100644 vendor/golang.org/x/crypto/ssh/tcpip.go delete mode 100644 vendor/golang.org/x/crypto/ssh/transport.go delete mode 100644 vendor/golang.org/x/mod/LICENSE delete mode 100644 vendor/golang.org/x/mod/PATENTS delete mode 100644 vendor/golang.org/x/mod/semver/semver.go delete mode 100644 vendor/golang.org/x/net/AUTHORS delete mode 100644 vendor/golang.org/x/net/CONTRIBUTORS delete mode 100644 vendor/golang.org/x/net/LICENSE delete mode 100644 vendor/golang.org/x/net/PATENTS delete mode 100644 vendor/golang.org/x/net/context/context.go delete mode 100644 vendor/golang.org/x/net/context/ctxhttp/ctxhttp.go delete mode 100644 vendor/golang.org/x/net/context/go17.go delete mode 100644 vendor/golang.org/x/net/context/go19.go delete mode 100644 vendor/golang.org/x/net/context/pre_go17.go delete mode 100644 vendor/golang.org/x/net/context/pre_go19.go delete mode 100644 vendor/golang.org/x/net/internal/socks/client.go delete mode 100644 vendor/golang.org/x/net/internal/socks/socks.go delete mode 100644 vendor/golang.org/x/net/proxy/dial.go delete mode 100644 vendor/golang.org/x/net/proxy/direct.go delete mode 100644 vendor/golang.org/x/net/proxy/per_host.go delete mode 100644 vendor/golang.org/x/net/proxy/proxy.go delete mode 100644 vendor/golang.org/x/net/proxy/socks5.go delete mode 100644 vendor/golang.org/x/sys/cpu/asm_aix_ppc64.s delete mode 100644 vendor/golang.org/x/sys/cpu/byteorder.go delete mode 100644 vendor/golang.org/x/sys/cpu/cpu.go delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_aix.go delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_arm.go delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_arm64.go delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_arm64.s delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_gc_arm64.go delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_gc_s390x.go delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_gc_x86.go delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_gccgo_arm64.go delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_gccgo_s390x.go delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.c delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.go delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_linux.go delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_linux_arm.go delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_linux_arm64.go delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_linux_mips64x.go delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_linux_noinit.go delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_linux_ppc64x.go delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_linux_s390x.go delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_mips64x.go delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_mipsx.go delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_netbsd_arm64.go delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_other_arm.go delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_other_arm64.go delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_other_mips64x.go delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_ppc64x.go delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_riscv64.go delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_s390x.go delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_s390x.s delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_wasm.go delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_x86.go delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_x86.s delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_zos.go delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_zos_s390x.go delete mode 100644 vendor/golang.org/x/sys/cpu/hwcap_linux.go delete mode 100644 vendor/golang.org/x/sys/cpu/syscall_aix_gccgo.go delete mode 100644 vendor/golang.org/x/sys/cpu/syscall_aix_ppc64_gc.go delete mode 100644 vendor/golang.org/x/sys/execabs/execabs.go create mode 100644 vendor/golang.org/x/sys/unix/asm_linux_loong64.s create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_alarm.go delete mode 100644 vendor/golang.org/x/tools/AUTHORS delete mode 100644 vendor/golang.org/x/tools/CONTRIBUTORS delete mode 100644 vendor/golang.org/x/tools/LICENSE delete mode 100644 vendor/golang.org/x/tools/PATENTS delete mode 100644 vendor/golang.org/x/tools/go/gcexportdata/gcexportdata.go delete mode 100644 vendor/golang.org/x/tools/go/gcexportdata/importer.go delete mode 100644 vendor/golang.org/x/tools/go/internal/gcimporter/bexport.go delete mode 100644 vendor/golang.org/x/tools/go/internal/gcimporter/bimport.go delete mode 100644 vendor/golang.org/x/tools/go/internal/gcimporter/exportdata.go delete mode 100644 vendor/golang.org/x/tools/go/internal/gcimporter/gcimporter.go delete mode 100644 vendor/golang.org/x/tools/go/internal/gcimporter/iexport.go delete mode 100644 vendor/golang.org/x/tools/go/internal/gcimporter/iimport.go delete mode 100644 vendor/golang.org/x/tools/go/internal/gcimporter/newInterface10.go delete mode 100644 vendor/golang.org/x/tools/go/internal/gcimporter/newInterface11.go delete mode 100644 vendor/golang.org/x/tools/go/internal/gcimporter/support_go117.go delete mode 100644 vendor/golang.org/x/tools/go/internal/gcimporter/support_go118.go delete mode 100644 vendor/golang.org/x/tools/go/internal/packagesdriver/sizes.go delete mode 100644 vendor/golang.org/x/tools/go/packages/doc.go delete mode 100644 vendor/golang.org/x/tools/go/packages/external.go delete mode 100644 vendor/golang.org/x/tools/go/packages/golist.go delete mode 100644 vendor/golang.org/x/tools/go/packages/golist_overlay.go delete mode 100644 vendor/golang.org/x/tools/go/packages/loadmode_string.go delete mode 100644 vendor/golang.org/x/tools/go/packages/packages.go delete mode 100644 vendor/golang.org/x/tools/go/packages/visit.go delete mode 100644 vendor/golang.org/x/tools/internal/event/core/event.go delete mode 100644 vendor/golang.org/x/tools/internal/event/core/export.go delete mode 100644 vendor/golang.org/x/tools/internal/event/core/fast.go delete mode 100644 vendor/golang.org/x/tools/internal/event/doc.go delete mode 100644 vendor/golang.org/x/tools/internal/event/event.go delete mode 100644 vendor/golang.org/x/tools/internal/event/keys/keys.go delete mode 100644 vendor/golang.org/x/tools/internal/event/keys/standard.go delete mode 100644 vendor/golang.org/x/tools/internal/event/label/label.go delete mode 100644 vendor/golang.org/x/tools/internal/gocommand/invoke.go delete mode 100644 vendor/golang.org/x/tools/internal/gocommand/vendor.go delete mode 100644 vendor/golang.org/x/tools/internal/gocommand/version.go delete mode 100644 vendor/golang.org/x/tools/internal/packagesinternal/packages.go delete mode 100644 vendor/golang.org/x/tools/internal/typeparams/common.go delete mode 100644 vendor/golang.org/x/tools/internal/typeparams/enabled_go117.go delete mode 100644 vendor/golang.org/x/tools/internal/typeparams/enabled_go118.go delete mode 100644 vendor/golang.org/x/tools/internal/typeparams/normalize.go delete mode 100644 vendor/golang.org/x/tools/internal/typeparams/termlist.go delete mode 100644 vendor/golang.org/x/tools/internal/typeparams/typeparams_go117.go delete mode 100644 vendor/golang.org/x/tools/internal/typeparams/typeparams_go118.go delete mode 100644 vendor/golang.org/x/tools/internal/typeparams/typeterm.go delete mode 100644 vendor/golang.org/x/tools/internal/typesinternal/errorcode.go delete mode 100644 vendor/golang.org/x/tools/internal/typesinternal/errorcode_string.go delete mode 100644 vendor/golang.org/x/tools/internal/typesinternal/types.go delete mode 100644 vendor/golang.org/x/tools/internal/typesinternal/types_118.go delete mode 100644 vendor/golang.org/x/xerrors/LICENSE delete mode 100644 vendor/golang.org/x/xerrors/PATENTS delete mode 100644 vendor/golang.org/x/xerrors/README delete mode 100644 vendor/golang.org/x/xerrors/adaptor.go delete mode 100644 vendor/golang.org/x/xerrors/codereview.cfg delete mode 100644 vendor/golang.org/x/xerrors/doc.go delete mode 100644 vendor/golang.org/x/xerrors/errors.go delete mode 100644 vendor/golang.org/x/xerrors/fmt.go delete mode 100644 vendor/golang.org/x/xerrors/format.go delete mode 100644 vendor/golang.org/x/xerrors/frame.go delete mode 100644 vendor/golang.org/x/xerrors/internal/internal.go delete mode 100644 vendor/golang.org/x/xerrors/wrap.go delete mode 100644 vendor/gopkg.in/src-d/go-billy.v4/.gitignore delete mode 100644 vendor/gopkg.in/src-d/go-billy.v4/.travis.yml delete mode 100644 vendor/gopkg.in/src-d/go-billy.v4/DCO delete mode 100644 vendor/gopkg.in/src-d/go-billy.v4/LICENSE delete mode 100644 vendor/gopkg.in/src-d/go-billy.v4/MAINTAINERS delete mode 100644 vendor/gopkg.in/src-d/go-billy.v4/Makefile delete mode 100644 vendor/gopkg.in/src-d/go-billy.v4/README.md delete mode 100644 vendor/gopkg.in/src-d/go-billy.v4/appveyor.yml delete mode 100644 vendor/gopkg.in/src-d/go-billy.v4/fs.go delete mode 100644 vendor/gopkg.in/src-d/go-billy.v4/helper/chroot/chroot.go delete mode 100644 vendor/gopkg.in/src-d/go-billy.v4/helper/polyfill/polyfill.go delete mode 100644 vendor/gopkg.in/src-d/go-billy.v4/osfs/os.go delete mode 100644 vendor/gopkg.in/src-d/go-billy.v4/osfs/os_posix.go delete mode 100644 vendor/gopkg.in/src-d/go-billy.v4/osfs/os_windows.go delete mode 100644 vendor/gopkg.in/src-d/go-billy.v4/util/glob.go delete mode 100644 vendor/gopkg.in/src-d/go-billy.v4/util/util.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/.gitignore delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/.travis.yml delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/CODE_OF_CONDUCT.md delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/COMPATIBILITY.md delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/CONTRIBUTING.md delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/DCO delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/LICENSE delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/MAINTAINERS delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/Makefile delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/README.md delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/appveyor.yml delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/blame.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/common.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/config/branch.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/config/config.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/config/modules.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/config/refspec.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/doc.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/internal/revision/parser.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/internal/revision/scanner.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/internal/revision/token.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/internal/url/url.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/object_walker.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/options.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/cache/buffer_lru.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/cache/common.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/cache/object_lru.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/error.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/filemode/filemode.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/format/config/common.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/format/config/decoder.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/format/config/doc.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/format/config/encoder.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/format/config/option.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/format/config/section.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/format/diff/patch.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/format/diff/unified_encoder.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/format/gitignore/dir.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/format/gitignore/doc.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/format/gitignore/matcher.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/format/gitignore/pattern.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/format/idxfile/decoder.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/format/idxfile/doc.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/format/idxfile/encoder.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/format/idxfile/idxfile.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/format/idxfile/writer.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/format/index/decoder.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/format/index/doc.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/format/index/encoder.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/format/index/index.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/format/index/match.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/format/objfile/doc.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/format/objfile/reader.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/format/objfile/writer.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/common.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/delta_index.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/delta_selector.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/diff_delta.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/doc.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/encoder.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/error.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/fsobject.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/object_pack.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/packfile.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/parser.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/patch_delta.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/scanner.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/format/pktline/encoder.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/format/pktline/scanner.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/hash.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/memory.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/object.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/object/blob.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/object/change.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/object/change_adaptor.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/object/commit.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/object/commit_walker.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/object/commit_walker_bfs.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/object/commit_walker_bfs_filtered.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/object/commit_walker_ctime.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/object/commit_walker_file.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/object/common.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/object/difftree.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/object/file.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/object/merge_base.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/object/object.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/object/patch.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/object/tag.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/object/tree.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/object/treenoder.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/advrefs.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/advrefs_decode.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/advrefs_encode.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/capability/capability.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/capability/list.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/common.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/doc.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/report_status.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/shallowupd.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/sideband/common.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/sideband/demux.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/sideband/doc.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/sideband/muxer.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/srvresp.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/ulreq.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/ulreq_decode.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/ulreq_encode.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/updreq.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/updreq_decode.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/updreq_encode.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/uppackreq.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/uppackresp.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/reference.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/revision.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/revlist/revlist.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/storer/doc.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/storer/index.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/storer/object.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/storer/reference.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/storer/shallow.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/storer/storer.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/transport/client/client.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/transport/common.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/transport/file/client.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/transport/file/server.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/transport/git/common.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/transport/http/common.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/transport/http/receive_pack.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/transport/http/upload_pack.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/transport/internal/common/common.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/transport/internal/common/server.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/transport/server/loader.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/transport/server/server.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/transport/ssh/auth_method.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/plumbing/transport/ssh/common.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/prune.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/references.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/remote.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/repository.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/status.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/storage/filesystem/config.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/storage/filesystem/deltaobject.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/storage/filesystem/dotgit/dotgit.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/storage/filesystem/dotgit/dotgit_rewrite_packed_refs.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/storage/filesystem/dotgit/dotgit_setref.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/storage/filesystem/dotgit/writers.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/storage/filesystem/index.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/storage/filesystem/module.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/storage/filesystem/object.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/storage/filesystem/reference.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/storage/filesystem/shallow.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/storage/filesystem/storage.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/storage/memory/storage.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/storage/storer.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/submodule.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/utils/binary/read.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/utils/binary/write.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/utils/diff/diff.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/utils/ioutil/common.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/utils/merkletrie/change.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/utils/merkletrie/difftree.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/utils/merkletrie/doc.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/utils/merkletrie/doubleiter.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/utils/merkletrie/filesystem/node.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/utils/merkletrie/index/node.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/utils/merkletrie/internal/frame/frame.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/utils/merkletrie/iter.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/utils/merkletrie/noder/noder.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/utils/merkletrie/noder/path.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/worktree.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/worktree_bsd.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/worktree_commit.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/worktree_linux.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/worktree_status.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/worktree_unix_other.go delete mode 100644 vendor/gopkg.in/src-d/go-git.v4/worktree_windows.go delete mode 100644 vendor/gopkg.in/warnings.v0/LICENSE delete mode 100644 vendor/gopkg.in/warnings.v0/README delete mode 100644 vendor/gopkg.in/warnings.v0/warnings.go diff --git a/Makefile b/Makefile index 1d7aa17..d0fb205 100644 --- a/Makefile +++ b/Makefile @@ -142,9 +142,11 @@ DOTFILE_IMAGE = $(subst /,_,$(IMAGE))-$(TAG) LICENSES = .licenses $(LICENSES): - GOOS=$(shell go env GOHOSTOS) \ - GOARCH=$(shell go env GOHOSTARCH) \ - go build -o ./bin/tools github.com/google/go-licenses + pushd tools >/dev/null; \ + export GOOS=$(shell go env GOHOSTOS); \ + export GOARCH=$(shell go env GOHOSTARCH); \ + go build -o ../bin/tools github.com/google/go-licenses; \ + popd >/dev/null rm -rf $(LICENSES) ./bin/tools/go-licenses save ./... --save_path=$(LICENSES) chmod -R a+rx $(LICENSES) @@ -196,7 +198,11 @@ push-name: # This depends on github.com/estesp/manifest-tool in $PATH. manifest-list: all-push echo "manifest-list: $(REGISTRY)/$(BIN):$(VERSION)" - go build -o ./bin/tools github.com/estesp/manifest-tool/v2/cmd/manifest-tool + pushd tools >/dev/null; \ + export GOOS=$(shell go env GOHOSTOS); \ + export GOARCH=$(shell go env GOHOSTARCH); \ + go build -o ../bin/tools github.com/estesp/manifest-tool/v2/cmd/manifest-tool; \ + popd >/dev/null platforms=$$(echo $(ALL_PLATFORMS) | sed 's/ /,/g'); \ ./bin/tools/manifest-tool \ --username=oauth2accesstoken \ diff --git a/go.mod b/go.mod index 220ea62..cde26e4 100644 --- a/go.mod +++ b/go.mod @@ -1,75 +1,22 @@ module k8s.io/git-sync require ( - github.com/estesp/manifest-tool/v2 v2.0.5 github.com/go-logr/logr v1.2.3 - github.com/google/go-licenses v1.2.1 github.com/prometheus/client_golang v1.12.2 github.com/spf13/pflag v1.0.5 ) require ( - github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.1.2 // indirect - github.com/containerd/containerd v1.6.6 // indirect - github.com/cpuguy83/go-md2man/v2 v2.0.1 // indirect - github.com/docker/cli v20.10.17+incompatible // indirect - github.com/docker/distribution v2.8.1+incompatible // indirect - github.com/docker/docker v20.10.17+incompatible // indirect - github.com/docker/docker-credential-helpers v0.6.4 // indirect - github.com/docker/go-connections v0.4.1-0.20190612165340-fd1b1942c4d5 // indirect - github.com/docker/go-metrics v0.0.1 // indirect - github.com/docker/go-units v0.4.0 // indirect - github.com/emirpasic/gods v1.12.0 // indirect - github.com/fatih/color v1.10.0 // indirect - github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b // indirect - github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.2 // indirect - github.com/google/licenseclassifier v0.0.0-20210722185704-3043a050f148 // indirect - github.com/gorilla/mux v1.8.0 // indirect - github.com/inconshreveable/mousetrap v1.0.0 // indirect - github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect - github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd // indirect - github.com/klauspost/compress v1.13.6 // indirect - github.com/mattn/go-colorable v0.1.8 // indirect - github.com/mattn/go-isatty v0.0.12 // indirect + github.com/google/go-cmp v0.5.7 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect - github.com/mitchellh/go-homedir v1.1.0 // indirect - github.com/moby/locker v1.0.1 // indirect - github.com/moby/term v0.0.0-20210610120745-9d4ed1856297 // indirect - github.com/morikuni/aec v1.0.0 // indirect - github.com/opencontainers/go-digest v1.0.0 // indirect - github.com/opencontainers/image-spec v1.0.3-0.20211202183452-c5a74bcca799 // indirect - github.com/otiai10/copy v1.6.0 // indirect - github.com/pkg/errors v0.9.1 // indirect github.com/prometheus/client_model v0.2.0 // indirect github.com/prometheus/common v0.32.1 // indirect github.com/prometheus/procfs v0.7.3 // indirect - github.com/russross/blackfriday/v2 v2.1.0 // indirect - github.com/sergi/go-diff v1.2.0 // indirect - github.com/sirupsen/logrus v1.8.1 // indirect - github.com/spf13/cobra v1.4.0 // indirect - github.com/src-d/gcfg v1.4.0 // indirect - github.com/urfave/cli v1.22.9 // indirect - github.com/xanzy/ssh-agent v0.2.1 // indirect - go.opencensus.io v0.23.0 // indirect - golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e // indirect - golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 // indirect - golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd // indirect - golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f // indirect golang.org/x/sys v0.0.0-20220412211240-33da011f77ad // indirect - golang.org/x/tools v0.1.10 // indirect - golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect - google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368 // indirect - google.golang.org/grpc v1.43.0 // indirect google.golang.org/protobuf v1.27.1 // indirect - gopkg.in/src-d/go-billy.v4 v4.3.2 // indirect - gopkg.in/src-d/go-git.v4 v4.13.1 // indirect - gopkg.in/warnings.v0 v0.1.2 // indirect - gopkg.in/yaml.v2 v2.4.0 // indirect - oras.land/oras-go v1.2.0 // indirect ) go 1.18 diff --git a/go.sum b/go.sum index 4548289..16d5c12 100644 --- a/go.sum +++ b/go.sum @@ -13,20 +13,6 @@ cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKV cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= -cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= -cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= -cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= -cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= -cloud.google.com/go v0.82.0/go.mod h1:vlKccHJGuFBFufnAnuB08dfEH9Y3H7dzDzRECFdC2TA= -cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= -cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= -cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= -cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= -cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= -cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= -cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= -cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= @@ -45,36 +31,18 @@ cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohl cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/Azure/go-ansiterm v0.0.0-20210608223527-2377c96fe795/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= -github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= -github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/Microsoft/go-winio v0.5.1 h1:aPJp2QD7OOrhO5tQXqQoGSJc+DjDtWTGLOmNyAm6FgY= -github.com/Microsoft/hcsshim v0.9.3 h1:k371PzBuRrz2b+ebGuI2nVgVhgsVX60jMfSw80NECxo= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d h1:UrqY+r/OJnIp5u0s1SbQ8dVfLCZJsnvazdBP5hS4iRs= -github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7 h1:uSoVVbwJiQipAclBbw+8quDsfcvFjOpI5iCf4p/cqCs= -github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7/go.mod h1:6zEj6s6u/ghQa61ZWa/C2Aw3RkjiTBOix7dkqa1VLIs= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= -github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239 h1:kFOfPq6dUM1hTo4JG6LR5AXSUEsOjtdm0kw0FtQtMJA= -github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= -github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bshuster-repo/logrus-logstash-hook v1.0.2 h1:JYRWo+QGnQdedgshosug9hxpPYTB9oJ1ZZD3fY31alU= -github.com/bugsnag/bugsnag-go v2.1.2+incompatible h1:E7dor84qzwUO8KdCM68CZwq9QOSR7HXlLx3Wj5vui2s= -github.com/bugsnag/panicwrap v1.3.4 h1:A6sXFtDGsgU/4BLf5JT0o5uYg3EeKgGx3Sfs+/uk3pU= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -83,64 +51,12 @@ github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5P github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= -github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/containerd/cgroups v1.0.3 h1:ADZftAkglvCiD44c77s5YmMqaP2pzVCFZvBmAlBdAP4= -github.com/containerd/containerd v1.6.6 h1:xJNPhbrmz8xAMDNoVjHy9YHtWwEQNS+CDkcIRh7t8Y0= -github.com/containerd/containerd v1.6.6/go.mod h1:ZoP1geJldzCVY3Tonoz7b1IXk8rIX0Nltt5QE4OMNk0= -github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.1 h1:r/myEWzV9lfsM1tFLgDyu0atFtJ1fXn261LKYj/3DxU= -github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/creack/pty v1.1.11 h1:07n33Z8lZxZ2qwegKbObQohDhXDQxiMMz1NOUGYlesw= -github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/danieljoos/wincred v1.1.0/go.mod h1:XYlo+eRTsVA9aHGp7NGjFkPla4m+DCL7hqDjlFjiygg= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/distribution/distribution/v3 v3.0.0-20220526142353-ffbd94cbe269 h1:hbCT8ZPPMqefiAWD2ZKjn7ypokIGViTvBBg/ExLSdCk= -github.com/docker/cli v20.10.17+incompatible h1:eO2KS7ZFeov5UJeaDmIs1NFEDRf32PaqRpvoEkKBy5M= -github.com/docker/cli v20.10.17+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= -github.com/docker/distribution v2.8.1+incompatible h1:Q50tZOPR6T/hjNsyc9g8/syEs6bk8XXApsHjKukMl68= -github.com/docker/distribution v2.8.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v20.10.17+incompatible h1:JYCuMrWaVNophQTOrMMoSwudOVEfcegoZZrleKc1xwE= -github.com/docker/docker v20.10.17+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker-credential-helpers v0.6.4 h1:axCks+yV+2MR3/kZhAmy07yC56WZ2Pwu/fKWtKuZB0o= -github.com/docker/docker-credential-helpers v0.6.4/go.mod h1:ofX3UI0Gz1TteYBjtgs07O36Pyasyp66D2uKT7H8W1c= -github.com/docker/go-connections v0.4.1-0.20190612165340-fd1b1942c4d5 h1:2o8D0hdBky229bNnc7a8bAZkeVMpH4qsp2Rmt4g/+Zk= -github.com/docker/go-connections v0.4.1-0.20190612165340-fd1b1942c4d5/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= -github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c h1:+pKlWGMw7gf6bQ+oDZB4KHQFypsfjYlq/C4rfL7D3g8= -github.com/docker/go-metrics v0.0.1 h1:AgB/0SvBxihN0X8OR4SjsblXkbMvalQ8cjmtKQ2rQV8= -github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw= -github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw= -github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/docker/libtrust v0.0.0-20160708172513-aabc10ec26b7 h1:UhxFibDNY/bfvqU5CAUmr9zpesgbU6SWc8/B4mflAE4= -github.com/emirpasic/gods v1.12.0 h1:QAUIPSaCu4G+POclxeqb3F+WPpdKqFGlw36+yOzGlrg= -github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= -github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= -github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/estesp/manifest-tool/v2 v2.0.5 h1:YocWuWB32d/mjwwhrVMpZQf5cBC3Shdu6byDBaiSFEo= -github.com/estesp/manifest-tool/v2 v2.0.5/go.mod h1:xXnTTBEDX1yic5KumuBnxU9+8jdVA4vuJkioPzwredI= -github.com/fatih/color v1.10.0 h1:s36xzo75JdqLaaWoiEHk767eHiwo0598uUxyfiPkDsg= -github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= -github.com/felixge/httpsnoop v1.0.1 h1:lvB5Jl89CsZtGIWuTcDM1E/vkVs49/Ml7JJe07l8SPQ= -github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/gliderlabs/ssh v0.2.2 h1:6zsha5zo/TWhRhwqCD3+EarCAgZ2yN28ipRnGPnwkI0= -github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -153,17 +69,11 @@ github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/gofrs/uuid v4.2.0+incompatible h1:yyYWMnhkhrKwwr8gAOcOCYxOOscHgDS9yZgBrnJfGa0= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= @@ -171,8 +81,6 @@ github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= -github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= -github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -188,11 +96,8 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/gomodule/redigo v1.8.2 h1:H5XSIre1MB5NbPYFp+i1NBbb5qN1W8Y8YAQoAYbkm8k= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= @@ -202,27 +107,13 @@ github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.7 h1:81/ik6ipDQS2aGcBfIN5dHDB36BwrStyeAQquSYCV4o= github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= -github.com/google/go-licenses v1.2.1 h1:KhURDa5PngT9NrGfH+JJiibFrXzH5AhXGoTSh1PtCWo= -github.com/google/go-licenses v1.2.1/go.mod h1:w7ElwEyjEtPZIxl5Q0sCCFCE7m1Gv6fjrj/eHULENCI= -github.com/google/go-replayers/httpreplay v1.1.1 h1:H91sIMlt1NZzN7R+/ASswyouLJfW0WLW7fhyUFvDEkY= -github.com/google/go-replayers/httpreplay v1.1.1/go.mod h1:gN9GeLIs7l6NUoVaSSnv2RiqK1NiwAmD0MrKeC9IIks= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/licenseclassifier v0.0.0-20210722185704-3043a050f148 h1:TJsAqW6zLRMDTyGmc9TPosfn9OyVlHs8Hrn3pY6ONSY= -github.com/google/licenseclassifier v0.0.0-20210722185704-3043a050f148/go.mod h1:rq9F0RSpNKlrefnf6ZYMHKUnEJBCNzf6AcCXMYBeYvE= -github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= -github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= -github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= @@ -230,36 +121,14 @@ github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210506205249-923b5ab0fc1a/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= -github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= -github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4= -github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= -github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= -github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= -github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= @@ -267,69 +136,29 @@ github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1 github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 h1:iQTw/8FWTuc7uiaSepXwyf3o52HaUYcV+Tu66S3F5GA= -github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd h1:Coekwdh0v2wtGp9Gmz1Ze3eVRAWJMLokvN3QjdzCHLY= -github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= -github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.13.6 h1:P76CopJELS0TiO2mebmnzgWaajssP/EszplttgQxcgc= -github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/mattn/go-colorable v0.1.8 h1:c1ghPdyEDarC70ftn0y+A/Ee++9zz8ljHG1b13eJ0s8= -github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= -github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= -github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/moby/locker v1.0.1 h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg= -github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= -github.com/moby/sys/mountinfo v0.5.0 h1:2Ks8/r6lopsxWi9m58nlwjaeSzUX9iiL1vj5qB/9ObI= -github.com/moby/term v0.0.0-20210610120745-9d4ed1856297 h1:yH0SvLzcbZxcJXho2yh7CqdENGMQe73Cw3woZBpPli0= -github.com/moby/term v0.0.0-20210610120745-9d4ed1856297/go.mod h1:vgPCkQMyxTZ7IDy8SXRufE172gr8+K/JE/7hHFxHW3A= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= -github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= -github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/image-spec v1.0.3-0.20211202183452-c5a74bcca799 h1:rc3tiVYb5z54aKaDfakKn0dDjIyPpTtszkjuMzyt7ec= -github.com/opencontainers/image-spec v1.0.3-0.20211202183452-c5a74bcca799/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/otiai10/copy v1.6.0 h1:IinKAryFFuPONZ7cm6T6E2QX/vcJwSnlaA5lfoaXIiQ= -github.com/otiai10/copy v1.6.0/go.mod h1:XWfuS3CrI0R6IE0FbgHsEazaXO8G0LpMp9o8tos0x4E= -github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= -github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= -github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= -github.com/otiai10/mint v1.3.2 h1:VYWnrP5fXmz1MXvjuUvcBrXSjGE6xjON+axB/UrpO3E= -github.com/otiai10/mint v1.3.2/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= -github.com/pelletier/go-buffruneio v0.2.0/go.mod h1:JkE26KsDizTr40EUHkXVtNPvgGtbSNq5BcowyYOWdKo= -github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5 h1:Ii+DKncOVM8Cu1Hc+ETb5K+23HdAMvESYE3ZJ5b5cMI= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= github.com/prometheus/client_golang v1.12.2 h1:51L9cDoUHVrXx4zWYlcLQIZ+d+VXHgqnYKkIuq4g/34= @@ -340,84 +169,41 @@ github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1: github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= github.com/prometheus/common v0.32.1 h1:hWIdL3N2HoUx3B8j3YN9mWor0qhY/NlEKZEaXxuIRh4= github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.7.3 h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0VU= github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= -github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ= -github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= -github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE= -github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/cobra v1.4.0 h1:y+wJpx64xcgO1V+RcnwW0LEHxTKRi2ZDPSBjWnrg88Q= -github.com/spf13/cobra v1.4.0/go.mod h1:Wo4iy3BUC+X2Fybo0PDqwJIv3dNRiZLHQymsfxlB84g= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/src-d/gcfg v1.4.0 h1:xXbNR5AlLSA315x2UO+fTSSAXCDf+Ar38/6oyGbDKQ4= -github.com/src-d/gcfg v1.4.0/go.mod h1:p/UMsR43ujA89BJY9duynAwIpvqEujIH/jFlfL7jWoI= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.2 h1:4jaiDzPyXQvSd7D0EjG45355tLlV3VOECpq10pLC+8s= -github.com/urfave/cli v1.22.9 h1:cv3/KhXGBGjEXLC4bH0sLuJ9BewaAbpk5oyMOveu4pw= -github.com/urfave/cli v1.22.9/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/xanzy/ssh-agent v0.2.1 h1:TCbipTQL2JiiCprBWx9frJ2eJlCYT00NmctrHxVAr70= -github.com/xanzy/ssh-agent v0.2.1/go.mod h1:mLlQY/MoOhWBj+gOGMQkOeiEvkx+8pJSI+0Bx9h2kr4= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yvasiyarov/go-metrics v0.0.0-20150112132944-c25f46c4b940 h1:p7OofyZ509h8DmPLh8Hn+EIIZm/xYhdZHJ9GnXHdr6U= -github.com/yvasiyarov/gorelic v0.0.7 h1:4DTF1WOM2ZZS/xMOkTFBOcb6XiHu/PKn3rVo6dbewQE= -github.com/yvasiyarov/newrelic_platform_go v0.0.0-20160601141957-9c099fbc30e9 h1:AsFN8kXcCVkUFHyuzp1FtYbzp1nCO/H6+1uPSGEyPzM= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M= -go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= -go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20220112180741-5e0467b6c7ce/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e h1:T8NU3HyQ8ClP4SEE+KbFlg6n0NhuTsN4MyznaarGsZM= -golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -440,8 +226,6 @@ golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHl golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= @@ -450,11 +234,6 @@ golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzB golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 h1:kQgndtyPBW/JIYERgdxfwMYh3AVStj88WQTlNDi2a+o= -golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -483,37 +262,13 @@ golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd h1:O7DYs+zxREGLKzKoMQrtrEacpb0ZVXA5rIwylE2Xchk= -golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210427180440-81ed05c6b58c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -522,16 +277,11 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f h1:Ax0t5p6N38Ga0dThY21weqDEyz2oklo4IvDkpigvkD8= -golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190221075227-b4e8571b14e0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -540,14 +290,11 @@ golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -562,50 +309,20 @@ golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210503080704-8803ae5d1324/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220111092808-5a964db01320/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad h1:ntjMns5wyP/fN65tdBD4g8J5w8n015+iIIs9rtjXkY0= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -620,9 +337,7 @@ golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBn golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190729092621-ff9f1409240a/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -648,24 +363,9 @@ golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= -golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.10 h1:QjFRCZxdOhBJ/UNgnBZLbNV13DlbnK0quyivTnXJM20= -golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -687,29 +387,12 @@ google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0M google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= -google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= -google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= -google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= -google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= -google.golang.org/api v0.46.0/go.mod h1:ceL4oozhkAiTID8XMmJBsIxID/9wMXJVVFXPg4ylg3I= -google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= -google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= -google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= -google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= -google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= -google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= -google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= -google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= @@ -733,46 +416,12 @@ google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfG google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210429181445-86c259c2b4ab/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= -google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= -google.golang.org/genproto v0.0.0-20210517163617-5e0236093d7a/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= -google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= -google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= -google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368 h1:Et6SkiuvnBn+SgrSYXs/BrUpGB4mbdwt4R3vaPIlicA= -google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -785,23 +434,6 @@ google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKa google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= -google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= -google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.43.0 h1:Eeu7bZtDZ2DpRCsLhUlcrLnvYaMK1Gz86a+hMVvELmM= -google.golang.org/grpc v1.43.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -820,30 +452,13 @@ gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLks gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/src-d/go-billy.v4 v4.3.2 h1:0SQA1pRztfTFx2miS8sA97XvooFeNOmvUenF4o0EcVg= -gopkg.in/src-d/go-billy.v4 v4.3.2/go.mod h1:nDjArDMp+XMs1aFAESLRjfGSgfvoYN0hDfzEk0GjC98= -gopkg.in/src-d/go-git-fixtures.v3 v3.5.0 h1:ivZFOIltbce2Mo8IjzUHAFoq/IylO9WHhNOAJK+LsJg= -gopkg.in/src-d/go-git-fixtures.v3 v3.5.0/go.mod h1:dLBcvytrw/TYZsNTWCnkNF2DSIlzWYqTe3rJR56Ac7g= -gopkg.in/src-d/go-git.v4 v4.13.1 h1:SRtFyV8Kxc0UP7aCHcijOMQGPxHSmMOPrzulQWolkYE= -gopkg.in/src-d/go-git.v4 v4.13.1/go.mod h1:nx5NYcxdKxq5fpltdHnPa2Exj4Sx0EclMWZQbYDu2z8= -gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= -gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= -gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= -gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -851,8 +466,6 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -oras.land/oras-go v1.2.0 h1:yoKosVIbsPoFMqAIFHTnrmOuafHal+J/r+I5bdbVWu4= -oras.land/oras-go v1.2.0/go.mod h1:pFNs7oHp2dYsYMSS82HaX5l4mpnGO7hbpPN6EWH2ltc= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= diff --git a/tools/go.mod b/tools/go.mod new file mode 100644 index 0000000..ed12c3d --- /dev/null +++ b/tools/go.mod @@ -0,0 +1,74 @@ +module k8s.io/git-sync/tools + +go 1.18 + +require ( + github.com/estesp/manifest-tool/v2 v2.0.5 + github.com/google/go-licenses v1.2.1 +) + +require ( + github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect + github.com/beorn7/perks v1.0.1 // indirect + github.com/cespare/xxhash/v2 v2.1.2 // indirect + github.com/containerd/containerd v1.6.6 // indirect + github.com/cpuguy83/go-md2man/v2 v2.0.1 // indirect + github.com/docker/cli v20.10.17+incompatible // indirect + github.com/docker/distribution v2.8.1+incompatible // indirect + github.com/docker/docker v20.10.17+incompatible // indirect + github.com/docker/docker-credential-helpers v0.6.4 // indirect + github.com/docker/go-connections v0.4.1-0.20190612165340-fd1b1942c4d5 // indirect + github.com/docker/go-metrics v0.0.1 // indirect + github.com/docker/go-units v0.4.0 // indirect + github.com/emirpasic/gods v1.12.0 // indirect + github.com/fatih/color v1.10.0 // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b // indirect + github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect + github.com/golang/protobuf v1.5.2 // indirect + github.com/google/licenseclassifier v0.0.0-20210722185704-3043a050f148 // indirect + github.com/gorilla/mux v1.8.0 // indirect + github.com/inconshreveable/mousetrap v1.0.0 // indirect + github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect + github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd // indirect + github.com/klauspost/compress v1.13.6 // indirect + github.com/mattn/go-colorable v0.1.8 // indirect + github.com/mattn/go-isatty v0.0.12 // indirect + github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect + github.com/mitchellh/go-homedir v1.1.0 // indirect + github.com/moby/locker v1.0.1 // indirect + github.com/moby/term v0.0.0-20210610120745-9d4ed1856297 // indirect + github.com/morikuni/aec v1.0.0 // indirect + github.com/opencontainers/go-digest v1.0.0 // indirect + github.com/opencontainers/image-spec v1.0.3-0.20211202183452-c5a74bcca799 // indirect + github.com/otiai10/copy v1.6.0 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/prometheus/client_golang v1.12.1 // indirect + github.com/prometheus/client_model v0.2.0 // indirect + github.com/prometheus/common v0.32.1 // indirect + github.com/prometheus/procfs v0.7.3 // indirect + github.com/russross/blackfriday/v2 v2.1.0 // indirect + github.com/sergi/go-diff v1.2.0 // indirect + github.com/sirupsen/logrus v1.8.1 // indirect + github.com/spf13/cobra v1.4.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/src-d/gcfg v1.4.0 // indirect + github.com/urfave/cli v1.22.9 // indirect + github.com/xanzy/ssh-agent v0.2.1 // indirect + go.opencensus.io v0.23.0 // indirect + golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e // indirect + golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 // indirect + golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd // indirect + golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f // indirect + golang.org/x/sys v0.0.0-20220412211240-33da011f77ad // indirect + golang.org/x/tools v0.1.10 // indirect + golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect + google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368 // indirect + google.golang.org/grpc v1.43.0 // indirect + google.golang.org/protobuf v1.27.1 // indirect + gopkg.in/src-d/go-billy.v4 v4.3.2 // indirect + gopkg.in/src-d/go-git.v4 v4.13.1 // indirect + gopkg.in/warnings.v0 v0.1.2 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect + oras.land/oras-go v1.2.0 // indirect +) diff --git a/tools/go.sum b/tools/go.sum new file mode 100644 index 0000000..4d6847c --- /dev/null +++ b/tools/go.sum @@ -0,0 +1,856 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= +cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= +cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= +cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= +cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= +cloud.google.com/go v0.82.0/go.mod h1:vlKccHJGuFBFufnAnuB08dfEH9Y3H7dzDzRECFdC2TA= +cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= +cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= +cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= +cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= +cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= +cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= +cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= +cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/Azure/go-ansiterm v0.0.0-20210608223527-2377c96fe795/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= +github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= +github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/Microsoft/go-winio v0.5.1 h1:aPJp2QD7OOrhO5tQXqQoGSJc+DjDtWTGLOmNyAm6FgY= +github.com/Microsoft/hcsshim v0.9.3 h1:k371PzBuRrz2b+ebGuI2nVgVhgsVX60jMfSw80NECxo= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d h1:UrqY+r/OJnIp5u0s1SbQ8dVfLCZJsnvazdBP5hS4iRs= +github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7 h1:uSoVVbwJiQipAclBbw+8quDsfcvFjOpI5iCf4p/cqCs= +github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7/go.mod h1:6zEj6s6u/ghQa61ZWa/C2Aw3RkjiTBOix7dkqa1VLIs= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= +github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239 h1:kFOfPq6dUM1hTo4JG6LR5AXSUEsOjtdm0kw0FtQtMJA= +github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bshuster-repo/logrus-logstash-hook v1.0.2 h1:JYRWo+QGnQdedgshosug9hxpPYTB9oJ1ZZD3fY31alU= +github.com/bugsnag/bugsnag-go v2.1.2+incompatible h1:E7dor84qzwUO8KdCM68CZwq9QOSR7HXlLx3Wj5vui2s= +github.com/bugsnag/panicwrap v1.3.4 h1:A6sXFtDGsgU/4BLf5JT0o5uYg3EeKgGx3Sfs+/uk3pU= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= +github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/containerd/cgroups v1.0.3 h1:ADZftAkglvCiD44c77s5YmMqaP2pzVCFZvBmAlBdAP4= +github.com/containerd/containerd v1.6.6 h1:xJNPhbrmz8xAMDNoVjHy9YHtWwEQNS+CDkcIRh7t8Y0= +github.com/containerd/containerd v1.6.6/go.mod h1:ZoP1geJldzCVY3Tonoz7b1IXk8rIX0Nltt5QE4OMNk0= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/cpuguy83/go-md2man/v2 v2.0.1 h1:r/myEWzV9lfsM1tFLgDyu0atFtJ1fXn261LKYj/3DxU= +github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/creack/pty v1.1.11 h1:07n33Z8lZxZ2qwegKbObQohDhXDQxiMMz1NOUGYlesw= +github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/danieljoos/wincred v1.1.0/go.mod h1:XYlo+eRTsVA9aHGp7NGjFkPla4m+DCL7hqDjlFjiygg= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/distribution/distribution/v3 v3.0.0-20220526142353-ffbd94cbe269 h1:hbCT8ZPPMqefiAWD2ZKjn7ypokIGViTvBBg/ExLSdCk= +github.com/docker/cli v20.10.17+incompatible h1:eO2KS7ZFeov5UJeaDmIs1NFEDRf32PaqRpvoEkKBy5M= +github.com/docker/cli v20.10.17+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/distribution v2.8.1+incompatible h1:Q50tZOPR6T/hjNsyc9g8/syEs6bk8XXApsHjKukMl68= +github.com/docker/distribution v2.8.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/docker v20.10.17+incompatible h1:JYCuMrWaVNophQTOrMMoSwudOVEfcegoZZrleKc1xwE= +github.com/docker/docker v20.10.17+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker-credential-helpers v0.6.4 h1:axCks+yV+2MR3/kZhAmy07yC56WZ2Pwu/fKWtKuZB0o= +github.com/docker/docker-credential-helpers v0.6.4/go.mod h1:ofX3UI0Gz1TteYBjtgs07O36Pyasyp66D2uKT7H8W1c= +github.com/docker/go-connections v0.4.1-0.20190612165340-fd1b1942c4d5 h1:2o8D0hdBky229bNnc7a8bAZkeVMpH4qsp2Rmt4g/+Zk= +github.com/docker/go-connections v0.4.1-0.20190612165340-fd1b1942c4d5/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= +github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c h1:+pKlWGMw7gf6bQ+oDZB4KHQFypsfjYlq/C4rfL7D3g8= +github.com/docker/go-metrics v0.0.1 h1:AgB/0SvBxihN0X8OR4SjsblXkbMvalQ8cjmtKQ2rQV8= +github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw= +github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw= +github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docker/libtrust v0.0.0-20160708172513-aabc10ec26b7 h1:UhxFibDNY/bfvqU5CAUmr9zpesgbU6SWc8/B4mflAE4= +github.com/emirpasic/gods v1.12.0 h1:QAUIPSaCu4G+POclxeqb3F+WPpdKqFGlw36+yOzGlrg= +github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/estesp/manifest-tool/v2 v2.0.5 h1:YocWuWB32d/mjwwhrVMpZQf5cBC3Shdu6byDBaiSFEo= +github.com/estesp/manifest-tool/v2 v2.0.5/go.mod h1:xXnTTBEDX1yic5KumuBnxU9+8jdVA4vuJkioPzwredI= +github.com/fatih/color v1.10.0 h1:s36xzo75JdqLaaWoiEHk767eHiwo0598uUxyfiPkDsg= +github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= +github.com/felixge/httpsnoop v1.0.1 h1:lvB5Jl89CsZtGIWuTcDM1E/vkVs49/Ml7JJe07l8SPQ= +github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/gliderlabs/ssh v0.2.2 h1:6zsha5zo/TWhRhwqCD3+EarCAgZ2yN28ipRnGPnwkI0= +github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gofrs/uuid v4.2.0+incompatible h1:yyYWMnhkhrKwwr8gAOcOCYxOOscHgDS9yZgBrnJfGa0= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= +github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= +github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/gomodule/redigo v1.8.2 h1:H5XSIre1MB5NbPYFp+i1NBbb5qN1W8Y8YAQoAYbkm8k= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.7 h1:81/ik6ipDQS2aGcBfIN5dHDB36BwrStyeAQquSYCV4o= +github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= +github.com/google/go-licenses v1.2.1 h1:KhURDa5PngT9NrGfH+JJiibFrXzH5AhXGoTSh1PtCWo= +github.com/google/go-licenses v1.2.1/go.mod h1:w7ElwEyjEtPZIxl5Q0sCCFCE7m1Gv6fjrj/eHULENCI= +github.com/google/go-replayers/httpreplay v1.1.1 h1:H91sIMlt1NZzN7R+/ASswyouLJfW0WLW7fhyUFvDEkY= +github.com/google/go-replayers/httpreplay v1.1.1/go.mod h1:gN9GeLIs7l6NUoVaSSnv2RiqK1NiwAmD0MrKeC9IIks= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/licenseclassifier v0.0.0-20210722185704-3043a050f148 h1:TJsAqW6zLRMDTyGmc9TPosfn9OyVlHs8Hrn3pY6ONSY= +github.com/google/licenseclassifier v0.0.0-20210722185704-3043a050f148/go.mod h1:rq9F0RSpNKlrefnf6ZYMHKUnEJBCNzf6AcCXMYBeYvE= +github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= +github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= +github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210506205249-923b5ab0fc1a/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= +github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= +github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4= +github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= +github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= +github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= +github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= +github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 h1:iQTw/8FWTuc7uiaSepXwyf3o52HaUYcV+Tu66S3F5GA= +github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd h1:Coekwdh0v2wtGp9Gmz1Ze3eVRAWJMLokvN3QjdzCHLY= +github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/klauspost/compress v1.13.6 h1:P76CopJELS0TiO2mebmnzgWaajssP/EszplttgQxcgc= +github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/mattn/go-colorable v0.1.8 h1:c1ghPdyEDarC70ftn0y+A/Ee++9zz8ljHG1b13eJ0s8= +github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= +github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/moby/locker v1.0.1 h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg= +github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= +github.com/moby/sys/mountinfo v0.5.0 h1:2Ks8/r6lopsxWi9m58nlwjaeSzUX9iiL1vj5qB/9ObI= +github.com/moby/term v0.0.0-20210610120745-9d4ed1856297 h1:yH0SvLzcbZxcJXho2yh7CqdENGMQe73Cw3woZBpPli0= +github.com/moby/term v0.0.0-20210610120745-9d4ed1856297/go.mod h1:vgPCkQMyxTZ7IDy8SXRufE172gr8+K/JE/7hHFxHW3A= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= +github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= +github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= +github.com/opencontainers/image-spec v1.0.3-0.20211202183452-c5a74bcca799 h1:rc3tiVYb5z54aKaDfakKn0dDjIyPpTtszkjuMzyt7ec= +github.com/opencontainers/image-spec v1.0.3-0.20211202183452-c5a74bcca799/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/otiai10/copy v1.6.0 h1:IinKAryFFuPONZ7cm6T6E2QX/vcJwSnlaA5lfoaXIiQ= +github.com/otiai10/copy v1.6.0/go.mod h1:XWfuS3CrI0R6IE0FbgHsEazaXO8G0LpMp9o8tos0x4E= +github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= +github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= +github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= +github.com/otiai10/mint v1.3.2 h1:VYWnrP5fXmz1MXvjuUvcBrXSjGE6xjON+axB/UrpO3E= +github.com/otiai10/mint v1.3.2/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= +github.com/pelletier/go-buffruneio v0.2.0/go.mod h1:JkE26KsDizTr40EUHkXVtNPvgGtbSNq5BcowyYOWdKo= +github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5 h1:Ii+DKncOVM8Cu1Hc+ETb5K+23HdAMvESYE3ZJ5b5cMI= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= +github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= +github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= +github.com/prometheus/client_golang v1.12.1 h1:ZiaPsmm9uiBeaSMRznKsCDNtPCS0T3JVDGF+06gjBzk= +github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= +github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= +github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= +github.com/prometheus/common v0.32.1 h1:hWIdL3N2HoUx3B8j3YN9mWor0qhY/NlEKZEaXxuIRh4= +github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= +github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/prometheus/procfs v0.7.3 h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0VU= +github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ= +github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= +github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE= +github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/cobra v1.4.0 h1:y+wJpx64xcgO1V+RcnwW0LEHxTKRi2ZDPSBjWnrg88Q= +github.com/spf13/cobra v1.4.0/go.mod h1:Wo4iy3BUC+X2Fybo0PDqwJIv3dNRiZLHQymsfxlB84g= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/src-d/gcfg v1.4.0 h1:xXbNR5AlLSA315x2UO+fTSSAXCDf+Ar38/6oyGbDKQ4= +github.com/src-d/gcfg v1.4.0/go.mod h1:p/UMsR43ujA89BJY9duynAwIpvqEujIH/jFlfL7jWoI= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.2 h1:4jaiDzPyXQvSd7D0EjG45355tLlV3VOECpq10pLC+8s= +github.com/urfave/cli v1.22.9 h1:cv3/KhXGBGjEXLC4bH0sLuJ9BewaAbpk5oyMOveu4pw= +github.com/urfave/cli v1.22.9/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/xanzy/ssh-agent v0.2.1 h1:TCbipTQL2JiiCprBWx9frJ2eJlCYT00NmctrHxVAr70= +github.com/xanzy/ssh-agent v0.2.1/go.mod h1:mLlQY/MoOhWBj+gOGMQkOeiEvkx+8pJSI+0Bx9h2kr4= +github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yvasiyarov/go-metrics v0.0.0-20150112132944-c25f46c4b940 h1:p7OofyZ509h8DmPLh8Hn+EIIZm/xYhdZHJ9GnXHdr6U= +github.com/yvasiyarov/gorelic v0.0.7 h1:4DTF1WOM2ZZS/xMOkTFBOcb6XiHu/PKn3rVo6dbewQE= +github.com/yvasiyarov/newrelic_platform_go v0.0.0-20160601141957-9c099fbc30e9 h1:AsFN8kXcCVkUFHyuzp1FtYbzp1nCO/H6+1uPSGEyPzM= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M= +go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= +go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20220112180741-5e0467b6c7ce/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e h1:T8NU3HyQ8ClP4SEE+KbFlg6n0NhuTsN4MyznaarGsZM= +golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 h1:kQgndtyPBW/JIYERgdxfwMYh3AVStj88WQTlNDi2a+o= +golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd h1:O7DYs+zxREGLKzKoMQrtrEacpb0ZVXA5rIwylE2Xchk= +golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210427180440-81ed05c6b58c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f h1:Ax0t5p6N38Ga0dThY21weqDEyz2oklo4IvDkpigvkD8= +golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190221075227-b4e8571b14e0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210503080704-8803ae5d1324/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220111092808-5a964db01320/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220412211240-33da011f77ad h1:ntjMns5wyP/fN65tdBD4g8J5w8n015+iIIs9rtjXkY0= +golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY= +golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190729092621-ff9f1409240a/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.10 h1:QjFRCZxdOhBJ/UNgnBZLbNV13DlbnK0quyivTnXJM20= +golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= +google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= +google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= +google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= +google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= +google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= +google.golang.org/api v0.46.0/go.mod h1:ceL4oozhkAiTID8XMmJBsIxID/9wMXJVVFXPg4ylg3I= +google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= +google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= +google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= +google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= +google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= +google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= +google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= +google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210429181445-86c259c2b4ab/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= +google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= +google.golang.org/genproto v0.0.0-20210517163617-5e0236093d7a/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= +google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= +google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368 h1:Et6SkiuvnBn+SgrSYXs/BrUpGB4mbdwt4R3vaPIlicA= +google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= +google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.43.0 h1:Eeu7bZtDZ2DpRCsLhUlcrLnvYaMK1Gz86a+hMVvELmM= +google.golang.org/grpc v1.43.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/src-d/go-billy.v4 v4.3.2 h1:0SQA1pRztfTFx2miS8sA97XvooFeNOmvUenF4o0EcVg= +gopkg.in/src-d/go-billy.v4 v4.3.2/go.mod h1:nDjArDMp+XMs1aFAESLRjfGSgfvoYN0hDfzEk0GjC98= +gopkg.in/src-d/go-git-fixtures.v3 v3.5.0 h1:ivZFOIltbce2Mo8IjzUHAFoq/IylO9WHhNOAJK+LsJg= +gopkg.in/src-d/go-git-fixtures.v3 v3.5.0/go.mod h1:dLBcvytrw/TYZsNTWCnkNF2DSIlzWYqTe3rJR56Ac7g= +gopkg.in/src-d/go-git.v4 v4.13.1 h1:SRtFyV8Kxc0UP7aCHcijOMQGPxHSmMOPrzulQWolkYE= +gopkg.in/src-d/go-git.v4 v4.13.1/go.mod h1:nx5NYcxdKxq5fpltdHnPa2Exj4Sx0EclMWZQbYDu2z8= +gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= +gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= +gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +oras.land/oras-go v1.2.0 h1:yoKosVIbsPoFMqAIFHTnrmOuafHal+J/r+I5bdbVWu4= +oras.land/oras-go v1.2.0/go.mod h1:pFNs7oHp2dYsYMSS82HaX5l4mpnGO7hbpPN6EWH2ltc= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= diff --git a/tools.go b/tools/tools.go similarity index 100% rename from tools.go rename to tools/tools.go diff --git a/vendor/github.com/emirpasic/gods/LICENSE b/vendor/github.com/emirpasic/gods/LICENSE deleted file mode 100644 index e5e449b..0000000 --- a/vendor/github.com/emirpasic/gods/LICENSE +++ /dev/null @@ -1,41 +0,0 @@ -Copyright (c) 2015, Emir Pasic -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -------------------------------------------------------------------------------- - -AVL Tree: - -Copyright (c) 2017 Benjamin Scher Purcell - -Permission to use, copy, modify, and distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/vendor/github.com/emirpasic/gods/containers/containers.go b/vendor/github.com/emirpasic/gods/containers/containers.go deleted file mode 100644 index c35ab36..0000000 --- a/vendor/github.com/emirpasic/gods/containers/containers.go +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright (c) 2015, Emir Pasic. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package containers provides core interfaces and functions for data structures. -// -// Container is the base interface for all data structures to implement. -// -// Iterators provide stateful iterators. -// -// Enumerable provides Ruby inspired (each, select, map, find, any?, etc.) container functions. -// -// Serialization provides serializers (marshalers) and deserializers (unmarshalers). -package containers - -import "github.com/emirpasic/gods/utils" - -// Container is base interface that all data structures implement. -type Container interface { - Empty() bool - Size() int - Clear() - Values() []interface{} -} - -// GetSortedValues returns sorted container's elements with respect to the passed comparator. -// Does not effect the ordering of elements within the container. -func GetSortedValues(container Container, comparator utils.Comparator) []interface{} { - values := container.Values() - if len(values) < 2 { - return values - } - utils.Sort(values, comparator) - return values -} diff --git a/vendor/github.com/emirpasic/gods/containers/enumerable.go b/vendor/github.com/emirpasic/gods/containers/enumerable.go deleted file mode 100644 index ac48b54..0000000 --- a/vendor/github.com/emirpasic/gods/containers/enumerable.go +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright (c) 2015, Emir Pasic. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package containers - -// EnumerableWithIndex provides functions for ordered containers whose values can be fetched by an index. -type EnumerableWithIndex interface { - // Each calls the given function once for each element, passing that element's index and value. - Each(func(index int, value interface{})) - - // Map invokes the given function once for each element and returns a - // container containing the values returned by the given function. - // TODO would appreciate help on how to enforce this in containers (don't want to type assert when chaining) - // Map(func(index int, value interface{}) interface{}) Container - - // Select returns a new container containing all elements for which the given function returns a true value. - // TODO need help on how to enforce this in containers (don't want to type assert when chaining) - // Select(func(index int, value interface{}) bool) Container - - // Any passes each element of the container to the given function and - // returns true if the function ever returns true for any element. - Any(func(index int, value interface{}) bool) bool - - // All passes each element of the container to the given function and - // returns true if the function returns true for all elements. - All(func(index int, value interface{}) bool) bool - - // Find passes each element of the container to the given function and returns - // the first (index,value) for which the function is true or -1,nil otherwise - // if no element matches the criteria. - Find(func(index int, value interface{}) bool) (int, interface{}) -} - -// EnumerableWithKey provides functions for ordered containers whose values whose elements are key/value pairs. -type EnumerableWithKey interface { - // Each calls the given function once for each element, passing that element's key and value. - Each(func(key interface{}, value interface{})) - - // Map invokes the given function once for each element and returns a container - // containing the values returned by the given function as key/value pairs. - // TODO need help on how to enforce this in containers (don't want to type assert when chaining) - // Map(func(key interface{}, value interface{}) (interface{}, interface{})) Container - - // Select returns a new container containing all elements for which the given function returns a true value. - // TODO need help on how to enforce this in containers (don't want to type assert when chaining) - // Select(func(key interface{}, value interface{}) bool) Container - - // Any passes each element of the container to the given function and - // returns true if the function ever returns true for any element. - Any(func(key interface{}, value interface{}) bool) bool - - // All passes each element of the container to the given function and - // returns true if the function returns true for all elements. - All(func(key interface{}, value interface{}) bool) bool - - // Find passes each element of the container to the given function and returns - // the first (key,value) for which the function is true or nil,nil otherwise if no element - // matches the criteria. - Find(func(key interface{}, value interface{}) bool) (interface{}, interface{}) -} diff --git a/vendor/github.com/emirpasic/gods/containers/iterator.go b/vendor/github.com/emirpasic/gods/containers/iterator.go deleted file mode 100644 index f1a52a3..0000000 --- a/vendor/github.com/emirpasic/gods/containers/iterator.go +++ /dev/null @@ -1,109 +0,0 @@ -// Copyright (c) 2015, Emir Pasic. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package containers - -// IteratorWithIndex is stateful iterator for ordered containers whose values can be fetched by an index. -type IteratorWithIndex interface { - // Next moves the iterator to the next element and returns true if there was a next element in the container. - // If Next() returns true, then next element's index and value can be retrieved by Index() and Value(). - // If Next() was called for the first time, then it will point the iterator to the first element if it exists. - // Modifies the state of the iterator. - Next() bool - - // Value returns the current element's value. - // Does not modify the state of the iterator. - Value() interface{} - - // Index returns the current element's index. - // Does not modify the state of the iterator. - Index() int - - // Begin resets the iterator to its initial state (one-before-first) - // Call Next() to fetch the first element if any. - Begin() - - // First moves the iterator to the first element and returns true if there was a first element in the container. - // If First() returns true, then first element's index and value can be retrieved by Index() and Value(). - // Modifies the state of the iterator. - First() bool -} - -// IteratorWithKey is a stateful iterator for ordered containers whose elements are key value pairs. -type IteratorWithKey interface { - // Next moves the iterator to the next element and returns true if there was a next element in the container. - // If Next() returns true, then next element's key and value can be retrieved by Key() and Value(). - // If Next() was called for the first time, then it will point the iterator to the first element if it exists. - // Modifies the state of the iterator. - Next() bool - - // Value returns the current element's value. - // Does not modify the state of the iterator. - Value() interface{} - - // Key returns the current element's key. - // Does not modify the state of the iterator. - Key() interface{} - - // Begin resets the iterator to its initial state (one-before-first) - // Call Next() to fetch the first element if any. - Begin() - - // First moves the iterator to the first element and returns true if there was a first element in the container. - // If First() returns true, then first element's key and value can be retrieved by Key() and Value(). - // Modifies the state of the iterator. - First() bool -} - -// ReverseIteratorWithIndex is stateful iterator for ordered containers whose values can be fetched by an index. -// -// Essentially it is the same as IteratorWithIndex, but provides additional: -// -// Prev() function to enable traversal in reverse -// -// Last() function to move the iterator to the last element. -// -// End() function to move the iterator past the last element (one-past-the-end). -type ReverseIteratorWithIndex interface { - // Prev moves the iterator to the previous element and returns true if there was a previous element in the container. - // If Prev() returns true, then previous element's index and value can be retrieved by Index() and Value(). - // Modifies the state of the iterator. - Prev() bool - - // End moves the iterator past the last element (one-past-the-end). - // Call Prev() to fetch the last element if any. - End() - - // Last moves the iterator to the last element and returns true if there was a last element in the container. - // If Last() returns true, then last element's index and value can be retrieved by Index() and Value(). - // Modifies the state of the iterator. - Last() bool - - IteratorWithIndex -} - -// ReverseIteratorWithKey is a stateful iterator for ordered containers whose elements are key value pairs. -// -// Essentially it is the same as IteratorWithKey, but provides additional: -// -// Prev() function to enable traversal in reverse -// -// Last() function to move the iterator to the last element. -type ReverseIteratorWithKey interface { - // Prev moves the iterator to the previous element and returns true if there was a previous element in the container. - // If Prev() returns true, then previous element's key and value can be retrieved by Key() and Value(). - // Modifies the state of the iterator. - Prev() bool - - // End moves the iterator past the last element (one-past-the-end). - // Call Prev() to fetch the last element if any. - End() - - // Last moves the iterator to the last element and returns true if there was a last element in the container. - // If Last() returns true, then last element's key and value can be retrieved by Key() and Value(). - // Modifies the state of the iterator. - Last() bool - - IteratorWithKey -} diff --git a/vendor/github.com/emirpasic/gods/containers/serialization.go b/vendor/github.com/emirpasic/gods/containers/serialization.go deleted file mode 100644 index d7c90c8..0000000 --- a/vendor/github.com/emirpasic/gods/containers/serialization.go +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright (c) 2015, Emir Pasic. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package containers - -// JSONSerializer provides JSON serialization -type JSONSerializer interface { - // ToJSON outputs the JSON representation of containers's elements. - ToJSON() ([]byte, error) -} - -// JSONDeserializer provides JSON deserialization -type JSONDeserializer interface { - // FromJSON populates containers's elements from the input JSON representation. - FromJSON([]byte) error -} diff --git a/vendor/github.com/emirpasic/gods/lists/arraylist/arraylist.go b/vendor/github.com/emirpasic/gods/lists/arraylist/arraylist.go deleted file mode 100644 index bfedac9..0000000 --- a/vendor/github.com/emirpasic/gods/lists/arraylist/arraylist.go +++ /dev/null @@ -1,228 +0,0 @@ -// Copyright (c) 2015, Emir Pasic. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package arraylist implements the array list. -// -// Structure is not thread safe. -// -// Reference: https://en.wikipedia.org/wiki/List_%28abstract_data_type%29 -package arraylist - -import ( - "fmt" - "strings" - - "github.com/emirpasic/gods/lists" - "github.com/emirpasic/gods/utils" -) - -func assertListImplementation() { - var _ lists.List = (*List)(nil) -} - -// List holds the elements in a slice -type List struct { - elements []interface{} - size int -} - -const ( - growthFactor = float32(2.0) // growth by 100% - shrinkFactor = float32(0.25) // shrink when size is 25% of capacity (0 means never shrink) -) - -// New instantiates a new list and adds the passed values, if any, to the list -func New(values ...interface{}) *List { - list := &List{} - if len(values) > 0 { - list.Add(values...) - } - return list -} - -// Add appends a value at the end of the list -func (list *List) Add(values ...interface{}) { - list.growBy(len(values)) - for _, value := range values { - list.elements[list.size] = value - list.size++ - } -} - -// Get returns the element at index. -// Second return parameter is true if index is within bounds of the array and array is not empty, otherwise false. -func (list *List) Get(index int) (interface{}, bool) { - - if !list.withinRange(index) { - return nil, false - } - - return list.elements[index], true -} - -// Remove removes the element at the given index from the list. -func (list *List) Remove(index int) { - - if !list.withinRange(index) { - return - } - - list.elements[index] = nil // cleanup reference - copy(list.elements[index:], list.elements[index+1:list.size]) // shift to the left by one (slow operation, need ways to optimize this) - list.size-- - - list.shrink() -} - -// Contains checks if elements (one or more) are present in the set. -// All elements have to be present in the set for the method to return true. -// Performance time complexity of n^2. -// Returns true if no arguments are passed at all, i.e. set is always super-set of empty set. -func (list *List) Contains(values ...interface{}) bool { - - for _, searchValue := range values { - found := false - for _, element := range list.elements { - if element == searchValue { - found = true - break - } - } - if !found { - return false - } - } - return true -} - -// Values returns all elements in the list. -func (list *List) Values() []interface{} { - newElements := make([]interface{}, list.size, list.size) - copy(newElements, list.elements[:list.size]) - return newElements -} - -//IndexOf returns index of provided element -func (list *List) IndexOf(value interface{}) int { - if list.size == 0 { - return -1 - } - for index, element := range list.elements { - if element == value { - return index - } - } - return -1 -} - -// Empty returns true if list does not contain any elements. -func (list *List) Empty() bool { - return list.size == 0 -} - -// Size returns number of elements within the list. -func (list *List) Size() int { - return list.size -} - -// Clear removes all elements from the list. -func (list *List) Clear() { - list.size = 0 - list.elements = []interface{}{} -} - -// Sort sorts values (in-place) using. -func (list *List) Sort(comparator utils.Comparator) { - if len(list.elements) < 2 { - return - } - utils.Sort(list.elements[:list.size], comparator) -} - -// Swap swaps the two values at the specified positions. -func (list *List) Swap(i, j int) { - if list.withinRange(i) && list.withinRange(j) { - list.elements[i], list.elements[j] = list.elements[j], list.elements[i] - } -} - -// Insert inserts values at specified index position shifting the value at that position (if any) and any subsequent elements to the right. -// Does not do anything if position is negative or bigger than list's size -// Note: position equal to list's size is valid, i.e. append. -func (list *List) Insert(index int, values ...interface{}) { - - if !list.withinRange(index) { - // Append - if index == list.size { - list.Add(values...) - } - return - } - - l := len(values) - list.growBy(l) - list.size += l - copy(list.elements[index+l:], list.elements[index:list.size-l]) - copy(list.elements[index:], values) -} - -// Set the value at specified index -// Does not do anything if position is negative or bigger than list's size -// Note: position equal to list's size is valid, i.e. append. -func (list *List) Set(index int, value interface{}) { - - if !list.withinRange(index) { - // Append - if index == list.size { - list.Add(value) - } - return - } - - list.elements[index] = value -} - -// String returns a string representation of container -func (list *List) String() string { - str := "ArrayList\n" - values := []string{} - for _, value := range list.elements[:list.size] { - values = append(values, fmt.Sprintf("%v", value)) - } - str += strings.Join(values, ", ") - return str -} - -// Check that the index is within bounds of the list -func (list *List) withinRange(index int) bool { - return index >= 0 && index < list.size -} - -func (list *List) resize(cap int) { - newElements := make([]interface{}, cap, cap) - copy(newElements, list.elements) - list.elements = newElements -} - -// Expand the array if necessary, i.e. capacity will be reached if we add n elements -func (list *List) growBy(n int) { - // When capacity is reached, grow by a factor of growthFactor and add number of elements - currentCapacity := cap(list.elements) - if list.size+n >= currentCapacity { - newCapacity := int(growthFactor * float32(currentCapacity+n)) - list.resize(newCapacity) - } -} - -// Shrink the array if necessary, i.e. when size is shrinkFactor percent of current capacity -func (list *List) shrink() { - if shrinkFactor == 0.0 { - return - } - // Shrink when size is at shrinkFactor * capacity - currentCapacity := cap(list.elements) - if list.size <= int(float32(currentCapacity)*shrinkFactor) { - list.resize(list.size) - } -} diff --git a/vendor/github.com/emirpasic/gods/lists/arraylist/enumerable.go b/vendor/github.com/emirpasic/gods/lists/arraylist/enumerable.go deleted file mode 100644 index b3a8738..0000000 --- a/vendor/github.com/emirpasic/gods/lists/arraylist/enumerable.go +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright (c) 2015, Emir Pasic. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package arraylist - -import "github.com/emirpasic/gods/containers" - -func assertEnumerableImplementation() { - var _ containers.EnumerableWithIndex = (*List)(nil) -} - -// Each calls the given function once for each element, passing that element's index and value. -func (list *List) Each(f func(index int, value interface{})) { - iterator := list.Iterator() - for iterator.Next() { - f(iterator.Index(), iterator.Value()) - } -} - -// Map invokes the given function once for each element and returns a -// container containing the values returned by the given function. -func (list *List) Map(f func(index int, value interface{}) interface{}) *List { - newList := &List{} - iterator := list.Iterator() - for iterator.Next() { - newList.Add(f(iterator.Index(), iterator.Value())) - } - return newList -} - -// Select returns a new container containing all elements for which the given function returns a true value. -func (list *List) Select(f func(index int, value interface{}) bool) *List { - newList := &List{} - iterator := list.Iterator() - for iterator.Next() { - if f(iterator.Index(), iterator.Value()) { - newList.Add(iterator.Value()) - } - } - return newList -} - -// Any passes each element of the collection to the given function and -// returns true if the function ever returns true for any element. -func (list *List) Any(f func(index int, value interface{}) bool) bool { - iterator := list.Iterator() - for iterator.Next() { - if f(iterator.Index(), iterator.Value()) { - return true - } - } - return false -} - -// All passes each element of the collection to the given function and -// returns true if the function returns true for all elements. -func (list *List) All(f func(index int, value interface{}) bool) bool { - iterator := list.Iterator() - for iterator.Next() { - if !f(iterator.Index(), iterator.Value()) { - return false - } - } - return true -} - -// Find passes each element of the container to the given function and returns -// the first (index,value) for which the function is true or -1,nil otherwise -// if no element matches the criteria. -func (list *List) Find(f func(index int, value interface{}) bool) (int, interface{}) { - iterator := list.Iterator() - for iterator.Next() { - if f(iterator.Index(), iterator.Value()) { - return iterator.Index(), iterator.Value() - } - } - return -1, nil -} diff --git a/vendor/github.com/emirpasic/gods/lists/arraylist/iterator.go b/vendor/github.com/emirpasic/gods/lists/arraylist/iterator.go deleted file mode 100644 index 38a93f3..0000000 --- a/vendor/github.com/emirpasic/gods/lists/arraylist/iterator.go +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright (c) 2015, Emir Pasic. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package arraylist - -import "github.com/emirpasic/gods/containers" - -func assertIteratorImplementation() { - var _ containers.ReverseIteratorWithIndex = (*Iterator)(nil) -} - -// Iterator holding the iterator's state -type Iterator struct { - list *List - index int -} - -// Iterator returns a stateful iterator whose values can be fetched by an index. -func (list *List) Iterator() Iterator { - return Iterator{list: list, index: -1} -} - -// Next moves the iterator to the next element and returns true if there was a next element in the container. -// If Next() returns true, then next element's index and value can be retrieved by Index() and Value(). -// If Next() was called for the first time, then it will point the iterator to the first element if it exists. -// Modifies the state of the iterator. -func (iterator *Iterator) Next() bool { - if iterator.index < iterator.list.size { - iterator.index++ - } - return iterator.list.withinRange(iterator.index) -} - -// Prev moves the iterator to the previous element and returns true if there was a previous element in the container. -// If Prev() returns true, then previous element's index and value can be retrieved by Index() and Value(). -// Modifies the state of the iterator. -func (iterator *Iterator) Prev() bool { - if iterator.index >= 0 { - iterator.index-- - } - return iterator.list.withinRange(iterator.index) -} - -// Value returns the current element's value. -// Does not modify the state of the iterator. -func (iterator *Iterator) Value() interface{} { - return iterator.list.elements[iterator.index] -} - -// Index returns the current element's index. -// Does not modify the state of the iterator. -func (iterator *Iterator) Index() int { - return iterator.index -} - -// Begin resets the iterator to its initial state (one-before-first) -// Call Next() to fetch the first element if any. -func (iterator *Iterator) Begin() { - iterator.index = -1 -} - -// End moves the iterator past the last element (one-past-the-end). -// Call Prev() to fetch the last element if any. -func (iterator *Iterator) End() { - iterator.index = iterator.list.size -} - -// First moves the iterator to the first element and returns true if there was a first element in the container. -// If First() returns true, then first element's index and value can be retrieved by Index() and Value(). -// Modifies the state of the iterator. -func (iterator *Iterator) First() bool { - iterator.Begin() - return iterator.Next() -} - -// Last moves the iterator to the last element and returns true if there was a last element in the container. -// If Last() returns true, then last element's index and value can be retrieved by Index() and Value(). -// Modifies the state of the iterator. -func (iterator *Iterator) Last() bool { - iterator.End() - return iterator.Prev() -} diff --git a/vendor/github.com/emirpasic/gods/lists/arraylist/serialization.go b/vendor/github.com/emirpasic/gods/lists/arraylist/serialization.go deleted file mode 100644 index 2f283fb..0000000 --- a/vendor/github.com/emirpasic/gods/lists/arraylist/serialization.go +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) 2015, Emir Pasic. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package arraylist - -import ( - "encoding/json" - "github.com/emirpasic/gods/containers" -) - -func assertSerializationImplementation() { - var _ containers.JSONSerializer = (*List)(nil) - var _ containers.JSONDeserializer = (*List)(nil) -} - -// ToJSON outputs the JSON representation of list's elements. -func (list *List) ToJSON() ([]byte, error) { - return json.Marshal(list.elements[:list.size]) -} - -// FromJSON populates list's elements from the input JSON representation. -func (list *List) FromJSON(data []byte) error { - err := json.Unmarshal(data, &list.elements) - if err == nil { - list.size = len(list.elements) - } - return err -} diff --git a/vendor/github.com/emirpasic/gods/lists/lists.go b/vendor/github.com/emirpasic/gods/lists/lists.go deleted file mode 100644 index 1f6bb08..0000000 --- a/vendor/github.com/emirpasic/gods/lists/lists.go +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright (c) 2015, Emir Pasic. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package lists provides an abstract List interface. -// -// In computer science, a list or sequence is an abstract data type that represents an ordered sequence of values, where the same value may occur more than once. An instance of a list is a computer representation of the mathematical concept of a finite sequence; the (potentially) infinite analog of a list is a stream. Lists are a basic example of containers, as they contain other values. If the same value occurs multiple times, each occurrence is considered a distinct item. -// -// Reference: https://en.wikipedia.org/wiki/List_%28abstract_data_type%29 -package lists - -import ( - "github.com/emirpasic/gods/containers" - "github.com/emirpasic/gods/utils" -) - -// List interface that all lists implement -type List interface { - Get(index int) (interface{}, bool) - Remove(index int) - Add(values ...interface{}) - Contains(values ...interface{}) bool - Sort(comparator utils.Comparator) - Swap(index1, index2 int) - Insert(index int, values ...interface{}) - Set(index int, value interface{}) - - containers.Container - // Empty() bool - // Size() int - // Clear() - // Values() []interface{} -} diff --git a/vendor/github.com/emirpasic/gods/trees/binaryheap/binaryheap.go b/vendor/github.com/emirpasic/gods/trees/binaryheap/binaryheap.go deleted file mode 100644 index 70b28cf..0000000 --- a/vendor/github.com/emirpasic/gods/trees/binaryheap/binaryheap.go +++ /dev/null @@ -1,163 +0,0 @@ -// Copyright (c) 2015, Emir Pasic. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package binaryheap implements a binary heap backed by array list. -// -// Comparator defines this heap as either min or max heap. -// -// Structure is not thread safe. -// -// References: http://en.wikipedia.org/wiki/Binary_heap -package binaryheap - -import ( - "fmt" - "github.com/emirpasic/gods/lists/arraylist" - "github.com/emirpasic/gods/trees" - "github.com/emirpasic/gods/utils" - "strings" -) - -func assertTreeImplementation() { - var _ trees.Tree = (*Heap)(nil) -} - -// Heap holds elements in an array-list -type Heap struct { - list *arraylist.List - Comparator utils.Comparator -} - -// NewWith instantiates a new empty heap tree with the custom comparator. -func NewWith(comparator utils.Comparator) *Heap { - return &Heap{list: arraylist.New(), Comparator: comparator} -} - -// NewWithIntComparator instantiates a new empty heap with the IntComparator, i.e. elements are of type int. -func NewWithIntComparator() *Heap { - return &Heap{list: arraylist.New(), Comparator: utils.IntComparator} -} - -// NewWithStringComparator instantiates a new empty heap with the StringComparator, i.e. elements are of type string. -func NewWithStringComparator() *Heap { - return &Heap{list: arraylist.New(), Comparator: utils.StringComparator} -} - -// Push adds a value onto the heap and bubbles it up accordingly. -func (heap *Heap) Push(values ...interface{}) { - if len(values) == 1 { - heap.list.Add(values[0]) - heap.bubbleUp() - } else { - // Reference: https://en.wikipedia.org/wiki/Binary_heap#Building_a_heap - for _, value := range values { - heap.list.Add(value) - } - size := heap.list.Size()/2 + 1 - for i := size; i >= 0; i-- { - heap.bubbleDownIndex(i) - } - } -} - -// Pop removes top element on heap and returns it, or nil if heap is empty. -// Second return parameter is true, unless the heap was empty and there was nothing to pop. -func (heap *Heap) Pop() (value interface{}, ok bool) { - value, ok = heap.list.Get(0) - if !ok { - return - } - lastIndex := heap.list.Size() - 1 - heap.list.Swap(0, lastIndex) - heap.list.Remove(lastIndex) - heap.bubbleDown() - return -} - -// Peek returns top element on the heap without removing it, or nil if heap is empty. -// Second return parameter is true, unless the heap was empty and there was nothing to peek. -func (heap *Heap) Peek() (value interface{}, ok bool) { - return heap.list.Get(0) -} - -// Empty returns true if heap does not contain any elements. -func (heap *Heap) Empty() bool { - return heap.list.Empty() -} - -// Size returns number of elements within the heap. -func (heap *Heap) Size() int { - return heap.list.Size() -} - -// Clear removes all elements from the heap. -func (heap *Heap) Clear() { - heap.list.Clear() -} - -// Values returns all elements in the heap. -func (heap *Heap) Values() []interface{} { - return heap.list.Values() -} - -// String returns a string representation of container -func (heap *Heap) String() string { - str := "BinaryHeap\n" - values := []string{} - for _, value := range heap.list.Values() { - values = append(values, fmt.Sprintf("%v", value)) - } - str += strings.Join(values, ", ") - return str -} - -// Performs the "bubble down" operation. This is to place the element that is at the root -// of the heap in its correct place so that the heap maintains the min/max-heap order property. -func (heap *Heap) bubbleDown() { - heap.bubbleDownIndex(0) -} - -// Performs the "bubble down" operation. This is to place the element that is at the index -// of the heap in its correct place so that the heap maintains the min/max-heap order property. -func (heap *Heap) bubbleDownIndex(index int) { - size := heap.list.Size() - for leftIndex := index<<1 + 1; leftIndex < size; leftIndex = index<<1 + 1 { - rightIndex := index<<1 + 2 - smallerIndex := leftIndex - leftValue, _ := heap.list.Get(leftIndex) - rightValue, _ := heap.list.Get(rightIndex) - if rightIndex < size && heap.Comparator(leftValue, rightValue) > 0 { - smallerIndex = rightIndex - } - indexValue, _ := heap.list.Get(index) - smallerValue, _ := heap.list.Get(smallerIndex) - if heap.Comparator(indexValue, smallerValue) > 0 { - heap.list.Swap(index, smallerIndex) - } else { - break - } - index = smallerIndex - } -} - -// Performs the "bubble up" operation. This is to place a newly inserted -// element (i.e. last element in the list) in its correct place so that -// the heap maintains the min/max-heap order property. -func (heap *Heap) bubbleUp() { - index := heap.list.Size() - 1 - for parentIndex := (index - 1) >> 1; index > 0; parentIndex = (index - 1) >> 1 { - indexValue, _ := heap.list.Get(index) - parentValue, _ := heap.list.Get(parentIndex) - if heap.Comparator(parentValue, indexValue) <= 0 { - break - } - heap.list.Swap(index, parentIndex) - index = parentIndex - } -} - -// Check that the index is within bounds of the list -func (heap *Heap) withinRange(index int) bool { - return index >= 0 && index < heap.list.Size() -} diff --git a/vendor/github.com/emirpasic/gods/trees/binaryheap/iterator.go b/vendor/github.com/emirpasic/gods/trees/binaryheap/iterator.go deleted file mode 100644 index beeb8d7..0000000 --- a/vendor/github.com/emirpasic/gods/trees/binaryheap/iterator.go +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright (c) 2015, Emir Pasic. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package binaryheap - -import "github.com/emirpasic/gods/containers" - -func assertIteratorImplementation() { - var _ containers.ReverseIteratorWithIndex = (*Iterator)(nil) -} - -// Iterator returns a stateful iterator whose values can be fetched by an index. -type Iterator struct { - heap *Heap - index int -} - -// Iterator returns a stateful iterator whose values can be fetched by an index. -func (heap *Heap) Iterator() Iterator { - return Iterator{heap: heap, index: -1} -} - -// Next moves the iterator to the next element and returns true if there was a next element in the container. -// If Next() returns true, then next element's index and value can be retrieved by Index() and Value(). -// If Next() was called for the first time, then it will point the iterator to the first element if it exists. -// Modifies the state of the iterator. -func (iterator *Iterator) Next() bool { - if iterator.index < iterator.heap.Size() { - iterator.index++ - } - return iterator.heap.withinRange(iterator.index) -} - -// Prev moves the iterator to the previous element and returns true if there was a previous element in the container. -// If Prev() returns true, then previous element's index and value can be retrieved by Index() and Value(). -// Modifies the state of the iterator. -func (iterator *Iterator) Prev() bool { - if iterator.index >= 0 { - iterator.index-- - } - return iterator.heap.withinRange(iterator.index) -} - -// Value returns the current element's value. -// Does not modify the state of the iterator. -func (iterator *Iterator) Value() interface{} { - value, _ := iterator.heap.list.Get(iterator.index) - return value -} - -// Index returns the current element's index. -// Does not modify the state of the iterator. -func (iterator *Iterator) Index() int { - return iterator.index -} - -// Begin resets the iterator to its initial state (one-before-first) -// Call Next() to fetch the first element if any. -func (iterator *Iterator) Begin() { - iterator.index = -1 -} - -// End moves the iterator past the last element (one-past-the-end). -// Call Prev() to fetch the last element if any. -func (iterator *Iterator) End() { - iterator.index = iterator.heap.Size() -} - -// First moves the iterator to the first element and returns true if there was a first element in the container. -// If First() returns true, then first element's index and value can be retrieved by Index() and Value(). -// Modifies the state of the iterator. -func (iterator *Iterator) First() bool { - iterator.Begin() - return iterator.Next() -} - -// Last moves the iterator to the last element and returns true if there was a last element in the container. -// If Last() returns true, then last element's index and value can be retrieved by Index() and Value(). -// Modifies the state of the iterator. -func (iterator *Iterator) Last() bool { - iterator.End() - return iterator.Prev() -} diff --git a/vendor/github.com/emirpasic/gods/trees/binaryheap/serialization.go b/vendor/github.com/emirpasic/gods/trees/binaryheap/serialization.go deleted file mode 100644 index 00d0c77..0000000 --- a/vendor/github.com/emirpasic/gods/trees/binaryheap/serialization.go +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (c) 2015, Emir Pasic. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package binaryheap - -import "github.com/emirpasic/gods/containers" - -func assertSerializationImplementation() { - var _ containers.JSONSerializer = (*Heap)(nil) - var _ containers.JSONDeserializer = (*Heap)(nil) -} - -// ToJSON outputs the JSON representation of the heap. -func (heap *Heap) ToJSON() ([]byte, error) { - return heap.list.ToJSON() -} - -// FromJSON populates the heap from the input JSON representation. -func (heap *Heap) FromJSON(data []byte) error { - return heap.list.FromJSON(data) -} diff --git a/vendor/github.com/emirpasic/gods/trees/trees.go b/vendor/github.com/emirpasic/gods/trees/trees.go deleted file mode 100644 index a5a7427..0000000 --- a/vendor/github.com/emirpasic/gods/trees/trees.go +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (c) 2015, Emir Pasic. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package trees provides an abstract Tree interface. -// -// In computer science, a tree is a widely used abstract data type (ADT) or data structure implementing this ADT that simulates a hierarchical tree structure, with a root value and subtrees of children with a parent node, represented as a set of linked nodes. -// -// Reference: https://en.wikipedia.org/wiki/Tree_%28data_structure%29 -package trees - -import "github.com/emirpasic/gods/containers" - -// Tree interface that all trees implement -type Tree interface { - containers.Container - // Empty() bool - // Size() int - // Clear() - // Values() []interface{} -} diff --git a/vendor/github.com/emirpasic/gods/utils/comparator.go b/vendor/github.com/emirpasic/gods/utils/comparator.go deleted file mode 100644 index 6a9afbf..0000000 --- a/vendor/github.com/emirpasic/gods/utils/comparator.go +++ /dev/null @@ -1,251 +0,0 @@ -// Copyright (c) 2015, Emir Pasic. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package utils - -import "time" - -// Comparator will make type assertion (see IntComparator for example), -// which will panic if a or b are not of the asserted type. -// -// Should return a number: -// negative , if a < b -// zero , if a == b -// positive , if a > b -type Comparator func(a, b interface{}) int - -// StringComparator provides a fast comparison on strings -func StringComparator(a, b interface{}) int { - s1 := a.(string) - s2 := b.(string) - min := len(s2) - if len(s1) < len(s2) { - min = len(s1) - } - diff := 0 - for i := 0; i < min && diff == 0; i++ { - diff = int(s1[i]) - int(s2[i]) - } - if diff == 0 { - diff = len(s1) - len(s2) - } - if diff < 0 { - return -1 - } - if diff > 0 { - return 1 - } - return 0 -} - -// IntComparator provides a basic comparison on int -func IntComparator(a, b interface{}) int { - aAsserted := a.(int) - bAsserted := b.(int) - switch { - case aAsserted > bAsserted: - return 1 - case aAsserted < bAsserted: - return -1 - default: - return 0 - } -} - -// Int8Comparator provides a basic comparison on int8 -func Int8Comparator(a, b interface{}) int { - aAsserted := a.(int8) - bAsserted := b.(int8) - switch { - case aAsserted > bAsserted: - return 1 - case aAsserted < bAsserted: - return -1 - default: - return 0 - } -} - -// Int16Comparator provides a basic comparison on int16 -func Int16Comparator(a, b interface{}) int { - aAsserted := a.(int16) - bAsserted := b.(int16) - switch { - case aAsserted > bAsserted: - return 1 - case aAsserted < bAsserted: - return -1 - default: - return 0 - } -} - -// Int32Comparator provides a basic comparison on int32 -func Int32Comparator(a, b interface{}) int { - aAsserted := a.(int32) - bAsserted := b.(int32) - switch { - case aAsserted > bAsserted: - return 1 - case aAsserted < bAsserted: - return -1 - default: - return 0 - } -} - -// Int64Comparator provides a basic comparison on int64 -func Int64Comparator(a, b interface{}) int { - aAsserted := a.(int64) - bAsserted := b.(int64) - switch { - case aAsserted > bAsserted: - return 1 - case aAsserted < bAsserted: - return -1 - default: - return 0 - } -} - -// UIntComparator provides a basic comparison on uint -func UIntComparator(a, b interface{}) int { - aAsserted := a.(uint) - bAsserted := b.(uint) - switch { - case aAsserted > bAsserted: - return 1 - case aAsserted < bAsserted: - return -1 - default: - return 0 - } -} - -// UInt8Comparator provides a basic comparison on uint8 -func UInt8Comparator(a, b interface{}) int { - aAsserted := a.(uint8) - bAsserted := b.(uint8) - switch { - case aAsserted > bAsserted: - return 1 - case aAsserted < bAsserted: - return -1 - default: - return 0 - } -} - -// UInt16Comparator provides a basic comparison on uint16 -func UInt16Comparator(a, b interface{}) int { - aAsserted := a.(uint16) - bAsserted := b.(uint16) - switch { - case aAsserted > bAsserted: - return 1 - case aAsserted < bAsserted: - return -1 - default: - return 0 - } -} - -// UInt32Comparator provides a basic comparison on uint32 -func UInt32Comparator(a, b interface{}) int { - aAsserted := a.(uint32) - bAsserted := b.(uint32) - switch { - case aAsserted > bAsserted: - return 1 - case aAsserted < bAsserted: - return -1 - default: - return 0 - } -} - -// UInt64Comparator provides a basic comparison on uint64 -func UInt64Comparator(a, b interface{}) int { - aAsserted := a.(uint64) - bAsserted := b.(uint64) - switch { - case aAsserted > bAsserted: - return 1 - case aAsserted < bAsserted: - return -1 - default: - return 0 - } -} - -// Float32Comparator provides a basic comparison on float32 -func Float32Comparator(a, b interface{}) int { - aAsserted := a.(float32) - bAsserted := b.(float32) - switch { - case aAsserted > bAsserted: - return 1 - case aAsserted < bAsserted: - return -1 - default: - return 0 - } -} - -// Float64Comparator provides a basic comparison on float64 -func Float64Comparator(a, b interface{}) int { - aAsserted := a.(float64) - bAsserted := b.(float64) - switch { - case aAsserted > bAsserted: - return 1 - case aAsserted < bAsserted: - return -1 - default: - return 0 - } -} - -// ByteComparator provides a basic comparison on byte -func ByteComparator(a, b interface{}) int { - aAsserted := a.(byte) - bAsserted := b.(byte) - switch { - case aAsserted > bAsserted: - return 1 - case aAsserted < bAsserted: - return -1 - default: - return 0 - } -} - -// RuneComparator provides a basic comparison on rune -func RuneComparator(a, b interface{}) int { - aAsserted := a.(rune) - bAsserted := b.(rune) - switch { - case aAsserted > bAsserted: - return 1 - case aAsserted < bAsserted: - return -1 - default: - return 0 - } -} - -// TimeComparator provides a basic comparison on time.Time -func TimeComparator(a, b interface{}) int { - aAsserted := a.(time.Time) - bAsserted := b.(time.Time) - - switch { - case aAsserted.After(bAsserted): - return 1 - case aAsserted.Before(bAsserted): - return -1 - default: - return 0 - } -} diff --git a/vendor/github.com/emirpasic/gods/utils/sort.go b/vendor/github.com/emirpasic/gods/utils/sort.go deleted file mode 100644 index 79ced1f..0000000 --- a/vendor/github.com/emirpasic/gods/utils/sort.go +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) 2015, Emir Pasic. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package utils - -import "sort" - -// Sort sorts values (in-place) with respect to the given comparator. -// -// Uses Go's sort (hybrid of quicksort for large and then insertion sort for smaller slices). -func Sort(values []interface{}, comparator Comparator) { - sort.Sort(sortable{values, comparator}) -} - -type sortable struct { - values []interface{} - comparator Comparator -} - -func (s sortable) Len() int { - return len(s.values) -} -func (s sortable) Swap(i, j int) { - s.values[i], s.values[j] = s.values[j], s.values[i] -} -func (s sortable) Less(i, j int) bool { - return s.comparator(s.values[i], s.values[j]) < 0 -} diff --git a/vendor/github.com/emirpasic/gods/utils/utils.go b/vendor/github.com/emirpasic/gods/utils/utils.go deleted file mode 100644 index 1ad49cb..0000000 --- a/vendor/github.com/emirpasic/gods/utils/utils.go +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright (c) 2015, Emir Pasic. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package utils provides common utility functions. -// -// Provided functionalities: -// - sorting -// - comparators -package utils - -import ( - "fmt" - "strconv" -) - -// ToString converts a value to string. -func ToString(value interface{}) string { - switch value.(type) { - case string: - return value.(string) - case int8: - return strconv.FormatInt(int64(value.(int8)), 10) - case int16: - return strconv.FormatInt(int64(value.(int16)), 10) - case int32: - return strconv.FormatInt(int64(value.(int32)), 10) - case int64: - return strconv.FormatInt(int64(value.(int64)), 10) - case uint8: - return strconv.FormatUint(uint64(value.(uint8)), 10) - case uint16: - return strconv.FormatUint(uint64(value.(uint16)), 10) - case uint32: - return strconv.FormatUint(uint64(value.(uint32)), 10) - case uint64: - return strconv.FormatUint(uint64(value.(uint64)), 10) - case float32: - return strconv.FormatFloat(float64(value.(float32)), 'g', -1, 64) - case float64: - return strconv.FormatFloat(float64(value.(float64)), 'g', -1, 64) - case bool: - return strconv.FormatBool(value.(bool)) - default: - return fmt.Sprintf("%+v", value) - } -} diff --git a/vendor/github.com/golang/glog/LICENSE b/vendor/github.com/golang/glog/LICENSE deleted file mode 100644 index 37ec93a..0000000 --- a/vendor/github.com/golang/glog/LICENSE +++ /dev/null @@ -1,191 +0,0 @@ -Apache License -Version 2.0, January 2004 -http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - -"License" shall mean the terms and conditions for use, reproduction, and -distribution as defined by Sections 1 through 9 of this document. - -"Licensor" shall mean the copyright owner or entity authorized by the copyright -owner that is granting the License. - -"Legal Entity" shall mean the union of the acting entity and all other entities -that control, are controlled by, or are under common control with that entity. -For the purposes of this definition, "control" means (i) the power, direct or -indirect, to cause the direction or management of such entity, whether by -contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the -outstanding shares, or (iii) beneficial ownership of such entity. - -"You" (or "Your") shall mean an individual or Legal Entity exercising -permissions granted by this License. - -"Source" form shall mean the preferred form for making modifications, including -but not limited to software source code, documentation source, and configuration -files. - -"Object" form shall mean any form resulting from mechanical transformation or -translation of a Source form, including but not limited to compiled object code, -generated documentation, and conversions to other media types. - -"Work" shall mean the work of authorship, whether in Source or Object form, made -available under the License, as indicated by a copyright notice that is included -in or attached to the work (an example is provided in the Appendix below). - -"Derivative Works" shall mean any work, whether in Source or Object form, that -is based on (or derived from) the Work and for which the editorial revisions, -annotations, elaborations, or other modifications represent, as a whole, an -original work of authorship. For the purposes of this License, Derivative Works -shall not include works that remain separable from, or merely link (or bind by -name) to the interfaces of, the Work and Derivative Works thereof. - -"Contribution" shall mean any work of authorship, including the original version -of the Work and any modifications or additions to that Work or Derivative Works -thereof, that is intentionally submitted to Licensor for inclusion in the Work -by the copyright owner or by an individual or Legal Entity authorized to submit -on behalf of the copyright owner. For the purposes of this definition, -"submitted" means any form of electronic, verbal, or written communication sent -to the Licensor or its representatives, including but not limited to -communication on electronic mailing lists, source code control systems, and -issue tracking systems that are managed by, or on behalf of, the Licensor for -the purpose of discussing and improving the Work, but excluding communication -that is conspicuously marked or otherwise designated in writing by the copyright -owner as "Not a Contribution." - -"Contributor" shall mean Licensor and any individual or Legal Entity on behalf -of whom a Contribution has been received by Licensor and subsequently -incorporated within the Work. - -2. Grant of Copyright License. - -Subject to the terms and conditions of this License, each Contributor hereby -grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, -irrevocable copyright license to reproduce, prepare Derivative Works of, -publicly display, publicly perform, sublicense, and distribute the Work and such -Derivative Works in Source or Object form. - -3. Grant of Patent License. - -Subject to the terms and conditions of this License, each Contributor 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, and otherwise transfer the Work, where -such license applies only to those patent claims licensable by such Contributor -that are necessarily infringed by their Contribution(s) alone or by combination -of their Contribution(s) with the Work to which such Contribution(s) was -submitted. If You institute patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Work or a -Contribution incorporated within the Work constitutes direct or contributory -patent infringement, then any patent licenses granted to You under this License -for that Work shall terminate as of the date such litigation is filed. - -4. Redistribution. - -You may reproduce and distribute copies of the Work or Derivative Works thereof -in any medium, with or without modifications, and in Source or Object form, -provided that You meet the following conditions: - -You must give any other recipients of the Work or Derivative Works a copy of -this License; and -You must cause any modified files to carry prominent notices stating that You -changed the files; and -You must retain, in the Source form of any Derivative Works that You distribute, -all copyright, patent, trademark, and attribution notices from the Source form -of the Work, excluding those notices that do not pertain to any part of the -Derivative Works; and -If the Work includes a "NOTICE" text file as part of its distribution, then any -Derivative Works that You distribute must include a readable copy of the -attribution notices contained within such NOTICE file, excluding those notices -that do not pertain to any part of the Derivative Works, in at least one of the -following places: within a NOTICE text file distributed as part of the -Derivative Works; within the Source form or documentation, if provided along -with the Derivative Works; or, within a display generated by the Derivative -Works, if and wherever such third-party notices normally appear. The contents of -the NOTICE file are for informational purposes only and do not modify the -License. You may add Your own attribution notices within Derivative Works that -You distribute, alongside or as an addendum to the NOTICE text from the Work, -provided that such additional attribution notices cannot be construed as -modifying the License. -You may add Your own copyright statement to Your modifications and may provide -additional or different license terms and conditions for use, reproduction, or -distribution of Your modifications, or for any such Derivative Works as a whole, -provided Your use, reproduction, and distribution of the Work otherwise complies -with the conditions stated in this License. - -5. Submission of Contributions. - -Unless You explicitly state otherwise, any Contribution intentionally submitted -for inclusion in the Work by You to the Licensor shall be under the terms and -conditions of this License, without any additional terms or conditions. -Notwithstanding the above, nothing herein shall supersede or modify the terms of -any separate license agreement you may have executed with Licensor regarding -such Contributions. - -6. Trademarks. - -This License does not grant permission to use the trade names, trademarks, -service marks, or product names of the Licensor, except as required for -reasonable and customary use in describing the origin of the Work and -reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. - -Unless required by applicable law or agreed to in writing, Licensor provides the -Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, -including, without limitation, any warranties or conditions of TITLE, -NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are -solely responsible for determining the appropriateness of using or -redistributing the Work and assume any risks associated with Your exercise of -permissions under this License. - -8. Limitation of Liability. - -In no event and under no legal theory, whether in tort (including negligence), -contract, or otherwise, unless required by applicable law (such as deliberate -and grossly negligent acts) or agreed to in writing, shall any Contributor be -liable to You for damages, including any direct, indirect, special, incidental, -or consequential damages of any character arising as a result of this License or -out of the use or inability to use the Work (including but not limited to -damages for loss of goodwill, work stoppage, computer failure or malfunction, or -any and all other commercial damages or losses), even if such Contributor has -been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. - -While redistributing the Work or Derivative Works thereof, You may choose to -offer, and charge a fee for, acceptance of support, warranty, indemnity, or -other liability obligations and/or rights consistent with this License. However, -in accepting such obligations, You may act only on Your own behalf and on Your -sole responsibility, not on behalf of any other Contributor, and only if You -agree to indemnify, defend, and hold each Contributor harmless for any liability -incurred by, or claims asserted against, such Contributor by reason of your -accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -APPENDIX: How to apply the Apache License to your work - -To apply the Apache License to your work, attach the following boilerplate -notice, with the fields enclosed by brackets "[]" replaced with your own -identifying information. (Don't include the brackets!) The text should be -enclosed in the appropriate comment syntax for the file format. We also -recommend that a file or class name and description of purpose be included on -the same "printed page" as the copyright notice for easier identification within -third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/vendor/github.com/golang/glog/README b/vendor/github.com/golang/glog/README deleted file mode 100644 index 387b4eb..0000000 --- a/vendor/github.com/golang/glog/README +++ /dev/null @@ -1,44 +0,0 @@ -glog -==== - -Leveled execution logs for Go. - -This is an efficient pure Go implementation of leveled logs in the -manner of the open source C++ package - https://github.com/google/glog - -By binding methods to booleans it is possible to use the log package -without paying the expense of evaluating the arguments to the log. -Through the -vmodule flag, the package also provides fine-grained -control over logging at the file level. - -The comment from glog.go introduces the ideas: - - Package glog implements logging analogous to the Google-internal - C++ INFO/ERROR/V setup. It provides functions Info, Warning, - Error, Fatal, plus formatting variants such as Infof. It - also provides V-style logging controlled by the -v and - -vmodule=file=2 flags. - - Basic examples: - - glog.Info("Prepare to repel boarders") - - glog.Fatalf("Initialization failed: %s", err) - - See the documentation for the V function for an explanation - of these examples: - - if glog.V(2) { - glog.Info("Starting transaction...") - } - - glog.V(2).Infoln("Processed", nItems, "elements") - - -The repository contains an open source version of the log package -used inside Google. The master copy of the source lives inside -Google, not here. The code in this repo is for export only and is not itself -under development. Feature requests will be ignored. - -Send bug reports to golang-nuts@googlegroups.com. diff --git a/vendor/github.com/golang/glog/glog.go b/vendor/github.com/golang/glog/glog.go deleted file mode 100644 index 54bd7af..0000000 --- a/vendor/github.com/golang/glog/glog.go +++ /dev/null @@ -1,1180 +0,0 @@ -// Go support for leveled logs, analogous to https://code.google.com/p/google-glog/ -// -// Copyright 2013 Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Package glog implements logging analogous to the Google-internal C++ INFO/ERROR/V setup. -// It provides functions Info, Warning, Error, Fatal, plus formatting variants such as -// Infof. It also provides V-style logging controlled by the -v and -vmodule=file=2 flags. -// -// Basic examples: -// -// glog.Info("Prepare to repel boarders") -// -// glog.Fatalf("Initialization failed: %s", err) -// -// See the documentation for the V function for an explanation of these examples: -// -// if glog.V(2) { -// glog.Info("Starting transaction...") -// } -// -// glog.V(2).Infoln("Processed", nItems, "elements") -// -// Log output is buffered and written periodically using Flush. Programs -// should call Flush before exiting to guarantee all log output is written. -// -// By default, all log statements write to files in a temporary directory. -// This package provides several flags that modify this behavior. -// As a result, flag.Parse must be called before any logging is done. -// -// -logtostderr=false -// Logs are written to standard error instead of to files. -// -alsologtostderr=false -// Logs are written to standard error as well as to files. -// -stderrthreshold=ERROR -// Log events at or above this severity are logged to standard -// error as well as to files. -// -log_dir="" -// Log files will be written to this directory instead of the -// default temporary directory. -// -// Other flags provide aids to debugging. -// -// -log_backtrace_at="" -// When set to a file and line number holding a logging statement, -// such as -// -log_backtrace_at=gopherflakes.go:234 -// a stack trace will be written to the Info log whenever execution -// hits that statement. (Unlike with -vmodule, the ".go" must be -// present.) -// -v=0 -// Enable V-leveled logging at the specified level. -// -vmodule="" -// The syntax of the argument is a comma-separated list of pattern=N, -// where pattern is a literal file name (minus the ".go" suffix) or -// "glob" pattern and N is a V level. For instance, -// -vmodule=gopher*=3 -// sets the V level to 3 in all Go files whose names begin "gopher". -// -package glog - -import ( - "bufio" - "bytes" - "errors" - "flag" - "fmt" - "io" - stdLog "log" - "os" - "path/filepath" - "runtime" - "strconv" - "strings" - "sync" - "sync/atomic" - "time" -) - -// severity identifies the sort of log: info, warning etc. It also implements -// the flag.Value interface. The -stderrthreshold flag is of type severity and -// should be modified only through the flag.Value interface. The values match -// the corresponding constants in C++. -type severity int32 // sync/atomic int32 - -// These constants identify the log levels in order of increasing severity. -// A message written to a high-severity log file is also written to each -// lower-severity log file. -const ( - infoLog severity = iota - warningLog - errorLog - fatalLog - numSeverity = 4 -) - -const severityChar = "IWEF" - -var severityName = []string{ - infoLog: "INFO", - warningLog: "WARNING", - errorLog: "ERROR", - fatalLog: "FATAL", -} - -// get returns the value of the severity. -func (s *severity) get() severity { - return severity(atomic.LoadInt32((*int32)(s))) -} - -// set sets the value of the severity. -func (s *severity) set(val severity) { - atomic.StoreInt32((*int32)(s), int32(val)) -} - -// String is part of the flag.Value interface. -func (s *severity) String() string { - return strconv.FormatInt(int64(*s), 10) -} - -// Get is part of the flag.Value interface. -func (s *severity) Get() interface{} { - return *s -} - -// Set is part of the flag.Value interface. -func (s *severity) Set(value string) error { - var threshold severity - // Is it a known name? - if v, ok := severityByName(value); ok { - threshold = v - } else { - v, err := strconv.Atoi(value) - if err != nil { - return err - } - threshold = severity(v) - } - logging.stderrThreshold.set(threshold) - return nil -} - -func severityByName(s string) (severity, bool) { - s = strings.ToUpper(s) - for i, name := range severityName { - if name == s { - return severity(i), true - } - } - return 0, false -} - -// OutputStats tracks the number of output lines and bytes written. -type OutputStats struct { - lines int64 - bytes int64 -} - -// Lines returns the number of lines written. -func (s *OutputStats) Lines() int64 { - return atomic.LoadInt64(&s.lines) -} - -// Bytes returns the number of bytes written. -func (s *OutputStats) Bytes() int64 { - return atomic.LoadInt64(&s.bytes) -} - -// Stats tracks the number of lines of output and number of bytes -// per severity level. Values must be read with atomic.LoadInt64. -var Stats struct { - Info, Warning, Error OutputStats -} - -var severityStats = [numSeverity]*OutputStats{ - infoLog: &Stats.Info, - warningLog: &Stats.Warning, - errorLog: &Stats.Error, -} - -// Level is exported because it appears in the arguments to V and is -// the type of the v flag, which can be set programmatically. -// It's a distinct type because we want to discriminate it from logType. -// Variables of type level are only changed under logging.mu. -// The -v flag is read only with atomic ops, so the state of the logging -// module is consistent. - -// Level is treated as a sync/atomic int32. - -// Level specifies a level of verbosity for V logs. *Level implements -// flag.Value; the -v flag is of type Level and should be modified -// only through the flag.Value interface. -type Level int32 - -// get returns the value of the Level. -func (l *Level) get() Level { - return Level(atomic.LoadInt32((*int32)(l))) -} - -// set sets the value of the Level. -func (l *Level) set(val Level) { - atomic.StoreInt32((*int32)(l), int32(val)) -} - -// String is part of the flag.Value interface. -func (l *Level) String() string { - return strconv.FormatInt(int64(*l), 10) -} - -// Get is part of the flag.Value interface. -func (l *Level) Get() interface{} { - return *l -} - -// Set is part of the flag.Value interface. -func (l *Level) Set(value string) error { - v, err := strconv.Atoi(value) - if err != nil { - return err - } - logging.mu.Lock() - defer logging.mu.Unlock() - logging.setVState(Level(v), logging.vmodule.filter, false) - return nil -} - -// moduleSpec represents the setting of the -vmodule flag. -type moduleSpec struct { - filter []modulePat -} - -// modulePat contains a filter for the -vmodule flag. -// It holds a verbosity level and a file pattern to match. -type modulePat struct { - pattern string - literal bool // The pattern is a literal string - level Level -} - -// match reports whether the file matches the pattern. It uses a string -// comparison if the pattern contains no metacharacters. -func (m *modulePat) match(file string) bool { - if m.literal { - return file == m.pattern - } - match, _ := filepath.Match(m.pattern, file) - return match -} - -func (m *moduleSpec) String() string { - // Lock because the type is not atomic. TODO: clean this up. - logging.mu.Lock() - defer logging.mu.Unlock() - var b bytes.Buffer - for i, f := range m.filter { - if i > 0 { - b.WriteRune(',') - } - fmt.Fprintf(&b, "%s=%d", f.pattern, f.level) - } - return b.String() -} - -// Get is part of the (Go 1.2) flag.Getter interface. It always returns nil for this flag type since the -// struct is not exported. -func (m *moduleSpec) Get() interface{} { - return nil -} - -var errVmoduleSyntax = errors.New("syntax error: expect comma-separated list of filename=N") - -// Syntax: -vmodule=recordio=2,file=1,gfs*=3 -func (m *moduleSpec) Set(value string) error { - var filter []modulePat - for _, pat := range strings.Split(value, ",") { - if len(pat) == 0 { - // Empty strings such as from a trailing comma can be ignored. - continue - } - patLev := strings.Split(pat, "=") - if len(patLev) != 2 || len(patLev[0]) == 0 || len(patLev[1]) == 0 { - return errVmoduleSyntax - } - pattern := patLev[0] - v, err := strconv.Atoi(patLev[1]) - if err != nil { - return errors.New("syntax error: expect comma-separated list of filename=N") - } - if v < 0 { - return errors.New("negative value for vmodule level") - } - if v == 0 { - continue // Ignore. It's harmless but no point in paying the overhead. - } - // TODO: check syntax of filter? - filter = append(filter, modulePat{pattern, isLiteral(pattern), Level(v)}) - } - logging.mu.Lock() - defer logging.mu.Unlock() - logging.setVState(logging.verbosity, filter, true) - return nil -} - -// isLiteral reports whether the pattern is a literal string, that is, has no metacharacters -// that require filepath.Match to be called to match the pattern. -func isLiteral(pattern string) bool { - return !strings.ContainsAny(pattern, `\*?[]`) -} - -// traceLocation represents the setting of the -log_backtrace_at flag. -type traceLocation struct { - file string - line int -} - -// isSet reports whether the trace location has been specified. -// logging.mu is held. -func (t *traceLocation) isSet() bool { - return t.line > 0 -} - -// match reports whether the specified file and line matches the trace location. -// The argument file name is the full path, not the basename specified in the flag. -// logging.mu is held. -func (t *traceLocation) match(file string, line int) bool { - if t.line != line { - return false - } - if i := strings.LastIndex(file, "/"); i >= 0 { - file = file[i+1:] - } - return t.file == file -} - -func (t *traceLocation) String() string { - // Lock because the type is not atomic. TODO: clean this up. - logging.mu.Lock() - defer logging.mu.Unlock() - return fmt.Sprintf("%s:%d", t.file, t.line) -} - -// Get is part of the (Go 1.2) flag.Getter interface. It always returns nil for this flag type since the -// struct is not exported -func (t *traceLocation) Get() interface{} { - return nil -} - -var errTraceSyntax = errors.New("syntax error: expect file.go:234") - -// Syntax: -log_backtrace_at=gopherflakes.go:234 -// Note that unlike vmodule the file extension is included here. -func (t *traceLocation) Set(value string) error { - if value == "" { - // Unset. - t.line = 0 - t.file = "" - } - fields := strings.Split(value, ":") - if len(fields) != 2 { - return errTraceSyntax - } - file, line := fields[0], fields[1] - if !strings.Contains(file, ".") { - return errTraceSyntax - } - v, err := strconv.Atoi(line) - if err != nil { - return errTraceSyntax - } - if v <= 0 { - return errors.New("negative or zero value for level") - } - logging.mu.Lock() - defer logging.mu.Unlock() - t.line = v - t.file = file - return nil -} - -// flushSyncWriter is the interface satisfied by logging destinations. -type flushSyncWriter interface { - Flush() error - Sync() error - io.Writer -} - -func init() { - flag.BoolVar(&logging.toStderr, "logtostderr", false, "log to standard error instead of files") - flag.BoolVar(&logging.alsoToStderr, "alsologtostderr", false, "log to standard error as well as files") - flag.Var(&logging.verbosity, "v", "log level for V logs") - flag.Var(&logging.stderrThreshold, "stderrthreshold", "logs at or above this threshold go to stderr") - flag.Var(&logging.vmodule, "vmodule", "comma-separated list of pattern=N settings for file-filtered logging") - flag.Var(&logging.traceLocation, "log_backtrace_at", "when logging hits line file:N, emit a stack trace") - - // Default stderrThreshold is ERROR. - logging.stderrThreshold = errorLog - - logging.setVState(0, nil, false) - go logging.flushDaemon() -} - -// Flush flushes all pending log I/O. -func Flush() { - logging.lockAndFlushAll() -} - -// loggingT collects all the global state of the logging setup. -type loggingT struct { - // Boolean flags. Not handled atomically because the flag.Value interface - // does not let us avoid the =true, and that shorthand is necessary for - // compatibility. TODO: does this matter enough to fix? Seems unlikely. - toStderr bool // The -logtostderr flag. - alsoToStderr bool // The -alsologtostderr flag. - - // Level flag. Handled atomically. - stderrThreshold severity // The -stderrthreshold flag. - - // freeList is a list of byte buffers, maintained under freeListMu. - freeList *buffer - // freeListMu maintains the free list. It is separate from the main mutex - // so buffers can be grabbed and printed to without holding the main lock, - // for better parallelization. - freeListMu sync.Mutex - - // mu protects the remaining elements of this structure and is - // used to synchronize logging. - mu sync.Mutex - // file holds writer for each of the log types. - file [numSeverity]flushSyncWriter - // pcs is used in V to avoid an allocation when computing the caller's PC. - pcs [1]uintptr - // vmap is a cache of the V Level for each V() call site, identified by PC. - // It is wiped whenever the vmodule flag changes state. - vmap map[uintptr]Level - // filterLength stores the length of the vmodule filter chain. If greater - // than zero, it means vmodule is enabled. It may be read safely - // using sync.LoadInt32, but is only modified under mu. - filterLength int32 - // traceLocation is the state of the -log_backtrace_at flag. - traceLocation traceLocation - // These flags are modified only under lock, although verbosity may be fetched - // safely using atomic.LoadInt32. - vmodule moduleSpec // The state of the -vmodule flag. - verbosity Level // V logging level, the value of the -v flag/ -} - -// buffer holds a byte Buffer for reuse. The zero value is ready for use. -type buffer struct { - bytes.Buffer - tmp [64]byte // temporary byte array for creating headers. - next *buffer -} - -var logging loggingT - -// setVState sets a consistent state for V logging. -// l.mu is held. -func (l *loggingT) setVState(verbosity Level, filter []modulePat, setFilter bool) { - // Turn verbosity off so V will not fire while we are in transition. - logging.verbosity.set(0) - // Ditto for filter length. - atomic.StoreInt32(&logging.filterLength, 0) - - // Set the new filters and wipe the pc->Level map if the filter has changed. - if setFilter { - logging.vmodule.filter = filter - logging.vmap = make(map[uintptr]Level) - } - - // Things are consistent now, so enable filtering and verbosity. - // They are enabled in order opposite to that in V. - atomic.StoreInt32(&logging.filterLength, int32(len(filter))) - logging.verbosity.set(verbosity) -} - -// getBuffer returns a new, ready-to-use buffer. -func (l *loggingT) getBuffer() *buffer { - l.freeListMu.Lock() - b := l.freeList - if b != nil { - l.freeList = b.next - } - l.freeListMu.Unlock() - if b == nil { - b = new(buffer) - } else { - b.next = nil - b.Reset() - } - return b -} - -// putBuffer returns a buffer to the free list. -func (l *loggingT) putBuffer(b *buffer) { - if b.Len() >= 256 { - // Let big buffers die a natural death. - return - } - l.freeListMu.Lock() - b.next = l.freeList - l.freeList = b - l.freeListMu.Unlock() -} - -var timeNow = time.Now // Stubbed out for testing. - -/* -header formats a log header as defined by the C++ implementation. -It returns a buffer containing the formatted header and the user's file and line number. -The depth specifies how many stack frames above lives the source line to be identified in the log message. - -Log lines have this form: - Lmmdd hh:mm:ss.uuuuuu threadid file:line] msg... -where the fields are defined as follows: - L A single character, representing the log level (eg 'I' for INFO) - mm The month (zero padded; ie May is '05') - dd The day (zero padded) - hh:mm:ss.uuuuuu Time in hours, minutes and fractional seconds - threadid The space-padded thread ID as returned by GetTID() - file The file name - line The line number - msg The user-supplied message -*/ -func (l *loggingT) header(s severity, depth int) (*buffer, string, int) { - _, file, line, ok := runtime.Caller(3 + depth) - if !ok { - file = "???" - line = 1 - } else { - slash := strings.LastIndex(file, "/") - if slash >= 0 { - file = file[slash+1:] - } - } - return l.formatHeader(s, file, line), file, line -} - -// formatHeader formats a log header using the provided file name and line number. -func (l *loggingT) formatHeader(s severity, file string, line int) *buffer { - now := timeNow() - if line < 0 { - line = 0 // not a real line number, but acceptable to someDigits - } - if s > fatalLog { - s = infoLog // for safety. - } - buf := l.getBuffer() - - // Avoid Fprintf, for speed. The format is so simple that we can do it quickly by hand. - // It's worth about 3X. Fprintf is hard. - _, month, day := now.Date() - hour, minute, second := now.Clock() - // Lmmdd hh:mm:ss.uuuuuu threadid file:line] - buf.tmp[0] = severityChar[s] - buf.twoDigits(1, int(month)) - buf.twoDigits(3, day) - buf.tmp[5] = ' ' - buf.twoDigits(6, hour) - buf.tmp[8] = ':' - buf.twoDigits(9, minute) - buf.tmp[11] = ':' - buf.twoDigits(12, second) - buf.tmp[14] = '.' - buf.nDigits(6, 15, now.Nanosecond()/1000, '0') - buf.tmp[21] = ' ' - buf.nDigits(7, 22, pid, ' ') // TODO: should be TID - buf.tmp[29] = ' ' - buf.Write(buf.tmp[:30]) - buf.WriteString(file) - buf.tmp[0] = ':' - n := buf.someDigits(1, line) - buf.tmp[n+1] = ']' - buf.tmp[n+2] = ' ' - buf.Write(buf.tmp[:n+3]) - return buf -} - -// Some custom tiny helper functions to print the log header efficiently. - -const digits = "0123456789" - -// twoDigits formats a zero-prefixed two-digit integer at buf.tmp[i]. -func (buf *buffer) twoDigits(i, d int) { - buf.tmp[i+1] = digits[d%10] - d /= 10 - buf.tmp[i] = digits[d%10] -} - -// nDigits formats an n-digit integer at buf.tmp[i], -// padding with pad on the left. -// It assumes d >= 0. -func (buf *buffer) nDigits(n, i, d int, pad byte) { - j := n - 1 - for ; j >= 0 && d > 0; j-- { - buf.tmp[i+j] = digits[d%10] - d /= 10 - } - for ; j >= 0; j-- { - buf.tmp[i+j] = pad - } -} - -// someDigits formats a zero-prefixed variable-width integer at buf.tmp[i]. -func (buf *buffer) someDigits(i, d int) int { - // Print into the top, then copy down. We know there's space for at least - // a 10-digit number. - j := len(buf.tmp) - for { - j-- - buf.tmp[j] = digits[d%10] - d /= 10 - if d == 0 { - break - } - } - return copy(buf.tmp[i:], buf.tmp[j:]) -} - -func (l *loggingT) println(s severity, args ...interface{}) { - buf, file, line := l.header(s, 0) - fmt.Fprintln(buf, args...) - l.output(s, buf, file, line, false) -} - -func (l *loggingT) print(s severity, args ...interface{}) { - l.printDepth(s, 1, args...) -} - -func (l *loggingT) printDepth(s severity, depth int, args ...interface{}) { - buf, file, line := l.header(s, depth) - fmt.Fprint(buf, args...) - if buf.Bytes()[buf.Len()-1] != '\n' { - buf.WriteByte('\n') - } - l.output(s, buf, file, line, false) -} - -func (l *loggingT) printf(s severity, format string, args ...interface{}) { - buf, file, line := l.header(s, 0) - fmt.Fprintf(buf, format, args...) - if buf.Bytes()[buf.Len()-1] != '\n' { - buf.WriteByte('\n') - } - l.output(s, buf, file, line, false) -} - -// printWithFileLine behaves like print but uses the provided file and line number. If -// alsoLogToStderr is true, the log message always appears on standard error; it -// will also appear in the log file unless --logtostderr is set. -func (l *loggingT) printWithFileLine(s severity, file string, line int, alsoToStderr bool, args ...interface{}) { - buf := l.formatHeader(s, file, line) - fmt.Fprint(buf, args...) - if buf.Bytes()[buf.Len()-1] != '\n' { - buf.WriteByte('\n') - } - l.output(s, buf, file, line, alsoToStderr) -} - -// output writes the data to the log files and releases the buffer. -func (l *loggingT) output(s severity, buf *buffer, file string, line int, alsoToStderr bool) { - l.mu.Lock() - if l.traceLocation.isSet() { - if l.traceLocation.match(file, line) { - buf.Write(stacks(false)) - } - } - data := buf.Bytes() - if !flag.Parsed() { - os.Stderr.Write([]byte("ERROR: logging before flag.Parse: ")) - os.Stderr.Write(data) - } else if l.toStderr { - os.Stderr.Write(data) - } else { - if alsoToStderr || l.alsoToStderr || s >= l.stderrThreshold.get() { - os.Stderr.Write(data) - } - if l.file[s] == nil { - if err := l.createFiles(s); err != nil { - os.Stderr.Write(data) // Make sure the message appears somewhere. - l.exit(err) - } - } - switch s { - case fatalLog: - l.file[fatalLog].Write(data) - fallthrough - case errorLog: - l.file[errorLog].Write(data) - fallthrough - case warningLog: - l.file[warningLog].Write(data) - fallthrough - case infoLog: - l.file[infoLog].Write(data) - } - } - if s == fatalLog { - // If we got here via Exit rather than Fatal, print no stacks. - if atomic.LoadUint32(&fatalNoStacks) > 0 { - l.mu.Unlock() - timeoutFlush(10 * time.Second) - os.Exit(1) - } - // Dump all goroutine stacks before exiting. - // First, make sure we see the trace for the current goroutine on standard error. - // If -logtostderr has been specified, the loop below will do that anyway - // as the first stack in the full dump. - if !l.toStderr { - os.Stderr.Write(stacks(false)) - } - // Write the stack trace for all goroutines to the files. - trace := stacks(true) - logExitFunc = func(error) {} // If we get a write error, we'll still exit below. - for log := fatalLog; log >= infoLog; log-- { - if f := l.file[log]; f != nil { // Can be nil if -logtostderr is set. - f.Write(trace) - } - } - l.mu.Unlock() - timeoutFlush(10 * time.Second) - os.Exit(255) // C++ uses -1, which is silly because it's anded with 255 anyway. - } - l.putBuffer(buf) - l.mu.Unlock() - if stats := severityStats[s]; stats != nil { - atomic.AddInt64(&stats.lines, 1) - atomic.AddInt64(&stats.bytes, int64(len(data))) - } -} - -// timeoutFlush calls Flush and returns when it completes or after timeout -// elapses, whichever happens first. This is needed because the hooks invoked -// by Flush may deadlock when glog.Fatal is called from a hook that holds -// a lock. -func timeoutFlush(timeout time.Duration) { - done := make(chan bool, 1) - go func() { - Flush() // calls logging.lockAndFlushAll() - done <- true - }() - select { - case <-done: - case <-time.After(timeout): - fmt.Fprintln(os.Stderr, "glog: Flush took longer than", timeout) - } -} - -// stacks is a wrapper for runtime.Stack that attempts to recover the data for all goroutines. -func stacks(all bool) []byte { - // We don't know how big the traces are, so grow a few times if they don't fit. Start large, though. - n := 10000 - if all { - n = 100000 - } - var trace []byte - for i := 0; i < 5; i++ { - trace = make([]byte, n) - nbytes := runtime.Stack(trace, all) - if nbytes < len(trace) { - return trace[:nbytes] - } - n *= 2 - } - return trace -} - -// logExitFunc provides a simple mechanism to override the default behavior -// of exiting on error. Used in testing and to guarantee we reach a required exit -// for fatal logs. Instead, exit could be a function rather than a method but that -// would make its use clumsier. -var logExitFunc func(error) - -// exit is called if there is trouble creating or writing log files. -// It flushes the logs and exits the program; there's no point in hanging around. -// l.mu is held. -func (l *loggingT) exit(err error) { - fmt.Fprintf(os.Stderr, "log: exiting because of error: %s\n", err) - // If logExitFunc is set, we do that instead of exiting. - if logExitFunc != nil { - logExitFunc(err) - return - } - l.flushAll() - os.Exit(2) -} - -// syncBuffer joins a bufio.Writer to its underlying file, providing access to the -// file's Sync method and providing a wrapper for the Write method that provides log -// file rotation. There are conflicting methods, so the file cannot be embedded. -// l.mu is held for all its methods. -type syncBuffer struct { - logger *loggingT - *bufio.Writer - file *os.File - sev severity - nbytes uint64 // The number of bytes written to this file -} - -func (sb *syncBuffer) Sync() error { - return sb.file.Sync() -} - -func (sb *syncBuffer) Write(p []byte) (n int, err error) { - if sb.nbytes+uint64(len(p)) >= MaxSize { - if err := sb.rotateFile(time.Now()); err != nil { - sb.logger.exit(err) - } - } - n, err = sb.Writer.Write(p) - sb.nbytes += uint64(n) - if err != nil { - sb.logger.exit(err) - } - return -} - -// rotateFile closes the syncBuffer's file and starts a new one. -func (sb *syncBuffer) rotateFile(now time.Time) error { - if sb.file != nil { - sb.Flush() - sb.file.Close() - } - var err error - sb.file, _, err = create(severityName[sb.sev], now) - sb.nbytes = 0 - if err != nil { - return err - } - - sb.Writer = bufio.NewWriterSize(sb.file, bufferSize) - - // Write header. - var buf bytes.Buffer - fmt.Fprintf(&buf, "Log file created at: %s\n", now.Format("2006/01/02 15:04:05")) - fmt.Fprintf(&buf, "Running on machine: %s\n", host) - fmt.Fprintf(&buf, "Binary: Built with %s %s for %s/%s\n", runtime.Compiler, runtime.Version(), runtime.GOOS, runtime.GOARCH) - fmt.Fprintf(&buf, "Log line format: [IWEF]mmdd hh:mm:ss.uuuuuu threadid file:line] msg\n") - n, err := sb.file.Write(buf.Bytes()) - sb.nbytes += uint64(n) - return err -} - -// bufferSize sizes the buffer associated with each log file. It's large -// so that log records can accumulate without the logging thread blocking -// on disk I/O. The flushDaemon will block instead. -const bufferSize = 256 * 1024 - -// createFiles creates all the log files for severity from sev down to infoLog. -// l.mu is held. -func (l *loggingT) createFiles(sev severity) error { - now := time.Now() - // Files are created in decreasing severity order, so as soon as we find one - // has already been created, we can stop. - for s := sev; s >= infoLog && l.file[s] == nil; s-- { - sb := &syncBuffer{ - logger: l, - sev: s, - } - if err := sb.rotateFile(now); err != nil { - return err - } - l.file[s] = sb - } - return nil -} - -const flushInterval = 30 * time.Second - -// flushDaemon periodically flushes the log file buffers. -func (l *loggingT) flushDaemon() { - for _ = range time.NewTicker(flushInterval).C { - l.lockAndFlushAll() - } -} - -// lockAndFlushAll is like flushAll but locks l.mu first. -func (l *loggingT) lockAndFlushAll() { - l.mu.Lock() - l.flushAll() - l.mu.Unlock() -} - -// flushAll flushes all the logs and attempts to "sync" their data to disk. -// l.mu is held. -func (l *loggingT) flushAll() { - // Flush from fatal down, in case there's trouble flushing. - for s := fatalLog; s >= infoLog; s-- { - file := l.file[s] - if file != nil { - file.Flush() // ignore error - file.Sync() // ignore error - } - } -} - -// CopyStandardLogTo arranges for messages written to the Go "log" package's -// default logs to also appear in the Google logs for the named and lower -// severities. Subsequent changes to the standard log's default output location -// or format may break this behavior. -// -// Valid names are "INFO", "WARNING", "ERROR", and "FATAL". If the name is not -// recognized, CopyStandardLogTo panics. -func CopyStandardLogTo(name string) { - sev, ok := severityByName(name) - if !ok { - panic(fmt.Sprintf("log.CopyStandardLogTo(%q): unrecognized severity name", name)) - } - // Set a log format that captures the user's file and line: - // d.go:23: message - stdLog.SetFlags(stdLog.Lshortfile) - stdLog.SetOutput(logBridge(sev)) -} - -// logBridge provides the Write method that enables CopyStandardLogTo to connect -// Go's standard logs to the logs provided by this package. -type logBridge severity - -// Write parses the standard logging line and passes its components to the -// logger for severity(lb). -func (lb logBridge) Write(b []byte) (n int, err error) { - var ( - file = "???" - line = 1 - text string - ) - // Split "d.go:23: message" into "d.go", "23", and "message". - if parts := bytes.SplitN(b, []byte{':'}, 3); len(parts) != 3 || len(parts[0]) < 1 || len(parts[2]) < 1 { - text = fmt.Sprintf("bad log format: %s", b) - } else { - file = string(parts[0]) - text = string(parts[2][1:]) // skip leading space - line, err = strconv.Atoi(string(parts[1])) - if err != nil { - text = fmt.Sprintf("bad line number: %s", b) - line = 1 - } - } - // printWithFileLine with alsoToStderr=true, so standard log messages - // always appear on standard error. - logging.printWithFileLine(severity(lb), file, line, true, text) - return len(b), nil -} - -// setV computes and remembers the V level for a given PC -// when vmodule is enabled. -// File pattern matching takes the basename of the file, stripped -// of its .go suffix, and uses filepath.Match, which is a little more -// general than the *? matching used in C++. -// l.mu is held. -func (l *loggingT) setV(pc uintptr) Level { - fn := runtime.FuncForPC(pc) - file, _ := fn.FileLine(pc) - // The file is something like /a/b/c/d.go. We want just the d. - if strings.HasSuffix(file, ".go") { - file = file[:len(file)-3] - } - if slash := strings.LastIndex(file, "/"); slash >= 0 { - file = file[slash+1:] - } - for _, filter := range l.vmodule.filter { - if filter.match(file) { - l.vmap[pc] = filter.level - return filter.level - } - } - l.vmap[pc] = 0 - return 0 -} - -// Verbose is a boolean type that implements Infof (like Printf) etc. -// See the documentation of V for more information. -type Verbose bool - -// V reports whether verbosity at the call site is at least the requested level. -// The returned value is a boolean of type Verbose, which implements Info, Infoln -// and Infof. These methods will write to the Info log if called. -// Thus, one may write either -// if glog.V(2) { glog.Info("log this") } -// or -// glog.V(2).Info("log this") -// The second form is shorter but the first is cheaper if logging is off because it does -// not evaluate its arguments. -// -// Whether an individual call to V generates a log record depends on the setting of -// the -v and --vmodule flags; both are off by default. If the level in the call to -// V is at least the value of -v, or of -vmodule for the source file containing the -// call, the V call will log. -func V(level Level) Verbose { - // This function tries hard to be cheap unless there's work to do. - // The fast path is two atomic loads and compares. - - // Here is a cheap but safe test to see if V logging is enabled globally. - if logging.verbosity.get() >= level { - return Verbose(true) - } - - // It's off globally but it vmodule may still be set. - // Here is another cheap but safe test to see if vmodule is enabled. - if atomic.LoadInt32(&logging.filterLength) > 0 { - // Now we need a proper lock to use the logging structure. The pcs field - // is shared so we must lock before accessing it. This is fairly expensive, - // but if V logging is enabled we're slow anyway. - logging.mu.Lock() - defer logging.mu.Unlock() - if runtime.Callers(2, logging.pcs[:]) == 0 { - return Verbose(false) - } - v, ok := logging.vmap[logging.pcs[0]] - if !ok { - v = logging.setV(logging.pcs[0]) - } - return Verbose(v >= level) - } - return Verbose(false) -} - -// Info is equivalent to the global Info function, guarded by the value of v. -// See the documentation of V for usage. -func (v Verbose) Info(args ...interface{}) { - if v { - logging.print(infoLog, args...) - } -} - -// Infoln is equivalent to the global Infoln function, guarded by the value of v. -// See the documentation of V for usage. -func (v Verbose) Infoln(args ...interface{}) { - if v { - logging.println(infoLog, args...) - } -} - -// Infof is equivalent to the global Infof function, guarded by the value of v. -// See the documentation of V for usage. -func (v Verbose) Infof(format string, args ...interface{}) { - if v { - logging.printf(infoLog, format, args...) - } -} - -// Info logs to the INFO log. -// Arguments are handled in the manner of fmt.Print; a newline is appended if missing. -func Info(args ...interface{}) { - logging.print(infoLog, args...) -} - -// InfoDepth acts as Info but uses depth to determine which call frame to log. -// InfoDepth(0, "msg") is the same as Info("msg"). -func InfoDepth(depth int, args ...interface{}) { - logging.printDepth(infoLog, depth, args...) -} - -// Infoln logs to the INFO log. -// Arguments are handled in the manner of fmt.Println; a newline is appended if missing. -func Infoln(args ...interface{}) { - logging.println(infoLog, args...) -} - -// Infof logs to the INFO log. -// Arguments are handled in the manner of fmt.Printf; a newline is appended if missing. -func Infof(format string, args ...interface{}) { - logging.printf(infoLog, format, args...) -} - -// Warning logs to the WARNING and INFO logs. -// Arguments are handled in the manner of fmt.Print; a newline is appended if missing. -func Warning(args ...interface{}) { - logging.print(warningLog, args...) -} - -// WarningDepth acts as Warning but uses depth to determine which call frame to log. -// WarningDepth(0, "msg") is the same as Warning("msg"). -func WarningDepth(depth int, args ...interface{}) { - logging.printDepth(warningLog, depth, args...) -} - -// Warningln logs to the WARNING and INFO logs. -// Arguments are handled in the manner of fmt.Println; a newline is appended if missing. -func Warningln(args ...interface{}) { - logging.println(warningLog, args...) -} - -// Warningf logs to the WARNING and INFO logs. -// Arguments are handled in the manner of fmt.Printf; a newline is appended if missing. -func Warningf(format string, args ...interface{}) { - logging.printf(warningLog, format, args...) -} - -// Error logs to the ERROR, WARNING, and INFO logs. -// Arguments are handled in the manner of fmt.Print; a newline is appended if missing. -func Error(args ...interface{}) { - logging.print(errorLog, args...) -} - -// ErrorDepth acts as Error but uses depth to determine which call frame to log. -// ErrorDepth(0, "msg") is the same as Error("msg"). -func ErrorDepth(depth int, args ...interface{}) { - logging.printDepth(errorLog, depth, args...) -} - -// Errorln logs to the ERROR, WARNING, and INFO logs. -// Arguments are handled in the manner of fmt.Println; a newline is appended if missing. -func Errorln(args ...interface{}) { - logging.println(errorLog, args...) -} - -// Errorf logs to the ERROR, WARNING, and INFO logs. -// Arguments are handled in the manner of fmt.Printf; a newline is appended if missing. -func Errorf(format string, args ...interface{}) { - logging.printf(errorLog, format, args...) -} - -// Fatal logs to the FATAL, ERROR, WARNING, and INFO logs, -// including a stack trace of all running goroutines, then calls os.Exit(255). -// Arguments are handled in the manner of fmt.Print; a newline is appended if missing. -func Fatal(args ...interface{}) { - logging.print(fatalLog, args...) -} - -// FatalDepth acts as Fatal but uses depth to determine which call frame to log. -// FatalDepth(0, "msg") is the same as Fatal("msg"). -func FatalDepth(depth int, args ...interface{}) { - logging.printDepth(fatalLog, depth, args...) -} - -// Fatalln logs to the FATAL, ERROR, WARNING, and INFO logs, -// including a stack trace of all running goroutines, then calls os.Exit(255). -// Arguments are handled in the manner of fmt.Println; a newline is appended if missing. -func Fatalln(args ...interface{}) { - logging.println(fatalLog, args...) -} - -// Fatalf logs to the FATAL, ERROR, WARNING, and INFO logs, -// including a stack trace of all running goroutines, then calls os.Exit(255). -// Arguments are handled in the manner of fmt.Printf; a newline is appended if missing. -func Fatalf(format string, args ...interface{}) { - logging.printf(fatalLog, format, args...) -} - -// fatalNoStacks is non-zero if we are to exit without dumping goroutine stacks. -// It allows Exit and relatives to use the Fatal logs. -var fatalNoStacks uint32 - -// Exit logs to the FATAL, ERROR, WARNING, and INFO logs, then calls os.Exit(1). -// Arguments are handled in the manner of fmt.Print; a newline is appended if missing. -func Exit(args ...interface{}) { - atomic.StoreUint32(&fatalNoStacks, 1) - logging.print(fatalLog, args...) -} - -// ExitDepth acts as Exit but uses depth to determine which call frame to log. -// ExitDepth(0, "msg") is the same as Exit("msg"). -func ExitDepth(depth int, args ...interface{}) { - atomic.StoreUint32(&fatalNoStacks, 1) - logging.printDepth(fatalLog, depth, args...) -} - -// Exitln logs to the FATAL, ERROR, WARNING, and INFO logs, then calls os.Exit(1). -func Exitln(args ...interface{}) { - atomic.StoreUint32(&fatalNoStacks, 1) - logging.println(fatalLog, args...) -} - -// Exitf logs to the FATAL, ERROR, WARNING, and INFO logs, then calls os.Exit(1). -// Arguments are handled in the manner of fmt.Printf; a newline is appended if missing. -func Exitf(format string, args ...interface{}) { - atomic.StoreUint32(&fatalNoStacks, 1) - logging.printf(fatalLog, format, args...) -} diff --git a/vendor/github.com/golang/glog/glog_file.go b/vendor/github.com/golang/glog/glog_file.go deleted file mode 100644 index 65075d2..0000000 --- a/vendor/github.com/golang/glog/glog_file.go +++ /dev/null @@ -1,124 +0,0 @@ -// Go support for leveled logs, analogous to https://code.google.com/p/google-glog/ -// -// Copyright 2013 Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// File I/O for logs. - -package glog - -import ( - "errors" - "flag" - "fmt" - "os" - "os/user" - "path/filepath" - "strings" - "sync" - "time" -) - -// MaxSize is the maximum size of a log file in bytes. -var MaxSize uint64 = 1024 * 1024 * 1800 - -// logDirs lists the candidate directories for new log files. -var logDirs []string - -// If non-empty, overrides the choice of directory in which to write logs. -// See createLogDirs for the full list of possible destinations. -var logDir = flag.String("log_dir", "", "If non-empty, write log files in this directory") - -func createLogDirs() { - if *logDir != "" { - logDirs = append(logDirs, *logDir) - } - logDirs = append(logDirs, os.TempDir()) -} - -var ( - pid = os.Getpid() - program = filepath.Base(os.Args[0]) - host = "unknownhost" - userName = "unknownuser" -) - -func init() { - h, err := os.Hostname() - if err == nil { - host = shortHostname(h) - } - - current, err := user.Current() - if err == nil { - userName = current.Username - } - - // Sanitize userName since it may contain filepath separators on Windows. - userName = strings.Replace(userName, `\`, "_", -1) -} - -// shortHostname returns its argument, truncating at the first period. -// For instance, given "www.google.com" it returns "www". -func shortHostname(hostname string) string { - if i := strings.Index(hostname, "."); i >= 0 { - return hostname[:i] - } - return hostname -} - -// logName returns a new log file name containing tag, with start time t, and -// the name for the symlink for tag. -func logName(tag string, t time.Time) (name, link string) { - name = fmt.Sprintf("%s.%s.%s.log.%s.%04d%02d%02d-%02d%02d%02d.%d", - program, - host, - userName, - tag, - t.Year(), - t.Month(), - t.Day(), - t.Hour(), - t.Minute(), - t.Second(), - pid) - return name, program + "." + tag -} - -var onceLogDirs sync.Once - -// create creates a new log file and returns the file and its filename, which -// contains tag ("INFO", "FATAL", etc.) and t. If the file is created -// successfully, create also attempts to update the symlink for that tag, ignoring -// errors. -func create(tag string, t time.Time) (f *os.File, filename string, err error) { - onceLogDirs.Do(createLogDirs) - if len(logDirs) == 0 { - return nil, "", errors.New("log: no log dirs") - } - name, link := logName(tag, t) - var lastErr error - for _, dir := range logDirs { - fname := filepath.Join(dir, name) - f, err := os.Create(fname) - if err == nil { - symlink := filepath.Join(dir, link) - os.Remove(symlink) // ignore err - os.Symlink(name, symlink) // ignore err - return f, fname, nil - } - lastErr = err - } - return nil, "", fmt.Errorf("log: cannot create log: %v", lastErr) -} diff --git a/vendor/github.com/golang/groupcache/LICENSE b/vendor/github.com/golang/groupcache/LICENSE deleted file mode 100644 index 37ec93a..0000000 --- a/vendor/github.com/golang/groupcache/LICENSE +++ /dev/null @@ -1,191 +0,0 @@ -Apache License -Version 2.0, January 2004 -http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - -"License" shall mean the terms and conditions for use, reproduction, and -distribution as defined by Sections 1 through 9 of this document. - -"Licensor" shall mean the copyright owner or entity authorized by the copyright -owner that is granting the License. - -"Legal Entity" shall mean the union of the acting entity and all other entities -that control, are controlled by, or are under common control with that entity. -For the purposes of this definition, "control" means (i) the power, direct or -indirect, to cause the direction or management of such entity, whether by -contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the -outstanding shares, or (iii) beneficial ownership of such entity. - -"You" (or "Your") shall mean an individual or Legal Entity exercising -permissions granted by this License. - -"Source" form shall mean the preferred form for making modifications, including -but not limited to software source code, documentation source, and configuration -files. - -"Object" form shall mean any form resulting from mechanical transformation or -translation of a Source form, including but not limited to compiled object code, -generated documentation, and conversions to other media types. - -"Work" shall mean the work of authorship, whether in Source or Object form, made -available under the License, as indicated by a copyright notice that is included -in or attached to the work (an example is provided in the Appendix below). - -"Derivative Works" shall mean any work, whether in Source or Object form, that -is based on (or derived from) the Work and for which the editorial revisions, -annotations, elaborations, or other modifications represent, as a whole, an -original work of authorship. For the purposes of this License, Derivative Works -shall not include works that remain separable from, or merely link (or bind by -name) to the interfaces of, the Work and Derivative Works thereof. - -"Contribution" shall mean any work of authorship, including the original version -of the Work and any modifications or additions to that Work or Derivative Works -thereof, that is intentionally submitted to Licensor for inclusion in the Work -by the copyright owner or by an individual or Legal Entity authorized to submit -on behalf of the copyright owner. For the purposes of this definition, -"submitted" means any form of electronic, verbal, or written communication sent -to the Licensor or its representatives, including but not limited to -communication on electronic mailing lists, source code control systems, and -issue tracking systems that are managed by, or on behalf of, the Licensor for -the purpose of discussing and improving the Work, but excluding communication -that is conspicuously marked or otherwise designated in writing by the copyright -owner as "Not a Contribution." - -"Contributor" shall mean Licensor and any individual or Legal Entity on behalf -of whom a Contribution has been received by Licensor and subsequently -incorporated within the Work. - -2. Grant of Copyright License. - -Subject to the terms and conditions of this License, each Contributor hereby -grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, -irrevocable copyright license to reproduce, prepare Derivative Works of, -publicly display, publicly perform, sublicense, and distribute the Work and such -Derivative Works in Source or Object form. - -3. Grant of Patent License. - -Subject to the terms and conditions of this License, each Contributor 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, and otherwise transfer the Work, where -such license applies only to those patent claims licensable by such Contributor -that are necessarily infringed by their Contribution(s) alone or by combination -of their Contribution(s) with the Work to which such Contribution(s) was -submitted. If You institute patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Work or a -Contribution incorporated within the Work constitutes direct or contributory -patent infringement, then any patent licenses granted to You under this License -for that Work shall terminate as of the date such litigation is filed. - -4. Redistribution. - -You may reproduce and distribute copies of the Work or Derivative Works thereof -in any medium, with or without modifications, and in Source or Object form, -provided that You meet the following conditions: - -You must give any other recipients of the Work or Derivative Works a copy of -this License; and -You must cause any modified files to carry prominent notices stating that You -changed the files; and -You must retain, in the Source form of any Derivative Works that You distribute, -all copyright, patent, trademark, and attribution notices from the Source form -of the Work, excluding those notices that do not pertain to any part of the -Derivative Works; and -If the Work includes a "NOTICE" text file as part of its distribution, then any -Derivative Works that You distribute must include a readable copy of the -attribution notices contained within such NOTICE file, excluding those notices -that do not pertain to any part of the Derivative Works, in at least one of the -following places: within a NOTICE text file distributed as part of the -Derivative Works; within the Source form or documentation, if provided along -with the Derivative Works; or, within a display generated by the Derivative -Works, if and wherever such third-party notices normally appear. The contents of -the NOTICE file are for informational purposes only and do not modify the -License. You may add Your own attribution notices within Derivative Works that -You distribute, alongside or as an addendum to the NOTICE text from the Work, -provided that such additional attribution notices cannot be construed as -modifying the License. -You may add Your own copyright statement to Your modifications and may provide -additional or different license terms and conditions for use, reproduction, or -distribution of Your modifications, or for any such Derivative Works as a whole, -provided Your use, reproduction, and distribution of the Work otherwise complies -with the conditions stated in this License. - -5. Submission of Contributions. - -Unless You explicitly state otherwise, any Contribution intentionally submitted -for inclusion in the Work by You to the Licensor shall be under the terms and -conditions of this License, without any additional terms or conditions. -Notwithstanding the above, nothing herein shall supersede or modify the terms of -any separate license agreement you may have executed with Licensor regarding -such Contributions. - -6. Trademarks. - -This License does not grant permission to use the trade names, trademarks, -service marks, or product names of the Licensor, except as required for -reasonable and customary use in describing the origin of the Work and -reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. - -Unless required by applicable law or agreed to in writing, Licensor provides the -Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, -including, without limitation, any warranties or conditions of TITLE, -NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are -solely responsible for determining the appropriateness of using or -redistributing the Work and assume any risks associated with Your exercise of -permissions under this License. - -8. Limitation of Liability. - -In no event and under no legal theory, whether in tort (including negligence), -contract, or otherwise, unless required by applicable law (such as deliberate -and grossly negligent acts) or agreed to in writing, shall any Contributor be -liable to You for damages, including any direct, indirect, special, incidental, -or consequential damages of any character arising as a result of this License or -out of the use or inability to use the Work (including but not limited to -damages for loss of goodwill, work stoppage, computer failure or malfunction, or -any and all other commercial damages or losses), even if such Contributor has -been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. - -While redistributing the Work or Derivative Works thereof, You may choose to -offer, and charge a fee for, acceptance of support, warranty, indemnity, or -other liability obligations and/or rights consistent with this License. However, -in accepting such obligations, You may act only on Your own behalf and on Your -sole responsibility, not on behalf of any other Contributor, and only if You -agree to indemnify, defend, and hold each Contributor harmless for any liability -incurred by, or claims asserted against, such Contributor by reason of your -accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -APPENDIX: How to apply the Apache License to your work - -To apply the Apache License to your work, attach the following boilerplate -notice, with the fields enclosed by brackets "[]" replaced with your own -identifying information. (Don't include the brackets!) The text should be -enclosed in the appropriate comment syntax for the file format. We also -recommend that a file or class name and description of purpose be included on -the same "printed page" as the copyright notice for easier identification within -third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/vendor/github.com/golang/groupcache/lru/lru.go b/vendor/github.com/golang/groupcache/lru/lru.go deleted file mode 100644 index eac1c76..0000000 --- a/vendor/github.com/golang/groupcache/lru/lru.go +++ /dev/null @@ -1,133 +0,0 @@ -/* -Copyright 2013 Google Inc. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Package lru implements an LRU cache. -package lru - -import "container/list" - -// Cache is an LRU cache. It is not safe for concurrent access. -type Cache struct { - // MaxEntries is the maximum number of cache entries before - // an item is evicted. Zero means no limit. - MaxEntries int - - // OnEvicted optionally specifies a callback function to be - // executed when an entry is purged from the cache. - OnEvicted func(key Key, value interface{}) - - ll *list.List - cache map[interface{}]*list.Element -} - -// A Key may be any value that is comparable. See http://golang.org/ref/spec#Comparison_operators -type Key interface{} - -type entry struct { - key Key - value interface{} -} - -// New creates a new Cache. -// If maxEntries is zero, the cache has no limit and it's assumed -// that eviction is done by the caller. -func New(maxEntries int) *Cache { - return &Cache{ - MaxEntries: maxEntries, - ll: list.New(), - cache: make(map[interface{}]*list.Element), - } -} - -// Add adds a value to the cache. -func (c *Cache) Add(key Key, value interface{}) { - if c.cache == nil { - c.cache = make(map[interface{}]*list.Element) - c.ll = list.New() - } - if ee, ok := c.cache[key]; ok { - c.ll.MoveToFront(ee) - ee.Value.(*entry).value = value - return - } - ele := c.ll.PushFront(&entry{key, value}) - c.cache[key] = ele - if c.MaxEntries != 0 && c.ll.Len() > c.MaxEntries { - c.RemoveOldest() - } -} - -// Get looks up a key's value from the cache. -func (c *Cache) Get(key Key) (value interface{}, ok bool) { - if c.cache == nil { - return - } - if ele, hit := c.cache[key]; hit { - c.ll.MoveToFront(ele) - return ele.Value.(*entry).value, true - } - return -} - -// Remove removes the provided key from the cache. -func (c *Cache) Remove(key Key) { - if c.cache == nil { - return - } - if ele, hit := c.cache[key]; hit { - c.removeElement(ele) - } -} - -// RemoveOldest removes the oldest item from the cache. -func (c *Cache) RemoveOldest() { - if c.cache == nil { - return - } - ele := c.ll.Back() - if ele != nil { - c.removeElement(ele) - } -} - -func (c *Cache) removeElement(e *list.Element) { - c.ll.Remove(e) - kv := e.Value.(*entry) - delete(c.cache, kv.key) - if c.OnEvicted != nil { - c.OnEvicted(kv.key, kv.value) - } -} - -// Len returns the number of items in the cache. -func (c *Cache) Len() int { - if c.cache == nil { - return 0 - } - return c.ll.Len() -} - -// Clear purges all stored items from the cache. -func (c *Cache) Clear() { - if c.OnEvicted != nil { - for _, e := range c.cache { - kv := e.Value.(*entry) - c.OnEvicted(kv.key, kv.value) - } - } - c.ll = nil - c.cache = nil -} diff --git a/vendor/github.com/google/go-licenses/CONTRIBUTING.md b/vendor/github.com/google/go-licenses/CONTRIBUTING.md deleted file mode 100644 index 654a071..0000000 --- a/vendor/github.com/google/go-licenses/CONTRIBUTING.md +++ /dev/null @@ -1,28 +0,0 @@ -# How to Contribute - -We'd love to accept your patches and contributions to this project. There are -just a few small guidelines you need to follow. - -## Contributor License Agreement - -Contributions to this project must be accompanied by a Contributor License -Agreement. You (or your employer) retain the copyright to your contribution; -this simply gives us permission to use and redistribute your contributions as -part of the project. Head over to to see -your current agreements on file or to sign a new one. - -You generally only need to submit a CLA once, so if you've already submitted one -(even if it was for a different project), you probably don't need to do it -again. - -## Code reviews - -All submissions, including submissions by project members, require review. We -use GitHub pull requests for this purpose. Consult -[GitHub Help](https://help.github.com/articles/about-pull-requests/) for more -information on using pull requests. - -## Community Guidelines - -This project follows [Google's Open Source Community -Guidelines](https://opensource.google/conduct/). diff --git a/vendor/github.com/google/go-licenses/Dockerfile b/vendor/github.com/google/go-licenses/Dockerfile deleted file mode 100644 index 103690f..0000000 --- a/vendor/github.com/google/go-licenses/Dockerfile +++ /dev/null @@ -1,34 +0,0 @@ -FROM golang:1.18 as build - -WORKDIR /go-licenses - -ARG GOFLAGS="" -ENV GOFLAGS=$GOFLAGS -ENV GO111MODULE=on - -# Download dependencies first - this should be cacheable. -COPY go.mod go.sum ./ -RUN go mod download - -# Now add the local repo, which typically isn't cacheable. -COPY . . - -# Check that all of the Go code builds -RUN go build ./... - -# Run the tests -RUN go test -v ./... - -# Install the binary into /go/bin -RUN go install . - -# Save licenses, etc. -RUN go run . save . --save_path /THIRD_PARTY_NOTICES - -# Make a minimal image. -FROM gcr.io/distroless/base - -COPY --from=build /go/bin/go-licenses / -COPY --from=build /THIRD_PARTY_NOTICES /THIRD_PARTY_NOTICES - -ENTRYPOINT ["/go-licenses"] diff --git a/vendor/github.com/google/go-licenses/LICENSE b/vendor/github.com/google/go-licenses/LICENSE deleted file mode 100644 index d645695..0000000 --- a/vendor/github.com/google/go-licenses/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor 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, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/vendor/github.com/google/go-licenses/Makefile b/vendor/github.com/google/go-licenses/Makefile deleted file mode 100644 index 98e4b8a..0000000 --- a/vendor/github.com/google/go-licenses/Makefile +++ /dev/null @@ -1,32 +0,0 @@ -# Copyright 2022 Google Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# All of these should pass before sending a PR. -precommit: test lint tidy - -test: FORCE - go test ./... - -# Note, when upgrading, also upgrade version in .github/workflows/golangci-lint.yml. -GOLANGCI_LINT_VERSION=v1.29 -lint: FORCE - @which golangci-lint >/dev/null || ( \ - echo 'golangci-lint is not installed. Install by:\ngo install github.com/golangci/golangci-lint/cmd/golangci-lint@$(GOLANGCI_LINT_VERSION)' \ - && exit 1 ) - golangci-lint run -v - -tidy: FORCE - go mod tidy - -FORCE: ; diff --git a/vendor/github.com/google/go-licenses/README.md b/vendor/github.com/google/go-licenses/README.md deleted file mode 100644 index 31b741d..0000000 --- a/vendor/github.com/google/go-licenses/README.md +++ /dev/null @@ -1,212 +0,0 @@ -# Licenses tool - -> This is not an officially supported Google product. - -`go-licenses` analyzes the dependency tree of a Go package/binary. It can output a -report on the libraries used and under what license they can be used. It can -also collect all of the license documents, copyright notices and source code -into a directory in order to comply with license terms on redistribution. - -## Before you start - -To use this tool, make sure: - -* [You have Go v1.16 or later installed](https://golang.org/dl/). -* Change directory to your go project, **for example**: - - ```shell - git clone git@github.com:google/go-licenses.git - cd go-licenses - ``` - -* Download required modules: - - ```shell - go mod download - ``` - -## Installation - -Use the following command to download and install this tool: - -```shell -go install github.com/google/go-licenses@latest -``` - -If you were using `go get` to install this tool, note that -[starting in Go 1.17, go get is deprecated for installing binaries](https://go.dev/doc/go-get-install-deprecation). - -## Reports - -```shell -$ go-licenses csv github.com/google/go-licenses -W0410 06:02:57.077781 31529 library.go:86] "golang.org/x/sys/unix" contains non-Go code that can't be inspected for further dependencies: -/home/username/go/pkg/mod/golang.org/x/sys@v0.0.0-20220111092808-5a964db01320/unix/asm_linux_amd64.s -W0410 06:02:59.476443 31529 library.go:86] "golang.org/x/crypto/curve25519/internal/field" contains non-Go code that can't be inspected for further dependencies: -/home/username/go/pkg/mod/golang.org/x/crypto@v0.0.0-20220112180741-5e0467b6c7ce/curve25519/internal/field/fe_amd64.s -W0410 06:02:59.486045 31529 library.go:86] "golang.org/x/crypto/internal/poly1305" contains non-Go code that can't be inspected for further dependencies: -/home/username/go/pkg/mod/golang.org/x/crypto@v0.0.0-20220112180741-5e0467b6c7ce/internal/poly1305/sum_amd64.s -W0410 06:02:59.872215 31529 library.go:253] module github.com/google/go-licenses has empty version, defaults to HEAD. The license URL may be incorrect. Please verify! -W0410 06:02:59.880621 31529 library.go:253] module github.com/google/go-licenses has empty version, defaults to HEAD. The license URL may be incorrect. Please verify! -github.com/emirpasic/gods,https://github.com/emirpasic/gods/blob/v1.12.0/LICENSE,BSD-2-Clause -github.com/golang/glog,https://github.com/golang/glog/blob/23def4e6c14b/LICENSE,Apache-2.0 -github.com/golang/groupcache/lru,https://github.com/golang/groupcache/blob/41bb18bfe9da/LICENSE,Apache-2.0 -github.com/google/go-licenses,https://github.com/google/go-licenses/blob/HEAD/LICENSE,Apache-2.0 -github.com/google/go-licenses/internal/third_party/pkgsite,https://github.com/google/go-licenses/blob/HEAD/internal/third_party/pkgsite/LICENSE,BSD-3-Clause -github.com/google/licenseclassifier,https://github.com/google/licenseclassifier/blob/3043a050f148/LICENSE,Apache-2.0 -github.com/google/licenseclassifier/stringclassifier,https://github.com/google/licenseclassifier/blob/3043a050f148/stringclassifier/LICENSE,Apache-2.0 -github.com/jbenet/go-context/io,https://github.com/jbenet/go-context/blob/d14ea06fba99/LICENSE,MIT -github.com/kevinburke/ssh_config,https://github.com/kevinburke/ssh_config/blob/01f96b0aa0cd/LICENSE,MIT -github.com/mitchellh/go-homedir,https://github.com/mitchellh/go-homedir/blob/v1.1.0/LICENSE,MIT -github.com/otiai10/copy,https://github.com/otiai10/copy/blob/v1.6.0/LICENSE,MIT -github.com/sergi/go-diff/diffmatchpatch,https://github.com/sergi/go-diff/blob/v1.2.0/LICENSE,MIT -github.com/spf13/cobra,https://github.com/spf13/cobra/blob/v1.4.0/LICENSE.txt,Apache-2.0 -github.com/spf13/pflag,https://github.com/spf13/pflag/blob/v1.0.5/LICENSE,BSD-3-Clause -github.com/src-d/gcfg,https://github.com/src-d/gcfg/blob/v1.4.0/LICENSE,BSD-3-Clause -github.com/xanzy/ssh-agent,https://github.com/xanzy/ssh-agent/blob/v0.2.1/LICENSE,Apache-2.0 -go.opencensus.io,https://github.com/census-instrumentation/opencensus-go/blob/v0.23.0/LICENSE,Apache-2.0 -golang.org/x/crypto,https://cs.opensource.google/go/x/crypto/+/5e0467b6:LICENSE,BSD-3-Clause -golang.org/x/mod/semver,https://cs.opensource.google/go/x/mod/+/9b9b3d81:LICENSE,BSD-3-Clause -golang.org/x/net,https://cs.opensource.google/go/x/net/+/69e39bad:LICENSE,BSD-3-Clause -golang.org/x/sys,https://cs.opensource.google/go/x/sys/+/5a964db0:LICENSE,BSD-3-Clause -golang.org/x/tools,https://cs.opensource.google/go/x/tools/+/v0.1.10:LICENSE,BSD-3-Clause -golang.org/x/xerrors,https://cs.opensource.google/go/x/xerrors/+/5ec99f83:LICENSE,BSD-3-Clause -gopkg.in/src-d/go-billy.v4,https://github.com/src-d/go-billy/blob/v4.3.2/LICENSE,Apache-2.0 -gopkg.in/src-d/go-git.v4,https://github.com/src-d/go-git/blob/v4.13.1/LICENSE,Apache-2.0 -gopkg.in/warnings.v0,https://github.com/go-warnings/warnings/blob/v0.1.2/LICENSE,BSD-2-Clause -``` - -This command prints out a comma-separated report (CSV) listing the libraries -used by a binary/package, the URL where their licenses can be viewed and the -type of license. A library is considered to be one or more Go packages that -share a license file. - -URLs are versioned based on go modules metadata. - -**Tip**: go-licenses writes CSV to stdout and info/warnings/errors logs to stderr. -To save the CSV to a file `licenses.csv` in bash, run: - -```bash -go-licenses csv github.com/google/go-licenses > licenses.csv -``` - -Or, to also save error logs to an `errors` file, run: - -```bash -go-licenses csv github.com/google/go-licenses > licenses.csv 2> errors -``` - -**Note**: some warnings and errors may be expected, refer to [Warnings and Errors](#warnings-and-errors) for more information. - -## Save licenses, copyright notices and source code (depending on license type) - -```shell -go-licenses save "github.com/google/go-licenses" --save_path="/tmp/go-licenses-cli" -``` - -This command analyzes a binary/package's dependencies and determines what needs -to be redistributed alongside that binary/package in order to comply with the -license terms. This typically includes the license itself and a copyright -notice, but may also include the dependency's source code. All of the required -artifacts will be saved in the directory indicated by `--save_path`. - -## Checking for forbidden licenses - -```shell -$ go-licenses check github.com/logrusorgru/aurora -Forbidden license type WTFPL for library github.com/logrusorgru/auroraexit status 1 -``` - -This command analyzes a package's dependencies and determines if any are -considered forbidden by the license classifer. See -[github.com/google/licenseclassifier](https://github.com/google/licenseclassifier/blob/842c0d70d7027215932deb13801890992c9ba364/license_type.go#L323) - -for licenses considered forbidden. - -## Usages - -Report usage: - -```shell -go-licenses csv [package...] -``` - -Save licenses, copyright notices and source code (depending on license type): - -```shell -go-licenses save [package...] --save_path= -``` - -Checking for forbidden licenses usage: - -```shell -go-licenses check [package...] -``` - -Typically, specify the Go package that builds your Go binary. -go-licenses expects the same package argument format as `go build`. For examples: - -* A rooted import path like `github.com/google/go-licenses` or `github.com/google/go-licenses/licenses`. -* A relative path that denotes the package in that directory, like `.` or `./cmd/some-command`. - -To learn more about package argument, run `go help packages`. - -To learn more about go-licenses usages, run `go-licenses help`. - -## Build tags - -To read dependencies from packages with -[build tags](https://golang.org/pkg/go/build/#hdr-Build_Constraints). Use the -`$GOFLAGS` environment variable. - -```shell -$ GOFLAGS="-tags=tools" go-licenses csv google.golang.org/grpc/test/tools -github.com/BurntSushi/toml,https://github.com/BurntSushi/toml/blob/master/COPYING,MIT -google.golang.org/grpc/test/tools,Unknown,Apache-2.0 -honnef.co/go/tools/lint,Unknown,BSD-3-Clause -golang.org/x/lint,Unknown,BSD-3-Clause -golang.org/x/tools,Unknown,BSD-3-Clause -honnef.co/go/tools,Unknown,MIT -honnef.co/go/tools/ssa,Unknown,BSD-3-Clause -github.com/client9/misspell,https://github.com/client9/misspell/blob/master/LICENSE,MIT -github.com/golang/protobuf/proto,https://github.com/golang/protobuf/blob/master/proto/LICENSE,BSD-3-Clause -``` - -## Ignoring packages - -Use the `--ignore` global flag to specify package path prefixes to be ignored. -For example, to ignore your organization's internal packages under `github.com/example-corporation`: - -```shell -$ go-licenses check \ - github.com/example-corporation/example-product \ - --ignore github.com/example-corporation -``` - -Note that dependencies from the ignored packages are still resolved and checked. -This flag makes effect to `check`, `csv` and `save` commands. - -## Warnings and errors - -The tool will log warnings and errors in some scenarios. This section provides -guidance on addressing them. - -### Dependency contains non-Go code - -A warning will be logged when a dependency contains non-Go code. This is because -it is not possible to check the non-Go code for further dependencies, which may -conceal additional license requirements. You should investigate this code to -determine whether it has dependencies and take action to comply with their -license terms. - -### Error discovering URL - -In order to determine the URL where a license file can be viewed, this tool -generally performs the following steps: - -1. Locates the license file on disk. -2. Parses go module metadata and finds the remote repo and version. -3. Adds the license file path to this URL. - -There are cases this tool finds an invalid/incorrect URL or fails to find the URL. -Welcome [creating an issue](https://github.com/google/go-licenses/issues). diff --git a/vendor/github.com/google/go-licenses/check.go b/vendor/github.com/google/go-licenses/check.go deleted file mode 100644 index 1f4daea..0000000 --- a/vendor/github.com/google/go-licenses/check.go +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright 2019 Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package main - -import ( - "context" - "fmt" - "os" - - "github.com/google/go-licenses/licenses" - "github.com/spf13/cobra" -) - -var ( - checkHelp = "Checks whether licenses for a package are not Forbidden." - checkCmd = &cobra.Command{ - Use: "check [package...]", - Short: checkHelp, - Long: checkHelp + packageHelp, - Args: cobra.MinimumNArgs(1), - RunE: checkMain, - } -) - -func init() { - rootCmd.AddCommand(checkCmd) -} - -func checkMain(_ *cobra.Command, args []string) error { - classifier, err := licenses.NewClassifier(confidenceThreshold) - if err != nil { - return err - } - - libs, err := licenses.Libraries(context.Background(), classifier, ignore, args...) - if err != nil { - return err - } - for _, lib := range libs { - licenseName, licenseType, err := classifier.Identify(lib.LicensePath) - if err != nil { - return err - } - if licenseType == licenses.Forbidden { - fmt.Fprintf(os.Stderr, "Forbidden license type %s for library %v\n", licenseName, lib) - os.Exit(1) - } - } - return nil -} diff --git a/vendor/github.com/google/go-licenses/csv.go b/vendor/github.com/google/go-licenses/csv.go deleted file mode 100644 index 8ecf82c..0000000 --- a/vendor/github.com/google/go-licenses/csv.go +++ /dev/null @@ -1,81 +0,0 @@ -// Copyright 2019 Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package main - -import ( - "context" - "encoding/csv" - "os" - - "github.com/golang/glog" - "github.com/google/go-licenses/licenses" - "github.com/spf13/cobra" -) - -var ( - csvHelp = "Prints all licenses that apply to one or more Go packages and their dependencies." - csvCmd = &cobra.Command{ - Use: "csv [package...]", - Short: csvHelp, - Long: csvHelp + packageHelp, - Args: cobra.MinimumNArgs(1), - RunE: csvMain, - } - - gitRemotes []string -) - -func init() { - csvCmd.Flags().StringArrayVar(&gitRemotes, "git_remote", []string{"origin", "upstream"}, "Remote Git repositories to try") - - rootCmd.AddCommand(csvCmd) -} - -func csvMain(_ *cobra.Command, args []string) error { - writer := csv.NewWriter(os.Stdout) - - classifier, err := licenses.NewClassifier(confidenceThreshold) - if err != nil { - return err - } - - libs, err := licenses.Libraries(context.Background(), classifier, ignore, args...) - if err != nil { - return err - } - for _, lib := range libs { - licenseURL := "Unknown" - licenseName := "Unknown" - if lib.LicensePath != "" { - name, _, err := classifier.Identify(lib.LicensePath) - if err == nil { - licenseName = name - } else { - glog.Errorf("Error identifying license in %q: %v", lib.LicensePath, err) - } - url, err := lib.FileURL(context.Background(), lib.LicensePath) - if err == nil { - licenseURL = url - } else { - glog.Warningf("Error discovering license URL: %s", err) - } - } - if err := writer.Write([]string{lib.Name(), licenseURL, licenseName}); err != nil { - return err - } - } - writer.Flush() - return writer.Error() -} diff --git a/vendor/github.com/google/go-licenses/internal/third_party/pkgsite/LICENSE b/vendor/github.com/google/go-licenses/internal/third_party/pkgsite/LICENSE deleted file mode 100644 index 865cf03..0000000 --- a/vendor/github.com/google/go-licenses/internal/third_party/pkgsite/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -Copyright (c) 2020 The Go Authors. All rights reserved. -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/google/go-licenses/internal/third_party/pkgsite/PATENTS b/vendor/github.com/google/go-licenses/internal/third_party/pkgsite/PATENTS deleted file mode 100644 index 715e0e5..0000000 --- a/vendor/github.com/google/go-licenses/internal/third_party/pkgsite/PATENTS +++ /dev/null @@ -1,20 +0,0 @@ -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/github.com/google/go-licenses/internal/third_party/pkgsite/derrors/derrors.go b/vendor/github.com/google/go-licenses/internal/third_party/pkgsite/derrors/derrors.go deleted file mode 100644 index 3f3436a..0000000 --- a/vendor/github.com/google/go-licenses/internal/third_party/pkgsite/derrors/derrors.go +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2019 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 derrors defines internal error values to categorize the different -// types error semantics we support. -package derrors - -import ( - "errors" - "fmt" - "net/http" -) - -//lint:file-ignore ST1012 prefixing error values with Err would stutter - -var ( - // NotFound indicates that a requested entity was not found (HTTP 404). - NotFound = errors.New("not found") - - // InvalidArgument indicates that the input into the request is invalid in - // some way (HTTP 400). - InvalidArgument = errors.New("invalid argument") -) - -var codes = []struct { - err error - code int -}{ - {NotFound, http.StatusNotFound}, - {InvalidArgument, http.StatusBadRequest}, -} - -// Wrap adds context to the error and allows -// unwrapping the result to recover the original error. -// -// Example: -// -// defer derrors.Wrap(&err, "copy(%s, %s)", src, dst) -// -// See Add for an equivalent function that does not allow -// the result to be unwrapped. -func Wrap(errp *error, format string, args ...interface{}) { - if *errp != nil { - *errp = fmt.Errorf("%s: %w", fmt.Sprintf(format, args...), *errp) - } -} diff --git a/vendor/github.com/google/go-licenses/internal/third_party/pkgsite/source/meta-tags.go b/vendor/github.com/google/go-licenses/internal/third_party/pkgsite/source/meta-tags.go deleted file mode 100644 index 1f8b2bb..0000000 --- a/vendor/github.com/google/go-licenses/internal/third_party/pkgsite/source/meta-tags.go +++ /dev/null @@ -1,161 +0,0 @@ -// Copyright 2019 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 source - -import ( - "context" - "encoding/xml" - "fmt" - "io" - "strings" - - "github.com/google/go-licenses/internal/third_party/pkgsite/derrors" -) - -// This code adapted from https://go.googlesource.com/gddo/+/refs/heads/master/gosrc/gosrc.go. - -// sourceMeta represents the values in a go-source meta tag, or as a fallback, -// values from a go-import meta tag. -// The go-source spec is at https://github.com/golang/gddo/wiki/Source-Code-Links. -// The go-import spec is in "go help importpath". -type sourceMeta struct { - repoRootPrefix string // import path prefix corresponding to repo root - repoURL string // URL of the repo root - // The next two are only present in a go-source tag. - dirTemplate string // URL template for a directory - fileTemplate string // URL template for a file and line -} - -// fetchMeta retrieves go-import and go-source meta tag information, using the import path to construct -// a URL as described in "go help importpath". -// -// The importPath argument, as the name suggests, could be any package import -// path. But we only pass module paths. -// -// The discovery site only cares about linking to source, not fetching it (we -// already have it in the module zip file). So we merge the go-import and -// go-source meta tag information, preferring the latter. -func fetchMeta(ctx context.Context, client *Client, importPath string) (_ *sourceMeta, err error) { - defer derrors.Wrap(&err, "fetchMeta(ctx, client, %q)", importPath) - - uri := importPath - if !strings.Contains(uri, "/") { - // Add slash for root of domain. - uri = uri + "/" - } - uri = uri + "?go-get=1" - - resp, err := client.doURL(ctx, "GET", "https://"+uri, true) - if err != nil { - resp, err = client.doURL(ctx, "GET", "http://"+uri, false) - if err != nil { - return nil, err - } - } - defer resp.Body.Close() - return parseMeta(importPath, resp.Body) -} - -func parseMeta(importPath string, r io.Reader) (sm *sourceMeta, err error) { - errorMessage := "go-import and go-source meta tags not found" - // gddo uses an xml parser, and this code is adapted from it. - d := xml.NewDecoder(r) - d.Strict = false -metaScan: - for { - t, tokenErr := d.Token() - if tokenErr != nil { - break metaScan - } - switch t := t.(type) { - case xml.EndElement: - if strings.EqualFold(t.Name.Local, "head") { - break metaScan - } - case xml.StartElement: - if strings.EqualFold(t.Name.Local, "body") { - break metaScan - } - if !strings.EqualFold(t.Name.Local, "meta") { - continue metaScan - } - nameAttr := attrValue(t.Attr, "name") - if nameAttr != "go-import" && nameAttr != "go-source" { - continue metaScan - } - fields := strings.Fields(attrValue(t.Attr, "content")) - if len(fields) < 1 { - continue metaScan - } - repoRootPrefix := fields[0] - if !strings.HasPrefix(importPath, repoRootPrefix) || - !(len(importPath) == len(repoRootPrefix) || importPath[len(repoRootPrefix)] == '/') { - // Ignore if root is not a prefix of the path. This allows a - // site to use a single error page for multiple repositories. - continue metaScan - } - switch nameAttr { - case "go-import": - if len(fields) != 3 { - errorMessage = "go-import meta tag content attribute does not have three fields" - continue metaScan - } - if fields[1] == "mod" { - // We can't make source links from a "mod" vcs type, so skip it. - continue - } - if sm != nil { - sm = nil - errorMessage = "more than one go-import meta tag found" - break metaScan - } - sm = &sourceMeta{ - repoRootPrefix: repoRootPrefix, - repoURL: fields[2], - } - // Keep going in the hope of finding a go-source tag. - case "go-source": - if len(fields) != 4 { - errorMessage = "go-source meta tag content attribute does not have four fields" - continue metaScan - } - if sm != nil && sm.repoRootPrefix != repoRootPrefix { - errorMessage = fmt.Sprintf("import path prefixes %q for go-import and %q for go-source disagree", sm.repoRootPrefix, repoRootPrefix) - sm = nil - break metaScan - } - // If go-source repo is "_", then default to the go-import repo. - repoURL := fields[1] - if repoURL == "_" { - if sm == nil { - errorMessage = `go-source repo is "_", but no previous go-import tag` - break metaScan - } - repoURL = sm.repoURL - } - sm = &sourceMeta{ - repoRootPrefix: repoRootPrefix, - repoURL: repoURL, - dirTemplate: fields[2], - fileTemplate: fields[3], - } - break metaScan - } - } - } - if sm == nil { - return nil, fmt.Errorf("%s: %w", errorMessage, derrors.NotFound) - } - return sm, nil -} - -func attrValue(attrs []xml.Attr, name string) string { - for _, a := range attrs { - if strings.EqualFold(a.Name.Local, name) { - return a.Value - } - } - return "" -} diff --git a/vendor/github.com/google/go-licenses/internal/third_party/pkgsite/source/source.go b/vendor/github.com/google/go-licenses/internal/third_party/pkgsite/source/source.go deleted file mode 100644 index 8cf50e9..0000000 --- a/vendor/github.com/google/go-licenses/internal/third_party/pkgsite/source/source.go +++ /dev/null @@ -1,946 +0,0 @@ -// Copyright 2019 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 source constructs public URLs that link to the source files in a module. It -// can be used to build references to Go source code, or to any other files in a -// module. -// -// Of course, the module zip file contains all the files in the module. This -// package attempts to find the origin of the zip file, in a repository that is -// publicly readable, and constructs links to that repo. While a module zip file -// could in theory come from anywhere, including a non-public location, this -// package recognizes standard module path patterns and construct repository -// URLs from them, like the go command does. -package source - -// -// Much of this code was adapted from -// https://go.googlesource.com/gddo/+/refs/heads/master/gosrc -// and -// https://go.googlesource.com/go/+/refs/heads/master/src/cmd/go/internal/get - -import ( - "context" - "encoding/json" - "fmt" - "log" // We cannot use glog instead, because its "v" flag conflicts with other libraries we use. - "net/http" - "path" - "regexp" - "strconv" - "strings" - "time" - - "github.com/google/go-licenses/internal/third_party/pkgsite/derrors" - "github.com/google/go-licenses/internal/third_party/pkgsite/stdlib" - "github.com/google/go-licenses/internal/third_party/pkgsite/version" - "go.opencensus.io/plugin/ochttp" - "go.opencensus.io/trace" - "golang.org/x/net/context/ctxhttp" -) - -// Info holds source information about a module, used to generate URLs referring -// to directories, files and lines. -type Info struct { - repoURL string // URL of repo containing module; exported for DB schema compatibility - moduleDir string // directory of module relative to repo root - commit string // tag or ID of commit corresponding to version - templates urlTemplates // for building URLs -} - -// RepoURL returns a URL for the home page of the repository. -func (i *Info) RepoURL() string { - if i == nil { - return "" - } - if i.templates.Repo == "" { - // The default repo template is just "{repo}". - return i.repoURL - } - return expand(i.templates.Repo, map[string]string{ - "repo": i.repoURL, - }) -} - -// ModuleURL returns a URL for the home page of the module. -func (i *Info) ModuleURL() string { - return i.DirectoryURL("") -} - -// DirectoryURL returns a URL for a directory relative to the module's home directory. -func (i *Info) DirectoryURL(dir string) string { - if i == nil { - return "" - } - return strings.TrimSuffix(expand(i.templates.Directory, map[string]string{ - "repo": i.repoURL, - "importPath": path.Join(strings.TrimPrefix(i.repoURL, "https://"), dir), - "commit": i.commit, - "dir": path.Join(i.moduleDir, dir), - }), "/") -} - -// FileURL returns a URL for a file whose pathname is relative to the module's home directory. -func (i *Info) FileURL(pathname string) string { - if i == nil { - return "" - } - dir, base := path.Split(pathname) - return expand(i.templates.File, map[string]string{ - "repo": i.repoURL, - "importPath": path.Join(strings.TrimPrefix(i.repoURL, "https://"), dir), - "commit": i.commit, - "dir": dir, - "file": path.Join(i.moduleDir, pathname), - "base": base, - }) -} - -// LineURL returns a URL referring to a line in a file relative to the module's home directory. -func (i *Info) LineURL(pathname string, line int) string { - if i == nil { - return "" - } - dir, base := path.Split(pathname) - return expand(i.templates.Line, map[string]string{ - "repo": i.repoURL, - "importPath": path.Join(strings.TrimPrefix(i.repoURL, "https://"), dir), - "commit": i.commit, - "file": path.Join(i.moduleDir, pathname), - "dir": dir, - "base": base, - "line": strconv.Itoa(line), - }) -} - -// RawURL returns a URL referring to the raw contents of a file relative to the -// module's home directory. -func (i *Info) RawURL(pathname string) string { - if i == nil { - return "" - } - // Some templates don't support raw content serving. - if i.templates.Raw == "" { - return "" - } - moduleDir := i.moduleDir - // Special case: the standard library's source module path is set to "src", - // which is correct for source file links. But the README is at the repo - // root, not in the src directory. In other words, - // Module.Units[0].Readme.FilePath is not relative to - // Module.Units[0].SourceInfo.moduleDir, as it is for every other module. - // Correct for that here. - if i.repoURL == stdlib.GoSourceRepoURL { - moduleDir = "" - } - return expand(i.templates.Raw, map[string]string{ - "repo": i.repoURL, - "commit": i.commit, - "file": path.Join(moduleDir, pathname), - }) -} - -// map of common urlTemplates -var urlTemplatesByKind = map[string]urlTemplates{ - "github": githubURLTemplates, - "gitlab": githubURLTemplates, // preserved for backwards compatibility (DB still has source_info->Kind = "gitlab") - "bitbucket": bitbucketURLTemplates, -} - -// jsonInfo is a Go struct describing the JSON structure of an INFO. -type jsonInfo struct { - RepoURL string - ModuleDir string - Commit string - // Store common templates efficiently by setting this to a short string - // we look up in a map. If Kind != "", then Templates == nil. - Kind string `json:",omitempty"` - Templates *urlTemplates `json:",omitempty"` -} - -// ToJSONForDB returns the Info encoded for storage in the database. -func (i *Info) MarshalJSON() (_ []byte, err error) { - defer derrors.Wrap(&err, "MarshalJSON") - - ji := &jsonInfo{ - RepoURL: i.repoURL, - ModuleDir: i.moduleDir, - Commit: i.commit, - } - // Store common templates efficiently, by name. - for kind, templs := range urlTemplatesByKind { - if i.templates == templs { - ji.Kind = kind - break - } - } - // We used to use different templates for GitHub and GitLab. Now that - // they're the same, prefer "github" for consistency (map random iteration - // order means we could get either here). - if ji.Kind == "gitlab" { - ji.Kind = "github" - } - if ji.Kind == "" && i.templates != (urlTemplates{}) { - ji.Templates = &i.templates - } - return json.Marshal(ji) -} - -func (i *Info) UnmarshalJSON(data []byte) (err error) { - defer derrors.Wrap(&err, "UnmarshalJSON(data)") - - var ji jsonInfo - if err := json.Unmarshal(data, &ji); err != nil { - return err - } - i.repoURL = trimVCSSuffix(ji.RepoURL) - i.moduleDir = ji.ModuleDir - i.commit = ji.Commit - if ji.Kind != "" { - i.templates = urlTemplatesByKind[ji.Kind] - } else if ji.Templates != nil { - i.templates = *ji.Templates - } - return nil -} - -type Client struct { - // client used for HTTP requests. It is mutable for testing purposes. - // If nil, then moduleInfoDynamic will return nil, nil; also for testing. - httpClient *http.Client -} - -// New constructs a *Client using the provided timeout. -func NewClient(timeout time.Duration) *Client { - return &Client{ - httpClient: &http.Client{ - Transport: &ochttp.Transport{}, - Timeout: timeout, - }, - } -} - -// NewClientForTesting returns a Client suitable for testing. It returns the -// same results as an ordinary client for statically recognizable paths, but -// always returns a nil *Info for dynamic paths (those requiring HTTP requests). -func NewClientForTesting() *Client { - return &Client{} -} - -// doURL makes an HTTP request using the given url and method. It returns an -// error if the request returns an error. If only200 is true, it also returns an -// error if any status code other than 200 is returned. -func (c *Client) doURL(ctx context.Context, method, url string, only200 bool) (_ *http.Response, err error) { - defer derrors.Wrap(&err, "doURL(ctx, client, %q, %q)", method, url) - - if c == nil || c.httpClient == nil { - return nil, fmt.Errorf("c.httpClient cannot be nil") - } - req, err := http.NewRequest(method, url, nil) - if err != nil { - return nil, err - } - resp, err := ctxhttp.Do(ctx, c.httpClient, req) - if err != nil { - return nil, err - } - if only200 && resp.StatusCode != 200 { - resp.Body.Close() - return nil, fmt.Errorf("status %s", resp.Status) - } - return resp, nil -} - -// ModuleInfo determines the repository corresponding to the module path. It -// returns a URL to that repo, as well as the directory of the module relative -// to the repo root. -// -// ModuleInfo may fetch from arbitrary URLs, so it can be slow. -func ModuleInfo(ctx context.Context, client *Client, modulePath, v string) (info *Info, err error) { - defer derrors.Wrap(&err, "source.ModuleInfo(ctx, %q, %q)", modulePath, v) - ctx, span := trace.StartSpan(ctx, "source.ModuleInfo") - defer span.End() - - // The example.com domain can never be real; it is reserved for testing - // (https://en.wikipedia.org/wiki/Example.com). Treat it as if it used - // GitHub templates. - if strings.HasPrefix(modulePath, "example.com/") { - return NewGitHubInfo("https://"+modulePath, "", v), nil - } - - if modulePath == stdlib.ModulePath { - return newStdlibInfo(v) - } - - repo, relativeModulePath, templates, transformCommit, err := matchStatic(modulePath) - if err != nil { - info, err = moduleInfoDynamic(ctx, client, modulePath, v) - if err != nil { - return nil, err - } - } else { - commit, isHash := commitFromVersion(v, relativeModulePath) - if transformCommit != nil { - commit = transformCommit(commit, isHash) - } - info = &Info{ - repoURL: trimVCSSuffix("https://" + repo), - moduleDir: relativeModulePath, - commit: commit, - templates: templates, - } - } - if info != nil { - adjustVersionedModuleDirectory(ctx, client, info) - } - if strings.HasPrefix(modulePath, "golang.org/") { - adjustGoRepoInfo(info, modulePath, version.IsPseudo(v)) - } - return info, nil - // TODO(golang/go#39627): support launchpad.net, including the special case - // in cmd/go/internal/get/vcs.go. -} - -func newStdlibInfo(version string) (_ *Info, err error) { - defer derrors.Wrap(&err, "newStdlibInfo(%q)", version) - - commit, err := stdlib.TagForVersion(version) - if err != nil { - return nil, err - } - - templates := csopensourceTemplates - templates.Raw = "https://github.com/golang/go/raw/{commit}/{file}" - return &Info{ - repoURL: stdlib.GoSourceRepoURL, - moduleDir: stdlib.Directory(version), - commit: commit, - templates: templates, - }, nil -} - -// csNonXRepos is a set of repos hosted at https://cs.opensource.google/go, -// that are not an x/repo. -var csNonXRepos = map[string]bool{ - "dl": true, - "proposal": true, - "vscode-go": true, -} - -// csXRepos is the set of repos hosted at https://cs.opensource.google/go, -// that have a x/ prefix. -// -// x/scratch is not included. -var csXRepos = map[string]bool{ - "x/arch": true, - "x/benchmarks": true, - "x/blog": true, - "x/build": true, - "x/crypto": true, - "x/debug": true, - "x/example": true, - "x/exp": true, - "x/image": true, - "x/mobile": true, - "x/mod": true, - "x/net": true, - "x/oauth2": true, - "x/perf": true, - "x/pkgsite": true, - "x/playground": true, - "x/review": true, - "x/sync": true, - "x/sys": true, - "x/talks": true, - "x/term": true, - "x/text": true, - "x/time": true, - "x/tools": true, - "x/tour": true, - "x/vgo": true, - "x/website": true, - "x/xerrors": true, -} - -func adjustGoRepoInfo(info *Info, modulePath string, isHash bool) { - suffix := strings.TrimPrefix(modulePath, "golang.org/") - - // Validate that this is a repo that exists on - // https://cs.opensource.google/go. Otherwise, default to the existing - // info. - parts := strings.Split(suffix, "/") - if len(parts) >= 2 { - suffix = parts[0] + "/" + parts[1] - } - if strings.HasPrefix(suffix, "x/") { - if !csXRepos[suffix] { - return - } - } else if !csNonXRepos[suffix] { - return - } - - // rawURL needs to be set before info.templates is changed. - rawURL := fmt.Sprintf( - "https://github.com/golang/%s/raw/{commit}/{file}", strings.TrimPrefix(suffix, "x/")) - - info.repoURL = fmt.Sprintf("https://cs.opensource.google/go/%s", suffix) - info.templates = csopensourceTemplates - info.templates.Raw = rawURL - - if isHash { - // When we have a pseudoversion, info.commit will be an actual commit - // instead of a tag. - // - // https://cs.opensource.google/go/* has short commits hardcoded to 8 - // chars. Commits shorter or longer will not work, unless it is the full - // commit hash. - info.commit = info.commit[0:8] - } -} - -// matchStatic matches the given module or repo path against a list of known -// patterns. It returns the repo name, the module path relative to the repo -// root, and URL templates if there is a match. -// -// The relative module path may not be correct in all cases: it is wrong if it -// ends in a version that is not part of the repo directory structure, because -// the repo follows the "major branch" convention for versions 2 and above. -// E.g. this function could return "foo/v2", but the module files live under "foo"; the -// "/v2" is part of the module path (and the import paths of its packages) but -// is not a subdirectory. This mistake is corrected in adjustVersionedModuleDirectory, -// once we have all the information we need to fix it. -// -// repo + "/" + relativeModulePath is often, but not always, equal to -// moduleOrRepoPath. It is not when the argument is a module path that uses the -// go command's general syntax, which ends in a ".vcs" (e.g. ".git", ".hg") that -// is neither part of the repo nor the suffix. For example, if the argument is -// github.com/a/b/c -// then repo="github.com/a/b" and relativeModulePath="c"; together they make up the module path. -// But if the argument is -// example.com/a/b.git/c -// then repo="example.com/a/b" and relativeModulePath="c"; the ".git" is omitted, since it is neither -// part of the repo nor part of the relative path to the module within the repo. -func matchStatic(moduleOrRepoPath string) (repo, relativeModulePath string, _ urlTemplates, transformCommit transformCommitFunc, _ error) { - for _, pat := range patterns { - matches := pat.re.FindStringSubmatch(moduleOrRepoPath) - if matches == nil { - continue - } - var repo string - for i, n := range pat.re.SubexpNames() { - if n == "repo" { - repo = matches[i] - break - } - } - // Special case: git.apache.org has a go-import tag that points to - // github.com/apache, but it's not quite right (the repo prefix is - // missing a ".git"), so handle it here. - const apacheDomain = "git.apache.org/" - if strings.HasPrefix(repo, apacheDomain) { - repo = strings.Replace(repo, apacheDomain, "github.com/apache/", 1) - } - // Special case: module paths are blitiri.com.ar/go/..., but repos are blitiri.com.ar/git/r/... - if strings.HasPrefix(repo, "blitiri.com.ar/") { - repo = strings.Replace(repo, "/go/", "/git/r/", 1) - } - relativeModulePath = strings.TrimPrefix(moduleOrRepoPath, matches[0]) - relativeModulePath = strings.TrimPrefix(relativeModulePath, "/") - return repo, relativeModulePath, pat.templates, pat.transformCommit, nil - } - return "", "", urlTemplates{}, nil, derrors.NotFound -} - -// moduleInfoDynamic uses the go-import and go-source meta tags to construct an Info. -func moduleInfoDynamic(ctx context.Context, client *Client, modulePath, version string) (_ *Info, err error) { - defer derrors.Wrap(&err, "moduleInfoDynamic(ctx, client, %q, %q)", modulePath, version) - - if client.httpClient == nil { - return nil, nil // for testing - } - - sourceMeta, err := fetchMeta(ctx, client, modulePath) - if err != nil { - return nil, err - } - // Don't check that the tag information at the repo root prefix is the same - // as in the module path. It was done for us by the proxy and/or go command. - // (This lets us merge information from the go-import and go-source tags.) - - // sourceMeta contains some information about where the module's source lives. But there - // are some problems: - // - We may only have a go-import tag, not a go-source tag, so we don't have URL templates for - // building URLs to files and directories. - // - Even if we do have a go-source tag, its URL template format predates - // versioning, so the URL templates won't provide a way to specify a - // version or commit. - // - // We resolve these problems as follows: - // 1. First look at the repo URL from the tag. If that matches a known hosting site, use the - // URL templates corresponding to that site and ignore whatever's in the tag. - // 2. Then look at the URL templates to see if they match a known pattern, and use the templates - // from that pattern. For example, the meta tags for gopkg.in/yaml.v2 only mention github - // in the URL templates, like "https://github.com/go-yaml/yaml/tree/v2.2.3{/dir}". We can observe - // that that template begins with a known pattern--a GitHub repo, ignore the rest of it, and use the - // GitHub URL templates that we know. - repoURL := sourceMeta.repoURL - _, _, templates, transformCommit, _ := matchStatic(removeHTTPScheme(repoURL)) - // If err != nil, templates will be the zero value, so we can ignore it (same just below). - if templates == (urlTemplates{}) { - var repo string - repo, _, templates, transformCommit, _ = matchStatic(removeHTTPScheme(sourceMeta.dirTemplate)) - if templates == (urlTemplates{}) { - if err == nil { - templates, transformCommit = matchLegacyTemplates(ctx, sourceMeta) - repoURL = strings.TrimSuffix(repoURL, ".git") - } else { - log.Printf("no templates for repo URL %q from meta tag: err=%v", sourceMeta.repoURL, err) - } - } else { - // Use the repo from the template, not the original one. - repoURL = "https://" + repo - } - } - dir := strings.TrimPrefix(strings.TrimPrefix(modulePath, sourceMeta.repoRootPrefix), "/") - commit, isHash := commitFromVersion(version, dir) - if transformCommit != nil { - commit = transformCommit(commit, isHash) - } - return &Info{ - repoURL: strings.TrimSuffix(repoURL, "/"), - moduleDir: dir, - commit: commit, - templates: templates, - }, nil -} - -// List of template regexps and their corresponding likely templates, -// used by matchLegacyTemplates below. -var legacyTemplateMatches = []struct { - fileRegexp *regexp.Regexp - templates urlTemplates - transformCommit transformCommitFunc -}{ - { - regexp.MustCompile(`/src/branch/\w+\{/dir\}/\{file\}#L\{line\}$`), - giteaURLTemplates, giteaTransformCommit, - }, - { - regexp.MustCompile(`/src/\w+\{/dir\}/\{file\}#L\{line\}$`), - giteaURLTemplates, nil, - }, - { - regexp.MustCompile(`/-/blob/\w+\{/dir\}/\{file\}#L\{line\}$`), - gitlab2URLTemplates, nil, - }, - { - regexp.MustCompile(`/tree\{/dir\}/\{file\}#n\{line\}$`), - fdioURLTemplates, fdioTransformCommit, - }, -} - -// matchLegacyTemplates matches the templates from the go-source meta tag -// against some known patterns to guess the version-aware URL templates. If it -// can't find a match, it falls back using the go-source templates with some -// small replacements. These will not be version-aware but will still serve -// source at a fixed commit, which is better than nothing. -func matchLegacyTemplates(ctx context.Context, sm *sourceMeta) (_ urlTemplates, transformCommit transformCommitFunc) { - if sm.fileTemplate == "" { - return urlTemplates{}, nil - } - for _, ltm := range legacyTemplateMatches { - if ltm.fileRegexp.MatchString(sm.fileTemplate) { - return ltm.templates, ltm.transformCommit - } - } - log.Printf("matchLegacyTemplates: no matches for repo URL %q; replacing", sm.repoURL) - rep := strings.NewReplacer( - "{/dir}/{file}", "/{file}", - "{dir}/{file}", "{file}", - "{/dir}", "/{dir}") - line := rep.Replace(sm.fileTemplate) - file := line - if i := strings.LastIndexByte(line, '#'); i > 0 { - file = line[:i] - } - return urlTemplates{ - Repo: sm.repoURL, - Directory: rep.Replace(sm.dirTemplate), - File: file, - Line: line, - }, nil -} - -// adjustVersionedModuleDirectory changes info.moduleDir if necessary to -// correctly reflect the repo structure. info.moduleDir will be wrong if it has -// a suffix "/vN" for N > 1, and the repo uses the "major branch" convention, -// where modules at version 2 and higher live on branches rather than -// subdirectories. See https://research.swtch.com/vgo-module for a discussion of -// the "major branch" vs. "major subdirectory" conventions for organizing a -// repo. -func adjustVersionedModuleDirectory(ctx context.Context, client *Client, info *Info) { - dirWithoutVersion := removeVersionSuffix(info.moduleDir) - if info.moduleDir == dirWithoutVersion { - return - } - // moduleDir does have a "/vN" for N > 1. To see if that is the actual directory, - // fetch the go.mod file from it. - res, err := client.doURL(ctx, "HEAD", info.FileURL("go.mod"), true) - // On any failure, assume that the right directory is the one without the version. - if err != nil { - info.moduleDir = dirWithoutVersion - } else { - res.Body.Close() - } -} - -// removeHTTPScheme removes an initial "http://" or "https://" from url. -// The result can be used to match against our static patterns. -// If the URL uses a different scheme, it won't be removed and it won't -// match any patterns, as intended. -func removeHTTPScheme(url string) string { - for _, prefix := range []string{"https://", "http://"} { - if strings.HasPrefix(url, prefix) { - return url[len(prefix):] - } - } - return url -} - -// removeVersionSuffix returns s with "/vN" removed if N is an integer > 1. -// Otherwise it returns s. -func removeVersionSuffix(s string) string { - dir, base := path.Split(s) - if !strings.HasPrefix(base, "v") { - return s - } - if n, err := strconv.Atoi(base[1:]); err != nil || n < 2 { - return s - } - return strings.TrimSuffix(dir, "/") -} - -type transformCommitFunc func(commit string, isHash bool) string - -// Patterns for determining repo and URL templates from module paths or repo -// URLs. Each regexp must match a prefix of the target string, and must have a -// group named "repo". -var patterns = []struct { - pattern string // uncompiled regexp - templates urlTemplates - re *regexp.Regexp - // transformCommit may alter the commit before substitution - transformCommit transformCommitFunc -}{ - { - pattern: `^(?Pgithub\.com/[a-z0-9A-Z_.\-]+/[a-z0-9A-Z_.\-]+)`, - templates: githubURLTemplates, - }, - { - // Assume that any site beginning with "github." works like github.com. - pattern: `^(?Pgithub\.[a-z0-9A-Z.-]+/[a-z0-9A-Z_.\-]+/[a-z0-9A-Z_.\-]+)(\.git|$)`, - templates: githubURLTemplates, - }, - { - pattern: `^(?Pbitbucket\.org/[a-z0-9A-Z_.\-]+/[a-z0-9A-Z_.\-]+)`, - templates: bitbucketURLTemplates, - }, - { - pattern: `^(?Pgitlab\.com/[a-z0-9A-Z_.\-]+/[a-z0-9A-Z_.\-]+)`, - templates: githubURLTemplates, - }, - { - // Assume that any site beginning with "gitlab." works like gitlab.com. - pattern: `^(?Pgitlab\.[a-z0-9A-Z.-]+/[a-z0-9A-Z_.\-]+/[a-z0-9A-Z_.\-]+)(\.git|$)`, - templates: githubURLTemplates, - }, - { - pattern: `^(?Pgitee\.com/[a-z0-9A-Z_.\-]+/[a-z0-9A-Z_.\-]+)(\.git|$)`, - templates: githubURLTemplates, - }, - { - pattern: `^(?Pgit\.sr\.ht/~[a-z0-9A-Z_.\-]+/[a-z0-9A-Z_.\-]+)`, - templates: urlTemplates{ - Directory: "{repo}/tree/{commit}/{dir}", - File: "{repo}/tree/{commit}/{file}", - Line: "{repo}/tree/{commit}/{file}#L{line}", - Raw: "{repo}/blob/{commit}/{file}", - }, - }, - { - pattern: `^(?Pgit\.fd\.io/[a-z0-9A-Z_.\-]+)`, - templates: fdioURLTemplates, - transformCommit: fdioTransformCommit, - }, - { - pattern: `^(?Pgit\.pirl\.io/[a-z0-9A-Z_.\-]+/[a-z0-9A-Z_.\-]+)`, - templates: gitlab2URLTemplates, - }, - { - pattern: `^(?Pgitea\.com/[a-z0-9A-Z_.\-]+/[a-z0-9A-Z_.\-]+)(\.git|$)`, - templates: giteaURLTemplates, - transformCommit: giteaTransformCommit, - }, - { - // Assume that any site beginning with "gitea." works like gitea.com. - pattern: `^(?Pgitea\.[a-z0-9A-Z.-]+/[a-z0-9A-Z_.\-]+/[a-z0-9A-Z_.\-]+)(\.git|$)`, - templates: giteaURLTemplates, - transformCommit: giteaTransformCommit, - }, - { - pattern: `^(?Pgo\.isomorphicgo\.org/[a-z0-9A-Z_.\-]+/[a-z0-9A-Z_.\-]+)(\.git|$)`, - templates: giteaURLTemplates, - transformCommit: giteaTransformCommit, - }, - { - pattern: `^(?Pgit\.openprivacy\.ca/[a-z0-9A-Z_.\-]+/[a-z0-9A-Z_.\-]+)(\.git|$)`, - templates: giteaURLTemplates, - transformCommit: giteaTransformCommit, - }, - { - pattern: `^(?Pgogs\.[a-z0-9A-Z.-]+/[a-z0-9A-Z_.\-]+/[a-z0-9A-Z_.\-]+)(\.git|$)`, - // Gogs uses the same basic structure as Gitea, but omits the type of - // commit ("tag" or "commit"), so we don't need a transformCommit - // function. Gogs does not support short hashes, but we create those - // URLs anyway. See gogs/gogs#6242. - templates: giteaURLTemplates, - }, - { - pattern: `^(?Pdmitri\.shuralyov\.com\/.+)$`, - templates: urlTemplates{ - Repo: "{repo}/...", - Directory: "https://gotools.org/{importPath}?rev={commit}", - File: "https://gotools.org/{importPath}?rev={commit}#{base}", - Line: "https://gotools.org/{importPath}?rev={commit}#{base}-L{line}", - }, - }, - { - pattern: `^(?Pblitiri\.com\.ar/go/.+)$`, - templates: urlTemplates{ - Repo: "{repo}", - Directory: "{repo}/b/master/t/{dir}", - File: "{repo}/b/master/t/{dir}f={file}.html", - Line: "{repo}/b/master/t/{dir}f={file}.html#line-{line}", - }, - }, - - // Patterns that match the general go command pattern, where they must have - // a ".git" repo suffix in an import path. If matching a repo URL from a meta tag, - // there is no ".git". - { - pattern: `^(?P[^.]+\.googlesource\.com/[^.]+)(\.git|$)`, - templates: googlesourceURLTemplates, - }, - { - pattern: `^(?Pgit\.apache\.org/[^.]+)(\.git|$)`, - templates: githubURLTemplates, - }, - // General syntax for the go command. We can extract the repo and directory, but - // we don't know the URL templates. - // Must be last in this list. - { - pattern: `(?P([a-z0-9.\-]+\.)+[a-z0-9.\-]+(:[0-9]+)?(/~?[A-Za-z0-9_.\-]+)+?)\.(bzr|fossil|git|hg|svn)`, - templates: urlTemplates{}, - }, -} - -func init() { - for i := range patterns { - re := regexp.MustCompile(patterns[i].pattern) - // The pattern regexp must contain a group named "repo". - found := false - for _, n := range re.SubexpNames() { - if n == "repo" { - found = true - break - } - } - if !found { - panic(fmt.Sprintf("pattern %s missing group", patterns[i].pattern)) - } - patterns[i].re = re - } -} - -// giteaTransformCommit transforms commits for the Gitea code hosting system. -func giteaTransformCommit(commit string, isHash bool) string { - // Hashes use "commit", tags use "tag". - // Short hashes are supported as of v1.14.0. - if isHash { - return "commit/" + commit - } - return "tag/" + commit -} - -func fdioTransformCommit(commit string, isHash bool) string { - // hashes use "?id=", tags use "?h=" - p := "h" - if isHash { - p = "id" - } - return fmt.Sprintf("%s=%s", p, commit) -} - -// urlTemplates describes how to build URLs from bits of source information. -// The fields are exported for JSON encoding. -// -// The template variables are: -// -// • {repo} - Repository URL with "https://" prefix ("https://example.com/myrepo"). -// • {importPath} - Package import path ("example.com/myrepo/mypkg"). -// • {commit} - Tag name or commit hash corresponding to version ("v0.1.0" or "1234567890ab"). -// • {dir} - Path to directory of the package, relative to repo root ("mypkg"). -// • {file} - Path to file containing the identifier, relative to repo root ("mypkg/file.go"). -// • {base} - Base name of file containing the identifier, including file extension ("file.go"). -// • {line} - Line number for the identifier ("41"). -// -type urlTemplates struct { - Repo string `json:",omitempty"` // Optional URL template for the repository home page, with {repo}. If left empty, a default template "{repo}" is used. - Directory string // URL template for a directory, with {repo}, {importPath}, {commit}, {dir}. - File string // URL template for a file, with {repo}, {importPath}, {commit}, {file}, {base}. - Line string // URL template for a line, with {repo}, {importPath}, {commit}, {file}, {base}, {line}. - Raw string // Optional URL template for the raw contents of a file, with {repo}, {commit}, {file}. -} - -var ( - githubURLTemplates = urlTemplates{ - Directory: "{repo}/tree/{commit}/{dir}", - File: "{repo}/blob/{commit}/{file}", - Line: "{repo}/blob/{commit}/{file}#L{line}", - Raw: "{repo}/raw/{commit}/{file}", - } - - bitbucketURLTemplates = urlTemplates{ - Directory: "{repo}/src/{commit}/{dir}", - File: "{repo}/src/{commit}/{file}", - Line: "{repo}/src/{commit}/{file}#lines-{line}", - Raw: "{repo}/raw/{commit}/{file}", - } - giteaURLTemplates = urlTemplates{ - Directory: "{repo}/src/{commit}/{dir}", - File: "{repo}/src/{commit}/{file}", - Line: "{repo}/src/{commit}/{file}#L{line}", - Raw: "{repo}/raw/{commit}/{file}", - } - googlesourceURLTemplates = urlTemplates{ - Directory: "{repo}/+/{commit}/{dir}", - File: "{repo}/+/{commit}/{file}", - Line: "{repo}/+/{commit}/{file}#{line}", - // Gitiles has no support for serving raw content at this time. - } - gitlab2URLTemplates = urlTemplates{ - Directory: "{repo}/-/tree/{commit}/{dir}", - File: "{repo}/-/blob/{commit}/{file}", - Line: "{repo}/-/blob/{commit}/{file}#L{line}", - Raw: "{repo}/-/raw/{commit}/{file}", - } - fdioURLTemplates = urlTemplates{ - Directory: "{repo}/tree/{dir}?{commit}", - File: "{repo}/tree/{file}?{commit}", - Line: "{repo}/tree/{file}?{commit}#n{line}", - Raw: "{repo}/plain/{file}?{commit}", - } - csopensourceTemplates = urlTemplates{ - Directory: "{repo}/+/{commit}:{dir}", - File: "{repo}/+/{commit}:{file}", - Line: "{repo}/+/{commit}:{file};l={line}", - // Gitiles has no support for serving raw content at this time. - } -) - -// commitFromVersion returns a string that refers to a commit corresponding to version. -// It also reports whether the returned value is a commit hash. -// The string may be a tag, or it may be the hash or similar unique identifier of a commit. -// The second argument is the module path relative to the repo root. -func commitFromVersion(vers, relativeModulePath string) (commit string, isHash bool) { - // Commit for the module: either a sha for pseudoversions, or a tag. - v := strings.TrimSuffix(vers, "+incompatible") - if version.IsPseudo(v) { - // Use the commit hash at the end. - return v[strings.LastIndex(v, "-")+1:], true - } else { - // The tags for a nested module begin with the relative module path of the module, - // removing a "/vN" suffix if N > 1. - prefix := removeVersionSuffix(relativeModulePath) - if prefix != "" { - return prefix + "/" + v, false - } - return v, false - } -} - -// trimVCSSuffix removes a VCS suffix from a repo URL in selected cases. -// -// The Go command allows a VCS suffix on a repo, like github.com/foo/bar.git. But -// some code hosting sites don't support all paths constructed from such URLs. -// For example, GitHub will redirect github.com/foo/bar.git to github.com/foo/bar, -// but will 404 on github.com/goo/bar.git/tree/master and any other URL with a -// non-empty path. -// -// To be conservative, we remove the suffix only in cases where we know it's -// wrong. -func trimVCSSuffix(repoURL string) string { - if !strings.HasSuffix(repoURL, ".git") { - return repoURL - } - if strings.HasPrefix(repoURL, "https://github.com/") || strings.HasPrefix(repoURL, "https://gitlab.com/") { - return strings.TrimSuffix(repoURL, ".git") - } - return repoURL -} - -// The following code copied from cmd/go/internal/get: - -// expand rewrites s to replace {k} with match[k] for each key k in match. -func expand(s string, match map[string]string) string { - // We want to replace each match exactly once, and the result of expansion - // must not depend on the iteration order through the map. - // A strings.Replacer has exactly the properties we're looking for. - oldNew := make([]string, 0, 2*len(match)) - for k, v := range match { - oldNew = append(oldNew, "{"+k+"}", v) - } - return strings.NewReplacer(oldNew...).Replace(s) -} - -// NewGitHubInfo creates a source.Info with GitHub URL templates. -// It is for testing only. -func NewGitHubInfo(repoURL, moduleDir, commit string) *Info { - return &Info{ - repoURL: trimVCSSuffix(repoURL), - moduleDir: moduleDir, - commit: commit, - templates: githubURLTemplates, - } -} - -// NewStdlibInfo returns a source.Info for the standard library at the given -// semantic version. It panics if the version does not correspond to a Go release -// tag. It is for testing only. -func NewStdlibInfo(version string) *Info { - info, err := newStdlibInfo(version) - if err != nil { - panic(err) - } - return info -} - -// FilesInfo returns an Info that links to a path in the server's /files -// namespace. The same path needs to be installed via frontend.Server.InstallFS. -func FilesInfo(dir string) *Info { - // The repo and directory patterns need a final slash. Without it, - // http.FileServer redirects instead of serving the directory contents, with - // confusing results. - return &Info{ - repoURL: path.Join("/files", dir), - templates: urlTemplates{ - Repo: "{repo}/", - Directory: "{repo}/{dir}/", - File: "{repo}/{file}", - Line: "{repo}/{file}#L{line}", // not supported now, but maybe someday - Raw: "{repo}/{file}", - }, - } -} diff --git a/vendor/github.com/google/go-licenses/internal/third_party/pkgsite/source/source_patch.go b/vendor/github.com/google/go-licenses/internal/third_party/pkgsite/source/source_patch.go deleted file mode 100644 index 3bce5e6..0000000 --- a/vendor/github.com/google/go-licenses/internal/third_party/pkgsite/source/source_patch.go +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2022 Google LLC -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package source - -// This file includes all local additions to source package for google/go-licenses use-cases. - -// SetCommit overrides commit to a specified commit. Usually, you should pass your version to -// ModuleInfo(). However, when you do not know the version and just wants a link that points to -// a known commit/branch/tag. You can use this method to directly override the commit like -// info.SetCommit("master"). -// -// Note this is different from directly passing "master" as version to ModuleInfo(), because for -// modules not at the root of a repo, there are conventions that add a module's relative dir in -// front of the version as the actual git tag. For example, for a sub module at ./submod whose -// version is v1.0.1, the actual git tag should be submod/v1.0.1. -func (i *Info) SetCommit(commit string) { - if i == nil { - return - } - i.commit = commit -} diff --git a/vendor/github.com/google/go-licenses/internal/third_party/pkgsite/stdlib/stdlib.go b/vendor/github.com/google/go-licenses/internal/third_party/pkgsite/stdlib/stdlib.go deleted file mode 100644 index 5933699..0000000 --- a/vendor/github.com/google/go-licenses/internal/third_party/pkgsite/stdlib/stdlib.go +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright 2019 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 stdlib supports special handling of the Go standard library. -// Regardless of the how the standard library has been split into modules for -// development and testing, the discovery site treats it as a single module -// named "std". -package stdlib - -import ( - "fmt" - "strings" - - "github.com/google/go-licenses/internal/third_party/pkgsite/derrors" - "github.com/google/go-licenses/internal/third_party/pkgsite/version" - "golang.org/x/mod/semver" -) - -const ( - // ModulePath is the name of the module for the standard library. - ModulePath = "std" - - // DevFuzz is the branch name for fuzzing in beta. - DevFuzz = "dev.fuzz" - - // DevBoringCrypto is the branch name for dev.boringcrypto. - DevBoringCrypto = "dev.boringcrypto" -) - -// SupportedBranches are the branches of the stdlib repo supported by pkgsite. -var SupportedBranches = map[string]bool{ - version.Master: true, - DevBoringCrypto: true, - DevFuzz: true, -} - -// TagForVersion returns the Go standard library repository tag corresponding -// to semver. The Go tags differ from standard semantic versions in a few ways, -// such as beginning with "go" instead of "v". -func TagForVersion(v string) (_ string, err error) { - defer derrors.Wrap(&err, "TagForVersion(%q)", v) - - // Special case: master => master or dev.fuzz => dev.fuzz - if SupportedBranches[v] { - return v, nil - } - if strings.HasPrefix(v, "v0.0.0") { - return version.Master, nil - } - // Special case: v1.0.0 => go1. - if v == "v1.0.0" { - return "go1", nil - } - if !semver.IsValid(v) { - return "", fmt.Errorf("%w: requested version is not a valid semantic version: %q ", derrors.InvalidArgument, v) - } - goVersion := semver.Canonical(v) - prerelease := semver.Prerelease(goVersion) - versionWithoutPrerelease := strings.TrimSuffix(goVersion, prerelease) - patch := strings.TrimPrefix(versionWithoutPrerelease, semver.MajorMinor(goVersion)+".") - if patch == "0" { - versionWithoutPrerelease = strings.TrimSuffix(versionWithoutPrerelease, ".0") - } - goVersion = fmt.Sprintf("go%s", strings.TrimPrefix(versionWithoutPrerelease, "v")) - if prerelease != "" { - // Go prereleases look like "beta1" instead of "beta.1". - // "beta1" is bad for sorting (since beta10 comes before beta9), so - // require the dot form. - i := finalDigitsIndex(prerelease) - if i >= 1 { - if prerelease[i-1] != '.' { - return "", fmt.Errorf("%w: final digits in a prerelease must follow a period", derrors.InvalidArgument) - } - // Remove the dot. - prerelease = prerelease[:i-1] + prerelease[i:] - } - goVersion += strings.TrimPrefix(prerelease, "-") - } - return goVersion, nil -} - -// finalDigitsIndex returns the index of the first digit in the sequence of digits ending s. -// If s doesn't end in digits, it returns -1. -func finalDigitsIndex(s string) int { - // Assume ASCII (since the semver package does anyway). - var i int - for i = len(s) - 1; i >= 0; i-- { - if s[i] < '0' || s[i] > '9' { - break - } - } - if i == len(s)-1 { - return -1 - } - return i + 1 -} - -const ( - GoSourceRepoURL = "https://cs.opensource.google/go/go" -) - -// Directory returns the directory of the standard library relative to the repo root. -func Directory(v string) string { - if semver.Compare(v, "v1.4.0-beta.1") >= 0 || - SupportedBranches[v] || strings.HasPrefix(v, "v0.0.0") { - return "src" - } - // For versions older than v1.4.0-beta.1, the stdlib is in src/pkg. - return "src/pkg" -} diff --git a/vendor/github.com/google/go-licenses/internal/third_party/pkgsite/version/version.go b/vendor/github.com/google/go-licenses/internal/third_party/pkgsite/version/version.go deleted file mode 100644 index 5dfd7d0..0000000 --- a/vendor/github.com/google/go-licenses/internal/third_party/pkgsite/version/version.go +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2019 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 version handles version types. -package version - -import ( - "regexp" - "strings" -) - -const ( - // Master represents the master branch. - Master = "master" -) - -var pseudoVersionRE = regexp.MustCompile(`^v[0-9]+\.(0\.0-|\d+\.\d+-([^+]*\.)?0\.)\d{14}-[A-Za-z0-9]+(\+incompatible)?$`) - -// IsPseudo reports whether a valid version v is a pseudo-version. -// Modified from src/cmd/go/internal/modfetch. -func IsPseudo(v string) bool { - return strings.Count(v, "-") >= 2 && pseudoVersionRE.MatchString(v) -} diff --git a/vendor/github.com/google/go-licenses/licenses/classifier.go b/vendor/github.com/google/go-licenses/licenses/classifier.go deleted file mode 100644 index ee17b2f..0000000 --- a/vendor/github.com/google/go-licenses/licenses/classifier.go +++ /dev/null @@ -1,101 +0,0 @@ -// Copyright 2019 Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package licenses - -import ( - "fmt" - "io/ioutil" - - "github.com/google/licenseclassifier" -) - -// Type identifies a class of software license. -type Type string - -// License types -const ( - // Unknown license type. - Unknown = Type("") - // Restricted licenses require mandatory source distribution if we ship a - // product that includes third-party code protected by such a license. - Restricted = Type("restricted") - // Reciprocal licenses allow usage of software made available under such - // licenses freely in *unmodified* form. If the third-party source code is - // modified in any way these modifications to the original third-party - // source code must be made available. - Reciprocal = Type("reciprocal") - // Notice licenses contain few restrictions, allowing original or modified - // third-party software to be shipped in any product without endangering or - // encumbering our source code. All of the licenses in this category do, - // however, have an "original Copyright notice" or "advertising clause", - // wherein any external distributions must include the notice or clause - // specified in the license. - Notice = Type("notice") - // Permissive licenses are even more lenient than a 'notice' license. - // Not even a copyright notice is required for license compliance. - Permissive = Type("permissive") - // Unencumbered covers licenses that basically declare that the code is "free for any use". - Unencumbered = Type("unencumbered") - // Forbidden licenses are forbidden to be used. - Forbidden = Type("FORBIDDEN") -) - -func (t Type) String() string { - switch t { - case Unknown: - // licenseclassifier uses an empty string to indicate an unknown license - // type, which is unclear to users when printed as a string. - return "unknown" - default: - return string(t) - } -} - -// Classifier can detect the type of a software license. -type Classifier interface { - Identify(licensePath string) (string, Type, error) -} - -type googleClassifier struct { - classifier *licenseclassifier.License -} - -// NewClassifier creates a classifier that requires a specified confidence threshold -// in order to return a positive license classification. -func NewClassifier(confidenceThreshold float64) (Classifier, error) { - c, err := licenseclassifier.New(confidenceThreshold) - if err != nil { - return nil, err - } - return &googleClassifier{classifier: c}, nil -} - -// Identify returns the name and type of a license, given its file path. -// An empty license path results in an empty name and Unknown type. -func (c *googleClassifier) Identify(licensePath string) (string, Type, error) { - if licensePath == "" { - return "", Unknown, nil - } - content, err := ioutil.ReadFile(licensePath) - if err != nil { - return "", "", err - } - matches := c.classifier.MultipleMatch(string(content), true) - if len(matches) == 0 { - return "", "", fmt.Errorf("unknown license") - } - licenseName := matches[0].Name - return licenseName, Type(licenseclassifier.LicenseType(licenseName)), nil -} diff --git a/vendor/github.com/google/go-licenses/licenses/find.go b/vendor/github.com/google/go-licenses/licenses/find.go deleted file mode 100644 index d189f9a..0000000 --- a/vendor/github.com/google/go-licenses/licenses/find.go +++ /dev/null @@ -1,95 +0,0 @@ -// Copyright 2019 Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package licenses - -import ( - "errors" - "fmt" - "io/ioutil" - "path/filepath" - "regexp" - "strings" -) - -var ( - licenseRegexp = regexp.MustCompile(`^(?i)((UN)?LICEN(S|C)E|COPYING|README|NOTICE).*$`) -) - -// Find returns the file path of the license for this package. -// -// dir is path of the directory where we want to find a license. -// rootDir is path of the module containing this package. Find will not search out of the -// rootDir. -func Find(dir string, rootDir string, classifier Classifier) (string, error) { - dir, err := filepath.Abs(dir) - if err != nil { - return "", err - } - rootDir, err = filepath.Abs(rootDir) - if err != nil { - return "", err - } - if !strings.HasPrefix(dir, rootDir) { - return "", fmt.Errorf("licenses.Find: rootDir %s should contain dir %s", rootDir, dir) - } - found, err := findUpwards(dir, licenseRegexp, rootDir, func(path string) bool { - // TODO(RJPercival): Return license details - if _, _, err := classifier.Identify(path); err != nil { - return false - } - return true - }) - if err != nil { - if errors.Is(err, errNotFound) { - return "", fmt.Errorf("cannot find a known open source license for %q whose name matches regexp %s and locates up until %q", dir, licenseRegexp, rootDir) - } - return "", fmt.Errorf("finding a known open source license: %w", err) - } - return found, nil -} - -var errNotFound = fmt.Errorf("file/directory matching predicate and regexp not found") - -func findUpwards(dir string, r *regexp.Regexp, stopAt string, predicate func(path string) bool) (string, error) { - // Dir must be made absolute for reliable matching with stopAt regexps - dir, err := filepath.Abs(dir) - if err != nil { - return "", err - } - start := dir - // Stop once we go out of the stopAt dir. - for strings.HasPrefix(dir, stopAt) { - dirContents, err := ioutil.ReadDir(dir) - if err != nil { - return "", err - } - for _, f := range dirContents { - if r.MatchString(f.Name()) { - path := filepath.Join(dir, f.Name()) - if predicate != nil && !predicate(path) { - continue - } - return path, nil - } - } - parent := filepath.Dir(dir) - if parent == dir { - // Can't go any higher up the directory tree. - break - } - dir = parent - } - return "", fmt.Errorf("findUpwards(dir=%q, regexp=%q, stopAt=%q, predicate=func): %w", start, r, stopAt, errNotFound) -} diff --git a/vendor/github.com/google/go-licenses/licenses/git.go b/vendor/github.com/google/go-licenses/licenses/git.go deleted file mode 100644 index 79ba24e..0000000 --- a/vendor/github.com/google/go-licenses/licenses/git.go +++ /dev/null @@ -1,100 +0,0 @@ -// Copyright 2019 Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package licenses - -import ( - "fmt" - "net/url" - "path" - "path/filepath" - "regexp" - "strings" - - "github.com/golang/glog" - git "gopkg.in/src-d/go-git.v4" -) - -var ( - gitRegexp = regexp.MustCompile(`^\.git$`) - - // TODO(RJPercival): Support replacing "master" with Go Module version - gitRepoPathPrefixes = map[string]string{ - "github.com": "blob/master/", - "bitbucket.org": "src/master/", - "go.googlesource.com": "+/refs/heads/master/", - "code.googlesource.com": "+/refs/heads/master/", - } -) - -// GitRepo represents a Git repository that exists on disk locally. -type GitRepo struct { - dotGitPath string -} - -// FindGitRepo finds the Git repository that contains the specified filePath -// by searching upwards through the directory tree for a ".git" directory. -func FindGitRepo(filePath string) (*GitRepo, error) { - // TODO(Bobgy): the "/" is used just to fix the test. git.go is not - // currently used, but I plan to bring it back to detect version of the - // main module in following up PRs. - path, err := findUpwards(filepath.Dir(filePath), gitRegexp, "/", nil) - if err != nil { - return nil, err - } - return &GitRepo{dotGitPath: path}, nil -} - -// FileURL returns the URL of a file stored in a Git repository. -// It uses the URL of the specified Git remote repository to construct this URL. -// It supports repositories hosted on github.com, bitbucket.org and googlesource.com. -func (g *GitRepo) FileURL(filePath string, remote string) (*url.URL, error) { - relFilePath, err := filepath.Rel(filepath.Dir(g.dotGitPath), filePath) - if err != nil { - return nil, err - } - repoURL, err := gitRemoteURL(g.dotGitPath, remote) - if err != nil { - return nil, err - } - repoURL.Host = strings.TrimSuffix(repoURL.Host, ".") - repoURL.Path = strings.TrimSuffix(repoURL.Path, ".git") - if prefix, ok := gitRepoPathPrefixes[repoURL.Host]; ok { - repoURL.Path = path.Join(repoURL.Path, prefix, filepath.ToSlash(relFilePath)) - } else { - return nil, fmt.Errorf("unrecognised Git repository host: %q", repoURL) - } - - return repoURL, nil -} - -func gitRemoteURL(repoPath string, remoteName string) (*url.URL, error) { - repo, err := git.PlainOpen(repoPath) - if err != nil { - return nil, err - } - remote, err := repo.Remote(remoteName) - if err != nil { - return nil, err - } - for _, urlStr := range remote.Config().URLs { - u, err := url.Parse(urlStr) - if err != nil { - glog.Warningf("Error parsing %q as URL from remote %q in Git repo at %q: %s", urlStr, remoteName, repoPath, err) - continue - } - return u, nil - } - return nil, fmt.Errorf("the Git remote %q does not have a valid URL", remoteName) -} diff --git a/vendor/github.com/google/go-licenses/licenses/library.go b/vendor/github.com/google/go-licenses/licenses/library.go deleted file mode 100644 index c209224..0000000 --- a/vendor/github.com/google/go-licenses/licenses/library.go +++ /dev/null @@ -1,290 +0,0 @@ -// Copyright 2019 Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package licenses - -import ( - "context" - "fmt" - "go/build" - "path/filepath" - "sort" - "strings" - "time" - - "github.com/golang/glog" - "github.com/google/go-licenses/internal/third_party/pkgsite/source" - "golang.org/x/tools/go/packages" -) - -// Library is a collection of packages covered by the same license file. -type Library struct { - // LicensePath is the path of the file containing the library's license. - LicensePath string - // Packages contains import paths for Go packages in this library. - // It may not be the complete set of all packages in the library. - Packages []string - // Parent go module. - module *Module -} - -// PackagesError aggregates all Packages[].Errors into a single error. -type PackagesError struct { - pkgs []*packages.Package -} - -func (e PackagesError) Error() string { - var str strings.Builder - str.WriteString(fmt.Sprintf("errors for %q:", e.pkgs)) - packages.Visit(e.pkgs, nil, func(pkg *packages.Package) { - for _, err := range pkg.Errors { - str.WriteString(fmt.Sprintf("\n%s: %s", pkg.PkgPath, err)) - } - }) - return str.String() -} - -// Libraries returns the collection of libraries used by this package, directly or transitively. -// A library is a collection of one or more packages covered by the same license file. -// Packages not covered by a license will be returned as individual libraries. -// Standard library packages will be ignored. -func Libraries(ctx context.Context, classifier Classifier, ignoredPaths []string, importPaths ...string) ([]*Library, error) { - cfg := &packages.Config{ - Context: ctx, - Mode: packages.NeedImports | packages.NeedDeps | packages.NeedFiles | packages.NeedName | packages.NeedModule, - } - - rootPkgs, err := packages.Load(cfg, importPaths...) - if err != nil { - return nil, err - } - - pkgs := map[string]*packages.Package{} - pkgsByLicense := make(map[string][]*packages.Package) - pkgErrorOccurred := false - otherErrorOccurred := false - packages.Visit(rootPkgs, func(p *packages.Package) bool { - if len(p.Errors) > 0 { - pkgErrorOccurred = true - return false - } - if isStdLib(p) { - // No license requirements for the Go standard library. - return false - } - for _, i := range ignoredPaths { - if strings.HasPrefix(p.PkgPath, i) { - // Marked to be ignored. - return true - } - } - - if len(p.OtherFiles) > 0 { - glog.Warningf("%q contains non-Go code that can't be inspected for further dependencies:\n%s", p.PkgPath, strings.Join(p.OtherFiles, "\n")) - } - var pkgDir string - switch { - case len(p.GoFiles) > 0: - pkgDir = filepath.Dir(p.GoFiles[0]) - case len(p.CompiledGoFiles) > 0: - pkgDir = filepath.Dir(p.CompiledGoFiles[0]) - case len(p.OtherFiles) > 0: - pkgDir = filepath.Dir(p.OtherFiles[0]) - default: - // This package is empty - nothing to do. - return true - } - if p.Module == nil { - otherErrorOccurred = true - glog.Errorf("Package %s does not have module info. Non go modules projects are no longer supported. For feedback, refer to https://github.com/google/go-licenses/issues/128.", p.PkgPath) - return false - } - licensePath, err := Find(pkgDir, p.Module.Dir, classifier) - if err != nil { - glog.Errorf("Failed to find license for %s: %v", p.PkgPath, err) - } - pkgs[p.PkgPath] = p - pkgsByLicense[licensePath] = append(pkgsByLicense[licensePath], p) - return true - }, nil) - if pkgErrorOccurred { - return nil, PackagesError{ - pkgs: rootPkgs, - } - } - if otherErrorOccurred { - return nil, fmt.Errorf("some errors occurred when loading direct and transitive dependency packages") - } - - var libraries []*Library - for licensePath, pkgs := range pkgsByLicense { - if licensePath == "" { - // No license for these packages - return each one as a separate library. - for _, p := range pkgs { - libraries = append(libraries, &Library{ - Packages: []string{p.PkgPath}, - module: newModule(p.Module), - }) - } - continue - } - lib := &Library{ - LicensePath: licensePath, - } - for _, pkg := range pkgs { - lib.Packages = append(lib.Packages, pkg.PkgPath) - if lib.module == nil && pkg.Module != nil { - // All the sub packages should belong to the same module. - lib.module = newModule(pkg.Module) - } - } - if lib.module != nil && lib.module.Path != "" && lib.module.Dir == "" { - // A known cause is that the module is vendored, so some information is lost. - splits := strings.SplitN(lib.LicensePath, "/vendor/", 2) - if len(splits) != 2 { - glog.Warningf("module %s does not have dir and it's not vendored, cannot discover the license URL. Report to go-licenses developer if you see this.", lib.module.Path) - } else { - // This is vendored. Handle this known special case. - - // Extra note why we identify a vendored package like this. - // - // For a normal package: - // * if it's not in a module, lib.module == nil - // * if it's in a module, lib.module.Dir != "" - // Only vendored modules will have lib.module != nil && lib.module.Path != "" && lib.module.Dir == "" as far as I know. - // So the if condition above is already very strict for vendored packages. - // On top of it, we checked the lib.LicensePath contains a vendor folder in it. - // So it's rare to have a false positive for both conditions at the same time, although it may happen in theory. - // - // These assumptions may change in the future, - // so we need to keep this updated with go tooling changes. - parentModDir := splits[0] - var parentPkg *packages.Package - for _, rootPkg := range rootPkgs { - if rootPkg.Module != nil && rootPkg.Module.Dir == parentModDir { - parentPkg = rootPkg - break - } - } - if parentPkg == nil { - glog.Warningf("cannot find parent package of vendored module %s", lib.module.Path) - } else { - // Vendored modules should be commited in the parent module, so it counts as part of the - // parent module. - lib.module = newModule(parentPkg.Module) - } - } - } - libraries = append(libraries, lib) - } - // Sort libraries to produce a stable result for snapshot diffing. - sort.Slice(libraries, func(i, j int) bool { - return libraries[i].Name() < libraries[j].Name() - }) - return libraries, nil -} - -// Name is the common prefix of the import paths for all of the packages in this library. -func (l *Library) Name() string { - return commonAncestor(l.Packages) -} - -func commonAncestor(paths []string) string { - if len(paths) == 0 { - return "" - } - if len(paths) == 1 { - return paths[0] - } - sort.Strings(paths) - min, max := paths[0], paths[len(paths)-1] - lastSlashIndex := 0 - for i := 0; i < len(min) && i < len(max); i++ { - if min[i] != max[i] { - return min[:lastSlashIndex] - } - if min[i] == '/' { - lastSlashIndex = i - } - } - return min -} - -func (l *Library) String() string { - return l.Name() -} - -// FileURL attempts to determine the URL for a file in this library using -// go module name and version. -func (l *Library) FileURL(ctx context.Context, filePath string) (string, error) { - if l == nil { - return "", fmt.Errorf("library is nil") - } - wrap := func(err error) error { - return fmt.Errorf("getting file URL in library %s: %w", l.Name(), err) - } - m := l.module - if m == nil { - return "", wrap(fmt.Errorf("empty go module info")) - } - if m.Dir == "" { - return "", wrap(fmt.Errorf("empty go module dir")) - } - client := source.NewClient(time.Second * 20) - remote, err := source.ModuleInfo(ctx, client, m.Path, m.Version) - if err != nil { - return "", wrap(err) - } - if m.Version == "" { - // This always happens for the module in development. - // Note#1 if we pass version=HEAD to source.ModuleInfo, github tag for modules not at the root - // of the repo will be incorrect, because there's a convention that: - // * I have a module at github.com/google/go-licenses/submod. - // * The module is of version v1.0.0. - // Then the github tag should be submod/v1.0.0. - // In our case, if we pass HEAD as version, the result commit will be submod/HEAD which is incorrect. - // Therefore, to workaround this problem, we directly set the commit after getting module info. - // - // Note#2 repos have different branches as default, some use the - // master branch and some use the main branch. However, HEAD - // always refers to the default branch, so it's better than - // both of master/main when we do not know which branch is default. - // Examples: - // * https://github.com/google/go-licenses/blob/HEAD/LICENSE - // points to latest commit of master branch. - // * https://github.com/google/licenseclassifier/blob/HEAD/LICENSE - // points to latest commit of main branch. - remote.SetCommit("HEAD") - glog.Warningf("module %s has empty version, defaults to HEAD. The license URL may be incorrect. Please verify!", m.Path) - } - relativePath, err := filepath.Rel(m.Dir, filePath) - if err != nil { - return "", wrap(err) - } - // TODO: there are still rare cases this may result in an incorrect URL. - // https://github.com/google/go-licenses/issues/73#issuecomment-1005587408 - return remote.FileURL(relativePath), nil -} - -// isStdLib returns true if this package is part of the Go standard library. -func isStdLib(pkg *packages.Package) bool { - if pkg.Name == "unsafe" { - // Special case unsafe stdlib, because it does not contain go files. - return true - } - if len(pkg.GoFiles) == 0 { - return false - } - return strings.HasPrefix(pkg.GoFiles[0], build.Default.GOROOT) -} diff --git a/vendor/github.com/google/go-licenses/licenses/module.go b/vendor/github.com/google/go-licenses/licenses/module.go deleted file mode 100644 index eaff1b5..0000000 --- a/vendor/github.com/google/go-licenses/licenses/module.go +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright 2022 Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package licenses - -import ( - "strings" - - "golang.org/x/tools/go/packages" -) - -// Module provides module information for a package. -type Module struct { - // Differences from packages.Module: - // * Replace field is removed, it's only an implementation detail in this package. - // If a module is replaced, we'll directly return the replaced module. - // * Version field +incompatible suffix is trimmed. - // * Main, ModuleError, Time, Indirect, GoMod, GoVersion fields are removed, because they are not used. - Path string // module path - Version string // module version - Dir string // directory holding files for this module, if any -} - -func newModule(mod *packages.Module) *Module { - if mod == nil { - return nil - } - // Example of a module with replace directive: k8s.io/kubernetes => k8s.io/kubernetes v1.11.1 - // { - // "Path": "k8s.io/kubernetes", - // "Version": "v0.17.9", - // "Replace": { - // "Path": "k8s.io/kubernetes", - // "Version": "v1.11.1", - // "Time": "2018-07-17T04:20:29Z", - // "Dir": "/home/gongyuan_kubeflow_org/go/pkg/mod/k8s.io/kubernetes@v1.11.1", - // "GoMod": "/home/gongyuan_kubeflow_org/go/pkg/mod/cache/download/k8s.io/kubernetes/@v/v1.11.1.mod" - // }, - // "Dir": "/home/gongyuan_kubeflow_org/go/pkg/mod/k8s.io/kubernetes@v1.11.1", - // "GoMod": "/home/gongyuan_kubeflow_org/go/pkg/mod/cache/download/k8s.io/kubernetes/@v/v1.11.1.mod" - // } - // handle replace directives - // Note, we specifically want to replace version field. - // Haven't confirmed, but we may also need to override the - // entire struct when using replace directive with local folders. - tmp := *mod - if tmp.Replace != nil { - tmp = *tmp.Replace - } - // The +incompatible suffix does not affect module version. - // ref: https://golang.org/ref/mod#incompatible-versions - tmp.Version = strings.TrimSuffix(tmp.Version, "+incompatible") - return &Module{ - Path: tmp.Path, - Version: tmp.Version, - Dir: tmp.Dir, - } -} diff --git a/vendor/github.com/google/go-licenses/main.go b/vendor/github.com/google/go-licenses/main.go deleted file mode 100644 index 3a22b03..0000000 --- a/vendor/github.com/google/go-licenses/main.go +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright 2019 Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package main - -import ( - "flag" - "fmt" - "os" - "strings" - - "github.com/golang/glog" - "github.com/spf13/cobra" -) - -var ( - rootCmd = &cobra.Command{ - Use: "go-licenses", - Short: "go-licenses helps you work with licenses of your go project's dependencies.", - Long: `go-licenses helps you work with licenses of your go project's dependencies. - -Prerequisites: -1. Go v1.16 or later. -2. Change directory to your go project. -3. Run "go mod download".`, - } - - // Flags shared between subcommands - confidenceThreshold float64 - ignore []string - packageHelp = ` - -Typically, specify the Go package that builds your Go binary. -go-licenses expects the same package argument format as "go build". -For example: -* A rooted import path like "github.com/google/go-licenses" or "github.com/google/go-licenses/licenses". -* A relative path that denotes the package in that directory, like "." or "./cmd/some-command". -To learn more about Go package argument, run "go help packages".` -) - -func init() { - // Change glog default log level to INFO. - // Note glog is not initialized yet, so we can only use fmt for printing - // errors. - err := flag.Set("logtostderr", "true") - if err != nil { - fmt.Fprintln(os.Stderr, err) - os.Exit(1) - } - err = flag.Set("stderrthreshold", "INFO") - if err != nil { - fmt.Fprintln(os.Stderr, err) - os.Exit(1) - } - rootCmd.PersistentFlags().Float64Var(&confidenceThreshold, "confidence_threshold", 0.9, "Minimum confidence required in order to positively identify a license.") - rootCmd.PersistentFlags().StringSliceVar(&ignore, "ignore", nil, "Package path prefixes to be ignored. Dependencies from the ignored packages are still checked. Can be specified multiple times.") -} - -func main() { - flag.Parse() - rootCmd.PersistentFlags().AddGoFlagSet(flag.CommandLine) - - if err := rootCmd.Execute(); err != nil { - glog.Exit(err) - } -} - -// Unvendor removes the "*/vendor/" prefix from the given import path, if present. -func unvendor(importPath string) string { - if vendorerAndVendoree := strings.SplitN(importPath, "/vendor/", 2); len(vendorerAndVendoree) == 2 { - return vendorerAndVendoree[1] - } - return importPath -} diff --git a/vendor/github.com/google/go-licenses/save.go b/vendor/github.com/google/go-licenses/save.go deleted file mode 100644 index 934cd98..0000000 --- a/vendor/github.com/google/go-licenses/save.go +++ /dev/null @@ -1,155 +0,0 @@ -// Copyright 2019 Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package main - -import ( - "context" - "fmt" - "io/ioutil" - "os" - "path/filepath" - "regexp" - "strings" - - "github.com/golang/glog" - "github.com/google/go-licenses/licenses" - "github.com/otiai10/copy" - "github.com/spf13/cobra" -) - -var ( - saveHelp = "Saves licenses, copyright notices and source code, as required by a Go package's dependencies, to a directory." - saveCmd = &cobra.Command{ - Use: "save [package...]", - Short: saveHelp, - Long: saveHelp + packageHelp, - Args: cobra.MinimumNArgs(1), - RunE: saveMain, - } - - noticeRegexp = regexp.MustCompile(`^NOTICE(\.(txt|md))?$`) - - // savePath is where the output of the command is written to. - savePath string - // overwriteSavePath controls behaviour when the directory indicated by savePath already exists. - // If true, the directory will be replaced. If false, the command will fail. - overwriteSavePath bool -) - -func init() { - saveCmd.Flags().StringVar(&savePath, "save_path", "", "Directory into which files should be saved that are required by license terms") - if err := saveCmd.MarkFlagRequired("save_path"); err != nil { - glog.Fatal(err) - } - if err := saveCmd.MarkFlagFilename("save_path"); err != nil { - glog.Fatal(err) - } - - saveCmd.Flags().BoolVar(&overwriteSavePath, "force", false, "Delete the destination directory if it already exists.") - - rootCmd.AddCommand(saveCmd) -} - -func saveMain(_ *cobra.Command, args []string) error { - - if overwriteSavePath { - if err := os.RemoveAll(savePath); err != nil { - return err - } - } - - classifier, err := licenses.NewClassifier(confidenceThreshold) - if err != nil { - return err - } - - libs, err := licenses.Libraries(context.Background(), classifier, ignore, args...) - if err != nil { - return err - } - - // Check that the save path doesn't exist, otherwise it'd end up with a mix of - // existing files and the output of this command. - if d, err := os.Open(savePath); err == nil { - d.Close() - return fmt.Errorf("%s already exists", savePath) - } else if !os.IsNotExist(err) { - return err - } - - libsWithBadLicenses := make(map[licenses.Type][]*licenses.Library) - for _, lib := range libs { - libSaveDir := filepath.Join(savePath, unvendor(lib.Name())) - // Detect what type of license this library has and fulfill its requirements, e.g. copy license, copyright notice, source code, etc. - _, licenseType, err := classifier.Identify(lib.LicensePath) - if err != nil { - return err - } - switch licenseType { - case licenses.Restricted, licenses.Reciprocal: - // Copy the entire source directory for the library. - libDir := filepath.Dir(lib.LicensePath) - if err := copySrc(libDir, libSaveDir); err != nil { - return err - } - case licenses.Notice, licenses.Permissive, licenses.Unencumbered: - // Just copy the license and copyright notice. - if err := copyNotices(lib.LicensePath, libSaveDir); err != nil { - return err - } - default: - libsWithBadLicenses[licenseType] = append(libsWithBadLicenses[licenseType], lib) - } - } - if len(libsWithBadLicenses) > 0 { - return fmt.Errorf("one or more libraries have an incompatible/unknown license: %q", libsWithBadLicenses) - } - return nil -} - -func copySrc(src, dest string) error { - // Skip the .git directory for copying, if it exists, since we don't want to save the user's - // local Git config along with the source code. - opt := copy.Options{ - Skip: func(src string) (bool, error) { - return strings.HasSuffix(src, ".git"), nil - }, - AddPermission: 0600, - } - if err := copy.Copy(src, dest, opt); err != nil { - return err - } - return nil -} - -func copyNotices(licensePath, dest string) error { - if err := copy.Copy(licensePath, filepath.Join(dest, filepath.Base(licensePath))); err != nil { - return err - } - - src := filepath.Dir(licensePath) - files, err := ioutil.ReadDir(src) - if err != nil { - return err - } - for _, f := range files { - if fName := f.Name(); !f.IsDir() && noticeRegexp.MatchString(fName) { - if err := copy.Copy(filepath.Join(src, fName), filepath.Join(dest, fName)); err != nil { - return err - } - } - } - return nil -} diff --git a/vendor/github.com/google/licenseclassifier/.travis.yml b/vendor/github.com/google/licenseclassifier/.travis.yml deleted file mode 100644 index ef16575..0000000 --- a/vendor/github.com/google/licenseclassifier/.travis.yml +++ /dev/null @@ -1,14 +0,0 @@ -sudo: false -language: go -go: - - "1.16" -matrix: - allow_failures: - - go: master - fast_finish: true -script: - - go get -t -v ./... - - diff -u <(echo -n) <(gofmt -d -s .) - - go generate -x ./... && git diff --exit-code; code=$?; git checkout -- .; (exit $code) # Check that go generate ./... produces a zero diff; clean up any changes afterwards. - - go vet . - - go test -v -race ./... diff --git a/vendor/github.com/google/licenseclassifier/CHANGELOG b/vendor/github.com/google/licenseclassifier/CHANGELOG deleted file mode 100644 index 00f599a..0000000 --- a/vendor/github.com/google/licenseclassifier/CHANGELOG +++ /dev/null @@ -1,14 +0,0 @@ -# Change Log -# All notable changes to this project will be documented in this file. -# This project adheres to [Semantic Versioning](http://semver.org/). - -## [0.1.0] UNRELEASED -### Init -- Initial development. -### Changed -- Create a database of forbidden licenses to make matching just forbidden - licenses quicker. -- Remove non-words from the license texts. It makes the matching more precise. - This subsumes what the "remove common prefix" and a few other passes did. -- Remove the "lattice" structure in favor of a simpler and smaller list of - substrings. This gives us a tremendous speed increase of up to 2x. diff --git a/vendor/github.com/google/licenseclassifier/CONTRIBUTING.md b/vendor/github.com/google/licenseclassifier/CONTRIBUTING.md deleted file mode 100644 index 143bfd2..0000000 --- a/vendor/github.com/google/licenseclassifier/CONTRIBUTING.md +++ /dev/null @@ -1,24 +0,0 @@ -# How to contribute - -We'd love to accept your patches and contributions to this project. There are -just a few small guidelines you need to follow. - -## Contributor License Agreement - -Contributions to this project must be accompanied by a Contributor License -Agreement. You (or your employer) retain the copyright to your contribution, -this simply gives us permission to use and redistribute your contributions as -part of the project. Head over to to see -your current agreements on file or to sign a new one. - -You generally only need to submit a CLA once, so if you've already submitted -one (even if it was for a different project), you probably don't need to do it -again. - -## Code reviews - -All submissions, including submissions by project members, require review. We -use GitHub pull requests for this purpose. Consult [GitHub Help] for more -information on using pull requests. - -[GitHub Help]: https://help.github.com/articles/about-pull-requests/ diff --git a/vendor/github.com/google/licenseclassifier/LICENSE b/vendor/github.com/google/licenseclassifier/LICENSE deleted file mode 100644 index d645695..0000000 --- a/vendor/github.com/google/licenseclassifier/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor 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, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/vendor/github.com/google/licenseclassifier/README.md b/vendor/github.com/google/licenseclassifier/README.md deleted file mode 100644 index 902c150..0000000 --- a/vendor/github.com/google/licenseclassifier/README.md +++ /dev/null @@ -1,66 +0,0 @@ -# License Classifier - -[![Build status](https://travis-ci.org/google/licenseclassifier.svg?branch=master)](https://travis-ci.org/google/licenseclassifier) - -## Introduction - -The license classifier is a library and set of tools that can analyze text to -determine what type of license it contains. It searches for license texts in a -file and compares them to an archive of known licenses. These files could be, -e.g., `LICENSE` files with a single or multiple licenses in it, or source code -files with the license text in a comment. - -A "confidence level" is associated with each result indicating how close the -match was. A confidence level of `1.0` indicates an exact match, while a -confidence level of `0.0` indicates that no license was able to match the text. - -## Adding a new license - -Adding a new license is straight-forward: - -1. Create a file in `licenses/`. - - * The filename should be the name of the license or its abbreviation. If - the license is an Open Source license, use the appropriate identifier - specified at https://spdx.org/licenses/. - * If the license is the "header" version of the license, append the suffix - "`.header`" to it. See `licenses/README.md` for more details. - -2. Add the license name to the list in `license_type.go`. - -3. Regenerate the `licenses.db` file by running the license serializer: - - ```shell - $ license_serializer -output licenseclassifier/licenses - ``` - -4. Create and run appropriate tests to verify that the license is indeed - present. - -## Tools - -### Identify license - -`identify_license` is a command line tool that can identify the license(s) -within a file. - -```shell -$ identify_license LICENSE -LICENSE: GPL-2.0 (confidence: 1, offset: 0, extent: 14794) -LICENSE: LGPL-2.1 (confidence: 1, offset: 18366, extent: 23829) -LICENSE: MIT (confidence: 1, offset: 17255, extent: 1059) -``` - -### License serializer - -The `license_serializer` tool regenerates the `licenses.db` archive. The archive -contains preprocessed license texts for quicker comparisons against unknown -texts. - -```shell -$ license_serializer -output licenseclassifier/licenses -``` - ----- -This is not an official Google product (experimental or otherwise), it is just -code that happens to be owned by Google. diff --git a/vendor/github.com/google/licenseclassifier/classifier.go b/vendor/github.com/google/licenseclassifier/classifier.go deleted file mode 100644 index ff41cf4..0000000 --- a/vendor/github.com/google/licenseclassifier/classifier.go +++ /dev/null @@ -1,472 +0,0 @@ -// Copyright 2017 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Package licenseclassifier provides methods to identify the open source -// license that most closely matches an unknown license. -package licenseclassifier - -import ( - "archive/tar" - "bytes" - "compress/gzip" - "fmt" - "html" - "io" - "math" - "regexp" - "sort" - "strings" - "sync" - "unicode" - - "github.com/google/licenseclassifier/stringclassifier" - "github.com/google/licenseclassifier/stringclassifier/searchset" -) - -// DefaultConfidenceThreshold is the minimum confidence percentage we're willing to accept in order -// to say that a match is good. -const DefaultConfidenceThreshold = 0.80 - -var ( - // Normalizers is a list of functions that get applied to the strings - // before they are registered with the string classifier. - Normalizers = []stringclassifier.NormalizeFunc{ - html.UnescapeString, - removeShebangLine, - RemoveNonWords, - NormalizeEquivalentWords, - NormalizePunctuation, - strings.ToLower, - removeIgnorableTexts, - stringclassifier.FlattenWhitespace, - strings.TrimSpace, - } - - // commonLicenseWords are words that are common to all known licenses. - // If an unknown text doesn't have at least one of these, then we can - // ignore it. - commonLicenseWords = []*regexp.Regexp{ - regexp.MustCompile(`(?i)\bcode\b`), - regexp.MustCompile(`(?i)\blicense\b`), - regexp.MustCompile(`(?i)\boriginal\b`), - regexp.MustCompile(`(?i)\brights\b`), - regexp.MustCompile(`(?i)\bsoftware\b`), - regexp.MustCompile(`(?i)\bterms\b`), - regexp.MustCompile(`(?i)\bversion\b`), - regexp.MustCompile(`(?i)\bwork\b`), - } -) - -// License is a classifier pre-loaded with known open source licenses. -type License struct { - c *stringclassifier.Classifier - - // Threshold is the lowest confidence percentage acceptable for the - // classifier. - Threshold float64 - - // archive is a function that must return the contents of the license archive. - // When archive is nil, ReadLicenseFile(LicenseFile) is used to retrieve the - // contents. - archive func() ([]byte, error) -} - -// OptionFunc set options on a License struct. -type OptionFunc func(l *License) error - -// Archive is an OptionFunc to specify the location of the license archive file. -func Archive(f string) OptionFunc { - return func(l *License) error { - l.archive = func() ([]byte, error) { return ReadLicenseFile(f) } - return nil - } -} - -// ArchiveBytes is an OptionFunc that provides the contents of the license archive file. -// The caller must not overwrite the contents of b as it is not copied. -func ArchiveBytes(b []byte) OptionFunc { - return func(l *License) error { - l.archive = func() ([]byte, error) { return b, nil } - return nil - } -} - -// ArchiveFunc is an OptionFunc that provides a function that must return the contents -// of the license archive file. -func ArchiveFunc(f func() ([]byte, error)) OptionFunc { - return func(l *License) error { - l.archive = f - return nil - } -} - -// New creates a license classifier and pre-loads it with known open source licenses. -func New(threshold float64, options ...OptionFunc) (*License, error) { - classifier := &License{ - c: stringclassifier.New(threshold, Normalizers...), - Threshold: threshold, - } - - for _, o := range options { - err := o(classifier) - if err != nil { - return nil, fmt.Errorf("error setting option %v: %v", o, err) - } - } - - if err := classifier.registerLicenses(); err != nil { - return nil, fmt.Errorf("cannot register licenses from archive: %v", err) - } - return classifier, nil -} - -// NewWithForbiddenLicenses creates a license classifier and pre-loads it with -// known open source licenses which are forbidden. -func NewWithForbiddenLicenses(threshold float64, options ...OptionFunc) (*License, error) { - opts := []OptionFunc{Archive(ForbiddenLicenseArchive)} - opts = append(opts, options...) - return New(threshold, opts...) -} - -// WithinConfidenceThreshold returns true if the confidence value is above or -// equal to the confidence threshold. -func (c *License) WithinConfidenceThreshold(conf float64) bool { - return conf > c.Threshold || math.Abs(conf-c.Threshold) < math.SmallestNonzeroFloat64 -} - -// NearestMatch returns the "nearest" match to the given set of known licenses. -// Returned are the name of the license, and a confidence percentage indicating -// how confident the classifier is in the result. -func (c *License) NearestMatch(contents string) *stringclassifier.Match { - if !c.hasCommonLicenseWords(contents) { - return nil - } - m := c.c.NearestMatch(contents) - m.Name = strings.TrimSuffix(m.Name, ".header") - return m -} - -// MultipleMatch matches all licenses within an unknown text. -func (c *License) MultipleMatch(contents string, includeHeaders bool) stringclassifier.Matches { - norm := normalizeText(contents) - if !c.hasCommonLicenseWords(norm) { - return nil - } - - m := make(map[stringclassifier.Match]bool) - var matches stringclassifier.Matches - for _, v := range c.c.MultipleMatch(norm) { - if !c.WithinConfidenceThreshold(v.Confidence) { - continue - } - - if !includeHeaders && strings.HasSuffix(v.Name, ".header") { - continue - } - - v.Name = strings.TrimSuffix(v.Name, ".header") - if re, ok := forbiddenRegexps[v.Name]; ok && !re.MatchString(norm) { - continue - } - if _, ok := m[*v]; !ok { - m[*v] = true - matches = append(matches, v) - } - } - sort.Sort(matches) - return matches -} - -func normalizeText(s string) string { - for _, n := range Normalizers { - s = n(s) - } - return s -} - -// hasCommonLicenseWords returns true if the unknown text has at least one word -// that's common to all licenses. -func (c *License) hasCommonLicenseWords(s string) bool { - for _, re := range commonLicenseWords { - if re.MatchString(s) { - return true - } - } - return false -} - -type archivedValue struct { - name string - normalized string - set *searchset.SearchSet -} - -// registerLicenses loads all known licenses and adds them to c as known values -// for comparison. The allocated space after ingesting the 'licenses.db' -// archive is ~167M. -func (c *License) registerLicenses() error { - var contents []byte - var err error - if c.archive == nil { - contents, err = ReadLicenseFile(LicenseArchive) - } else { - contents, err = c.archive() - } - if err != nil { - return err - } - - reader := bytes.NewReader(contents) - gr, err := gzip.NewReader(reader) - if err != nil { - return err - } - defer gr.Close() - - tr := tar.NewReader(gr) - - var muVals sync.Mutex - var vals []archivedValue - for i := 0; ; i++ { - hdr, err := tr.Next() - if err == io.EOF { - break - } - if err != nil { - return err - } - - name := strings.TrimSuffix(hdr.Name, ".txt") - - // Read normalized value. - var b bytes.Buffer - if _, err := io.Copy(&b, tr); err != nil { - return err - } - normalized := b.String() - b.Reset() - - // Read precomputed hashes. - hdr, err = tr.Next() - if err != nil { - return err - } - - if _, err := io.Copy(&b, tr); err != nil { - return err - } - - var set searchset.SearchSet - searchset.Deserialize(&b, &set) - - muVals.Lock() - vals = append(vals, archivedValue{name, normalized, &set}) - muVals.Unlock() - } - - for _, v := range vals { - if err = c.c.AddPrecomputedValue(v.name, v.normalized, v.set); err != nil { - return err - } - } - return nil -} - -// endOfLicenseText is text commonly associated with the end of a license. We -// can remove text that occurs after it. -var endOfLicenseText = []string{ - "END OF TERMS AND CONDITIONS", -} - -// TrimExtraneousTrailingText removes text after an obvious end of the license -// and does not include substantive text of the license. -func TrimExtraneousTrailingText(s string) string { - for _, e := range endOfLicenseText { - if i := strings.LastIndex(s, e); i != -1 { - return s[:i+len(e)] - } - } - return s -} - -var copyrightRE = regexp.MustCompile(`(?m)(?i:Copyright)\s+(?i:©\s+|\(c\)\s+)?(?:\d{2,4})(?:[-,]\s*\d{2,4})*,?\s*(?i:by)?\s*(.*?(?i:\s+Inc\.)?)[.,]?\s*(?i:All rights reserved\.?)?\s*$`) - -// CopyrightHolder finds a copyright notification, if it exists, and returns -// the copyright holder. -func CopyrightHolder(contents string) string { - matches := copyrightRE.FindStringSubmatch(contents) - if len(matches) == 2 { - return matches[1] - } - return "" -} - -var publicDomainRE = regexp.MustCompile("(?i)(this file )?is( in the)? public domain") - -// HasPublicDomainNotice performs a simple regex over the contents to see if a -// public domain notice is in there. As you can imagine, this isn't 100% -// definitive, but can be useful if a license match isn't found. -func (c *License) HasPublicDomainNotice(contents string) bool { - return publicDomainRE.FindString(contents) != "" -} - -// ignorableTexts is a list of lines at the start of the string we can remove -// to get a cleaner match. -var ignorableTexts = []*regexp.Regexp{ - regexp.MustCompile(`(?i)^(?:the )?mit license(?: \(mit\))?$`), - regexp.MustCompile(`(?i)^(?:new )?bsd license$`), - regexp.MustCompile(`(?i)^copyright and permission notice$`), - regexp.MustCompile(`(?i)^copyright (\(c\) )?(\[yyyy\]|\d{4})[,.]? .*$`), - regexp.MustCompile(`(?i)^(all|some) rights reserved\.?$`), - regexp.MustCompile(`(?i)^@license$`), - regexp.MustCompile(`^\s*$`), -} - -// removeIgnorableTexts removes common text, which is not important for -// classification, that shows up before the body of the license. -func removeIgnorableTexts(s string) string { - lines := strings.Split(strings.TrimRight(s, "\n"), "\n") - var start int - for ; start < len(lines); start++ { - line := strings.TrimSpace(lines[start]) - var matches bool - for _, re := range ignorableTexts { - if re.MatchString(line) { - matches = true - break - } - } - if !matches { - break - } - } - end := len(lines) - if start > end { - return "\n" - } - return strings.Join(lines[start:end], "\n") + "\n" -} - -// removeShebangLine removes the '#!...' line if it's the first line in the -// file. Note that if it's the only line in a comment, it won't be removed. -func removeShebangLine(s string) string { - lines := strings.Split(s, "\n") - if len(lines) <= 1 || !strings.HasPrefix(lines[0], "#!") { - return s - } - - return strings.Join(lines[1:], "\n") -} - -// isDecorative returns true if the line is made up purely of non-letter and -// non-digit characters. -func isDecorative(s string) bool { - for _, c := range s { - if unicode.IsLetter(c) || unicode.IsDigit(c) { - return false - } - } - return true -} - -var nonWords = regexp.MustCompile("[[:punct:]]+") - -// RemoveNonWords removes non-words from the string. -func RemoveNonWords(s string) string { - return nonWords.ReplaceAllString(s, " ") -} - -// interchangeablePunctutation is punctuation that can be normalized. -var interchangeablePunctuation = []struct { - interchangeable *regexp.Regexp - substitute string -}{ - // Hyphen, Dash, En Dash, and Em Dash. - {regexp.MustCompile(`[-‒–—]`), "-"}, - // Single, Double, Curly Single, and Curly Double. - {regexp.MustCompile("['\"`‘’“”]"), "'"}, - // Copyright. - {regexp.MustCompile("©"), "(c)"}, - // Hyphen-separated words. - {regexp.MustCompile(`(\S)-\s+(\S)`), "${1}-${2}"}, - // Currency and Section. (Different copies of the CDDL use each marker.) - {regexp.MustCompile("[§¤]"), "(s)"}, - // Middle Dot - {regexp.MustCompile("·"), "*"}, -} - -// NormalizePunctuation takes all hyphens and quotes and normalizes them. -func NormalizePunctuation(s string) string { - for _, iw := range interchangeablePunctuation { - s = iw.interchangeable.ReplaceAllString(s, iw.substitute) - } - return s -} - -// interchangeableWords are words we can substitute for a normalized form -// without changing the meaning of the license. See -// https://spdx.org/spdx-license-list/matching-guidelines for the list. -var interchangeableWords = []struct { - interchangeable *regexp.Regexp - substitute string -}{ - {regexp.MustCompile("(?i)Acknowledgment"), "Acknowledgement"}, - {regexp.MustCompile("(?i)Analogue"), "Analog"}, - {regexp.MustCompile("(?i)Analyse"), "Analyze"}, - {regexp.MustCompile("(?i)Artefact"), "Artifact"}, - {regexp.MustCompile("(?i)Authorisation"), "Authorization"}, - {regexp.MustCompile("(?i)Authorised"), "Authorized"}, - {regexp.MustCompile("(?i)Calibre"), "Caliber"}, - {regexp.MustCompile("(?i)Cancelled"), "Canceled"}, - {regexp.MustCompile("(?i)Capitalisations"), "Capitalizations"}, - {regexp.MustCompile("(?i)Catalogue"), "Catalog"}, - {regexp.MustCompile("(?i)Categorise"), "Categorize"}, - {regexp.MustCompile("(?i)Centre"), "Center"}, - {regexp.MustCompile("(?i)Emphasised"), "Emphasized"}, - {regexp.MustCompile("(?i)Favour"), "Favor"}, - {regexp.MustCompile("(?i)Favourite"), "Favorite"}, - {regexp.MustCompile("(?i)Fulfil"), "Fulfill"}, - {regexp.MustCompile("(?i)Fulfilment"), "Fulfillment"}, - {regexp.MustCompile("(?i)Initialise"), "Initialize"}, - {regexp.MustCompile("(?i)Judgment"), "Judgement"}, - {regexp.MustCompile("(?i)Labelling"), "Labeling"}, - {regexp.MustCompile("(?i)Labour"), "Labor"}, - {regexp.MustCompile("(?i)Licence"), "License"}, - {regexp.MustCompile("(?i)Maximise"), "Maximize"}, - {regexp.MustCompile("(?i)Modelled"), "Modeled"}, - {regexp.MustCompile("(?i)Modelling"), "Modeling"}, - {regexp.MustCompile("(?i)Offence"), "Offense"}, - {regexp.MustCompile("(?i)Optimise"), "Optimize"}, - {regexp.MustCompile("(?i)Organisation"), "Organization"}, - {regexp.MustCompile("(?i)Organise"), "Organize"}, - {regexp.MustCompile("(?i)Practise"), "Practice"}, - {regexp.MustCompile("(?i)Programme"), "Program"}, - {regexp.MustCompile("(?i)Realise"), "Realize"}, - {regexp.MustCompile("(?i)Recognise"), "Recognize"}, - {regexp.MustCompile("(?i)Signalling"), "Signaling"}, - {regexp.MustCompile("(?i)Sub[- ]license"), "Sublicense"}, - {regexp.MustCompile("(?i)Utilisation"), "Utilization"}, - {regexp.MustCompile("(?i)Whilst"), "While"}, - {regexp.MustCompile("(?i)Wilful"), "Wilfull"}, - {regexp.MustCompile("(?i)Non-commercial"), "Noncommercial"}, - {regexp.MustCompile("(?i)Per cent"), "Percent"}, -} - -// NormalizeEquivalentWords normalizes equivalent words that are interchangeable. -func NormalizeEquivalentWords(s string) string { - for _, iw := range interchangeableWords { - s = iw.interchangeable.ReplaceAllString(s, iw.substitute) - } - return s -} diff --git a/vendor/github.com/google/licenseclassifier/file_system_resources.go b/vendor/github.com/google/licenseclassifier/file_system_resources.go deleted file mode 100644 index 8246447..0000000 --- a/vendor/github.com/google/licenseclassifier/file_system_resources.go +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2017 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package licenseclassifier - -import ( - "github.com/google/licenseclassifier/licenses" -) - -const ( - // LicenseArchive is the name of the archive containing preprocessed - // license texts. - LicenseArchive = "licenses.db" - // ForbiddenLicenseArchive is the name of the archive containing preprocessed - // forbidden license texts only. - ForbiddenLicenseArchive = "forbidden_licenses.db" -) - -// ReadLicenseFile locates and reads the license archive file. Absolute paths are used unmodified. Relative paths are expected to be in the licenses directory of the licenseclassifier package. -var ReadLicenseFile = licenses.ReadLicenseFile - -// ReadLicenseDir reads directory containing the license files. -var ReadLicenseDir = licenses.ReadLicenseDir diff --git a/vendor/github.com/google/licenseclassifier/forbidden.go b/vendor/github.com/google/licenseclassifier/forbidden.go deleted file mode 100644 index 6c02ee5..0000000 --- a/vendor/github.com/google/licenseclassifier/forbidden.go +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2017 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package licenseclassifier - -import "regexp" - -var ( - reCCBYNC = regexp.MustCompile(`(?i).*\bAttribution NonCommercial\b.*`) - reCCBYNCND = regexp.MustCompile(`(?i).*\bAttribution NonCommercial NoDerivs\b.*`) - reCCBYNCSA = regexp.MustCompile(`(?i).*\bAttribution NonCommercial ShareAlike\b.*`) - - // forbiddenRegexps are regular expressions we expect to find in - // forbidden licenses. If we think we have a forbidden license but - // don't find the equivalent phrase, then it's probably just a - // misclassification. - forbiddenRegexps = map[string]*regexp.Regexp{ - AGPL10: regexp.MustCompile(`(?i).*\bAFFERO GENERAL PUBLIC LICENSE\b.*`), - AGPL30: regexp.MustCompile(`(?i).*\bGNU AFFERO GENERAL PUBLIC LICENSE\b.*`), - CCBYNC10: reCCBYNC, - CCBYNC20: reCCBYNC, - CCBYNC25: reCCBYNC, - CCBYNC30: reCCBYNC, - CCBYNC40: reCCBYNC, - CCBYNCND10: regexp.MustCompile(`(?i).*\bAttribution NoDerivs NonCommercial\b.*`), - CCBYNCND20: reCCBYNCND, - CCBYNCND25: reCCBYNCND, - CCBYNCND30: reCCBYNCND, - CCBYNCND40: regexp.MustCompile(`(?i).*\bAttribution NonCommercial NoDerivatives\b.*`), - CCBYNCSA10: reCCBYNCSA, - CCBYNCSA20: reCCBYNCSA, - CCBYNCSA25: reCCBYNCSA, - CCBYNCSA30: reCCBYNCSA, - CCBYNCSA40: reCCBYNCSA, - WTFPL: regexp.MustCompile(`(?i).*\bDO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\b.*`), - } -) diff --git a/vendor/github.com/google/licenseclassifier/internal/sets/sets.go b/vendor/github.com/google/licenseclassifier/internal/sets/sets.go deleted file mode 100644 index f34ae5b..0000000 --- a/vendor/github.com/google/licenseclassifier/internal/sets/sets.go +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2017 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Package sets provides sets for storing collections of unique elements. -package sets - -// present is an empty struct used as the "value" in the map[int], since -// empty structs consume zero bytes (unlike 1 unnecessary byte per bool). -type present struct{} diff --git a/vendor/github.com/google/licenseclassifier/internal/sets/stringset.go b/vendor/github.com/google/licenseclassifier/internal/sets/stringset.go deleted file mode 100644 index 54edbd4..0000000 --- a/vendor/github.com/google/licenseclassifier/internal/sets/stringset.go +++ /dev/null @@ -1,228 +0,0 @@ -// Copyright 2017 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -package sets - -import ( - "fmt" - "sort" - "strings" -) - -// StringSet stores a set of unique string elements. -type StringSet struct { - set map[string]present -} - -// NewStringSet creates a StringSet containing the supplied initial string elements. -func NewStringSet(elements ...string) *StringSet { - s := &StringSet{} - s.set = make(map[string]present) - s.Insert(elements...) - return s -} - -// Copy returns a newly allocated copy of the supplied StringSet. -func (s *StringSet) Copy() *StringSet { - c := NewStringSet() - if s != nil { - for e := range s.set { - c.set[e] = present{} - } - } - return c -} - -// Insert zero or more string elements into the StringSet. -// As expected for a Set, elements already present in the StringSet are -// simply ignored. -func (s *StringSet) Insert(elements ...string) { - for _, e := range elements { - s.set[e] = present{} - } -} - -// Delete zero or more string elements from the StringSet. -// Any elements not present in the StringSet are simply ignored. -func (s *StringSet) Delete(elements ...string) { - for _, e := range elements { - delete(s.set, e) - } -} - -// Intersect returns a new StringSet containing the intersection of the -// receiver and argument StringSets. Returns an empty set if the argument is nil. -func (s *StringSet) Intersect(other *StringSet) *StringSet { - if other == nil { - return NewStringSet() - } - - // Point a and b to the maps, setting a to the smaller of the two. - a, b := s.set, other.set - if len(b) < len(a) { - a, b = b, a - } - - // Perform the intersection. - intersect := NewStringSet() - for e := range a { - if _, ok := b[e]; ok { - intersect.set[e] = present{} - } - } - return intersect -} - -// Disjoint returns true if the intersection of the receiver and the argument -// StringSets is the empty set. Returns true if the argument is nil or either -// StringSet is the empty set. -func (s *StringSet) Disjoint(other *StringSet) bool { - if other == nil || len(other.set) == 0 || len(s.set) == 0 { - return true - } - - // Point a and b to the maps, setting a to the smaller of the two. - a, b := s.set, other.set - if len(b) < len(a) { - a, b = b, a - } - - // Check for non-empty intersection. - for e := range a { - if _, ok := b[e]; ok { - return false // Early-exit because intersecting. - } - } - return true -} - -// Difference returns a new StringSet containing the elements in the receiver -// that are not present in the argument StringSet. Returns a copy of the -// receiver if the argument is nil. -func (s *StringSet) Difference(other *StringSet) *StringSet { - if other == nil { - return s.Copy() - } - - // Insert only the elements in the receiver that are not present in the - // argument StringSet. - diff := NewStringSet() - for e := range s.set { - if _, ok := other.set[e]; !ok { - diff.set[e] = present{} - } - } - return diff -} - -// Unique returns a new StringSet containing the elements in the receiver -// that are not present in the argument StringSet *and* the elements in the -// argument StringSet that are not in the receiver (which is the union of two -// disjoint sets). Returns a copy of the -// receiver if the argument is nil. -func (s *StringSet) Unique(other *StringSet) *StringSet { - if other == nil { - return s.Copy() - } - - sNotInOther := s.Difference(other) - otherNotInS := other.Difference(s) - - // Duplicate Union implementation here to avoid extra Copy, since both - // sNotInOther and otherNotInS are already copies. - unique := sNotInOther - for e := range otherNotInS.set { - unique.set[e] = present{} - } - return unique -} - -// Equal returns true if the receiver and the argument StringSet contain -// exactly the same elements. -func (s *StringSet) Equal(other *StringSet) bool { - if s == nil || other == nil { - return s == nil && other == nil - } - - // Two sets of different length cannot have the exact same unique elements. - if len(s.set) != len(other.set) { - return false - } - - // Only one loop is needed. If the two sets are known to be of equal - // length, then the two sets are equal only if exactly all of the elements - // in the first set are found in the second. - for e := range s.set { - if _, ok := other.set[e]; !ok { - return false - } - } - - return true -} - -// Union returns a new StringSet containing the union of the receiver and -// argument StringSets. Returns a copy of the receiver if the argument is nil. -func (s *StringSet) Union(other *StringSet) *StringSet { - union := s.Copy() - if other != nil { - for e := range other.set { - union.set[e] = present{} - } - } - return union -} - -// Contains returns true if element is in the StringSet. -func (s *StringSet) Contains(element string) bool { - _, in := s.set[element] - return in -} - -// Len returns the number of unique elements in the StringSet. -func (s *StringSet) Len() int { - return len(s.set) -} - -// Empty returns true if the receiver is the empty set. -func (s *StringSet) Empty() bool { - return len(s.set) == 0 -} - -// Elements returns a []string of the elements in the StringSet, in no -// particular (or consistent) order. -func (s *StringSet) Elements() []string { - elements := []string{} // Return at least an empty slice rather than nil. - for e := range s.set { - elements = append(elements, e) - } - return elements -} - -// Sorted returns a sorted []string of the elements in the StringSet. -func (s *StringSet) Sorted() []string { - elements := s.Elements() - sort.Strings(elements) - return elements -} - -// String formats the StringSet elements as sorted strings, representing them -// in "array initializer" syntax. -func (s *StringSet) String() string { - elements := s.Sorted() - var quoted []string - for _, e := range elements { - quoted = append(quoted, fmt.Sprintf("%q", e)) - } - return fmt.Sprintf("{%s}", strings.Join(quoted, ", ")) -} diff --git a/vendor/github.com/google/licenseclassifier/license_type.go b/vendor/github.com/google/licenseclassifier/license_type.go deleted file mode 100644 index 6cfcbb2..0000000 --- a/vendor/github.com/google/licenseclassifier/license_type.go +++ /dev/null @@ -1,394 +0,0 @@ -// Copyright 2017 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package licenseclassifier - -// *** NOTE: Update this file when adding a new license. You need to: -// -// 1. Add the canonical name to the list, and -// 2. Categorize the license. - -import "github.com/google/licenseclassifier/internal/sets" - -// Canonical names of the licenses. -const ( - // The names come from the https://spdx.org/licenses website, and are - // also the filenames of the licenses in licenseclassifier/licenses. - AFL11 = "AFL-1.1" - AFL12 = "AFL-1.2" - AFL20 = "AFL-2.0" - AFL21 = "AFL-2.1" - AFL30 = "AFL-3.0" - AGPL10 = "AGPL-1.0" - AGPL30 = "AGPL-3.0" - Apache10 = "Apache-1.0" - Apache11 = "Apache-1.1" - Apache20 = "Apache-2.0" - APSL10 = "APSL-1.0" - APSL11 = "APSL-1.1" - APSL12 = "APSL-1.2" - APSL20 = "APSL-2.0" - Artistic10cl8 = "Artistic-1.0-cl8" - Artistic10Perl = "Artistic-1.0-Perl" - Artistic10 = "Artistic-1.0" - Artistic20 = "Artistic-2.0" - BCL = "BCL" - Beerware = "Beerware" - BSD2ClauseFreeBSD = "BSD-2-Clause-FreeBSD" - BSD2ClauseNetBSD = "BSD-2-Clause-NetBSD" - BSD2Clause = "BSD-2-Clause" - BSD3ClauseAttribution = "BSD-3-Clause-Attribution" - BSD3ClauseClear = "BSD-3-Clause-Clear" - BSD3ClauseLBNL = "BSD-3-Clause-LBNL" - BSD3Clause = "BSD-3-Clause" - BSD4Clause = "BSD-4-Clause" - BSD4ClauseUC = "BSD-4-Clause-UC" - BSDProtection = "BSD-Protection" - BSL10 = "BSL-1.0" - CC010 = "CC0-1.0" - CCBY10 = "CC-BY-1.0" - CCBY20 = "CC-BY-2.0" - CCBY25 = "CC-BY-2.5" - CCBY30 = "CC-BY-3.0" - CCBY40 = "CC-BY-4.0" - CCBYNC10 = "CC-BY-NC-1.0" - CCBYNC20 = "CC-BY-NC-2.0" - CCBYNC25 = "CC-BY-NC-2.5" - CCBYNC30 = "CC-BY-NC-3.0" - CCBYNC40 = "CC-BY-NC-4.0" - CCBYNCND10 = "CC-BY-NC-ND-1.0" - CCBYNCND20 = "CC-BY-NC-ND-2.0" - CCBYNCND25 = "CC-BY-NC-ND-2.5" - CCBYNCND30 = "CC-BY-NC-ND-3.0" - CCBYNCND40 = "CC-BY-NC-ND-4.0" - CCBYNCSA10 = "CC-BY-NC-SA-1.0" - CCBYNCSA20 = "CC-BY-NC-SA-2.0" - CCBYNCSA25 = "CC-BY-NC-SA-2.5" - CCBYNCSA30 = "CC-BY-NC-SA-3.0" - CCBYNCSA40 = "CC-BY-NC-SA-4.0" - CCBYND10 = "CC-BY-ND-1.0" - CCBYND20 = "CC-BY-ND-2.0" - CCBYND25 = "CC-BY-ND-2.5" - CCBYND30 = "CC-BY-ND-3.0" - CCBYND40 = "CC-BY-ND-4.0" - CCBYSA10 = "CC-BY-SA-1.0" - CCBYSA20 = "CC-BY-SA-2.0" - CCBYSA25 = "CC-BY-SA-2.5" - CCBYSA30 = "CC-BY-SA-3.0" - CCBYSA40 = "CC-BY-SA-4.0" - CDDL10 = "CDDL-1.0" - CDDL11 = "CDDL-1.1" - CommonsClause = "Commons-Clause" - CPAL10 = "CPAL-1.0" - CPL10 = "CPL-1.0" - eGenix = "eGenix" - EPL10 = "EPL-1.0" - EPL20 = "EPL-2.0" - EUPL10 = "EUPL-1.0" - EUPL11 = "EUPL-1.1" - Facebook2Clause = "Facebook-2-Clause" - Facebook3Clause = "Facebook-3-Clause" - FacebookExamples = "Facebook-Examples" - FreeImage = "FreeImage" - FTL = "FTL" - GPL10 = "GPL-1.0" - GPL20 = "GPL-2.0" - GPL20withautoconfexception = "GPL-2.0-with-autoconf-exception" - GPL20withbisonexception = "GPL-2.0-with-bison-exception" - GPL20withclasspathexception = "GPL-2.0-with-classpath-exception" - GPL20withfontexception = "GPL-2.0-with-font-exception" - GPL20withGCCexception = "GPL-2.0-with-GCC-exception" - GPL30 = "GPL-3.0" - GPL30withautoconfexception = "GPL-3.0-with-autoconf-exception" - GPL30withGCCexception = "GPL-3.0-with-GCC-exception" - GUSTFont = "GUST-Font-License" - ImageMagick = "ImageMagick" - IPL10 = "IPL-1.0" - ISC = "ISC" - LGPL20 = "LGPL-2.0" - LGPL21 = "LGPL-2.1" - LGPL30 = "LGPL-3.0" - LGPLLR = "LGPLLR" - Libpng = "Libpng" - Lil10 = "Lil-1.0" - LinuxOpenIB = "Linux-OpenIB" - LPL102 = "LPL-1.02" - LPL10 = "LPL-1.0" - LPPL13c = "LPPL-1.3c" - MIT = "MIT" - MPL10 = "MPL-1.0" - MPL11 = "MPL-1.1" - MPL20 = "MPL-2.0" - MSPL = "MS-PL" - NCSA = "NCSA" - NPL10 = "NPL-1.0" - NPL11 = "NPL-1.1" - OFL11 = "OFL-1.1" - OpenSSL = "OpenSSL" - OpenVision = "OpenVision" - OSL10 = "OSL-1.0" - OSL11 = "OSL-1.1" - OSL20 = "OSL-2.0" - OSL21 = "OSL-2.1" - OSL30 = "OSL-3.0" - PHP301 = "PHP-3.01" - PHP30 = "PHP-3.0" - PIL = "PIL" - PostgreSQL = "PostgreSQL" - Python20complete = "Python-2.0-complete" - Python20 = "Python-2.0" - QPL10 = "QPL-1.0" - Ruby = "Ruby" - SGIB10 = "SGI-B-1.0" - SGIB11 = "SGI-B-1.1" - SGIB20 = "SGI-B-2.0" - SISSL12 = "SISSL-1.2" - SISSL = "SISSL" - Sleepycat = "Sleepycat" - UnicodeTOU = "Unicode-TOU" - UnicodeDFS2015 = "Unicode-DFS-2015" - UnicodeDFS2016 = "Unicode-DFS-2016" - Unlicense = "Unlicense" - UPL10 = "UPL-1.0" - W3C19980720 = "W3C-19980720" - W3C20150513 = "W3C-20150513" - W3C = "W3C" - WTFPL = "WTFPL" - X11 = "X11" - Xnet = "Xnet" - Zend20 = "Zend-2.0" - ZeroBSD = "0BSD" - ZlibAcknowledgement = "zlib-acknowledgement" - Zlib = "Zlib" - ZPL11 = "ZPL-1.1" - ZPL20 = "ZPL-2.0" - ZPL21 = "ZPL-2.1" -) - -var ( - // Licenses Categorized by Type - - // restricted - Licenses in this category require mandatory source - // distribution if we ships a product that includes third-party code - // protected by such a license. - restrictedType = sets.NewStringSet( - BCL, - CCBYND10, - CCBYND20, - CCBYND25, - CCBYND30, - CCBYND40, - CCBYSA10, - CCBYSA20, - CCBYSA25, - CCBYSA30, - CCBYSA40, - GPL10, - GPL20, - GPL20withautoconfexception, - GPL20withbisonexception, - GPL20withclasspathexception, - GPL20withfontexception, - GPL20withGCCexception, - GPL30, - GPL30withautoconfexception, - GPL30withGCCexception, - LGPL20, - LGPL21, - LGPL30, - NPL10, - NPL11, - OSL10, - OSL11, - OSL20, - OSL21, - OSL30, - QPL10, - Sleepycat, - ) - - // reciprocal - These licenses allow usage of software made available - // under such licenses freely in *unmodified* form. If the third-party - // source code is modified in any way these modifications to the - // original third-party source code must be made available. - reciprocalType = sets.NewStringSet( - APSL10, - APSL11, - APSL12, - APSL20, - CDDL10, - CDDL11, - CPL10, - EPL10, - EPL20, - FreeImage, - IPL10, - MPL10, - MPL11, - MPL20, - Ruby, - ) - - // notice - These licenses contain few restrictions, allowing original - // or modified third-party software to be shipped in any product - // without endangering or encumbering our source code. All of the - // licenses in this category do, however, have an "original Copyright - // notice" or "advertising clause", wherein any external distributions - // must include the notice or clause specified in the license. - noticeType = sets.NewStringSet( - AFL11, - AFL12, - AFL20, - AFL21, - AFL30, - Apache10, - Apache11, - Apache20, - Artistic10cl8, - Artistic10Perl, - Artistic10, - Artistic20, - BSL10, - BSD2ClauseFreeBSD, - BSD2ClauseNetBSD, - BSD2Clause, - BSD3ClauseAttribution, - BSD3ClauseClear, - BSD3ClauseLBNL, - BSD3Clause, - BSD4Clause, - BSD4ClauseUC, - BSDProtection, - CCBY10, - CCBY20, - CCBY25, - CCBY30, - CCBY40, - FTL, - ISC, - ImageMagick, - Libpng, - Lil10, - LinuxOpenIB, - LPL102, - LPL10, - MSPL, - MIT, - NCSA, - OpenSSL, - PHP301, - PHP30, - PIL, - Python20, - Python20complete, - PostgreSQL, - SGIB10, - SGIB11, - SGIB20, - UnicodeDFS2015, - UnicodeDFS2016, - UnicodeTOU, - UPL10, - W3C19980720, - W3C20150513, - W3C, - X11, - Xnet, - Zend20, - ZlibAcknowledgement, - Zlib, - ZPL11, - ZPL20, - ZPL21, - ) - - // permissive - These licenses can be used in (relatively rare) cases - // where third-party software is under a license (not "Public Domain" - // or "free for any use" like 'unencumbered') that is even more lenient - // than a 'notice' license. Use the 'permissive' license type when even - // a copyright notice is not required for license compliance. - permissiveType = sets.NewStringSet() - - // unencumbered - Licenses that basically declare that the code is "free for any use". - unencumberedType = sets.NewStringSet( - CC010, - Unlicense, - ZeroBSD, - ) - - // byexceptiononly - Licenses that are incompatible with all (or most) - // uses in combination with our source code. Commercial third-party - // packages that are purchased and licensed only for a specific use - // fall into this category. - byExceptionOnlyType = sets.NewStringSet( - Beerware, - OFL11, - OpenVision, - ) - - // forbidden - Licenses that are forbidden to be used. - forbiddenType = sets.NewStringSet( - AGPL10, - AGPL30, - CCBYNC10, - CCBYNC20, - CCBYNC25, - CCBYNC30, - CCBYNC40, - CCBYNCND10, - CCBYNCND20, - CCBYNCND25, - CCBYNCND30, - CCBYNCND40, - CCBYNCSA10, - CCBYNCSA20, - CCBYNCSA25, - CCBYNCSA30, - CCBYNCSA40, - CommonsClause, - Facebook2Clause, - Facebook3Clause, - FacebookExamples, - WTFPL, - ) - - // LicenseTypes is a set of the types of licenses Google recognizes. - LicenseTypes = sets.NewStringSet( - "restricted", - "reciprocal", - "notice", - "permissive", - "unencumbered", - "by_exception_only", - ) -) - -// LicenseType returns the type the license has. -func LicenseType(name string) string { - switch { - case restrictedType.Contains(name): - return "restricted" - case reciprocalType.Contains(name): - return "reciprocal" - case noticeType.Contains(name): - return "notice" - case permissiveType.Contains(name): - return "permissive" - case unencumberedType.Contains(name): - return "unencumbered" - case forbiddenType.Contains(name): - return "FORBIDDEN" - } - return "" -} diff --git a/vendor/github.com/google/licenseclassifier/licenses/0BSD.txt b/vendor/github.com/google/licenseclassifier/licenses/0BSD.txt deleted file mode 100644 index 9d1cb13..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/0BSD.txt +++ /dev/null @@ -1,12 +0,0 @@ -Copyright (C) 2006 by First Last - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. diff --git a/vendor/github.com/google/licenseclassifier/licenses/AFL-1.1.header.txt b/vendor/github.com/google/licenseclassifier/licenses/AFL-1.1.header.txt deleted file mode 100644 index 0494507..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/AFL-1.1.header.txt +++ /dev/null @@ -1 +0,0 @@ -Licensed under the Academic Free License version 1.1. diff --git a/vendor/github.com/google/licenseclassifier/licenses/AFL-1.1.txt b/vendor/github.com/google/licenseclassifier/licenses/AFL-1.1.txt deleted file mode 100644 index cf08701..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/AFL-1.1.txt +++ /dev/null @@ -1,83 +0,0 @@ -Academic Free License - -Version 1.1 - -The Academic Free License applies to any original work of authorship (the -"Original Work") whose owner (the "Licensor") has placed the following notice -immediately following the copyright notice for the Original Work: - -"Licensed under the Academic Free License version 1.1." - -Grant of License. Licensor hereby grants to any person obtaining a copy of the -Original Work ("You") a world-wide, royalty-free, non-exclusive, perpetual, -non-sublicenseable license - -(1) to use, copy, modify, merge, publish, perform, distribute and/or sell -copies of the Original Work and derivative works thereof, and - -(2) under patent claims owned or controlled by the Licensor that are embodied -in the Original Work as furnished by the Licensor, to make, use, sell and -offer for sale the Original Work and derivative works thereof, subject to the -following conditions. - -Right of Attribution. Redistributions of the Original Work must reproduce all -copyright notices in the Original Work as furnished by the Licensor, both in -the Original Work itself and in any documentation and/or other materials -provided with the distribution of the Original Work in executable form. - -Exclusions from License Grant. Neither the names of Licensor, nor the names of -any contributors to the Original Work, nor any of their trademarks or service -marks, may be used to endorse or promote products derived from this Original -Work without express prior written permission of the Licensor. - -WARRANTY AND DISCLAIMERS. LICENSOR WARRANTS THAT THE COPYRIGHT IN AND TO THE -ORIGINAL WORK IS OWNED BY THE LICENSOR OR THAT THE ORIGINAL WORK IS -DISTRIBUTED BY LICENSOR UNDER A VALID CURRENT LICENSE FROM THE COPYRIGHT -OWNER. EXCEPT AS EXPRESSLY STATED IN THE IMMEDIATELY PRECEEDING SENTENCE, THE -ORIGINAL WORK IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT -WARRANTY, EITHER EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION, THE -WARRANTY OF NON-INFRINGEMENT AND WARRANTIES THAT THE ORIGINAL WORK IS -MERCHANTABLE OR FIT FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE -QUALITY OF THE ORIGINAL WORK IS WITH YOU. THIS DISCLAIMER OF WARRANTY -CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO LICENSE TO ORIGINAL WORK IS -GRANTED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. - -LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, -WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE -LICENSOR BE LIABLE TO ANY PERSON FOR ANY DIRECT, INDIRECT, SPECIAL, -INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING AS A RESULT OF -THIS LICENSE OR THE USE OF THE ORIGINAL WORK INCLUDING, WITHOUT LIMITATION, -DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, -OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PERSON SHALL -HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF -LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING -FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH -LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF -INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT -APPLY TO YOU. - -License to Source Code. The term "Source Code" means the preferred form of the -Original Work for making modifications to it and all available documentation -describing how to access and modify the Original Work. Licensor hereby agrees -to provide a machine-readable copy of the Source Code of the Original Work -along with each copy of the Original Work that Licensor distributes. Licensor -reserves the right to satisfy this obligation by placing a machine-readable -copy of the Source Code in an information repository reasonably calculated to -permit inexpensive and convenient access by You for as long as Licensor -continues to distribute the Original Work, and by publishing the address of -that information repository in a notice immediately following the copyright -notice that applies to the Original Work. - -Mutual Termination for Patent Action. This License shall terminate -automatically and You may no longer exercise any of the rights granted to You -by this License if You file a lawsuit in any court alleging that any OSI -Certified open source software that is licensed under any license containing -this "Mutual Termination for Patent Action" clause infringes any patent claims -that are essential to use that software. - -This license is Copyright (C) 2002 Lawrence E. Rosen. All rights reserved. - -Permission is hereby granted to copy and distribute this license without -modification. This license may not be modified without the express written -permission of its copyright owner. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/AFL-1.2.header.txt b/vendor/github.com/google/licenseclassifier/licenses/AFL-1.2.header.txt deleted file mode 100644 index 98b5498..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/AFL-1.2.header.txt +++ /dev/null @@ -1 +0,0 @@ -Licensed under the Academic Free License version 1.2 diff --git a/vendor/github.com/google/licenseclassifier/licenses/AFL-1.2.txt b/vendor/github.com/google/licenseclassifier/licenses/AFL-1.2.txt deleted file mode 100644 index 280e065..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/AFL-1.2.txt +++ /dev/null @@ -1,90 +0,0 @@ -Academic Free License - -Version 1.2 - -This Academic Free License applies to any original work of authorship (the -"Original Work") whose owner (the "Licensor") has placed the - -following notice immediately following the copyright notice for the Original -Work: - -Licensed under the Academic Free License version 1.2 - -Grant of License. Licensor hereby grants to any person obtaining a copy of the -Original Work ("You") a world-wide, royalty-free, non-exclusive, perpetual, -non-sublicenseable license (1) to use, copy, modify, merge, publish, perform, -distribute and/or sell copies of the Original Work and derivative works -thereof, and (2) under patent claims owned or controlled by the Licensor that -are embodied in the Original Work as furnished by the Licensor, to make, use, -sell and offer for sale the Original Work and derivative works thereof, -subject to the - -following conditions. - -Attribution Rights. You must retain, in the Source Code of any Derivative -Works that You create, all copyright, patent or trademark notices from the -Source Code of the Original Work, as well as any notices of licensing and any -descriptive text identified therein as an "Attribution Notice." You must cause -the Source Code for any Derivative Works that You create to carry a prominent -Attribution Notice reasonably calculated to inform recipients that You have -modified the Original Work. - -Exclusions from License Grant. Neither the names of Licensor, nor the names of -any contributors to the Original Work, nor any of their trademarks or service -marks, may be used to endorse or promote products derived from this Original -Work without express prior written permission of the Licensor. - -Warranty and Disclaimer of Warranty. Licensor warrants that the copyright in -and to the Original Work is owned by the Licensor or that the Original Work is -distributed by Licensor under a valid current license from the copyright -owner. Except as expressly stated in the immediately proceeding sentence, the -Original Work is provided under this License on an "AS IS" BASIS and WITHOUT -WARRANTY, either express or implied, including, without limitation, the -warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. -This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No -license to Original Work is granted hereunder except under this disclaimer. - -Limitation of Liability. Under no circumstances and under no legal theory, -whether in tort (including negligence), contract, or otherwise, shall the -Licensor be liable to any person for any direct, indirect, special, -incidental, or consequential damages of any character arising as a result of -this License or the use of the Original Work including, without limitation, -damages for loss of goodwill, work stoppage, computer failure or malfunction, -or any and all other commercial damages or losses. This limitation of -liability shall not apply to liability for death or personal injury resulting -from Licensor's negligence to the extent applicable law prohibits such -limitation. Some jurisdictions do not allow the exclusion or limitation of -incidental or consequential damages, so this exclusion and limitation may not -apply to You. - -License to Source Code. The term "Source Code" means the preferred form of the -Original Work for making modifications to it and all available - -documentation describing how to modify the Original Work. Licensor hereby -agrees to provide a machine-readable copy of the Source Code of the Original -Work along with each copy of the Original Work that Licensor distributes. -Licensor reserves the right to satisfy this obligation by placing a machine- -readable copy of the Source Code in an information repository reasonably -calculated to permit inexpensive and convenient access by You for as long as -Licensor continues to distribute the Original Work, and by publishing the -address of that information repository in a notice immediately following the -copyright notice that applies to the Original Work. - -Mutual Termination for Patent Action. This License shall terminate -automatically and You may no longer exercise any of the rights granted to You -by this License if You file a lawsuit in any court alleging that any OSI -Certified open source software that is licensed under any license containing -this "Mutual Termination for Patent Action" clause infringes any patent claims -that are essential to use that software. - -Right to Use. You may use the Original Work in all ways not otherwise -restricted or conditioned by this License or by law, and Licensor promises not -to interfere with or be responsible for such uses by You. - -This license is Copyright (C) 2002 Lawrence E. Rosen. All rights reserved. - -Permission is hereby granted to copy and distribute this license without -modification. This license may not be modified without the express written -permission of its copyright owner. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/AFL-2.0.header.txt b/vendor/github.com/google/licenseclassifier/licenses/AFL-2.0.header.txt deleted file mode 100644 index abf9fe7..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/AFL-2.0.header.txt +++ /dev/null @@ -1 +0,0 @@ -Licensed under the Academic Free License version 2.0 diff --git a/vendor/github.com/google/licenseclassifier/licenses/AFL-2.0.txt b/vendor/github.com/google/licenseclassifier/licenses/AFL-2.0.txt deleted file mode 100644 index eb9468b..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/AFL-2.0.txt +++ /dev/null @@ -1,159 +0,0 @@ -The Academic Free License - -v. 2.0 - -This Academic Free License (the "License") applies to any original work of -authorship (the "Original Work") whose owner (the "Licensor") has placed the -following notice immediately following the copyright notice for the Original -Work: - -Licensed under the Academic Free License version 2.0 - -1) Grant of Copyright License. Licensor hereby grants You a world-wide, -royalty-free, non-exclusive, perpetual, sublicenseable license to do the -following: - -a) to reproduce the Original Work in copies; - -b) to prepare derivative works ("Derivative Works") based upon the Original -Work; - -c) to distribute copies of the Original Work and Derivative Works to the -public; - -d) to perform the Original Work publicly; and - -e) to display the Original Work publicly. - -2) Grant of Patent License. Licensor hereby grants You a world-wide, royalty- -free, non-exclusive, perpetual, sublicenseable license, under patent claims -owned or controlled by the Licensor that are embodied in the Original Work as -furnished by the Licensor, to make, use, sell and offer for sale the Original -Work and Derivative Works. - -3) Grant of Source Code License. The term "Source Code" means the preferred -form of the Original Work for making modifications to it and all available -documentation describing how to modify the Original Work. Licensor hereby -agrees to provide a machine-readable copy of the Source Code of the Original -Work along with each copy of the Original Work that Licensor distributes. -Licensor reserves the right to satisfy this obligation by placing a machine- -readable copy of the Source Code in an information repository reasonably -calculated to permit inexpensive and convenient access by You for as long as -Licensor continues to distribute the Original Work, and by publishing the -address of that information repository in a notice immediately following the -copyright notice that applies to the Original Work. - -4) Exclusions From License Grant. Neither the names of Licensor, nor the names -of any contributors to the Original Work, nor any of their trademarks or -service marks, may be used to endorse or promote products derived from this -Original Work without express prior written permission of the Licensor. -Nothing in this License shall be deemed to grant any rights to trademarks, -copyrights, patents, trade secrets or any other intellectual property of -Licensor except as expressly stated herein. No patent license is granted to -make, use, sell or offer to sell embodiments of any patent claims other than -the licensed claims defined in Section 2. No right is granted to the -trademarks of Licensor even if such marks are included in the Original Work. -Nothing in this License shall be interpreted to prohibit Licensor from -licensing under different terms from this License any Original Work that -Licensor otherwise would have a right to license. - -5) This section intentionally omitted. - -6) Attribution Rights. You must retain, in the Source Code of any Derivative -Works that You create, all copyright, patent or trademark notices from the -Source Code of the Original Work, as well as any notices of licensing and any -descriptive text identified therein as an "Attribution Notice." You must cause -the Source Code for any Derivative Works that You create to carry a prominent -Attribution Notice reasonably calculated to inform recipients that You have -modified the Original Work. - -7) Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that -the copyright in and to the Original Work and the patent rights granted herein -by Licensor are owned by the Licensor or are sublicensed to You under the -terms of this License with the permission of the contributor(s) of those -copyrights and patent rights. Except as expressly stated in the immediately -proceeding sentence, the Original Work is provided under this License on an -"AS IS" BASIS and WITHOUT WARRANTY, either express or implied, including, -without limitation, the warranties of NON-INFRINGEMENT, MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY OF THE -ORIGINAL WORK IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an -essential part of this License. No license to Original Work is granted -hereunder except under this disclaimer. - -8) Limitation of Liability. Under no circumstances and under no legal theory, -whether in tort (including negligence), contract, or otherwise, shall the -Licensor be liable to any person for any direct, indirect, special, -incidental, or consequential damages of any character arising as a result of -this License or the use of the Original Work including, without limitation, -damages for loss of goodwill, work stoppage, computer failure or malfunction, -or any and all other commercial damages or losses. This limitation of -liability shall not apply to liability for death or personal injury resulting -from Licensor's negligence to the extent applicable law prohibits such -limitation. Some jurisdictions do not allow the exclusion or limitation of -incidental or consequential damages, so this exclusion and limitation may not -apply to You. - -9) Acceptance and Termination. If You distribute copies of the Original Work -or a Derivative Work, You must make a reasonable effort under the -circumstances to obtain the express assent of recipients to the terms of this -License. Nothing else but this License (or another written agreement between -Licensor and You) grants You permission to create Derivative Works based upon -the Original Work or to exercise any of the rights granted in Section 1 -herein, and any attempt to do so except under the terms of this License (or -another written agreement between Licensor and You) is expressly prohibited by -U.S. copyright law, the equivalent laws of other countries, and by -international treaty. Therefore, by exercising any of the rights granted to -You in Section 1 herein, You indicate Your acceptance of this License and all -of its terms and conditions. - -10) Termination for Patent Action. This License shall terminate automatically -and You may no longer exercise any of the rights granted to You by this -License as of the date You commence an action, including a cross-claim or -counterclaim, for patent infringement (i) against Licensor with respect to a -patent applicable to software or (ii) against any entity with respect to a -patent applicable to the Original Work (but excluding combinations of the -Original Work with other software or hardware). - -11) Jurisdiction, Venue and Governing Law. Any action or suit relating to this -License may be brought only in the courts of a jurisdiction wherein the -Licensor resides or in which Licensor conducts its primary business, and under -the laws of that jurisdiction excluding its conflict-of-law provisions. The -application of the United Nations Convention on Contracts for the -International Sale of Goods is expressly excluded. Any use of the Original -Work outside the scope of this License or after its termination shall be -subject to the requirements and penalties of the U.S. Copyright Act, 17 U.S.C. -¤ 101 et seq., the equivalent laws of other countries, and international -treaty. This section shall survive the termination of this License. - -12) Attorneys Fees. In any action to enforce the terms of this License or -seeking damages relating thereto, the prevailing party shall be entitled to -recover its costs and expenses, including, without limitation, reasonable -attorneys' fees and costs incurred in connection with such action, -including any appeal of such action. This section shall survive the -termination of this License. - -13) Miscellaneous. This License represents the complete agreement concerning -the subject matter hereof. If any provision of this License is held to be -unenforceable, such provision shall be reformed only to the extent necessary -to make it enforceable. - -14) Definition of "You" in This License. "You" throughout this License, -whether in upper or lower case, means an individual or a legal entity -exercising rights under, and complying with all of the terms of, this License. -For legal entities, "You" includes any entity that controls, is controlled by, -or is under common control with you. For purposes of this definition, -"control" means (i) the power, direct or indirect, to cause the direction or -management of such entity, whether by contract or otherwise, or (ii) ownership -of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial -ownership of such entity. - -15) Right to Use. You may use the Original Work in all ways not otherwise -restricted or conditioned by this License or by law, and Licensor promises not -to interfere with or be responsible for such uses by You. - -This license is Copyright (C) 2003 Lawrence E. Rosen. All rights reserved. - -Permission is hereby granted to copy and distribute this license without -modification. This license may not be modified without the express written -permission of its copyright owner. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/AFL-2.1.header.txt b/vendor/github.com/google/licenseclassifier/licenses/AFL-2.1.header.txt deleted file mode 100644 index f65fcf1..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/AFL-2.1.header.txt +++ /dev/null @@ -1 +0,0 @@ -Licensed under the Academic Free License version 2.1 diff --git a/vendor/github.com/google/licenseclassifier/licenses/AFL-2.1.txt b/vendor/github.com/google/licenseclassifier/licenses/AFL-2.1.txt deleted file mode 100644 index 0aabec8..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/AFL-2.1.txt +++ /dev/null @@ -1,160 +0,0 @@ -The Academic Free License - -v.2.1 - -This Academic Free License (the "License") applies to any original work of -authorship (the "Original Work") whose owner (the "Licensor") has placed the -following notice immediately following the copyright notice for the Original -Work: - -Licensed under the Academic Free License version 2.1 - -1) Grant of Copyright License. Licensor hereby grants You a world-wide, -royalty-free, non-exclusive, perpetual, sublicenseable license to do the -following: - -a) to reproduce the Original Work in copies; - -b) to prepare derivative works ("Derivative Works") based upon the Original -Work; - -c) to distribute copies of the Original Work and Derivative Works to the -public; - -d) to perform the Original Work publicly; and - -e) to display the Original Work publicly. - -2) Grant of Patent License. Licensor hereby grants You a world-wide, royalty- -free, non-exclusive, perpetual, sublicenseable license, under patent claims -owned or controlled by the Licensor that are embodied in the Original Work as -furnished by the Licensor, to make, use, sell and offer for sale the Original -Work and Derivative Works. - -3) Grant of Source Code License. The term "Source Code" means the preferred -form of the Original Work for making modifications to it and all available -documentation describing how to modify the Original Work. Licensor hereby -agrees to provide a machine-readable copy of the Source Code of the Original -Work along with each copy of the Original Work that Licensor distributes. -Licensor reserves the right to satisfy this obligation by placing a machine- -readable copy of the Source Code in an information repository reasonably -calculated to permit inexpensive and convenient access by You for as long as -Licensor continues to distribute the Original Work, and by publishing the -address of that information repository in a notice immediately following the -copyright notice that applies to the Original Work. - -4) Exclusions From License Grant. Neither the names of Licensor, nor the names -of any contributors to the Original Work, nor any of their trademarks or -service marks, may be used to endorse or promote products derived from this -Original Work without express prior written permission of the Licensor. -Nothing in this License shall be deemed to grant any rights to trademarks, -copyrights, patents, trade secrets or any other intellectual property of -Licensor except as expressly stated herein. No patent license is granted to -make, use, sell or offer to sell embodiments of any patent claims other than -the licensed claims defined in Section 2. No right is granted to the -trademarks of Licensor even if such marks are included in the Original Work. -Nothing in this License shall be interpreted to prohibit Licensor from -licensing under different terms from this License any Original Work that -Licensor otherwise would have a right to license. - -5) This section intentionally omitted. - -6) Attribution Rights. You must retain, in the Source Code of any Derivative -Works that You create, all copyright, patent or trademark notices from the -Source Code of the Original Work, as well as any notices of licensing and any -descriptive text identified therein as an "Attribution Notice." You must cause -the Source Code for any Derivative Works that You create to carry a prominent -Attribution Notice reasonably calculated to inform recipients that You have -modified the Original Work. - -7) Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that -the copyright in and to the Original Work and the patent rights granted herein -by Licensor are owned by the Licensor or are sublicensed to You under the -terms of this License with the permission of the contributor(s) of those -copyrights and patent rights. Except as expressly stated in the immediately -proceeding sentence, the Original Work is provided under this License on an -"AS IS" BASIS and WITHOUT WARRANTY, either express or implied, including, -without limitation, the warranties of NON-INFRINGEMENT, MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY OF THE -ORIGINAL WORK IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an -essential part of this License. No license to Original Work is granted -hereunder except under this disclaimer. - -8) Limitation of Liability. Under no circumstances and under no legal theory, -whether in tort (including negligence), contract, or otherwise, shall the -Licensor be liable to any person for any direct, indirect, special, -incidental, or consequential damages of any character arising as a result of -this License or the use of the Original Work including, without limitation, -damages for loss of goodwill, work stoppage, computer failure or malfunction, -or any and all other commercial damages or losses. This limitation of -liability shall not apply to liability for death or personal injury resulting -from Licensor's negligence to the extent applicable law prohibits such -limitation. Some jurisdictions do not allow the exclusion or limitation of -incidental or consequential damages, so this exclusion and limitation may not -apply to You. - -9) Acceptance and Termination. If You distribute copies of the Original Work -or a Derivative Work, You must make a reasonable effort under the -circumstances to obtain the express assent of recipients to the terms of this -License. Nothing else but this License (or another written agreement between -Licensor and You) grants You permission to create Derivative Works based upon -the Original Work or to exercise any of the rights granted in Section 1 -herein, and any attempt to do so except under the terms of this License (or -another written agreement between Licensor and You) is expressly prohibited by -U.S. copyright law, the equivalent laws of other countries, and by -international treaty. Therefore, by exercising any of the rights granted to -You in Section 1 herein, You indicate Your acceptance of this License and all -of its terms and conditions. - -10) Termination for Patent Action. This License shall terminate automatically -and You may no longer exercise any of the rights granted to You by this -License as of the date You commence an action, including a cross-claim or -counterclaim, against Licensor or any licensee alleging that the Original Work -infringes a patent. This termination provision shall not apply for an action -alleging patent infringement by combinations of the Original Work with other -software or hardware. - -11) Jurisdiction, Venue and Governing Law. Any action or suit relating to this -License may be brought only in the courts of a jurisdiction wherein the -Licensor resides or in which Licensor conducts its primary business, and under -the laws of that jurisdiction excluding its conflict-of-law provisions. The -application of the United Nations Convention on Contracts for the -International Sale of Goods is expressly excluded. Any use of the Original -Work outside the scope of this License or after its termination shall be -subject to the requirements and penalties of the U.S. Copyright Act, 17 U.S.C. -§ 101 et seq., the equivalent laws of other countries, and international -treaty. This section shall survive the termination of this License. - -12) Attorneys Fees. In any action to enforce the terms of this License or -seeking damages relating thereto, the prevailing party shall be entitled to -recover its costs and expenses, including, without limitation, reasonable -attorneys' fees and costs incurred in connection with such action, -including any appeal of such action. This section shall survive the -termination of this License. - -13) Miscellaneous. This License represents the complete agreement concerning -the subject matter hereof. If any provision of this License is held to be -unenforceable, such provision shall be reformed only to the extent necessary -to make it enforceable. - -14) Definition of "You" in This License. "You" throughout this License, -whether in upper or lower case, means an individual or a legal entity -exercising rights under, and complying with all of the terms of, this License. -For legal entities, "You" includes any entity that controls, is controlled by, -or is under common control with you. For purposes of this definition, -"control" means (i) the power, direct or indirect, to cause the direction or -management of such entity, whether by contract or otherwise, or (ii) ownership -of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial -ownership of such entity. - -15) Right to Use. You may use the Original Work in all ways not otherwise -restricted or conditioned by this License or by law, and Licensor promises not -to interfere with or be responsible for such uses by You. - -This license is Copyright (C) 2003-2004 Lawrence E. Rosen. All rights -reserved. - -Permission is hereby granted to copy and distribute this license without -modification. This license may not be modified without the express written -permission of its copyright owner. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/AFL-3.0.header.txt b/vendor/github.com/google/licenseclassifier/licenses/AFL-3.0.header.txt deleted file mode 100644 index e47780e..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/AFL-3.0.header.txt +++ /dev/null @@ -1 +0,0 @@ -Licensed under the Academic Free License version 3.0 diff --git a/vendor/github.com/google/licenseclassifier/licenses/AFL-3.0.txt b/vendor/github.com/google/licenseclassifier/licenses/AFL-3.0.txt deleted file mode 100644 index 8cfbed5..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/AFL-3.0.txt +++ /dev/null @@ -1,173 +0,0 @@ -Academic Free License (“AFL”) v. 3.0 - -This Academic Free License (the "License") applies to any original work of -authorship (the "Original Work") whose owner (the "Licensor") has placed the -following licensing notice adjacent to the copyright notice for the Original -Work: - -Licensed under the Academic Free License version 3.0 - -1) Grant of Copyright License. Licensor grants You a worldwide, royalty-free, -non-exclusive, sublicensable license, for the duration of the copyright, to do -the following: - -a) to reproduce the Original Work in copies, either alone or as part of a -collective work; - -b) to translate, adapt, alter, transform, modify, or arrange the Original -Work, thereby creating derivative works ("Derivative Works") based upon the -Original Work; - -c) to distribute or communicate copies of the Original Work and Derivative -Works to the public, under any license of your choice that does not contradict -the terms and conditions, including Licensor’s reserved rights and remedies, -in this Academic Free License; - -d) to perform the Original Work publicly; and - -e) to display the Original Work publicly. - -2) Grant of Patent License. Licensor grants You a worldwide, royalty-free, -non-exclusive, sublicensable license, under patent claims owned or controlled -by the Licensor that are embodied in the Original Work as furnished by the -Licensor, for the duration of the patents, to make, use, sell, offer for sale, -have made, and import the Original Work and Derivative Works. - -3) Grant of Source Code License. The term "Source Code" means the preferred -form of the Original Work for making modifications to it and all available -documentation describing how to modify the Original Work. Licensor agrees to -provide a machine-readable copy of the Source Code of the Original Work along -with each copy of the Original Work that Licensor distributes. Licensor -reserves the right to satisfy this obligation by placing a machine-readable -copy of the Source Code in an information repository reasonably calculated to -permit inexpensive and convenient access by You for as long as Licensor -continues to distribute the Original Work. - -4) Exclusions From License Grant. Neither the names of Licensor, nor the names -of any contributors to the Original Work, nor any of their trademarks or -service marks, may be used to endorse or promote products derived from this -Original Work without express prior permission of the Licensor. Except as -expressly stated herein, nothing in this License grants any license to -Licensor’s trademarks, copyrights, patents, trade secrets or any other -intellectual property. No patent license is granted to make, use, sell, offer -for sale, have made, or import embodiments of any patent claims other than the -licensed claims defined in Section 2. No license is granted to the trademarks -of Licensor even if such marks are included in the Original Work. Nothing in -this License shall be interpreted to prohibit Licensor from licensing under -terms different from this License any Original Work that Licensor otherwise -would have a right to license. - -5) External Deployment. The term "External Deployment" means the use, -distribution, or communication of the Original Work or Derivative Works in any -way such that the Original Work or Derivative Works may be used by anyone -other than You, whether those works are distributed or communicated to those -persons or made available as an application intended for use over a network. -As an express condition for the grants of license hereunder, You must treat -any External Deployment by You of the Original Work or a Derivative Work as a -distribution under section 1(c). - -6) Attribution Rights. You must retain, in the Source Code of any Derivative -Works that You create, all copyright, patent, or trademark notices from the -Source Code of the Original Work, as well as any notices of licensing and any -descriptive text identified therein as an "Attribution Notice." You must cause -the Source Code for any Derivative Works that You create to carry a prominent -Attribution Notice reasonably calculated to inform recipients that You have -modified the Original Work. - -7) Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that -the copyright in and to the Original Work and the patent rights granted herein -by Licensor are owned by the Licensor or are sublicensed to You under the -terms of this License with the permission of the contributor(s) of those -copyrights and patent rights. Except as expressly stated in the immediately -preceding sentence, the Original Work is provided under this License on an "AS -IS" BASIS and WITHOUT WARRANTY, either express or implied, including, without -limitation, the warranties of non-infringement, merchantability or fitness for -a particular purpose. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK -IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an essential part of this -License. No license to the Original Work is granted by this License except -under this disclaimer. - -8) Limitation of Liability. Under no circumstances and under no legal theory, -whether in tort (including negligence), contract, or otherwise, shall the -Licensor be liable to anyone for any indirect, special, incidental, or -consequential damages of any character arising as a result of this License or -the use of the Original Work including, without limitation, damages for loss -of goodwill, work stoppage, computer failure or malfunction, or any and all -other commercial damages or losses. This limitation of liability shall not -apply to the extent applicable law prohibits such limitation. - -9) Acceptance and Termination. If, at any time, You expressly assented to this -License, that assent indicates your clear and irrevocable acceptance of this -License and all of its terms and conditions. If You distribute or communicate -copies of the Original Work or a Derivative Work, You must make a reasonable -effort under the circumstances to obtain the express assent of recipients to -the terms of this License. This License conditions your rights to undertake -the activities listed in Section 1, including your right to create Derivative -Works based upon the Original Work, and doing so without honoring these terms -and conditions is prohibited by copyright law and international treaty. -Nothing in this License is intended to affect copyright exceptions and -limitations (including “fair use” or “fair dealing”). This License shall -terminate immediately and You may no longer exercise any of the rights granted -to You by this License upon your failure to honor the conditions in Section -1(c). - -10) Termination for Patent Action. This License shall terminate automatically -and You may no longer exercise any of the rights granted to You by this -License as of the date You commence an action, including a cross-claim or -counterclaim, against Licensor or any licensee alleging that the Original Work -infringes a patent. This termination provision shall not apply for an action -alleging patent infringement by combinations of the Original Work with other -software or hardware. - -11) Jurisdiction, Venue and Governing Law. Any action or suit relating to this -License may be brought only in the courts of a jurisdiction wherein the -Licensor resides or in which Licensor conducts its primary business, and under -the laws of that jurisdiction excluding its conflict-of-law provisions. The -application of the United Nations Convention on Contracts for the -International Sale of Goods is expressly excluded. Any use of the Original -Work outside the scope of this License or after its termination shall be -subject to the requirements and penalties of copyright or patent law in the -appropriate jurisdiction. This section shall survive the termination of this -License. - -12) Attorneys’ Fees. In any action to enforce the terms of this License or -seeking damages relating thereto, the prevailing party shall be entitled to -recover its costs and expenses, including, without limitation, reasonable -attorneys' fees and costs incurred in connection with such action, -including any appeal of such action. This section shall survive the -termination of this License. - -13) Miscellaneous. If any provision of this License is held to be -unenforceable, such provision shall be reformed only to the extent necessary -to make it enforceable. - -14) Definition of "You" in This License. "You" throughout this License, -whether in upper or lower case, means an individual or a legal entity -exercising rights under, and complying with all of the terms of, this License. -For legal entities, "You" includes any entity that controls, is controlled by, -or is under common control with you. For purposes of this definition, -"control" means (i) the power, direct or indirect, to cause the direction or -management of such entity, whether by contract or otherwise, or (ii) ownership -of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial -ownership of such entity. - -15) Right to Use. You may use the Original Work in all ways not otherwise -restricted or conditioned by this License or by law, and Licensor promises not -to interfere with or be responsible for such uses by You. - -16) Modification of This License. This License is Copyright © 2005 Lawrence -Rosen. Permission is granted to copy, distribute, or communicate this License -without modification. Nothing in this License permits You to modify this -License as applied to the Original Work or to Derivative Works. However, You -may modify the text of this License and copy, distribute or communicate your -modified version (the "Modified License") and apply it to other original works -of authorship subject to the following conditions: (i) You may not indicate in -any way that your Modified License is the "Academic Free License" or "AFL" and -you may not use those names in the name of your Modified License; (ii) You -must replace the notice specified in the first paragraph above with the notice -"Licensed under " or with a notice of your own -that is not confusingly similar to the notice in this License; and (iii) You -may not claim that your original works are open source software unless your -Modified License has been approved by Open Source Initiative (OSI) and You -comply with its license review and certification process. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/AGPL-1.0.txt b/vendor/github.com/google/licenseclassifier/licenses/AGPL-1.0.txt deleted file mode 100644 index 49a970b..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/AGPL-1.0.txt +++ /dev/null @@ -1,279 +0,0 @@ -AFFERO GENERAL PUBLIC LICENSE -Version 1, March 2002 - -Copyright © 2002 Affero Inc. -510 Third Street - Suite 225, San Francisco, CA 94107, USA - -This license is a modified version of the GNU General Public License copyright -(C) 1989, 1991 Free Software Foundation, Inc. made with their permission. -Section 2(d) has been added to cover use of software over a computer network. - -Everyone is permitted to copy and distribute verbatim copies of this license -document, but changing it is not allowed. - -Preamble - -The licenses for most software are designed to take away your freedom to share -and change it. By contrast, the Affero General Public License is intended to -guarantee your freedom to share and change free software--to make sure the -software is free for all its users. This Public License applies to most of -Affero's software and to any other program whose authors commit to using it. -(Some other Affero software is covered by the GNU Library General Public License -instead.) You can apply it to your programs, too. - -When we speak of free software, we are referring to freedom, not price. This -General Public License is designed to make sure that you have the freedom to -distribute copies of free software (and charge for this service if you wish), -that you receive source code or can get it if you want it, that you can change -the software or use pieces of it in new free programs; and that you know you can -do these things. - -To protect your rights, we need to make restrictions that forbid anyone to deny -you these rights or to ask you to surrender the rights. These restrictions -translate to certain responsibilities for you if you distribute copies of the -software, or if you modify it. - -For example, if you distribute copies of such a program, whether gratis or for a -fee, you must give the recipients all the rights that you have. You must make -sure that they, too, receive or can get the source code. And you must show them -these terms so they know their rights. - -We protect your rights with two steps: (1) copyright the software, and (2) offer -you this license which gives you legal permission to copy, distribute and/or -modify the software. - -Also, for each author's protection and ours, we want to make certain that -everyone understands that there is no warranty for this free software. If the -software is modified by someone else and passed on, we want its recipients to -know that what they have is not the original, so that any problems introduced by -others will not reflect on the original authors' reputations. - -Finally, any free program is threatened constantly by software patents. We wish -to avoid the danger that redistributors of a free program will individually -obtain patent licenses, in effect making the program proprietary. To prevent -this, we have made it clear that any patent must be licensed for everyone's free -use or not licensed at all. - -The precise terms and conditions for copying, distribution and modification -follow. - -TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - -0. This License applies to any program or other work which contains a notice - placed by the copyright holder saying it may be distributed under the terms - of this Affero General Public License. The "Program", below, refers to any - such program or work, and a "work based on the Program" means either the - Program or any derivative work under copyright law: that is to say, a work - containing the Program or a portion of it, either verbatim or with - modifications and/or translated into another language. (Hereinafter, - translation is included without limitation in the term "modification".) Each - licensee is addressed as "you". - - Activities other than copying, distribution and modification are not covered - by this License; they are outside its scope. The act of running the Program - is not restricted, and the output from the Program is covered only if its - contents constitute a work based on the Program (independent of having been - made by running the Program). Whether that is true depends on what the - Program does. - -1. You may copy and distribute verbatim copies of the Program's source code as - you receive it, in any medium, provided that you conspicuously and - appropriately publish on each copy an appropriate copyright notice and - disclaimer of warranty; keep intact all the notices that refer to this - License and to the absence of any warranty; and give any other recipients of - the Program a copy of this License along with the Program. - - You may charge a fee for the physical act of transferring a copy, and you may - at your option offer warranty protection in exchange for a fee. - -2. You may modify your copy or copies of the Program or any portion of it, thus - forming a work based on the Program, and copy and distribute such - modifications or work under the terms of Section 1 above, provided that you - also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices stating - that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in whole or - in part contains or is derived from the Program or any part thereof, to be - licensed as a whole at no charge to all third parties under the terms of - this License. - - c) If the modified program normally reads commands interactively when run, you - must cause it, when started running for such interactive use in the most - ordinary way, to print or display an announcement including an appropriate - copyright notice and a notice that there is no warranty (or else, saying - that you provide a warranty) and that users may redistribute the program - under these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but does not - normally print such an announcement, your work based on the Program is not - required to print an announcement.) - - d) If the Program as you received it is intended to interact with users - through a computer network and if, in the version you received, any user - interacting with the Program was given the opportunity to request - transmission to that user of the Program's complete source code, you must - not remove that facility from your modified version of the Program or work - based on the Program, and must offer an equivalent opportunity for all - users interacting with your Program through a computer network to request - immediate transmission by HTTP of the complete source code of your - modified version or other derivative work. - - These requirements apply to the modified work as a whole. If identifiable - sections of that work are not derived from the Program, and can be reasonably - considered independent and separate works in themselves, then this License, - and its terms, do not apply to those sections when you distribute them as - separate works. But when you distribute the same sections as part of a whole - which is a work based on the Program, the distribution of the whole must be - on the terms of this License, whose permissions for other licensees extend to - the entire whole, and thus to each and every part regardless of who wrote it. - - Thus, it is not the intent of this section to claim rights or contest your - rights to work written entirely by you; rather, the intent is to exercise the - right to control the distribution of derivative or collective works based on - the Program. - - In addition, mere aggregation of another work not based on the Program with - the Program (or with a work based on the Program) on a volume of a storage or - distribution medium does not bring the other work under the scope of this - License. - -3. You may copy and distribute the Program (or a work based on it, under Section - 2) in object code or executable form under the terms of Sections 1 and 2 - above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable source code, - which must be distributed under the terms of Sections 1 and 2 above on a - medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three years, to give - any third party, for a charge no more than your cost of physically - performing source distribution, a complete machine-readable copy of the - corresponding source code, to be distributed under the terms of Sections 1 - and 2 above on a medium customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer to - distribute corresponding source code. (This alternative is allowed only - for noncommercial distribution and only if you received the program in - object code or executable form with such an offer, in accord with - Subsection b above.) - - The source code for a work means the preferred form of the work for making - modifications to it. For an executable work, complete source code means all - the source code for all modules it contains, plus any associated interface - definition files, plus the scripts used to control compilation and - installation of the executable. However, as a special exception, the source - code distributed need not include anything that is normally distributed (in - either source or binary form) with the major components (compiler, kernel, - and so on) of the operating system on which the executable runs, unless that - component itself accompanies the executable. - - If distribution of executable or object code is made by offering access to - copy from a designated place, then offering equivalent access to copy the - source code from the same place counts as distribution of the source code, - even though third parties are not compelled to copy the source along with the - object code. - -4. You may not copy, modify, sublicense, or distribute the Program except as - expressly provided under this License. Any attempt otherwise to copy, modify, - sublicense or distribute the Program is void, and will automatically - terminate your rights under this License. However, parties who have received - copies, or rights, from you under this License will not have their licenses - terminated so long as such parties remain in full compliance. - -5. You are not required to accept this License, since you have not signed it. - However, nothing else grants you permission to modify or distribute the - Program or its derivative works. These actions are prohibited by law if you - do not accept this License. Therefore, by modifying or distributing the - Program (or any work based on the Program), you indicate your acceptance of - this License to do so, and all its terms and conditions for copying, - distributing or modifying the Program or works based on it. - -6. Each time you redistribute the Program (or any work based on the Program), - the recipient automatically receives a license from the original licensor to - copy, distribute or modify the Program subject to these terms and conditions. - You may not impose any further restrictions on the recipients' exercise of - the rights granted herein. You are not responsible for enforcing compliance - by third parties to this License. - -7. If, as a consequence of a court judgment or allegation of patent infringement - or for any other reason (not limited to patent issues), conditions are - imposed on you (whether by court order, agreement or otherwise) that - contradict the conditions of this License, they do not excuse you from the - conditions of this License. If you cannot distribute so as to satisfy - simultaneously your obligations under this License and any other pertinent - obligations, then as a consequence you may not distribute the Program at all. - For example, if a patent license would not permit royalty-free redistribution - of the Program by all those who receive copies directly or indirectly through - you, then the only way you could satisfy both it and this License would be to - refrain entirely from distribution of the Program. - - If any portion of this section is held invalid or unenforceable under any - particular circumstance, the balance of the section is intended to apply and - the section as a whole is intended to apply in other circumstances. - - It is not the purpose of this section to induce you to infringe any patents - or other property right claims or to contest validity of any such claims; - this section has the sole purpose of protecting the integrity of the free - software distribution system, which is implemented by public license - practices. Many people have made generous contributions to the wide range of - software distributed through that system in reliance on consistent - application of that system; it is up to the author/donor to decide if he or - she is willing to distribute software through any other system and a licensee - cannot impose that choice. - - This section is intended to make thoroughly clear what is believed to be a - consequence of the rest of this License. - -8. If the distribution and/or use of the Program is restricted in certain - countries either by patents or by copyrighted interfaces, the original - copyright holder who places the Program under this License may add an - explicit geographical distribution limitation excluding those countries, so - that distribution is permitted only in or among countries not thus excluded. - In such case, this License incorporates the limitation as if written in the - body of this License. - -9. Affero Inc. may publish revised and/or new versions of the Affero General - Public License from time to time. Such new versions will be similar in spirit - to the present version, but may differ in detail to address new problems or - concerns. - - Each version is given a distinguishing version number. If the Program - specifies a version number of this License which applies to it and "any later - version", you have the option of following the terms and conditions either of - that version or of any later version published by Affero, Inc. If the Program - does not specify a version number of this License, you may choose any version - ever published by Affero, Inc. - - You may also choose to redistribute modified versions of this program under - any version of the Free Software Foundation's GNU General Public License - version 3 or higher, so long as that version of the GNU GPL includes terms - and conditions substantially equivalent to those of this license. - -10. If you wish to incorporate parts of the Program into other free programs - whose distribution conditions are different, write to the author to ask for - permission. For software which is copyrighted by Affero, Inc., write to us; - we sometimes make exceptions for this. Our decision will be guided by the - two goals of preserving the free status of all derivatives of our free - software and of promoting the sharing and reuse of software generally. - -NO WARRANTY - -11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE - PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE - STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE - PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, - INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND - PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, - YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - -12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL - ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE - THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY - GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE - OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA - OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD - PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), - EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF - SUCH DAMAGES. diff --git a/vendor/github.com/google/licenseclassifier/licenses/AGPL-3.0.header.txt b/vendor/github.com/google/licenseclassifier/licenses/AGPL-3.0.header.txt deleted file mode 100644 index 8273a30..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/AGPL-3.0.header.txt +++ /dev/null @@ -1,12 +0,0 @@ -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU Affero General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU Affero General Public License for more details. - -You should have received a copy of the GNU Affero General Public License -along with this program. If not, see . diff --git a/vendor/github.com/google/licenseclassifier/licenses/AGPL-3.0.txt b/vendor/github.com/google/licenseclassifier/licenses/AGPL-3.0.txt deleted file mode 100644 index 4ec8c3f..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/AGPL-3.0.txt +++ /dev/null @@ -1,619 +0,0 @@ - GNU AFFERO GENERAL PUBLIC LICENSE - Version 3, 19 November 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU Affero General Public License is a free, copyleft license for -software and other kinds of works, specifically designed to ensure -cooperation with the community in the case of network server software. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -our General Public Licenses are intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - Developers that use our General Public Licenses protect your rights -with two steps: (1) assert copyright on the software, and (2) offer -you this License which gives you legal permission to copy, distribute -and/or modify the software. - - A secondary benefit of defending all users' freedom is that -improvements made in alternate versions of the program, if they -receive widespread use, become available for other developers to -incorporate. Many developers of free software are heartened and -encouraged by the resulting cooperation. However, in the case of -software used on network servers, this result may fail to come about. -The GNU General Public License permits making a modified version and -letting the public access it on a server without ever releasing its -source code to the public. - - The GNU Affero General Public License is designed specifically to -ensure that, in such cases, the modified source code becomes available -to the community. It requires the operator of a network server to -provide the source code of the modified version running there to the -users of that server. Therefore, public use of a modified version, on -a publicly accessible server, gives the public access to the source -code of the modified version. - - An older license, called the Affero General Public License and -published by Affero, was designed to accomplish similar goals. This is -a different license, not a version of the Affero GPL, but Affero has -released a new version of the Affero GPL which permits relicensing under -this license. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU Affero General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Remote Network Interaction; Use with the GNU General Public License. - - Notwithstanding any other provision of this License, if you modify the -Program, your modified version must prominently offer all users -interacting with it remotely through a computer network (if your version -supports such interaction) an opportunity to receive the Corresponding -Source of your version by providing access to the Corresponding Source -from a network server at no charge, through some standard or customary -means of facilitating copying of software. This Corresponding Source -shall include the Corresponding Source for any work covered by version 3 -of the GNU General Public License that is incorporated pursuant to the -following paragraph. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the work with which it is combined will remain governed by version -3 of the GNU General Public License. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU Affero General Public License from time to time. Such new versions -will be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU Affero General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU Affero General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU Affero General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS diff --git a/vendor/github.com/google/licenseclassifier/licenses/APSL-1.0.header.txt b/vendor/github.com/google/licenseclassifier/licenses/APSL-1.0.header.txt deleted file mode 100644 index 63bc0d9..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/APSL-1.0.header.txt +++ /dev/null @@ -1,14 +0,0 @@ -Portions Copyright (c) 1999 Apple Computer, Inc. All Rights Reserved. - -This file contains Original Code and/or Modifications of Original Code as -defined in and that are subject to the Apple Public Source License Version 1.0 -(the 'License'). You may not use this file except in compliance with the -License. Please obtain a copy of the License at -http://www.apple.com/publicsource and read it before using this file. - -The Original Code and all software distributed under the License are distributed -on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, -AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, -ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR -NON-INFRINGEMENT. Please see the License for the specific language governing -rights and limitations under the License. diff --git a/vendor/github.com/google/licenseclassifier/licenses/APSL-1.0.txt b/vendor/github.com/google/licenseclassifier/licenses/APSL-1.0.txt deleted file mode 100644 index 08bc15f..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/APSL-1.0.txt +++ /dev/null @@ -1,276 +0,0 @@ -APPLE PUBLIC SOURCE LICENSE - -Version 1.0 - March 16, 1999 - -Please read this License carefully before downloading this software. By -downloading and using this software, you are agreeing to be bound by the terms -of this License. If you do not or cannot agree to the terms of this License, -please do not download or use the software. - -1. General; Definitions. This License applies to any program or other work which Apple Computer, Inc. ("Apple") publicly announces as subject to this Apple Public Source License and which contains a notice placed by Apple identifying such program or work as "Original Code" and stating that it is subject to the terms of this Apple Public Source License version 1.0 (or subsequent version thereof), as it may be revised from time to time by Apple ("License"). As used in this License: - -1.1 "Applicable Patents" mean: (a) in the case where Apple is the grantor of -rights, (i) patents or patent applications that are now or hereafter acquired, -owned by or assigned to Apple and (ii) whose claims cover subject matter -contained in the Original Code, but only to the extent necessary to use, -reproduce and/or distribute the Original Code without infringement; and (b) in -the case where You are the grantor of rights, (i) patents and patent -applications that are now or hereafter acquired, owned by or assigned to You -and (ii) whose claims cover subject matter in Your Modifications, taken alone -or in combination with Original Code. - -1.2 "Covered Code" means the Original Code, Modifications, the combination of -Original Code and any Modifications, and/or any respective portions thereof. - -1.3 "Deploy" means to use, sublicense or distribute Covered Code other than -for Your internal research and development (R&D), and includes without -limitation, any and all internal use or distribution of Covered Code within -Your business or organization except for R&D use, as well as direct or -indirect sublicensing or distribution of Covered Code by You to any third -party in any form or manner. - -1.4 "Larger Work" means a work which combines Covered Code or portions thereof -with code not governed by the terms of this License. - -1.5 "Modifications" mean any addition to, deletion from, and/or change to, the -substance and/or structure of Covered Code. When code is released as a series -of files, a Modification is: (a) any addition to or deletion from the contents -of a file containing Covered Code; and/or (b) any new file or other -representation of computer program statements that contains any part of -Covered Code. - -1.6 "Original Code" means the Source Code of a program or other work as -originally made available by Apple under this License, including the Source -Code of any updates or upgrades to such programs or works made available by -Apple under this License, and that has been expressly identified by Apple as -such in the header file(s) of such work. - -1.7 "Source Code" means the human readable form of a program or other work -that is suitable for making modifications to it, including all modules it -contains, plus any associated interface definition files, scripts used to -control compilation and installation of an executable (object code). - -1.8 "You" or "Your" means an individual or a legal entity exercising rights -under this License. For legal entities, "You" or "Your" includes any entity -which controls, is controlled by, or is under common control with, You, where -"control" means (a) the power, direct or indirect, to cause the direction or -management of such entity, whether by contract or otherwise, or (b) ownership -of fifty percent (50%) or more of the outstanding shares or beneficial -ownership of such entity. - -2. Permitted Uses; Conditions & Restrictions. Subject to the terms and conditions of this License, Apple hereby grants You, effective on the date You accept this License and download the Original Code, a world-wide, royalty-free, non-exclusive license, to the extent of Apple's Applicable Patents and copyrights covering the Original Code, to do the following: - -2.1 You may use, copy, modify and distribute Original Code, with or without -Modifications, solely for Your internal research and development, provided -that You must in each instance: - -(a) retain and reproduce in all copies of Original Code the copyright and -other proprietary notices and disclaimers of Apple as they appear in the -Original Code, and keep intact all notices in the Original Code that refer to -this License; - -(b) include a copy of this License with every copy of Source Code of Covered -Code and documentation You distribute, and You may not offer or impose any -terms on such Source Code that alter or restrict this License or the -recipients' rights hereunder, except as permitted under Section 6; and - -(c) completely and accurately document all Modifications that you have made -and the date of each such Modification, designate the version of the Original -Code you used, prominently include a file carrying such information with the -Modifications, and duplicate the notice in Exhibit A in each file of the -Source Code of all such Modifications. - -2.2 You may Deploy Covered Code, provided that You must in each instance: - -(a) satisfy all the conditions of Section 2.1 with respect to the Source Code -of the Covered Code; - -(b) make all Your Deployed Modifications publicly available in Source Code -form via electronic distribution (e.g. download from a web site) under the -terms of this License and subject to the license grants set forth in Section 3 -below, and any additional terms You may choose to offer under Section 6. You -must continue to make the Source Code of Your Deployed Modifications available -for as long as you Deploy the Covered Code or twelve (12) months from the date -of initial Deployment, whichever is longer; - -(c) must notify Apple and other third parties of how to obtain Your Deployed -Modifications by filling out and submitting the required information found at -http://www.apple.com/publicsource/modifications.html; and - -(d) if you Deploy Covered Code in object code, executable form only, include a -prominent notice, in the code itself as well as in related documentation, -stating that Source Code of the Covered Code is available under the terms of -this License with information on how and where to obtain such Source Code. - -3. Your Grants. In consideration of, and as a condition to, the licenses granted to You under this License: - -(a) You hereby grant to Apple and all third parties a non-exclusive, royalty- -free license, under Your Applicable Patents and other intellectual property -rights owned or controlled by You, to use, reproduce, modify, distribute and -Deploy Your Modifications of the same scope and extent as Apple's -licenses under Sections 2.1 and 2.2; and - -(b) You hereby grant to Apple and its subsidiaries a non-exclusive, worldwide, -royalty-free, perpetual and irrevocable license, under Your Applicable Patents -and other intellectual property rights owned or controlled by You, to use, -reproduce, execute, compile, display, perform, modify or have modified (for -Apple and/or its subsidiaries), sublicense and distribute Your Modifications, -in any form, through multiple tiers of distribution. - -4. Larger Works. You may create a Larger Work by combining Covered Code with other code not governed by the terms of this License and distribute the Larger Work as a single product. In each such instance, You must make sure the requirements of this License are fulfilled for the Covered Code or any portion thereof. - -5. Limitations on Patent License. Except as expressly stated in Section 2, no other patent rights, express or implied, are granted by Apple herein. Modifications and/or Larger Works may require additional patent licenses from Apple which Apple may grant in its sole discretion. - -6. Additional Terms. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations and/or other rights consistent with the scope of the license granted herein ("Additional Terms") to one or more recipients of Covered Code. However, You may do so only on Your own behalf and as Your sole responsibility, and not on behalf of Apple. You must obtain the recipient's agreement that any such Additional Terms are offered by You alone, and You hereby agree to indemnify, defend and hold Apple harmless for any liability incurred by or claims asserted against Apple by reason of any such Additional Terms. - -7. Versions of the License. Apple may publish revised and/or new versions of this License from time to time. Each version will be given a distinguishing version number. Once Original Code has been published under a particular version of this License, You may continue to use it under the terms of that version. You may also choose to use such Original Code under the terms of any subsequent version of this License published by Apple. No one other than Apple has the right to modify the terms applicable to Covered Code created under this License. - -8. NO WARRANTY OR SUPPORT. The Original Code may contain in whole or in part pre-release, untested, or not fully tested works. The Original Code may contain errors that could cause failures or loss of data, and may be incomplete or contain inaccuracies. You expressly acknowledge and agree that use of the Original Code, or any portion thereof, is at Your sole and entire risk. THE ORIGINAL CODE IS PROVIDED "AS IS" AND WITHOUT WARRANTY, UPGRADES OR SUPPORT OF ANY KIND AND APPLE AND APPLE'S LICENSOR(S) (FOR THE PURPOSES OF SECTIONS 8 AND 9, APPLE AND APPLE'S LICENSOR(S) ARE COLLECTIVELY REFERRED TO AS "APPLE") EXPRESSLY DISCLAIM ALL WARRANTIES AND/OR CONDITIONS, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES AND/OR CONDITIONS OF MERCHANTABILITY OR SATISFACTORY QUALITY AND FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. APPLE DOES NOT WARRANT THAT THE FUNCTIONS CONTAINED IN THE ORIGINAL CODE WILL MEET YOUR REQUIREMENTS, OR THAT THE OPERATION OF THE ORIGINAL CODE WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT DEFECTS IN THE ORIGINAL CODE WILL BE CORRECTED. NO ORAL OR WRITTEN INFORMATION OR ADVICE GIVEN BY APPLE OR AN APPLE AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY OR IN ANY WAY INCREASE THE SCOPE OF THIS WARRANTY. You acknowledge that the Original Code is not intended for use in the operation of nuclear facilities, aircraft navigation, communication systems, or air traffic control machines in which case the failure of the Original Code could lead to death, personal injury, or severe physical or environmental damage. - -9. Liability. - -9.1 Infringement. If any of the Original Code becomes the subject ofa claim of -infringement ("Affected Original Code"), Apple may, at its sole discretion and -option: (a) attempt to procure the rights necessary for You to continue using -the Affected Original Code; (b) modify the Affected Original Code so that it -is no longer infringing; or (c) terminate Your rights to use the Affected -Original Code, effective immediately upon Apple's posting of a notice to -such effect on the Apple web site that is used for implementation of this -License. - -9.2 LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES SHALL APPLE BE LIABLE FOR -ANY INCIDENTAL, SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR -RELATING TO THIS LICENSE OR YOUR USE OR INABILITY TO USE THE ORIGINAL CODE, OR -ANY PORTION THEREOF, WHETHER UNDER A THEORY OF CONTRACT, WARRANTY, TORT -(INCLUDING NEGLIGENCE), PRODUCTS LIABILITY OR OTHERWISE, EVEN IF APPLE HAS -BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES AND NOTWITHSTANDING THE -FAILURE OF ESSENTIAL PURPOSE OF ANY REMEDY. In no event shall Apple's -total liability to You for all damages under this License exceed the amount of -fifty dollars ($50.00). - -10. Trademarks. This License does not grant any rights to use the trademarks or trade names "Apple", "Apple Computer", "Mac OS X", "Mac OS X Server" or any other trademarks or trade names belonging to Apple (collectively "Apple Marks") and no Apple Marks may be used to endorse or promote products derived from the Original Code -other than as permitted by and in strict compliance at all times with -Apple's third party trademark usage guidelines which are posted at -http://www.apple.com/legal/guidelinesfor3rdparties.html. - -11. Ownership. Apple retains all rights, title and interest in and to the Original Code and any Modifications made by or on behalf of Apple ("Apple Modifications"), and such Apple Modifications will not be automatically subject to this License. Apple may, at its sole discretion, choose to license such Apple Modifications under this License, or on different terms from those contained in this License or may choose not to license them at all. Apple's development, use, reproduction, modification, sublicensing and distribution of Covered Code will not be subject to this License. - -12. Termination. - -12.1 Termination. This License and the rights granted hereunder will -terminate: - -(a) automatically without notice from Apple if You fail to comply with any -term(s) of this License and fail to cure such breach within 30 days of -becoming aware of such breach; - -(b) immediately in the event of the circumstances described in Sections 9.1 -and/or 13.6(b); or - -(c) automatically without notice from Apple if You, at any time during the -term of this License, commence an action for patent infringement against -Apple. - -12.2 Effect of Termination. Upon termination, You agree to immediately stop -any further use, reproduction, modification and distribution of the Covered -Code, or Affected Original Code in the case of termination under Section 9.1, -and to destroy all copies of the Covered Code or Affected Original Code (in -the case of - -termination under Section 9.1) that are in your possession or control. All -sublicenses to the Covered Code which have been properly granted prior to -termination shall survive any termination of this License. Provisions which, -by their nature, should remain in effect beyond the termination of this -License shall survive, including but not limited to Sections 3, 5, 8, 9, 10, -11, 12.2 and 13. Neither party will be liable to the other for compensation, -indemnity or damages of any sort solely as a result of terminating this -License in accordance with its terms, and termination of this License will be -without prejudice to any other right or remedy of either party. - -13. Miscellaneous. - -13.1 Export Law Assurances. You may not use or otherwise export or re-export -the Original Code except as authorized by United States law and the laws of -the jurisdiction in which the Original Code was obtained. In particular, but -without limitation, the Original Code may not be exported or re-exported (a) -into (or to a national or resident of) any U.S. embargoed country or (b) to -anyone on the U.S. Treasury Department's list of Specially Designated -Nationals or the U.S. Department of Commerce's Table of Denial Orders. By -using the Original Code, You represent and warrant that You are not located -in, under control of, or a national or resident of any such country or on any -such list. - -13.2 Government End Users. The Covered Code is a "commercial item" as defined -in FAR 2.101. Government software and technical data rights in the Covered -Code include only those rights customarily provided to the public as defined -in this License. This customary commercial license in technical data and -software is provided in - -accordance with FAR 12.211 (Technical Data) and 12.212 (Computer Software) -and, for Department of Defense purchases, DFAR 252.227-7015 (Technical Data -- -Commercial Items) and 227.7202-3 (Rights in Commercial Computer Software or -Computer Software Documentation). Accordingly, all U.S. Government End Users -acquire Covered Code with only those rights set forth herein. - -13.3 Relationship of Parties. This License will not be construed as creating -an agency, partnership, joint venture or any other form of legal association -between You and Apple, and You will not represent to the contrary, whether -expressly, by implication, appearance or otherwise. - -13.4 Independent Development. Nothing in this License will impair Apple's -right to acquire, license, develop, have others develop for it, market and/or -distribute technology or products that perform the same or similar functions -as, or otherwise compete with, Modifications, Larger Works, technology or -products that You may develop, produce, market or distribute. - -13.5 Waiver; Construction. Failure by Apple to enforce any provision of this -License will not be deemed a waiver of future enforcement of that or any other -provision. Any law or regulation which provides that the language of a -contract shall be construed against the drafter will not apply to this -License. - -13.6 Severability. (a) If for any reason a court of competent jurisdiction -finds any provision of this License, or portion thereof, to be unenforceable, -that provision of the License will be enforced to the maximum extent -permissible so as to effect the economic benefits and intent of the parties, -and the remainder of this License will continue in full force and effect. (b) -Notwithstanding the foregoing, if applicable law prohibits or restricts You -from fully and/or specifically complying with Sections 2 and/or 3 or prevents -the enforceability of either of those Sections, this License will immediately -terminate and You must immediately discontinue any use of the Covered Code and -destroy all copies of it that are in your possession or control. - -13.7 Dispute Resolution. Any litigation or other dispute resolution between -You and Apple relating to this License shall take place in the Northern -District of California, and You and Apple hereby consent to the personal -jurisdiction of, and venue in, the state and federal courts within that -District with respect to this License. The application of the United Nations -Convention on Contracts for the International Sale of Goods is expressly -excluded. - -13.8 Entire Agreement; Governing Law. This License constitutes the entire -agreement between the parties with respect to the subject matter hereof. This -License shall be governed by the laws of the United States and the State of -California, except that body of California law concerning conflicts of law. - -Where You are located in the province of Quebec, Canada, the following clause -applies: The parties hereby confirm that they have requested that this License -and all related documents be drafted in English. Les parties ont exige que le -present contrat et tous les documents connexes soient rediges en anglais. - -EXHIBIT A. - -"Portions Copyright (c) 1999 Apple Computer, Inc. All Rights Reserved. This -file contains Original Code and/or Modifications of Original Code as defined -in and that are subject to the Apple Public Source License Version 1.0 (the -'License'). You may not use this file except in compliance with the -License. Please obtain a copy of the License at -http://www.apple.com/publicsource and read it before using this file. - -The Original Code and all software distributed under the License are -distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, -INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the License for the -specific language governing rights and limitations under the License." - diff --git a/vendor/github.com/google/licenseclassifier/licenses/APSL-1.1.header.txt b/vendor/github.com/google/licenseclassifier/licenses/APSL-1.1.header.txt deleted file mode 100644 index 3f75e74..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/APSL-1.1.header.txt +++ /dev/null @@ -1,14 +0,0 @@ -Portions Copyright (c) 1999-2000 Apple Computer, Inc. All Rights Reserved. - -This file contains Original Code and/or Modifications of Original Code as -defined in and that are subject to the Apple Public Source License Version 1.1 -(the "License"). You may not use this file except in compliance with the -License. Please obtain a copy of the License at -http://www.apple.com/publicsource and read it before using this file. - -The Original Code and all software distributed under the License are distributed -on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, -AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, -ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NON- -INFRINGEMENT. Please see the License for the specific language governing rights -and limitations under the License. diff --git a/vendor/github.com/google/licenseclassifier/licenses/APSL-1.1.txt b/vendor/github.com/google/licenseclassifier/licenses/APSL-1.1.txt deleted file mode 100644 index 53a86c0..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/APSL-1.1.txt +++ /dev/null @@ -1,278 +0,0 @@ -APPLE PUBLIC SOURCE LICENSE - -Version 1.1 - April 19,1999 - -Please read this License carefully before downloading this software. - -By downloading and using this software, you are agreeing to be bound by the -terms of this License. If you do not or cannot agree to the terms of this -License, please do not download or use the software. - -1. General; Definitions. This License applies to any program or other work which Apple Computer, Inc. ("Apple") publicly announces as subject to this Apple Public Source License and which contains a notice placed by Apple identifying such program or work as "Original Code" and stating that it is subject to the terms of this Apple Public Source License version 1.1 (or subsequent version thereof), as it may be revised from time to time by Apple ("License"). As used in this License: - -1.1 "Affected Original Code" means only those specific portions of Original -Code that allegedly infringe upon any party's intellectual property -rights or are otherwise the subject of a claim of infringement. - -1.2 "Applicable Patent Rights" mean: (a) in the case where Apple is the -grantor of rights, (i) claims of patents that are now or hereafter acquired, -owned by or assigned to Apple and (ii) that cover subject matter contained in -the Original Code, but only to the extent necessary to use, reproduce and/or -distribute the Original Code without infringement; and (b) in the case where -You are the grantor of rights, (i) claims of patents that are now or hereafter -acquired, owned by or assigned to You and (ii) that cover subject matter in -Your Modifications, taken alone or in combination with Original Code. - -1.3 "Covered Code" means the Original Code, Modifications, the combination of -Original Code and any Modifications, and/or any respective portions thereof. - -1.4 "Deploy" means to use, sublicense or distribute Covered Code other than -for Your internal research and development (R&D), and includes without -limitation, any and all internal use or distribution of Covered Code within -Your business or organization except for R&D use, as well as direct or -indirect sublicensing or distribution of Covered Code by You to any third -party in any form or manner. - -1.5 "Larger Work" means a work which combines Covered Code or portions thereof -with code not governed by the terms of this License. - -1.6 "Modifications" mean any addition to, deletion from, and/or change to, the -substance and/or structure of Covered Code. When code is released as a series -of files, a Modification is: (a) any addition to or deletion from the contents -of a file containing Covered Code; and/or (b) any new file or other -representation of computer program statements that contains any part of -Covered Code. - -1.7 "Original Code" means (a) the Source Code of a program or other work as -originally made available by Apple under this License, including the Source -Code of any updates or upgrades to such programs or works made available by -Apple under this License, and that has been expressly identified by Apple as -such in the header file(s) of such work; and (b) the object code compiled from -such Source Code and originally made available by Apple under this License. - -1.8 "Source Code" means the human readable form of a program or other work -that is suitable for making modifications to it, including all modules it -contains, plus any associated interface definition files, scripts used to -control compilation and installation of an executable (object code). - -1.9 "You" or "Your" means an individual or a legal entity exercising rights -under this License. For legal entities, "You" or "Your" includes any entity -which controls, is controlled by, or is under common control with, You, where -"control" means (a) the power, direct or indirect, to cause the direction or -management of such entity, whether by contract or otherwise, or (b) ownership -of fifty percent (50%) or more of the outstanding shares or beneficial -ownership of such entity. - -2. Permitted Uses; Conditions & Restrictions. Subject to the terms and conditions of this License, Apple hereby grants You, effective on the date You accept this License and download the Original Code, a world-wide, royalty-free, non- exclusive license, to the extent of Apple's Applicable Patent Rights and copyrights covering the Original Code, to do the following: - -2.1 You may use, copy, modify and distribute Original Code, with or without -Modifications, solely for Your internal research and development, provided -that You must in each instance: - -(a) retain and reproduce in all copies of Original Code the copyright and -other proprietary notices and disclaimers of Apple as they appear in the -Original Code, and keep intact all notices in the Original Code that refer to -this License; - -(b) include a copy of this License with every copy of Source Code of Covered -Code and documentation You distribute, and You may not offer or impose any -terms on such Source Code that alter or restrict this License or the -recipients' rights hereunder, except as permitted under Section 6; and - -(c) completely and accurately document all Modifications that you have made -and the date of each such Modification, designate the version of the Original -Code you used, prominently include a file carrying such information with the -Modifications, and duplicate the notice in Exhibit A in each file of the -Source Code of all such Modifications. - -2.2 You may Deploy Covered Code, provided that You must in each instance: - -(a) satisfy all the conditions of Section 2.1 with respect to the Source Code -of the Covered Code; - -(b) make all Your Deployed Modifications publicly available in Source Code -form via electronic distribution (e.g. download from a web site) under the -terms of this License and subject to the license grants set forth in Section 3 -below, and any additional terms You may choose to offer under Section 6. You -must continue to make the Source Code of Your Deployed Modifications available -for as long as you Deploy the Covered Code or twelve (12) months from the date -of initial Deployment, whichever is longer; - -(c) if You Deploy Covered Code containing Modifications made by You, inform -others of how to obtain those Modifications by filling out and submitting the -information found at http://www.apple.com/publicsource/modifications.html, if -available; and - -(d) if You Deploy Covered Code in object code, executable form only, include a -prominent notice, in the code itself as well as in related documentation, -stating that Source Code of the Covered Code is available under the terms of -this License with information on how and where to obtain such Source Code. - -3. Your Grants. In consideration of, and as a condition to, the licenses granted to You under this License: - -(a) You hereby grant to Apple and all third parties a non-exclusive, royalty- -free license, under Your Applicable Patent Rights and other intellectual -property rights owned or controlled by You, to use, reproduce, modify, -distribute and Deploy Your Modifications of the same scope and extent as -Apple's licenses under Sections 2.1 and 2.2; and - -(b) You hereby grant to Apple and its subsidiaries a non-exclusive, worldwide, -royalty-free, perpetual and irrevocable license, under Your Applicable Patent -Rights and other intellectual property rights owned or controlled by You, to -use, reproduce, execute, compile, display, perform, modify or have modified -(for Apple and/or its subsidiaries), sublicense and distribute Your -Modifications, in any form, through multiple tiers of distribution. - -4. Larger Works. You may create a Larger Work by combining Covered Code with other code not governed by the terms of this License and distribute the Larger Work as a single product. In each such instance, You must make sure the requirements of this License are fulfilled for the Covered Code or any portion thereof. - -5. Limitations on Patent License. Except as expressly stated in Section 2, no other patent rights, express or implied, are granted by Apple herein. Modifications and/or Larger Works may require additional patent licenses from Apple which Apple may grant in its sole discretion. - -6. Additional Terms. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations and/or other rights consistent with the scope of the license granted herein ("Additional Terms") to one or more recipients of Covered Code. However, You may do so only on Your own behalf and as Your sole responsibility, and not on behalf of Apple. You must obtain the recipient's agreement that any such Additional Terms are offered by You alone, and You hereby agree to indemnify, defend and hold Apple harmless for any liability incurred by or claims asserted against Apple by reason of any such Additional Terms. - -7. Versions of the License. Apple may publish revised and/or new versions of this License from time to time. Each version will be given a distinguishing version number. Once Original Code has been published under a particular version of this License, You may continue to use it under the terms of that version. You may also choose to use such Original Code under the terms of any subsequent version of this License published by Apple. No one other than Apple has the right to modify the terms applicable to Covered Code created under this License. - -8. NO WARRANTY OR SUPPORT. The Original Code may contain in whole or in part pre-release, untested, or not fully tested works. The Original Code may contain errors that could cause failures or loss of data, and may be incomplete or contain inaccuracies. You expressly acknowledge and agree that use of the Original Code, or any portion thereof, is at Your sole and entire risk. THE ORIGINAL CODE IS PROVIDED "AS IS" AND WITHOUT WARRANTY, UPGRADES OR SUPPORT OF ANY KIND AND APPLE AND APPLE'S LICENSOR(S) (FOR THE PURPOSES OF SECTIONS 8 AND 9, APPLE AND APPLE'S LICENSOR(S) ARE COLLECTIVELY REFERRED TO AS "APPLE") EXPRESSLY DISCLAIM ALL WARRANTIES AND/OR CONDITIONS, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES AND/OR CONDITIONS OF MERCHANTABILITY OR SATISFACTORY QUALITY AND FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. APPLE DOES NOT WARRANT THAT THE FUNCTIONS CONTAINED IN THE ORIGINAL CODE WILL MEET YOUR REQUIREMENTS, OR THAT THE OPERATION OF THE ORIGINAL CODE WILL BE UNINTERRUPTED OR ERROR- FREE, OR THAT DEFECTS IN THE ORIGINAL CODE WILL BE CORRECTED. NO ORAL OR WRITTEN INFORMATION OR ADVICE GIVEN BY APPLE OR AN APPLE AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY OR IN ANY WAY INCREASE THE SCOPE OF THIS WARRANTY. You acknowledge that the Original Code is not intended for use in the operation of nuclear facilities, aircraft navigation, communication systems, or air traffic control machines in which case the failure of the Original Code could lead to death, personal injury, or severe physical or environmental damage. - -9. Liability. - -9.1 Infringement. If any portion of, or functionality implemented by, the -Original Code becomes the subject of a claim of infringement, Apple may, at -its option: (a) attempt to procure the rights necessary for Apple and You to -continue using the Affected Original Code; (b) modify the Affected Original -Code so that it is no longer infringing; or (c) suspend Your rights to use, -reproduce, modify, sublicense and distribute the Affected Original Code until -a final determination of the claim is made by a court or governmental -administrative agency of competent jurisdiction and Apple lifts the suspension -as set forth below. Such suspension of rights will be effective immediately -upon Apple's posting of a notice to such effect on the Apple web site -that is used for implementation of this License. Upon such final determination -being made, if Apple is legally able, without the payment of a fee or royalty, -to resume use, reproduction, modification, sublicensing and distribution of -the Affected Original Code, Apple will lift the suspension of rights to the -Affected Original Code by posting a notice to such effect on the Apple web -site that is used for implementation of this License. If Apple suspends Your -rights to Affected Original Code, nothing in this License shall be construed -to restrict You, at Your option and subject to applicable law, from replacing -the Affected Original Code with non-infringing code or independently -negotiating for necessary rights from such third party. - -9.2 LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES SHALL APPLE BE LIABLE FOR -ANY INCIDENTAL, SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR -RELATING TO THIS LICENSE OR YOUR USE OR INABILITY TO USE THE ORIGINAL CODE, OR -ANY PORTION THEREOF, WHETHER UNDER A THEORY OF CONTRACT, WARRANTY, TORT -(INCLUDING NEGLIGENCE), PRODUCTS LIABILITY OR OTHERWISE, EVEN IF APPLE HAS -BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES AND NOTWITHSTANDING THE -FAILURE OF ESSENTIAL PURPOSE OF ANY REMEDY. In no event shall Apple's -total liability to You for all damages under this License exceed the amount of -fifty dollars ($50.00). - -10. Trademarks. This License does not grant any rights to use the trademarks or trade names "Apple", "Apple Computer", "Mac OS X", "Mac OS X Server" or any other trademarks or trade names belonging to Apple (collectively "Apple Marks") and no Apple Marks may be used to endorse or promote products derived from the Original Code other than as permitted by and in strict compliance at all times with Apple's third party trademark usage guidelines which are posted at http://www.apple.com/legal/guidelinesfor3rdparties.html. - -11. Ownership. Apple retains all rights, title and interest in and to the Original Code and any Modifications made by or on behalf of Apple ("Apple Modifications"), and such Apple Modifications will not be automatically subject to this License. Apple may, at its sole discretion, choose to license such Apple Modifications under this License, or on different terms from those contained in this License or may choose not to license them at all. Apple's development, use, reproduction, modification, sublicensing and distribution of Covered Code will not be subject to this License. - -12. Termination. - -12.1 Termination. This License and the rights granted hereunder will -terminate: - -(a) automatically without notice from Apple if You fail to comply with any -term(s) of this License and fail to cure such breach within 30 days of -becoming aware of such breach; - -(b) immediately in the event of the circumstances described in Section -13.5(b); or - -(c) automatically without notice from Apple if You, at any time during the -term of this License, commence an action for patent infringement against -Apple. - -12.2 Effect of Termination. Upon termination, You agree to immediately stop -any further use, reproduction, modification, sublicensing and distribution of -the Covered Code and to destroy all copies of the Covered Code that are in -your possession or control. All sublicenses to the Covered Code which have -been properly granted prior to termination shall survive any termination of -this License. Provisions which, by their nature, should remain in effect -beyond the termination of this License shall survive, including but not -limited to Sections 3, 5, 8, 9, 10, 11, 12.2 and 13. Neither party will be -liable to the other for compensation, indemnity or damages of any sort solely -as a result of terminating this License in accordance with its terms, and -termination of this License will be without prejudice to any other right or -remedy of either party. - -13. Miscellaneous. - -13.1 Government End Users. The Covered Code is a "commercial item" as defined -in FAR 2.101. Government software and technical data rights in the Covered -Code include only those rights customarily provided to the public as defined -in this License. This customary commercial license in technical data and -software is provided in accordance with FAR 12.211 (Technical Data) and 12.212 -(Computer Software) and, for Department of Defense purchases, DFAR -252.227-7015 (Technical Data -- Commercial Items) and 227.7202-3 (Rights in -Commercial Computer Software or Computer Software Documentation). Accordingly, -all U.S. Government End Users acquire Covered Code with only those rights set -forth herein. - -13.2 Relationship of Parties. This License will not be construed as creating -an agency, partnership, joint venture or any other form of legal association -between You and Apple, and You will not represent to the contrary, whether -expressly, by implication, appearance or otherwise. - -13.3 Independent Development. Nothing in this License will impair Apple's -right to acquire, license, develop, have others develop for it, market and/or -distribute technology or products that perform the same or similar functions -as, or otherwise compete with, Modifications, Larger Works, technology or -products that You may - -develop, produce, market or distribute. - -13.4 Waiver; Construction. Failure by Apple to enforce any provision of this -License will not be deemed a waiver of future enforcement of that or any other -provision. Any law or regulation which provides that the language of a -contract shall be construed against the drafter will not apply to this -License. - -13.5 Severability. (a) If for any reason a court of competent jurisdiction -finds any provision of this License, or portion thereof, to be unenforceable, -that provision of the License will be enforced to the maximum extent -permissible so as to effect the economic benefits and intent of the parties, -and the remainder of this License will continue in full force and effect. (b) -Notwithstanding the foregoing, if applicable law prohibits or restricts You -from fully and/or specifically complying with Sections 2 and/or 3 or prevents -the enforceability of either of those Sections, this License will immediately -terminate and You must immediately discontinue any use of the Covered Code and -destroy all copies of it that are in your possession or control. - -13.6 Dispute Resolution. Any litigation or other dispute resolution between -You and Apple relating to this License shall take place in the Northern -District of California, and You and Apple hereby consent to the personal -jurisdiction of, and venue in, the state and federal courts within that -District with respect to this License. The application of the United Nations -Convention on Contracts for the International Sale of Goods is expressly -excluded. - -13.7 Entire Agreement; Governing Law. This License constitutes the entire -agreement between the parties with respect to the subject matter hereof. This -License shall be governed by the laws of the United States and the State of -California, except that body of California law concerning conflicts of law. - -Where You are located in the province of Quebec, Canada, the following clause -applies: The parties hereby confirm that they have requested that this License -and all related documents be drafted in English. Les parties ont exige que le -present contrat et tous les documents connexes soient rediges en anglais. - -EXHIBIT A. - -"Portions Copyright (c) 1999-2000 Apple Computer, Inc. All Rights Reserved. -This file contains Original Code and/or Modifications of Original Code as -defined in and that are subject to the Apple Public Source License Version 1.1 -(the "License"). You may not use this file except in compliance with the -License. Please obtain a copy of the License at -http://www.apple.com/publicsource and read it before using this file. - -The Original Code and all software distributed under the License are -distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS -OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT -LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR -PURPOSE OR NON- INFRINGEMENT. Please see the License for the specific language -governing rights and limitations under the License." - diff --git a/vendor/github.com/google/licenseclassifier/licenses/APSL-1.2.header.txt b/vendor/github.com/google/licenseclassifier/licenses/APSL-1.2.header.txt deleted file mode 100644 index 8a990cb..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/APSL-1.2.header.txt +++ /dev/null @@ -1,14 +0,0 @@ -Portions Copyright (c) 1999-2001 Apple Computer, Inc. All Rights Reserved. - -This file contains Original Code and/or Modifications of Original Code as -defined in and that are subject to the Apple Public Source License Version 1.2 -(the 'License'). You may not use this file except in compliance with the -License. Please obtain a copy of the License at -http://www.apple.com/publicsource and read it before using this file. - -The Original Code and all software distributed under the License are distributed -on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, -AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, -ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET -ENJOYMENT OR NON-INFRINGEMENT. Please see the License for the specific language -governing rights and limitations under the License. diff --git a/vendor/github.com/google/licenseclassifier/licenses/APSL-1.2.txt b/vendor/github.com/google/licenseclassifier/licenses/APSL-1.2.txt deleted file mode 100644 index e55322d..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/APSL-1.2.txt +++ /dev/null @@ -1,254 +0,0 @@ -Apple Public Source License Ver. 1.2 - -1. General; Definitions. This License applies to any program or other work which Apple Computer, Inc. ("Apple") makes publicly available and which contains a notice placed by Apple identifying such program or work as "Original Code" and stating that it is subject to the terms of this Apple Public Source License version 1.2 (or subsequent version thereof) ("License"). As used in this License: - -1.1 "Applicable Patent Rights" mean: (a) in the case where Apple is the -grantor of rights, (i) claims of patents that are now or hereafter acquired, -owned by or assigned to Apple and (ii) that cover subject matter contained in -the Original Code, but only to the extent necessary to use, reproduce and/or -distribute the Original Code without infringement; and (b) in the case where -You are the grantor of rights, (i) claims of patents that are now or hereafter -acquired, owned by or assigned to You and (ii) that cover subject matter in -Your Modifications, taken alone or in combination with Original Code. - -1.2 "Contributor" means any person or entity that creates or contributes to -the creation of Modifications. - -1.3 "Covered Code" means the Original Code, Modifications, the combination of -Original Code and any Modifications, and/or any respective portions thereof. - -1.4 "Deploy" means to use, sublicense or distribute Covered Code other than -for Your internal research and development (R&D) and/or Personal Use, and -includes without limitation, any and all internal use or distribution of -Covered Code within Your business or organization except for R&D use and/or -Personal Use, as well as direct or indirect sublicensing or distribution of -Covered Code by You to any third party in any form or manner. - -1.5 "Larger Work" means a work which combines Covered Code or portions thereof -with code not governed by the terms of this License. - -1.6 "Modifications" mean any addition to, deletion from, and/or change to, the -substance and/or structure of the Original Code, any previous Modifications, -the combination of Original Code and any previous Modifications, and/or any -respective portions thereof. When code is released as a series of files, a -Modification is: (a) any addition to or deletion from the contents of a file -containing Covered Code; and/or (b) any new file or other representation of -computer program statements that contains any part of Covered Code. - -1.7 "Original Code" means (a) the Source Code of a program or other work as -originally made available by Apple under this License, including the Source -Code of any updates or upgrades to such programs or works made available by -Apple under this License, and that has been expressly identified by Apple as -such in the header file(s) of such work; and (b) the object code compiled from -such Source Code and originally made available by Apple under this License. - -1.8 "Personal Use" means use of Covered Code by an individual solely for his -or her personal, private and non-commercial purposes. An individual's use -of Covered Code in his or her capacity as an officer, employee, member, -independent contractor or agent of a corporation, business or organization -(commercial or non-commercial) does not qualify as Personal Use. - -1.9 "Source Code" means the human readable form of a program or other work -that is suitable for making modifications to it, including all modules it -contains, plus any associated interface definition files, scripts used to -control compilation and installation of an executable (object code). - -1.10 "You" or "Your" means an individual or a legal entity exercising rights -under this License. For legal entities, "You" or "Your" includes any entity -which controls, is controlled by, or is under common control with, You, where -"control" means (a) the power, direct or indirect, to cause the direction or -management of such entity, whether by contract or otherwise, or (b) ownership -of fifty percent (50%) or more of the outstanding shares or beneficial -ownership of such entity. - -2. Permitted Uses; Conditions & Restrictions.Subject to the terms and conditions of this License, Apple hereby grants You, effective on the date You accept this License and download the Original Code, a world-wide, royalty-free, non-exclusive license, to the extent of Apple's Applicable Patent Rights and copyrights covering the Original Code, to do the following: - -2.1 You may use, reproduce, display, perform, modify and distribute Original -Code, with or without Modifications, solely for Your internal research and -development and/or Personal Use, provided that in each instance: - -(a) You must retain and reproduce in all copies of Original Code the copyright -and other proprietary notices and disclaimers of Apple as they appear in the -Original Code, and keep intact all notices in the Original Code that refer to -this License; and - -(b) You must include a copy of this License with every copy of Source Code of -Covered Code and documentation You distribute, and You may not offer or impose -any terms on such Source Code that alter or restrict this License or the -recipients' rights hereunder, except as permitted under Section 6. - -2.2 You may use, reproduce, display, perform, modify and Deploy Covered Code, -provided that in each instance: - -(a) You must satisfy all the conditions of Section 2.1 with respect to the -Source Code of the Covered Code; - -(b) You must duplicate, to the extent it does not already exist, the notice in -Exhibit A in each file of the Source Code of all Your Modifications, and cause -the modified files to carry prominent notices stating that You changed the -files and the date of any change; - -(c) You must make Source Code of all Your Deployed Modifications publicly -available under the terms of this License, including the license grants set -forth in Section 3 below, for as long as you Deploy the Covered Code or twelve -(12) months from the date of initial Deployment, whichever is longer. You -should preferably distribute the Source Code of Your Deployed Modifications -electronically (e.g. download from a web site); and - -(d) if You Deploy Covered Code in object code, executable form only, You must -include a prominent notice, in the code itself as well as in related -documentation, stating that Source Code of the Covered Code is available under -the terms of this License with information on how and where to obtain such -Source Code. - -2.3 You expressly acknowledge and agree that although Apple and each -Contributor grants the licenses to their respective portions of the Covered -Code set forth herein, no assurances are provided by Apple or any Contributor -that the Covered Code does not infringe the patent or other intellectual -property rights of any other entity. Apple and each Contributor disclaim any -liability to You for claims brought by any other entity based on infringement -of intellectual property rights or otherwise. As a condition to exercising the -rights and licenses granted hereunder, You hereby assume sole responsibility -to secure any other intellectual property rights needed, if any. For example, -if a third party patent license is required to allow You to distribute the -Covered Code, it is Your responsibility to acquire that license before -distributing the Covered Code. - -3. Your Grants. In consideration of, and as a condition to, the licenses granted to You under this License: - -(a) You hereby grant to Apple and all third parties a non-exclusive, royalty- -free license, under Your Applicable Patent Rights and other intellectual -property rights (other than patent) owned or controlled by You, to use, -reproduce, display, perform, modify, distribute and Deploy Your Modifications -of the same scope and extent as Apple's licenses under Sections 2.1 and -2.2; and - -(b) You hereby grant to Apple and its subsidiaries a non-exclusive, worldwide, -royalty-free, perpetual and irrevocable license, under Your Applicable Patent -Rights and other intellectual property rights (other than patent) owned or -controlled by You, to use, reproduce, display, perform, modify or have -modified (for Apple and/or its subsidiaries), sublicense and distribute Your -Modifications, in any form, through multiple tiers of distribution. - -4. Larger Works. You may create a Larger Work by combining Covered Code with other code not governed by the terms of this License and distribute the Larger Work as a single product. In each such instance, You must make sure the requirements of this License are fulfilled for the Covered Code or any portion thereof. - -5. Limitations on Patent License. Except as expressly stated in Section 2, no other patent rights, express or implied, are granted by Apple herein. Modifications and/or Larger Works may require additional patent licenses from Apple which Apple may grant in its sole discretion. - -6. Additional Terms. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations and/or other rights consistent with the scope of the license granted herein ("Additional Terms") to one or more recipients of Covered Code. However, You may do so only on Your own behalf and as Your sole responsibility, and not on behalf of Apple or any Contributor. You must obtain the recipient's agreement that any such Additional Terms are offered by You alone, and You hereby agree to indemnify, defend and hold Apple and every Contributor harmless for any liability incurred by or claims asserted against Apple or such Contributor by reason of any such Additional Terms. - -7. Versions of the License. Apple may publish revised and/or new versions of this License from time to time. Each version will be given a distinguishing version number. Once Original Code has been published under a particular version of this License, You may continue to use it under the terms of that version. You may also choose to use such Original Code under the terms of any subsequent version of this License published by Apple. No one other than Apple has the right to modify the terms applicable to Covered Code created under this License. - -8. NO WARRANTY OR SUPPORT. The Covered Code may contain in whole or in part pre-release, untested, or not fully tested works. The Covered Code may contain errors that could cause failures or loss of data, and may be incomplete or contain inaccuracies. You expressly acknowledge and agree that use of the Covered Code, or any portion thereof, is at Your sole and entire risk. THE COVERED CODE IS PROVIDED "AS IS" AND WITHOUT WARRANTY, UPGRADES OR SUPPORT OF ANY KIND AND APPLE AND APPLE'S LICENSOR(S) (COLLECTIVELY REFERRED TO AS "APPLE" FOR THE PURPOSES OF SECTIONS 8 AND 9) AND ALL CONTRIBUTORS EXPRESSLY DISCLAIM ALL WARRANTIES AND/OR CONDITIONS, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES AND/OR CONDITIONS OF MERCHANTABILITY, OF SATISFACTORY QUALITY, OF FITNESS FOR A PARTICULAR PURPOSE, OF ACCURACY, OF QUIET ENJOYMENT, AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. APPLE AND EACH CONTRIBUTOR DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE COVERED CODE, THAT THE FUNCTIONS CONTAINED IN THE COVERED CODE WILL MEET YOUR REQUIREMENTS, THAT THE OPERATION OF THE COVERED CODE WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT DEFECTS IN THE COVERED CODE WILL BE CORRECTED. NO ORAL OR WRITTEN INFORMATION OR ADVICE GIVEN BY APPLE, AN APPLE AUTHORIZED REPRESENTATIVE OR ANY CONTRIBUTOR SHALL CREATE A WARRANTY. You acknowledge that the Covered Code is not intended for use in the operation of nuclear facilities, aircraft navigation, communication systems, or air traffic control machines in which case the failure of the Covered Code could lead to death, personal injury, or severe physical or environmental damage. - -9. LIMITATION OF LIABILITY. TO THE EXTENT NOT PROHIBITED BY LAW, IN NO EVENT SHALL APPLE OR ANY CONTRIBUTOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR RELATING TO THIS LICENSE OR YOUR USE OR INABILITY TO USE THE COVERED CODE, OR ANY PORTION THEREOF, WHETHER UNDER A THEORY OF CONTRACT, WARRANTY, TORT (INCLUDING NEGLIGENCE), PRODUCTS LIABILITY OR OTHERWISE, EVEN IF APPLE OR SUCH CONTRIBUTOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES AND NOTWITHSTANDING THE FAILURE OF ESSENTIAL PURPOSE OF ANY REMEDY. SOME JURISDICTIONS DO NOT ALLOW THE LIMITATION OF LIABILITY OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS LIMITATION MAY NOT APPLY TO YOU. In no event shall Apple's total liability to You for all damages (other than as may be required by applicable law) under this License exceed the amount of fifty dollars ($50.00). - -10. Trademarks. This License does not grant any rights to use the trademarks or trade names "Apple", "Apple Computer", "Mac OS X", "Mac OS X Server", "QuickTime", "QuickTime Streaming Server" or any other trademarks or trade names belonging to Apple (collectively "Apple Marks") or to any trademark or trade name belonging to any Contributor. No Apple Marks may be used to endorse or promote products derived from the Original Code other than as permitted by and in strict compliance at all times with Apple's third party trademark usage guidelines which are posted at http://www.apple.com/legal/guidelinesfor3rdparties.html. - -11. Ownership. Subject to the licenses granted under this License, each Contributor retains all rights, title and interest in and to any Modifications made by such Contributor. Apple retains all rights, title and interest in and to the Original Code and any Modifications made by or on behalf of Apple ("Apple Modifications"), and such Apple Modifications will not be automatically subject to this License. Apple may, at its sole discretion, choose to license such Apple Modifications under this License, or on different terms from those contained in this License or may choose not to license them at all. - -12. Termination. - -12.1 Termination. This License and the rights granted hereunder will -terminate: - -(a) automatically without notice from Apple if You fail to comply with any -term(s) of this License and fail to cure such breach within 30 days of -becoming aware of such breach; - -(b) immediately in the event of the circumstances described in Section -13.5(b); or - -(c) automatically without notice from Apple if You, at any time during the -term of this License, commence an action for patent infringement against -Apple. - -12.2 Effect of Termination. Upon termination, You agree to immediately stop -any further use, reproduction, modification, sublicensing and distribution of -the Covered Code and to destroy all copies of the Covered Code that are in -your possession or control. All sublicenses to the Covered Code which have -been properly granted prior to termination shall survive any termination of -this License. Provisions which, by their nature, should remain in effect -beyond the termination of this License shall survive, including but not -limited to Sections 3, 5, 8, 9, 10, 11, 12.2 and 13. No party will be liable -to any other for compensation, indemnity or damages of any sort solely as a -result of terminating this License in accordance with its terms, and -termination of this License will be without prejudice to any other right or -remedy of any party. - -13. Miscellaneous. - -13.1 Government End Users. The Covered Code is a "commercial item" as defined -in FAR 2.101. Government software and technical data rights in the Covered -Code include only those rights customarily provided to the public as defined -in this License. This customary commercial license in technical data and -software is provided in accordance with FAR 12.211 (Technical Data) and 12.212 -(Computer Software) and, for Department of Defense purchases, DFAR -252.227-7015 (Technical Data -- Commercial Items) and 227.7202-3 (Rights in -Commercial Computer Software or Computer Software Documentation). Accordingly, -all U.S. Government End Users acquire Covered Code with only those rights set -forth herein. - -13.2 Relationship of Parties. This License will not be construed as creating -an agency, partnership, joint venture or any other form of legal association -between or amongYou, Apple or any Contributor, and You will not represent to -the contrary, whether expressly, by implication, appearance or otherwise. - -13.3 Independent Development. Nothing in this License will impair Apple's -right to acquire, license, develop, have others develop for it, market and/or -distribute technology or products that perform the same or similar functions -as, or otherwise compete with, Modifications, Larger Works, technology or -products that You may develop, produce, market or distribute. - -13.4 Waiver; Construction. Failure by Apple or any Contributor to enforce any -provision of this License will not be deemed a waiver of future enforcement of -that or any other provision. Any law or regulation which provides that the -language of a contract shall be construed against the drafter will not apply -to this License. - -13.5 Severability. (a) If for any reason a court of competent jurisdiction -finds any provision of this License, or portion thereof, to be unenforceable, -that provision of the License will be enforced to the maximum extent -permissible so as to effect the economic benefits and intent of the parties, -and the remainder of this License will continue in full force and effect. (b) -Notwithstanding the foregoing, if applicable law prohibits or restricts You -from fully and/or specifically complying with Sections 2 and/or 3 or prevents -the enforceability of either of those Sections, this License will immediately -terminate and You must immediately discontinue any use of the Covered Code and -destroy all copies of it that are in your possession or control. - -13.6 Dispute Resolution. Any litigation or other dispute resolution between -You and Apple relating to this License shall take place in the Northern -District of California, and You and Apple hereby consent to the personal -jurisdiction of, and venue in, the state and federal courts within that -District with respect to this License. The application of the United Nations -Convention on Contracts for the International Sale of Goods is expressly -excluded. - -13.7 Entire Agreement; Governing Law. This License constitutes the entire -agreement between the parties with respect to the subject matter hereof. This -License shall be governed by the laws of the United States and the State of -California, except that body of California law concerning conflicts of law. - -Where You are located in the province of Quebec, Canada, the following clause -applies: The parties hereby confirm that they have requested that this License -and all related documents be drafted in English. Les parties ont exigé que le -présent contrat et tous les documents connexes soient rédigés en anglais. - -EXHIBIT A. - -"Portions Copyright (c) 1999-2001 Apple Computer, Inc. All Rights Reserved. - -This file contains Original Code and/or Modifications of Original Code as -defined in and that are subject to the Apple Public Source License Version 1.2 -(the 'License'). You may not use this file except in compliance with -the License. Please obtain a copy of the License at -http://www.apple.com/publicsource and read it before using this file. - -The Original Code and all software distributed under the License are -distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, -INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. Please see the -License for the specific language governing rights and limitations under the -License." - diff --git a/vendor/github.com/google/licenseclassifier/licenses/APSL-2.0.header.txt b/vendor/github.com/google/licenseclassifier/licenses/APSL-2.0.header.txt deleted file mode 100644 index 00a36c1..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/APSL-2.0.header.txt +++ /dev/null @@ -1,14 +0,0 @@ -Portions Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved. - -This file contains Original Code and/or Modifications of Original Code as -defined in and that are subject to the Apple Public Source License Version 2.0 -(the 'License'). You may not use this file except in compliance with the -License. Please obtain a copy of the License at -http://www.opensource.apple.com/apsl/ and read it before using this file. - -The Original Code and all software distributed under the License are distributed -on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, -AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, -ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET -ENJOYMENT OR NON-INFRINGEMENT. Please see the License for the specific language -governing rights an limitations under the License." diff --git a/vendor/github.com/google/licenseclassifier/licenses/APSL-2.0.txt b/vendor/github.com/google/licenseclassifier/licenses/APSL-2.0.txt deleted file mode 100644 index dfe34bb..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/APSL-2.0.txt +++ /dev/null @@ -1,252 +0,0 @@ -APPLE PUBLIC SOURCE LICENSE - -Version 2.0 - August 6, 2003 - -Please read this License carefully before downloading this software. By -downloading or using this software, you are agreeing to be bound by the terms -of this License. If you do not or cannot agree to the terms of this License, -please do not download or use the software. - -Apple Note: In January 2007, Apple changed its corporate name from "Apple -Computer, Inc." to "Apple Inc." This change has been reflected below and -copyright years updated, but no other changes have been made to the APSL 2.0. - -1. General; Definitions. This License applies to any program or other work which Apple Inc. ("Apple") makes publicly available and which contains a notice placed by Apple identifying such program or work as "Original Code" and stating that it is subject to the terms of this Apple Public Source License version 2.0 ("License"). As used in this License: - -1.1 "Applicable Patent Rights" mean: (a) in the case where Apple is the -grantor of rights, (i) claims of patents that are now or hereafter acquired, -owned by or assigned to Apple and (ii) that cover subject matter contained in -the Original Code, but only to the extent necessary to use, reproduce and/or -distribute the Original Code without infringement; and (b) in the case where -You are the grantor of rights, (i) claims of patents that are now or hereafter -acquired, owned by or assigned to You and (ii) that cover subject matter in -Your Modifications, taken alone or in combination with Original Code. - -1.2 "Contributor" means any person or entity that creates or contributes to -the creation of Modifications. - -1.3 "Covered Code" means the Original Code, Modifications, the combination of -Original Code and any Modifications, and/or any respective portions thereof. - -1.4 "Externally Deploy" means: (a) to sublicense, distribute or otherwise make -Covered Code available, directly or indirectly, to anyone other than You; -and/or (b) to use Covered Code, alone or as part of a Larger Work, in any way -to provide a service, including but not limited to delivery of content, -through electronic communication with a client other than You. - -1.5 "Larger Work" means a work which combines Covered Code or portions thereof -with code not governed by the terms of this License. - -1.6 "Modifications" mean any addition to, deletion from, and/or change to, the -substance and/or structure of the Original Code, any previous Modifications, -the combination of Original Code and any previous Modifications, and/or any -respective portions thereof. When code is released as a series of files, a -Modification is: (a) any addition to or deletion from the contents of a file -containing Covered Code; and/or (b) any new file or other representation of -computer program statements that contains any part of Covered Code. - -1.7 "Original Code" means (a) the Source Code of a program or other work as -originally made available by Apple under this License, including the Source -Code of any updates or upgrades to such programs or works made available by -Apple under this License, and that has been expressly identified by Apple as -such in the header file(s) of such work; and (b) the object code compiled from -such Source Code and originally made available by Apple under this License - -1.8 "Source Code" means the human readable form of a program or other work -that is suitable for making modifications to it, including all modules it -contains, plus any associated interface definition files, scripts used to -control compilation and installation of an executable (object code). - -1.9 "You" or "Your" means an individual or a legal entity exercising rights -under this License. For legal entities, "You" or "Your" includes any entity -which controls, is controlled by, or is under common control with, You, where -"control" means (a) the power, direct or indirect, to cause the direction or -management of such entity, whether by contract or otherwise, or (b) ownership -of fifty percent (50%) or more of the outstanding shares or beneficial -ownership of such entity. - -2. Permitted Uses; Conditions & Restrictions. Subject to the terms and conditions of this License, Apple hereby grants You, effective on the date You accept this License and download the Original Code, a world-wide, royalty-free, non-exclusive license, to the extent of Apple's Applicable Patent Rights and copyrights covering the Original Code, to do the following: - -2.1 Unmodified Code. You may use, reproduce, display, perform, internally -distribute within Your organization, and Externally Deploy verbatim, -unmodified copies of the Original Code, for commercial or non-commercial -purposes, provided that in each instance: - -(a) You must retain and reproduce in all copies of Original Code the copyright -and other proprietary notices and disclaimers of Apple as they appear in the -Original Code, and keep intact all notices in the Original Code that refer to -this License; and - -(b) You must include a copy of this License with every copy of Source Code of -Covered Code and documentation You distribute or Externally Deploy, and You -may not offer or impose any terms on such Source Code that alter or restrict -this License or the recipients' rights hereunder, except as permitted -under Section 6. - -2.2 Modified Code. You may modify Covered Code and use, reproduce, display, -perform, internally distribute within Your organization, and Externally Deploy -Your Modifications and Covered Code, for commercial or non-commercial -purposes, provided that in each instance You also meet all of these -conditions: - -(a) You must satisfy all the conditions of Section 2.1 with respect to the -Source Code of the Covered Code; - -(b) You must duplicate, to the extent it does not already exist, the notice in -Exhibit A in each file of the Source Code of all Your Modifications, and cause -the modified files to carry prominent notices stating that You changed the -files and the date of any change; and - -(c) If You Externally Deploy Your Modifications, You must make Source Code of -all Your Externally Deployed Modifications either available to those to whom -You have Externally Deployed Your Modifications, or publicly available. Source -Code of Your Externally Deployed Modifications must be released under the -terms set forth in this License, including the license grants set forth in -Section 3 below, for as long as you Externally Deploy the Covered Code or -twelve (12) months from the date of initial External Deployment, whichever is -longer. You should preferably distribute the Source Code of Your Externally -Deployed Modifications electronically (e.g. download from a web site). - -2.3 Distribution of Executable Versions. In addition, if You Externally Deploy -Covered Code (Original Code and/or Modifications) in object code, executable -form only, You must include a prominent notice, in the code itself as well as -in related documentation, stating that Source Code of the Covered Code is -available under the terms of this License with information on how and where to -obtain such Source Code. - -2.4 Third Party Rights. You expressly acknowledge and agree that although -Apple and each Contributor grants the licenses to their respective portions of -the Covered Code set forth herein, no assurances are provided by Apple or any -Contributor that the Covered Code does not infringe the patent or other -intellectual property rights of any other entity. Apple and each Contributor -disclaim any liability to You for claims brought by any other entity based on -infringement of intellectual property rights or otherwise. As a condition to -exercising the rights and licenses granted hereunder, You hereby assume sole -responsibility to secure any other intellectual property rights needed, if -any. For example, if a third party patent license is required to allow You to -distribute the Covered Code, it is Your responsibility to acquire that license -before distributing the Covered Code. - -3. Your Grants. In consideration of, and as a condition to, the licenses granted to You under this License, You hereby grant to any person or entity receiving or distributing Covered Code under this License a non-exclusive, royalty-free, perpetual, irrevocable license, under Your Applicable Patent Rights and other intellectual property rights (other than patent) owned or controlled by You, to use, reproduce, display, perform, modify, sublicense, distribute and Externally Deploy Your Modifications of the same scope and extent as Apple's licenses under Sections 2.1 and 2.2 above. - -4. Larger Works. You may create a Larger Work by combining Covered Code with other code not governed by the terms of this License and distribute the Larger Work as a single product. In each such instance, You must make sure the requirements of this License are fulfilled for the Covered Code or any portion thereof. - -5. Limitations on Patent License. Except as expressly stated in Section 2, no other patent rights, express or implied, are granted by Apple herein. Modifications and/or Larger Works may require additional patent licenses from Apple which Apple may grant in its sole discretion. - -6. Additional Terms. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations and/or other rights consistent with the scope of the license granted herein ("Additional Terms") to one or more recipients of Covered Code. However, You may do so only on Your own behalf and as Your sole responsibility, and not on behalf of Apple or any Contributor. You must obtain the recipient's agreement that any such Additional Terms are offered by You alone, and You hereby agree to indemnify, defend and hold Apple and every Contributor harmless for any liability incurred by or claims asserted against Apple or such Contributor by reason of any such Additional Terms. - -7. Versions of the License. Apple may publish revised and/or new versions of this License from time to time. Each version will be given a distinguishing version number. Once Original Code has been published under a particular version of this License, You may continue to use it under the terms of that version. You may also choose to use such Original Code under the terms of any subsequent version of this License published by Apple. No one other than Apple has the right to modify the terms applicable to Covered Code created under this License. - -8. NO WARRANTY OR SUPPORT. The Covered Code may contain in whole or in part pre-release, untested, or not fully tested works. The Covered Code may contain errors that could cause failures or loss of data, and may be incomplete or contain inaccuracies. You expressly acknowledge and agree that use of the Covered Code, or any portion thereof, is at Your sole and entire risk. THE COVERED CODE IS PROVIDED "AS IS" AND WITHOUT WARRANTY, UPGRADES OR SUPPORT OF ANY KIND AND APPLE AND APPLE'S LICENSOR(S) (COLLECTIVELY REFERRED TO AS "APPLE" FOR THE PURPOSES OF SECTIONS 8 AND 9) AND ALL CONTRIBUTORS EXPRESSLY DISCLAIM ALL WARRANTIES AND/OR CONDITIONS, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES AND/OR CONDITIONS OF MERCHANTABILITY, OF SATISFACTORY QUALITY, OF FITNESS FOR A PARTICULAR PURPOSE, OF ACCURACY, OF QUIET ENJOYMENT, AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. APPLE AND EACH CONTRIBUTOR DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE COVERED CODE, THAT THE FUNCTIONS CONTAINED IN THE COVERED CODE WILL MEET YOUR REQUIREMENTS, THAT THE OPERATION OF THE COVERED CODE WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT DEFECTS IN THE COVERED CODE WILL BE CORRECTED. NO ORAL OR WRITTEN INFORMATION OR ADVICE GIVEN BY APPLE, AN APPLE AUTHORIZED REPRESENTATIVE OR ANY CONTRIBUTOR SHALL CREATE A WARRANTY. You acknowledge that the Covered Code is not intended for use in the operation of nuclear facilities, aircraft navigation, communication systems, or air traffic control machines in which case the failure of the Covered Code could lead to death, personal injury, or severe physical or environmental damage. - -9. LIMITATION OF LIABILITY. TO THE EXTENT NOT PROHIBITED BY LAW, IN NO EVENT SHALL APPLE OR ANY CONTRIBUTOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR RELATING TO THIS LICENSE OR YOUR USE OR INABILITY TO USE THE COVERED CODE, OR ANY PORTION THEREOF, WHETHER UNDER A THEORY OF CONTRACT, WARRANTY, TORT (INCLUDING NEGLIGENCE), PRODUCTS LIABILITY OR OTHERWISE, EVEN IF APPLE OR SUCH CONTRIBUTOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES AND NOTWITHSTANDING THE FAILURE OF ESSENTIAL PURPOSE OF ANY REMEDY. SOME JURISDICTIONS DO NOT ALLOW THE LIMITATION OF LIABILITY OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS LIMITATION MAY NOT APPLY TO YOU. In no event shall Apple's total liability to You for all damages (other than as may be required by applicable law) under this License exceed the amount of fifty dollars ($50.00). - -10. Trademarks. This License does not grant any rights to use the trademarks or trade names "Apple", "Mac", "Mac OS", "QuickTime", "QuickTime Streaming Server" or any other trademarks, service marks, logos or trade names belonging to Apple (collectively "Apple Marks") or to any trademark, service mark, logo or trade name belonging to any Contributor. You agree not to use any Apple Marks in or as part of the name of products derived from the Original Code or to endorse or promote products derived from the Original Code other than as expressly permitted by and in strict compliance at all times with Apple's third party trademark usage guidelines which are posted at http://www.apple.com/legal/guidelinesfor3rdparties.html. - -11. Ownership. Subject to the licenses granted under this License, each Contributor retains all rights, title and interest in and to any Modifications made by such Contributor. Apple retains all rights, title and interest in and to the Original Code and any Modifications made by or on behalf of Apple ("Apple Modifications"), and such Apple Modifications will not be automatically subject to this License. Apple may, at its sole discretion, choose to license such Apple Modifications under this License, or on different terms from those contained in this License or may choose not to license them at all. - -12. Termination. - -12.1 Termination. This License and the rights granted hereunder will -terminate: - -(a) automatically without notice from Apple if You fail to comply with any -term(s) of this License and fail to cure such breach within 30 days of -becoming aware of such breach; - -(b) immediately in the event of the circumstances described in Section -13.5(b); or - -(c) automatically without notice from Apple if You, at any time during the -term of this License, commence an action for patent infringement against -Apple; provided that Apple did not first commence an action for patent -infringement against You in that instance. - -12.2 Effect of Termination. Upon termination, You agree to immediately stop -any further use, reproduction, modification, sublicensing and distribution of -the Covered Code. All sublicenses to the Covered Code which have been properly -granted prior to termination shall survive any termination of this License. -Provisions which, by their nature, should remain in effect beyond the -termination of this License shall survive, including but not limited to -Sections 3, 5, 8, 9, 10, 11, 12.2 and 13. No party will be liable to any other -for compensation, indemnity or damages of any sort solely as a result of -terminating this License in accordance with its terms, and termination of this -License will be without prejudice to any other right or remedy of any party. - -13. Miscellaneous. - -13.1 Government End Users. The Covered Code is a "commercial item" as defined -in FAR 2.101. Government software and technical data rights in the Covered -Code include only those rights customarily provided to the public as defined -in this License. This customary commercial license in technical data and -software is provided in accordance with FAR 12.211 (Technical Data) and 12.212 -(Computer Software) and, for Department of Defense purchases, DFAR -252.227-7015 (Technical Data -- Commercial Items) and 227.7202-3 (Rights in -Commercial Computer Software or Computer Software Documentation). Accordingly, -all U.S. Government End Users acquire Covered Code with only those rights set -forth herein. - -13.2 Relationship of Parties. This License will not be construed as creating -an agency, partnership, joint venture or any other form of legal association -between or among You, Apple or any Contributor, and You will not represent to -the contrary, whether expressly, by implication, appearance or otherwise. - -13.3 Independent Development. Nothing in this License will impair Apple's -right to acquire, license, develop, have others develop for it, market and/or -distribute technology or products that perform the same or similar functions -as, or otherwise compete with, Modifications, Larger Works, technology or -products that You may develop, produce, market or distribute. - -13.4 Waiver; Construction. Failure by Apple or any Contributor to enforce any -provision of this License will not be deemed a waiver of future enforcement of -that or any other provision. Any law or regulation which provides that the -language of a contract shall be construed against the drafter will not apply -to this License. - -13.5 Severability. (a) If for any reason a court of competent jurisdiction -finds any provision of this License, or portion thereof, to be unenforceable, -that provision of the License will be enforced to the maximum extent -permissible so as to effect the economic benefits and intent of the parties, -and the remainder of this License will continue in full force and effect. (b) -Notwithstanding the foregoing, if applicable law prohibits or restricts You -from fully and/or specifically complying with Sections 2 and/or 3 or prevents -the enforceability of either of those Sections, this License will immediately -terminate and You must immediately discontinue any use of the Covered Code and -destroy all copies of it that are in your possession or control. - -13.6 Dispute Resolution. Any litigation or other dispute resolution between -You and Apple relating to this License shall take place in the Northern -District of California, and You and Apple hereby consent to the personal -jurisdiction of, and venue in, the state and federal courts within that -District with respect to this License. The application of the United Nations -Convention on Contracts for the International Sale of Goods is expressly -excluded. - -13.7 Entire Agreement; Governing Law. This License constitutes the entire -agreement between the parties with respect to the subject matter hereof. This -License shall be governed by the laws of the United States and the State of -California, except that body of California law concerning conflicts of law. - -Where You are located in the province of Quebec, Canada, the following clause -applies: The parties hereby confirm that they have requested that this License -and all related documents be drafted in English. Les parties ont exigé que le -présent contrat et tous les documents connexes soient rédigés en anglais. - -EXHIBIT A. - -"Portions Copyright (c) 1999-2007 Apple Inc. All Rights Reserved. - -This file contains Original Code and/or Modifications of Original Code as -defined in and that are subject to the Apple Public Source License Version 2.0 -(the 'License'). You may not use this file except in compliance with -the License. Please obtain a copy of the License at -http://www.opensource.apple.com/apsl/ and read it before using this file. - -The Original Code and all software distributed under the License are -distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, -INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. Please see the -License for the specific language governing rights and limitations under the -License." - diff --git a/vendor/github.com/google/licenseclassifier/licenses/Apache-1.0.txt b/vendor/github.com/google/licenseclassifier/licenses/Apache-1.0.txt deleted file mode 100644 index 4a50974..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/Apache-1.0.txt +++ /dev/null @@ -1,36 +0,0 @@ -Copyright (c) 1995-1999 The Apache Group. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - -2. 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. - -3. All advertising materials mentioning features or use of this software must display the following acknowledgment: "This product includes software developed by the Apache Group for use in the Apache HTTP server project (http://www.apache.org/) ." - -4. The "Apache" and "Apache Software Foundation" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact apache@apache.org - -5. Products derived from this software may not be called "Apache" nor may "Apache" appear in their name, without prior written permission of the Apache Group . - -6. Redistributions of any form whatsoever must retain the following acknowledgment: -"This product includes software developed by the Apache Group for use in the -Apache HTTP server project (http://www.apache.org/) . - -THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY -EXPRESSED 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 APACHE GROUP OR ITS 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. - -This software consists of voluntary contributions made by many individuals on -behalf of the Apache Group and was originally based on public domain software -written at the National Center for Supercomputing Applications, University of -Illinois, Urbana-Champaign. For more information on the Apache Group and the -Apache HTTP server project, please see . - diff --git a/vendor/github.com/google/licenseclassifier/licenses/Apache-1.1.txt b/vendor/github.com/google/licenseclassifier/licenses/Apache-1.1.txt deleted file mode 100644 index bb9c6a5..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/Apache-1.1.txt +++ /dev/null @@ -1,40 +0,0 @@ -Apache License 1.1 - -Copyright (c) 2000 The Apache Software Foundation. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - -2. 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. - -3. The end-user documentation included with the redistribution, if any, must include the following acknowledgment: -"This product includes software developed by the Apache Software Foundation -(http://www.apache.org/) ." - -Alternately, this acknowledgment may appear in the software itself, if and -wherever such third-party acknowledgments normally appear. - -4. The "Apache" and "Apache Software Foundation" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact apache@apache.org - -5. Products derived from this software may not be called "Apache" [ex. "Jakarta," "Apache," or "Apache Commons,"] nor may "Apache" [ex. the names] appear in their name, without prior written permission of the Apache Software Foundation . - -THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED 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 APACHE SOFTWARE FOUNDATION OR ITS 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. - -This software consists of voluntary contributions made by many individuals on -behalf of the Apache Software Foundation. For more information on the Apache -Software Foundation, please see http://www.apache.org/. Portions of this -software are based upon public domain software originally written at the -National Center for Supercomputing Applications, University of Illinois, -Urbana-Champaign. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/Apache-2.0.header.txt b/vendor/github.com/google/licenseclassifier/licenses/Apache-2.0.header.txt deleted file mode 100644 index 9fb6d8e..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/Apache-2.0.header.txt +++ /dev/null @@ -1,11 +0,0 @@ -Copyright [yyyy] [name of copyright owner] -Licensed under the Apache License, Version 2.0 (the "License"); you may not use -this file except in compliance with the License. You may obtain a copy of the -License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software distributed -under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR -CONDITIONS OF ANY KIND, either express or implied. See the License for the -specific language governing permissions and limitations under the License. diff --git a/vendor/github.com/google/licenseclassifier/licenses/Apache-2.0.txt b/vendor/github.com/google/licenseclassifier/licenses/Apache-2.0.txt deleted file mode 100644 index ebbf861..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/Apache-2.0.txt +++ /dev/null @@ -1,143 +0,0 @@ -Apache License - -Version 2.0, January 2004 - -http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - -"License" shall mean the terms and conditions for use, reproduction, and -distribution as defined by Sections 1 through 9 of this document. - -"Licensor" shall mean the copyright owner or entity authorized by the -copyright owner that is granting the License. - -"Legal Entity" shall mean the union of the acting entity and all other -entities that control, are controlled by, or are under common control with -that entity. For the purposes of this definition, "control" means (i) the -power, direct or indirect, to cause the direction or management of such -entity, whether by contract or otherwise, or (ii) ownership of fifty percent -(50%) or more of the outstanding shares, or (iii) beneficial ownership of such -entity. - -"You" (or "Your") shall mean an individual or Legal Entity exercising -permissions granted by this License. - -"Source" form shall mean the preferred form for making modifications, -including but not limited to software source code, documentation source, and -configuration files. - -"Object" form shall mean any form resulting from mechanical transformation or -translation of a Source form, including but not limited to compiled object -code, generated documentation, and conversions to other media types. - -"Work" shall mean the work of authorship, whether in Source or Object form, -made available under the License, as indicated by a copyright notice that is -included in or attached to the work (an example is provided in the Appendix -below). - -"Derivative Works" shall mean any work, whether in Source or Object form, that -is based on (or derived from) the Work and for which the editorial revisions, -annotations, elaborations, or other modifications represent, as a whole, an -original work of authorship. For the purposes of this License, Derivative -Works shall not include works that remain separable from, or merely link (or -bind by name) to the interfaces of, the Work and Derivative Works thereof. - -"Contribution" shall mean any work of authorship, including the original -version of the Work and any modifications or additions to that Work or -Derivative Works thereof, that is intentionally submitted to Licensor for -inclusion in the Work by the copyright owner or by an individual or Legal -Entity authorized to submit on behalf of the copyright owner. For the purposes -of this definition, "submitted" means any form of electronic, verbal, or -written communication sent to the Licensor or its representatives, including -but not limited to communication on electronic mailing lists, source code -control systems, and issue tracking systems that are managed by, or on behalf -of, the Licensor for the purpose of discussing and improving the Work, but -excluding communication that is conspicuously marked or otherwise designated -in writing by the copyright owner as "Not a Contribution." - -"Contributor" shall mean Licensor and any individual or Legal Entity on behalf -of whom a Contribution has been received by Licensor and subsequently -incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor 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, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: - -(a) You must give any other recipients of the Work or Derivative Works a copy -of this License; and - -(b) You must cause any modified files to carry prominent notices stating that -You changed the files; and - -(c) You must retain, in the Source form of any Derivative Works that You -distribute, all copyright, patent, trademark, and attribution notices from the -Source form of the Work, excluding those notices that do not pertain to any -part of the Derivative Works; and - -(d) If the Work includes a "NOTICE" text file as part of its distribution, -then any Derivative Works that You distribute must include a readable copy of -the attribution notices contained within such NOTICE file, excluding those -notices that do not pertain to any part of the Derivative Works, in at least -one of the following places: within a NOTICE text file distributed as part of -the Derivative Works; within the Source form or documentation, if provided -along with the Derivative Works; or, within a display generated by the -Derivative Works, if and wherever such third-party notices normally appear. -The contents of the NOTICE file are for informational purposes only and do not -modify the License. You may add Your own attribution notices within Derivative -Works that You distribute, alongside or as an addendum to the NOTICE text from -the Work, provided that such additional attribution notices cannot be -construed as modifying the License. - -You may add Your own copyright statement to Your modifications and may provide -additional or different license terms and conditions for use, reproduction, or -distribution of Your modifications, or for any such Derivative Works as a -whole, provided Your use, reproduction, and distribution of the Work otherwise -complies with the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -APPENDIX: How to apply the Apache License to your work. - -To apply the Apache License to your work, attach the following boilerplate -notice, with the fields enclosed by brackets "[]" replaced with your own -identifying information. (Don't include the brackets!) The text should be -enclosed in the appropriate comment syntax for the file format. We also -recommend that a file or class name and description of purpose be included on -the same "printed page" as the copyright notice for easier identification -within third-party archives. - -Copyright [yyyy] [name of copyright owner] - -Licensed under the Apache License, Version 2.0 (the "License"); - -you may not use this file except in compliance with the License. - -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software - -distributed under the License is distributed on an "AS IS" BASIS, - -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - -See the License for the specific language governing permissions and - -limitations under the License. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/Artistic-1.0-Perl.txt b/vendor/github.com/google/licenseclassifier/licenses/Artistic-1.0-Perl.txt deleted file mode 100644 index f280445..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/Artistic-1.0-Perl.txt +++ /dev/null @@ -1,85 +0,0 @@ -The "Artistic License" - -Preamble - -The intent of this document is to state the conditions under which a Package -may be copied, such that the Copyright Holder maintains some semblance of -artistic control over the development of the package, while giving the users -of the package the right to use and distribute the Package in a more-or-less -customary fashion, plus the right to make reasonable modifications. - -Definitions: - -"Package" refers to the collection of files distributed by the Copyright -Holder, and derivatives of that collection of files created through textual -modification. - -"Standard Version" refers to such a Package if it has not been modified, or -has been modified in accordance with the wishes of the Copyright Holder as -specified below. - -"Copyright Holder" is whoever is named in the copyright or copyrights for the -package. - -"You" is you, if you're thinking about copying or distributing this -Package. - -"Reasonable copying fee" is whatever you can justify on the basis of media -cost, duplication charges, time of people involved, and so on. (You will not -be required to justify it to the Copyright Holder, but only to the computing -community at large as a market that must bear the fee.) - -"Freely Available" means that no fee is charged for the item itself, though -there may be fees involved in handling the item. It also means that recipients -of the item may redistribute it under the same conditions they received it. - -1. You may make and give away verbatim copies of the source form of the Standard Version of this Package without restriction, provided that you duplicate all of the original copyright notices and associated disclaimers. - -2. You may apply bug fixes, portability fixes and other modifications derived from the Public Domain or from the Copyright Holder. A Package modified in such a way shall still be considered the Standard Version. - -3. You may otherwise modify your copy of this Package in any way, provided that you insert a prominent notice in each changed file stating how and when you changed that file, and provided that you do at least ONE of the following: - -a) place your modifications in the Public Domain or otherwise make them Freely -Available, such as by posting said modifications to Usenet or an equivalent -medium, or placing the modifications on a major archive site such as -uunet.uu.net, or by allowing the Copyright Holder to include your -modifications in the Standard Version of the Package. - -b) use the modified Package only within your corporation or organization. - -c) rename any non-standard executables so the names do not conflict with -standard executables, which must also be provided, and provide a separate -manual page for each non-standard executable that clearly documents how it -differs from the Standard Version. - -d) make other distribution arrangements with the Copyright Holder. - -4. You may distribute the programs of this Package in object code or executable form, provided that you do at least ONE of the following: - -a) distribute a Standard Version of the executables and library files, -together with instructions (in the manual page or equivalent) on where to get -the Standard Version. - -b) accompany the distribution with the machine-readable source of the Package -with your modifications. - -c) give non-standard executables non-standard names, and clearly document the -differences in manual pages (or equivalent), together with instructions on -where to get the Standard Version. - -d) make other distribution arrangements with the Copyright Holder. - -5. You may charge a reasonable copying fee for any distribution of this Package. You may charge any fee you choose for support of this Package. You may not charge a fee for this Package itself. However, you may distribute this Package in aggregate with other (possibly commercial) programs as part of a larger (possibly commercial) software distribution provided that you do not advertise this Package as a product of your own. You may embed this Package's interpreter within an executable of yours (by linking); this shall be construed as a mere form of aggregation, provided that the complete Standard Version of the interpreter is so embedded. - -6. The scripts and library files supplied as input to or produced as output from the programs of this Package do not automatically fall under the copyright of this Package, but belong to whoever generated them, and may be sold commercially, and may be aggregated with this Package. If such scripts or library files are aggregated with this Package via the so-called "undump" or "unexec" methods of producing a binary executable image, then distribution of such an image shall neither be construed as a distribution of this Package nor shall it fall under the restrictions of Paragraphs 3 and 4, provided that you do not represent such an executable image as a Standard Version of this Package. - -7. C subroutines (or comparably compiled subroutines in other languages) supplied by you and linked into this Package in order to emulate subroutines and variables of the language defined by this Package shall not be considered part of this Package, but are the equivalent of input as in Paragraph 6, provided these subroutines do not change the language in any way that would cause it to fail the regression tests for the language. - -8. Aggregation of this Package with a commercial distribution is always permitted provided that the use of this Package is embedded; that is, when no overt attempt is made to make this Package's interfaces visible to the end user of the commercial distribution. Such use shall not be construed as a distribution of this Package. - -9. The name of the Copyright Holder may not be used to endorse or promote products derived from this software without specific prior written permission. - -10. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. - -The End - diff --git a/vendor/github.com/google/licenseclassifier/licenses/Artistic-1.0-cl8.txt b/vendor/github.com/google/licenseclassifier/licenses/Artistic-1.0-cl8.txt deleted file mode 100644 index 64374c9..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/Artistic-1.0-cl8.txt +++ /dev/null @@ -1,89 +0,0 @@ -The Artistic License - -Preamble - -The intent of this document is to state the conditions under which a Package -may be copied, such that the Copyright Holder maintains some semblance of -artistic control over the development of the package, while giving the users -of the package the right to use and distribute the Package in a more-or-less -customary fashion, plus the right to make reasonable modifications. - -Definitions: - -"Package" refers to the collection of files distributed by the Copyright -Holder, and derivatives of that collection of files created through textual -modification. - -"Standard Version" refers to such a Package if it has not been modified, or -has been modified in accordance with the wishes of the Copyright Holder. - -"Copyright Holder" is whoever is named in the copyright or copyrights for the -package. - -"You" is you, if you're thinking about copying or distributing this -Package. - -"Reasonable copying fee" is whatever you can justify on the basis of media -cost, duplication charges, time of people involved, and so on. (You will not -be required to justify it to the Copyright Holder, but only to the computing -community at large as a market that must bear the fee.) - -"Freely Available" means that no fee is charged for the item itself, though -there may be fees involved in handling the item. It also means that recipients -of the item may redistribute it under the same conditions they received it. - -1. You may make and give away verbatim copies of the source form of the Standard Version of this Package without restriction, provided that you duplicate all of the original copyright notices and associated disclaimers. - -2. You may apply bug fixes, portability fixes and other modifications derived from the Public Domain or from the Copyright Holder. A Package modified in such a way shall still be considered the Standard Version. - -3. You may otherwise modify your copy of this Package in any way, provided that you insert a prominent notice in each changed file stating how and when you changed that file, and provided that you do at least ONE of the following: - -a) place your modifications in the Public Domain or otherwise make them Freely -Available, such as by posting said modifications to Usenet or an equivalent -medium, or placing the modifications on a major archive site such as -ftp.uu.net, or by allowing the Copyright Holder to include your modifications -in the Standard Version of the Package. - -b) use the modified Package only within your corporation or organization. - -c) rename any non-standard executables so the names do not conflict with -standard executables, which must also be provided, and provide a separate -manual page for each non-standard executable that clearly documents how it -differs from the Standard Version. - -d) make other distribution arrangements with the Copyright Holder. - -4. You may distribute the programs of this Package in object code or executable form, provided that you do at least ONE of the following: - -a) distribute a Standard Version of the executables and library files, -together with instructions (in the manual page or equivalent) on where to get -the Standard Version. - -b) accompany the distribution with the machine-readable source of the Package -with your modifications. - -c) accompany any non-standard executables with their corresponding Standard -Version executables, giving the non-standard executables non-standard names, -and clearly documenting the differences in manual pages (or equivalent), -together with instructions on where to get the Standard Version. - -d) make other distribution arrangements with the Copyright Holder. - -5. You may charge a reasonable copying fee for any distribution of this Package. You may charge any fee you choose for support of this Package. You may not charge a fee for this Package itself. However, you may distribute this Package in aggregate with other (possibly commercial) programs as part of a larger (possibly commercial) software distribution provided that you do not advertise this Package as a product of your own. - -6. The scripts and library files supplied as input to or produced as output from the programs of this Package do not automatically fall under the copyright of this Package, but belong to whomever generated them, and may be sold commercially, and may be aggregated with this Package. - -7. C or perl subroutines supplied by you and linked into this Package shall not be considered part of this Package. - -8.Aggregation of this Package with a commercial distribution is always -permitted provided that the use of this Package is embedded; that is, when no -overt attempt is made to make this Package's interfaces visible to the -end user of the commercial distribution. Such use shall not be construed as a -distribution of this Package. - -9. The name of the Copyright Holder may not be used to endorse or promote products derived from this software without specific prior written permission. - -10. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. - -The End - diff --git a/vendor/github.com/google/licenseclassifier/licenses/Artistic-1.0.txt b/vendor/github.com/google/licenseclassifier/licenses/Artistic-1.0.txt deleted file mode 100644 index 2328baa..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/Artistic-1.0.txt +++ /dev/null @@ -1,83 +0,0 @@ -The Artistic License - -Preamble - -The intent of this document is to state the conditions under which a Package -may be copied, such that the Copyright Holder maintains some semblance of -artistic control over the development of the package, while giving the users -of the package the right to use and distribute the Package in a more-or-less -customary fashion, plus the right to make reasonable modifications. - -Definitions: - -"Package" refers to the collection of files distributed by the Copyright -Holder, and derivatives of that collection of files created through textual -modification. - -"Standard Version" refers to such a Package if it has not been modified, or -has been modified in accordance with the wishes of the Copyright Holder. - -"Copyright Holder" is whoever is named in the copyright or copyrights for the -package. - -"You" is you, if you're thinking about copying or distributing this -Package. - -"Reasonable copying fee" is whatever you can justify on the basis of media -cost, duplication charges, time of people involved, and so on. (You will not -be required to justify it to the Copyright Holder, but only to the computing -community at large as a market that must bear the fee.) - -"Freely Available" means that no fee is charged for the item itself, though -there may be fees involved in handling the item. It also means that recipients -of the item may redistribute it under the same conditions they received it. - -1. You may make and give away verbatim copies of the source form of the Standard Version of this Package without restriction, provided that you duplicate all of the original copyright notices and associated disclaimers. - -2. You may apply bug fixes, portability fixes and other modifications derived from the Public Domain or from the Copyright Holder. A Package modified in such a way shall still be considered the Standard Version. - -3. You may otherwise modify your copy of this Package in any way, provided that you insert a prominent notice in each changed file stating how and when you changed that file, and provided that you do at least ONE of the following: - -a) place your modifications in the Public Domain or otherwise make them Freely -Available, such as by posting said modifications to Usenet or an equivalent -medium, or placing the modifications on a major archive site such as -ftp.uu.net, or by allowing the Copyright Holder to include your modifications -in the Standard Version of the Package. - -b) use the modified Package only within your corporation or organization. - -c) rename any non-standard executables so the names do not conflict with -standard executables, which must also be provided, and provide a separate -manual page for each non-standard executable that clearly documents how it -differs from the Standard Version. - -d) make other distribution arrangements with the Copyright Holder. - -4. You may distribute the programs of this Package in object code or executable form, provided that you do at least ONE of the following: - -a) distribute a Standard Version of the executables and library files, -together with instructions (in the manual page or equivalent) on where to get -the Standard Version. - -b) accompany the distribution with the machine-readable source of the Package -with your modifications. - -c) accompany any non-standard executables with their corresponding Standard -Version executables, giving the non-standard executables non-standard names, -and clearly documenting the differences in manual pages (or equivalent), -together with instructions on where to get the Standard Version. - -d) make other distribution arrangements with the Copyright Holder. - -5. You may charge a reasonable copying fee for any distribution of this Package. You may charge any fee you choose for support of this Package. You may not charge a fee for this Package itself. However, you may distribute this Package in aggregate with other (possibly commercial) programs as part of a larger (possibly commercial) software distribution provided that you do not advertise this Package as a product of your own. - -6. The scripts and library files supplied as input to or produced as output from the programs of this Package do not automatically fall under the copyright of this Package, but belong to whomever generated them, and may be sold commercially, and may be aggregated with this Package. - -7. C or perl subroutines supplied by you and linked into this Package shall not be considered part of this Package. - -8. The name of the Copyright Holder may not be used to endorse or promote products derived from this software without specific prior written permission. - -9. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. - -The End - diff --git a/vendor/github.com/google/licenseclassifier/licenses/Artistic-2.0.txt b/vendor/github.com/google/licenseclassifier/licenses/Artistic-2.0.txt deleted file mode 100644 index 052ddbe..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/Artistic-2.0.txt +++ /dev/null @@ -1,181 +0,0 @@ -The Artistic License 2.0 - -Copyright (c) 2000-2006, The Perl Foundation. - -Everyone is permitted to copy and distribute verbatim copies of this license -document, but changing it is not allowed. - -Preamble - -This license establishes the terms under which a given free software Package -may be copied, modified, distributed, and/or redistributed. The intent is that -the Copyright Holder maintains some artistic control over the development of -that Package while still keeping the Package available as open source and free -software. - -You are always permitted to make arrangements wholly outside of this license -directly with the Copyright Holder of a given Package. If the terms of this -license do not permit the full use that you propose to make of the Package, -you should contact the Copyright Holder and seek a different licensing -arrangement. - -Definitions - -"Copyright Holder" means the individual(s) or organization(s) named in the -copyright notice for the entire Package. - -"Contributor" means any party that has contributed code or other material to -the Package, in accordance with the Copyright Holder's procedures. - -"You" and "your" means any person who would like to copy, distribute, or -modify the Package. - -"Package" means the collection of files distributed by the Copyright Holder, -and derivatives of that collection and/or of those files. A given Package may -consist of either the Standard Version, or a Modified Version. - -"Distribute" means providing a copy of the Package or making it accessible to -anyone else, or in the case of a company or organization, to others outside of -your company or organization. - -"Distributor Fee" means any fee that you charge for Distributing this Package -or providing support for this Package to another party. It does not mean -licensing fees. - -"Standard Version" refers to the Package if it has not been modified, or has -been modified only in ways explicitly requested by the Copyright Holder. - -"Modified Version" means the Package, if it has been changed, and such changes -were not explicitly requested by the Copyright Holder. - -"Original License" means this Artistic License as Distributed with the -Standard Version of the Package, in its current version or as it may be -modified by The Perl Foundation in the future. - -"Source" form means the source code, documentation source, and configuration -files for the Package. - -"Compiled" form means the compiled bytecode, object code, binary, or any other -form resulting from mechanical transformation or translation of the Source -form. - -Permission for Use and Modification Without Distribution - -(1) You are permitted to use the Standard Version and create and use Modified -Versions for any purpose without restriction, provided that you do not -Distribute the Modified Version. - -Permissions for Redistribution of the Standard Version - -(2) You may Distribute verbatim copies of the Source form of the Standard -Version of this Package in any medium without restriction, either gratis or -for a Distributor Fee, provided that you duplicate all of the original -copyright notices and associated disclaimers. At your discretion, such -verbatim copies may or may not include a Compiled form of the Package. - -(3) You may apply any bug fixes, portability changes, and other modifications -made available from the Copyright Holder. The resulting Package will still be -considered the Standard Version, and as such will be subject to the Original -License. - -Distribution of Modified Versions of the Package as Source - -(4) You may Distribute your Modified Version as Source (either gratis or for a -Distributor Fee, and with or without a Compiled form of the Modified Version) -provided that you clearly document how it differs from the Standard Version, -including, but not limited to, documenting any non-standard features, -executables, or modules, and provided that you do at least ONE of the -following: - -(a) make the Modified Version available to the Copyright Holder of the -Standard Version, under the Original License, so that the Copyright Holder may -include your modifications in the Standard Version. - -(b) ensure that installation of your Modified Version does not prevent the -user installing or running the Standard Version. In addition, the Modified -Version must bear a name that is different from the name of the Standard -Version. - -(c) allow anyone who receives a copy of the Modified Version to make the -Source form of the Modified Version available to others under - -(i) the Original License or - -(ii) a license that permits the licensee to freely copy, modify and -redistribute the Modified Version using the same licensing terms that apply to -the copy that the licensee received, and requires that the Source form of the -Modified Version, and of any works derived from it, be made freely available -in that license fees are prohibited but Distributor Fees are allowed. - -Distribution of Compiled Forms of the Standard Version or Modified Versions -without the Source - -(5) You may Distribute Compiled forms of the Standard Version without the -Source, provided that you include complete instructions on how to get the -Source of the Standard Version. Such instructions must be valid at the time of -your distribution. If these instructions, at any time while you are carrying -out such distribution, become invalid, you must provide new instructions on -demand or cease further distribution. If you provide valid instructions or -cease distribution within thirty days after you become aware that the -instructions are invalid, then you do not forfeit any of your rights under -this license. - -(6) You may Distribute a Modified Version in Compiled form without the Source, -provided that you comply with Section 4 with respect to the Source of the -Modified Version. - -Aggregating or Linking the Package - -(7) You may aggregate the Package (either the Standard Version or Modified -Version) with other packages and Distribute the resulting aggregation provided -that you do not charge a licensing fee for the Package. Distributor Fees are -permitted, and licensing fees for other components in the aggregation are -permitted. The terms of this license apply to the use and Distribution of the -Standard or Modified Versions as included in the aggregation. - -(8) You are permitted to link Modified and Standard Versions with other works, -to embed the Package in a larger work of your own, or to build stand-alone -binary or bytecode versions of applications that include the Package, and -Distribute the result without restriction, provided the result does not expose -a direct interface to the Package. - -Items That are Not Considered Part of a Modified Version - -(9) Works (including, but not limited to, modules and scripts) that merely -extend or make use of the Package, do not, by themselves, cause the Package to -be a Modified Version. In addition, such works are not considered parts of the -Package itself, and are not subject to the terms of this license. - -General Provisions - -(10) Any use, modification, and distribution of the Standard or Modified -Versions is governed by this Artistic License. By using, modifying or -distributing the Package, you accept this license. Do not use, modify, or -distribute the Package, if you do not accept this license. - -(11) If your Modified Version has been derived from a Modified Version made by -someone other than you, you are nevertheless required to ensure that your -Modified Version complies with the requirements of this license. - -(12) This license does not grant you the right to use any trademark, service -mark, tradename, or logo of the Copyright Holder. - -(13) This license includes the non-exclusive, worldwide, free-of-charge patent -license to make, have made, use, offer to sell, sell, import and otherwise -transfer the Package with respect to any patent claims licensable by the -Copyright Holder that are necessarily infringed by the Package. If you -institute patent litigation (including a cross-claim or counterclaim) against -any party alleging that the Package constitutes direct or contributory patent -infringement, then this Artistic License to you shall terminate on the date -that such litigation is filed. - -(14) Disclaimer of Warranty: - -THE PACKAGE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS IS' -AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES. THE IMPLIED WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT ARE -DISCLAIMED TO THE EXTENT PERMITTED BY YOUR LOCAL LAW. UNLESS REQUIRED BY LAW, -NO COPYRIGHT HOLDER OR CONTRIBUTOR WILL BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING IN ANY WAY OUT OF THE USE OF THE -PACKAGE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/BCL.txt b/vendor/github.com/google/licenseclassifier/licenses/BCL.txt deleted file mode 100644 index 2269ac1..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/BCL.txt +++ /dev/null @@ -1,69 +0,0 @@ -Oracle Binary Code License Agreement for the Java SE Platform Products and JavaFX - -ORACLE AMERICA, INC. ("ORACLE"), FOR AND ON BEHALF OF ITSELF AND ITS SUBSIDIARIES AND AFFILIATES UNDER COMMON CONTROL, IS WILLING TO LICENSE THE SOFTWARE TO YOU ONLY UPON THE CONDITION THAT YOU ACCEPT ALL OF THE TERMS CONTAINED IN THIS BINARY CODE LICENSE AGREEMENT AND SUPPLEMENTAL LICENSE TERMS (COLLECTIVELY "AGREEMENT"). PLEASE READ THE AGREEMENT CAREFULLY. BY SELECTING THE "ACCEPT LICENSE AGREEMENT" (OR THE EQUIVALENT) BUTTON AND/OR BY USING THE SOFTWARE YOU ACKNOWLEDGE THAT YOU HAVE READ THE TERMS AND AGREE TO THEM. IF YOU ARE AGREEING TO THESE TERMS ON BEHALF OF A COMPANY OR OTHER LEGAL ENTITY, YOU REPRESENT THAT YOU HAVE THE LEGAL AUTHORITY TO BIND THE LEGAL ENTITY TO THESE TERMS. IF YOU DO NOT HAVE SUCH AUTHORITY, OR IF YOU DO NOT WISH TO BE BOUND BY THE TERMS, THEN SELECT THE "DECLINE LICENSE AGREEMENT" (OR THE EQUIVALENT) BUTTON AND YOU MUST NOT USE THE SOFTWARE ON THIS SITE OR ANY OTHER MEDIA ON WHICH THE SOFTWARE IS CONTAINED. - -1. DEFINITIONS. "Software" means the software identified above in binary form that you selected for download, install or use (in the version You selected for download, install or use) from Oracle or its authorized licensees, any other machine readable materials (including, but not limited to, libraries, source files, header files, and data files), any updates or error corrections provided by Oracle, and any user manuals, programming guides and other documentation provided to you by Oracle under this Agreement. "General Purpose Desktop Computers and Servers" means computers, including desktop and laptop computers, or servers, used for general computing functions under end user control (such as but not specifically limited to email, general purpose Internet browsing, and office suite productivity tools). The use of Software in systems and solutions that provide dedicated functionality (other than as mentioned above) or designed for use in embedded or function-specific software applications, for example but not limited to: Software embedded in or bundled with industrial control systems, wireless mobile telephones, wireless handheld devices, kiosks, TV/STB, Blu-ray Disc devices, telematics and network control switching equipment, printers and storage management systems, and other related systems are excluded from this definition and not licensed under this Agreement. "Programs" means (a) Java technology applets and applications intended to run on the Java Platform, Standard Edition platform on Java-enabled General Purpose Desktop Computers and Servers; and (b) JavaFX technology applications intended to run on the JavaFX Runtime on JavaFX-enabled General Purpose Desktop Computers and Servers. “Commercial Features” means those features identified in Table 1-1 (Commercial Features In Java SE Product Editions) of the Java SE documentation accessible at http://www.oracle.com/technetwork/java/javase/documentation/index.html. “README File” means the README file for the Software accessible at http://www.oracle.com/technetwork/java/javase/documentation/index.html. - -2. LICENSE TO USE. Subject to the terms and conditions of this Agreement including, but not limited to, the Java Technology Restrictions of the Supplemental License Terms, Oracle grants you a non-exclusive, non-transferable, limited license without license fees to reproduce and use internally the Software complete and unmodified for the sole purpose of running Programs. THE LICENSE SET FORTH IN THIS SECTION 2 DOES NOT EXTEND TO THE COMMERCIAL FEATURES. YOUR RIGHTS AND OBLIGATIONS RELATED TO THE COMMERCIAL FEATURES ARE AS SET FORTH IN THE SUPPLEMENTAL TERMS ALONG WITH ADDITIONAL LICENSES FOR DEVELOPERS AND PUBLISHERS. - -3. RESTRICTIONS. Software is copyrighted. Title to Software and all associated intellectual property rights is retained by Oracle and/or its licensors. Unless enforcement is prohibited by applicable law, you may not modify, decompile, or reverse engineer Software. You acknowledge that the Software is developed for general use in a variety of information management applications; it is not developed or intended for use in any inherently dangerous applications, including applications that may create a risk of personal injury. If you use the Software in dangerous applications, then you shall be responsible to take all appropriate fail-safe, backup, redundancy, and other measures to ensure its safe use. Oracle disclaims any express or implied warranty of fitness for such uses. No right, title or interest in or to any trademark, service mark, logo or trade name of Oracle or its licensors is granted under this Agreement. Additional restrictions for developers and/or publishers licenses are set forth in the Supplemental License Terms. - -4. DISCLAIMER OF WARRANTY. THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. ORACLE FURTHER DISCLAIMS ALL WARRANTIES, EXPRESS AND IMPLIED, INCLUDING WITHOUT LIMITATION, ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT. - -5. LIMITATION OF LIABILITY. IN NO EVENT SHALL ORACLE BE LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL, PUNITIVE OR CONSEQUENTIAL DAMAGES, OR DAMAGES FOR LOSS OF PROFITS, REVENUE, DATA OR DATA USE, INCURRED BY YOU OR ANY THIRD PARTY, WHETHER IN AN ACTION IN CONTRACT OR TORT, EVEN IF ORACLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. ORACLE'S ENTIRE LIABILITY FOR DAMAGES HEREUNDER SHALL IN NO EVENT EXCEED ONE THOUSAND DOLLARS (U.S. $1,000). - -6. TERMINATION. This Agreement is effective until terminated. You may terminate this Agreement at any time by destroying all copies of Software. This Agreement will terminate immediately without notice from Oracle if you fail to comply with any provision of this Agreement. Either party may terminate this Agreement immediately should any Software become, or in either party's opinion be likely to become, the subject of a claim of infringement of any intellectual property right. Upon termination, you must destroy all copies of Software. - -7. EXPORT REGULATIONS. You agree that U.S. export control laws and other applicable export and import laws govern your use of the Software, including technical data; additional information can be found on Oracle's Global Trade Compliance web site (http://www.oracle.com/us/products/export). You agree that neither the Software nor any direct product thereof will be exported, directly, or indirectly, in violation of these laws, or will be used for any purpose prohibited by these laws including, without limitation, nuclear, chemical, or biological weapons proliferation. - -8. TRADEMARKS AND LOGOS. You acknowledge and agree as between you -and Oracle that Oracle owns the ORACLE and JAVA trademarks and all ORACLE- and JAVA-related trademarks, service marks, logos and other brand -designations ("Oracle Marks"), and you agree to comply with the Third -Party Usage Guidelines for Oracle Trademarks currently located at -http://www.oracle.com/us/legal/third-party-trademarks/index.html . Any use you make of the Oracle Marks inures to Oracle's benefit. - -9. U.S. GOVERNMENT LICENSE RIGHTS. If Software is being acquired by or on behalf of the U.S. Government or by a U.S. Government prime contractor or subcontractor (at any tier), then the Government's rights in Software and accompanying documentation shall be only those set forth in this Agreement. - -10. GOVERNING LAW. This agreement is governed by the substantive and procedural laws of California. You and Oracle agree to submit to the exclusive jurisdiction of, and venue in, the courts of San Francisco, or Santa Clara counties in California in any dispute arising out of or relating to this agreement. - -11. SEVERABILITY. If any provision of this Agreement is held to be unenforceable, this Agreement will remain in effect with the provision omitted, unless omission would frustrate the intent of the parties, in which case this Agreement will immediately terminate. - -12. INTEGRATION. This Agreement is the entire agreement between you and Oracle relating to its subject matter. It supersedes all prior or contemporaneous oral or written communications, proposals, representations and warranties and prevails over any conflicting or additional terms of any quote, order, acknowledgment, or other communication between the parties relating to its subject matter during the term of this Agreement. No modification of this Agreement will be binding, unless in writing and signed by an authorized representative of each party. - -SUPPLEMENTAL LICENSE TERMS - -These Supplemental License Terms add to or modify the terms of the Binary Code License Agreement. Capitalized terms not defined in these Supplemental Terms shall have the same meanings ascribed to them in the Binary Code License Agreement. These Supplemental Terms shall supersede any inconsistent or conflicting terms in the Binary Code License Agreement, or in any license contained within the Software. - -A. COMMERCIAL FEATURES. You may not use the Commercial Features for running Programs, Java applets or applications in your internal business operations or for any commercial or production purpose, or for any purpose other than as set forth in Sections B, C, D and E of these Supplemental Terms. If You want to use the Commercial Features for any purpose other than as permitted in this Agreement, You must obtain a separate license from Oracle. - -B. SOFTWARE INTERNAL USE FOR DEVELOPMENT LICENSE GRANT. Subject to the terms and conditions of this Agreement and restrictions and exceptions set forth in the README File incorporated herein by reference, including, but not limited to the Java Technology Restrictions of these Supplemental Terms, Oracle grants you a non-exclusive, non-transferable, limited license without fees to reproduce internally and use internally the Software complete and unmodified for the purpose of designing, developing, and testing your Programs. - -C. LICENSE TO DISTRIBUTE SOFTWARE. Subject to the terms and conditions of this Agreement and restrictions and exceptions set forth in the README File, including, but not limited to the Java Technology Restrictions and Limitations on Redistribution of these Supplemental Terms, Oracle grants you a non-exclusive, non-transferable, limited license without fees to reproduce and distribute the Software, provided that (i) you distribute the Software complete and unmodified and only bundled as part of, and for the sole purpose of running, your Programs, (ii) the Programs add significant and primary functionality to the Software, (iii) you do not distribute additional software intended to replace any component(s) of the Software, (iv) you do not remove or alter any proprietary legends or notices contained in the Software, (v) you only distribute the Software subject to a license agreement that: (a) is a complete, unmodified reproduction of this Agreement; or (b) protects Oracle's interests consistent with the terms contained in this Agreement and that includes the notice set forth in Section H, and (vi) you agree to defend and indemnify Oracle and its licensors from and against any damages, costs, liabilities, settlement amounts and/or expenses (including attorneys' fees) incurred in connection with any claim, lawsuit or action by any third party that arises or results from the use or distribution of any and all Programs and/or Software. The license set forth in this Section C does not extend to the Software identified in Section G. - -D. LICENSE TO DISTRIBUTE REDISTRIBUTABLES. Subject to the terms and conditions of this Agreement and restrictions and exceptions set forth in the README File, including but not limited to the Java Technology Restrictions and Limitations on Redistribution of these Supplemental Terms, Oracle grants you a non-exclusive, non-transferable, limited license without fees to reproduce and distribute those files specifically identified as redistributable in the README File ("Redistributables") provided that: (i) you distribute the Redistributables complete and unmodified, and only bundled as part of Programs, (ii) the Programs add significant and primary functionality to the Redistributables, (iii) you do not distribute additional software intended to supersede any component(s) of the Redistributables (unless otherwise specified in the applicable README File), (iv) you do not remove or alter any proprietary legends or notices contained in or on the Redistributables, (v) you only distribute the Redistributables pursuant to a license agreement that: (a) is a complete, unmodified reproduction of this Agreement; or (b) protects Oracle's interests consistent with the terms contained in the Agreement and includes the notice set forth in Section H, (vi) you agree to defend and indemnify Oracle and its licensors from and against any damages, costs, liabilities, settlement amounts and/or expenses (including attorneys' fees) incurred in connection with any claim, lawsuit or action by any third party that arises or results from the use or distribution of any and all Programs and/or Software. The license set forth in this Section D does not extend to the Software identified in Section G. - -E. DISTRIBUTION BY PUBLISHERS. This section pertains to your distribution of the JavaTM SE Development Kit Software (“JDK”) with your printed book or magazine (as those terms are commonly used in the industry) relating to Java technology ("Publication"). Subject to and conditioned upon your compliance with the restrictions and obligations contained in the Agreement, Oracle hereby grants to you a non-exclusive, nontransferable limited right to reproduce complete and unmodified copies of the JDK on electronic media (the "Media") for the sole purpose of inclusion and distribution with your Publication(s), subject to the following terms: (i) You may not distribute the JDK on a stand-alone basis; it must be distributed with your Publication(s); (ii) You are responsible for downloading the JDK from the applicable Oracle web site; (iii) You must refer to the JDK as JavaTM SE Development Kit; (iv) The JDK must be reproduced in its entirety and without any modification whatsoever (including with respect to all proprietary notices) and distributed with your Publication subject to a license agreement that is a complete, unmodified reproduction of this Agreement; (v) The Media label shall include the following information: “Copyright [YEAR], Oracle America, Inc. All rights reserved. Use is subject to license terms. ORACLE and JAVA trademarks and all ORACLE- and JAVA-related trademarks, service marks, logos and other brand designations are trademarks or registered trademarks of Oracle in the U.S. and other countries.” [YEAR] is the year of Oracle's release of the Software; the year information can typically be found in the Software’s “About” box or screen. This information must be placed on the Media label in such a manner as to only apply to the JDK; (vi) You must clearly identify the JDK as Oracle's product on the Media holder or Media label, and you may not state or imply that Oracle is responsible for any third-party software contained on the Media; (vii) You may not include any third party software on the Media which is intended to be a replacement or substitute for the JDK; (viii) You agree to defend and indemnify Oracle and its licensors from and against any damages, costs, liabilities, settlement amounts and/or expenses (including attorneys' fees) incurred in connection with any claim, lawsuit or action by any third party that arises or results from the use or distribution of the JDK and/or the Publication; ; and (ix) You shall provide Oracle with a written notice for each Publication; such notice shall include the following information: (1) title of Publication, (2) author(s), (3) date of Publication, and (4) ISBN or ISSN numbers. Such notice shall be sent to Oracle America, Inc., 500 Oracle Parkway, Redwood Shores, California 94065 U.S.A , Attention: General Counsel. - -F. JAVA TECHNOLOGY RESTRICTIONS. You may not create, modify, or change the behavior of, or authorize your licensees to create, modify, or change the behavior of, classes, interfaces, or subpackages that are in any way identified as "java", "javax", "sun", “oracle” or similar convention as specified by Oracle in any naming convention designation. - -G. LIMITATIONS ON REDISTRIBUTION. You may not redistribute or otherwise transfer patches, bug fixes or updates made available by Oracle through Oracle Premier Support, including those made available under Oracle's Java SE Support program. - -H. COMMERCIAL FEATURES NOTICE. For purpose of complying with Supplemental Term Section C.(v)(b) and D.(v)(b), your license agreement shall include the following notice, where the notice is displayed in a manner that anyone using the Software will see the notice: - -Use of the Commercial Features for any commercial or production purpose requires a separate license from Oracle. “Commercial Features” means those features identified Table 1-1 (Commercial Features In Java SE Product Editions) of the Java SE documentation accessible at http://www.oracle.com/technetwork/java/javase/documentation/index.html - - - -I. SOURCE CODE. Software may contain source code that, unless expressly licensed for other purposes, is provided solely for reference purposes pursuant to the terms of this Agreement. Source code may not be redistributed unless expressly provided for in this Agreement. - -J. THIRD PARTY CODE. Additional copyright notices and license terms applicable to portions of the Software are set forth in the THIRDPARTYLICENSEREADME file accessible at http://www.oracle.com/technetwork/java/javase/documentation/index.html. In addition to any terms and conditions of any third party opensource/freeware license identified in the THIRDPARTYLICENSEREADME file, the disclaimer of warranty and limitation of liability provisions in paragraphs 4 and 5 of the Binary Code License Agreement shall apply to all Software in this distribution. - -K. TERMINATION FOR INFRINGEMENT. Either party may terminate this Agreement immediately should any Software become, or in either party's opinion be likely to become, the subject of a claim of infringement of any intellectual property right. - -L. INSTALLATION AND AUTO-UPDATE. The Software's installation and auto-update processes transmit a limited amount of data to Oracle (or its service provider) about those specific processes to help Oracle understand and optimize them. Oracle does not associate the data with personally identifiable information. You can find more information about the data Oracle collects as a result of your Software download at http://www.oracle.com/technetwork/java/javase/documentation/index.html. - -For inquiries please contact: Oracle America, Inc., 500 Oracle Parkway, - -Redwood Shores, California 94065, USA. - -Last updated 02 April 2013 diff --git a/vendor/github.com/google/licenseclassifier/licenses/BSD-2-Clause-FreeBSD.txt b/vendor/github.com/google/licenseclassifier/licenses/BSD-2-Clause-FreeBSD.txt deleted file mode 100644 index 316f27d..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/BSD-2-Clause-FreeBSD.txt +++ /dev/null @@ -1,24 +0,0 @@ -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE FREEBSD PROJECT ``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 FREEBSD PROJECT 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. - -The views and conclusions contained in the software and documentation are -those of the authors and should not be interpreted as representing official -policies, either expressed or implied, of the FreeBSD Project. diff --git a/vendor/github.com/google/licenseclassifier/licenses/BSD-2-Clause-NetBSD.txt b/vendor/github.com/google/licenseclassifier/licenses/BSD-2-Clause-NetBSD.txt deleted file mode 100644 index 4526ceb..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/BSD-2-Clause-NetBSD.txt +++ /dev/null @@ -1,24 +0,0 @@ -This code is derived from software contributed to The NetBSD Foundation by - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. 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 FOUNDATION OR -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/BSD-2-Clause.txt b/vendor/github.com/google/licenseclassifier/licenses/BSD-2-Clause.txt deleted file mode 100644 index 0458cc2..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/BSD-2-Clause.txt +++ /dev/null @@ -1,21 +0,0 @@ -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/BSD-3-Clause-Attribution.txt b/vendor/github.com/google/licenseclassifier/licenses/BSD-3-Clause-Attribution.txt deleted file mode 100644 index a41727b..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/BSD-3-Clause-Attribution.txt +++ /dev/null @@ -1,22 +0,0 @@ -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - -2. 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. - -3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. - -4. Redistributions of any form whatsoever must retain the following acknowledgment: 'This product includes software developed by the "Universidad de Palermo, Argentina" (http://www.palermo.edu/).' - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/BSD-3-Clause-Clear.txt b/vendor/github.com/google/licenseclassifier/licenses/BSD-3-Clause-Clear.txt deleted file mode 100644 index d500c1c..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/BSD-3-Clause-Clear.txt +++ /dev/null @@ -1,28 +0,0 @@ -Redistribution and use in source and binary forms, with or without -modification, are permitted (subject to the limitations in the disclaimer -below) 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 [Owner Organization] nor the names of its contributors may - be used to endorse or promote products derived from this software without - specific prior written permission. - -NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED -BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/BSD-3-Clause-LBNL.txt b/vendor/github.com/google/licenseclassifier/licenses/BSD-3-Clause-LBNL.txt deleted file mode 100644 index 450f11b..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/BSD-3-Clause-LBNL.txt +++ /dev/null @@ -1,41 +0,0 @@ -Copyright (c) 2003, The Regents of the University of California, through -Lawrence Berkeley National Laboratory (subject to receipt of any required -approvals from the U.S. Dept. of Energy). All rights reserved. Redistribution -and use in source and binary forms, with or without modification, are -permitted provided that the following conditions are met: - -(1) Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer. - -(2) 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. - -(3) Neither the name of the University of California, Lawrence Berkeley -National Laboratory, U.S. Dept. of Energy 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. - -You are under no obligation whatsoever to provide any bug fixes, patches, or -upgrades to the features, functionality or performance of the source code -("Enhancements") to anyone; however, if you choose to make your Enhancements -available either publicly, or directly to Lawrence Berkeley National -Laboratory, without imposing a separate written license agreement for such -Enhancements, then you hereby grant the following license: a non-exclusive, -royalty-free perpetual license to install, use, modify, prepare derivative -works, incorporate into other computer software, distribute, and sublicense -such Enhancements or derivative works thereof, in binary and source code form. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/BSD-3-Clause.txt b/vendor/github.com/google/licenseclassifier/licenses/BSD-3-Clause.txt deleted file mode 100644 index b4d0649..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/BSD-3-Clause.txt +++ /dev/null @@ -1,24 +0,0 @@ -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. 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. - -3. Neither the name of the copyright holder 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 HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/google/licenseclassifier/licenses/BSD-4-Clause-UC.txt b/vendor/github.com/google/licenseclassifier/licenses/BSD-4-Clause-UC.txt deleted file mode 100644 index 0a2e2da..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/BSD-4-Clause-UC.txt +++ /dev/null @@ -1,29 +0,0 @@ -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. 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. - -3. All advertising materials mentioning features or use of this software must - display the following acknowledgement: This product includes software - developed by the University of California, Berkeley and its contributors. - -4. Neither the name of the University 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 REGENTS 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 REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/BSD-4-Clause.txt b/vendor/github.com/google/licenseclassifier/licenses/BSD-4-Clause.txt deleted file mode 100644 index 3fac48e..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/BSD-4-Clause.txt +++ /dev/null @@ -1,29 +0,0 @@ -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. 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. - -3. All advertising materials mentioning features or use of this software must - display the following acknowledgement: This product includes software - developed by the the organization . - -4. Neither the name of the copyright holder 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 COPYRIGHT HOLDER "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 COPYRIGHT HOLDER BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/BSD-Protection.txt b/vendor/github.com/google/licenseclassifier/licenses/BSD-Protection.txt deleted file mode 100644 index 94296fd..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/BSD-Protection.txt +++ /dev/null @@ -1,128 +0,0 @@ -BSD Protection License - -February 2002 - -Preamble - --------- - -The Berkeley Software Distribution ("BSD") license has proven very effective -over the years at allowing for a wide spread of work throughout both -commercial and non-commercial products. For programmers whose primary -intention is to improve the general quality of available software, it is -arguable that there is no better license than the BSD license, as it permits -improvements to be used wherever they will help, without idealogical or -metallic constraint. - -This is of particular value to those who produce reference implementations of -proposed standards: The case of TCP/IP clearly illustrates that freely and -universally available implementations leads the rapid acceptance of standards --- often even being used instead of a de jure standard (eg, OSI network -models). - -With the rapid proliferation of software licensed under the GNU General Public -License, however, the continued success of this role is called into question. -Given that the inclusion of a few lines of "GPL-tainted" work into a larger -body of work will result in restricted distribution -- and given that further -work will likely build upon the "tainted" portions, making them difficult to -remove at a future date -- there are inevitable circumstances where authors -would, in order to protect their goal of providing for the widespread usage of -their work, wish to guard against such "GPL-taint". - -In addition, one can imagine that companies which operate by producing and -selling (possibly closed-source) code would wish to protect themselves against -the rise of a GPL-licensed competitor. While under existing licenses this -would mean not releasing their code under any form of open license, if a -license existed under which they could incorporate any improvements back into -their own (commercial) products then they might be far more willing to provide -for non-closed distribution. - -For the above reasons, we put forth this "BSD Protection License": A license -designed to retain the freedom granted by the BSD license to use licensed -works in a wide variety of settings, both non-commercial and commercial, while -protecting the work from having future contributors restrict that freedom. - -The precise terms and conditions for copying, distribution, and modification -follow. - -BSD PROTECTION LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION, AND -MODIFICATION - ----------------------------------------------------------------- - -0. Definitions. - -a) "Program", below, refers to any program or work distributed under the terms -of this license. - -b) A "work based on the Program", below, refers to either the Program or any -derivative work under copyright law. - -c) "Modification", below, refers to the act of creating derivative works. - -d) "You", below, refers to each licensee. - -1. Scope. -This license governs the copying, distribution, and modification of the -Program. Other activities are outside the scope of this license; The act of -running the Program is not restricted, and the output from the Program is -covered only if its contents constitute a work based on the Program. - -2. Verbatim copies. -You may copy and distribute verbatim copies of the Program as you receive it, -in any medium, provided that you conspicuously and appropriately publish on -each copy an appropriate copyright notice; keep intact all the notices that -refer to this License and to the absence of any warranty; and give any other -recipients of the Program a copy of this License along with the Program. - -3. Modification and redistribution under closed license. -You may modify your copy or copies of the Program, and distribute the -resulting derivative works, provided that you meet the following conditions: - -a) The copyright notice and disclaimer on the Program must be reproduced and -included in the source code, documentation, and/or other materials provided in -a manner in which such notices are normally distributed. - -b) The derivative work must be clearly identified as such, in order that it -may not be confused with the original work. - -c) The license under which the derivative work is distributed must expressly -prohibit the distribution of further derivative works. - -4. Modification and redistribution under open license. -You may modify your copy or copies of the Program, and distribute the -resulting derivative works, provided that you meet the following conditions: - -a) The copyright notice and disclaimer on the Program must be reproduced and -included in the source code, documentation, and/or other materials provided in -a manner in which such notices are normally distributed. - -b) You must clearly indicate the nature and date of any changes made to the -Program. The full details need not necessarily be included in the individual -modified files, provided that each modified file is clearly marked as such and -instructions are included on where the full details of the modifications may -be found. - -c) You must cause any work that you distribute or publish, that in whole or in -part contains or is derived from the Program or any part thereof, to be -licensed as a whole at no charge to all third parties under the terms of this -License. - -5. Implied acceptance. -You may not copy or distribute the Program or any derivative works except as -expressly provided under this license. Consequently, any such action will be -taken as implied acceptance of the terms of this license. - -6. NO WARRANTY. -THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE -PROGRAM AS PERMITTED ABOVE, BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR -INABILITY TO USE THE PROGRAM (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, EVEN IF SUCH HOLDER OR OTHER PARTY HAS -BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/BSL-1.0.txt b/vendor/github.com/google/licenseclassifier/licenses/BSL-1.0.txt deleted file mode 100644 index 82f8b6f..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/BSL-1.0.txt +++ /dev/null @@ -1,24 +0,0 @@ -Boost Software License - Version 1.0 - August 17th, 2003 - -Permission is hereby granted, free of charge, to any person or organization -obtaining a copy of the software and accompanying documentation covered by -this license (the "Software") to use, reproduce, display, distribute, execute, -and transmit the Software, and to prepare derivative works of the Software, -and to permit third-parties to whom the Software is furnished to do so, all -subject to the following: - -The copyright notices in the Software and this entire statement, including the -above license grant, this restriction and the following disclaimer, must be -included in all copies of the Software, in whole or in part, and all -derivative works of the Software, unless such copies or derivative works are -solely in the form of machine-executable object code generated by a source -language processor. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT -SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR -ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/Beerware.txt b/vendor/github.com/google/licenseclassifier/licenses/Beerware.txt deleted file mode 100644 index bdbd6ad..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/Beerware.txt +++ /dev/null @@ -1,5 +0,0 @@ -"THE BEER-WARE LICENSE" (Revision 42): wrote this file. As -long as you retain this notice you can do whatever you want with this stuff. -If we meet some day, and you think this stuff is worth it, you can buy me a -beer in return Poul-Henning Kamp - diff --git a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-1.0.txt b/vendor/github.com/google/licenseclassifier/licenses/CC-BY-1.0.txt deleted file mode 100644 index 186cec7..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-1.0.txt +++ /dev/null @@ -1,197 +0,0 @@ -Creative Commons Attribution 1.0 - -CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL -SERVICES. DISTRIBUTION OF THIS DRAFT LICENSE DOES NOT CREATE AN ATTORNEY- -CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" -BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION -PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE. - -License - -THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE -COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY -COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS -AUTHORIZED UNDER THIS LICENSE IS PROHIBITED. - -BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE -BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS YOU THE RIGHTS -CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND -CONDITIONS. - -1. Definitions - -a. "Collective Work" means a work, such as a periodical issue, anthology or -encyclopedia, in which the Work in its entirety in unmodified form, along with -a number of other contributions, constituting separate and independent works -in themselves, are assembled into a collective whole. A work that constitutes -a Collective Work will not be considered a Derivative Work (as defined below) -for the purposes of this License. - -b. "Derivative Work" means a work based upon the Work or upon the Work and -other pre-existing works, such as a translation, musical arrangement, -dramatization, fictionalization, motion picture version, sound recording, art -reproduction, abridgment, condensation, or any other form in which the Work -may be recast, transformed, or adapted, except that a work that constitutes a -Collective Work will not be considered a Derivative Work for the purpose of -this License. - -c. "Licensor" means the individual or entity that offers the Work under the -terms of this License. - -d. "Original Author" means the individual or entity who created the Work. - -e. "Work" means the copyrightable work of authorship offered under the terms -of this License. - -f. "You" means an individual or entity exercising rights under this License -who has not previously violated the terms of this License with respect to the -Work, or who has received express permission from the Licensor to exercise -rights under this License despite a previous violation. - -2. Fair Use Rights. Nothing in this license is intended to reduce, limit, or restrict any rights arising from fair use, first sale or other limitations on the exclusive rights of the copyright owner under copyright law or other applicable laws. - -3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below: - -a. to reproduce the Work, to incorporate the Work into one or more Collective -Works, and to reproduce the Work as incorporated in the Collective Works; - -b. to create and reproduce Derivative Works; - -c. to distribute copies or phonorecords of, display publicly, perform -publicly, and perform publicly by means of a digital audio transmission the -Work including as incorporated in Collective Works; - -d. to distribute copies or phonorecords of, display publicly, perform -publicly, and perform publicly by means of a digital audio transmission -Derivative Works; - -The above rights may be exercised in all media and formats whether now known -or hereafter devised. The above rights include the right to make such -modifications as are technically necessary to exercise the rights in other -media and formats. All rights not expressly granted by Licensor are hereby -reserved. - -4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions: - -a. You may distribute, publicly display, publicly perform, or publicly -digitally perform the Work only under the terms of this License, and You must -include a copy of, or the Uniform Resource Identifier for, this License with -every copy or phonorecord of the Work You distribute, publicly display, -publicly perform, or publicly digitally perform. You may not offer or impose -any terms on the Work that alter or restrict the terms of this License or the -recipients' exercise of the rights granted hereunder. You may not -sublicense the Work. You must keep intact all notices that refer to this -License and to the disclaimer of warranties. You may not distribute, publicly -display, publicly perform, or publicly digitally perform the Work with any -technological measures that control access or use of the Work in a manner -inconsistent with the terms of this License Agreement. The above applies to -the Work as incorporated in a Collective Work, but this does not require the -Collective Work apart from the Work itself to be made subject to the terms of -this License. If You create a Collective Work, upon notice from any Licensor -You must, to the extent practicable, remove from the Collective Work any -reference to such Licensor or the Original Author, as requested. If You create -a Derivative Work, upon notice from any Licensor You must, to the extent -practicable, remove from the Derivative Work any reference to such Licensor or -the Original Author, as requested. - -b. If you distribute, publicly display, publicly perform, or publicly -digitally perform the Work or any Derivative Works or Collective Works, You -must keep intact all copyright notices for the Work and give the Original -Author credit reasonable to the medium or means You are utilizing by conveying -the name (or pseudonym if applicable) of the Original Author if supplied; the -title of the Work if supplied; in the case of a Derivative Work, a credit -identifying the use of the Work in the Derivative Work (e.g., "French -translation of the Work by Original Author," or "Screenplay based on original -Work by Original Author"). Such credit may be implemented in any reasonable -manner; provided, however, that in the case of a Derivative Work or Collective -Work, at a minimum such credit will appear where any other comparable -authorship credit appears and in a manner at least as prominent as such other -comparable authorship credit. - -5. Representations, Warranties and Disclaimer - -a. By offering the Work for public release under this License, Licensor -represents and warrants that, to the best of Licensor's knowledge after -reasonable inquiry: - -i. Licensor has secured all rights in the Work necessary to grant the license -rights hereunder and to permit the lawful exercise of the rights granted -hereunder without You having any obligation to pay any royalties, compulsory -license fees, residuals or any other payments; - -ii. The Work does not infringe the copyright, trademark, publicity rights, -common law rights or any other right of any third party or constitute -defamation, invasion of privacy or other tortious injury to any third party. - -b. EXCEPT AS EXPRESSLY STATED IN THIS LICENSE OR OTHERWISE AGREED IN WRITING -OR REQUIRED BY APPLICABLE LAW, THE WORK IS LICENSED ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT -LIMITATION, ANY WARRANTIES REGARDING THE CONTENTS OR ACCURACY OF THE WORK. - -6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, AND EXCEPT FOR DAMAGES ARISING FROM LIABILITY TO A THIRD PARTY RESULTING FROM BREACH OF THE WARRANTIES IN SECTION 5, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -7. Termination - -a. This License and the rights granted hereunder will terminate automatically -upon any breach by You of the terms of this License. Individuals or entities -who have received Derivative Works or Collective Works from You under this -License, however, will not have their licenses terminated provided such -individuals or entities remain in full compliance with those licenses. -Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License. - -b. Subject to the above terms and conditions, the license granted here is -perpetual (for the duration of the applicable copyright in the Work). -Notwithstanding the above, Licensor reserves the right to release the Work -under different license terms or to stop distributing the Work at any time; -provided, however that any such election will not serve to withdraw this -License (or any other license that has been, or is required to be, granted -under the terms of this License), and this License will continue in full force -and effect unless terminated as stated above. - -8. Miscellaneous - -a. Each time You distribute or publicly digitally perform the Work or a -Collective Work, the Licensor offers to the recipient a license to the Work on -the same terms and conditions as the license granted to You under this -License. - -b. Each time You distribute or publicly digitally perform a Derivative Work, -Licensor offers to the recipient a license to the original Work on the same -terms and conditions as the license granted to You under this License. - -c. If any provision of this License is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this License, and without further action by the -parties to this agreement, such provision shall be reformed to the minimum -extent necessary to make such provision valid and enforceable. - -d. No term or provision of this License shall be deemed waived and no breach -consented to unless such waiver or consent shall be in writing and signed by -the party to be charged with such waiver or consent. - -e. This License constitutes the entire agreement between the parties with -respect to the Work licensed here. There are no understandings, agreements or -representations with respect to the Work not specified here. Licensor shall -not be bound by any additional provisions that may appear in any communication -from You. This License may not be modified without the mutual written -agreement of the Licensor and You. - - -Creative Commons is not a party to this License, and makes no warranty -whatsoever in connection with the Work. Creative Commons will not be liable to -You or any party on any legal theory for any damages whatsoever, including -without limitation any general, special, incidental or consequential damages -arising in connection to this license. Notwithstanding the foregoing two (2) -sentences, if Creative Commons has expressly identified itself as the Licensor -hereunder, it shall have all rights and obligations of Licensor. - -Except for the limited purpose of indicating to the public that the Work is -licensed under the CCPL, neither party will use the trademark "Creative -Commons" or any related trademark or logo of Creative Commons without the -prior written consent of Creative Commons. Any permitted use will be in -compliance with Creative Commons' then-current trademark usage -guidelines, as may be published on its website or otherwise made available -upon request from time to time. - -Creative Commons may be contacted at http://creativecommons.org/. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-2.0.txt b/vendor/github.com/google/licenseclassifier/licenses/CC-BY-2.0.txt deleted file mode 100644 index 46c580d..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-2.0.txt +++ /dev/null @@ -1,214 +0,0 @@ -Creative Commons Attribution 2.0 - -CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL -SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT -RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. -CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, AND -DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE. - -License - -THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE -COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY -COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS -AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. - -BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE -BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS YOU THE RIGHTS -CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND -CONDITIONS. - -1. Definitions - -a. "Collective Work" means a work, such as a periodical issue, anthology or -encyclopedia, in which the Work in its entirety in unmodified form, along with -a number of other contributions, constituting separate and independent works -in themselves, are assembled into a collective whole. A work that constitutes -a Collective Work will not be considered a Derivative Work (as defined below) -for the purposes of this License. - -b. "Derivative Work" means a work based upon the Work or upon the Work and -other pre-existing works, such as a translation, musical arrangement, -dramatization, fictionalization, motion picture version, sound recording, art -reproduction, abridgment, condensation, or any other form in which the Work -may be recast, transformed, or adapted, except that a work that constitutes a -Collective Work will not be considered a Derivative Work for the purpose of -this License. For the avoidance of doubt, where the Work is a musical -composition or sound recording, the synchronization of the Work in timed- -relation with a moving image ("synching") will be considered a Derivative Work -for the purpose of this License. - -c. "Licensor" means the individual or entity that offers the Work under the -terms of this License. - -d. "Original Author" means the individual or entity who created the Work. - -e. "Work" means the copyrightable work of authorship offered under the terms -of this License. - -f. "You" means an individual or entity exercising rights under this License -who has not previously violated the terms of this License with respect to the -Work, or who has received express permission from the Licensor to exercise -rights under this License despite a previous violation. - -2. Fair Use Rights. Nothing in this license is intended to reduce, limit, or restrict any rights arising from fair use, first sale or other limitations on the exclusive rights of the copyright owner under copyright law or other applicable laws. - -3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below: - -a. to reproduce the Work, to incorporate the Work into one or more Collective -Works, and to reproduce the Work as incorporated in the Collective Works; - -b. to create and reproduce Derivative Works; - -c. to distribute copies or phonorecords of, display publicly, perform -publicly, and perform publicly by means of a digital audio transmission the -Work including as incorporated in Collective Works; - -d. to distribute copies or phonorecords of, display publicly, perform -publicly, and perform publicly by means of a digital audio transmission -Derivative Works. - -e. For the avoidance of doubt, where the work is a musical composition: - -i. Performance Royalties Under Blanket Licenses. Licensor waives the exclusive -right to collect, whether individually or via a performance rights society -(e.g. ASCAP, BMI, SESAC), royalties for the public performance or public -digital performance (e.g. webcast) of the Work. - -ii. Mechanical Rights and Statutory Royalties. Licensor waives the exclusive -right to collect, whether individually or via a music rights agency or -designated agent (e.g. Harry Fox Agency), royalties for any phonorecord You -create from the Work ("cover version") and distribute, subject to the -compulsory license created by 17 USC Section 115 of the US Copyright Act (or -the equivalent in other jurisdictions). - -f. Webcasting Rights and Statutory Royalties. For the avoidance of doubt, -where the Work is a sound recording, Licensor waives the exclusive right to -collect, whether individually or via a performance-rights society (e.g. -SoundExchange), royalties for the public digital performance (e.g. webcast) of -the Work, subject to the compulsory license created by 17 USC Section 114 of -the US Copyright Act (or the equivalent in other jurisdictions). - -The above rights may be exercised in all media and formats whether now known -or hereafter devised. The above rights include the right to make such -modifications as are technically necessary to exercise the rights in other -media and formats. All rights not expressly granted by Licensor are hereby -reserved. - -4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions: - -a. You may distribute, publicly display, publicly perform, or publicly -digitally perform the Work only under the terms of this License, and You must -include a copy of, or the Uniform Resource Identifier for, this License with -every copy or phonorecord of the Work You distribute, publicly display, -publicly perform, or publicly digitally perform. You may not offer or impose -any terms on the Work that alter or restrict the terms of this License or the -recipients' exercise of the rights granted hereunder. You may not -sublicense the Work. You must keep intact all notices that refer to this -License and to the disclaimer of warranties. You may not distribute, publicly -display, publicly perform, or publicly digitally perform the Work with any -technological measures that control access or use of the Work in a manner -inconsistent with the terms of this License Agreement. The above applies to -the Work as incorporated in a Collective Work, but this does not require the -Collective Work apart from the Work itself to be made subject to the terms of -this License. If You create a Collective Work, upon notice from any Licensor -You must, to the extent practicable, remove from the Collective Work any -reference to such Licensor or the Original Author, as requested. If You create -a Derivative Work, upon notice from any Licensor You must, to the extent -practicable, remove from the Derivative Work any reference to such Licensor or -the Original Author, as requested. - -b. If you distribute, publicly display, publicly perform, or publicly -digitally perform the Work or any Derivative Works or Collective Works, You -must keep intact all copyright notices for the Work and give the Original -Author credit reasonable to the medium or means You are utilizing by conveying -the name (or pseudonym if applicable) of the Original Author if supplied; the -title of the Work if supplied; to the extent reasonably practicable, the -Uniform Resource Identifier, if any, that Licensor specifies to be associated -with the Work, unless such URI does not refer to the copyright notice or -licensing information for the Work; and in the case of a Derivative Work, a -credit identifying the use of the Work in the Derivative Work (e.g., "French -translation of the Work by Original Author," or "Screenplay based on original -Work by Original Author"). Such credit may be implemented in any reasonable -manner; provided, however, that in the case of a Derivative Work or Collective -Work, at a minimum such credit will appear where any other comparable -authorship credit appears and in a manner at least as prominent as such other -comparable authorship credit. - -5. Representations, Warranties and Disclaimer - -UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS -THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND -CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, -WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A -PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER -DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT -DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED -WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. - -6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -7. Termination - -a. This License and the rights granted hereunder will terminate automatically -upon any breach by You of the terms of this License. Individuals or entities -who have received Derivative Works or Collective Works from You under this -License, however, will not have their licenses terminated provided such -individuals or entities remain in full compliance with those licenses. -Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License. - -b. Subject to the above terms and conditions, the license granted here is -perpetual (for the duration of the applicable copyright in the Work). -Notwithstanding the above, Licensor reserves the right to release the Work -under different license terms or to stop distributing the Work at any time; -provided, however that any such election will not serve to withdraw this -License (or any other license that has been, or is required to be, granted -under the terms of this License), and this License will continue in full force -and effect unless terminated as stated above. - -8. Miscellaneous - -a. Each time You distribute or publicly digitally perform the Work or a -Collective Work, the Licensor offers to the recipient a license to the Work on -the same terms and conditions as the license granted to You under this -License. - -b. Each time You distribute or publicly digitally perform a Derivative Work, -Licensor offers to the recipient a license to the original Work on the same -terms and conditions as the license granted to You under this License. - -c. If any provision of this License is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this License, and without further action by the -parties to this agreement, such provision shall be reformed to the minimum -extent necessary to make such provision valid and enforceable. - -d. No term or provision of this License shall be deemed waived and no breach -consented to unless such waiver or consent shall be in writing and signed by -the party to be charged with such waiver or consent. - -e. This License constitutes the entire agreement between the parties with -respect to the Work licensed here. There are no understandings, agreements or -representations with respect to the Work not specified here. Licensor shall -not be bound by any additional provisions that may appear in any communication -from You. This License may not be modified without the mutual written -agreement of the Licensor and You. - -Creative Commons is not a party to this License, and makes no warranty -whatsoever in connection with the Work. Creative Commons will not be liable to -You or any party on any legal theory for any damages whatsoever, including -without limitation any general, special, incidental or consequential damages -arising in connection to this license. Notwithstanding the foregoing two (2) -sentences, if Creative Commons has expressly identified itself as the Licensor -hereunder, it shall have all rights and obligations of Licensor. - -Except for the limited purpose of indicating to the public that the Work is -licensed under the CCPL, neither party will use the trademark "Creative -Commons" or any related trademark or logo of Creative Commons without the -prior written consent of Creative Commons. Any permitted use will be in -compliance with Creative Commons' then-current trademark usage -guidelines, as may be published on its website or otherwise made available -upon request from time to time. - -Creative Commons may be contacted at http://creativecommons.org/. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-2.5.txt b/vendor/github.com/google/licenseclassifier/licenses/CC-BY-2.5.txt deleted file mode 100644 index d207bf6..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-2.5.txt +++ /dev/null @@ -1,217 +0,0 @@ -Creative Commons Attribution 2.5 - -CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL -SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT -RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. -CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, AND -DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE. - -License - -THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE -COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY -COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS -AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. - -BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE -BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS YOU THE RIGHTS -CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND -CONDITIONS. - -1. Definitions - -a. "Collective Work" means a work, such as a periodical issue, anthology or -encyclopedia, in which the Work in its entirety in unmodified form, along with -a number of other contributions, constituting separate and independent works -in themselves, are assembled into a collective whole. A work that constitutes -a Collective Work will not be considered a Derivative Work (as defined below) -for the purposes of this License. - -b. "Derivative Work" means a work based upon the Work or upon the Work and -other pre-existing works, such as a translation, musical arrangement, -dramatization, fictionalization, motion picture version, sound recording, art -reproduction, abridgment, condensation, or any other form in which the Work -may be recast, transformed, or adapted, except that a work that constitutes a -Collective Work will not be considered a Derivative Work for the purpose of -this License. For the avoidance of doubt, where the Work is a musical -composition or sound recording, the synchronization of the Work in timed- -relation with a moving image ("synching") will be considered a Derivative Work -for the purpose of this License. - -c. "Licensor" means the individual or entity that offers the Work under the -terms of this License. - -d. "Original Author" means the individual or entity who created the Work. - -e. "Work" means the copyrightable work of authorship offered under the terms -of this License. - -f. "You" means an individual or entity exercising rights under this License -who has not previously violated the terms of this License with respect to the -Work, or who has received express permission from the Licensor to exercise -rights under this License despite a previous violation. - -2. Fair Use Rights. Nothing in this license is intended to reduce, limit, or restrict any rights arising from fair use, first sale or other limitations on the exclusive rights of the copyright owner under copyright law or other applicable laws. - -3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below: - -a. to reproduce the Work, to incorporate the Work into one or more Collective -Works, and to reproduce the Work as incorporated in the Collective Works; - -b. to create and reproduce Derivative Works; - -c. to distribute copies or phonorecords of, display publicly, perform -publicly, and perform publicly by means of a digital audio transmission the -Work including as incorporated in Collective Works; - -d. to distribute copies or phonorecords of, display publicly, perform -publicly, and perform publicly by means of a digital audio transmission -Derivative Works. - -e. For the avoidance of doubt, where the work is a musical composition: - -i. Performance Royalties Under Blanket Licenses. Licensor waives the exclusive -right to collect, whether individually or via a performance rights society -(e.g. ASCAP, BMI, SESAC), royalties for the public performance or public -digital performance (e.g. webcast) of the Work. - -ii. Mechanical Rights and Statutory Royalties. Licensor waives the exclusive -right to collect, whether individually or via a music rights agency or -designated agent (e.g. Harry Fox Agency), royalties for any phonorecord You -create from the Work ("cover version") and distribute, subject to the -compulsory license created by 17 USC Section 115 of the US Copyright Act (or -the equivalent in other jurisdictions). - -f. Webcasting Rights and Statutory Royalties. For the avoidance of doubt, -where the Work is a sound recording, Licensor waives the exclusive right to -collect, whether individually or via a performance-rights society (e.g. -SoundExchange), royalties for the public digital performance (e.g. webcast) of -the Work, subject to the compulsory license created by 17 USC Section 114 of -the US Copyright Act (or the equivalent in other jurisdictions). - -The above rights may be exercised in all media and formats whether now known -or hereafter devised. The above rights include the right to make such -modifications as are technically necessary to exercise the rights in other -media and formats. All rights not expressly granted by Licensor are hereby -reserved. - -4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions: - -a. You may distribute, publicly display, publicly perform, or publicly -digitally perform the Work only under the terms of this License, and You must -include a copy of, or the Uniform Resource Identifier for, this License with -every copy or phonorecord of the Work You distribute, publicly display, -publicly perform, or publicly digitally perform. You may not offer or impose -any terms on the Work that alter or restrict the terms of this License or the -recipients' exercise of the rights granted hereunder. You may not -sublicense the Work. You must keep intact all notices that refer to this -License and to the disclaimer of warranties. You may not distribute, publicly -display, publicly perform, or publicly digitally perform the Work with any -technological measures that control access or use of the Work in a manner -inconsistent with the terms of this License Agreement. The above applies to -the Work as incorporated in a Collective Work, but this does not require the -Collective Work apart from the Work itself to be made subject to the terms of -this License. If You create a Collective Work, upon notice from any Licensor -You must, to the extent practicable, remove from the Collective Work any -credit as required by clause 4(b), as requested. If You create a Derivative -Work, upon notice from any Licensor You must, to the extent practicable, -remove from the Derivative Work any credit as required by clause 4(b), as -requested. - -b. If you distribute, publicly display, publicly perform, or publicly -digitally perform the Work or any Derivative Works or Collective Works, You -must keep intact all copyright notices for the Work and provide, reasonable to -the medium or means You are utilizing: (i) the name of the Original Author (or -pseudonym, if applicable) if supplied, and/or (ii) if the Original Author -and/or Licensor designate another party or parties (e.g. a sponsor institute, -publishing entity, journal) for attribution in Licensor's copyright -notice, terms of service or by other reasonable means, the name of such party -or parties; the title of the Work if supplied; to the extent reasonably -practicable, the Uniform Resource Identifier, if any, that Licensor specifies -to be associated with the Work, unless such URI does not refer to the -copyright notice or licensing information for the Work; and in the case of a -Derivative Work, a credit identifying the use of the Work in the Derivative -Work (e.g., "French translation of the Work by Original Author," or -"Screenplay based on original Work by Original Author"). Such credit may be -implemented in any reasonable manner; provided, however, that in the case of a -Derivative Work or Collective Work, at a minimum such credit will appear where -any other comparable authorship credit appears and in a manner at least as -prominent as such other comparable authorship credit. - -5. Representations, Warranties and Disclaimer - -UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS -THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND -CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, -WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A -PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER -DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT -DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED -WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. - -6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -7. Termination - -a. This License and the rights granted hereunder will terminate automatically -upon any breach by You of the terms of this License. Individuals or entities -who have received Derivative Works or Collective Works from You under this -License, however, will not have their licenses terminated provided such -individuals or entities remain in full compliance with those licenses. -Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License. - -b. Subject to the above terms and conditions, the license granted here is -perpetual (for the duration of the applicable copyright in the Work). -Notwithstanding the above, Licensor reserves the right to release the Work -under different license terms or to stop distributing the Work at any time; -provided, however that any such election will not serve to withdraw this -License (or any other license that has been, or is required to be, granted -under the terms of this License), and this License will continue in full force -and effect unless terminated as stated above. - -8. Miscellaneous - -a. Each time You distribute or publicly digitally perform the Work or a -Collective Work, the Licensor offers to the recipient a license to the Work on -the same terms and conditions as the license granted to You under this -License. - -b. Each time You distribute or publicly digitally perform a Derivative Work, -Licensor offers to the recipient a license to the original Work on the same -terms and conditions as the license granted to You under this License. - -c. If any provision of this License is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this License, and without further action by the -parties to this agreement, such provision shall be reformed to the minimum -extent necessary to make such provision valid and enforceable. - -d. No term or provision of this License shall be deemed waived and no breach -consented to unless such waiver or consent shall be in writing and signed by -the party to be charged with such waiver or consent. - -e. This License constitutes the entire agreement between the parties with -respect to the Work licensed here. There are no understandings, agreements or -representations with respect to the Work not specified here. Licensor shall -not be bound by any additional provisions that may appear in any communication -from You. This License may not be modified without the mutual written -agreement of the Licensor and You. - -Creative Commons is not a party to this License, and makes no warranty -whatsoever in connection with the Work. Creative Commons will not be liable to -You or any party on any legal theory for any damages whatsoever, including -without limitation any general, special, incidental or consequential damages -arising in connection to this license. Notwithstanding the foregoing two (2) -sentences, if Creative Commons has expressly identified itself as the Licensor -hereunder, it shall have all rights and obligations of Licensor. - -Except for the limited purpose of indicating to the public that the Work is -licensed under the CCPL, neither party will use the trademark "Creative -Commons" or any related trademark or logo of Creative Commons without the -prior written consent of Creative Commons. Any permitted use will be in -compliance with Creative Commons' then-current trademark usage -guidelines, as may be published on its website or otherwise made available -upon request from time to time. - -Creative Commons may be contacted at http://creativecommons.org/. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-3.0.txt b/vendor/github.com/google/licenseclassifier/licenses/CC-BY-3.0.txt deleted file mode 100644 index 1a16e05..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-3.0.txt +++ /dev/null @@ -1,319 +0,0 @@ -Creative Commons Legal Code - -Attribution 3.0 Unported - - CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE - LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN - ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS - INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES - REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR - DAMAGES RESULTING FROM ITS USE. - -License - -THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE -COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY -COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS -AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. - -BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE -TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY -BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS -CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND -CONDITIONS. - -1. Definitions - - a. "Adaptation" means a work based upon the Work, or upon the Work and - other pre-existing works, such as a translation, adaptation, - derivative work, arrangement of music or other alterations of a - literary or artistic work, or phonogram or performance and includes - cinematographic adaptations or any other form in which the Work may be - recast, transformed, or adapted including in any form recognizably - derived from the original, except that a work that constitutes a - Collection will not be considered an Adaptation for the purpose of - this License. For the avoidance of doubt, where the Work is a musical - work, performance or phonogram, the synchronization of the Work in - timed-relation with a moving image ("synching") will be considered an - Adaptation for the purpose of this License. - b. "Collection" means a collection of literary or artistic works, such as - encyclopedias and anthologies, or performances, phonograms or - broadcasts, or other works or subject matter other than works listed - in Section 1(f) below, which, by reason of the selection and - arrangement of their contents, constitute intellectual creations, in - which the Work is included in its entirety in unmodified form along - with one or more other contributions, each constituting separate and - independent works in themselves, which together are assembled into a - collective whole. A work that constitutes a Collection will not be - considered an Adaptation (as defined above) for the purposes of this - License. - c. "Distribute" means to make available to the public the original and - copies of the Work or Adaptation, as appropriate, through sale or - other transfer of ownership. - d. "Licensor" means the individual, individuals, entity or entities that - offer(s) the Work under the terms of this License. - e. "Original Author" means, in the case of a literary or artistic work, - the individual, individuals, entity or entities who created the Work - or if no individual or entity can be identified, the publisher; and in - addition (i) in the case of a performance the actors, singers, - musicians, dancers, and other persons who act, sing, deliver, declaim, - play in, interpret or otherwise perform literary or artistic works or - expressions of folklore; (ii) in the case of a phonogram the producer - being the person or legal entity who first fixes the sounds of a - performance or other sounds; and, (iii) in the case of broadcasts, the - organization that transmits the broadcast. - f. "Work" means the literary and/or artistic work offered under the terms - of this License including without limitation any production in the - literary, scientific and artistic domain, whatever may be the mode or - form of its expression including digital form, such as a book, - pamphlet and other writing; a lecture, address, sermon or other work - of the same nature; a dramatic or dramatico-musical work; a - choreographic work or entertainment in dumb show; a musical - composition with or without words; a cinematographic work to which are - assimilated works expressed by a process analogous to cinematography; - a work of drawing, painting, architecture, sculpture, engraving or - lithography; a photographic work to which are assimilated works - expressed by a process analogous to photography; a work of applied - art; an illustration, map, plan, sketch or three-dimensional work - relative to geography, topography, architecture or science; a - performance; a broadcast; a phonogram; a compilation of data to the - extent it is protected as a copyrightable work; or a work performed by - a variety or circus performer to the extent it is not otherwise - considered a literary or artistic work. - g. "You" means an individual or entity exercising rights under this - License who has not previously violated the terms of this License with - respect to the Work, or who has received express permission from the - Licensor to exercise rights under this License despite a previous - violation. - h. "Publicly Perform" means to perform public recitations of the Work and - to communicate to the public those public recitations, by any means or - process, including by wire or wireless means or public digital - performances; to make available to the public Works in such a way that - members of the public may access these Works from a place and at a - place individually chosen by them; to perform the Work to the public - by any means or process and the communication to the public of the - performances of the Work, including by public digital performance; to - broadcast and rebroadcast the Work by any means including signs, - sounds or images. - i. "Reproduce" means to make copies of the Work by any means including - without limitation by sound or visual recordings and the right of - fixation and reproducing fixations of the Work, including storage of a - protected performance or phonogram in digital form or other electronic - medium. - -2. Fair Dealing Rights. Nothing in this License is intended to reduce, -limit, or restrict any uses free from copyright or rights arising from -limitations or exceptions that are provided for in connection with the -copyright protection under copyright law or other applicable laws. - -3. License Grant. Subject to the terms and conditions of this License, -Licensor hereby grants You a worldwide, royalty-free, non-exclusive, -perpetual (for the duration of the applicable copyright) license to -exercise the rights in the Work as stated below: - - a. to Reproduce the Work, to incorporate the Work into one or more - Collections, and to Reproduce the Work as incorporated in the - Collections; - b. to create and Reproduce Adaptations provided that any such Adaptation, - including any translation in any medium, takes reasonable steps to - clearly label, demarcate or otherwise identify that changes were made - to the original Work. For example, a translation could be marked "The - original work was translated from English to Spanish," or a - modification could indicate "The original work has been modified."; - c. to Distribute and Publicly Perform the Work including as incorporated - in Collections; and, - d. to Distribute and Publicly Perform Adaptations. - e. For the avoidance of doubt: - - i. Non-waivable Compulsory License Schemes. In those jurisdictions in - which the right to collect royalties through any statutory or - compulsory licensing scheme cannot be waived, the Licensor - reserves the exclusive right to collect such royalties for any - exercise by You of the rights granted under this License; - ii. Waivable Compulsory License Schemes. In those jurisdictions in - which the right to collect royalties through any statutory or - compulsory licensing scheme can be waived, the Licensor waives the - exclusive right to collect such royalties for any exercise by You - of the rights granted under this License; and, - iii. Voluntary License Schemes. The Licensor waives the right to - collect royalties, whether individually or, in the event that the - Licensor is a member of a collecting society that administers - voluntary licensing schemes, via that society, from any exercise - by You of the rights granted under this License. - -The above rights may be exercised in all media and formats whether now -known or hereafter devised. The above rights include the right to make -such modifications as are technically necessary to exercise the rights in -other media and formats. Subject to Section 8(f), all rights not expressly -granted by Licensor are hereby reserved. - -4. Restrictions. The license granted in Section 3 above is expressly made -subject to and limited by the following restrictions: - - a. You may Distribute or Publicly Perform the Work only under the terms - of this License. You must include a copy of, or the Uniform Resource - Identifier (URI) for, this License with every copy of the Work You - Distribute or Publicly Perform. You may not offer or impose any terms - on the Work that restrict the terms of this License or the ability of - the recipient of the Work to exercise the rights granted to that - recipient under the terms of the License. You may not sublicense the - Work. You must keep intact all notices that refer to this License and - to the disclaimer of warranties with every copy of the Work You - Distribute or Publicly Perform. When You Distribute or Publicly - Perform the Work, You may not impose any effective technological - measures on the Work that restrict the ability of a recipient of the - Work from You to exercise the rights granted to that recipient under - the terms of the License. This Section 4(a) applies to the Work as - incorporated in a Collection, but this does not require the Collection - apart from the Work itself to be made subject to the terms of this - License. If You create a Collection, upon notice from any Licensor You - must, to the extent practicable, remove from the Collection any credit - as required by Section 4(b), as requested. If You create an - Adaptation, upon notice from any Licensor You must, to the extent - practicable, remove from the Adaptation any credit as required by - Section 4(b), as requested. - b. If You Distribute, or Publicly Perform the Work or any Adaptations or - Collections, You must, unless a request has been made pursuant to - Section 4(a), keep intact all copyright notices for the Work and - provide, reasonable to the medium or means You are utilizing: (i) the - name of the Original Author (or pseudonym, if applicable) if supplied, - and/or if the Original Author and/or Licensor designate another party - or parties (e.g., a sponsor institute, publishing entity, journal) for - attribution ("Attribution Parties") in Licensor's copyright notice, - terms of service or by other reasonable means, the name of such party - or parties; (ii) the title of the Work if supplied; (iii) to the - extent reasonably practicable, the URI, if any, that Licensor - specifies to be associated with the Work, unless such URI does not - refer to the copyright notice or licensing information for the Work; - and (iv) , consistent with Section 3(b), in the case of an Adaptation, - a credit identifying the use of the Work in the Adaptation (e.g., - "French translation of the Work by Original Author," or "Screenplay - based on original Work by Original Author"). The credit required by - this Section 4 (b) may be implemented in any reasonable manner; - provided, however, that in the case of a Adaptation or Collection, at - a minimum such credit will appear, if a credit for all contributing - authors of the Adaptation or Collection appears, then as part of these - credits and in a manner at least as prominent as the credits for the - other contributing authors. For the avoidance of doubt, You may only - use the credit required by this Section for the purpose of attribution - in the manner set out above and, by exercising Your rights under this - License, You may not implicitly or explicitly assert or imply any - connection with, sponsorship or endorsement by the Original Author, - Licensor and/or Attribution Parties, as appropriate, of You or Your - use of the Work, without the separate, express prior written - permission of the Original Author, Licensor and/or Attribution - Parties. - c. Except as otherwise agreed in writing by the Licensor or as may be - otherwise permitted by applicable law, if You Reproduce, Distribute or - Publicly Perform the Work either by itself or as part of any - Adaptations or Collections, You must not distort, mutilate, modify or - take other derogatory action in relation to the Work which would be - prejudicial to the Original Author's honor or reputation. Licensor - agrees that in those jurisdictions (e.g. Japan), in which any exercise - of the right granted in Section 3(b) of this License (the right to - make Adaptations) would be deemed to be a distortion, mutilation, - modification or other derogatory action prejudicial to the Original - Author's honor and reputation, the Licensor will waive or not assert, - as appropriate, this Section, to the fullest extent permitted by the - applicable national law, to enable You to reasonably exercise Your - right under Section 3(b) of this License (right to make Adaptations) - but not otherwise. - -5. Representations, Warranties and Disclaimer - -UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR -OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY -KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, -INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, -FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF -LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, -WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION -OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. - -6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE -LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR -ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES -ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS -BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -7. Termination - - a. This License and the rights granted hereunder will terminate - automatically upon any breach by You of the terms of this License. - Individuals or entities who have received Adaptations or Collections - from You under this License, however, will not have their licenses - terminated provided such individuals or entities remain in full - compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will - survive any termination of this License. - b. Subject to the above terms and conditions, the license granted here is - perpetual (for the duration of the applicable copyright in the Work). - Notwithstanding the above, Licensor reserves the right to release the - Work under different license terms or to stop distributing the Work at - any time; provided, however that any such election will not serve to - withdraw this License (or any other license that has been, or is - required to be, granted under the terms of this License), and this - License will continue in full force and effect unless terminated as - stated above. - -8. Miscellaneous - - a. Each time You Distribute or Publicly Perform the Work or a Collection, - the Licensor offers to the recipient a license to the Work on the same - terms and conditions as the license granted to You under this License. - b. Each time You Distribute or Publicly Perform an Adaptation, Licensor - offers to the recipient a license to the original Work on the same - terms and conditions as the license granted to You under this License. - c. If any provision of this License is invalid or unenforceable under - applicable law, it shall not affect the validity or enforceability of - the remainder of the terms of this License, and without further action - by the parties to this agreement, such provision shall be reformed to - the minimum extent necessary to make such provision valid and - enforceable. - d. No term or provision of this License shall be deemed waived and no - breach consented to unless such waiver or consent shall be in writing - and signed by the party to be charged with such waiver or consent. - e. This License constitutes the entire agreement between the parties with - respect to the Work licensed here. There are no understandings, - agreements or representations with respect to the Work not specified - here. Licensor shall not be bound by any additional provisions that - may appear in any communication from You. This License may not be - modified without the mutual written agreement of the Licensor and You. - f. The rights granted under, and the subject matter referenced, in this - License were drafted utilizing the terminology of the Berne Convention - for the Protection of Literary and Artistic Works (as amended on - September 28, 1979), the Rome Convention of 1961, the WIPO Copyright - Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 - and the Universal Copyright Convention (as revised on July 24, 1971). - These rights and subject matter take effect in the relevant - jurisdiction in which the License terms are sought to be enforced - according to the corresponding provisions of the implementation of - those treaty provisions in the applicable national law. If the - standard suite of rights granted under applicable copyright law - includes additional rights not granted under this License, such - additional rights are deemed to be included in the License; this - License is not intended to restrict the license of any rights under - applicable law. - - -Creative Commons Notice - - Creative Commons is not a party to this License, and makes no warranty - whatsoever in connection with the Work. Creative Commons will not be - liable to You or any party on any legal theory for any damages - whatsoever, including without limitation any general, special, - incidental or consequential damages arising in connection to this - license. Notwithstanding the foregoing two (2) sentences, if Creative - Commons has expressly identified itself as the Licensor hereunder, it - shall have all rights and obligations of Licensor. - - Except for the limited purpose of indicating to the public that the - Work is licensed under the CCPL, Creative Commons does not authorize - the use by either party of the trademark "Creative Commons" or any - related trademark or logo of Creative Commons without the prior - written consent of Creative Commons. Any permitted use will be in - compliance with Creative Commons' then-current trademark usage - guidelines, as may be published on its website or otherwise made - available upon request from time to time. For the avoidance of doubt, - this trademark restriction does not form part of this License. - - Creative Commons may be contacted at https://creativecommons.org/. diff --git a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-4.0.txt b/vendor/github.com/google/licenseclassifier/licenses/CC-BY-4.0.txt deleted file mode 100644 index c95f4d9..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-4.0.txt +++ /dev/null @@ -1,396 +0,0 @@ -Attribution 4.0 International - -======================================================================= - -Creative Commons Corporation ("Creative Commons") is not a law firm and -does not provide legal services or legal advice. Distribution of -Creative Commons public licenses does not create a lawyer-client or -other relationship. Creative Commons makes its licenses and related -information available on an "as-is" basis. Creative Commons gives no -warranties regarding its licenses, any material licensed under their -terms and conditions, or any related information. Creative Commons -disclaims all liability for damages resulting from their use to the -fullest extent possible. - -Using Creative Commons Public Licenses - -Creative Commons public licenses provide a standard set of terms and -conditions that creators and other rights holders may use to share -original works of authorship and other material subject to copyright -and certain other rights specified in the public license below. The -following considerations are for informational purposes only, are not -exhaustive, and do not form part of our licenses. - - Considerations for licensors: Our public licenses are - intended for use by those authorized to give the public - permission to use material in ways otherwise restricted by - copyright and certain other rights. Our licenses are - irrevocable. Licensors should read and understand the terms - and conditions of the license they choose before applying it. - Licensors should also secure all rights necessary before - applying our licenses so that the public can reuse the - material as expected. Licensors should clearly mark any - material not subject to the license. This includes other CC- - licensed material, or material used under an exception or - limitation to copyright. More considerations for licensors: - wiki.creativecommons.org/Considerations_for_licensors - - Considerations for the public: By using one of our public - licenses, a licensor grants the public permission to use the - licensed material under specified terms and conditions. If - the licensor's permission is not necessary for any reason--for - example, because of any applicable exception or limitation to - copyright--then that use is not regulated by the license. Our - licenses grant only permissions under copyright and certain - other rights that a licensor has authority to grant. Use of - the licensed material may still be restricted for other - reasons, including because others have copyright or other - rights in the material. A licensor may make special requests, - such as asking that all changes be marked or described. - Although not required by our licenses, you are encouraged to - respect those requests where reasonable. More_considerations - for the public: - wiki.creativecommons.org/Considerations_for_licensees - -======================================================================= - -Creative Commons Attribution 4.0 International Public License - -By exercising the Licensed Rights (defined below), You accept and agree -to be bound by the terms and conditions of this Creative Commons -Attribution 4.0 International Public License ("Public License"). To the -extent this Public License may be interpreted as a contract, You are -granted the Licensed Rights in consideration of Your acceptance of -these terms and conditions, and the Licensor grants You such rights in -consideration of benefits the Licensor receives from making the -Licensed Material available under these terms and conditions. - - -Section 1 -- Definitions. - - a. Adapted Material means material subject to Copyright and Similar - Rights that is derived from or based upon the Licensed Material - and in which the Licensed Material is translated, altered, - arranged, transformed, or otherwise modified in a manner requiring - permission under the Copyright and Similar Rights held by the - Licensor. For purposes of this Public License, where the Licensed - Material is a musical work, performance, or sound recording, - Adapted Material is always produced where the Licensed Material is - synched in timed relation with a moving image. - - b. Adapter's License means the license You apply to Your Copyright - and Similar Rights in Your contributions to Adapted Material in - accordance with the terms and conditions of this Public License. - - c. Copyright and Similar Rights means copyright and/or similar rights - closely related to copyright including, without limitation, - performance, broadcast, sound recording, and Sui Generis Database - Rights, without regard to how the rights are labeled or - categorized. For purposes of this Public License, the rights - specified in Section 2(b)(1)-(2) are not Copyright and Similar - Rights. - - d. Effective Technological Measures means those measures that, in the - absence of proper authority, may not be circumvented under laws - fulfilling obligations under Article 11 of the WIPO Copyright - Treaty adopted on December 20, 1996, and/or similar international - agreements. - - e. Exceptions and Limitations means fair use, fair dealing, and/or - any other exception or limitation to Copyright and Similar Rights - that applies to Your use of the Licensed Material. - - f. Licensed Material means the artistic or literary work, database, - or other material to which the Licensor applied this Public - License. - - g. Licensed Rights means the rights granted to You subject to the - terms and conditions of this Public License, which are limited to - all Copyright and Similar Rights that apply to Your use of the - Licensed Material and that the Licensor has authority to license. - - h. Licensor means the individual(s) or entity(ies) granting rights - under this Public License. - - i. Share means to provide material to the public by any means or - process that requires permission under the Licensed Rights, such - as reproduction, public display, public performance, distribution, - dissemination, communication, or importation, and to make material - available to the public including in ways that members of the - public may access the material from a place and at a time - individually chosen by them. - - j. Sui Generis Database Rights means rights other than copyright - resulting from Directive 96/9/EC of the European Parliament and of - the Council of 11 March 1996 on the legal protection of databases, - as amended and/or succeeded, as well as other essentially - equivalent rights anywhere in the world. - - k. You means the individual or entity exercising the Licensed Rights - under this Public License. Your has a corresponding meaning. - - -Section 2 -- Scope. - - a. License grant. - - 1. Subject to the terms and conditions of this Public License, - the Licensor hereby grants You a worldwide, royalty-free, - non-sublicensable, non-exclusive, irrevocable license to - exercise the Licensed Rights in the Licensed Material to: - - a. reproduce and Share the Licensed Material, in whole or - in part; and - - b. produce, reproduce, and Share Adapted Material. - - 2. Exceptions and Limitations. For the avoidance of doubt, where - Exceptions and Limitations apply to Your use, this Public - License does not apply, and You do not need to comply with - its terms and conditions. - - 3. Term. The term of this Public License is specified in Section - 6(a). - - 4. Media and formats; technical modifications allowed. The - Licensor authorizes You to exercise the Licensed Rights in - all media and formats whether now known or hereafter created, - and to make technical modifications necessary to do so. The - Licensor waives and/or agrees not to assert any right or - authority to forbid You from making technical modifications - necessary to exercise the Licensed Rights, including - technical modifications necessary to circumvent Effective - Technological Measures. For purposes of this Public License, - simply making modifications authorized by this Section 2(a) - (4) never produces Adapted Material. - - 5. Downstream recipients. - - a. Offer from the Licensor -- Licensed Material. Every - recipient of the Licensed Material automatically - receives an offer from the Licensor to exercise the - Licensed Rights under the terms and conditions of this - Public License. - - b. No downstream restrictions. You may not offer or impose - any additional or different terms or conditions on, or - apply any Effective Technological Measures to, the - Licensed Material if doing so restricts exercise of the - Licensed Rights by any recipient of the Licensed - Material. - - 6. No endorsement. Nothing in this Public License constitutes or - may be construed as permission to assert or imply that You - are, or that Your use of the Licensed Material is, connected - with, or sponsored, endorsed, or granted official status by, - the Licensor or others designated to receive attribution as - provided in Section 3(a)(1)(A)(i). - - b. Other rights. - - 1. Moral rights, such as the right of integrity, are not - licensed under this Public License, nor are publicity, - privacy, and/or other similar personality rights; however, to - the extent possible, the Licensor waives and/or agrees not to - assert any such rights held by the Licensor to the limited - extent necessary to allow You to exercise the Licensed - Rights, but not otherwise. - - 2. Patent and trademark rights are not licensed under this - Public License. - - 3. To the extent possible, the Licensor waives any right to - collect royalties from You for the exercise of the Licensed - Rights, whether directly or through a collecting society - under any voluntary or waivable statutory or compulsory - licensing scheme. In all other cases the Licensor expressly - reserves any right to collect such royalties. - - -Section 3 -- License Conditions. - -Your exercise of the Licensed Rights is expressly made subject to the -following conditions. - - a. Attribution. - - 1. If You Share the Licensed Material (including in modified - form), You must: - - a. retain the following if it is supplied by the Licensor - with the Licensed Material: - - i. identification of the creator(s) of the Licensed - Material and any others designated to receive - attribution, in any reasonable manner requested by - the Licensor (including by pseudonym if - designated); - - ii. a copyright notice; - - iii. a notice that refers to this Public License; - - iv. a notice that refers to the disclaimer of - warranties; - - v. a URI or hyperlink to the Licensed Material to the - extent reasonably practicable; - - b. indicate if You modified the Licensed Material and - retain an indication of any previous modifications; and - - c. indicate the Licensed Material is licensed under this - Public License, and include the text of, or the URI or - hyperlink to, this Public License. - - 2. You may satisfy the conditions in Section 3(a)(1) in any - reasonable manner based on the medium, means, and context in - which You Share the Licensed Material. For example, it may be - reasonable to satisfy the conditions by providing a URI or - hyperlink to a resource that includes the required - information. - - 3. If requested by the Licensor, You must remove any of the - information required by Section 3(a)(1)(A) to the extent - reasonably practicable. - - 4. If You Share Adapted Material You produce, the Adapter's - License You apply must not prevent recipients of the Adapted - Material from complying with this Public License. - - -Section 4 -- Sui Generis Database Rights. - -Where the Licensed Rights include Sui Generis Database Rights that -apply to Your use of the Licensed Material: - - a. for the avoidance of doubt, Section 2(a)(1) grants You the right - to extract, reuse, reproduce, and Share all or a substantial - portion of the contents of the database; - - b. if You include all or a substantial portion of the database - contents in a database in which You have Sui Generis Database - Rights, then the database in which You have Sui Generis Database - Rights (but not its individual contents) is Adapted Material; and - - c. You must comply with the conditions in Section 3(a) if You Share - all or a substantial portion of the contents of the database. - -For the avoidance of doubt, this Section 4 supplements and does not -replace Your obligations under this Public License where the Licensed -Rights include other Copyright and Similar Rights. - - -Section 5 -- Disclaimer of Warranties and Limitation of Liability. - - a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE - EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS - AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF - ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, - IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, - WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR - PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, - ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT - KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT - ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. - - b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE - TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, - NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, - INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, - COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR - USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN - ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR - DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR - IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. - - c. The disclaimer of warranties and limitation of liability provided - above shall be interpreted in a manner that, to the extent - possible, most closely approximates an absolute disclaimer and - waiver of all liability. - - -Section 6 -- Term and Termination. - - a. This Public License applies for the term of the Copyright and - Similar Rights licensed here. However, if You fail to comply with - this Public License, then Your rights under this Public License - terminate automatically. - - b. Where Your right to use the Licensed Material has terminated under - Section 6(a), it reinstates: - - 1. automatically as of the date the violation is cured, provided - it is cured within 30 days of Your discovery of the - violation; or - - 2. upon express reinstatement by the Licensor. - - For the avoidance of doubt, this Section 6(b) does not affect any - right the Licensor may have to seek remedies for Your violations - of this Public License. - - c. For the avoidance of doubt, the Licensor may also offer the - Licensed Material under separate terms or conditions or stop - distributing the Licensed Material at any time; however, doing so - will not terminate this Public License. - - d. Sections 1, 5, 6, 7, and 8 survive termination of this Public - License. - - -Section 7 -- Other Terms and Conditions. - - a. The Licensor shall not be bound by any additional or different - terms or conditions communicated by You unless expressly agreed. - - b. Any arrangements, understandings, or agreements regarding the - Licensed Material not stated herein are separate from and - independent of the terms and conditions of this Public License. - - -Section 8 -- Interpretation. - - a. For the avoidance of doubt, this Public License does not, and - shall not be interpreted to, reduce, limit, restrict, or impose - conditions on any use of the Licensed Material that could lawfully - be made without permission under this Public License. - - b. To the extent possible, if any provision of this Public License is - deemed unenforceable, it shall be automatically reformed to the - minimum extent necessary to make it enforceable. If the provision - cannot be reformed, it shall be severed from this Public License - without affecting the enforceability of the remaining terms and - conditions. - - c. No term or condition of this Public License will be waived and no - failure to comply consented to unless expressly agreed to by the - Licensor. - - d. Nothing in this Public License constitutes or may be interpreted - as a limitation upon, or waiver of, any privileges and immunities - that apply to the Licensor or You, including from the legal - processes of any jurisdiction or authority. - - -======================================================================= - -Creative Commons is not a party to its public -licenses. Notwithstanding, Creative Commons may elect to apply one of -its public licenses to material it publishes and in those instances -will be considered the “Licensor.” The text of the Creative Commons -public licenses is dedicated to the public domain under the CC0 Public -Domain Dedication. Except for the limited purpose of indicating that -material is shared under a Creative Commons public license or as -otherwise permitted by the Creative Commons policies published at -creativecommons.org/policies, Creative Commons does not authorize the -use of the trademark "Creative Commons" or any other trademark or logo -of Creative Commons without its prior written consent including, -without limitation, in connection with any unauthorized modifications -to any of its public licenses or any other arrangements, -understandings, or agreements concerning use of licensed material. For -the avoidance of doubt, this paragraph does not form part of the -public licenses. - -Creative Commons may be contacted at creativecommons.org. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-1.0.txt b/vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-1.0.txt deleted file mode 100644 index 0f914b6..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-1.0.txt +++ /dev/null @@ -1,73 +0,0 @@ -Creative Commons Attribution-NonCommercial 1.0 -CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS DRAFT LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE. -License - -THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE IS PROHIBITED. - -BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS. - -1. Definitions - -a. "Collective Work" means a work, such as a periodical issue, anthology or encyclopedia, in which the Work in its entirety in unmodified form, along with a number of other contributions, constituting separate and independent works in themselves, are assembled into a collective whole. A work that constitutes a Collective Work will not be considered a Derivative Work (as defined below) for the purposes of this License. - -b. "Derivative Work" means a work based upon the Work or upon the Work and other pre-existing works, such as a translation, musical arrangement, dramatization, fictionalization, motion picture version, sound recording, art reproduction, abridgment, condensation, or any other form in which the Work may be recast, transformed, or adapted, except that a work that constitutes a Collective Work will not be considered a Derivative Work for the purpose of this License. - -c. "Licensor" means the individual or entity that offers the Work under the terms of this License. - -d. "Original Author" means the individual or entity who created the Work. - -e. "Work" means the copyrightable work of authorship offered under the terms of this License. - -f. "You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation. - -2. Fair Use Rights. Nothing in this license is intended to reduce, limit, or restrict any rights arising from fair use, first sale or other limitations on the exclusive rights of the copyright owner under copyright law or other applicable laws. - -3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below: - -a. to reproduce the Work, to incorporate the Work into one or more Collective Works, and to reproduce the Work as incorporated in the Collective Works; - -b. to create and reproduce Derivative Works; - -c. to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission the Work including as incorporated in Collective Works; - -d. to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission Derivative Works; - -The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. All rights not expressly granted by Licensor are hereby reserved. - -4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions: - -a. You may distribute, publicly display, publicly perform, or publicly digitally perform the Work only under the terms of this License, and You must include a copy of, or the Uniform Resource Identifier for, this License with every copy or phonorecord of the Work You distribute, publicly display, publicly perform, or publicly digitally perform. You may not offer or impose any terms on the Work that alter or restrict the terms of this License or the recipients' exercise of the rights granted hereunder. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties. You may not distribute, publicly display, publicly perform, or publicly digitally perform the Work with any technological measures that control access or use of the Work in a manner inconsistent with the terms of this License Agreement. The above applies to the Work as incorporated in a Collective Work, but this does not require the Collective Work apart from the Work itself to be made subject to the terms of this License. If You create a Collective Work, upon notice from any Licensor You must, to the extent practicable, remove from the Collective Work any reference to such Licensor or the Original Author, as requested. If You create a Derivative Work, upon notice from any Licensor You must, to the extent practicable, remove from the Derivative Work any reference to such Licensor or the Original Author, as requested. - -b. You may not exercise any of the rights granted to You in Section 3 above in any manner that is primarily intended for or directed toward commercial advantage or private monetary compensation. The exchange of the Work for other copyrighted works by means of digital file-sharing or otherwise shall not be considered to be intended for or directed toward commercial advantage or private monetary compensation, provided there is no payment of any monetary compensation in connection with the exchange of copyrighted works. - -c. If you distribute, publicly display, publicly perform, or publicly digitally perform the Work or any Derivative Works or Collective Works, You must keep intact all copyright notices for the Work and give the Original Author credit reasonable to the medium or means You are utilizing by conveying the name (or pseudonym if applicable) of the Original Author if supplied; the title of the Work if supplied; in the case of a Derivative Work, a credit identifying the use of the Work in the Derivative Work (e.g., "French translation of the Work by Original Author," or "Screenplay based on original Work by Original Author"). Such credit may be implemented in any reasonable manner; provided, however, that in the case of a Derivative Work or Collective Work, at a minimum such credit will appear where any other comparable authorship credit appears and in a manner at least as prominent as such other comparable authorship credit. - -5. Representations, Warranties and Disclaimer - -By offering the Work for public release under this License, Licensor represents and warrants that, to the best of Licensor's knowledge after reasonable inquiry: Licensor has secured all rights in the Work necessary to grant the license rights hereunder and to permit the lawful exercise of the rights granted hereunder without You having any obligation to pay any royalties, compulsory license fees, residuals or any other payments; The Work does not infringe the copyright, trademark, publicity rights, common law rights or any other right of any third party or constitute defamation, invasion of privacy or other tortious injury to any third party. EXCEPT AS EXPRESSLY STATED IN THIS LICENSE OR OTHERWISE AGREED IN WRITING OR REQUIRED BY APPLICABLE LAW, THE WORK IS LICENSED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES REGARDING THE CONTENTS OR ACCURACY OF THE WORK. - -6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, AND EXCEPT FOR DAMAGES ARISING FROM LIABILITY TO A THIRD PARTY RESULTING FROM BREACH OF THE WARRANTIES IN SECTION 5, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -7. Termination - -a. This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Derivative Works or Collective Works from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License. - -b. Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above. - -8. Miscellaneous - -a. Each time You distribute or publicly digitally perform the Work or a Collective Work, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License. - -b. Each time You distribute or publicly digitally perform a Derivative Work, Licensor offers to the recipient a license to the original Work on the same terms and conditions as the license granted to You under this License. - -c. If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. - -d. No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent. - -e. This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You. - -Creative Commons is not a party to this License, and makes no warranty whatsoever in connection with the Work. Creative Commons will not be liable to You or any party on any legal theory for any damages whatsoever, including without limitation any general, special, incidental or consequential damages arising in connection to this license. Notwithstanding the foregoing two (2) sentences, if Creative Commons has expressly identified itself as the Licensor hereunder, it shall have all rights and obligations of Licensor. - -Except for the limited purpose of indicating to the public that the Work is licensed under the CCPL, neither party will use the trademark "Creative Commons" or any related trademark or logo of Creative Commons without the prior written consent of Creative Commons. Any permitted use will be in compliance with Creative Commons' then-current trademark usage guidelines, as may be published on its website or otherwise made available upon request from time to time. - -Creative Commons may be contacted at http://creativecommons.org/. diff --git a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-2.0.txt b/vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-2.0.txt deleted file mode 100644 index a4ff3c7..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-2.0.txt +++ /dev/null @@ -1,80 +0,0 @@ -Creative Commons Attribution-NonCommercial 2.0 -CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE. -License - -THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. - -BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS. - -1. Definitions - -a. "Collective Work" means a work, such as a periodical issue, anthology or encyclopedia, in which the Work in its entirety in unmodified form, along with a number of other contributions, constituting separate and independent works in themselves, are assembled into a collective whole. A work that constitutes a Collective Work will not be considered a Derivative Work (as defined below) for the purposes of this License. - -b. "Derivative Work" means a work based upon the Work or upon the Work and other pre-existing works, such as a translation, musical arrangement, dramatization, fictionalization, motion picture version, sound recording, art reproduction, abridgment, condensation, or any other form in which the Work may be recast, transformed, or adapted, except that a work that constitutes a Collective Work will not be considered a Derivative Work for the purpose of this License. For the avoidance of doubt, where the Work is a musical composition or sound recording, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered a Derivative Work for the purpose of this License. - -c. "Licensor" means the individual or entity that offers the Work under the terms of this License. - -d. "Original Author" means the individual or entity who created the Work. - -e. "Work" means the copyrightable work of authorship offered under the terms of this License. - -f. "You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation. - -2. Fair Use Rights. Nothing in this license is intended to reduce, limit, or restrict any rights arising from fair use, first sale or other limitations on the exclusive rights of the copyright owner under copyright law or other applicable laws. - -3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below: - -a. to reproduce the Work, to incorporate the Work into one or more Collective Works, and to reproduce the Work as incorporated in the Collective Works; - -b. to create and reproduce Derivative Works; - -c. to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission the Work including as incorporated in Collective Works; - -d. to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission Derivative Works; - -The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. All rights not expressly granted by Licensor are hereby reserved, including but not limited to the rights set forth in Sections 4(d) and 4(e). - -4. Restrictions.The license granted in Section 3 above is expressly made subject to and limited by the following restrictions: - -a. You may distribute, publicly display, publicly perform, or publicly digitally perform the Work only under the terms of this License, and You must include a copy of, or the Uniform Resource Identifier for, this License with every copy or phonorecord of the Work You distribute, publicly display, publicly perform, or publicly digitally perform. You may not offer or impose any terms on the Work that alter or restrict the terms of this License or the recipients' exercise of the rights granted hereunder. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties. You may not distribute, publicly display, publicly perform, or publicly digitally perform the Work with any technological measures that control access or use of the Work in a manner inconsistent with the terms of this License Agreement. The above applies to the Work as incorporated in a Collective Work, but this does not require the Collective Work apart from the Work itself to be made subject to the terms of this License. If You create a Collective Work, upon notice from any Licensor You must, to the extent practicable, remove from the Collective Work any reference to such Licensor or the Original Author, as requested. If You create a Derivative Work, upon notice from any Licensor You must, to the extent practicable, remove from the Derivative Work any reference to such Licensor or the Original Author, as requested. - -b. You may not exercise any of the rights granted to You in Section 3 above in any manner that is primarily intended for or directed toward commercial advantage or private monetary compensation. The exchange of the Work for other copyrighted works by means of digital file-sharing or otherwise shall not be considered to be intended for or directed toward commercial advantage or private monetary compensation, provided there is no payment of any monetary compensation in connection with the exchange of copyrighted works. - -c. If you distribute, publicly display, publicly perform, or publicly digitally perform the Work or any Derivative Works or Collective Works, You must keep intact all copyright notices for the Work and give the Original Author credit reasonable to the medium or means You are utilizing by conveying the name (or pseudonym if applicable) of the Original Author if supplied; the title of the Work if supplied; to the extent reasonably practicable, the Uniform Resource Identifier, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and in the case of a Derivative Work, a credit identifying the use of the Work in the Derivative Work (e.g., "French translation of the Work by Original Author," or "Screenplay based on original Work by Original Author"). Such credit may be implemented in any reasonable manner; provided, however, that in the case of a Derivative Work or Collective Work, at a minimum such credit will appear where any other comparable authorship credit appears and in a manner at least as prominent as such other comparable authorship credit. - -d. For the avoidance of doubt, where the Work is a musical composition: - -i. Performance Royalties Under Blanket Licenses. Licensor reserves the exclusive right to collect, whether individually or via a performance rights society (e.g. ASCAP, BMI, SESAC), royalties for the public performance or public digital performance (e.g. webcast) of the Work if that performance is primarily intended for or directed toward commercial advantage or private monetary compensation. - -ii. Mechanical Rights and Statutory Royalties. Licensor reserves the exclusive right to collect, whether individually or via a music rights agency or designated agent (e.g. Harry Fox Agency), royalties for any phonorecord You create from the Work ("cover version") and distribute, subject to the compulsory license created by 17 USC Section 115 of the US Copyright Act (or the equivalent in other jurisdictions), if Your distribution of such cover version is primarily intended for or directed toward commercial advantage or private monetary compensation. Webcasting Rights and Statutory Royalties. For the avoidance of doubt, where the Work is a sound recording, Licensor reserves the exclusive right to collect, whether individually or via a performance-rights society (e.g. SoundExchange), royalties for the public digital performance (e.g. webcast) of the Work, subject to the compulsory license created by 17 USC Section 114 of the US Copyright Act (or the equivalent in other jurisdictions), if Your public digital performance is primarily intended for or directed toward commercial advantage or private monetary compensation. - -5. Representations, Warranties and Disclaimer - -UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. - -6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -7. Termination - -a. This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Derivative Works or Collective Works from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License. - -b. Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above. - -8. Miscellaneous - -a. Each time You distribute or publicly digitally perform the Work or a Collective Work, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License. - -b. Each time You distribute or publicly digitally perform a Derivative Work, Licensor offers to the recipient a license to the original Work on the same terms and conditions as the license granted to You under this License. - -c. If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. - -d. No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent. - -e. This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You. - -Creative Commons is not a party to this License, and makes no warranty whatsoever in connection with the Work. Creative Commons will not be liable to You or any party on any legal theory for any damages whatsoever, including without limitation any general, special, incidental or consequential damages arising in connection to this license. Notwithstanding the foregoing two (2) sentences, if Creative Commons has expressly identified itself as the Licensor hereunder, it shall have all rights and obligations of Licensor. - -Except for the limited purpose of indicating to the public that the Work is licensed under the CCPL, neither party will use the trademark "Creative Commons" or any related trademark or logo of Creative Commons without the prior written consent of Creative Commons. Any permitted use will be in compliance with Creative Commons' then-current trademark usage guidelines, as may be published on its website or otherwise made available upon request from time to time. - -Creative Commons may be contacted at http://creativecommons.org/. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-2.5.txt b/vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-2.5.txt deleted file mode 100644 index 5d4f7aa..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-2.5.txt +++ /dev/null @@ -1,79 +0,0 @@ -Creative Commons Attribution-NonCommercial 2.5 -CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE. -License - -THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. - -BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS. - -1. Definitions - -a. "Collective Work" means a work, such as a periodical issue, anthology or encyclopedia, in which the Work in its entirety in unmodified form, along with a number of other contributions, constituting separate and independent works in themselves, are assembled into a collective whole. A work that constitutes a Collective Work will not be considered a Derivative Work (as defined below) for the purposes of this License. - -b. "Derivative Work" means a work based upon the Work or upon the Work and other pre-existing works, such as a translation, musical arrangement, dramatization, fictionalization, motion picture version, sound recording, art reproduction, abridgment, condensation, or any other form in which the Work may be recast, transformed, or adapted, except that a work that constitutes a Collective Work will not be considered a Derivative Work for the purpose of this License. For the avoidance of doubt, where the Work is a musical composition or sound recording, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered a Derivative Work for the purpose of this License. - -c. "Licensor" means the individual or entity that offers the Work under the terms of this License. "Original Author" means the individual or entity who created the Work. - -d. "Work" means the copyrightable work of authorship offered under the terms of this License. - -e. "You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation. - -2. Fair Use Rights. Nothing in this license is intended to reduce, limit, or restrict any rights arising from fair use, first sale or other limitations on the exclusive rights of the copyright owner under copyright law or other applicable laws. - -3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below: - -a. to reproduce the Work, to incorporate the Work into one or more Collective Works, and to reproduce the Work as incorporated in the Collective Works; - -b. to create and reproduce Derivative Works; - -c. to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission the Work including as incorporated in Collective Works; - -d. to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission Derivative Works; - -The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. All rights not expressly granted by Licensor are hereby reserved, including but not limited to the rights set forth in Sections 4(d) and 4(e). - -4. Restrictions.The license granted in Section 3 above is expressly made subject to and limited by the following restrictions: - -a. You may distribute, publicly display, publicly perform, or publicly digitally perform the Work only under the terms of this License, and You must include a copy of, or the Uniform Resource Identifier for, this License with every copy or phonorecord of the Work You distribute, publicly display, publicly perform, or publicly digitally perform. You may not offer or impose any terms on the Work that alter or restrict the terms of this License or the recipients' exercise of the rights granted hereunder. - -b. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties. You may not distribute, publicly display, publicly perform, or publicly digitally perform the Work with any technological measures that control access or use of the Work in a manner inconsistent with the terms of this License Agreement. The above applies to the Work as incorporated in a Collective Work, but this does not require the Collective Work apart from the Work itself to be made subject to the terms of this License. If You create a Collective Work, upon notice from any Licensor You must, to the extent practicable, remove from the Collective Work any credit as required by clause 4(c), as requested. If You create a Derivative Work, upon notice from any Licensor You must, to the extent practicable, remove from the Derivative Work any credit as required by clause 4(c), as requested. You may not exercise any of the rights granted to You in Section 3 above in any manner that is primarily intended for or directed toward commercial advantage or private monetary compensation. The exchange of the Work for other copyrighted works by means of digital file-sharing or otherwise shall not be considered to be intended for or directed toward commercial advantage or private monetary compensation, provided there is no payment of any monetary compensation in connection with the exchange of copyrighted works. - -c. If you distribute, publicly display, publicly perform, or publicly digitally perform the Work or any Derivative Works or Collective Works, You must keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) the name of Original Author (or pseudonym, if applicable) if supplied, and/or (ii) if the Original Author and/or Licensor designate another party or parties (e.g. a sponsor institute, publishing entity, journal) for attribution in Licensor's copyright notice, terms of service or by other reasonable means, the name of such party or parties; the title of the Work if supplied; to the extent reasonably practicable, the Uniform Resource Identifier, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and in the case of a Derivative Work, a credit identifying the use of the Work in the Derivative Work (e.g., "French translation of the Work by Original Author," or "Screenplay based on original Work by Original Author"). Such credit may be implemented in any reasonable manner; provided, however, that in the case of a Derivative Work or Collective Work, at a minimum such credit will appear where any other comparable authorship credit appears and in a manner at least as prominent as such other comparable authorship credit. - -d. For the avoidance of doubt, where the Work is a musical composition: - -i. Performance Royalties Under Blanket Licenses. Licensor reserves the exclusive right to collect, whether individually or via a performance rights society (e.g. ASCAP, BMI, SESAC), royalties for the public performance or public digital performance (e.g. webcast) of the Work if that performance is primarily intended for or directed toward commercial advantage or private monetary compensation. - -ii. Mechanical Rights and Statutory Royalties. Licensor reserves the exclusive right to collect, whether individually or via a music rights agency or designated agent (e.g. Harry Fox Agency), royalties for any phonorecord You create from the Work ("cover version") and distribute, subject to the compulsory license created by 17 USC Section 115 of the US Copyright Act (or the equivalent in other jurisdictions), if Your distribution of such cover version is primarily intended for or directed toward commercial advantage or private monetary compensation. - -e. Webcasting Rights and Statutory Royalties. For the avoidance of doubt, where the Work is a sound recording, Licensor reserves the exclusive right to collect, whether individually or via a performance-rights society (e.g. SoundExchange), royalties for the public digital performance (e.g. webcast) of the Work, subject to the compulsory license created by 17 USC Section 114 of the US Copyright Act (or the equivalent in other jurisdictions), if Your public digital performance is primarily intended for or directed toward commercial advantage or private monetary compensation. - -5. Representations, Warranties and Disclaimer - -UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. - -6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -7. Termination - -a. This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Derivative Works or Collective Works from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License. - -b. Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above. - -8. Miscellaneous - -a. Each time You distribute or publicly digitally perform the Work or a Collective Work, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License. - -b. Each time You distribute or publicly digitally perform a Derivative Work, Licensor offers to the recipient a license to the original Work on the same terms and conditions as the license granted to You under this License. - -c. If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. - -d. No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent. - -e. This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You. - -Creative Commons is not a party to this License, and makes no warranty whatsoever in connection with the Work. Creative Commons will not be liable to You or any party on any legal theory for any damages whatsoever, including without limitation any general, special, incidental or consequential damages arising in connection to this license. Notwithstanding the foregoing two (2) sentences, if Creative Commons has expressly identified itself as the Licensor hereunder, it shall have all rights and obligations of Licensor. - -Except for the limited purpose of indicating to the public that the Work is licensed under the CCPL, neither party will use the trademark "Creative Commons" or any related trademark or logo of Creative Commons without the prior written consent of Creative Commons. Any permitted use will be in compliance with Creative Commons' then-current trademark usage guidelines, as may be published on its website or otherwise made available upon request from time to time. - -Creative Commons may be contacted at http://creativecommons.org/. diff --git a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-3.0.txt b/vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-3.0.txt deleted file mode 100644 index 197ec4d..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-3.0.txt +++ /dev/null @@ -1,334 +0,0 @@ -Creative Commons Legal Code - -Attribution-NonCommercial 3.0 Unported - - CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE - LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN - ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS - INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES - REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR - DAMAGES RESULTING FROM ITS USE. - -License - -THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE -COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY -COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS -AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. - -BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE -TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY -BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS -CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND -CONDITIONS. - -1. Definitions - - a. "Adaptation" means a work based upon the Work, or upon the Work and - other pre-existing works, such as a translation, adaptation, - derivative work, arrangement of music or other alterations of a - literary or artistic work, or phonogram or performance and includes - cinematographic adaptations or any other form in which the Work may be - recast, transformed, or adapted including in any form recognizably - derived from the original, except that a work that constitutes a - Collection will not be considered an Adaptation for the purpose of - this License. For the avoidance of doubt, where the Work is a musical - work, performance or phonogram, the synchronization of the Work in - timed-relation with a moving image ("synching") will be considered an - Adaptation for the purpose of this License. - b. "Collection" means a collection of literary or artistic works, such as - encyclopedias and anthologies, or performances, phonograms or - broadcasts, or other works or subject matter other than works listed - in Section 1(f) below, which, by reason of the selection and - arrangement of their contents, constitute intellectual creations, in - which the Work is included in its entirety in unmodified form along - with one or more other contributions, each constituting separate and - independent works in themselves, which together are assembled into a - collective whole. A work that constitutes a Collection will not be - considered an Adaptation (as defined above) for the purposes of this - License. - c. "Distribute" means to make available to the public the original and - copies of the Work or Adaptation, as appropriate, through sale or - other transfer of ownership. - d. "Licensor" means the individual, individuals, entity or entities that - offer(s) the Work under the terms of this License. - e. "Original Author" means, in the case of a literary or artistic work, - the individual, individuals, entity or entities who created the Work - or if no individual or entity can be identified, the publisher; and in - addition (i) in the case of a performance the actors, singers, - musicians, dancers, and other persons who act, sing, deliver, declaim, - play in, interpret or otherwise perform literary or artistic works or - expressions of folklore; (ii) in the case of a phonogram the producer - being the person or legal entity who first fixes the sounds of a - performance or other sounds; and, (iii) in the case of broadcasts, the - organization that transmits the broadcast. - f. "Work" means the literary and/or artistic work offered under the terms - of this License including without limitation any production in the - literary, scientific and artistic domain, whatever may be the mode or - form of its expression including digital form, such as a book, - pamphlet and other writing; a lecture, address, sermon or other work - of the same nature; a dramatic or dramatico-musical work; a - choreographic work or entertainment in dumb show; a musical - composition with or without words; a cinematographic work to which are - assimilated works expressed by a process analogous to cinematography; - a work of drawing, painting, architecture, sculpture, engraving or - lithography; a photographic work to which are assimilated works - expressed by a process analogous to photography; a work of applied - art; an illustration, map, plan, sketch or three-dimensional work - relative to geography, topography, architecture or science; a - performance; a broadcast; a phonogram; a compilation of data to the - extent it is protected as a copyrightable work; or a work performed by - a variety or circus performer to the extent it is not otherwise - considered a literary or artistic work. - g. "You" means an individual or entity exercising rights under this - License who has not previously violated the terms of this License with - respect to the Work, or who has received express permission from the - Licensor to exercise rights under this License despite a previous - violation. - h. "Publicly Perform" means to perform public recitations of the Work and - to communicate to the public those public recitations, by any means or - process, including by wire or wireless means or public digital - performances; to make available to the public Works in such a way that - members of the public may access these Works from a place and at a - place individually chosen by them; to perform the Work to the public - by any means or process and the communication to the public of the - performances of the Work, including by public digital performance; to - broadcast and rebroadcast the Work by any means including signs, - sounds or images. - i. "Reproduce" means to make copies of the Work by any means including - without limitation by sound or visual recordings and the right of - fixation and reproducing fixations of the Work, including storage of a - protected performance or phonogram in digital form or other electronic - medium. - -2. Fair Dealing Rights. Nothing in this License is intended to reduce, -limit, or restrict any uses free from copyright or rights arising from -limitations or exceptions that are provided for in connection with the -copyright protection under copyright law or other applicable laws. - -3. License Grant. Subject to the terms and conditions of this License, -Licensor hereby grants You a worldwide, royalty-free, non-exclusive, -perpetual (for the duration of the applicable copyright) license to -exercise the rights in the Work as stated below: - - a. to Reproduce the Work, to incorporate the Work into one or more - Collections, and to Reproduce the Work as incorporated in the - Collections; - b. to create and Reproduce Adaptations provided that any such Adaptation, - including any translation in any medium, takes reasonable steps to - clearly label, demarcate or otherwise identify that changes were made - to the original Work. For example, a translation could be marked "The - original work was translated from English to Spanish," or a - modification could indicate "The original work has been modified."; - c. to Distribute and Publicly Perform the Work including as incorporated - in Collections; and, - d. to Distribute and Publicly Perform Adaptations. - -The above rights may be exercised in all media and formats whether now -known or hereafter devised. The above rights include the right to make -such modifications as are technically necessary to exercise the rights in -other media and formats. Subject to Section 8(f), all rights not expressly -granted by Licensor are hereby reserved, including but not limited to the -rights set forth in Section 4(d). - -4. Restrictions. The license granted in Section 3 above is expressly made -subject to and limited by the following restrictions: - - a. You may Distribute or Publicly Perform the Work only under the terms - of this License. You must include a copy of, or the Uniform Resource - Identifier (URI) for, this License with every copy of the Work You - Distribute or Publicly Perform. You may not offer or impose any terms - on the Work that restrict the terms of this License or the ability of - the recipient of the Work to exercise the rights granted to that - recipient under the terms of the License. You may not sublicense the - Work. You must keep intact all notices that refer to this License and - to the disclaimer of warranties with every copy of the Work You - Distribute or Publicly Perform. When You Distribute or Publicly - Perform the Work, You may not impose any effective technological - measures on the Work that restrict the ability of a recipient of the - Work from You to exercise the rights granted to that recipient under - the terms of the License. This Section 4(a) applies to the Work as - incorporated in a Collection, but this does not require the Collection - apart from the Work itself to be made subject to the terms of this - License. If You create a Collection, upon notice from any Licensor You - must, to the extent practicable, remove from the Collection any credit - as required by Section 4(c), as requested. If You create an - Adaptation, upon notice from any Licensor You must, to the extent - practicable, remove from the Adaptation any credit as required by - Section 4(c), as requested. - b. You may not exercise any of the rights granted to You in Section 3 - above in any manner that is primarily intended for or directed toward - commercial advantage or private monetary compensation. The exchange of - the Work for other copyrighted works by means of digital file-sharing - or otherwise shall not be considered to be intended for or directed - toward commercial advantage or private monetary compensation, provided - there is no payment of any monetary compensation in connection with - the exchange of copyrighted works. - c. If You Distribute, or Publicly Perform the Work or any Adaptations or - Collections, You must, unless a request has been made pursuant to - Section 4(a), keep intact all copyright notices for the Work and - provide, reasonable to the medium or means You are utilizing: (i) the - name of the Original Author (or pseudonym, if applicable) if supplied, - and/or if the Original Author and/or Licensor designate another party - or parties (e.g., a sponsor institute, publishing entity, journal) for - attribution ("Attribution Parties") in Licensor's copyright notice, - terms of service or by other reasonable means, the name of such party - or parties; (ii) the title of the Work if supplied; (iii) to the - extent reasonably practicable, the URI, if any, that Licensor - specifies to be associated with the Work, unless such URI does not - refer to the copyright notice or licensing information for the Work; - and, (iv) consistent with Section 3(b), in the case of an Adaptation, - a credit identifying the use of the Work in the Adaptation (e.g., - "French translation of the Work by Original Author," or "Screenplay - based on original Work by Original Author"). The credit required by - this Section 4(c) may be implemented in any reasonable manner; - provided, however, that in the case of a Adaptation or Collection, at - a minimum such credit will appear, if a credit for all contributing - authors of the Adaptation or Collection appears, then as part of these - credits and in a manner at least as prominent as the credits for the - other contributing authors. For the avoidance of doubt, You may only - use the credit required by this Section for the purpose of attribution - in the manner set out above and, by exercising Your rights under this - License, You may not implicitly or explicitly assert or imply any - connection with, sponsorship or endorsement by the Original Author, - Licensor and/or Attribution Parties, as appropriate, of You or Your - use of the Work, without the separate, express prior written - permission of the Original Author, Licensor and/or Attribution - Parties. - d. For the avoidance of doubt: - - i. Non-waivable Compulsory License Schemes. In those jurisdictions in - which the right to collect royalties through any statutory or - compulsory licensing scheme cannot be waived, the Licensor - reserves the exclusive right to collect such royalties for any - exercise by You of the rights granted under this License; - ii. Waivable Compulsory License Schemes. In those jurisdictions in - which the right to collect royalties through any statutory or - compulsory licensing scheme can be waived, the Licensor reserves - the exclusive right to collect such royalties for any exercise by - You of the rights granted under this License if Your exercise of - such rights is for a purpose or use which is otherwise than - noncommercial as permitted under Section 4(b) and otherwise waives - the right to collect royalties through any statutory or compulsory - licensing scheme; and, - iii. Voluntary License Schemes. The Licensor reserves the right to - collect royalties, whether individually or, in the event that the - Licensor is a member of a collecting society that administers - voluntary licensing schemes, via that society, from any exercise - by You of the rights granted under this License that is for a - purpose or use which is otherwise than noncommercial as permitted - under Section 4(c). - e. Except as otherwise agreed in writing by the Licensor or as may be - otherwise permitted by applicable law, if You Reproduce, Distribute or - Publicly Perform the Work either by itself or as part of any - Adaptations or Collections, You must not distort, mutilate, modify or - take other derogatory action in relation to the Work which would be - prejudicial to the Original Author's honor or reputation. Licensor - agrees that in those jurisdictions (e.g. Japan), in which any exercise - of the right granted in Section 3(b) of this License (the right to - make Adaptations) would be deemed to be a distortion, mutilation, - modification or other derogatory action prejudicial to the Original - Author's honor and reputation, the Licensor will waive or not assert, - as appropriate, this Section, to the fullest extent permitted by the - applicable national law, to enable You to reasonably exercise Your - right under Section 3(b) of this License (right to make Adaptations) - but not otherwise. - -5. Representations, Warranties and Disclaimer - -UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR -OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY -KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, -INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, -FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF -LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, -WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION -OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. - -6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE -LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR -ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES -ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS -BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -7. Termination - - a. This License and the rights granted hereunder will terminate - automatically upon any breach by You of the terms of this License. - Individuals or entities who have received Adaptations or Collections - from You under this License, however, will not have their licenses - terminated provided such individuals or entities remain in full - compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will - survive any termination of this License. - b. Subject to the above terms and conditions, the license granted here is - perpetual (for the duration of the applicable copyright in the Work). - Notwithstanding the above, Licensor reserves the right to release the - Work under different license terms or to stop distributing the Work at - any time; provided, however that any such election will not serve to - withdraw this License (or any other license that has been, or is - required to be, granted under the terms of this License), and this - License will continue in full force and effect unless terminated as - stated above. - -8. Miscellaneous - - a. Each time You Distribute or Publicly Perform the Work or a Collection, - the Licensor offers to the recipient a license to the Work on the same - terms and conditions as the license granted to You under this License. - b. Each time You Distribute or Publicly Perform an Adaptation, Licensor - offers to the recipient a license to the original Work on the same - terms and conditions as the license granted to You under this License. - c. If any provision of this License is invalid or unenforceable under - applicable law, it shall not affect the validity or enforceability of - the remainder of the terms of this License, and without further action - by the parties to this agreement, such provision shall be reformed to - the minimum extent necessary to make such provision valid and - enforceable. - d. No term or provision of this License shall be deemed waived and no - breach consented to unless such waiver or consent shall be in writing - and signed by the party to be charged with such waiver or consent. - e. This License constitutes the entire agreement between the parties with - respect to the Work licensed here. There are no understandings, - agreements or representations with respect to the Work not specified - here. Licensor shall not be bound by any additional provisions that - may appear in any communication from You. This License may not be - modified without the mutual written agreement of the Licensor and You. - f. The rights granted under, and the subject matter referenced, in this - License were drafted utilizing the terminology of the Berne Convention - for the Protection of Literary and Artistic Works (as amended on - September 28, 1979), the Rome Convention of 1961, the WIPO Copyright - Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 - and the Universal Copyright Convention (as revised on July 24, 1971). - These rights and subject matter take effect in the relevant - jurisdiction in which the License terms are sought to be enforced - according to the corresponding provisions of the implementation of - those treaty provisions in the applicable national law. If the - standard suite of rights granted under applicable copyright law - includes additional rights not granted under this License, such - additional rights are deemed to be included in the License; this - License is not intended to restrict the license of any rights under - applicable law. - - -Creative Commons Notice - - Creative Commons is not a party to this License, and makes no warranty - whatsoever in connection with the Work. Creative Commons will not be - liable to You or any party on any legal theory for any damages - whatsoever, including without limitation any general, special, - incidental or consequential damages arising in connection to this - license. Notwithstanding the foregoing two (2) sentences, if Creative - Commons has expressly identified itself as the Licensor hereunder, it - shall have all rights and obligations of Licensor. - - Except for the limited purpose of indicating to the public that the - Work is licensed under the CCPL, Creative Commons does not authorize - the use by either party of the trademark "Creative Commons" or any - related trademark or logo of Creative Commons without the prior - written consent of Creative Commons. Any permitted use will be in - compliance with Creative Commons' then-current trademark usage - guidelines, as may be published on its website or otherwise made - available upon request from time to time. For the avoidance of doubt, - this trademark restriction does not form part of the License. - - Creative Commons may be contacted at https://creativecommons.org/. diff --git a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-4.0.txt b/vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-4.0.txt deleted file mode 100644 index f3ed608..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-4.0.txt +++ /dev/null @@ -1,408 +0,0 @@ -Attribution-NonCommercial 4.0 International - -======================================================================= - -Creative Commons Corporation ("Creative Commons") is not a law firm and -does not provide legal services or legal advice. Distribution of -Creative Commons public licenses does not create a lawyer-client or -other relationship. Creative Commons makes its licenses and related -information available on an "as-is" basis. Creative Commons gives no -warranties regarding its licenses, any material licensed under their -terms and conditions, or any related information. Creative Commons -disclaims all liability for damages resulting from their use to the -fullest extent possible. - -Using Creative Commons Public Licenses - -Creative Commons public licenses provide a standard set of terms and -conditions that creators and other rights holders may use to share -original works of authorship and other material subject to copyright -and certain other rights specified in the public license below. The -following considerations are for informational purposes only, are not -exhaustive, and do not form part of our licenses. - - Considerations for licensors: Our public licenses are - intended for use by those authorized to give the public - permission to use material in ways otherwise restricted by - copyright and certain other rights. Our licenses are - irrevocable. Licensors should read and understand the terms - and conditions of the license they choose before applying it. - Licensors should also secure all rights necessary before - applying our licenses so that the public can reuse the - material as expected. Licensors should clearly mark any - material not subject to the license. This includes other CC- - licensed material, or material used under an exception or - limitation to copyright. More considerations for licensors: - wiki.creativecommons.org/Considerations_for_licensors - - Considerations for the public: By using one of our public - licenses, a licensor grants the public permission to use the - licensed material under specified terms and conditions. If - the licensor's permission is not necessary for any reason--for - example, because of any applicable exception or limitation to - copyright--then that use is not regulated by the license. Our - licenses grant only permissions under copyright and certain - other rights that a licensor has authority to grant. Use of - the licensed material may still be restricted for other - reasons, including because others have copyright or other - rights in the material. A licensor may make special requests, - such as asking that all changes be marked or described. - Although not required by our licenses, you are encouraged to - respect those requests where reasonable. More_considerations - for the public: - wiki.creativecommons.org/Considerations_for_licensees - -======================================================================= - -Creative Commons Attribution-NonCommercial 4.0 International Public -License - -By exercising the Licensed Rights (defined below), You accept and agree -to be bound by the terms and conditions of this Creative Commons -Attribution-NonCommercial 4.0 International Public License ("Public -License"). To the extent this Public License may be interpreted as a -contract, You are granted the Licensed Rights in consideration of Your -acceptance of these terms and conditions, and the Licensor grants You -such rights in consideration of benefits the Licensor receives from -making the Licensed Material available under these terms and -conditions. - - -Section 1 -- Definitions. - - a. Adapted Material means material subject to Copyright and Similar - Rights that is derived from or based upon the Licensed Material - and in which the Licensed Material is translated, altered, - arranged, transformed, or otherwise modified in a manner requiring - permission under the Copyright and Similar Rights held by the - Licensor. For purposes of this Public License, where the Licensed - Material is a musical work, performance, or sound recording, - Adapted Material is always produced where the Licensed Material is - synched in timed relation with a moving image. - - b. Adapter's License means the license You apply to Your Copyright - and Similar Rights in Your contributions to Adapted Material in - accordance with the terms and conditions of this Public License. - - c. Copyright and Similar Rights means copyright and/or similar rights - closely related to copyright including, without limitation, - performance, broadcast, sound recording, and Sui Generis Database - Rights, without regard to how the rights are labeled or - categorized. For purposes of this Public License, the rights - specified in Section 2(b)(1)-(2) are not Copyright and Similar - Rights. - d. Effective Technological Measures means those measures that, in the - absence of proper authority, may not be circumvented under laws - fulfilling obligations under Article 11 of the WIPO Copyright - Treaty adopted on December 20, 1996, and/or similar international - agreements. - - e. Exceptions and Limitations means fair use, fair dealing, and/or - any other exception or limitation to Copyright and Similar Rights - that applies to Your use of the Licensed Material. - - f. Licensed Material means the artistic or literary work, database, - or other material to which the Licensor applied this Public - License. - - g. Licensed Rights means the rights granted to You subject to the - terms and conditions of this Public License, which are limited to - all Copyright and Similar Rights that apply to Your use of the - Licensed Material and that the Licensor has authority to license. - - h. Licensor means the individual(s) or entity(ies) granting rights - under this Public License. - - i. NonCommercial means not primarily intended for or directed towards - commercial advantage or monetary compensation. For purposes of - this Public License, the exchange of the Licensed Material for - other material subject to Copyright and Similar Rights by digital - file-sharing or similar means is NonCommercial provided there is - no payment of monetary compensation in connection with the - exchange. - - j. Share means to provide material to the public by any means or - process that requires permission under the Licensed Rights, such - as reproduction, public display, public performance, distribution, - dissemination, communication, or importation, and to make material - available to the public including in ways that members of the - public may access the material from a place and at a time - individually chosen by them. - - k. Sui Generis Database Rights means rights other than copyright - resulting from Directive 96/9/EC of the European Parliament and of - the Council of 11 March 1996 on the legal protection of databases, - as amended and/or succeeded, as well as other essentially - equivalent rights anywhere in the world. - - l. You means the individual or entity exercising the Licensed Rights - under this Public License. Your has a corresponding meaning. - - -Section 2 -- Scope. - - a. License grant. - - 1. Subject to the terms and conditions of this Public License, - the Licensor hereby grants You a worldwide, royalty-free, - non-sublicensable, non-exclusive, irrevocable license to - exercise the Licensed Rights in the Licensed Material to: - - a. reproduce and Share the Licensed Material, in whole or - in part, for NonCommercial purposes only; and - - b. produce, reproduce, and Share Adapted Material for - NonCommercial purposes only. - - 2. Exceptions and Limitations. For the avoidance of doubt, where - Exceptions and Limitations apply to Your use, this Public - License does not apply, and You do not need to comply with - its terms and conditions. - - 3. Term. The term of this Public License is specified in Section - 6(a). - - 4. Media and formats; technical modifications allowed. The - Licensor authorizes You to exercise the Licensed Rights in - all media and formats whether now known or hereafter created, - and to make technical modifications necessary to do so. The - Licensor waives and/or agrees not to assert any right or - authority to forbid You from making technical modifications - necessary to exercise the Licensed Rights, including - technical modifications necessary to circumvent Effective - Technological Measures. For purposes of this Public License, - simply making modifications authorized by this Section 2(a) - (4) never produces Adapted Material. - - 5. Downstream recipients. - - a. Offer from the Licensor -- Licensed Material. Every - recipient of the Licensed Material automatically - receives an offer from the Licensor to exercise the - Licensed Rights under the terms and conditions of this - Public License. - - b. No downstream restrictions. You may not offer or impose - any additional or different terms or conditions on, or - apply any Effective Technological Measures to, the - Licensed Material if doing so restricts exercise of the - Licensed Rights by any recipient of the Licensed - Material. - - 6. No endorsement. Nothing in this Public License constitutes or - may be construed as permission to assert or imply that You - are, or that Your use of the Licensed Material is, connected - with, or sponsored, endorsed, or granted official status by, - the Licensor or others designated to receive attribution as - provided in Section 3(a)(1)(A)(i). - - b. Other rights. - - 1. Moral rights, such as the right of integrity, are not - licensed under this Public License, nor are publicity, - privacy, and/or other similar personality rights; however, to - the extent possible, the Licensor waives and/or agrees not to - assert any such rights held by the Licensor to the limited - extent necessary to allow You to exercise the Licensed - Rights, but not otherwise. - - 2. Patent and trademark rights are not licensed under this - Public License. - - 3. To the extent possible, the Licensor waives any right to - collect royalties from You for the exercise of the Licensed - Rights, whether directly or through a collecting society - under any voluntary or waivable statutory or compulsory - licensing scheme. In all other cases the Licensor expressly - reserves any right to collect such royalties, including when - the Licensed Material is used other than for NonCommercial - purposes. - - -Section 3 -- License Conditions. - -Your exercise of the Licensed Rights is expressly made subject to the -following conditions. - - a. Attribution. - - 1. If You Share the Licensed Material (including in modified - form), You must: - - a. retain the following if it is supplied by the Licensor - with the Licensed Material: - - i. identification of the creator(s) of the Licensed - Material and any others designated to receive - attribution, in any reasonable manner requested by - the Licensor (including by pseudonym if - designated); - - ii. a copyright notice; - - iii. a notice that refers to this Public License; - - iv. a notice that refers to the disclaimer of - warranties; - - v. a URI or hyperlink to the Licensed Material to the - extent reasonably practicable; - - b. indicate if You modified the Licensed Material and - retain an indication of any previous modifications; and - - c. indicate the Licensed Material is licensed under this - Public License, and include the text of, or the URI or - hyperlink to, this Public License. - - 2. You may satisfy the conditions in Section 3(a)(1) in any - reasonable manner based on the medium, means, and context in - which You Share the Licensed Material. For example, it may be - reasonable to satisfy the conditions by providing a URI or - hyperlink to a resource that includes the required - information. - - 3. If requested by the Licensor, You must remove any of the - information required by Section 3(a)(1)(A) to the extent - reasonably practicable. - - 4. If You Share Adapted Material You produce, the Adapter's - License You apply must not prevent recipients of the Adapted - Material from complying with this Public License. - - -Section 4 -- Sui Generis Database Rights. - -Where the Licensed Rights include Sui Generis Database Rights that -apply to Your use of the Licensed Material: - - a. for the avoidance of doubt, Section 2(a)(1) grants You the right - to extract, reuse, reproduce, and Share all or a substantial - portion of the contents of the database for NonCommercial purposes - only; - - b. if You include all or a substantial portion of the database - contents in a database in which You have Sui Generis Database - Rights, then the database in which You have Sui Generis Database - Rights (but not its individual contents) is Adapted Material; and - - c. You must comply with the conditions in Section 3(a) if You Share - all or a substantial portion of the contents of the database. - -For the avoidance of doubt, this Section 4 supplements and does not -replace Your obligations under this Public License where the Licensed -Rights include other Copyright and Similar Rights. - - -Section 5 -- Disclaimer of Warranties and Limitation of Liability. - - a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE - EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS - AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF - ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, - IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, - WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR - PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, - ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT - KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT - ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. - - b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE - TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, - NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, - INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, - COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR - USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN - ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR - DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR - IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. - - c. The disclaimer of warranties and limitation of liability provided - above shall be interpreted in a manner that, to the extent - possible, most closely approximates an absolute disclaimer and - waiver of all liability. - - -Section 6 -- Term and Termination. - - a. This Public License applies for the term of the Copyright and - Similar Rights licensed here. However, if You fail to comply with - this Public License, then Your rights under this Public License - terminate automatically. - - b. Where Your right to use the Licensed Material has terminated under - Section 6(a), it reinstates: - - 1. automatically as of the date the violation is cured, provided - it is cured within 30 days of Your discovery of the - violation; or - - 2. upon express reinstatement by the Licensor. - - For the avoidance of doubt, this Section 6(b) does not affect any - right the Licensor may have to seek remedies for Your violations - of this Public License. - - c. For the avoidance of doubt, the Licensor may also offer the - Licensed Material under separate terms or conditions or stop - distributing the Licensed Material at any time; however, doing so - will not terminate this Public License. - - d. Sections 1, 5, 6, 7, and 8 survive termination of this Public - License. - - -Section 7 -- Other Terms and Conditions. - - a. The Licensor shall not be bound by any additional or different - terms or conditions communicated by You unless expressly agreed. - - b. Any arrangements, understandings, or agreements regarding the - Licensed Material not stated herein are separate from and - independent of the terms and conditions of this Public License. - - -Section 8 -- Interpretation. - - a. For the avoidance of doubt, this Public License does not, and - shall not be interpreted to, reduce, limit, restrict, or impose - conditions on any use of the Licensed Material that could lawfully - be made without permission under this Public License. - - b. To the extent possible, if any provision of this Public License is - deemed unenforceable, it shall be automatically reformed to the - minimum extent necessary to make it enforceable. If the provision - cannot be reformed, it shall be severed from this Public License - without affecting the enforceability of the remaining terms and - conditions. - - c. No term or condition of this Public License will be waived and no - failure to comply consented to unless expressly agreed to by the - Licensor. - - d. Nothing in this Public License constitutes or may be interpreted - as a limitation upon, or waiver of, any privileges and immunities - that apply to the Licensor or You, including from the legal - processes of any jurisdiction or authority. - -======================================================================= - -Creative Commons is not a party to its public -licenses. Notwithstanding, Creative Commons may elect to apply one of -its public licenses to material it publishes and in those instances -will be considered the “Licensor.” The text of the Creative Commons -public licenses is dedicated to the public domain under the CC0 Public -Domain Dedication. Except for the limited purpose of indicating that -material is shared under a Creative Commons public license or as -otherwise permitted by the Creative Commons policies published at -creativecommons.org/policies, Creative Commons does not authorize the -use of the trademark "Creative Commons" or any other trademark or logo -of Creative Commons without its prior written consent including, -without limitation, in connection with any unauthorized modifications -to any of its public licenses or any other arrangements, -understandings, or agreements concerning use of licensed material. For -the avoidance of doubt, this paragraph does not form part of the -public licenses. - -Creative Commons may be contacted at creativecommons.org. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-ND-1.0.txt b/vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-ND-1.0.txt deleted file mode 100644 index f430223..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-ND-1.0.txt +++ /dev/null @@ -1,73 +0,0 @@ -Creative Commons Attribution-NoDerivs-NonCommercial 1.0 -CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS DRAFT LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE. -License - -THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE IS PROHIBITED. - -BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS. - -1. Definitions - -a. "Collective Work" means a work, such as a periodical issue, anthology or encyclopedia, in which the Work in its entirety in unmodified form, along with a number of other contributions, constituting separate and independent works in themselves, are assembled into a collective whole. A work that constitutes a Collective Work will not be considered a Derivative Work (as defined below) for the purposes of this License. - -b. "Derivative Work" means a work based upon the Work or upon the Work and other pre-existing works, such as a translation, musical arrangement, dramatization, fictionalization, motion picture version, sound recording, art reproduction, abridgment, condensation, or any other form in which the Work may be recast, transformed, or adapted, except that a work that constitutes a Collective Work will not be considered a Derivative Work for the purpose of this License. - -c. "Licensor" means the individual or entity that offers the Work under the terms of this License. - -d. "Original Author" means the individual or entity who created the Work. - -e. "Work" means the copyrightable work of authorship offered under the terms of this License. - -f. "You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation. - -2. Fair Use Rights. Nothing in this license is intended to reduce, limit, or restrict any rights arising from fair use, first sale or other limitations on the exclusive rights of the copyright owner under copyright law or other applicable laws. - -3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below: - -a. to reproduce the Work, to incorporate the Work into one or more Collective Works, and to reproduce the Work as incorporated in the Collective Works; - -b. to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission the Work including as incorporated in Collective Works; - -The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. All rights not expressly granted by Licensor are hereby reserved. - -4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions: - -a. You may distribute, publicly display, publicly perform, or publicly digitally perform the Work only under the terms of this License, and You must include a copy of, or the Uniform Resource Identifier for, this License with every copy or phonorecord of the Work You distribute, publicly display, publicly perform, or publicly digitally perform. You may not offer or impose any terms on the Work that alter or restrict the terms of this License or the recipients' exercise of the rights granted hereunder. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties. You may not distribute, publicly display, publicly perform, or publicly digitally perform the Work with any technological measures that control access or use of the Work in a manner inconsistent with the terms of this License Agreement. The above applies to the Work as incorporated in a Collective Work, but this does not require the Collective Work apart from the Work itself to be made subject to the terms of this License. If You create a Collective Work, upon notice from any Licensor You must, to the extent practicable, remove from the Collective Work any reference to such Licensor or the Original Author, as requested. - -b. You may not exercise any of the rights granted to You in Section 3 above in any manner that is primarily intended for or directed toward commercial advantage or private monetary compensation. The exchange of the Work for other copyrighted works by means of digital file-sharing or otherwise shall not be considered to be intended for or directed toward commercial advantage or private monetary compensation, provided there is no payment of any monetary compensation in connection with the exchange of copyrighted works. - -c. If you distribute, publicly display, publicly perform, or publicly digitally perform the Work or any Collective Works, You must keep intact all copyright notices for the Work and give the Original Author credit reasonable to the medium or means You are utilizing by conveying the name (or pseudonym if applicable) of the Original Author if supplied; the title of the Work if supplied. Such credit may be implemented in any reasonable manner; provided, however, that in the case of a Collective Work, at a minimum such credit will appear where any other comparable authorship credit appears and in a manner at least as prominent as such other comparable authorship credit. - -5. Representations, Warranties and Disclaimer - -a. By offering the Work for public release under this License, Licensor represents and warrants that, to the best of Licensor's knowledge after reasonable inquiry: - -i. Licensor has secured all rights in the Work necessary to grant the license rights hereunder and to permit the lawful exercise of the rights granted hereunder without You having any obligation to pay any royalties, compulsory license fees, residuals or any other payments; - -ii. The Work does not infringe the copyright, trademark, publicity rights, common law rights or any other right of any third party or constitute defamation, invasion of privacy or other tortious injury to any third party. - -b. EXCEPT AS EXPRESSLY STATED IN THIS LICENSE OR OTHERWISE AGREED IN WRITING OR REQUIRED BY APPLICABLE LAW, THE WORK IS LICENSED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES REGARDING THE CONTENTS OR ACCURACY OF THE WORK. - -6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, AND EXCEPT FOR DAMAGES ARISING FROM LIABILITY TO A THIRD PARTY RESULTING FROM BREACH OF THE WARRANTIES IN SECTION 5, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -7. Termination - -a. This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Collective Works from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License. - -b. Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above. - -8. Miscellaneous - -a. Each time You distribute or publicly digitally perform the Work or a Collective Work, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License. - -b. If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. - -c. No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent. - -d. This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You. - -Creative Commons is not a party to this License, and makes no warranty whatsoever in connection with the Work. Creative Commons will not be liable to You or any party on any legal theory for any damages whatsoever, including without limitation any general, special, incidental or consequential damages arising in connection to this license. Notwithstanding the foregoing two (2) sentences, if Creative Commons has expressly identified itself as the Licensor hereunder, it shall have all rights and obligations of Licensor. - -Except for the limited purpose of indicating to the public that the Work is licensed under the CCPL, neither party will use the trademark "Creative Commons" or any related trademark or logo of Creative Commons without the prior written consent of Creative Commons. Any permitted use will be in compliance with Creative Commons' then-current trademark usage guidelines, as may be published on its website or otherwise made available upon request from time to time. - -Creative Commons may be contacted at http://creativecommons.org/. diff --git a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-ND-2.0.txt b/vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-ND-2.0.txt deleted file mode 100644 index dc9f562..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-ND-2.0.txt +++ /dev/null @@ -1,75 +0,0 @@ -Creative Commons Attribution-NonCommercial-NoDerivs 2.0 -CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE. -License - -THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. - -BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS. - -1. Definitions - -a. "Collective Work" means a work, such as a periodical issue, anthology or encyclopedia, in which the Work in its entirety in unmodified form, along with a number of other contributions, constituting separate and independent works in themselves, are assembled into a collective whole. A work that constitutes a Collective Work will not be considered a Derivative Work (as defined below) for the purposes of this License. - -b. "Derivative Work" means a work based upon the Work or upon the Work and other pre-existing works, such as a translation, musical arrangement, dramatization, fictionalization, motion picture version, sound recording, art reproduction, abridgment, condensation, or any other form in which the Work may be recast, transformed, or adapted, except that a work that constitutes a Collective Work will not be considered a Derivative Work for the purpose of this License. For the avoidance of doubt, where the Work is a musical composition or sound recording, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered a Derivative Work for the purpose of this License. - -c. "Licensor" means the individual or entity that offers the Work under the terms of this License. - -d. "Original Author" means the individual or entity who created the Work. - -e. "Work" means the copyrightable work of authorship offered under the terms of this License. - -f. "You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation. - -2. Fair Use Rights. Nothing in this license is intended to reduce, limit, or restrict any rights arising from fair use, first sale or other limitations on the exclusive rights of the copyright owner under copyright law or other applicable laws. - -3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below: - -a. to reproduce the Work, to incorporate the Work into one or more Collective Works, and to reproduce the Work as incorporated in the Collective Works; - -b. to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission the Work including as incorporated in Collective Works; - -The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats, but otherwise you have no rights to make Derivative Works. All rights not expressly granted by Licensor are hereby reserved, including but not limited to the rights set forth in Sections 4(d) and 4(e). - -4. Restrictions.The license granted in Section 3 above is expressly made subject to and limited by the following restrictions: - -a. You may distribute, publicly display, publicly perform, or publicly digitally perform the Work only under the terms of this License, and You must include a copy of, or the Uniform Resource Identifier for, this License with every copy or phonorecord of the Work You distribute, publicly display, publicly perform, or publicly digitally perform. You may not offer or impose any terms on the Work that alter or restrict the terms of this License or the recipients' exercise of the rights granted hereunder. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties. You may not distribute, publicly display, publicly perform, or publicly digitally perform the Work with any technological measures that control access or use of the Work in a manner inconsistent with the terms of this License Agreement. The above applies to the Work as incorporated in a Collective Work, but this does not require the Collective Work apart from the Work itself to be made subject to the terms of this License. If You create a Collective Work, upon notice from any Licensor You must, to the extent practicable, remove from the Collective Work any reference to such Licensor or the Original Author, as requested. - -b. You may not exercise any of the rights granted to You in Section 3 above in any manner that is primarily intended for or directed toward commercial advantage or private monetary compensation. The exchange of the Work for other copyrighted works by means of digital file-sharing or otherwise shall not be considered to be intended for or directed toward commercial advantage or private monetary compensation, provided there is no payment of any monetary compensation in connection with the exchange of copyrighted works. - -c. If you distribute, publicly display, publicly perform, or publicly digitally perform the Work, You must keep intact all copyright notices for the Work and give the Original Author credit reasonable to the medium or means You are utilizing by conveying the name (or pseudonym if applicable) of the Original Author if supplied; the title of the Work if supplied; and to the extent reasonably practicable, the Uniform Resource Identifier, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work. Such credit may be implemented in any reasonable manner; provided, however, that in the case of a Collective Work, at a minimum such credit will appear where any other comparable authorship credit appears and in a manner at least as prominent as such other comparable authorship credit. - -d. For the avoidance of doubt, where the Work is a musical composition: - -i. Performancf Royalties Under Blanket Licenses. Licensor reserves the exclusive right to collect, whether individually or via a performance rights society (e.g. ASCAP, BMI, SESAC), royalties for the public performance or public digital performance (e.g. webcast) of the Work if that performance is primarily intended for or directed toward commercial advantage or private monetary compensation. - -ii. Mechanical Rights and Statutory Royalties. Licensor reserves the exclusive right to collect, whether individually or via a music rights agency or designated agent (e.g. Harry Fox Agency), royalties for any phonorecord You create from the Work ("cover version") and distribute, subject to the compulsory license created by 17 USC Section 115 of the US Copyright Act (or the equivalent in other jurisdictions), if Your distribution of such cover version is primarily intended for or directed toward commercial advantage or private monetary compensation. - -e. Webcasting Rights and Statutory Royalties. For the avoidance of doubt, where the Work is a sound recording, Licensor reserves the exclusive right to collect, whether individually or via a performance-rights society (e.g. SoundExchange), royalties for the public digital performance (e.g. webcast) of the Work, subject to the compulsory license created by 17 USC Section 114 of the US Copyright Act (or the equivalent in other jurisdictions), if Your public digital performance is primarily intended for or directed toward commercial advantage or private monetary compensation. - -5. Representations, Warranties and Disclaimer - -UNLESS OTHERWISE MUTUALLY AGREED BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. - -6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -7. Termination - -a. This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Collective Works from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License. - -b. Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above. - -8. Miscellaneous - -a. Each time You distribute or publicly digitally perform the Work or a Collective Work, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License. - -b. If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. - -c. No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent. - -d. This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You. - -Creative Commons is not a party to this License, and makes no warranty whatsoever in connection with the Work. Creative Commons will not be liable to You or any party on any legal theory for any damages whatsoever, including without limitation any general, special, incidental or consequential damages arising in connection to this license. Notwithstanding the foregoing two (2) sentences, if Creative Commons has expressly identified itself as the Licensor hereunder, it shall have all rights and obligations of Licensor. - -Except for the limited purpose of indicating to the public that the Work is licensed under the CCPL, neither party will use the trademark "Creative Commons" or any related trademark or logo of Creative Commons without the prior written consent of Creative Commons. Any permitted use will be in compliance with Creative Commons' then-current trademark usage guidelines, as may be published on its website or otherwise made available upon request from time to time. - -Creative Commons may be contacted at http://creativecommons.org/. diff --git a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-ND-2.5.txt b/vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-ND-2.5.txt deleted file mode 100644 index 34cab32..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-ND-2.5.txt +++ /dev/null @@ -1,76 +0,0 @@ -Creative Commons Attribution-NonCommercial-NoDerivs 2.5 -CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE. -License - -THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. - -BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS. - -1. Definitions - -a. "Collective Work" means a work, such as a periodical issue, anthology or encyclopedia, in which the Work in its entirety in unmodified form, along with a number of other contributions, constituting separate and independent works in themselves, are assembled into a collective whole. A work that constitutes a Collective Work will not be considered a Derivative Work (as defined below) for the purposes of this License. - -b. "Derivative Work" means a work based upon the Work or upon the Work and other pre-existing works, such as a translation, musical arrangement, dramatization, fictionalization, motion picture version, sound recording, art reproduction, abridgment, condensation, or any other form in which the Work may be recast, transformed, or adapted, except that a work that constitutes a Collective Work will not be considered a Derivative Work for the purpose of this License. For the avoidance of doubt, where the Work is a musical composition or sound recording, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered a Derivative Work for the purpose of this License. - -c. "Licensor" means the individual or entity that offers the Work under the terms of this License. - -d. "Original Author" means the individual or entity who created the Work. - -e. "Work" means the copyrightable work of authorship offered under the terms of this License. - -f. "You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation. - -2. Fair Use Rights. Nothing in this license is intended to reduce, limit, or restrict any rights arising from fair use, first sale or other limitations on the exclusive rights of the copyright owner under copyright law or other applicable laws. - -3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below: - -a. to reproduce the Work, to incorporate the Work into one or more Collective Works, and to reproduce the Work as incorporated in the Collective Works; - -b. to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission the Work including as incorporated in Collective Works; - -The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats, but otherwise you have no rights to make Derivative Works. All rights not expressly granted by Licensor are hereby reserved, including but not limited to the rights set forth in Sections 4(d) and 4(e). - -4. Restrictions.The license granted in Section 3 above is expressly made subject to and limited by the following restrictions: - -a. You may distribute, publicly display, publicly perform, or publicly digitally perform the Work only under the terms of this License, and You must include a copy of, or the Uniform Resource Identifier for, this License with every copy or phonorecord of the Work You distribute, publicly display, publicly perform, or publicly digitally perform. You may not offer or impose any terms on the Work that alter or restrict the terms of this License or the recipients' exercise of the rights granted hereunder. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties. You may not distribute, publicly display, publicly perform, or publicly digitally perform the Work with any technological measures that control access or use of the Work in a manner inconsistent with the terms of this License Agreement. The above applies to the Work as incorporated in a Collective Work, but this does not require the Collective Work apart from the Work itself to be made subject to the terms of this License. If You create a Collective Work, upon notice from any Licensor You must, to the extent practicable, remove from the Collective Work any credit as required by clause 4(c), as requested. - -b. You may not exercise any of the rights granted to You in Section 3 above in any manner that is primarily intended for or directed toward commercial advantage or private monetary compensation. The exchange of the Work for other copyrighted works by means of digital file-sharing or otherwise shall not be considered to be intended for or directed toward commercial advantage or private monetary compensation, provided there is no payment of any monetary compensation in connection with the exchange of copyrighted works. - -c. If you distribute, publicly display, publicly perform, or publicly digitally perform the Work, You must keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) the name of the Original Author (or pseudonym, if applicable) if supplied, and/or (ii) if the Original Author and/or Licensor designate another party or parties (e.g. a sponsor institute, publishing entity, journal) for attribution in Licensor's copyright notice, terms of service or by other reasonable means, the name of such party or parties; the title of the Work if supplied; and to the extent reasonably practicable, the Uniform Resource Identifier, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work. Such credit may be implemented in any reasonable manner; provided, however, that in the case of a Collective Work, at a minimum such credit will appear where any other comparable authorship credit appears and in a manner at least as prominent as such other comparable authorship credit. - -d. For the avoidance of doubt, where the Work is a musical composition: - -i. Performance Royalties Under Blanket Licenses. Licensor reserves the exclusive right to collect, whether individually or via a performance rights society (e.g. ASCAP, BMI, SESAC), royalties for the public performance or public digital performance (e.g. webcast) of the Work if that performance is primarily intended for or directed toward commercial advantage or private monetary compensation. - -ii. Mechanical Rights and Statutory Royalties. Licensor reserves the exclusive right to collect, whether individually or via a music rights agency or designated agent (e.g. Harry Fox Agency), royalties for any phonorecord You create from the Work ("cover version") and distribute, subject to the compulsory license created by 17 USC Section 115 of the US Copyright Act (or the equivalent in other jurisdictions), if Your distribution of such cover version is primarily intended for or directed toward commercial advantage or private monetary compensation. - -e. Webcasting Rights and Statutory Royalties. For the avoidance of doubt, where the Work is a sound recording, Licensor reserves the exclusive right to collect, whether individually or via a performance-rights society (e.g. SoundExchange), royalties for the public digital performance (e.g. webcast) of the Work, subject to the compulsory license created by 17 USC Section 114 of the US Copyright Act (or the equivalent in other jurisdictions), if Your public digital performance is primarily intended for or directed toward commercial advantage or private monetary compensation. - -5. Representations, Warranties and Disclaimer - -UNLESS OTHERWISE MUTUALLY AGREED BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. - -6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -7. Termination - -a. This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Collective Works from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License. - -b. Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above. - -8. Miscellaneous - -a. Each time You distribute or publicly digitally perform the Work or a Collective Work, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License. - -b. If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. - -c. No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent. - -d. This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You. - -Creative Commons is not a party to this License, and makes no warranty whatsoever in connection with the Work. Creative Commons will not be liable to You or any party on any legal theory for any damages whatsoever, including without limitation any general, special, incidental or consequential damages arising in connection to this license. Notwithstanding the foregoing two (2) sentences, if Creative Commons has expressly identified itself as the Licensor hereunder, it shall have all rights and obligations of Licensor. - -Except for the limited purpose of indicating to the public that the Work is licensed under the CCPL, neither party will use the trademark "Creative Commons" or any related trademark or logo of Creative Commons without the prior written consent of Creative Commons. Any permitted use will be in compliance with Creative Commons' then-current trademark usage guidelines, as may be published on its website or otherwise made available upon request from time to time. - -Creative Commons may be contacted at http://creativecommons.org/. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-ND-3.0.txt b/vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-ND-3.0.txt deleted file mode 100644 index 30b08e7..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-ND-3.0.txt +++ /dev/null @@ -1,308 +0,0 @@ -Creative Commons Legal Code - -Attribution-NonCommercial-NoDerivs 3.0 Unported - - CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE - LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN - ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS - INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES - REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR - DAMAGES RESULTING FROM ITS USE. - -License - -THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE -COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY -COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS -AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. - -BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE -TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY -BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS -CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND -CONDITIONS. - -1. Definitions - - a. "Adaptation" means a work based upon the Work, or upon the Work and - other pre-existing works, such as a translation, adaptation, - derivative work, arrangement of music or other alterations of a - literary or artistic work, or phonogram or performance and includes - cinematographic adaptations or any other form in which the Work may be - recast, transformed, or adapted including in any form recognizably - derived from the original, except that a work that constitutes a - Collection will not be considered an Adaptation for the purpose of - this License. For the avoidance of doubt, where the Work is a musical - work, performance or phonogram, the synchronization of the Work in - timed-relation with a moving image ("synching") will be considered an - Adaptation for the purpose of this License. - b. "Collection" means a collection of literary or artistic works, such as - encyclopedias and anthologies, or performances, phonograms or - broadcasts, or other works or subject matter other than works listed - in Section 1(f) below, which, by reason of the selection and - arrangement of their contents, constitute intellectual creations, in - which the Work is included in its entirety in unmodified form along - with one or more other contributions, each constituting separate and - independent works in themselves, which together are assembled into a - collective whole. A work that constitutes a Collection will not be - considered an Adaptation (as defined above) for the purposes of this - License. - c. "Distribute" means to make available to the public the original and - copies of the Work through sale or other transfer of ownership. - d. "Licensor" means the individual, individuals, entity or entities that - offer(s) the Work under the terms of this License. - e. "Original Author" means, in the case of a literary or artistic work, - the individual, individuals, entity or entities who created the Work - or if no individual or entity can be identified, the publisher; and in - addition (i) in the case of a performance the actors, singers, - musicians, dancers, and other persons who act, sing, deliver, declaim, - play in, interpret or otherwise perform literary or artistic works or - expressions of folklore; (ii) in the case of a phonogram the producer - being the person or legal entity who first fixes the sounds of a - performance or other sounds; and, (iii) in the case of broadcasts, the - organization that transmits the broadcast. - f. "Work" means the literary and/or artistic work offered under the terms - of this License including without limitation any production in the - literary, scientific and artistic domain, whatever may be the mode or - form of its expression including digital form, such as a book, - pamphlet and other writing; a lecture, address, sermon or other work - of the same nature; a dramatic or dramatico-musical work; a - choreographic work or entertainment in dumb show; a musical - composition with or without words; a cinematographic work to which are - assimilated works expressed by a process analogous to cinematography; - a work of drawing, painting, architecture, sculpture, engraving or - lithography; a photographic work to which are assimilated works - expressed by a process analogous to photography; a work of applied - art; an illustration, map, plan, sketch or three-dimensional work - relative to geography, topography, architecture or science; a - performance; a broadcast; a phonogram; a compilation of data to the - extent it is protected as a copyrightable work; or a work performed by - a variety or circus performer to the extent it is not otherwise - considered a literary or artistic work. - g. "You" means an individual or entity exercising rights under this - License who has not previously violated the terms of this License with - respect to the Work, or who has received express permission from the - Licensor to exercise rights under this License despite a previous - violation. - h. "Publicly Perform" means to perform public recitations of the Work and - to communicate to the public those public recitations, by any means or - process, including by wire or wireless means or public digital - performances; to make available to the public Works in such a way that - members of the public may access these Works from a place and at a - place individually chosen by them; to perform the Work to the public - by any means or process and the communication to the public of the - performances of the Work, including by public digital performance; to - broadcast and rebroadcast the Work by any means including signs, - sounds or images. - i. "Reproduce" means to make copies of the Work by any means including - without limitation by sound or visual recordings and the right of - fixation and reproducing fixations of the Work, including storage of a - protected performance or phonogram in digital form or other electronic - medium. - -2. Fair Dealing Rights. Nothing in this License is intended to reduce, -limit, or restrict any uses free from copyright or rights arising from -limitations or exceptions that are provided for in connection with the -copyright protection under copyright law or other applicable laws. - -3. License Grant. Subject to the terms and conditions of this License, -Licensor hereby grants You a worldwide, royalty-free, non-exclusive, -perpetual (for the duration of the applicable copyright) license to -exercise the rights in the Work as stated below: - - a. to Reproduce the Work, to incorporate the Work into one or more - Collections, and to Reproduce the Work as incorporated in the - Collections; and, - b. to Distribute and Publicly Perform the Work including as incorporated - in Collections. - -The above rights may be exercised in all media and formats whether now -known or hereafter devised. The above rights include the right to make -such modifications as are technically necessary to exercise the rights in -other media and formats, but otherwise you have no rights to make -Adaptations. Subject to 8(f), all rights not expressly granted by Licensor -are hereby reserved, including but not limited to the rights set forth in -Section 4(d). - -4. Restrictions. The license granted in Section 3 above is expressly made -subject to and limited by the following restrictions: - - a. You may Distribute or Publicly Perform the Work only under the terms - of this License. You must include a copy of, or the Uniform Resource - Identifier (URI) for, this License with every copy of the Work You - Distribute or Publicly Perform. You may not offer or impose any terms - on the Work that restrict the terms of this License or the ability of - the recipient of the Work to exercise the rights granted to that - recipient under the terms of the License. You may not sublicense the - Work. You must keep intact all notices that refer to this License and - to the disclaimer of warranties with every copy of the Work You - Distribute or Publicly Perform. When You Distribute or Publicly - Perform the Work, You may not impose any effective technological - measures on the Work that restrict the ability of a recipient of the - Work from You to exercise the rights granted to that recipient under - the terms of the License. This Section 4(a) applies to the Work as - incorporated in a Collection, but this does not require the Collection - apart from the Work itself to be made subject to the terms of this - License. If You create a Collection, upon notice from any Licensor You - must, to the extent practicable, remove from the Collection any credit - as required by Section 4(c), as requested. - b. You may not exercise any of the rights granted to You in Section 3 - above in any manner that is primarily intended for or directed toward - commercial advantage or private monetary compensation. The exchange of - the Work for other copyrighted works by means of digital file-sharing - or otherwise shall not be considered to be intended for or directed - toward commercial advantage or private monetary compensation, provided - there is no payment of any monetary compensation in connection with - the exchange of copyrighted works. - c. If You Distribute, or Publicly Perform the Work or Collections, You - must, unless a request has been made pursuant to Section 4(a), keep - intact all copyright notices for the Work and provide, reasonable to - the medium or means You are utilizing: (i) the name of the Original - Author (or pseudonym, if applicable) if supplied, and/or if the - Original Author and/or Licensor designate another party or parties - (e.g., a sponsor institute, publishing entity, journal) for - attribution ("Attribution Parties") in Licensor's copyright notice, - terms of service or by other reasonable means, the name of such party - or parties; (ii) the title of the Work if supplied; (iii) to the - extent reasonably practicable, the URI, if any, that Licensor - specifies to be associated with the Work, unless such URI does not - refer to the copyright notice or licensing information for the Work. - The credit required by this Section 4(c) may be implemented in any - reasonable manner; provided, however, that in the case of a - Collection, at a minimum such credit will appear, if a credit for all - contributing authors of Collection appears, then as part of these - credits and in a manner at least as prominent as the credits for the - other contributing authors. For the avoidance of doubt, You may only - use the credit required by this Section for the purpose of attribution - in the manner set out above and, by exercising Your rights under this - License, You may not implicitly or explicitly assert or imply any - connection with, sponsorship or endorsement by the Original Author, - Licensor and/or Attribution Parties, as appropriate, of You or Your - use of the Work, without the separate, express prior written - permission of the Original Author, Licensor and/or Attribution - Parties. - d. For the avoidance of doubt: - - i. Non-waivable Compulsory License Schemes. In those jurisdictions in - which the right to collect royalties through any statutory or - compulsory licensing scheme cannot be waived, the Licensor - reserves the exclusive right to collect such royalties for any - exercise by You of the rights granted under this License; - ii. Waivable Compulsory License Schemes. In those jurisdictions in - which the right to collect royalties through any statutory or - compulsory licensing scheme can be waived, the Licensor reserves - the exclusive right to collect such royalties for any exercise by - You of the rights granted under this License if Your exercise of - such rights is for a purpose or use which is otherwise than - noncommercial as permitted under Section 4(b) and otherwise waives - the right to collect royalties through any statutory or compulsory - licensing scheme; and, - iii. Voluntary License Schemes. The Licensor reserves the right to - collect royalties, whether individually or, in the event that the - Licensor is a member of a collecting society that administers - voluntary licensing schemes, via that society, from any exercise - by You of the rights granted under this License that is for a - purpose or use which is otherwise than noncommercial as permitted - under Section 4(b). - e. Except as otherwise agreed in writing by the Licensor or as may be - otherwise permitted by applicable law, if You Reproduce, Distribute or - Publicly Perform the Work either by itself or as part of any - Collections, You must not distort, mutilate, modify or take other - derogatory action in relation to the Work which would be prejudicial - to the Original Author's honor or reputation. - -5. Representations, Warranties and Disclaimer - -UNLESS OTHERWISE MUTUALLY AGREED BY THE PARTIES IN WRITING, LICENSOR -OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY -KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, -INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, -FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF -LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, -WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION -OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. - -6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE -LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR -ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES -ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS -BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -7. Termination - - a. This License and the rights granted hereunder will terminate - automatically upon any breach by You of the terms of this License. - Individuals or entities who have received Collections from You under - this License, however, will not have their licenses terminated - provided such individuals or entities remain in full compliance with - those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any - termination of this License. - b. Subject to the above terms and conditions, the license granted here is - perpetual (for the duration of the applicable copyright in the Work). - Notwithstanding the above, Licensor reserves the right to release the - Work under different license terms or to stop distributing the Work at - any time; provided, however that any such election will not serve to - withdraw this License (or any other license that has been, or is - required to be, granted under the terms of this License), and this - License will continue in full force and effect unless terminated as - stated above. - -8. Miscellaneous - - a. Each time You Distribute or Publicly Perform the Work or a Collection, - the Licensor offers to the recipient a license to the Work on the same - terms and conditions as the license granted to You under this License. - b. If any provision of this License is invalid or unenforceable under - applicable law, it shall not affect the validity or enforceability of - the remainder of the terms of this License, and without further action - by the parties to this agreement, such provision shall be reformed to - the minimum extent necessary to make such provision valid and - enforceable. - c. No term or provision of this License shall be deemed waived and no - breach consented to unless such waiver or consent shall be in writing - and signed by the party to be charged with such waiver or consent. - d. This License constitutes the entire agreement between the parties with - respect to the Work licensed here. There are no understandings, - agreements or representations with respect to the Work not specified - here. Licensor shall not be bound by any additional provisions that - may appear in any communication from You. This License may not be - modified without the mutual written agreement of the Licensor and You. - e. The rights granted under, and the subject matter referenced, in this - License were drafted utilizing the terminology of the Berne Convention - for the Protection of Literary and Artistic Works (as amended on - September 28, 1979), the Rome Convention of 1961, the WIPO Copyright - Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 - and the Universal Copyright Convention (as revised on July 24, 1971). - These rights and subject matter take effect in the relevant - jurisdiction in which the License terms are sought to be enforced - according to the corresponding provisions of the implementation of - those treaty provisions in the applicable national law. If the - standard suite of rights granted under applicable copyright law - includes additional rights not granted under this License, such - additional rights are deemed to be included in the License; this - License is not intended to restrict the license of any rights under - applicable law. - - -Creative Commons Notice - - Creative Commons is not a party to this License, and makes no warranty - whatsoever in connection with the Work. Creative Commons will not be - liable to You or any party on any legal theory for any damages - whatsoever, including without limitation any general, special, - incidental or consequential damages arising in connection to this - license. Notwithstanding the foregoing two (2) sentences, if Creative - Commons has expressly identified itself as the Licensor hereunder, it - shall have all rights and obligations of Licensor. - - Except for the limited purpose of indicating to the public that the - Work is licensed under the CCPL, Creative Commons does not authorize - the use by either party of the trademark "Creative Commons" or any - related trademark or logo of Creative Commons without the prior - written consent of Creative Commons. Any permitted use will be in - compliance with Creative Commons' then-current trademark usage - guidelines, as may be published on its website or otherwise made - available upon request from time to time. For the avoidance of doubt, - this trademark restriction does not form part of this License. - - Creative Commons may be contacted at https://creativecommons.org/. diff --git a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-ND-4.0.txt b/vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-ND-4.0.txt deleted file mode 100644 index 3a4b76c..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-ND-4.0.txt +++ /dev/null @@ -1,403 +0,0 @@ -Attribution-NonCommercial-NoDerivatives 4.0 International - -======================================================================= - -Creative Commons Corporation ("Creative Commons") is not a law firm and -does not provide legal services or legal advice. Distribution of -Creative Commons public licenses does not create a lawyer-client or -other relationship. Creative Commons makes its licenses and related -information available on an "as-is" basis. Creative Commons gives no -warranties regarding its licenses, any material licensed under their -terms and conditions, or any related information. Creative Commons -disclaims all liability for damages resulting from their use to the -fullest extent possible. - -Using Creative Commons Public Licenses - -Creative Commons public licenses provide a standard set of terms and -conditions that creators and other rights holders may use to share -original works of authorship and other material subject to copyright -and certain other rights specified in the public license below. The -following considerations are for informational purposes only, are not -exhaustive, and do not form part of our licenses. - - Considerations for licensors: Our public licenses are - intended for use by those authorized to give the public - permission to use material in ways otherwise restricted by - copyright and certain other rights. Our licenses are - irrevocable. Licensors should read and understand the terms - and conditions of the license they choose before applying it. - Licensors should also secure all rights necessary before - applying our licenses so that the public can reuse the - material as expected. Licensors should clearly mark any - material not subject to the license. This includes other CC- - licensed material, or material used under an exception or - limitation to copyright. More considerations for licensors: - wiki.creativecommons.org/Considerations_for_licensors - - Considerations for the public: By using one of our public - licenses, a licensor grants the public permission to use the - licensed material under specified terms and conditions. If - the licensor's permission is not necessary for any reason--for - example, because of any applicable exception or limitation to - copyright--then that use is not regulated by the license. Our - licenses grant only permissions under copyright and certain - other rights that a licensor has authority to grant. Use of - the licensed material may still be restricted for other - reasons, including because others have copyright or other - rights in the material. A licensor may make special requests, - such as asking that all changes be marked or described. - Although not required by our licenses, you are encouraged to - respect those requests where reasonable. More_considerations - for the public: - wiki.creativecommons.org/Considerations_for_licensees - -======================================================================= - -Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 -International Public License - -By exercising the Licensed Rights (defined below), You accept and agree -to be bound by the terms and conditions of this Creative Commons -Attribution-NonCommercial-NoDerivatives 4.0 International Public -License ("Public License"). To the extent this Public License may be -interpreted as a contract, You are granted the Licensed Rights in -consideration of Your acceptance of these terms and conditions, and the -Licensor grants You such rights in consideration of benefits the -Licensor receives from making the Licensed Material available under -these terms and conditions. - - -Section 1 -- Definitions. - - a. Adapted Material means material subject to Copyright and Similar - Rights that is derived from or based upon the Licensed Material - and in which the Licensed Material is translated, altered, - arranged, transformed, or otherwise modified in a manner requiring - permission under the Copyright and Similar Rights held by the - Licensor. For purposes of this Public License, where the Licensed - Material is a musical work, performance, or sound recording, - Adapted Material is always produced where the Licensed Material is - synched in timed relation with a moving image. - - b. Copyright and Similar Rights means copyright and/or similar rights - closely related to copyright including, without limitation, - performance, broadcast, sound recording, and Sui Generis Database - Rights, without regard to how the rights are labeled or - categorized. For purposes of this Public License, the rights - specified in Section 2(b)(1)-(2) are not Copyright and Similar - Rights. - - c. Effective Technological Measures means those measures that, in the - absence of proper authority, may not be circumvented under laws - fulfilling obligations under Article 11 of the WIPO Copyright - Treaty adopted on December 20, 1996, and/or similar international - agreements. - - d. Exceptions and Limitations means fair use, fair dealing, and/or - any other exception or limitation to Copyright and Similar Rights - that applies to Your use of the Licensed Material. - - e. Licensed Material means the artistic or literary work, database, - or other material to which the Licensor applied this Public - License. - - f. Licensed Rights means the rights granted to You subject to the - terms and conditions of this Public License, which are limited to - all Copyright and Similar Rights that apply to Your use of the - Licensed Material and that the Licensor has authority to license. - - g. Licensor means the individual(s) or entity(ies) granting rights - under this Public License. - - h. NonCommercial means not primarily intended for or directed towards - commercial advantage or monetary compensation. For purposes of - this Public License, the exchange of the Licensed Material for - other material subject to Copyright and Similar Rights by digital - file-sharing or similar means is NonCommercial provided there is - no payment of monetary compensation in connection with the - exchange. - - i. Share means to provide material to the public by any means or - process that requires permission under the Licensed Rights, such - as reproduction, public display, public performance, distribution, - dissemination, communication, or importation, and to make material - available to the public including in ways that members of the - public may access the material from a place and at a time - individually chosen by them. - - j. Sui Generis Database Rights means rights other than copyright - resulting from Directive 96/9/EC of the European Parliament and of - the Council of 11 March 1996 on the legal protection of databases, - as amended and/or succeeded, as well as other essentially - equivalent rights anywhere in the world. - - k. You means the individual or entity exercising the Licensed Rights - under this Public License. Your has a corresponding meaning. - - -Section 2 -- Scope. - - a. License grant. - - 1. Subject to the terms and conditions of this Public License, - the Licensor hereby grants You a worldwide, royalty-free, - non-sublicensable, non-exclusive, irrevocable license to - exercise the Licensed Rights in the Licensed Material to: - - a. reproduce and Share the Licensed Material, in whole or - in part, for NonCommercial purposes only; and - - b. produce and reproduce, but not Share, Adapted Material - for NonCommercial purposes only. - - 2. Exceptions and Limitations. For the avoidance of doubt, where - Exceptions and Limitations apply to Your use, this Public - License does not apply, and You do not need to comply with - its terms and conditions. - - 3. Term. The term of this Public License is specified in Section - 6(a). - - 4. Media and formats; technical modifications allowed. The - Licensor authorizes You to exercise the Licensed Rights in - all media and formats whether now known or hereafter created, - and to make technical modifications necessary to do so. The - Licensor waives and/or agrees not to assert any right or - authority to forbid You from making technical modifications - necessary to exercise the Licensed Rights, including - technical modifications necessary to circumvent Effective - Technological Measures. For purposes of this Public License, - simply making modifications authorized by this Section 2(a) - (4) never produces Adapted Material. - - 5. Downstream recipients. - - a. Offer from the Licensor -- Licensed Material. Every - recipient of the Licensed Material automatically - receives an offer from the Licensor to exercise the - Licensed Rights under the terms and conditions of this - Public License. - - b. No downstream restrictions. You may not offer or impose - any additional or different terms or conditions on, or - apply any Effective Technological Measures to, the - Licensed Material if doing so restricts exercise of the - Licensed Rights by any recipient of the Licensed - Material. - - 6. No endorsement. Nothing in this Public License constitutes or - may be construed as permission to assert or imply that You - are, or that Your use of the Licensed Material is, connected - with, or sponsored, endorsed, or granted official status by, - the Licensor or others designated to receive attribution as - provided in Section 3(a)(1)(A)(i). - - b. Other rights. - - 1. Moral rights, such as the right of integrity, are not - licensed under this Public License, nor are publicity, - privacy, and/or other similar personality rights; however, to - the extent possible, the Licensor waives and/or agrees not to - assert any such rights held by the Licensor to the limited - extent necessary to allow You to exercise the Licensed - Rights, but not otherwise. - - 2. Patent and trademark rights are not licensed under this - Public License. - - 3. To the extent possible, the Licensor waives any right to - collect royalties from You for the exercise of the Licensed - Rights, whether directly or through a collecting society - under any voluntary or waivable statutory or compulsory - licensing scheme. In all other cases the Licensor expressly - reserves any right to collect such royalties, including when - the Licensed Material is used other than for NonCommercial - purposes. - - -Section 3 -- License Conditions. - -Your exercise of the Licensed Rights is expressly made subject to the -following conditions. - - a. Attribution. - - 1. If You Share the Licensed Material, You must: - - a. retain the following if it is supplied by the Licensor - with the Licensed Material: - - i. identification of the creator(s) of the Licensed - Material and any others designated to receive - attribution, in any reasonable manner requested by - the Licensor (including by pseudonym if - designated); - - ii. a copyright notice; - - iii. a notice that refers to this Public License; - - iv. a notice that refers to the disclaimer of - warranties; - - v. a URI or hyperlink to the Licensed Material to the - extent reasonably practicable; - - b. indicate if You modified the Licensed Material and - retain an indication of any previous modifications; and - - c. indicate the Licensed Material is licensed under this - Public License, and include the text of, or the URI or - hyperlink to, this Public License. - - For the avoidance of doubt, You do not have permission under - this Public License to Share Adapted Material. - - 2. You may satisfy the conditions in Section 3(a)(1) in any - reasonable manner based on the medium, means, and context in - which You Share the Licensed Material. For example, it may be - reasonable to satisfy the conditions by providing a URI or - hyperlink to a resource that includes the required - information. - - 3. If requested by the Licensor, You must remove any of the - information required by Section 3(a)(1)(A) to the extent - reasonably practicable. - - -Section 4 -- Sui Generis Database Rights. - -Where the Licensed Rights include Sui Generis Database Rights that -apply to Your use of the Licensed Material: - - a. for the avoidance of doubt, Section 2(a)(1) grants You the right - to extract, reuse, reproduce, and Share all or a substantial - portion of the contents of the database for NonCommercial purposes - only and provided You do not Share Adapted Material; - - b. if You include all or a substantial portion of the database - contents in a database in which You have Sui Generis Database - Rights, then the database in which You have Sui Generis Database - Rights (but not its individual contents) is Adapted Material; and - - c. You must comply with the conditions in Section 3(a) if You Share - all or a substantial portion of the contents of the database. - -For the avoidance of doubt, this Section 4 supplements and does not -replace Your obligations under this Public License where the Licensed -Rights include other Copyright and Similar Rights. - - -Section 5 -- Disclaimer of Warranties and Limitation of Liability. - - a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE - EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS - AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF - ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, - IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, - WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR - PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, - ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT - KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT - ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. - - b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE - TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, - NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, - INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, - COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR - USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN - ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR - DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR - IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. - - c. The disclaimer of warranties and limitation of liability provided - above shall be interpreted in a manner that, to the extent - possible, most closely approximates an absolute disclaimer and - waiver of all liability. - - -Section 6 -- Term and Termination. - - a. This Public License applies for the term of the Copyright and - Similar Rights licensed here. However, if You fail to comply with - this Public License, then Your rights under this Public License - terminate automatically. - - b. Where Your right to use the Licensed Material has terminated under - Section 6(a), it reinstates: - - 1. automatically as of the date the violation is cured, provided - it is cured within 30 days of Your discovery of the - violation; or - - 2. upon express reinstatement by the Licensor. - - For the avoidance of doubt, this Section 6(b) does not affect any - right the Licensor may have to seek remedies for Your violations - of this Public License. - - c. For the avoidance of doubt, the Licensor may also offer the - Licensed Material under separate terms or conditions or stop - distributing the Licensed Material at any time; however, doing so - will not terminate this Public License. - - d. Sections 1, 5, 6, 7, and 8 survive termination of this Public - License. - - -Section 7 -- Other Terms and Conditions. - - a. The Licensor shall not be bound by any additional or different - terms or conditions communicated by You unless expressly agreed. - - b. Any arrangements, understandings, or agreements regarding the - Licensed Material not stated herein are separate from and - independent of the terms and conditions of this Public License. - - -Section 8 -- Interpretation. - - a. For the avoidance of doubt, this Public License does not, and - shall not be interpreted to, reduce, limit, restrict, or impose - conditions on any use of the Licensed Material that could lawfully - be made without permission under this Public License. - - b. To the extent possible, if any provision of this Public License is - deemed unenforceable, it shall be automatically reformed to the - minimum extent necessary to make it enforceable. If the provision - cannot be reformed, it shall be severed from this Public License - without affecting the enforceability of the remaining terms and - conditions. - - c. No term or condition of this Public License will be waived and no - failure to comply consented to unless expressly agreed to by the - Licensor. - - d. Nothing in this Public License constitutes or may be interpreted - as a limitation upon, or waiver of, any privileges and immunities - that apply to the Licensor or You, including from the legal - processes of any jurisdiction or authority. - -======================================================================= - -Creative Commons is not a party to its public -licenses. Notwithstanding, Creative Commons may elect to apply one of -its public licenses to material it publishes and in those instances -will be considered the “Licensor.” The text of the Creative Commons -public licenses is dedicated to the public domain under the CC0 Public -Domain Dedication. Except for the limited purpose of indicating that -material is shared under a Creative Commons public license or as -otherwise permitted by the Creative Commons policies published at -creativecommons.org/policies, Creative Commons does not authorize the -use of the trademark "Creative Commons" or any other trademark or logo -of Creative Commons without its prior written consent including, -without limitation, in connection with any unauthorized modifications -to any of its public licenses or any other arrangements, -understandings, or agreements concerning use of licensed material. For -the avoidance of doubt, this paragraph does not form part of the -public licenses. - -Creative Commons may be contacted at creativecommons.org. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-SA-1.0.txt b/vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-SA-1.0.txt deleted file mode 100644 index 612962f..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-SA-1.0.txt +++ /dev/null @@ -1,81 +0,0 @@ -Creative Commons Attribution-NonCommercial-ShareAlike 1.0 -CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS DRAFT LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE. -License - -THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE IS PROHIBITED. - -BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS. - -1. Definitions - -a. "Collective Work" means a work, such as a periodical issue, anthology or encyclopedia, in which the Work in its entirety in unmodified form, along with a number of other contributions, constituting separate and independent works in themselves, are assembled into a collective whole. A work that constitutes a Collective Work will not be considered a Derivative Work (as defined below) for the purposes of this License. - -b. "Derivative Work" means a work based upon the Work or upon the Work and other pre-existing works, such as a translation, musical arrangement, dramatization, fictionalization, motion picture version, sound recording, art reproduction, abridgment, condensation, or any other form in which the Work may be recast, transformed, or adapted, except that a work that constitutes a Collective Work will not be considered a Derivative Work for the purpose of this License. - -c. "Licensor" means the individual or entity that offers the Work under the terms of this License. - -d. "Original Author" means the individual or entity who created the Work. - -e. "Work" means the copyrightable work of authorship offered under the terms of this License. - -f. "You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation. - -2. Fair Use Rights. Nothing in this license is intended to reduce, limit, or restrict any rights arising from fair use, first sale or other limitations on the exclusive rights of the copyright owner under copyright law or other applicable laws. - -3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below: - -a. to reproduce the Work, to incorporate the Work into one or more Collective Works, and to reproduce the Work as incorporated in the Collective Works; - -b. to create and reproduce Derivative Works; - -c. to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission the Work including as incorporated in Collective Works; - -d. to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission Derivative Works; - -The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. All rights not expressly granted by Licensor are hereby reserved. - -4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions: - -a. You may distribute, publicly display, publicly perform, or publicly digitally perform the Work only under the terms of this License, and You must include a copy of, or the Uniform Resource Identifier for, this License with every copy or phonorecord of the Work You distribute, publicly display, publicly perform, or publicly digitally perform. You may not offer or impose any terms on the Work that alter or restrict the terms of this License or the recipients' exercise of the rights granted hereunder. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties. You may not distribute, publicly display, publicly perform, or publicly digitally perform the Work with any technological measures that control access or use of the Work in a manner inconsistent with the terms of this License Agreement. The above applies to the Work as incorporated in a Collective Work, but this does not require the Collective Work apart from the Work itself to be made subject to the terms of this License. If You create a Collective Work, upon notice from any Licensor You must, to the extent practicable, remove from the Collective Work any reference to such Licensor or the Original Author, as requested. If You create a Derivative Work, upon notice from any Licensor You must, to the extent practicable, remove from the Derivative Work any reference to such Licensor or the Original Author, as requested. - -b. You may distribute, publicly display, publicly perform, or publicly digitally perform a Derivative Work only under the terms of this License, and You must include a copy of, or the Uniform Resource Identifier for, this License with every copy or phonorecord of each Derivative Work You distribute, publicly display, publicly perform, or publicly digitally perform. You may not offer or impose any terms on the Derivative Works that alter or restrict the terms of this License or the recipients' exercise of the rights granted hereunder, and You must keep intact all notices that refer to this License and to the disclaimer of warranties. You may not distribute, publicly display, publicly perform, or publicly digitally perform the Derivative Work with any technological measures that control access or use of the Work in a manner inconsistent with the terms of this License Agreement. The above applies to the Derivative Work as incorporated in a Collective Work, but this does not require the Collective Work apart from the Derivative Work itself to be made subject to the terms of this License. - -c. You may not exercise any of the rights granted to You in Section 3 above in any manner that is primarily intended for or directed toward commercial advantage or private monetary compensation. The exchange of the Work for other copyrighted works by means of digital file-sharing or otherwise shall not be considered to be intended for or directed toward commercial advantage or private monetary compensation, provided there is no payment of any monetary compensation in connection with the exchange of copyrighted works. - -d. If you distribute, publicly display, publicly perform, or publicly digitally perform the Work or any Derivative Works or Collective Works, You must keep intact all copyright notices for the Work and give the Original Author credit reasonable to the medium or means You are utilizing by conveying the name (or pseudonym if applicable) of the Original Author if supplied; the title of the Work if supplied; in the case of a Derivative Work, a credit identifying the use of the Work in the Derivative Work (e.g., "French translation of the Work by Original Author," or "Screenplay based on original Work by Original Author"). Such credit may be implemented in any reasonable manner; provided, however, that in the case of a Derivative Work or Collective Work, at a minimum such credit will appear where any other comparable authorship credit appears and in a manner at least as prominent as such other comparable authorship credit. - -5. Representations, Warranties and Disclaimer - -a. By offering the Work for public release under this License, Licensor represents and warrants that, to the best of Licensor's knowledge after reasonable inquiry: - -i. Licensor has secured all rights in the Work necessary to grant the license rights hereunder and to permit the lawful exercise of the rights granted hereunder without You having any obligation to pay any royalties, compulsory license fees, residuals or any other payments; - -ii. The Work does not infringe the copyright, trademark, publicity rights, common law rights or any other right of any third party or constitute defamation, invasion of privacy or other tortious injury to any third party. - -b. EXCEPT AS EXPRESSLY STATED IN THIS LICENSE OR OTHERWISE AGREED IN WRITING OR REQUIRED BY APPLICABLE LAW, THE WORK IS LICENSED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES REGARDING THE CONTENTS OR ACCURACY OF THE WORK. - -6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, AND EXCEPT FOR DAMAGES ARISING FROM LIABILITY TO A THIRD PARTY RESULTING FROM BREACH OF THE WARRANTIES IN SECTION 5, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -7. Termination - -a. This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Derivative Works or Collective Works from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License. - -b. Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above. - -8. Miscellaneous - -a. Each time You distribute or publicly digitally perform the Work or a Collective Work, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License. - -b. Each time You distribute or publicly digitally perform a Derivative Work, Licensor offers to the recipient a license to the original Work on the same terms and conditions as the license granted to You under this License. - -c. If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. - -d. No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent. - -e. This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You. - -Creative Commons is not a party to this License, and makes no warranty whatsoever in connection with the Work. Creative Commons will not be liable to You or any party on any legal theory for any damages whatsoever, including without limitation any general, special, incidental or consequential damages arising in connection to this license. Notwithstanding the foregoing two (2) sentences, if Creative Commons has expressly identified itself as the Licensor hereunder, it shall have all rights and obligations of Licensor. - -Except for the limited purpose of indicating to the public that the Work is licensed under the CCPL, neither party will use the trademark "Creative Commons" or any related trademark or logo of Creative Commons without the prior written consent of Creative Commons. Any permitted use will be in compliance with Creative Commons' then-current trademark usage guidelines, as may be published on its website or otherwise made available upon request from time to time. - -Creative Commons may be contacted at http://creativecommons.org/. diff --git a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-SA-2.0.txt b/vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-SA-2.0.txt deleted file mode 100644 index c5216c5..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-SA-2.0.txt +++ /dev/null @@ -1,86 +0,0 @@ -Creative Commons Attribution-NonCommercial-ShareAlike 2.0 -CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE. -License - -THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. - -BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS. - -1. Definitions - -a. "Collective Work" means a work, such as a periodical issue, anthology or encyclopedia, in which the Work in its entirety in unmodified form, along with a number of other contributions, constituting separate and independent works in themselves, are assembled into a collective whole. A work that constitutes a Collective Work will not be considered a Derivative Work (as defined below) for the purposes of this License. - -b. "Derivative Work" means a work based upon the Work or upon the Work and other pre-existing works, such as a translation, musical arrangement, dramatization, fictionalization, motion picture version, sound recording, art reproduction, abridgment, condensation, or any other form in which the Work may be recast, transformed, or adapted, except that a work that constitutes a Collective Work will not be considered a Derivative Work for the purpose of this License. For the avoidance of doubt, where the Work is a musical composition or sound recording, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered a Derivative Work for the purpose of this License. - -c. "Licensor" means the individual or entity that offers the Work under the terms of this License. - -d. "Original Author" means the individual or entity who created the Work. - -e. "Work" means the copyrightable work of authorship offered under the terms of this License. - -f. "You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation. - -g. "License Elements" means the following high-level license attributes as selected by Licensor and indicated in the title of this License: Attribution, Noncommercial, ShareAlike. - -2. Fair Use Rights. Nothing in this license is intended to reduce, limit, or restrict any rights arising from fair use, first sale or other limitations on the exclusive rights of the copyright owner under copyright law or other applicable laws. - -3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below: - -a. to reproduce the Work, to incorporate the Work into one or more Collective Works, and to reproduce the Work as incorporated in the Collective Works; - -b. to create and reproduce Derivative Works; - -c. to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission the Work including as incorporated in Collective Works; - -d. to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission Derivative Works; - -The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. All rights not expressly granted by Licensor are hereby reserved, including but not limited to the rights set forth in Sections 4(e) and 4(f). - -4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions: - -a. You may distribute, publicly display, publicly perform, or publicly digitally perform the Work only under the terms of this License, and You must include a copy of, or the Uniform Resource Identifier for, this License with every copy or phonorecord of the Work You distribute, publicly display, publicly perform, or publicly digitally perform. You may not offer or impose any terms on the Work that alter or restrict the terms of this License or the recipients' exercise of the rights granted hereunder. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties. You may not distribute, publicly display, publicly perform, or publicly digitally perform the Work with any technological measures that control access or use of the Work in a manner inconsistent with the terms of this License Agreement. The above applies to the Work as incorporated in a Collective Work, but this does not require the Collective Work apart from the Work itself to be made subject to the terms of this License. If You create a Collective Work, upon notice from any Licensor You must, to the extent practicable, remove from the Collective Work any reference to such Licensor or the Original Author, as requested. If You create a Derivative Work, upon notice from any Licensor You must, to the extent practicable, remove from the Derivative Work any reference to such Licensor or the Original Author, as requested. - -b. You may distribute, publicly display, publicly perform, or publicly digitally perform a Derivative Work only under the terms of this License, a later version of this License with the same License Elements as this License, or a Creative Commons iCommons license that contains the same License Elements as this License (e.g. Attribution-NonCommercial-ShareAlike 2.0 Japan). You must include a copy of, or the Uniform Resource Identifier for, this License or other license specified in the previous sentence with every copy or phonorecord of each Derivative Work You distribute, publicly display, publicly perform, or publicly digitally perform. You may not offer or impose any terms on the Derivative Works that alter or restrict the terms of this License or the recipients' exercise of the rights granted hereunder, and You must keep intact all notices that refer to this License and to the disclaimer of warranties. You may not distribute, publicly display, publicly perform, or publicly digitally perform the Derivative Work with any technological measures that control access or use of the Work in a manner inconsistent with the terms of this License Agreement. The above applies to the Derivative Work as incorporated in a Collective Work, but this does not require the Collective Work apart from the Derivative Work itself to be made subject to the terms of this License. - -c. You may not exercise any of the rights granted to You in Section 3 above in any manner that is primarily intended for or directed toward commercial advantage or private monetary compensation. The exchange of the Work for other copyrighted works by means of digital file-sharing or otherwise shall not be considered to be intended for or directed toward commercial advantage or private monetary compensation, provided there is no payment of any monetary compensation in connection with the exchange of copyrighted works. - -d. If you distribute, publicly display, publicly perform, or publicly digitally perform the Work or any Derivative Works or Collective Works, You must keep intact all copyright notices for the Work and give the Original Author credit reasonable to the medium or means You are utilizing by conveying the name (or pseudonym if applicable) of the Original Author if supplied; the title of the Work if supplied; to the extent reasonably practicable, the Uniform Resource Identifier, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and in the case of a Derivative Work, a credit identifying the use of the Work in the Derivative Work (e.g., "French translation of the Work by Original Author," or "Screenplay based on original Work by Original Author"). Such credit may be implemented in any reasonable manner; provided, however, that in the case of a Derivative Work or Collective Work, at a minimum such credit will appear where any other comparable authorship credit appears and in a manner at least as prominent as such other comparable authorship credit. - -e. For the avoidance of doubt, where the Work is a musical composition: - -i. Performance Royalties Under Blanket Licenses. Licensor reserves the exclusive right to collect, whether individually or via a performance rights society (e.g. ASCAP, BMI, SESAC), royalties for the public performance or public digital performance (e.g. webcast) of the Work if that performance is primarily intended for or directed toward commercial advantage or private monetary compensation. - -ii. Mechanical Rights and Statutory Royalties. Licensor reserves the exclusive right to collect, whether individually or via a music rights agency or designated agent (e.g. Harry Fox Agency), royalties for any phonorecord You create from the Work ("cover version") and distribute, subject to the compulsory license created by 17 USC Section 115 of the US Copyright Act (or the equivalent in other jurisdictions), if Your distribution of such cover version is primarily intended for or directed toward commercial advantage or private monetary compensation. - -f. Webcasting Rights and Statutory Royalties. For the avoidance of doubt, where the Work is a sound recording, Licensor reserves the exclusive right to collect, whether individually or via a performance-rights society (e.g. SoundExchange), royalties for the public digital performance (e.g. webcast) of the Work, subject to the compulsory license created by 17 USC Section 114 of the US Copyright Act (or the equivalent in other jurisdictions), if Your public digital performance is primarily intended for or directed toward commercial advantage or private monetary compensation. - -5. Representations, Warranties and Disclaimer - -UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. - -6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -7. Termination - -a. This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Derivative Works or Collective Works from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License. - -b. Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above. - -8. Miscellaneous - -a. Each time You distribute or publicly digitally perform the Work or a Collective Work, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License. - -b. Each time You distribute or publicly digitally perform a Derivative Work, Licensor offers to the recipient a license to the original Work on the same terms and conditions as the license granted to You under this License. - -c. If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. - -d. No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent. - -e. This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You. - -Creative Commons is not a party to this License, and makes no warranty whatsoever in connection with the Work. Creative Commons will not be liable to You or any party on any legal theory for any damages whatsoever, including without limitation any general, special, incidental or consequential damages arising in connection to this license. Notwithstanding the foregoing two (2) sentences, if Creative Commons has expressly identified itself as the Licensor hereunder, it shall have all rights and obligations of Licensor. - -Except for the limited purpose of indicating to the public that the Work is licensed under the CCPL, neither party will use the trademark "Creative Commons" or any related trademark or logo of Creative Commons without the prior written consent of Creative Commons. Any permitted use will be in compliance with Creative Commons' then-current trademark usage guidelines, as may be published on its website or otherwise made available upon request from time to time. - -Creative Commons may be contacted at http://creativecommons.org/. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-SA-2.5.txt b/vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-SA-2.5.txt deleted file mode 100644 index 50ac976..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-SA-2.5.txt +++ /dev/null @@ -1,86 +0,0 @@ -Creative Commons Attribution-NonCommercial-ShareAlike 2.5 -CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE. -License - -THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. - -BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS. - -1. Definitions - -a. "Collective Work" means a work, such as a periodical issue, anthology or encyclopedia, in which the Work in its entirety in unmodified form, along with a number of other contributions, constituting separate and independent works in themselves, are assembled into a collective whole. A work that constitutes a Collective Work will not be considered a Derivative Work (as defined below) for the purposes of this License. - -b. "Derivative Work" means a work based upon the Work or upon the Work and other pre-existing works, such as a translation, musical arrangement, dramatization, fictionalization, motion picture version, sound recording, art reproduction, abridgment, condensation, or any other form in which the Work may be recast, transformed, or adapted, except that a work that constitutes a Collective Work will not be considered a Derivative Work for the purpose of this License. For the avoidance of doubt, where the Work is a musical composition or sound recording, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered a Derivative Work for the purpose of this License. - -c. "Licensor" means the individual or entity that offers the Work under the terms of this License. - -d. "Original Author" means the individual or entity who created the Work. - -e. "Work" means the copyrightable work of authorship offered under the terms of this License. - -f. "You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation. - -g. "License Elements" means the following high-level license attributes as selected by Licensor and indicated in the title of this License: Attribution, Noncommercial, ShareAlike. - -2. Fair Use Rights. Nothing in this license is intended to reduce, limit, or restrict any rights arising from fair use, first sale or other limitations on the exclusive rights of the copyright owner under copyright law or other applicable laws. - -3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below: - -a. to reproduce the Work, to incorporate the Work into one or more Collective Works, and to reproduce the Work as incorporated in the Collective Works; - -b. to create and reproduce Derivative Works; - -c. to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission the Work including as incorporated in Collective Works; - -d. to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission Derivative Works; - -The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. All rights not expressly granted by Licensor are hereby reserved, including but not limited to the rights set forth in Sections 4(e) and 4(f). - -4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions: - -a. You may distribute, publicly display, publicly perform, or publicly digitally perform the Work only under the terms of this License, and You must include a copy of, or the Uniform Resource Identifier for, this License with every copy or phonorecord of the Work You distribute, publicly display, publicly perform, or publicly digitally perform. You may not offer or impose any terms on the Work that alter or restrict the terms of this License or the recipients' exercise of the rights granted hereunder. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties. You may not distribute, publicly display, publicly perform, or publicly digitally perform the Work with any technological measures that control access or use of the Work in a manner inconsistent with the terms of this License Agreement. The above applies to the Work as incorporated in a Collective Work, but this does not require the Collective Work apart from the Work itself to be made subject to the terms of this License. If You create a Collective Work, upon notice from any Licensor You must, to the extent practicable, remove from the Collective Work any credit as required by clause 4(d), as requested. If You create a Derivative Work, upon notice from any Licensor You must, to the extent practicable, remove from the Derivative Work any credit as required by clause 4(d), as requested. - -b. You may distribute, publicly display, publicly perform, or publicly digitally perform a Derivative Work only under the terms of this License, a later version of this License with the same License Elements as this License, or a Creative Commons iCommons license that contains the same License Elements as this License (e.g. Attribution-NonCommercial-ShareAlike 2.5 Japan). You must include a copy of, or the Uniform Resource Identifier for, this License or other license specified in the previous sentence with every copy or phonorecord of each Derivative Work You distribute, publicly display, publicly perform, or publicly digitally perform. You may not offer or impose any terms on the Derivative Works that alter or restrict the terms of this License or the recipients' exercise of the rights granted hereunder, and You must keep intact all notices that refer to this License and to the disclaimer of warranties. You may not distribute, publicly display, publicly perform, or publicly digitally perform the Derivative Work with any technological measures that control access or use of the Work in a manner inconsistent with the terms of this License Agreement. The above applies to the Derivative Work as incorporated in a Collective Work, but this does not require the Collective Work apart from the Derivative Work itself to be made subject to the terms of this License. - -c. You may not exercise any of the rights granted to You in Section 3 above in any manner that is primarily intended for or directed toward commercial advantage or private monetary compensation. The exchange of the Work for other copyrighted works by means of digital file-sharing or otherwise shall not be considered to be intended for or directed toward commercial advantage or private monetary compensation, provided there is no payment of any monetary compensation in connection with the exchange of copyrighted works. - -d. If you distribute, publicly display, publicly perform, or publicly digitally perform the Work or any Derivative Works or Collective Works, You must keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) the name of the Original Author (or pseudonym, if applicable) if supplied, and/or (ii) if the Original Author and/or Licensor designate another party or parties (e.g. a sponsor institute, publishing entity, journal) for attribution in Licensor's copyright notice, terms of service or by other reasonable means, the name of such party or parties; the title of the Work if supplied; to the extent reasonably practicable, the Uniform Resource Identifier, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and in the case of a Derivative Work, a credit identifying the use of the Work in the Derivative Work (e.g., "French translation of the Work by Original Author," or "Screenplay based on original Work by Original Author"). Such credit may be implemented in any reasonable manner; provided, however, that in the case of a Derivative Work or Collective Work, at a minimum such credit will appear where any other comparable authorship credit appears and in a manner at least as prominent as such other comparable authorship credit. - -e. For the avoidance of doubt, where the Work is a musical composition: - -i. Performance Royalties Under Blanket Licenses. Licensor reserves the exclusive right to collect, whether individually or via a performance rights society (e.g. ASCAP, BMI, SESAC), royalties for the public performance or public digital performance (e.g. webcast) of the Work if that performance is primarily intended for or directed toward commercial advantage or private monetary compensation. - -ii. Mechanical Rights and Statutory Royalties. Licensor reserves the exclusive right to collect, whether individually or via a music rights agency or designated agent (e.g. Harry Fox Agency), royalties for any phonorecord You create from the Work ("cover version") and distribute, subject to the compulsory license created by 17 USC Section 115 of the US Copyright Act (or the equivalent in other jurisdictions), if Your distribution of such cover version is primarily intended for or directed toward commercial advantage or private monetary compensation. - -f. Webcasting Rights and Statutory Royalties. For the avoidance of doubt, where the Work is a sound recording, Licensor reserves the exclusive right to collect, whether individually or via a performance-rights society (e.g. SoundExchange), royalties for the public digital performance (e.g. webcast) of the Work, subject to the compulsory license created by 17 USC Section 114 of the US Copyright Act (or the equivalent in other jurisdictions), if Your public digital performance is primarily intended for or directed toward commercial advantage or private monetary compensation. - -5. Representations, Warranties and Disclaimer - -UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. - -6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -7. Termination - -a. This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Derivative Works or Collective Works from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License. - -b. Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above. - -8. Miscellaneous - -a. Each time You distribute or publicly digitally perform the Work or a Collective Work, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License. - -b. Each time You distribute or publicly digitally perform a Derivative Work, Licensor offers to the recipient a license to the original Work on the same terms and conditions as the license granted to You under this License. - -c. If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. - -d. No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent. - -e. This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You. - -Creative Commons is not a party to this License, and makes no warranty whatsoever in connection with the Work. Creative Commons will not be liable to You or any party on any legal theory for any damages whatsoever, including without limitation any general, special, incidental or consequential damages arising in connection to this license. Notwithstanding the foregoing two (2) sentences, if Creative Commons has expressly identified itself as the Licensor hereunder, it shall have all rights and obligations of Licensor. - -Except for the limited purpose of indicating to the public that the Work is licensed under the CCPL, neither party will use the trademark "Creative Commons" or any related trademark or logo of Creative Commons without the prior written consent of Creative Commons. Any permitted use will be in compliance with Creative Commons' then-current trademark usage guidelines, as may be published on its website or otherwise made available upon request from time to time. - -Creative Commons may be contacted at http://creativecommons.org/. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-SA-3.0.txt b/vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-SA-3.0.txt deleted file mode 100644 index a50eacf..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-SA-3.0.txt +++ /dev/null @@ -1,360 +0,0 @@ -Creative Commons Legal Code - -Attribution-NonCommercial-ShareAlike 3.0 Unported - - CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE - LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN - ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS - INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES - REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR - DAMAGES RESULTING FROM ITS USE. - -License - -THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE -COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY -COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS -AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. - -BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE -TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY -BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS -CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND -CONDITIONS. - -1. Definitions - - a. "Adaptation" means a work based upon the Work, or upon the Work and - other pre-existing works, such as a translation, adaptation, - derivative work, arrangement of music or other alterations of a - literary or artistic work, or phonogram or performance and includes - cinematographic adaptations or any other form in which the Work may be - recast, transformed, or adapted including in any form recognizably - derived from the original, except that a work that constitutes a - Collection will not be considered an Adaptation for the purpose of - this License. For the avoidance of doubt, where the Work is a musical - work, performance or phonogram, the synchronization of the Work in - timed-relation with a moving image ("synching") will be considered an - Adaptation for the purpose of this License. - b. "Collection" means a collection of literary or artistic works, such as - encyclopedias and anthologies, or performances, phonograms or - broadcasts, or other works or subject matter other than works listed - in Section 1(g) below, which, by reason of the selection and - arrangement of their contents, constitute intellectual creations, in - which the Work is included in its entirety in unmodified form along - with one or more other contributions, each constituting separate and - independent works in themselves, which together are assembled into a - collective whole. A work that constitutes a Collection will not be - considered an Adaptation (as defined above) for the purposes of this - License. - c. "Distribute" means to make available to the public the original and - copies of the Work or Adaptation, as appropriate, through sale or - other transfer of ownership. - d. "License Elements" means the following high-level license attributes - as selected by Licensor and indicated in the title of this License: - Attribution, Noncommercial, ShareAlike. - e. "Licensor" means the individual, individuals, entity or entities that - offer(s) the Work under the terms of this License. - f. "Original Author" means, in the case of a literary or artistic work, - the individual, individuals, entity or entities who created the Work - or if no individual or entity can be identified, the publisher; and in - addition (i) in the case of a performance the actors, singers, - musicians, dancers, and other persons who act, sing, deliver, declaim, - play in, interpret or otherwise perform literary or artistic works or - expressions of folklore; (ii) in the case of a phonogram the producer - being the person or legal entity who first fixes the sounds of a - performance or other sounds; and, (iii) in the case of broadcasts, the - organization that transmits the broadcast. - g. "Work" means the literary and/or artistic work offered under the terms - of this License including without limitation any production in the - literary, scientific and artistic domain, whatever may be the mode or - form of its expression including digital form, such as a book, - pamphlet and other writing; a lecture, address, sermon or other work - of the same nature; a dramatic or dramatico-musical work; a - choreographic work or entertainment in dumb show; a musical - composition with or without words; a cinematographic work to which are - assimilated works expressed by a process analogous to cinematography; - a work of drawing, painting, architecture, sculpture, engraving or - lithography; a photographic work to which are assimilated works - expressed by a process analogous to photography; a work of applied - art; an illustration, map, plan, sketch or three-dimensional work - relative to geography, topography, architecture or science; a - performance; a broadcast; a phonogram; a compilation of data to the - extent it is protected as a copyrightable work; or a work performed by - a variety or circus performer to the extent it is not otherwise - considered a literary or artistic work. - h. "You" means an individual or entity exercising rights under this - License who has not previously violated the terms of this License with - respect to the Work, or who has received express permission from the - Licensor to exercise rights under this License despite a previous - violation. - i. "Publicly Perform" means to perform public recitations of the Work and - to communicate to the public those public recitations, by any means or - process, including by wire or wireless means or public digital - performances; to make available to the public Works in such a way that - members of the public may access these Works from a place and at a - place individually chosen by them; to perform the Work to the public - by any means or process and the communication to the public of the - performances of the Work, including by public digital performance; to - broadcast and rebroadcast the Work by any means including signs, - sounds or images. - j. "Reproduce" means to make copies of the Work by any means including - without limitation by sound or visual recordings and the right of - fixation and reproducing fixations of the Work, including storage of a - protected performance or phonogram in digital form or other electronic - medium. - -2. Fair Dealing Rights. Nothing in this License is intended to reduce, -limit, or restrict any uses free from copyright or rights arising from -limitations or exceptions that are provided for in connection with the -copyright protection under copyright law or other applicable laws. - -3. License Grant. Subject to the terms and conditions of this License, -Licensor hereby grants You a worldwide, royalty-free, non-exclusive, -perpetual (for the duration of the applicable copyright) license to -exercise the rights in the Work as stated below: - - a. to Reproduce the Work, to incorporate the Work into one or more - Collections, and to Reproduce the Work as incorporated in the - Collections; - b. to create and Reproduce Adaptations provided that any such Adaptation, - including any translation in any medium, takes reasonable steps to - clearly label, demarcate or otherwise identify that changes were made - to the original Work. For example, a translation could be marked "The - original work was translated from English to Spanish," or a - modification could indicate "The original work has been modified."; - c. to Distribute and Publicly Perform the Work including as incorporated - in Collections; and, - d. to Distribute and Publicly Perform Adaptations. - -The above rights may be exercised in all media and formats whether now -known or hereafter devised. The above rights include the right to make -such modifications as are technically necessary to exercise the rights in -other media and formats. Subject to Section 8(f), all rights not expressly -granted by Licensor are hereby reserved, including but not limited to the -rights described in Section 4(e). - -4. Restrictions. The license granted in Section 3 above is expressly made -subject to and limited by the following restrictions: - - a. You may Distribute or Publicly Perform the Work only under the terms - of this License. You must include a copy of, or the Uniform Resource - Identifier (URI) for, this License with every copy of the Work You - Distribute or Publicly Perform. You may not offer or impose any terms - on the Work that restrict the terms of this License or the ability of - the recipient of the Work to exercise the rights granted to that - recipient under the terms of the License. You may not sublicense the - Work. You must keep intact all notices that refer to this License and - to the disclaimer of warranties with every copy of the Work You - Distribute or Publicly Perform. When You Distribute or Publicly - Perform the Work, You may not impose any effective technological - measures on the Work that restrict the ability of a recipient of the - Work from You to exercise the rights granted to that recipient under - the terms of the License. This Section 4(a) applies to the Work as - incorporated in a Collection, but this does not require the Collection - apart from the Work itself to be made subject to the terms of this - License. If You create a Collection, upon notice from any Licensor You - must, to the extent practicable, remove from the Collection any credit - as required by Section 4(d), as requested. If You create an - Adaptation, upon notice from any Licensor You must, to the extent - practicable, remove from the Adaptation any credit as required by - Section 4(d), as requested. - b. You may Distribute or Publicly Perform an Adaptation only under: (i) - the terms of this License; (ii) a later version of this License with - the same License Elements as this License; (iii) a Creative Commons - jurisdiction license (either this or a later license version) that - contains the same License Elements as this License (e.g., - Attribution-NonCommercial-ShareAlike 3.0 US) ("Applicable License"). - You must include a copy of, or the URI, for Applicable License with - every copy of each Adaptation You Distribute or Publicly Perform. You - may not offer or impose any terms on the Adaptation that restrict the - terms of the Applicable License or the ability of the recipient of the - Adaptation to exercise the rights granted to that recipient under the - terms of the Applicable License. You must keep intact all notices that - refer to the Applicable License and to the disclaimer of warranties - with every copy of the Work as included in the Adaptation You - Distribute or Publicly Perform. When You Distribute or Publicly - Perform the Adaptation, You may not impose any effective technological - measures on the Adaptation that restrict the ability of a recipient of - the Adaptation from You to exercise the rights granted to that - recipient under the terms of the Applicable License. This Section 4(b) - applies to the Adaptation as incorporated in a Collection, but this - does not require the Collection apart from the Adaptation itself to be - made subject to the terms of the Applicable License. - c. You may not exercise any of the rights granted to You in Section 3 - above in any manner that is primarily intended for or directed toward - commercial advantage or private monetary compensation. The exchange of - the Work for other copyrighted works by means of digital file-sharing - or otherwise shall not be considered to be intended for or directed - toward commercial advantage or private monetary compensation, provided - there is no payment of any monetary compensation in con-nection with - the exchange of copyrighted works. - d. If You Distribute, or Publicly Perform the Work or any Adaptations or - Collections, You must, unless a request has been made pursuant to - Section 4(a), keep intact all copyright notices for the Work and - provide, reasonable to the medium or means You are utilizing: (i) the - name of the Original Author (or pseudonym, if applicable) if supplied, - and/or if the Original Author and/or Licensor designate another party - or parties (e.g., a sponsor institute, publishing entity, journal) for - attribution ("Attribution Parties") in Licensor's copyright notice, - terms of service or by other reasonable means, the name of such party - or parties; (ii) the title of the Work if supplied; (iii) to the - extent reasonably practicable, the URI, if any, that Licensor - specifies to be associated with the Work, unless such URI does not - refer to the copyright notice or licensing information for the Work; - and, (iv) consistent with Section 3(b), in the case of an Adaptation, - a credit identifying the use of the Work in the Adaptation (e.g., - "French translation of the Work by Original Author," or "Screenplay - based on original Work by Original Author"). The credit required by - this Section 4(d) may be implemented in any reasonable manner; - provided, however, that in the case of a Adaptation or Collection, at - a minimum such credit will appear, if a credit for all contributing - authors of the Adaptation or Collection appears, then as part of these - credits and in a manner at least as prominent as the credits for the - other contributing authors. For the avoidance of doubt, You may only - use the credit required by this Section for the purpose of attribution - in the manner set out above and, by exercising Your rights under this - License, You may not implicitly or explicitly assert or imply any - connection with, sponsorship or endorsement by the Original Author, - Licensor and/or Attribution Parties, as appropriate, of You or Your - use of the Work, without the separate, express prior written - permission of the Original Author, Licensor and/or Attribution - Parties. - e. For the avoidance of doubt: - - i. Non-waivable Compulsory License Schemes. In those jurisdictions in - which the right to collect royalties through any statutory or - compulsory licensing scheme cannot be waived, the Licensor - reserves the exclusive right to collect such royalties for any - exercise by You of the rights granted under this License; - ii. Waivable Compulsory License Schemes. In those jurisdictions in - which the right to collect royalties through any statutory or - compulsory licensing scheme can be waived, the Licensor reserves - the exclusive right to collect such royalties for any exercise by - You of the rights granted under this License if Your exercise of - such rights is for a purpose or use which is otherwise than - noncommercial as permitted under Section 4(c) and otherwise waives - the right to collect royalties through any statutory or compulsory - licensing scheme; and, - iii. Voluntary License Schemes. The Licensor reserves the right to - collect royalties, whether individually or, in the event that the - Licensor is a member of a collecting society that administers - voluntary licensing schemes, via that society, from any exercise - by You of the rights granted under this License that is for a - purpose or use which is otherwise than noncommercial as permitted - under Section 4(c). - f. Except as otherwise agreed in writing by the Licensor or as may be - otherwise permitted by applicable law, if You Reproduce, Distribute or - Publicly Perform the Work either by itself or as part of any - Adaptations or Collections, You must not distort, mutilate, modify or - take other derogatory action in relation to the Work which would be - prejudicial to the Original Author's honor or reputation. Licensor - agrees that in those jurisdictions (e.g. Japan), in which any exercise - of the right granted in Section 3(b) of this License (the right to - make Adaptations) would be deemed to be a distortion, mutilation, - modification or other derogatory action prejudicial to the Original - Author's honor and reputation, the Licensor will waive or not assert, - as appropriate, this Section, to the fullest extent permitted by the - applicable national law, to enable You to reasonably exercise Your - right under Section 3(b) of this License (right to make Adaptations) - but not otherwise. - -5. Representations, Warranties and Disclaimer - -UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING AND TO THE -FULLEST EXTENT PERMITTED BY APPLICABLE LAW, LICENSOR OFFERS THE WORK AS-IS -AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE -WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT -LIMITATION, WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR -PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, -ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT -DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED -WARRANTIES, SO THIS EXCLUSION MAY NOT APPLY TO YOU. - -6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE -LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR -ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES -ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS -BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -7. Termination - - a. This License and the rights granted hereunder will terminate - automatically upon any breach by You of the terms of this License. - Individuals or entities who have received Adaptations or Collections - from You under this License, however, will not have their licenses - terminated provided such individuals or entities remain in full - compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will - survive any termination of this License. - b. Subject to the above terms and conditions, the license granted here is - perpetual (for the duration of the applicable copyright in the Work). - Notwithstanding the above, Licensor reserves the right to release the - Work under different license terms or to stop distributing the Work at - any time; provided, however that any such election will not serve to - withdraw this License (or any other license that has been, or is - required to be, granted under the terms of this License), and this - License will continue in full force and effect unless terminated as - stated above. - -8. Miscellaneous - - a. Each time You Distribute or Publicly Perform the Work or a Collection, - the Licensor offers to the recipient a license to the Work on the same - terms and conditions as the license granted to You under this License. - b. Each time You Distribute or Publicly Perform an Adaptation, Licensor - offers to the recipient a license to the original Work on the same - terms and conditions as the license granted to You under this License. - c. If any provision of this License is invalid or unenforceable under - applicable law, it shall not affect the validity or enforceability of - the remainder of the terms of this License, and without further action - by the parties to this agreement, such provision shall be reformed to - the minimum extent necessary to make such provision valid and - enforceable. - d. No term or provision of this License shall be deemed waived and no - breach consented to unless such waiver or consent shall be in writing - and signed by the party to be charged with such waiver or consent. - e. This License constitutes the entire agreement between the parties with - respect to the Work licensed here. There are no understandings, - agreements or representations with respect to the Work not specified - here. Licensor shall not be bound by any additional provisions that - may appear in any communication from You. This License may not be - modified without the mutual written agreement of the Licensor and You. - f. The rights granted under, and the subject matter referenced, in this - License were drafted utilizing the terminology of the Berne Convention - for the Protection of Literary and Artistic Works (as amended on - September 28, 1979), the Rome Convention of 1961, the WIPO Copyright - Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 - and the Universal Copyright Convention (as revised on July 24, 1971). - These rights and subject matter take effect in the relevant - jurisdiction in which the License terms are sought to be enforced - according to the corresponding provisions of the implementation of - those treaty provisions in the applicable national law. If the - standard suite of rights granted under applicable copyright law - includes additional rights not granted under this License, such - additional rights are deemed to be included in the License; this - License is not intended to restrict the license of any rights under - applicable law. - - -Creative Commons Notice - - Creative Commons is not a party to this License, and makes no warranty - whatsoever in connection with the Work. Creative Commons will not be - liable to You or any party on any legal theory for any damages - whatsoever, including without limitation any general, special, - incidental or consequential damages arising in connection to this - license. Notwithstanding the foregoing two (2) sentences, if Creative - Commons has expressly identified itself as the Licensor hereunder, it - shall have all rights and obligations of Licensor. - - Except for the limited purpose of indicating to the public that the - Work is licensed under the CCPL, Creative Commons does not authorize - the use by either party of the trademark "Creative Commons" or any - related trademark or logo of Creative Commons without the prior - written consent of Creative Commons. Any permitted use will be in - compliance with Creative Commons' then-current trademark usage - guidelines, as may be published on its website or otherwise made - available upon request from time to time. For the avoidance of doubt, - this trademark restriction does not form part of this License. - - Creative Commons may be contacted at https://creativecommons.org/. diff --git a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-SA-4.0.txt b/vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-SA-4.0.txt deleted file mode 100644 index c78dcef..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-NC-SA-4.0.txt +++ /dev/null @@ -1,438 +0,0 @@ -Attribution-NonCommercial-ShareAlike 4.0 International - -======================================================================= - -Creative Commons Corporation ("Creative Commons") is not a law firm and -does not provide legal services or legal advice. Distribution of -Creative Commons public licenses does not create a lawyer-client or -other relationship. Creative Commons makes its licenses and related -information available on an "as-is" basis. Creative Commons gives no -warranties regarding its licenses, any material licensed under their -terms and conditions, or any related information. Creative Commons -disclaims all liability for damages resulting from their use to the -fullest extent possible. - -Using Creative Commons Public Licenses - -Creative Commons public licenses provide a standard set of terms and -conditions that creators and other rights holders may use to share -original works of authorship and other material subject to copyright -and certain other rights specified in the public license below. The -following considerations are for informational purposes only, are not -exhaustive, and do not form part of our licenses. - - Considerations for licensors: Our public licenses are - intended for use by those authorized to give the public - permission to use material in ways otherwise restricted by - copyright and certain other rights. Our licenses are - irrevocable. Licensors should read and understand the terms - and conditions of the license they choose before applying it. - Licensors should also secure all rights necessary before - applying our licenses so that the public can reuse the - material as expected. Licensors should clearly mark any - material not subject to the license. This includes other CC- - licensed material, or material used under an exception or - limitation to copyright. More considerations for licensors: - wiki.creativecommons.org/Considerations_for_licensors - - Considerations for the public: By using one of our public - licenses, a licensor grants the public permission to use the - licensed material under specified terms and conditions. If - the licensor's permission is not necessary for any reason--for - example, because of any applicable exception or limitation to - copyright--then that use is not regulated by the license. Our - licenses grant only permissions under copyright and certain - other rights that a licensor has authority to grant. Use of - the licensed material may still be restricted for other - reasons, including because others have copyright or other - rights in the material. A licensor may make special requests, - such as asking that all changes be marked or described. - Although not required by our licenses, you are encouraged to - respect those requests where reasonable. More_considerations - for the public: - wiki.creativecommons.org/Considerations_for_licensees - -======================================================================= - -Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International -Public License - -By exercising the Licensed Rights (defined below), You accept and agree -to be bound by the terms and conditions of this Creative Commons -Attribution-NonCommercial-ShareAlike 4.0 International Public License -("Public License"). To the extent this Public License may be -interpreted as a contract, You are granted the Licensed Rights in -consideration of Your acceptance of these terms and conditions, and the -Licensor grants You such rights in consideration of benefits the -Licensor receives from making the Licensed Material available under -these terms and conditions. - - -Section 1 -- Definitions. - - a. Adapted Material means material subject to Copyright and Similar - Rights that is derived from or based upon the Licensed Material - and in which the Licensed Material is translated, altered, - arranged, transformed, or otherwise modified in a manner requiring - permission under the Copyright and Similar Rights held by the - Licensor. For purposes of this Public License, where the Licensed - Material is a musical work, performance, or sound recording, - Adapted Material is always produced where the Licensed Material is - synched in timed relation with a moving image. - - b. Adapter's License means the license You apply to Your Copyright - and Similar Rights in Your contributions to Adapted Material in - accordance with the terms and conditions of this Public License. - - c. BY-NC-SA Compatible License means a license listed at - creativecommons.org/compatiblelicenses, approved by Creative - Commons as essentially the equivalent of this Public License. - - d. Copyright and Similar Rights means copyright and/or similar rights - closely related to copyright including, without limitation, - performance, broadcast, sound recording, and Sui Generis Database - Rights, without regard to how the rights are labeled or - categorized. For purposes of this Public License, the rights - specified in Section 2(b)(1)-(2) are not Copyright and Similar - Rights. - - e. Effective Technological Measures means those measures that, in the - absence of proper authority, may not be circumvented under laws - fulfilling obligations under Article 11 of the WIPO Copyright - Treaty adopted on December 20, 1996, and/or similar international - agreements. - - f. Exceptions and Limitations means fair use, fair dealing, and/or - any other exception or limitation to Copyright and Similar Rights - that applies to Your use of the Licensed Material. - - g. License Elements means the license attributes listed in the name - of a Creative Commons Public License. The License Elements of this - Public License are Attribution, NonCommercial, and ShareAlike. - - h. Licensed Material means the artistic or literary work, database, - or other material to which the Licensor applied this Public - License. - - i. Licensed Rights means the rights granted to You subject to the - terms and conditions of this Public License, which are limited to - all Copyright and Similar Rights that apply to Your use of the - Licensed Material and that the Licensor has authority to license. - - j. Licensor means the individual(s) or entity(ies) granting rights - under this Public License. - - k. NonCommercial means not primarily intended for or directed towards - commercial advantage or monetary compensation. For purposes of - this Public License, the exchange of the Licensed Material for - other material subject to Copyright and Similar Rights by digital - file-sharing or similar means is NonCommercial provided there is - no payment of monetary compensation in connection with the - exchange. - - l. Share means to provide material to the public by any means or - process that requires permission under the Licensed Rights, such - as reproduction, public display, public performance, distribution, - dissemination, communication, or importation, and to make material - available to the public including in ways that members of the - public may access the material from a place and at a time - individually chosen by them. - - m. Sui Generis Database Rights means rights other than copyright - resulting from Directive 96/9/EC of the European Parliament and of - the Council of 11 March 1996 on the legal protection of databases, - as amended and/or succeeded, as well as other essentially - equivalent rights anywhere in the world. - - n. You means the individual or entity exercising the Licensed Rights - under this Public License. Your has a corresponding meaning. - - -Section 2 -- Scope. - - a. License grant. - - 1. Subject to the terms and conditions of this Public License, - the Licensor hereby grants You a worldwide, royalty-free, - non-sublicensable, non-exclusive, irrevocable license to - exercise the Licensed Rights in the Licensed Material to: - - a. reproduce and Share the Licensed Material, in whole or - in part, for NonCommercial purposes only; and - - b. produce, reproduce, and Share Adapted Material for - NonCommercial purposes only. - - 2. Exceptions and Limitations. For the avoidance of doubt, where - Exceptions and Limitations apply to Your use, this Public - License does not apply, and You do not need to comply with - its terms and conditions. - - 3. Term. The term of this Public License is specified in Section - 6(a). - - 4. Media and formats; technical modifications allowed. The - Licensor authorizes You to exercise the Licensed Rights in - all media and formats whether now known or hereafter created, - and to make technical modifications necessary to do so. The - Licensor waives and/or agrees not to assert any right or - authority to forbid You from making technical modifications - necessary to exercise the Licensed Rights, including - technical modifications necessary to circumvent Effective - Technological Measures. For purposes of this Public License, - simply making modifications authorized by this Section 2(a) - (4) never produces Adapted Material. - - 5. Downstream recipients. - - a. Offer from the Licensor -- Licensed Material. Every - recipient of the Licensed Material automatically - receives an offer from the Licensor to exercise the - Licensed Rights under the terms and conditions of this - Public License. - - b. Additional offer from the Licensor -- Adapted Material. - Every recipient of Adapted Material from You - automatically receives an offer from the Licensor to - exercise the Licensed Rights in the Adapted Material - under the conditions of the Adapter's License You apply. - - c. No downstream restrictions. You may not offer or impose - any additional or different terms or conditions on, or - apply any Effective Technological Measures to, the - Licensed Material if doing so restricts exercise of the - Licensed Rights by any recipient of the Licensed - Material. - - 6. No endorsement. Nothing in this Public License constitutes or - may be construed as permission to assert or imply that You - are, or that Your use of the Licensed Material is, connected - with, or sponsored, endorsed, or granted official status by, - the Licensor or others designated to receive attribution as - provided in Section 3(a)(1)(A)(i). - - b. Other rights. - - 1. Moral rights, such as the right of integrity, are not - licensed under this Public License, nor are publicity, - privacy, and/or other similar personality rights; however, to - the extent possible, the Licensor waives and/or agrees not to - assert any such rights held by the Licensor to the limited - extent necessary to allow You to exercise the Licensed - Rights, but not otherwise. - - 2. Patent and trademark rights are not licensed under this - Public License. - - 3. To the extent possible, the Licensor waives any right to - collect royalties from You for the exercise of the Licensed - Rights, whether directly or through a collecting society - under any voluntary or waivable statutory or compulsory - licensing scheme. In all other cases the Licensor expressly - reserves any right to collect such royalties, including when - the Licensed Material is used other than for NonCommercial - purposes. - - -Section 3 -- License Conditions. - -Your exercise of the Licensed Rights is expressly made subject to the -following conditions. - - a. Attribution. - - 1. If You Share the Licensed Material (including in modified - form), You must: - - a. retain the following if it is supplied by the Licensor - with the Licensed Material: - - i. identification of the creator(s) of the Licensed - Material and any others designated to receive - attribution, in any reasonable manner requested by - the Licensor (including by pseudonym if - designated); - - ii. a copyright notice; - - iii. a notice that refers to this Public License; - - iv. a notice that refers to the disclaimer of - warranties; - - v. a URI or hyperlink to the Licensed Material to the - extent reasonably practicable; - - b. indicate if You modified the Licensed Material and - retain an indication of any previous modifications; and - - c. indicate the Licensed Material is licensed under this - Public License, and include the text of, or the URI or - hyperlink to, this Public License. - - 2. You may satisfy the conditions in Section 3(a)(1) in any - reasonable manner based on the medium, means, and context in - which You Share the Licensed Material. For example, it may be - reasonable to satisfy the conditions by providing a URI or - hyperlink to a resource that includes the required - information. - 3. If requested by the Licensor, You must remove any of the - information required by Section 3(a)(1)(A) to the extent - reasonably practicable. - - b. ShareAlike. - - In addition to the conditions in Section 3(a), if You Share - Adapted Material You produce, the following conditions also apply. - - 1. The Adapter's License You apply must be a Creative Commons - license with the same License Elements, this version or - later, or a BY-NC-SA Compatible License. - - 2. You must include the text of, or the URI or hyperlink to, the - Adapter's License You apply. You may satisfy this condition - in any reasonable manner based on the medium, means, and - context in which You Share Adapted Material. - - 3. You may not offer or impose any additional or different terms - or conditions on, or apply any Effective Technological - Measures to, Adapted Material that restrict exercise of the - rights granted under the Adapter's License You apply. - - -Section 4 -- Sui Generis Database Rights. - -Where the Licensed Rights include Sui Generis Database Rights that -apply to Your use of the Licensed Material: - - a. for the avoidance of doubt, Section 2(a)(1) grants You the right - to extract, reuse, reproduce, and Share all or a substantial - portion of the contents of the database for NonCommercial purposes - only; - - b. if You include all or a substantial portion of the database - contents in a database in which You have Sui Generis Database - Rights, then the database in which You have Sui Generis Database - Rights (but not its individual contents) is Adapted Material, - including for purposes of Section 3(b); and - - c. You must comply with the conditions in Section 3(a) if You Share - all or a substantial portion of the contents of the database. - -For the avoidance of doubt, this Section 4 supplements and does not -replace Your obligations under this Public License where the Licensed -Rights include other Copyright and Similar Rights. - - -Section 5 -- Disclaimer of Warranties and Limitation of Liability. - - a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE - EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS - AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF - ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, - IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, - WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR - PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, - ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT - KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT - ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. - - b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE - TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, - NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, - INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, - COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR - USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN - ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR - DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR - IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. - - c. The disclaimer of warranties and limitation of liability provided - above shall be interpreted in a manner that, to the extent - possible, most closely approximates an absolute disclaimer and - waiver of all liability. - - -Section 6 -- Term and Termination. - - a. This Public License applies for the term of the Copyright and - Similar Rights licensed here. However, if You fail to comply with - this Public License, then Your rights under this Public License - terminate automatically. - - b. Where Your right to use the Licensed Material has terminated under - Section 6(a), it reinstates: - - 1. automatically as of the date the violation is cured, provided - it is cured within 30 days of Your discovery of the - violation; or - - 2. upon express reinstatement by the Licensor. - - For the avoidance of doubt, this Section 6(b) does not affect any - right the Licensor may have to seek remedies for Your violations - of this Public License. - - c. For the avoidance of doubt, the Licensor may also offer the - Licensed Material under separate terms or conditions or stop - distributing the Licensed Material at any time; however, doing so - will not terminate this Public License. - - d. Sections 1, 5, 6, 7, and 8 survive termination of this Public - License. - - -Section 7 -- Other Terms and Conditions. - - a. The Licensor shall not be bound by any additional or different - terms or conditions communicated by You unless expressly agreed. - - b. Any arrangements, understandings, or agreements regarding the - Licensed Material not stated herein are separate from and - independent of the terms and conditions of this Public License. - - -Section 8 -- Interpretation. - - a. For the avoidance of doubt, this Public License does not, and - shall not be interpreted to, reduce, limit, restrict, or impose - conditions on any use of the Licensed Material that could lawfully - be made without permission under this Public License. - - b. To the extent possible, if any provision of this Public License is - deemed unenforceable, it shall be automatically reformed to the - minimum extent necessary to make it enforceable. If the provision - cannot be reformed, it shall be severed from this Public License - without affecting the enforceability of the remaining terms and - conditions. - - c. No term or condition of this Public License will be waived and no - failure to comply consented to unless expressly agreed to by the - Licensor. - - d. Nothing in this Public License constitutes or may be interpreted - as a limitation upon, or waiver of, any privileges and immunities - that apply to the Licensor or You, including from the legal - processes of any jurisdiction or authority. - -======================================================================= - -Creative Commons is not a party to its public -licenses. Notwithstanding, Creative Commons may elect to apply one of -its public licenses to material it publishes and in those instances -will be considered the “Licensor.” The text of the Creative Commons -public licenses is dedicated to the public domain under the CC0 Public -Domain Dedication. Except for the limited purpose of indicating that -material is shared under a Creative Commons public license or as -otherwise permitted by the Creative Commons policies published at -creativecommons.org/policies, Creative Commons does not authorize the -use of the trademark "Creative Commons" or any other trademark or logo -of Creative Commons without its prior written consent including, -without limitation, in connection with any unauthorized modifications -to any of its public licenses or any other arrangements, -understandings, or agreements concerning use of licensed material. For -the avoidance of doubt, this paragraph does not form part of the -public licenses. - -Creative Commons may be contacted at creativecommons.org. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-ND-1.0.txt b/vendor/github.com/google/licenseclassifier/licenses/CC-BY-ND-1.0.txt deleted file mode 100644 index ca12642..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-ND-1.0.txt +++ /dev/null @@ -1,179 +0,0 @@ -Creative Commons Attribution-NoDerivs 1.0 - -CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL -SERVICES. DISTRIBUTION OF THIS DRAFT LICENSE DOES NOT CREATE AN ATTORNEY- -CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" -BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION -PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE. - -License - -THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE -COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY -COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS -AUTHORIZED UNDER THIS LICENSE IS PROHIBITED. - -BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE -BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS YOU THE RIGHTS -CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND -CONDITIONS. - -1. Definitions - -a. "Collective Work" means a work, such as a periodical issue, anthology or -encyclopedia, in which the Work in its entirety in unmodified form, along with -a number of other contributions, constituting separate and independent works -in themselves, are assembled into a collective whole. A work that constitutes -a Collective Work will not be considered a Derivative Work (as defined below) -for the purposes of this License. - -b. "Derivative Work" means a work based upon the Work or upon the Work and -other pre-existing works, such as a translation, musical arrangement, -dramatization, fictionalization, motion picture version, sound recording, art -reproduction, abridgment, condensation, or any other form in which the Work -may be recast, transformed, or adapted, except that a work that constitutes a -Collective Work will not be considered a Derivative Work for the purpose of -this License. - -c. "Licensor" means the individual or entity that offers the Work under the -terms of this License. - -d. "Original Author" means the individual or entity who created the Work. - -e. "Work" means the copyrightable work of authorship offered under the terms -of this License. - -f. "You" means an individual or entity exercising rights under this License -who has not previously violated the terms of this License with respect to the -Work, or who has received express permission from the Licensor to exercise -rights under this License despite a previous violation. - -2. Fair Use Rights. Nothing in this license is intended to reduce, limit, or restrict any rights arising from fair use, first sale or other limitations on the exclusive rights of the copyright owner under copyright law or other applicable laws. - -3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below: - -a. to reproduce the Work, to incorporate the Work into one or more Collective -Works, and to reproduce the Work as incorporated in the Collective Works; - -b. to distribute copies or phonorecords of, display publicly, perform -publicly, and perform publicly by means of a digital audio transmission the -Work including as incorporated in Collective Works; - -The above rights may be exercised in all media and formats whether now known -or hereafter devised. The above rights include the right to make such -modifications as are technically necessary to exercise the rights in other -media and formats. All rights not expressly granted by Licensor are hereby -reserved. - -4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions: - -a. You may distribute, publicly display, publicly perform, or publicly -digitally perform the Work only under the terms of this License, and You must -include a copy of, or the Uniform Resource Identifier for, this License with -every copy or phonorecord of the Work You distribute, publicly display, -publicly perform, or publicly digitally perform. You may not offer or impose -any terms on the Work that alter or restrict the terms of this License or the -recipients' exercise of the rights granted hereunder. You may not -sublicense the Work. You must keep intact all notices that refer to this -License and to the disclaimer of warranties. You may not distribute, publicly -display, publicly perform, or publicly digitally perform the Work with any -technological measures that control access or use of the Work in a manner -inconsistent with the terms of this License Agreement. The above applies to -the Work as incorporated in a Collective Work, but this does not require the -Collective Work apart from the Work itself to be made subject to the terms of -this License. If You create a Collective Work, upon notice from any Licensor -You must, to the extent practicable, remove from the Collective Work any -reference to such Licensor or the Original Author, as requested. - -b. If you distribute, publicly display, publicly perform, or publicly -digitally perform the Work or any Collective Works, You must keep intact all -copyright notices for the Work and give the Original Author credit reasonable -to the medium or means You are utilizing by conveying the name (or pseudonym -if applicable) of the Original Author if supplied; the title of the Work if -supplied. Such credit may be implemented in any reasonable manner; provided, -however, that in the case of a Collective Work, at a minimum such credit will -appear where any other comparable authorship credit appears and in a manner at -least as prominent as such other comparable authorship credit. - -5. Representations, Warranties and Disclaimer - -a. By offering the Work for public release under this License, Licensor -represents and warrants that, to the best of Licensor's knowledge after -reasonable inquiry: - -i. Licensor has secured all rights in the Work necessary to grant the license -rights hereunder and to permit the lawful exercise of the rights granted -hereunder without You having any obligation to pay any royalties, compulsory -license fees, residuals or any other payments; - -ii. The Work does not infringe the copyright, trademark, publicity rights, -common law rights or any other right of any third party or constitute -defamation, invasion of privacy or other tortious injury to any third party. - -b. EXCEPT AS EXPRESSLY STATED IN THIS LICENSE OR OTHERWISE AGREED IN WRITING -OR REQUIRED BY APPLICABLE LAW, THE WORK IS LICENSED ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT -LIMITATION, ANY WARRANTIES REGARDING THE CONTENTS OR ACCURACY OF THE WORK. - -6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, AND EXCEPT FOR DAMAGES ARISING FROM LIABILITY TO A THIRD PARTY RESULTING FROM BREACH OF THE WARRANTIES IN SECTION 5, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -7. Termination - -a. This License and the rights granted hereunder will terminate automatically -upon any breach by You of the terms of this License. Individuals or entities -who have received Collective Works from You under this License, however, will -not have their licenses terminated provided such individuals or entities -remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 -will survive any termination of this License. - -b. Subject to the above terms and conditions, the license granted here is -perpetual (for the duration of the applicable copyright in the Work). -Notwithstanding the above, Licensor reserves the right to release the Work -under different license terms or to stop distributing the Work at any time; -provided, however that any such election will not serve to withdraw this -License (or any other license that has been, or is required to be, granted -under the terms of this License), and this License will continue in full force -and effect unless terminated as stated above. - -8. Miscellaneous - -a. Each time You distribute or publicly digitally perform the Work or a -Collective Work, the Licensor offers to the recipient a license to the Work on -the same terms and conditions as the license granted to You under this -License. - -b. If any provision of this License is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this License, and without further action by the -parties to this agreement, such provision shall be reformed to the minimum -extent necessary to make such provision valid and enforceable. - -c. No term or provision of this License shall be deemed waived and no breach -consented to unless such waiver or consent shall be in writing and signed by -the party to be charged with such waiver or consent. - -d. This License constitutes the entire agreement between the parties with -respect to the Work licensed here. There are no understandings, agreements or -representations with respect to the Work not specified here. Licensor shall -not be bound by any additional provisions that may appear in any communication -from You. This License may not be modified without the mutual written -agreement of the Licensor and You. - -Creative Commons is not a party to this License, and makes no warranty -whatsoever in connection with the Work. Creative Commons will not be liable to -You or any party on any legal theory for any damages whatsoever, including -without limitation any general, special, incidental or consequential damages -arising in connection to this license. Notwithstanding the foregoing two (2) -sentences, if Creative Commons has expressly identified itself as the Licensor -hereunder, it shall have all rights and obligations of Licensor. - -Except for the limited purpose of indicating to the public that the Work is -licensed under the CCPL, neither party will use the trademark "Creative -Commons" or any related trademark or logo of Creative Commons without the -prior written consent of Creative Commons. Any permitted use will be in -compliance with Creative Commons' then-current trademark usage -guidelines, as may be published on its website or otherwise made available -upon request from time to time. - -Creative Commons may be contacted at http://creativecommons.org/. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-ND-2.0.txt b/vendor/github.com/google/licenseclassifier/licenses/CC-BY-ND-2.0.txt deleted file mode 100644 index 598e8ce..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-ND-2.0.txt +++ /dev/null @@ -1,197 +0,0 @@ -Creative Commons Attribution-NoDerivs 2.0 - -CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL -SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT -RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. -CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, AND -DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE. - -License - -THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE -COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY -COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS -AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. - -BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE -BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS YOU THE RIGHTS -CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND -CONDITIONS. - -1. Definitions - -a. "Collective Work" means a work, such as a periodical issue, anthology or -encyclopedia, in which the Work in its entirety in unmodified form, along with -a number of other contributions, constituting separate and independent works -in themselves, are assembled into a collective whole. A work that constitutes -a Collective Work will not be considered a Derivative Work (as defined below) -for the purposes of this License. - -b. "Derivative Work" means a work based upon the Work or upon the Work and -other pre-existing works, such as a translation, musical arrangement, -dramatization, fictionalization, motion picture version, sound recording, art -reproduction, abridgment, condensation, or any other form in which the Work -may be recast, transformed, or adapted, except that a work that constitutes a -Collective Work will not be considered a Derivative Work for the purpose of -this License. For the avoidance of doubt, where the Work is a musical -composition or sound recording, the synchronization of the Work in timed- -relation with a moving image ("synching") will be considered a Derivative Work -for the purpose of this License. - -c. "Licensor" means the individual or entity that offers the Work under the -terms of this License. - -d. "Original Author" means the individual or entity who created the Work. - -e. "Work" means the copyrightable work of authorship offered under the terms -of this License. - -f. "You" means an individual or entity exercising rights under this License -who has not previously violated the terms of this License with respect to the -Work, or who has received express permission from the Licensor to exercise -rights under this License despite a previous violation. - -2. Fair Use Rights. Nothing in this license is intended to reduce, limit, or restrict any rights arising from fair use, first sale or other limitations on the exclusive rights of the copyright owner under copyright law or other applicable laws. - -3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below: - -a. to reproduce the Work, to incorporate the Work into one or more Collective -Works, and to reproduce the Work as incorporated in the Collective Works; - -b. to distribute copies or phonorecords of, display publicly, perform -publicly, and perform publicly by means of a digital audio transmission the -Work including as incorporated in Collective Works. - -c. For the avoidance of doubt, where the work is a musical composition: - -i. Performance Royalties Under Blanket Licenses. Licensor waives the exclusive -right to collect, whether individually or via a performance rights society -(e.g. ASCAP, BMI, SESAC), royalties for the public performance or public -digital performance (e.g. webcast) of the Work. - -ii. Mechanical Rights and Statutory Royalties. Licensor waives the exclusive -right to collect, whether individually or via a music rights society or -designated agent (e.g. Harry Fox Agency), royalties for any phonorecord You -create from the Work ("cover version") and distribute, subject to the -compulsory license created by 17 USC Section 115 of the US Copyright Act (or -the equivalent in other jurisdictions). - -d. Webcasting Rights and Statutory Royalties. For the avoidance of doubt, -where the Work is a sound recording, Licensor waives the exclusive right to -collect, whether individually or via a performance-rights society (e.g. -SoundExchange), royalties for the public digital performance (e.g. webcast) of -the Work, subject to the compulsory license created by 17 USC Section 114 of -the US Copyright Act (or the equivalent in other jurisdictions). - -The above rights may be exercised in all media and formats whether now known -or hereafter devised. The above rights include the right to make such -modifications as are technically necessary to exercise the rights in other -media and formats, but otherwise you have no rights to make Derivative Works. -All rights not expressly granted by Licensor are hereby reserved. - -4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions: - -a. You may distribute, publicly display, publicly perform, or publicly -digitally perform the Work only under the terms of this License, and You must -include a copy of, or the Uniform Resource Identifier for, this License with -every copy or phonorecord of the Work You distribute, publicly display, -publicly perform, or publicly digitally perform. You may not offer or impose -any terms on the Work that alter or restrict the terms of this License or the -recipients' exercise of the rights granted hereunder. You may not -sublicense the Work. You must keep intact all notices that refer to this -License and to the disclaimer of warranties. You may not distribute, publicly -display, publicly perform, or publicly digitally perform the Work with any -technological measures that control access or use of the Work in a manner -inconsistent with the terms of this License Agreement. The above applies to -the Work as incorporated in a Collective Work, but this does not require the -Collective Work apart from the Work itself to be made subject to the terms of -this License. If You create a Collective Work, upon notice from any Licensor -You must, to the extent practicable, remove from the Collective Work any -reference to such Licensor or the Original Author, as requested. - -b. If you distribute, publicly display, publicly perform, or publicly -digitally perform the Work or Collective Works, You must keep intact all -copyright notices for the Work and give the Original Author credit reasonable -to the medium or means You are utilizing by conveying the name (or pseudonym -if applicable) of the Original Author if supplied; the title of the Work if -supplied; and to the extent reasonably practicable, the Uniform Resource -Identifier, if any, that Licensor specifies to be associated with the Work, -unless such URI does not refer to the copyright notice or licensing -information for the Work. Such credit may be implemented in any reasonable -manner; provided, however, that in the case of a Collective Work, at a minimum -such credit will appear where any other comparable authorship credit appears -and in a manner at least as prominent as such other comparable authorship -credit. - -5. Representations, Warranties and Disclaimer - -UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS -THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND -CONCERNING THE MATERIALS, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, -WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A -PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER -DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT -DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED -WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. - -6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -7. Termination - -a. This License and the rights granted hereunder will terminate automatically -upon any breach by You of the terms of this License. Individuals or entities -who have received Collective Works from You under this License, however, will -not have their licenses terminated provided such individuals or entities -remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 -will survive any termination of this License. - -b. Subject to the above terms and conditions, the license granted here is -perpetual (for the duration of the applicable copyright in the Work). -Notwithstanding the above, Licensor reserves the right to release the Work -under different license terms or to stop distributing the Work at any time; -provided, however that any such election will not serve to withdraw this -License (or any other license that has been, or is required to be, granted -under the terms of this License), and this License will continue in full force -and effect unless terminated as stated above. - -8. Miscellaneous - -a. Each time You distribute or publicly digitally perform the Work, the -Licensor offers to the recipient a license to the Work on the same terms and -conditions as the license granted to You under this License. - -b. If any provision of this License is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this License, and without further action by the -parties to this agreement, such provision shall be reformed to the minimum -extent necessary to make such provision valid and enforceable. - -c. No term or provision of this License shall be deemed waived and no breach -consented to unless such waiver or consent shall be in writing and signed by -the party to be charged with such waiver or consent. This License constitutes -the entire agreement between the parties with respect to the Work licensed -here. There are no understandings, agreements or representations with respect -to the Work not specified here. Licensor shall not be bound by any additional -provisions that may appear in any communication from You. - -d. This License may not be modified without the mutual written agreement of -the Licensor and You. - -Creative Commons is not a party to this License, and makes no warranty -whatsoever in connection with the Work. Creative Commons will not be liable to -You or any party on any legal theory for any damages whatsoever, including -without limitation any general, special, incidental or consequential damages -arising in connection to this license. Notwithstanding the foregoing two (2) -sentences, if Creative Commons has expressly identified itself as the Licensor -hereunder, it shall have all rights and obligations of Licensor. - -Except for the limited purpose of indicating to the public that the Work is -licensed under the CCPL, neither party will use the trademark "Creative -Commons" or any related trademark or logo of Creative Commons without the -prior written consent of Creative Commons. Any permitted use will be in -compliance with Creative Commons' then-current trademark usage -guidelines, as may be published on its website or otherwise made available -upon request from time to time. - -Creative Commons may be contacted at http://creativecommons.org/. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-ND-2.5.txt b/vendor/github.com/google/licenseclassifier/licenses/CC-BY-ND-2.5.txt deleted file mode 100644 index 430469b..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-ND-2.5.txt +++ /dev/null @@ -1,200 +0,0 @@ -Creative Commons Attribution-NoDerivs 2.5 - -CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL -SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT -RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. -CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, AND -DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE. - -License - -THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE -COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY -COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS -AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. - -BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE -BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS YOU THE RIGHTS -CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND -CONDITIONS. - -1. Definitions - -a. "Collective Work" means a work, such as a periodical issue, anthology or -encyclopedia, in which the Work in its entirety in unmodified form, along with -a number of other contributions, constituting separate and independent works -in themselves, are assembled into a collective whole. A work that constitutes -a Collective Work will not be considered a Derivative Work (as defined below) -for the purposes of this License. - -b. "Derivative Work" means a work based upon the Work or upon the Work and -other pre-existing works, such as a translation, musical arrangement, -dramatization, fictionalization, motion picture version, sound recording, art -reproduction, abridgment, condensation, or any other form in which the Work -may be recast, transformed, or adapted, except that a work that constitutes a -Collective Work will not be considered a Derivative Work for the purpose of -this License. For the avoidance of doubt, where the Work is a musical -composition or sound recording, the synchronization of the Work in timed- -relation with a moving image ("synching") will be considered a Derivative Work -for the purpose of this License. - -c. "Licensor" means the individual or entity that offers the Work under the -terms of this License. - -d. "Original Author" means the individual or entity who created the Work. - -e. "Work" means the copyrightable work of authorship offered under the terms -of this License. - -f. "You" means an individual or entity exercising rights under this License -who has not previously violated the terms of this License with respect to the -Work, or who has received express permission from the Licensor to exercise -rights under this License despite a previous violation. - -2. Fair Use Rights. Nothing in this license is intended to reduce, limit, or restrict any rights arising from fair use, first sale or other limitations on the exclusive rights of the copyright owner under copyright law or other applicable laws. - -3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below: - -a. to reproduce the Work, to incorporate the Work into one or more Collective -Works, and to reproduce the Work as incorporated in the Collective Works; - -b. to distribute copies or phonorecords of, display publicly, perform -publicly, and perform publicly by means of a digital audio transmission the -Work including as incorporated in Collective Works. - -c. For the avoidance of doubt, where the work is a musical composition: - -i. Performance Royalties Under Blanket Licenses. Licensor waives the exclusive -right to collect, whether individually or via a performance rights society -(e.g. ASCAP, BMI, SESAC), royalties for the public performance or public -digital performance (e.g. webcast) of the Work. - -ii. Mechanical Rights and Statutory Royalties. Licensor waives the exclusive -right to collect, whether individually or via a music rights society or -designated agent (e.g. Harry Fox Agency), royalties for any phonorecord You -create from the Work ("cover version") and distribute, subject to the -compulsory license created by 17 USC Section 115 of the US Copyright Act (or -the equivalent in other jurisdictions). - -d. Webcasting Rights and Statutory Royalties. For the avoidance of doubt, -where the Work is a sound recording, Licensor waives the exclusive right to -collect, whether individually or via a performance-rights society (e.g. -SoundExchange), royalties for the public digital performance (e.g. webcast) of -the Work, subject to the compulsory license created by 17 USC Section 114 of -the US Copyright Act (or the equivalent in other jurisdictions). - -The above rights may be exercised in all media and formats whether now known -or hereafter devised. The above rights include the right to make such -modifications as are technically necessary to exercise the rights in other -media and formats, but otherwise you have no rights to make Derivative Works. -All rights not expressly granted by Licensor are hereby reserved. - -4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions: - -a. You may distribute, publicly display, publicly perform, or publicly -digitally perform the Work only under the terms of this License, and You must -include a copy of, or the Uniform Resource Identifier for, this License with -every copy or phonorecord of the Work You distribute, publicly display, -publicly perform, or publicly digitally perform. You may not offer or impose -any terms on the Work that alter or restrict the terms of this License or the -recipients' exercise of the rights granted hereunder. You may not -sublicense the Work. You must keep intact all notices that refer to this -License and to the disclaimer of warranties. You may not distribute, publicly -display, publicly perform, or publicly digitally perform the Work with any -technological measures that control access or use of the Work in a manner -inconsistent with the terms of this License Agreement. The above applies to -the Work as incorporated in a Collective Work, but this does not require the -Collective Work apart from the Work itself to be made subject to the terms of -this License. If You create a Collective Work, upon notice from any Licensor -You must, to the extent practicable, remove from the Collective Work any -credit as required by clause 4(b), as requested. - -b. If you distribute, publicly display, publicly perform, or publicly -digitally perform the Work or Collective Works, You must keep intact all -copyright notices for the Work and provide, reasonable to the medium or means -You are utilizing: (i) the name of the Original Author (or pseudonym, if -applicable) if supplied, and/or (ii) if the Original Author and/or Licensor -designate another party or parties (e.g. a sponsor institute, publishing -entity, journal) for attribution in Licensor's copyright notice, terms of -service or by other reasonable means, the name of such party or parties; the -title of the Work if supplied; and to the extent reasonably practicable, the -Uniform Resource Identifier, if any, that Licensor specifies to be associated -with the Work, unless such URI does not refer to the copyright notice or -licensing information for the Work. Such credit may be implemented in any -reasonable manner; provided, however, that in the case of a Collective Work, -at a minimum such credit will appear where any other comparable authorship -credit appears and in a manner at least as prominent as such other comparable -authorship credit. - -5. Representations, Warranties and Disclaimer - -UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS -THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND -CONCERNING THE MATERIALS, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, -WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A -PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER -DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT -DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED -WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. - -6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -7. Termination - -a. This License and the rights granted hereunder will terminate automatically -upon any breach by You of the terms of this License. Individuals or entities -who have received Collective Works from You under this License, however, will -not have their licenses terminated provided such individuals or entities -remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 -will survive any termination of this License. - -b. Subject to the above terms and conditions, the license granted here is -perpetual (for the duration of the applicable copyright in the Work). -Notwithstanding the above, Licensor reserves the right to release the Work -under different license terms or to stop distributing the Work at any time; -provided, however that any such election will not serve to withdraw this -License (or any other license that has been, or is required to be, granted -under the terms of this License), and this License will continue in full force -and effect unless terminated as stated above. - -8. Miscellaneous - -a. Each time You distribute or publicly digitally perform the Work, the -Licensor offers to the recipient a license to the Work on the same terms and -conditions as the license granted to You under this License. - -b. If any provision of this License is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this License, and without further action by the -parties to this agreement, such provision shall be reformed to the minimum -extent necessary to make such provision valid and enforceable. - -c. No term or provision of this License shall be deemed waived and no breach -consented to unless such waiver or consent shall be in writing and signed by -the party to be charged with such waiver or consent. - -d. This License constitutes the entire agreement between the parties with -respect to the Work licensed here. There are no understandings, agreements or -representations with respect to the Work not specified here. Licensor shall -not be bound by any additional provisions that may appear in any communication -from You. This License may not be modified without the mutual written -agreement of the Licensor and You. - -Creative Commons is not a party to this License, and makes no warranty -whatsoever in connection with the Work. Creative Commons will not be liable to -You or any party on any legal theory for any damages whatsoever, including -without limitation any general, special, incidental or consequential damages -arising in connection to this license. Notwithstanding the foregoing two (2) -sentences, if Creative Commons has expressly identified itself as the Licensor -hereunder, it shall have all rights and obligations of Licensor. - -Except for the limited purpose of indicating to the public that the Work is -licensed under the CCPL, neither party will use the trademark "Creative -Commons" or any related trademark or logo of Creative Commons without the -prior written consent of Creative Commons. Any permitted use will be in -compliance with Creative Commons' then-current trademark usage -guidelines, as may be published on its website or otherwise made available -upon request from time to time. - -Creative Commons may be contacted at http://creativecommons.org/. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-ND-3.0.txt b/vendor/github.com/google/licenseclassifier/licenses/CC-BY-ND-3.0.txt deleted file mode 100644 index 2ec9718..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-ND-3.0.txt +++ /dev/null @@ -1,293 +0,0 @@ -Creative Commons Legal Code - -Attribution-NoDerivs 3.0 Unported - - CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE - LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN - ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS - INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES - REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR - DAMAGES RESULTING FROM ITS USE. - -License - -THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE -COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY -COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS -AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. - -BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE -TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY -BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS -CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND -CONDITIONS. - -1. Definitions - - a. "Adaptation" means a work based upon the Work, or upon the Work and - other pre-existing works, such as a translation, adaptation, - derivative work, arrangement of music or other alterations of a - literary or artistic work, or phonogram or performance and includes - cinematographic adaptations or any other form in which the Work may be - recast, transformed, or adapted including in any form recognizably - derived from the original, except that a work that constitutes a - Collection will not be considered an Adaptation for the purpose of - this License. For the avoidance of doubt, where the Work is a musical - work, performance or phonogram, the synchronization of the Work in - timed-relation with a moving image ("synching") will be considered an - Adaptation for the purpose of this License. - b. "Collection" means a collection of literary or artistic works, such as - encyclopedias and anthologies, or performances, phonograms or - broadcasts, or other works or subject matter other than works listed - in Section 1(f) below, which, by reason of the selection and - arrangement of their contents, constitute intellectual creations, in - which the Work is included in its entirety in unmodified form along - with one or more other contributions, each constituting separate and - independent works in themselves, which together are assembled into a - collective whole. A work that constitutes a Collection will not be - considered an Adaptation (as defined above) for the purposes of this - License. - c. "Distribute" means to make available to the public the original and - copies of the Work through sale or other transfer of ownership. - d. "Licensor" means the individual, individuals, entity or entities that - offer(s) the Work under the terms of this License. - e. "Original Author" means, in the case of a literary or artistic work, - the individual, individuals, entity or entities who created the Work - or if no individual or entity can be identified, the publisher; and in - addition (i) in the case of a performance the actors, singers, - musicians, dancers, and other persons who act, sing, deliver, declaim, - play in, interpret or otherwise perform literary or artistic works or - expressions of folklore; (ii) in the case of a phonogram the producer - being the person or legal entity who first fixes the sounds of a - performance or other sounds; and, (iii) in the case of broadcasts, the - organization that transmits the broadcast. - f. "Work" means the literary and/or artistic work offered under the terms - of this License including without limitation any production in the - literary, scientific and artistic domain, whatever may be the mode or - form of its expression including digital form, such as a book, - pamphlet and other writing; a lecture, address, sermon or other work - of the same nature; a dramatic or dramatico-musical work; a - choreographic work or entertainment in dumb show; a musical - composition with or without words; a cinematographic work to which are - assimilated works expressed by a process analogous to cinematography; - a work of drawing, painting, architecture, sculpture, engraving or - lithography; a photographic work to which are assimilated works - expressed by a process analogous to photography; a work of applied - art; an illustration, map, plan, sketch or three-dimensional work - relative to geography, topography, architecture or science; a - performance; a broadcast; a phonogram; a compilation of data to the - extent it is protected as a copyrightable work; or a work performed by - a variety or circus performer to the extent it is not otherwise - considered a literary or artistic work. - g. "You" means an individual or entity exercising rights under this - License who has not previously violated the terms of this License with - respect to the Work, or who has received express permission from the - Licensor to exercise rights under this License despite a previous - violation. - h. "Publicly Perform" means to perform public recitations of the Work and - to communicate to the public those public recitations, by any means or - process, including by wire or wireless means or public digital - performances; to make available to the public Works in such a way that - members of the public may access these Works from a place and at a - place individually chosen by them; to perform the Work to the public - by any means or process and the communication to the public of the - performances of the Work, including by public digital performance; to - broadcast and rebroadcast the Work by any means including signs, - sounds or images. - i. "Reproduce" means to make copies of the Work by any means including - without limitation by sound or visual recordings and the right of - fixation and reproducing fixations of the Work, including storage of a - protected performance or phonogram in digital form or other electronic - medium. - -2. Fair Dealing Rights. Nothing in this License is intended to reduce, -limit, or restrict any uses free from copyright or rights arising from -limitations or exceptions that are provided for in connection with the -copyright protection under copyright law or other applicable laws. - -3. License Grant. Subject to the terms and conditions of this License, -Licensor hereby grants You a worldwide, royalty-free, non-exclusive, -perpetual (for the duration of the applicable copyright) license to -exercise the rights in the Work as stated below: - - a. to Reproduce the Work, to incorporate the Work into one or more - Collections, and to Reproduce the Work as incorporated in the - Collections; and, - b. to Distribute and Publicly Perform the Work including as incorporated - in Collections. - c. For the avoidance of doubt: - - i. Non-waivable Compulsory License Schemes. In those jurisdictions in - which the right to collect royalties through any statutory or - compulsory licensing scheme cannot be waived, the Licensor - reserves the exclusive right to collect such royalties for any - exercise by You of the rights granted under this License; - ii. Waivable Compulsory License Schemes. In those jurisdictions in - which the right to collect royalties through any statutory or - compulsory licensing scheme can be waived, the Licensor waives the - exclusive right to collect such royalties for any exercise by You - of the rights granted under this License; and, - iii. Voluntary License Schemes. The Licensor waives the right to - collect royalties, whether individually or, in the event that the - Licensor is a member of a collecting society that administers - voluntary licensing schemes, via that society, from any exercise - by You of the rights granted under this License. - -The above rights may be exercised in all media and formats whether now -known or hereafter devised. The above rights include the right to make -such modifications as are technically necessary to exercise the rights in -other media and formats, but otherwise you have no rights to make -Adaptations. Subject to Section 8(f), all rights not expressly granted by -Licensor are hereby reserved. - -4. Restrictions. The license granted in Section 3 above is expressly made -subject to and limited by the following restrictions: - - a. You may Distribute or Publicly Perform the Work only under the terms - of this License. You must include a copy of, or the Uniform Resource - Identifier (URI) for, this License with every copy of the Work You - Distribute or Publicly Perform. You may not offer or impose any terms - on the Work that restrict the terms of this License or the ability of - the recipient of the Work to exercise the rights granted to that - recipient under the terms of the License. You may not sublicense the - Work. You must keep intact all notices that refer to this License and - to the disclaimer of warranties with every copy of the Work You - Distribute or Publicly Perform. When You Distribute or Publicly - Perform the Work, You may not impose any effective technological - measures on the Work that restrict the ability of a recipient of the - Work from You to exercise the rights granted to that recipient under - the terms of the License. This Section 4(a) applies to the Work as - incorporated in a Collection, but this does not require the Collection - apart from the Work itself to be made subject to the terms of this - License. If You create a Collection, upon notice from any Licensor You - must, to the extent practicable, remove from the Collection any credit - as required by Section 4(b), as requested. - b. If You Distribute, or Publicly Perform the Work or Collections, You - must, unless a request has been made pursuant to Section 4(a), keep - intact all copyright notices for the Work and provide, reasonable to - the medium or means You are utilizing: (i) the name of the Original - Author (or pseudonym, if applicable) if supplied, and/or if the - Original Author and/or Licensor designate another party or parties - (e.g., a sponsor institute, publishing entity, journal) for - attribution ("Attribution Parties") in Licensor's copyright notice, - terms of service or by other reasonable means, the name of such party - or parties; (ii) the title of the Work if supplied; (iii) to the - extent reasonably practicable, the URI, if any, that Licensor - specifies to be associated with the Work, unless such URI does not - refer to the copyright notice or licensing information for the Work. - The credit required by this Section 4(b) may be implemented in any - reasonable manner; provided, however, that in the case of a - Collection, at a minimum such credit will appear, if a credit for all - contributing authors of the Collection appears, then as part of these - credits and in a manner at least as prominent as the credits for the - other contributing authors. For the avoidance of doubt, You may only - use the credit required by this Section for the purpose of attribution - in the manner set out above and, by exercising Your rights under this - License, You may not implicitly or explicitly assert or imply any - connection with, sponsorship or endorsement by the Original Author, - Licensor and/or Attribution Parties, as appropriate, of You or Your - use of the Work, without the separate, express prior written - permission of the Original Author, Licensor and/or Attribution - Parties. - c. Except as otherwise agreed in writing by the Licensor or as may be - otherwise permitted by applicable law, if You Reproduce, Distribute or - Publicly Perform the Work either by itself or as part of any - Collections, You must not distort, mutilate, modify or take other - derogatory action in relation to the Work which would be prejudicial - to the Original Author's honor or reputation. - -5. Representations, Warranties and Disclaimer - -UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR -OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY -KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, -INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, -FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF -LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, -WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION -OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. - -6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE -LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR -ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES -ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS -BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -7. Termination - - a. This License and the rights granted hereunder will terminate - automatically upon any breach by You of the terms of this License. - Individuals or entities who have received Collections from You under - this License, however, will not have their licenses terminated - provided such individuals or entities remain in full compliance with - those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any - termination of this License. - b. Subject to the above terms and conditions, the license granted here is - perpetual (for the duration of the applicable copyright in the Work). - Notwithstanding the above, Licensor reserves the right to release the - Work under different license terms or to stop distributing the Work at - any time; provided, however that any such election will not serve to - withdraw this License (or any other license that has been, or is - required to be, granted under the terms of this License), and this - License will continue in full force and effect unless terminated as - stated above. - -8. Miscellaneous - - a. Each time You Distribute or Publicly Perform the Work or a Collection, - the Licensor offers to the recipient a license to the Work on the same - terms and conditions as the license granted to You under this License. - b. If any provision of this License is invalid or unenforceable under - applicable law, it shall not affect the validity or enforceability of - the remainder of the terms of this License, and without further action - by the parties to this agreement, such provision shall be reformed to - the minimum extent necessary to make such provision valid and - enforceable. - c. No term or provision of this License shall be deemed waived and no - breach consented to unless such waiver or consent shall be in writing - and signed by the party to be charged with such waiver or consent. - d. This License constitutes the entire agreement between the parties with - respect to the Work licensed here. There are no understandings, - agreements or representations with respect to the Work not specified - here. Licensor shall not be bound by any additional provisions that - may appear in any communication from You. This License may not be - modified without the mutual written agreement of the Licensor and You. - e. The rights granted under, and the subject matter referenced, in this - License were drafted utilizing the terminology of the Berne Convention - for the Protection of Literary and Artistic Works (as amended on - September 28, 1979), the Rome Convention of 1961, the WIPO Copyright - Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 - and the Universal Copyright Convention (as revised on July 24, 1971). - These rights and subject matter take effect in the relevant - jurisdiction in which the License terms are sought to be enforced - according to the corresponding provisions of the implementation of - those treaty provisions in the applicable national law. If the - standard suite of rights granted under applicable copyright law - includes additional rights not granted under this License, such - additional rights are deemed to be included in the License; this - License is not intended to restrict the license of any rights under - applicable law. - - -Creative Commons Notice - - Creative Commons is not a party to this License, and makes no warranty - whatsoever in connection with the Work. Creative Commons will not be - liable to You or any party on any legal theory for any damages - whatsoever, including without limitation any general, special, - incidental or consequential damages arising in connection to this - license. Notwithstanding the foregoing two (2) sentences, if Creative - Commons has expressly identified itself as the Licensor hereunder, it - shall have all rights and obligations of Licensor. - - Except for the limited purpose of indicating to the public that the - Work is licensed under the CCPL, Creative Commons does not authorize - the use by either party of the trademark "Creative Commons" or any - related trademark or logo of Creative Commons without the prior - written consent of Creative Commons. Any permitted use will be in - compliance with Creative Commons' then-current trademark usage - guidelines, as may be published on its website or otherwise made - available upon request from time to time. For the avoidance of doubt, - this trademark restriction does not form part of this License. - - Creative Commons may be contacted at https://creativecommons.org/. diff --git a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-ND-4.0.txt b/vendor/github.com/google/licenseclassifier/licenses/CC-BY-ND-4.0.txt deleted file mode 100644 index 0672716..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-ND-4.0.txt +++ /dev/null @@ -1,390 +0,0 @@ -Attribution-NoDerivatives 4.0 International - -======================================================================= - -Creative Commons Corporation ("Creative Commons") is not a law firm and -does not provide legal services or legal advice. Distribution of -Creative Commons public licenses does not create a lawyer-client or -other relationship. Creative Commons makes its licenses and related -information available on an "as-is" basis. Creative Commons gives no -warranties regarding its licenses, any material licensed under their -terms and conditions, or any related information. Creative Commons -disclaims all liability for damages resulting from their use to the -fullest extent possible. - -Using Creative Commons Public Licenses - -Creative Commons public licenses provide a standard set of terms and -conditions that creators and other rights holders may use to share -original works of authorship and other material subject to copyright -and certain other rights specified in the public license below. The -following considerations are for informational purposes only, are not -exhaustive, and do not form part of our licenses. - - Considerations for licensors: Our public licenses are - intended for use by those authorized to give the public - permission to use material in ways otherwise restricted by - copyright and certain other rights. Our licenses are - irrevocable. Licensors should read and understand the terms - and conditions of the license they choose before applying it. - Licensors should also secure all rights necessary before - applying our licenses so that the public can reuse the - material as expected. Licensors should clearly mark any - material not subject to the license. This includes other CC- - licensed material, or material used under an exception or - limitation to copyright. More considerations for licensors: - wiki.creativecommons.org/Considerations_for_licensors - - Considerations for the public: By using one of our public - licenses, a licensor grants the public permission to use the - licensed material under specified terms and conditions. If - the licensor's permission is not necessary for any reason--for - example, because of any applicable exception or limitation to - copyright--then that use is not regulated by the license. Our - licenses grant only permissions under copyright and certain - other rights that a licensor has authority to grant. Use of - the licensed material may still be restricted for other - reasons, including because others have copyright or other - rights in the material. A licensor may make special requests, - such as asking that all changes be marked or described. - Although not required by our licenses, you are encouraged to - respect those requests where reasonable. More_considerations - for the public: - wiki.creativecommons.org/Considerations_for_licensees - -======================================================================= - -Creative Commons Attribution-NoDerivatives 4.0 International Public -License - -By exercising the Licensed Rights (defined below), You accept and agree -to be bound by the terms and conditions of this Creative Commons -Attribution-NoDerivatives 4.0 International Public License ("Public -License"). To the extent this Public License may be interpreted as a -contract, You are granted the Licensed Rights in consideration of Your -acceptance of these terms and conditions, and the Licensor grants You -such rights in consideration of benefits the Licensor receives from -making the Licensed Material available under these terms and -conditions. - - -Section 1 -- Definitions. - - a. Adapted Material means material subject to Copyright and Similar - Rights that is derived from or based upon the Licensed Material - and in which the Licensed Material is translated, altered, - arranged, transformed, or otherwise modified in a manner requiring - permission under the Copyright and Similar Rights held by the - Licensor. For purposes of this Public License, where the Licensed - Material is a musical work, performance, or sound recording, - Adapted Material is always produced where the Licensed Material is - synched in timed relation with a moving image. - - b. Copyright and Similar Rights means copyright and/or similar rights - closely related to copyright including, without limitation, - performance, broadcast, sound recording, and Sui Generis Database - Rights, without regard to how the rights are labeled or - categorized. For purposes of this Public License, the rights - specified in Section 2(b)(1)-(2) are not Copyright and Similar - Rights. - - c. Effective Technological Measures means those measures that, in the - absence of proper authority, may not be circumvented under laws - fulfilling obligations under Article 11 of the WIPO Copyright - Treaty adopted on December 20, 1996, and/or similar international - agreements. - - d. Exceptions and Limitations means fair use, fair dealing, and/or - any other exception or limitation to Copyright and Similar Rights - that applies to Your use of the Licensed Material. - - e. Licensed Material means the artistic or literary work, database, - or other material to which the Licensor applied this Public - License. - - f. Licensed Rights means the rights granted to You subject to the - terms and conditions of this Public License, which are limited to - all Copyright and Similar Rights that apply to Your use of the - Licensed Material and that the Licensor has authority to license. - - g. Licensor means the individual(s) or entity(ies) granting rights - under this Public License. - - h. Share means to provide material to the public by any means or - process that requires permission under the Licensed Rights, such - as reproduction, public display, public performance, distribution, - dissemination, communication, or importation, and to make material - available to the public including in ways that members of the - public may access the material from a place and at a time - individually chosen by them. - - i. Sui Generis Database Rights means rights other than copyright - resulting from Directive 96/9/EC of the European Parliament and of - the Council of 11 March 1996 on the legal protection of databases, - as amended and/or succeeded, as well as other essentially - equivalent rights anywhere in the world. - - j. You means the individual or entity exercising the Licensed Rights - under this Public License. Your has a corresponding meaning. - - -Section 2 -- Scope. - - a. License grant. - - 1. Subject to the terms and conditions of this Public License, - the Licensor hereby grants You a worldwide, royalty-free, - non-sublicensable, non-exclusive, irrevocable license to - exercise the Licensed Rights in the Licensed Material to: - - a. reproduce and Share the Licensed Material, in whole or - in part; and - - b. produce and reproduce, but not Share, Adapted Material. - - 2. Exceptions and Limitations. For the avoidance of doubt, where - Exceptions and Limitations apply to Your use, this Public - License does not apply, and You do not need to comply with - its terms and conditions. - - 3. Term. The term of this Public License is specified in Section - 6(a). - - 4. Media and formats; technical modifications allowed. The - Licensor authorizes You to exercise the Licensed Rights in - all media and formats whether now known or hereafter created, - and to make technical modifications necessary to do so. The - Licensor waives and/or agrees not to assert any right or - authority to forbid You from making technical modifications - necessary to exercise the Licensed Rights, including - technical modifications necessary to circumvent Effective - Technological Measures. For purposes of this Public License, - simply making modifications authorized by this Section 2(a) - (4) never produces Adapted Material. - - 5. Downstream recipients. - - a. Offer from the Licensor -- Licensed Material. Every - recipient of the Licensed Material automatically - receives an offer from the Licensor to exercise the - Licensed Rights under the terms and conditions of this - Public License. - - b. No downstream restrictions. You may not offer or impose - any additional or different terms or conditions on, or - apply any Effective Technological Measures to, the - Licensed Material if doing so restricts exercise of the - Licensed Rights by any recipient of the Licensed - Material. - - 6. No endorsement. Nothing in this Public License constitutes or - may be construed as permission to assert or imply that You - are, or that Your use of the Licensed Material is, connected - with, or sponsored, endorsed, or granted official status by, - the Licensor or others designated to receive attribution as - provided in Section 3(a)(1)(A)(i). - - b. Other rights. - - 1. Moral rights, such as the right of integrity, are not - licensed under this Public License, nor are publicity, - privacy, and/or other similar personality rights; however, to - the extent possible, the Licensor waives and/or agrees not to - assert any such rights held by the Licensor to the limited - extent necessary to allow You to exercise the Licensed - Rights, but not otherwise. - - 2. Patent and trademark rights are not licensed under this - Public License. - - 3. To the extent possible, the Licensor waives any right to - collect royalties from You for the exercise of the Licensed - Rights, whether directly or through a collecting society - under any voluntary or waivable statutory or compulsory - licensing scheme. In all other cases the Licensor expressly - reserves any right to collect such royalties. - - -Section 3 -- License Conditions. - -Your exercise of the Licensed Rights is expressly made subject to the -following conditions. - - a. Attribution. - - 1. If You Share the Licensed Material, You must: - - a. retain the following if it is supplied by the Licensor - with the Licensed Material: - - i. identification of the creator(s) of the Licensed - Material and any others designated to receive - attribution, in any reasonable manner requested by - the Licensor (including by pseudonym if - designated); - - ii. a copyright notice; - - iii. a notice that refers to this Public License; - - iv. a notice that refers to the disclaimer of - warranties; - - v. a URI or hyperlink to the Licensed Material to the - extent reasonably practicable; - - b. indicate if You modified the Licensed Material and - retain an indication of any previous modifications; and - - c. indicate the Licensed Material is licensed under this - Public License, and include the text of, or the URI or - hyperlink to, this Public License. - - For the avoidance of doubt, You do not have permission under - this Public License to Share Adapted Material. - - 2. You may satisfy the conditions in Section 3(a)(1) in any - reasonable manner based on the medium, means, and context in - which You Share the Licensed Material. For example, it may be - reasonable to satisfy the conditions by providing a URI or - hyperlink to a resource that includes the required - information. - - 3. If requested by the Licensor, You must remove any of the - information required by Section 3(a)(1)(A) to the extent - reasonably practicable. - - -Section 4 -- Sui Generis Database Rights. - -Where the Licensed Rights include Sui Generis Database Rights that -apply to Your use of the Licensed Material: - - a. for the avoidance of doubt, Section 2(a)(1) grants You the right - to extract, reuse, reproduce, and Share all or a substantial - portion of the contents of the database, provided You do not Share - Adapted Material; - b. if You include all or a substantial portion of the database - contents in a database in which You have Sui Generis Database - Rights, then the database in which You have Sui Generis Database - Rights (but not its individual contents) is Adapted Material; and - c. You must comply with the conditions in Section 3(a) if You Share - all or a substantial portion of the contents of the database. - -For the avoidance of doubt, this Section 4 supplements and does not -replace Your obligations under this Public License where the Licensed -Rights include other Copyright and Similar Rights. - - -Section 5 -- Disclaimer of Warranties and Limitation of Liability. - - a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE - EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS - AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF - ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, - IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, - WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR - PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, - ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT - KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT - ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. - - b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE - TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, - NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, - INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, - COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR - USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN - ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR - DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR - IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. - - c. The disclaimer of warranties and limitation of liability provided - above shall be interpreted in a manner that, to the extent - possible, most closely approximates an absolute disclaimer and - waiver of all liability. - - -Section 6 -- Term and Termination. - - a. This Public License applies for the term of the Copyright and - Similar Rights licensed here. However, if You fail to comply with - this Public License, then Your rights under this Public License - terminate automatically. - - b. Where Your right to use the Licensed Material has terminated under - Section 6(a), it reinstates: - - 1. automatically as of the date the violation is cured, provided - it is cured within 30 days of Your discovery of the - violation; or - - 2. upon express reinstatement by the Licensor. - - For the avoidance of doubt, this Section 6(b) does not affect any - right the Licensor may have to seek remedies for Your violations - of this Public License. - - c. For the avoidance of doubt, the Licensor may also offer the - Licensed Material under separate terms or conditions or stop - distributing the Licensed Material at any time; however, doing so - will not terminate this Public License. - - d. Sections 1, 5, 6, 7, and 8 survive termination of this Public - License. - - -Section 7 -- Other Terms and Conditions. - - a. The Licensor shall not be bound by any additional or different - terms or conditions communicated by You unless expressly agreed. - - b. Any arrangements, understandings, or agreements regarding the - Licensed Material not stated herein are separate from and - independent of the terms and conditions of this Public License. - - -Section 8 -- Interpretation. - - a. For the avoidance of doubt, this Public License does not, and - shall not be interpreted to, reduce, limit, restrict, or impose - conditions on any use of the Licensed Material that could lawfully - be made without permission under this Public License. - - b. To the extent possible, if any provision of this Public License is - deemed unenforceable, it shall be automatically reformed to the - minimum extent necessary to make it enforceable. If the provision - cannot be reformed, it shall be severed from this Public License - without affecting the enforceability of the remaining terms and - conditions. - - c. No term or condition of this Public License will be waived and no - failure to comply consented to unless expressly agreed to by the - Licensor. - - d. Nothing in this Public License constitutes or may be interpreted - as a limitation upon, or waiver of, any privileges and immunities - that apply to the Licensor or You, including from the legal - processes of any jurisdiction or authority. - -======================================================================= - -Creative Commons is not a party to its public -licenses. Notwithstanding, Creative Commons may elect to apply one of -its public licenses to material it publishes and in those instances -will be considered the “Licensor.” The text of the Creative Commons -public licenses is dedicated to the public domain under the CC0 Public -Domain Dedication. Except for the limited purpose of indicating that -material is shared under a Creative Commons public license or as -otherwise permitted by the Creative Commons policies published at -creativecommons.org/policies, Creative Commons does not authorize the -use of the trademark "Creative Commons" or any other trademark or logo -of Creative Commons without its prior written consent including, -without limitation, in connection with any unauthorized modifications -to any of its public licenses or any other arrangements, -understandings, or agreements concerning use of licensed material. For -the avoidance of doubt, this paragraph does not form part of the -public licenses. - -Creative Commons may be contacted at creativecommons.org. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-SA-1.0.txt b/vendor/github.com/google/licenseclassifier/licenses/CC-BY-SA-1.0.txt deleted file mode 100644 index 8a8fafe..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-SA-1.0.txt +++ /dev/null @@ -1,212 +0,0 @@ -Creative Commons Attribution-ShareAlike 1.0 - -CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL -SERVICES. DISTRIBUTION OF THIS DRAFT LICENSE DOES NOT CREATE AN ATTORNEY- -CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" -BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION -PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE. - -License - -THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE -COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY -COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS -AUTHORIZED UNDER THIS LICENSE IS PROHIBITED. - -BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE -BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS YOU THE RIGHTS -CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND -CONDITIONS. - -1. Definitions - -a. "Collective Work" means a work, such as a periodical issue, anthology or -encyclopedia, in which the Work in its entirety in unmodified form, along with -a number of other contributions, constituting separate and independent works -in themselves, are assembled into a collective whole. A work that constitutes -a Collective Work will not be considered a Derivative Work (as defined below) -for the purposes of this License. - -b. "Derivative Work" means a work based upon the Work or upon the Work and -other pre-existing works, such as a translation, musical arrangement, -dramatization, fictionalization, motion picture version, sound recording, art -reproduction, abridgment, condensation, or any other form in which the Work -may be recast, transformed, or adapted, except that a work that constitutes a -Collective Work will not be considered a Derivative Work for the purpose of -this License. - -c. "Licensor" means the individual or entity that offers the Work under the -terms of this License. - -d. "Original Author" means the individual or entity who created the Work. - -e. "Work" means the copyrightable work of authorship offered under the terms -of this License. - -f. "You" means an individual or entity exercising rights under this License -who has not previously violated the terms of this License with respect to the -Work, or who has received express permission from the Licensor to exercise -rights under this License despite a previous violation. - -2. Fair Use Rights. Nothing in this license is intended to reduce, limit, or restrict any rights arising from fair use, first sale or other limitations on the exclusive rights of the copyright owner under copyright law or other applicable laws. - -3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below: - -a. to reproduce the Work, to incorporate the Work into one or more Collective -Works, and to reproduce the Work as incorporated in the Collective Works; - -b. to create and reproduce Derivative Works; - -c. to distribute copies or phonorecords of, display publicly, perform -publicly, and perform publicly by means of a digital audio transmission the -Work including as incorporated in Collective Works; - -d. to distribute copies or phonorecords of, display publicly, perform -publicly, and perform publicly by means of a digital audio transmission -Derivative Works; - -The above rights may be exercised in all media and formats whether now known -or hereafter devised. The above rights include the right to make such -modifications as are technically necessary to exercise the rights in other -media and formats. All rights not expressly granted by Licensor are hereby -reserved. - -4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions: - -a. You may distribute, publicly display, publicly perform, or publicly -digitally perform the Work only under the terms of this License, and You must -include a copy of, or the Uniform Resource Identifier for, this License with -every copy or phonorecord of the Work You distribute, publicly display, -publicly perform, or publicly digitally perform. You may not offer or impose -any terms on the Work that alter or restrict the terms of this License or the -recipients' exercise of the rights granted hereunder. You may not -sublicense the Work. You must keep intact all notices that refer to this -License and to the disclaimer of warranties. You may not distribute, publicly -display, publicly perform, or publicly digitally perform the Work with any -technological measures that control access or use of the Work in a manner -inconsistent with the terms of this License Agreement. The above applies to -the Work as incorporated in a Collective Work, but this does not require the -Collective Work apart from the Work itself to be made subject to the terms of -this License. If You create a Collective Work, upon notice from any Licensor -You must, to the extent practicable, remove from the Collective Work any -reference to such Licensor or the Original Author, as requested. If You create -a Derivative Work, upon notice from any Licensor You must, to the extent -practicable, remove from the Derivative Work any reference to such Licensor or -the Original Author, as requested. - -b. You may distribute, publicly display, publicly perform, or publicly -digitally perform a Derivative Work only under the terms of this License, and -You must include a copy of, or the Uniform Resource Identifier for, this -License with every copy or phonorecord of each Derivative Work You distribute, -publicly display, publicly perform, or publicly digitally perform. You may not -offer or impose any terms on the Derivative Works that alter or restrict the -terms of this License or the recipients' exercise of the rights granted -hereunder, and You must keep intact all notices that refer to this License and -to the disclaimer of warranties. You may not distribute, publicly display, -publicly perform, or publicly digitally perform the Derivative Work with any -technological measures that control access or use of the Work in a manner -inconsistent with the terms of this License Agreement. The above applies to -the Derivative Work as incorporated in a Collective Work, but this does not -require the Collective Work apart from the Derivative Work itself to be made -subject to the terms of this License. - -c. If you distribute, publicly display, publicly perform, or publicly -digitally perform the Work or any Derivative Works or Collective Works, You -must keep intact all copyright notices for the Work and give the Original -Author credit reasonable to the medium or means You are utilizing by conveying -the name (or pseudonym if applicable) of the Original Author if supplied; the -title of the Work if supplied; in the case of a Derivative Work, a credit -identifying the use of the Work in the Derivative Work (e.g., "French -translation of the Work by Original Author," or "Screenplay based on original -Work by Original Author"). Such credit may be implemented in any reasonable -manner; provided, however, that in the case of a Derivative Work or Collective -Work, at a minimum such credit will appear where any other comparable -authorship credit appears and in a manner at least as prominent as such other -comparable authorship credit. - -5. Representations, Warranties and Disclaimer - -a. By offering the Work for public release under this License, Licensor -represents and warrants that, to the best of Licensor's knowledge after -reasonable inquiry: - -i. Licensor has secured all rights in the Work necessary to grant the license -rights hereunder and to permit the lawful exercise of the rights granted -hereunder without You having any obligation to pay any royalties, compulsory -license fees, residuals or any other payments; - -ii. The Work does not infringe the copyright, trademark, publicity rights, -common law rights or any other right of any third party or constitute -defamation, invasion of privacy or other tortious injury to any third party. - -b. EXCEPT AS EXPRESSLY STATED IN THIS LICENSE OR OTHERWISE AGREED IN WRITING -OR REQUIRED BY APPLICABLE LAW, THE WORK IS LICENSED ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT -LIMITATION, ANY WARRANTIES REGARDING THE CONTENTS OR ACCURACY OF THE WORK. - -6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, AND EXCEPT FOR DAMAGES ARISING FROM LIABILITY TO A THIRD PARTY RESULTING FROM BREACH OF THE WARRANTIES IN SECTION 5, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -7. Termination - -a. This License and the rights granted hereunder will terminate automatically -upon any breach by You of the terms of this License. Individuals or entities -who have received Derivative Works or Collective Works from You under this -License, however, will not have their licenses terminated provided such -individuals or entities remain in full compliance with those licenses. -Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License. - -b. Subject to the above terms and conditions, the license granted here is -perpetual (for the duration of the applicable copyright in the Work). -Notwithstanding the above, Licensor reserves the right to release the Work -under different license terms or to stop distributing the Work at any time; -provided, however that any such election will not serve to withdraw this -License (or any other license that has been, or is required to be, granted -under the terms of this License), and this License will continue in full force -and effect unless terminated as stated above. - -8. Miscellaneous - -a. Each time You distribute or publicly digitally perform the Work or a -Collective Work, the Licensor offers to the recipient a license to the Work on -the same terms and conditions as the license granted to You under this -License. - -b. Each time You distribute or publicly digitally perform a Derivative Work, -Licensor offers to the recipient a license to the original Work on the same -terms and conditions as the license granted to You under this License. - -c. If any provision of this License is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this License, and without further action by the -parties to this agreement, such provision shall be reformed to the minimum -extent necessary to make such provision valid and enforceable. - -d. No term or provision of this License shall be deemed waived and no breach -consented to unless such waiver or consent shall be in writing and signed by -the party to be charged with such waiver or consent. - -e. This License constitutes the entire agreement between the parties with -respect to the Work licensed here. There are no understandings, agreements or -representations with respect to the Work not specified here. Licensor shall -not be bound by any additional provisions that may appear in any communication -from You. This License may not be modified without the mutual written -agreement of the Licensor and You. - -Creative Commons is not a party to this License, and makes no warranty -whatsoever in connection with the Work. Creative Commons will not be liable to -You or any party on any legal theory for any damages whatsoever, including -without limitation any general, special, incidental or consequential damages -arising in connection to this license. Notwithstanding the foregoing two (2) -sentences, if Creative Commons has expressly identified itself as the Licensor -hereunder, it shall have all rights and obligations of Licensor. - -Except for the limited purpose of indicating to the public that the Work is -licensed under the CCPL, neither party will use the trademark "Creative -Commons" or any related trademark or logo of Creative Commons without the -prior written consent of Creative Commons. Any permitted use will be in -compliance with Creative Commons' then-current trademark usage -guidelines, as may be published on its website or otherwise made available -upon request from time to time. - -Creative Commons may be contacted at http://creativecommons.org/. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-SA-2.0.txt b/vendor/github.com/google/licenseclassifier/licenses/CC-BY-SA-2.0.txt deleted file mode 100644 index 9bfce5f..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-SA-2.0.txt +++ /dev/null @@ -1,238 +0,0 @@ -Creative Commons Attribution-ShareAlike 2.0 - -CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL -SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT -RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. -CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, AND -DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE. - -License - -THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE -COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY -COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS -AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. - -BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE -BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS YOU THE RIGHTS -CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND -CONDITIONS. - -1. Definitions - -a. "Collective Work" means a work, such as a periodical issue, anthology or -encyclopedia, in which the Work in its entirety in unmodified form, along with -a number of other contributions, constituting separate and independent works -in themselves, are assembled into a collective whole. A work that constitutes -a Collective Work will not be considered a Derivative Work (as defined below) -for the purposes of this License. - -b. "Derivative Work" means a work based upon the Work or upon the Work and -other pre-existing works, such as a translation, musical arrangement, -dramatization, fictionalization, motion picture version, sound recording, art -reproduction, abridgment, condensation, or any other form in which the Work -may be recast, transformed, or adapted, except that a work that constitutes a -Collective Work will not be considered a Derivative Work for the purpose of -this License. For the avoidance of doubt, where the Work is a musical -composition or sound recording, the synchronization of the Work in timed- -relation with a moving image ("synching") will be considered a Derivative Work -for the purpose of this License. - -c. "Licensor" means the individual or entity that offers the Work under the -terms of this License. - -d. "Original Author" means the individual or entity who created the Work. - -e. "Work" means the copyrightable work of authorship offered under the terms -of this License. - -f. "You" means an individual or entity exercising rights under this License -who has not previously violated the terms of this License with respect to the -Work, or who has received express permission from the Licensor to exercise -rights under this License despite a previous violation. - -g. "License Elements" means the following high-level license attributes as -selected by Licensor and indicated in the title of this License: Attribution, -ShareAlike. - -2. Fair Use Rights. Nothing in this license is intended to reduce, limit, or restrict any rights arising from fair use, first sale or other limitations on the exclusive rights of the copyright owner under copyright law or other applicable laws. - -3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below: - -a. to reproduce the Work, to incorporate the Work into one or more Collective -Works, and to reproduce the Work as incorporated in the Collective Works; - -b. to create and reproduce Derivative Works; - -c. to distribute copies or phonorecords of, display publicly, perform -publicly, and perform publicly by means of a digital audio transmission the -Work including as incorporated in Collective Works; - -d. to distribute copies or phonorecords of, display publicly, perform -publicly, and perform publicly by means of a digital audio transmission -Derivative Works. - -e. For the avoidance of doubt, where the work is a musical composition: - -i. Performance Royalties Under Blanket Licenses. Licensor waives the exclusive -right to collect, whether individually or via a performance rights society -(e.g. ASCAP, BMI, SESAC), royalties for the public performance or public -digital performance (e.g. webcast) of the Work. - -ii. Mechanical Rights and Statutory Royalties. Licensor waives the exclusive -right to collect, whether individually or via a music rights society or -designated agent (e.g. Harry Fox Agency), royalties for any phonorecord You -create from the Work ("cover version") and distribute, subject to the -compulsory license created by 17 USC Section 115 of the US Copyright Act (or -the equivalent in other jurisdictions). - -f. Webcasting Rights and Statutory Royalties. For the avoidance of doubt, -where the Work is a sound recording, Licensor waives the exclusive right to -collect, whether individually or via a performance-rights society (e.g. -SoundExchange), royalties for the public digital performance (e.g. webcast) of -the Work, subject to the compulsory license created by 17 USC Section 114 of -the US Copyright Act (or the equivalent in other jurisdictions). - -The above rights may be exercised in all media and formats whether now known -or hereafter devised. The above rights include the right to make such -modifications as are technically necessary to exercise the rights in other -media and formats. All rights not expressly granted by Licensor are hereby -reserved. - -4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions: - -a. You may distribute, publicly display, publicly perform, or publicly -digitally perform the Work only under the terms of this License, and You must -include a copy of, or the Uniform Resource Identifier for, this License with -every copy or phonorecord of the Work You distribute, publicly display, -publicly perform, or publicly digitally perform. You may not offer or impose -any terms on the Work that alter or restrict the terms of this License or the -recipients' exercise of the rights granted hereunder. You may not -sublicense the Work. You must keep intact all notices that refer to this -License and to the disclaimer of warranties. You may not distribute, publicly -display, publicly perform, or publicly digitally perform the Work with any -technological measures that control access or use of the Work in a manner -inconsistent with the terms of this License Agreement. The above applies to -the Work as incorporated in a Collective Work, but this does not require the -Collective Work apart from the Work itself to be made subject to the terms of -this License. If You create a Collective Work, upon notice from any Licensor -You must, to the extent practicable, remove from the Collective Work any -reference to such Licensor or the Original Author, as requested. If You create -a Derivative Work, upon notice from any Licensor You must, to the extent -practicable, remove from the Derivative Work any reference to such Licensor or -the Original Author, as requested. - -b. You may distribute, publicly display, publicly perform, or publicly -digitally perform a Derivative Work only under the terms of this License, a -later version of this License with the same License Elements as this License, -or a Creative Commons iCommons license that contains the same License Elements -as this License (e.g. Attribution-ShareAlike 2.0 Japan). You must include a -copy of, or the Uniform Resource Identifier for, this License or other license -specified in the previous sentence with every copy or phonorecord of each -Derivative Work You distribute, publicly display, publicly perform, or -publicly digitally perform. You may not offer or impose any terms on the -Derivative Works that alter or restrict the terms of this License or the -recipients' exercise of the rights granted hereunder, and You must keep -intact all notices that refer to this License and to the disclaimer of -warranties. You may not distribute, publicly display, publicly perform, or -publicly digitally perform the Derivative Work with any technological measures -that control access or use of the Work in a manner inconsistent with the terms -of this License Agreement. The above applies to the Derivative Work as -incorporated in a Collective Work, but this does not require the Collective -Work apart from the Derivative Work itself to be made subject to the terms of -this License. - -c. If you distribute, publicly display, publicly perform, or publicly -digitally perform the Work or any Derivative Works or Collective Works, You -must keep intact all copyright notices for the Work and give the Original -Author credit reasonable to the medium or means You are utilizing by conveying -the name (or pseudonym if applicable) of the Original Author if supplied; the -title of the Work if supplied; to the extent reasonably practicable, the -Uniform Resource Identifier, if any, that Licensor specifies to be associated -with the Work, unless such URI does not refer to the copyright notice or -licensing information for the Work; and in the case of a Derivative Work, a -credit identifying the use of the Work in the Derivative Work (e.g., "French -translation of the Work by Original Author," or "Screenplay based on original -Work by Original Author"). Such credit may be implemented in any reasonable -manner; provided, however, that in the case of a Derivative Work or Collective -Work, at a minimum such credit will appear where any other comparable -authorship credit appears and in a manner at least as prominent as such other -comparable authorship credit. - -5. Representations, Warranties and Disclaimer - -UNLESS OTHERWISE AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK -AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE -MATERIALS, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT -LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR -PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, -OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME -JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH -EXCLUSION MAY NOT APPLY TO YOU. - -6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -7. Termination - -a. This License and the rights granted hereunder will terminate automatically -upon any breach by You of the terms of this License. Individuals or entities -who have received Derivative Works or Collective Works from You under this -License, however, will not have their licenses terminated provided such -individuals or entities remain in full compliance with those licenses. -Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License. - -b. Subject to the above terms and conditions, the license granted here is -perpetual (for the duration of the applicable copyright in the Work). -Notwithstanding the above, Licensor reserves the right to release the Work -under different license terms or to stop distributing the Work at any time; -provided, however that any such election will not serve to withdraw this -License (or any other license that has been, or is required to be, granted -under the terms of this License), and this License will continue in full force -and effect unless terminated as stated above. - -8. Miscellaneous - -a. Each time You distribute or publicly digitally perform the Work or a -Collective Work, the Licensor offers to the recipient a license to the Work on -the same terms and conditions as the license granted to You under this -License. - -b. Each time You distribute or publicly digitally perform a Derivative Work, -Licensor offers to the recipient a license to the original Work on the same -terms and conditions as the license granted to You under this License. - -c. If any provision of this License is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this License, and without further action by the -parties to this agreement, such provision shall be reformed to the minimum -extent necessary to make such provision valid and enforceable. - -d. No term or provision of this License shall be deemed waived and no breach -consented to unless such waiver or consent shall be in writing and signed by -the party to be charged with such waiver or consent. - -e. This License constitutes the entire agreement between the parties with -respect to the Work licensed here. There are no understandings, agreements or -representations with respect to the Work not specified here. Licensor shall -not be bound by any additional provisions that may appear in any communication -from You. This License may not be modified without the mutual written -agreement of the Licensor and You. - -Creative Commons is not a party to this License, and makes no warranty -whatsoever in connection with the Work. Creative Commons will not be liable to -You or any party on any legal theory for any damages whatsoever, including -without limitation any general, special, incidental or consequential damages -arising in connection to this license. Notwithstanding the foregoing two (2) -sentences, if Creative Commons has expressly identified itself as the Licensor -hereunder, it shall have all rights and obligations of Licensor. - -Except for the limited purpose of indicating to the public that the Work is -licensed under the CCPL, neither party will use the trademark "Creative -Commons" or any related trademark or logo of Creative Commons without the -prior written consent of Creative Commons. Any permitted use will be in -compliance with Creative Commons' then-current trademark usage -guidelines, as may be published on its website or otherwise made available -upon request from time to time. - -Creative Commons may be contacted at http://creativecommons.org/. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-SA-2.5.txt b/vendor/github.com/google/licenseclassifier/licenses/CC-BY-SA-2.5.txt deleted file mode 100644 index 12144c1..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-SA-2.5.txt +++ /dev/null @@ -1,241 +0,0 @@ -Creative Commons Attribution-ShareAlike 2.5 - -CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL -SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT -RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. -CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, AND -DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE. - -License - -THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE -COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY -COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS -AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. - -BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE -BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS YOU THE RIGHTS -CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND -CONDITIONS. - -1. Definitions - -a. "Collective Work" means a work, such as a periodical issue, anthology or -encyclopedia, in which the Work in its entirety in unmodified form, along with -a number of other contributions, constituting separate and independent works -in themselves, are assembled into a collective whole. A work that constitutes -a Collective Work will not be considered a Derivative Work (as defined below) -for the purposes of this License. - -b. "Derivative Work" means a work based upon the Work or upon the Work and -other pre-existing works, such as a translation, musical arrangement, -dramatization, fictionalization, motion picture version, sound recording, art -reproduction, abridgment, condensation, or any other form in which the Work -may be recast, transformed, or adapted, except that a work that constitutes a -Collective Work will not be considered a Derivative Work for the purpose of -this License. For the avoidance of doubt, where the Work is a musical -composition or sound recording, the synchronization of the Work in timed- -relation with a moving image ("synching") will be considered a Derivative Work -for the purpose of this License. - -c. "Licensor" means the individual or entity that offers the Work under the -terms of this License. - -d. "Original Author" means the individual or entity who created the Work. - -e. "Work" means the copyrightable work of authorship offered under the terms -of this License. - -f. "You" means an individual or entity exercising rights under this License -who has not previously violated the terms of this License with respect to the -Work, or who has received express permission from the Licensor to exercise -rights under this License despite a previous violation. - -g. "License Elements" means the following high-level license attributes as -selected by Licensor and indicated in the title of this License: Attribution, -ShareAlike. - -2. Fair Use Rights. Nothing in this license is intended to reduce, limit, or restrict any rights arising from fair use, first sale or other limitations on the exclusive rights of the copyright owner under copyright law or other applicable laws. - -3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below: - -a. to reproduce the Work, to incorporate the Work into one or more Collective -Works, and to reproduce the Work as incorporated in the Collective Works; - -b. to create and reproduce Derivative Works; - -c. to distribute copies or phonorecords of, display publicly, perform -publicly, and perform publicly by means of a digital audio transmission the -Work including as incorporated in Collective Works; - -d. to distribute copies or phonorecords of, display publicly, perform -publicly, and perform publicly by means of a digital audio transmission -Derivative Works. - -e. For the avoidance of doubt, where the work is a musical composition: - -i. Performance Royalties Under Blanket Licenses. Licensor waives the exclusive -right to collect, whether individually or via a performance rights society -(e.g. ASCAP, BMI, SESAC), royalties for the public performance or public -digital performance (e.g. webcast) of the Work. - -ii. Mechanical Rights and Statutory Royalties. Licensor waives the exclusive -right to collect, whether individually or via a music rights society or -designated agent (e.g. Harry Fox Agency), royalties for any phonorecord You -create from the Work ("cover version") and distribute, subject to the -compulsory license created by 17 USC Section 115 of the US Copyright Act (or -the equivalent in other jurisdictions). - -f. Webcasting Rights and Statutory Royalties. For the avoidance of doubt, -where the Work is a sound recording, Licensor waives the exclusive right to -collect, whether individually or via a performance-rights society (e.g. -SoundExchange), royalties for the public digital performance (e.g. webcast) of -the Work, subject to the compulsory license created by 17 USC Section 114 of -the US Copyright Act (or the equivalent in other jurisdictions). - -The above rights may be exercised in all media and formats whether now known -or hereafter devised. The above rights include the right to make such -modifications as are technically necessary to exercise the rights in other -media and formats. All rights not expressly granted by Licensor are hereby -reserved. - -4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions: - -a. You may distribute, publicly display, publicly perform, or publicly -digitally perform the Work only under the terms of this License, and You must -include a copy of, or the Uniform Resource Identifier for, this License with -every copy or phonorecord of the Work You distribute, publicly display, -publicly perform, or publicly digitally perform. You may not offer or impose -any terms on the Work that alter or restrict the terms of this License or the -recipients' exercise of the rights granted hereunder. You may not -sublicense the Work. You must keep intact all notices that refer to this -License and to the disclaimer of warranties. You may not distribute, publicly -display, publicly perform, or publicly digitally perform the Work with any -technological measures that control access or use of the Work in a manner -inconsistent with the terms of this License Agreement. The above applies to -the Work as incorporated in a Collective Work, but this does not require the -Collective Work apart from the Work itself to be made subject to the terms of -this License. If You create a Collective Work, upon notice from any Licensor -You must, to the extent practicable, remove from the Collective Work any -credit as required by clause 4(c), as requested. If You create a Derivative -Work, upon notice from any Licensor You must, to the extent practicable, -remove from the Derivative Work any credit as required by clause 4(c), as -requested. - -b. You may distribute, publicly display, publicly perform, or publicly -digitally perform a Derivative Work only under the terms of this License, a -later version of this License with the same License Elements as this License, -or a Creative Commons iCommons license that contains the same License Elements -as this License (e.g. Attribution-ShareAlike 2.5 Japan). You must include a -copy of, or the Uniform Resource Identifier for, this License or other license -specified in the previous sentence with every copy or phonorecord of each -Derivative Work You distribute, publicly display, publicly perform, or -publicly digitally perform. You may not offer or impose any terms on the -Derivative Works that alter or restrict the terms of this License or the -recipients' exercise of the rights granted hereunder, and You must keep -intact all notices that refer to this License and to the disclaimer of -warranties. You may not distribute, publicly display, publicly perform, or -publicly digitally perform the Derivative Work with any technological measures -that control access or use of the Work in a manner inconsistent with the terms -of this License Agreement. The above applies to the Derivative Work as -incorporated in a Collective Work, but this does not require the Collective -Work apart from the Derivative Work itself to be made subject to the terms of -this License. - -c. If you distribute, publicly display, publicly perform, or publicly -digitally perform the Work or any Derivative Works or Collective Works, You -must keep intact all copyright notices for the Work and provide, reasonable to -the medium or means You are utilizing: (i) the name of the Original Author (or -pseudonym, if applicable) if supplied, and/or (ii) if the Original Author -and/or Licensor designate another party or parties (e.g. a sponsor institute, -publishing entity, journal) for attribution in Licensor's copyright -notice, terms of service or by other reasonable means, the name of such party -or parties; the title of the Work if supplied; to the extent reasonably -practicable, the Uniform Resource Identifier, if any, that Licensor specifies -to be associated with the Work, unless such URI does not refer to the -copyright notice or licensing information for the Work; and in the case of a -Derivative Work, a credit identifying the use of the Work in the Derivative -Work (e.g., "French translation of the Work by Original Author," or -"Screenplay based on original Work by Original Author"). Such credit may be -implemented in any reasonable manner; provided, however, that in the case of a -Derivative Work or Collective Work, at a minimum such credit will appear where -any other comparable authorship credit appears and in a manner at least as -prominent as such other comparable authorship credit. - -5. Representations, Warranties and Disclaimer - -UNLESS OTHERWISE AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK -AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE -MATERIALS, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT -LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR -PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, -OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME -JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH -EXCLUSION MAY NOT APPLY TO YOU. - -6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -7. Termination - -a. This License and the rights granted hereunder will terminate automatically -upon any breach by You of the terms of this License. Individuals or entities -who have received Derivative Works or Collective Works from You under this -License, however, will not have their licenses terminated provided such -individuals or entities remain in full compliance with those licenses. -Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License. - -b. Subject to the above terms and conditions, the license granted here is -perpetual (for the duration of the applicable copyright in the Work). -Notwithstanding the above, Licensor reserves the right to release the Work -under different license terms or to stop distributing the Work at any time; -provided, however that any such election will not serve to withdraw this -License (or any other license that has been, or is required to be, granted -under the terms of this License), and this License will continue in full force -and effect unless terminated as stated above. - -8. Miscellaneous - -a. Each time You distribute or publicly digitally perform the Work or a -Collective Work, the Licensor offers to the recipient a license to the Work on -the same terms and conditions as the license granted to You under this -License. - -b. Each time You distribute or publicly digitally perform a Derivative Work, -Licensor offers to the recipient a license to the original Work on the same -terms and conditions as the license granted to You under this License. - -c. If any provision of this License is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this License, and without further action by the -parties to this agreement, such provision shall be reformed to the minimum -extent necessary to make such provision valid and enforceable. - -d. No term or provision of this License shall be deemed waived and no breach -consented to unless such waiver or consent shall be in writing and signed by -the party to be charged with such waiver or consent. - -e. This License constitutes the entire agreement between the parties with -respect to the Work licensed here. There are no understandings, agreements or -representations with respect to the Work not specified here. Licensor shall -not be bound by any additional provisions that may appear in any communication -from You. This License may not be modified without the mutual written -agreement of the Licensor and You. - -Creative Commons is not a party to this License, and makes no warranty -whatsoever in connection with the Work. Creative Commons will not be liable to -You or any party on any legal theory for any damages whatsoever, including -without limitation any general, special, incidental or consequential damages -arising in connection to this license. Notwithstanding the foregoing two (2) -sentences, if Creative Commons has expressly identified itself as the Licensor -hereunder, it shall have all rights and obligations of Licensor. - -Except for the limited purpose of indicating to the public that the Work is -licensed under the CCPL, neither party will use the trademark "Creative -Commons" or any related trademark or logo of Creative Commons without the -prior written consent of Creative Commons. Any permitted use will be in -compliance with Creative Commons' then-current trademark usage -guidelines, as may be published on its website or otherwise made available -upon request from time to time. - -Creative Commons may be contacted at http://creativecommons.org/. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-SA-3.0.txt b/vendor/github.com/google/licenseclassifier/licenses/CC-BY-SA-3.0.txt deleted file mode 100644 index 604209a..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-SA-3.0.txt +++ /dev/null @@ -1,359 +0,0 @@ -Creative Commons Legal Code - -Attribution-ShareAlike 3.0 Unported - - CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE - LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN - ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS - INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES - REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR - DAMAGES RESULTING FROM ITS USE. - -License - -THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE -COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY -COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS -AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. - -BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE -TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY -BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS -CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND -CONDITIONS. - -1. Definitions - - a. "Adaptation" means a work based upon the Work, or upon the Work and - other pre-existing works, such as a translation, adaptation, - derivative work, arrangement of music or other alterations of a - literary or artistic work, or phonogram or performance and includes - cinematographic adaptations or any other form in which the Work may be - recast, transformed, or adapted including in any form recognizably - derived from the original, except that a work that constitutes a - Collection will not be considered an Adaptation for the purpose of - this License. For the avoidance of doubt, where the Work is a musical - work, performance or phonogram, the synchronization of the Work in - timed-relation with a moving image ("synching") will be considered an - Adaptation for the purpose of this License. - b. "Collection" means a collection of literary or artistic works, such as - encyclopedias and anthologies, or performances, phonograms or - broadcasts, or other works or subject matter other than works listed - in Section 1(f) below, which, by reason of the selection and - arrangement of their contents, constitute intellectual creations, in - which the Work is included in its entirety in unmodified form along - with one or more other contributions, each constituting separate and - independent works in themselves, which together are assembled into a - collective whole. A work that constitutes a Collection will not be - considered an Adaptation (as defined below) for the purposes of this - License. - c. "Creative Commons Compatible License" means a license that is listed - at https://creativecommons.org/compatiblelicenses that has been - approved by Creative Commons as being essentially equivalent to this - License, including, at a minimum, because that license: (i) contains - terms that have the same purpose, meaning and effect as the License - Elements of this License; and, (ii) explicitly permits the relicensing - of adaptations of works made available under that license under this - License or a Creative Commons jurisdiction license with the same - License Elements as this License. - d. "Distribute" means to make available to the public the original and - copies of the Work or Adaptation, as appropriate, through sale or - other transfer of ownership. - e. "License Elements" means the following high-level license attributes - as selected by Licensor and indicated in the title of this License: - Attribution, ShareAlike. - f. "Licensor" means the individual, individuals, entity or entities that - offer(s) the Work under the terms of this License. - g. "Original Author" means, in the case of a literary or artistic work, - the individual, individuals, entity or entities who created the Work - or if no individual or entity can be identified, the publisher; and in - addition (i) in the case of a performance the actors, singers, - musicians, dancers, and other persons who act, sing, deliver, declaim, - play in, interpret or otherwise perform literary or artistic works or - expressions of folklore; (ii) in the case of a phonogram the producer - being the person or legal entity who first fixes the sounds of a - performance or other sounds; and, (iii) in the case of broadcasts, the - organization that transmits the broadcast. - h. "Work" means the literary and/or artistic work offered under the terms - of this License including without limitation any production in the - literary, scientific and artistic domain, whatever may be the mode or - form of its expression including digital form, such as a book, - pamphlet and other writing; a lecture, address, sermon or other work - of the same nature; a dramatic or dramatico-musical work; a - choreographic work or entertainment in dumb show; a musical - composition with or without words; a cinematographic work to which are - assimilated works expressed by a process analogous to cinematography; - a work of drawing, painting, architecture, sculpture, engraving or - lithography; a photographic work to which are assimilated works - expressed by a process analogous to photography; a work of applied - art; an illustration, map, plan, sketch or three-dimensional work - relative to geography, topography, architecture or science; a - performance; a broadcast; a phonogram; a compilation of data to the - extent it is protected as a copyrightable work; or a work performed by - a variety or circus performer to the extent it is not otherwise - considered a literary or artistic work. - i. "You" means an individual or entity exercising rights under this - License who has not previously violated the terms of this License with - respect to the Work, or who has received express permission from the - Licensor to exercise rights under this License despite a previous - violation. - j. "Publicly Perform" means to perform public recitations of the Work and - to communicate to the public those public recitations, by any means or - process, including by wire or wireless means or public digital - performances; to make available to the public Works in such a way that - members of the public may access these Works from a place and at a - place individually chosen by them; to perform the Work to the public - by any means or process and the communication to the public of the - performances of the Work, including by public digital performance; to - broadcast and rebroadcast the Work by any means including signs, - sounds or images. - k. "Reproduce" means to make copies of the Work by any means including - without limitation by sound or visual recordings and the right of - fixation and reproducing fixations of the Work, including storage of a - protected performance or phonogram in digital form or other electronic - medium. - -2. Fair Dealing Rights. Nothing in this License is intended to reduce, -limit, or restrict any uses free from copyright or rights arising from -limitations or exceptions that are provided for in connection with the -copyright protection under copyright law or other applicable laws. - -3. License Grant. Subject to the terms and conditions of this License, -Licensor hereby grants You a worldwide, royalty-free, non-exclusive, -perpetual (for the duration of the applicable copyright) license to -exercise the rights in the Work as stated below: - - a. to Reproduce the Work, to incorporate the Work into one or more - Collections, and to Reproduce the Work as incorporated in the - Collections; - b. to create and Reproduce Adaptations provided that any such Adaptation, - including any translation in any medium, takes reasonable steps to - clearly label, demarcate or otherwise identify that changes were made - to the original Work. For example, a translation could be marked "The - original work was translated from English to Spanish," or a - modification could indicate "The original work has been modified."; - c. to Distribute and Publicly Perform the Work including as incorporated - in Collections; and, - d. to Distribute and Publicly Perform Adaptations. - e. For the avoidance of doubt: - - i. Non-waivable Compulsory License Schemes. In those jurisdictions in - which the right to collect royalties through any statutory or - compulsory licensing scheme cannot be waived, the Licensor - reserves the exclusive right to collect such royalties for any - exercise by You of the rights granted under this License; - ii. Waivable Compulsory License Schemes. In those jurisdictions in - which the right to collect royalties through any statutory or - compulsory licensing scheme can be waived, the Licensor waives the - exclusive right to collect such royalties for any exercise by You - of the rights granted under this License; and, - iii. Voluntary License Schemes. The Licensor waives the right to - collect royalties, whether individually or, in the event that the - Licensor is a member of a collecting society that administers - voluntary licensing schemes, via that society, from any exercise - by You of the rights granted under this License. - -The above rights may be exercised in all media and formats whether now -known or hereafter devised. The above rights include the right to make -such modifications as are technically necessary to exercise the rights in -other media and formats. Subject to Section 8(f), all rights not expressly -granted by Licensor are hereby reserved. - -4. Restrictions. The license granted in Section 3 above is expressly made -subject to and limited by the following restrictions: - - a. You may Distribute or Publicly Perform the Work only under the terms - of this License. You must include a copy of, or the Uniform Resource - Identifier (URI) for, this License with every copy of the Work You - Distribute or Publicly Perform. You may not offer or impose any terms - on the Work that restrict the terms of this License or the ability of - the recipient of the Work to exercise the rights granted to that - recipient under the terms of the License. You may not sublicense the - Work. You must keep intact all notices that refer to this License and - to the disclaimer of warranties with every copy of the Work You - Distribute or Publicly Perform. When You Distribute or Publicly - Perform the Work, You may not impose any effective technological - measures on the Work that restrict the ability of a recipient of the - Work from You to exercise the rights granted to that recipient under - the terms of the License. This Section 4(a) applies to the Work as - incorporated in a Collection, but this does not require the Collection - apart from the Work itself to be made subject to the terms of this - License. If You create a Collection, upon notice from any Licensor You - must, to the extent practicable, remove from the Collection any credit - as required by Section 4(c), as requested. If You create an - Adaptation, upon notice from any Licensor You must, to the extent - practicable, remove from the Adaptation any credit as required by - Section 4(c), as requested. - b. You may Distribute or Publicly Perform an Adaptation only under the - terms of: (i) this License; (ii) a later version of this License with - the same License Elements as this License; (iii) a Creative Commons - jurisdiction license (either this or a later license version) that - contains the same License Elements as this License (e.g., - Attribution-ShareAlike 3.0 US)); (iv) a Creative Commons Compatible - License. If you license the Adaptation under one of the licenses - mentioned in (iv), you must comply with the terms of that license. If - you license the Adaptation under the terms of any of the licenses - mentioned in (i), (ii) or (iii) (the "Applicable License"), you must - comply with the terms of the Applicable License generally and the - following provisions: (I) You must include a copy of, or the URI for, - the Applicable License with every copy of each Adaptation You - Distribute or Publicly Perform; (II) You may not offer or impose any - terms on the Adaptation that restrict the terms of the Applicable - License or the ability of the recipient of the Adaptation to exercise - the rights granted to that recipient under the terms of the Applicable - License; (III) You must keep intact all notices that refer to the - Applicable License and to the disclaimer of warranties with every copy - of the Work as included in the Adaptation You Distribute or Publicly - Perform; (IV) when You Distribute or Publicly Perform the Adaptation, - You may not impose any effective technological measures on the - Adaptation that restrict the ability of a recipient of the Adaptation - from You to exercise the rights granted to that recipient under the - terms of the Applicable License. This Section 4(b) applies to the - Adaptation as incorporated in a Collection, but this does not require - the Collection apart from the Adaptation itself to be made subject to - the terms of the Applicable License. - c. If You Distribute, or Publicly Perform the Work or any Adaptations or - Collections, You must, unless a request has been made pursuant to - Section 4(a), keep intact all copyright notices for the Work and - provide, reasonable to the medium or means You are utilizing: (i) the - name of the Original Author (or pseudonym, if applicable) if supplied, - and/or if the Original Author and/or Licensor designate another party - or parties (e.g., a sponsor institute, publishing entity, journal) for - attribution ("Attribution Parties") in Licensor's copyright notice, - terms of service or by other reasonable means, the name of such party - or parties; (ii) the title of the Work if supplied; (iii) to the - extent reasonably practicable, the URI, if any, that Licensor - specifies to be associated with the Work, unless such URI does not - refer to the copyright notice or licensing information for the Work; - and (iv) , consistent with Ssection 3(b), in the case of an - Adaptation, a credit identifying the use of the Work in the Adaptation - (e.g., "French translation of the Work by Original Author," or - "Screenplay based on original Work by Original Author"). The credit - required by this Section 4(c) may be implemented in any reasonable - manner; provided, however, that in the case of a Adaptation or - Collection, at a minimum such credit will appear, if a credit for all - contributing authors of the Adaptation or Collection appears, then as - part of these credits and in a manner at least as prominent as the - credits for the other contributing authors. For the avoidance of - doubt, You may only use the credit required by this Section for the - purpose of attribution in the manner set out above and, by exercising - Your rights under this License, You may not implicitly or explicitly - assert or imply any connection with, sponsorship or endorsement by the - Original Author, Licensor and/or Attribution Parties, as appropriate, - of You or Your use of the Work, without the separate, express prior - written permission of the Original Author, Licensor and/or Attribution - Parties. - d. Except as otherwise agreed in writing by the Licensor or as may be - otherwise permitted by applicable law, if You Reproduce, Distribute or - Publicly Perform the Work either by itself or as part of any - Adaptations or Collections, You must not distort, mutilate, modify or - take other derogatory action in relation to the Work which would be - prejudicial to the Original Author's honor or reputation. Licensor - agrees that in those jurisdictions (e.g. Japan), in which any exercise - of the right granted in Section 3(b) of this License (the right to - make Adaptations) would be deemed to be a distortion, mutilation, - modification or other derogatory action prejudicial to the Original - Author's honor and reputation, the Licensor will waive or not assert, - as appropriate, this Section, to the fullest extent permitted by the - applicable national law, to enable You to reasonably exercise Your - right under Section 3(b) of this License (right to make Adaptations) - but not otherwise. - -5. Representations, Warranties and Disclaimer - -UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR -OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY -KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, -INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, -FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF -LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, -WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION -OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. - -6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE -LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR -ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES -ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS -BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -7. Termination - - a. This License and the rights granted hereunder will terminate - automatically upon any breach by You of the terms of this License. - Individuals or entities who have received Adaptations or Collections - from You under this License, however, will not have their licenses - terminated provided such individuals or entities remain in full - compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will - survive any termination of this License. - b. Subject to the above terms and conditions, the license granted here is - perpetual (for the duration of the applicable copyright in the Work). - Notwithstanding the above, Licensor reserves the right to release the - Work under different license terms or to stop distributing the Work at - any time; provided, however that any such election will not serve to - withdraw this License (or any other license that has been, or is - required to be, granted under the terms of this License), and this - License will continue in full force and effect unless terminated as - stated above. - -8. Miscellaneous - - a. Each time You Distribute or Publicly Perform the Work or a Collection, - the Licensor offers to the recipient a license to the Work on the same - terms and conditions as the license granted to You under this License. - b. Each time You Distribute or Publicly Perform an Adaptation, Licensor - offers to the recipient a license to the original Work on the same - terms and conditions as the license granted to You under this License. - c. If any provision of this License is invalid or unenforceable under - applicable law, it shall not affect the validity or enforceability of - the remainder of the terms of this License, and without further action - by the parties to this agreement, such provision shall be reformed to - the minimum extent necessary to make such provision valid and - enforceable. - d. No term or provision of this License shall be deemed waived and no - breach consented to unless such waiver or consent shall be in writing - and signed by the party to be charged with such waiver or consent. - e. This License constitutes the entire agreement between the parties with - respect to the Work licensed here. There are no understandings, - agreements or representations with respect to the Work not specified - here. Licensor shall not be bound by any additional provisions that - may appear in any communication from You. This License may not be - modified without the mutual written agreement of the Licensor and You. - f. The rights granted under, and the subject matter referenced, in this - License were drafted utilizing the terminology of the Berne Convention - for the Protection of Literary and Artistic Works (as amended on - September 28, 1979), the Rome Convention of 1961, the WIPO Copyright - Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 - and the Universal Copyright Convention (as revised on July 24, 1971). - These rights and subject matter take effect in the relevant - jurisdiction in which the License terms are sought to be enforced - according to the corresponding provisions of the implementation of - those treaty provisions in the applicable national law. If the - standard suite of rights granted under applicable copyright law - includes additional rights not granted under this License, such - additional rights are deemed to be included in the License; this - License is not intended to restrict the license of any rights under - applicable law. - - -Creative Commons Notice - - Creative Commons is not a party to this License, and makes no warranty - whatsoever in connection with the Work. Creative Commons will not be - liable to You or any party on any legal theory for any damages - whatsoever, including without limitation any general, special, - incidental or consequential damages arising in connection to this - license. Notwithstanding the foregoing two (2) sentences, if Creative - Commons has expressly identified itself as the Licensor hereunder, it - shall have all rights and obligations of Licensor. - - Except for the limited purpose of indicating to the public that the - Work is licensed under the CCPL, Creative Commons does not authorize - the use by either party of the trademark "Creative Commons" or any - related trademark or logo of Creative Commons without the prior - written consent of Creative Commons. Any permitted use will be in - compliance with Creative Commons' then-current trademark usage - guidelines, as may be published on its website or otherwise made - available upon request from time to time. For the avoidance of doubt, - this trademark restriction does not form part of the License. - - Creative Commons may be contacted at https://creativecommons.org/. diff --git a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-SA-4.0.txt b/vendor/github.com/google/licenseclassifier/licenses/CC-BY-SA-4.0.txt deleted file mode 100644 index 48c599d..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/CC-BY-SA-4.0.txt +++ /dev/null @@ -1,428 +0,0 @@ -Attribution-ShareAlike 4.0 International - -======================================================================= - -Creative Commons Corporation ("Creative Commons") is not a law firm and -does not provide legal services or legal advice. Distribution of -Creative Commons public licenses does not create a lawyer-client or -other relationship. Creative Commons makes its licenses and related -information available on an "as-is" basis. Creative Commons gives no -warranties regarding its licenses, any material licensed under their -terms and conditions, or any related information. Creative Commons -disclaims all liability for damages resulting from their use to the -fullest extent possible. - -Using Creative Commons Public Licenses - -Creative Commons public licenses provide a standard set of terms and -conditions that creators and other rights holders may use to share -original works of authorship and other material subject to copyright -and certain other rights specified in the public license below. The -following considerations are for informational purposes only, are not -exhaustive, and do not form part of our licenses. - - Considerations for licensors: Our public licenses are - intended for use by those authorized to give the public - permission to use material in ways otherwise restricted by - copyright and certain other rights. Our licenses are - irrevocable. Licensors should read and understand the terms - and conditions of the license they choose before applying it. - Licensors should also secure all rights necessary before - applying our licenses so that the public can reuse the - material as expected. Licensors should clearly mark any - material not subject to the license. This includes other CC- - licensed material, or material used under an exception or - limitation to copyright. More considerations for licensors: - wiki.creativecommons.org/Considerations_for_licensors - - Considerations for the public: By using one of our public - licenses, a licensor grants the public permission to use the - licensed material under specified terms and conditions. If - the licensor's permission is not necessary for any reason--for - example, because of any applicable exception or limitation to - copyright--then that use is not regulated by the license. Our - licenses grant only permissions under copyright and certain - other rights that a licensor has authority to grant. Use of - the licensed material may still be restricted for other - reasons, including because others have copyright or other - rights in the material. A licensor may make special requests, - such as asking that all changes be marked or described. - Although not required by our licenses, you are encouraged to - respect those requests where reasonable. More_considerations - for the public: - wiki.creativecommons.org/Considerations_for_licensees - -======================================================================= - -Creative Commons Attribution-ShareAlike 4.0 International Public -License - -By exercising the Licensed Rights (defined below), You accept and agree -to be bound by the terms and conditions of this Creative Commons -Attribution-ShareAlike 4.0 International Public License ("Public -License"). To the extent this Public License may be interpreted as a -contract, You are granted the Licensed Rights in consideration of Your -acceptance of these terms and conditions, and the Licensor grants You -such rights in consideration of benefits the Licensor receives from -making the Licensed Material available under these terms and -conditions. - - -Section 1 -- Definitions. - - a. Adapted Material means material subject to Copyright and Similar - Rights that is derived from or based upon the Licensed Material - and in which the Licensed Material is translated, altered, - arranged, transformed, or otherwise modified in a manner requiring - permission under the Copyright and Similar Rights held by the - Licensor. For purposes of this Public License, where the Licensed - Material is a musical work, performance, or sound recording, - Adapted Material is always produced where the Licensed Material is - synched in timed relation with a moving image. - - b. Adapter's License means the license You apply to Your Copyright - and Similar Rights in Your contributions to Adapted Material in - accordance with the terms and conditions of this Public License. - - c. BY-SA Compatible License means a license listed at - creativecommons.org/compatiblelicenses, approved by Creative - Commons as essentially the equivalent of this Public License. - - d. Copyright and Similar Rights means copyright and/or similar rights - closely related to copyright including, without limitation, - performance, broadcast, sound recording, and Sui Generis Database - Rights, without regard to how the rights are labeled or - categorized. For purposes of this Public License, the rights - specified in Section 2(b)(1)-(2) are not Copyright and Similar - Rights. - - e. Effective Technological Measures means those measures that, in the - absence of proper authority, may not be circumvented under laws - fulfilling obligations under Article 11 of the WIPO Copyright - Treaty adopted on December 20, 1996, and/or similar international - agreements. - - f. Exceptions and Limitations means fair use, fair dealing, and/or - any other exception or limitation to Copyright and Similar Rights - that applies to Your use of the Licensed Material. - - g. License Elements means the license attributes listed in the name - of a Creative Commons Public License. The License Elements of this - Public License are Attribution and ShareAlike. - - h. Licensed Material means the artistic or literary work, database, - or other material to which the Licensor applied this Public - License. - - i. Licensed Rights means the rights granted to You subject to the - terms and conditions of this Public License, which are limited to - all Copyright and Similar Rights that apply to Your use of the - Licensed Material and that the Licensor has authority to license. - - j. Licensor means the individual(s) or entity(ies) granting rights - under this Public License. - - k. Share means to provide material to the public by any means or - process that requires permission under the Licensed Rights, such - as reproduction, public display, public performance, distribution, - dissemination, communication, or importation, and to make material - available to the public including in ways that members of the - public may access the material from a place and at a time - individually chosen by them. - - l. Sui Generis Database Rights means rights other than copyright - resulting from Directive 96/9/EC of the European Parliament and of - the Council of 11 March 1996 on the legal protection of databases, - as amended and/or succeeded, as well as other essentially - equivalent rights anywhere in the world. - - m. You means the individual or entity exercising the Licensed Rights - under this Public License. Your has a corresponding meaning. - - -Section 2 -- Scope. - - a. License grant. - - 1. Subject to the terms and conditions of this Public License, - the Licensor hereby grants You a worldwide, royalty-free, - non-sublicensable, non-exclusive, irrevocable license to - exercise the Licensed Rights in the Licensed Material to: - - a. reproduce and Share the Licensed Material, in whole or - in part; and - - b. produce, reproduce, and Share Adapted Material. - - 2. Exceptions and Limitations. For the avoidance of doubt, where - Exceptions and Limitations apply to Your use, this Public - License does not apply, and You do not need to comply with - its terms and conditions. - - 3. Term. The term of this Public License is specified in Section - 6(a). - - 4. Media and formats; technical modifications allowed. The - Licensor authorizes You to exercise the Licensed Rights in - all media and formats whether now known or hereafter created, - and to make technical modifications necessary to do so. The - Licensor waives and/or agrees not to assert any right or - authority to forbid You from making technical modifications - necessary to exercise the Licensed Rights, including - technical modifications necessary to circumvent Effective - Technological Measures. For purposes of this Public License, - simply making modifications authorized by this Section 2(a) - (4) never produces Adapted Material. - - 5. Downstream recipients. - - a. Offer from the Licensor -- Licensed Material. Every - recipient of the Licensed Material automatically - receives an offer from the Licensor to exercise the - Licensed Rights under the terms and conditions of this - Public License. - - b. Additional offer from the Licensor -- Adapted Material. - Every recipient of Adapted Material from You - automatically receives an offer from the Licensor to - exercise the Licensed Rights in the Adapted Material - under the conditions of the Adapter's License You apply. - - c. No downstream restrictions. You may not offer or impose - any additional or different terms or conditions on, or - apply any Effective Technological Measures to, the - Licensed Material if doing so restricts exercise of the - Licensed Rights by any recipient of the Licensed - Material. - - 6. No endorsement. Nothing in this Public License constitutes or - may be construed as permission to assert or imply that You - are, or that Your use of the Licensed Material is, connected - with, or sponsored, endorsed, or granted official status by, - the Licensor or others designated to receive attribution as - provided in Section 3(a)(1)(A)(i). - - b. Other rights. - - 1. Moral rights, such as the right of integrity, are not - licensed under this Public License, nor are publicity, - privacy, and/or other similar personality rights; however, to - the extent possible, the Licensor waives and/or agrees not to - assert any such rights held by the Licensor to the limited - extent necessary to allow You to exercise the Licensed - Rights, but not otherwise. - - 2. Patent and trademark rights are not licensed under this - Public License. - - 3. To the extent possible, the Licensor waives any right to - collect royalties from You for the exercise of the Licensed - Rights, whether directly or through a collecting society - under any voluntary or waivable statutory or compulsory - licensing scheme. In all other cases the Licensor expressly - reserves any right to collect such royalties. - - -Section 3 -- License Conditions. - -Your exercise of the Licensed Rights is expressly made subject to the -following conditions. - - a. Attribution. - - 1. If You Share the Licensed Material (including in modified - form), You must: - - a. retain the following if it is supplied by the Licensor - with the Licensed Material: - - i. identification of the creator(s) of the Licensed - Material and any others designated to receive - attribution, in any reasonable manner requested by - the Licensor (including by pseudonym if - designated); - - ii. a copyright notice; - - iii. a notice that refers to this Public License; - - iv. a notice that refers to the disclaimer of - warranties; - - v. a URI or hyperlink to the Licensed Material to the - extent reasonably practicable; - - b. indicate if You modified the Licensed Material and - retain an indication of any previous modifications; and - - c. indicate the Licensed Material is licensed under this - Public License, and include the text of, or the URI or - hyperlink to, this Public License. - - 2. You may satisfy the conditions in Section 3(a)(1) in any - reasonable manner based on the medium, means, and context in - which You Share the Licensed Material. For example, it may be - reasonable to satisfy the conditions by providing a URI or - hyperlink to a resource that includes the required - information. - - 3. If requested by the Licensor, You must remove any of the - information required by Section 3(a)(1)(A) to the extent - reasonably practicable. - - b. ShareAlike. - - In addition to the conditions in Section 3(a), if You Share - Adapted Material You produce, the following conditions also apply. - - 1. The Adapter's License You apply must be a Creative Commons - license with the same License Elements, this version or - later, or a BY-SA Compatible License. - - 2. You must include the text of, or the URI or hyperlink to, the - Adapter's License You apply. You may satisfy this condition - in any reasonable manner based on the medium, means, and - context in which You Share Adapted Material. - - 3. You may not offer or impose any additional or different terms - or conditions on, or apply any Effective Technological - Measures to, Adapted Material that restrict exercise of the - rights granted under the Adapter's License You apply. - - -Section 4 -- Sui Generis Database Rights. - -Where the Licensed Rights include Sui Generis Database Rights that -apply to Your use of the Licensed Material: - - a. for the avoidance of doubt, Section 2(a)(1) grants You the right - to extract, reuse, reproduce, and Share all or a substantial - portion of the contents of the database; - - b. if You include all or a substantial portion of the database - contents in a database in which You have Sui Generis Database - Rights, then the database in which You have Sui Generis Database - Rights (but not its individual contents) is Adapted Material, - - including for purposes of Section 3(b); and - c. You must comply with the conditions in Section 3(a) if You Share - all or a substantial portion of the contents of the database. - -For the avoidance of doubt, this Section 4 supplements and does not -replace Your obligations under this Public License where the Licensed -Rights include other Copyright and Similar Rights. - - -Section 5 -- Disclaimer of Warranties and Limitation of Liability. - - a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE - EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS - AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF - ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, - IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, - WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR - PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, - ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT - KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT - ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. - - b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE - TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, - NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, - INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, - COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR - USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN - ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR - DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR - IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. - - c. The disclaimer of warranties and limitation of liability provided - above shall be interpreted in a manner that, to the extent - possible, most closely approximates an absolute disclaimer and - waiver of all liability. - - -Section 6 -- Term and Termination. - - a. This Public License applies for the term of the Copyright and - Similar Rights licensed here. However, if You fail to comply with - this Public License, then Your rights under this Public License - terminate automatically. - - b. Where Your right to use the Licensed Material has terminated under - Section 6(a), it reinstates: - - 1. automatically as of the date the violation is cured, provided - it is cured within 30 days of Your discovery of the - violation; or - - 2. upon express reinstatement by the Licensor. - - For the avoidance of doubt, this Section 6(b) does not affect any - right the Licensor may have to seek remedies for Your violations - of this Public License. - - c. For the avoidance of doubt, the Licensor may also offer the - Licensed Material under separate terms or conditions or stop - distributing the Licensed Material at any time; however, doing so - will not terminate this Public License. - - d. Sections 1, 5, 6, 7, and 8 survive termination of this Public - License. - - -Section 7 -- Other Terms and Conditions. - - a. The Licensor shall not be bound by any additional or different - terms or conditions communicated by You unless expressly agreed. - - b. Any arrangements, understandings, or agreements regarding the - Licensed Material not stated herein are separate from and - independent of the terms and conditions of this Public License. - - -Section 8 -- Interpretation. - - a. For the avoidance of doubt, this Public License does not, and - shall not be interpreted to, reduce, limit, restrict, or impose - conditions on any use of the Licensed Material that could lawfully - be made without permission under this Public License. - - b. To the extent possible, if any provision of this Public License is - deemed unenforceable, it shall be automatically reformed to the - minimum extent necessary to make it enforceable. If the provision - cannot be reformed, it shall be severed from this Public License - without affecting the enforceability of the remaining terms and - conditions. - - c. No term or condition of this Public License will be waived and no - failure to comply consented to unless expressly agreed to by the - Licensor. - - d. Nothing in this Public License constitutes or may be interpreted - as a limitation upon, or waiver of, any privileges and immunities - that apply to the Licensor or You, including from the legal - processes of any jurisdiction or authority. - - -======================================================================= - -Creative Commons is not a party to its public -licenses. Notwithstanding, Creative Commons may elect to apply one of -its public licenses to material it publishes and in those instances -will be considered the “Licensor.” The text of the Creative Commons -public licenses is dedicated to the public domain under the CC0 Public -Domain Dedication. Except for the limited purpose of indicating that -material is shared under a Creative Commons public license or as -otherwise permitted by the Creative Commons policies published at -creativecommons.org/policies, Creative Commons does not authorize the -use of the trademark "Creative Commons" or any other trademark or logo -of Creative Commons without its prior written consent including, -without limitation, in connection with any unauthorized modifications -to any of its public licenses or any other arrangements, -understandings, or agreements concerning use of licensed material. For -the avoidance of doubt, this paragraph does not form part of the -public licenses. - -Creative Commons may be contacted at creativecommons.org. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/CC0-1.0.txt b/vendor/github.com/google/licenseclassifier/licenses/CC0-1.0.txt deleted file mode 100644 index d016e27..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/CC0-1.0.txt +++ /dev/null @@ -1,86 +0,0 @@ -Creative Commons CC0 1.0 Universal - -CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL -SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN ATTORNEY-CLIENT -RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. -CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE USE OF THIS DOCUMENT OR THE -INFORMATION OR WORKS PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES -RESULTING FROM THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED -HEREUNDER. - -Statement of Purpose - -The laws of most jurisdictions throughout the world automatically confer -exclusive Copyright and Related Rights (defined below) upon the creator and -subsequent owner(s) (each and all, an "owner") of an original work of -authorship and/or a database (each, a "Work"). - -Certain owners wish to permanently relinquish those rights to a Work for the -purpose of contributing to a commons of creative, cultural and scientific -works ("Commons") that the public can reliably and without fear of later -claims of infringement build upon, modify, incorporate in other works, reuse -and redistribute as freely as possible in any form whatsoever and for any -purposes, including without limitation commercial purposes. These owners may -contribute to the Commons to promote the ideal of a free culture and the -further production of creative, cultural and scientific works, or to gain -reputation or greater distribution for their Work in part through the use and -efforts of others. - -For these and/or other purposes and motivations, and without any expectation -of additional consideration or compensation, the person associating CC0 with a -Work (the "Affirmer"), to the extent that he or she is an owner of Copyright -and Related Rights in the Work, voluntarily elects to apply CC0 to the Work -and publicly distribute the Work under its terms, with knowledge of his or her -Copyright and Related Rights in the Work and the meaning and intended legal -effect of CC0 on those rights. - -1. Copyright and Related Rights. A Work made available under CC0 may be protected by copyright and related or neighboring rights ("Copyright and Related Rights"). Copyright and Related Rights include, but are not limited to, the following: - -i. the right to reproduce, adapt, distribute, perform, display, communicate, -and translate a Work; - -ii. moral rights retained by the original author(s) and/or performer(s); - -iii. publicity and privacy rights pertaining to a person's image or -likeness depicted in a Work; - -iv. rights protecting against unfair competition in regards to a Work, subject -to the limitations in paragraph 4(a), below; - -v. rights protecting the extraction, dissemination, use and reuse of data in a -Work; - -vi. database rights (such as those arising under Directive 96/9/EC of the -European Parliament and of the Council of 11 March 1996 on the legal -protection of databases, and under any national implementation thereof, -including any amended or successor version of such directive); and - -vii. other similar, equivalent or corresponding rights throughout the world -based on applicable law or treaty, and any national implementations thereof. - -2. Waiver. To the greatest extent permitted by, but not in contravention of, applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and unconditionally waives, abandons, and surrenders all of Affirmer's Copyright and Related Rights and associated claims and causes of action, whether now known or unknown (including existing as well as future claims and causes of action), in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each member of the public at large and to the detriment of Affirmer's heirs and successors, fully intending that such Waiver shall not be subject to revocation, rescission, cancellation, termination, or any other legal or equitable action to disrupt the quiet enjoyment of the Work by the public as contemplated by Affirmer's express Statement of Purpose. - -3. Public License Fallback. Should any part of the Waiver for any reason be judged legally invalid or ineffective under applicable law, then the Waiver shall be preserved to the maximum extent permitted taking into account Affirmer's express Statement of Purpose. In addition, to the extent the Waiver is so judged Affirmer hereby grants to each affected person a royalty-free, non transferable, non sublicensable, non exclusive, irrevocable and unconditional license to exercise Affirmer's Copyright and Related Rights in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "License"). The License shall be deemed effective as of the date CC0 was applied by Affirmer to the Work. Should any part of the License for any reason be judged legally invalid or ineffective under applicable law, such partial invalidity or ineffectiveness shall not invalidate the remainder of the License, and in such case Affirmer hereby affirms that he or she will not (i) exercise any of his or her remaining Copyright and Related Rights in the Work or (ii) assert any associated claims and causes of action with respect to the Work, in either case contrary to Affirmer's express Statement of Purpose. - -4. Limitations and Disclaimers. - -a. No trademark or patent rights held by Affirmer are waived, abandoned, -surrendered, licensed or otherwise affected by this document. - -b. Affirmer offers the Work as-is and makes no representations or warranties -of any kind concerning the Work, express, implied, statutory or otherwise, -including without limitation warranties of title, merchantability, fitness for -a particular purpose, non infringement, or the absence of latent or other -defects, accuracy, or the present or absence of errors, whether or not -discoverable, all to the greatest extent permissible under applicable law. - -c. Affirmer disclaims responsibility for clearing rights of other persons that -may apply to the Work or any use thereof, including without limitation any -person's Copyright and Related Rights in the Work. Further, Affirmer -disclaims responsibility for obtaining any necessary consents, permissions or -other rights required for any use of the Work. - -d. Affirmer understands and acknowledges that Creative Commons is not a party -to this document and has no duty or obligation with respect to this CC0 or use -of the Work. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/CDDL-1.0.txt b/vendor/github.com/google/licenseclassifier/licenses/CDDL-1.0.txt deleted file mode 100644 index 972a8ac..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/CDDL-1.0.txt +++ /dev/null @@ -1,318 +0,0 @@ -COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) - -Version 1.0 - -1. Definitions. - -1.1. “Contributor” means each individual or entity that creates or contributes -to the creation of Modifications. - -1.2. “Contributor Version” means the combination of the Original Software, -prior Modifications used by a Contributor (if any), and the Modifications made -by that particular Contributor. - -1.3. “Covered Software” means (a) the Original Software, or (b) Modifications, -or (c) the combination of files containing Original Software with files -containing Modifications, in each case including portions thereof. - -1.4. “Executable” means the Covered Software in any form other than Source -Code. - -1.5. “Initial Developer” means the individual or entity that first makes -Original Software available under this License. - -1.6. “Larger Work” means a work which combines Covered Software or portions -thereof with code not governed by the terms of this License. - -1.7. “License” means this document. - -1.8. “Licensable” means having the right to grant, to the maximum extent -possible, whether at the time of the initial grant or subsequently acquired, -any and all of the rights conveyed herein. - -1.9. “Modifications” means the Source Code and Executable form of any of the -following: - -A. Any file that results from an addition to, deletion from or modification of -the contents of a file containing Original Software or previous Modifications; - -B. Any new file that contains any part of the Original Software or previous -Modification; or - -C. Any new file that is contributed or otherwise made available under the -terms of this License. - -1.10. “Original Software” means the Source Code and Executable form of -computer software code that is originally released under this License. - -1.11. “Patent Claims” means any patent claim(s), now owned or hereafter -acquired, including without limitation, method, process, and apparatus claims, -in any patent Licensable by grantor. - -1.12. “Source Code” means (a) the common form of computer software code in -which modifications are made and (b) associated documentation included in or -with such code. - -1.13. “You” (or “Your”) means an individual or a legal entity exercising -rights under, and complying with all of the terms of, this License. For legal -entities, “You” includes any entity which controls, is controlled by, or is -under common control with You. For purposes of this definition, “control” -means (a) the power, direct or indirect, to cause the direction or management -of such entity, whether by contract or otherwise, or (b) ownership of more -than fifty percent (50%) of the outstanding shares or beneficial ownership of -such entity. - -2. License Grants. - -2.1. The Initial Developer Grant. - -Conditioned upon Your compliance with Section 3.1 below and subject to third -party intellectual property claims, the Initial Developer hereby grants You a -world-wide, royalty-free, non-exclusive license: - -(a) under intellectual property rights (other than patent or trademark) -Licensable by Initial Developer, to use, reproduce, modify, display, perform, -sublicense and distribute the Original Software (or portions thereof), with or -without Modifications, and/or as part of a Larger Work; and - -(b) under Patent Claims infringed by the making, using or selling of Original -Software, to make, have made, use, practice, sell, and offer for sale, and/or -otherwise dispose of the Original Software (or portions thereof). - -(c) The licenses granted in Sections 2.1(a) and (b) are effective on the date -Initial Developer first distributes or otherwise makes the Original Software -available to a third party under the terms of this License. - -(d) Notwithstanding Section 2.1(b) above, no patent license is granted: (1) -for code that You delete from the Original Software, or (2) for infringements -caused by: (i) the modification of the Original Software, or (ii) the -combination of the Original Software with other software or devices. - -2.2. Contributor Grant. - -Conditioned upon Your compliance with Section 3.1 below and subject to third -party intellectual property claims, each Contributor hereby grants You a -world-wide, royalty-free, non-exclusive license: - -(a) under intellectual property rights (other than patent or trademark) -Licensable by Contributor to use, reproduce, modify, display, perform, -sublicense and distribute the Modifications created by such Contributor (or -portions thereof), either on an unmodified basis, with other Modifications, as -Covered Software and/or as part of a Larger Work; and - -(b) under Patent Claims infringed by the making, using, or selling of -Modifications made by that Contributor either alone and/or in combination with -its Contributor Version (or portions of such combination), to make, use, sell, -offer for sale, have made, and/or otherwise dispose of: (1) Modifications made -by that Contributor (or portions thereof); and (2) the combination of -Modifications made by that Contributor with its Contributor Version (or -portions of such combination). - -(c) The licenses granted in Sections 2.2(a) and 2.2(b) are effective on the -date Contributor first distributes or otherwise makes the Modifications -available to a third party. - -(d) Notwithstanding Section 2.2(b) above, no patent license is granted: (1) -for any code that Contributor has deleted from the Contributor Version; (2) -for infringements caused by: (i) third party modifications of Contributor -Version, or (ii) the combination of Modifications made by that Contributor -with other software (except as part of the Contributor Version) or other -devices; or (3) under Patent Claims infringed by Covered Software in the -absence of Modifications made by that Contributor. - -3. Distribution Obligations. - -3.1. Availability of Source Code. - -Any Covered Software that You distribute or otherwise make available in -Executable form must also be made available in Source Code form and that -Source Code form must be distributed only under the terms of this License. You -must include a copy of this License with every copy of the Source Code form of -the Covered Software You distribute or otherwise make available. You must -inform recipients of any such Covered Software in Executable form as to how -they can obtain such Covered Software in Source Code form in a reasonable -manner on or through a medium customarily used for software exchange. - -3.2. Modifications. - -The Modifications that You create or to which You contribute are governed by -the terms of this License. You represent that You believe Your Modifications -are Your original creation(s) and/or You have sufficient rights to grant the -rights conveyed by this License. - -3.3. Required Notices. - -You must include a notice in each of Your Modifications that identifies You as -the Contributor of the Modification. You may not remove or alter any -copyright, patent or trademark notices contained within the Covered Software, -or any notices of licensing or any descriptive text giving attribution to any -Contributor or the Initial Developer. - -3.4. Application of Additional Terms. - -You may not offer or impose any terms on any Covered Software in Source Code -form that alters or restricts the applicable version of this License or the -recipients’ rights hereunder. You may choose to offer, and to charge a fee -for, warranty, support, indemnity or liability obligations to one or more -recipients of Covered Software. However, you may do so only on Your own -behalf, and not on behalf of the Initial Developer or any Contributor. You -must make it absolutely clear that any such warranty, support, indemnity or -liability obligation is offered by You alone, and You hereby agree to -indemnify the Initial Developer and every Contributor for any liability -incurred by the Initial Developer or such Contributor as a result of warranty, -support, indemnity or liability terms You offer. - -3.5. Distribution of Executable Versions. - -You may distribute the Executable form of the Covered Software under the terms -of this License or under the terms of a license of Your choice, which may -contain terms different from this License, provided that You are in compliance -with the terms of this License and that the license for the Executable form -does not attempt to limit or alter the recipient’s rights in the Source Code -form from the rights set forth in this License. If You distribute the Covered -Software in Executable form under a different license, You must make it -absolutely clear that any terms which differ from this License are offered by -You alone, not by the Initial Developer or Contributor. You hereby agree to -indemnify the Initial Developer and every Contributor for any liability -incurred by the Initial Developer or such Contributor as a result of any such -terms You offer. - -3.6. Larger Works. - -You may create a Larger Work by combining Covered Software with other code not -governed by the terms of this License and distribute the Larger Work as a -single product. In such a case, You must make sure the requirements of this -License are fulfilled for the Covered Software. - -4. Versions of the License. - -4.1. New Versions. - -Sun Microsystems, Inc. is the initial license steward and may publish revised -and/or new versions of this License from time to time. Each version will be -given a distinguishing version number. Except as provided in Section 4.3, no -one other than the license steward has the right to modify this License. - -4.2. Effect of New Versions. - -You may always continue to use, distribute or otherwise make the Covered -Software available under the terms of the version of the License under which -You originally received the Covered Software. If the Initial Developer -includes a notice in the Original Software prohibiting it from being -distributed or otherwise made available under any subsequent version of the -License, You must distribute and make the Covered Software available under the -terms of the version of the License under which You originally received the -Covered Software. Otherwise, You may also choose to use, distribute or -otherwise make the Covered Software available under the terms of any -subsequent version of the License published by the license steward. - -4.3. Modified Versions. - -When You are an Initial Developer and You want to create a new license for -Your Original Software, You may create and use a modified version of this -License if You: (a) rename the license and remove any references to the name -of the license steward (except to note that the license differs from this -License); and (b) otherwise make it clear that the license contains terms -which differ from this License. - -5. DISCLAIMER OF WARRANTY. - -COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN “AS IS” BASIS, WITHOUT -WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT -LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS, -MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK -AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD -ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL -DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY -SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN -ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED SOFTWARE IS AUTHORIZED -HEREUNDER EXCEPT UNDER THIS DISCLAIMER. - -6. TERMINATION. - -6.1. This License and the rights granted hereunder will terminate -automatically if You fail to comply with terms herein and fail to cure such -breach within 30 days of becoming aware of the breach. Provisions which, by -their nature, must remain in effect beyond the termination of this License -shall survive. - -6.2. If You assert a patent infringement claim (excluding declaratory judgment -actions) against Initial Developer or a Contributor (the Initial Developer or -Contributor against whom You assert such claim is referred to as -“Participant”) alleging that the Participant Software (meaning the Contributor -Version where the Participant is a Contributor or the Original Software where -the Participant is the Initial Developer) directly or indirectly infringes any -patent, then any and all rights granted directly or indirectly to You by such -Participant, the Initial Developer (if the Initial Developer is not the -Participant) and all Contributors under Sections 2.1 and/or 2.2 of this -License shall, upon 60 days notice from Participant terminate prospectively -and automatically at the expiration of such 60 day notice period, unless if -within such 60 day period You withdraw Your claim with respect to the -Participant Software against such Participant either unilaterally or pursuant -to a written agreement with Participant. - -6.3. In the event of termination under Sections 6.1 or 6.2 above, all end user -licenses that have been validly granted by You or any distributor hereunder -prior to termination (excluding licenses granted to You by any distributor) -shall survive termination. - -7. LIMITATION OF LIABILITY. - -UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING -NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY -OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER OF -ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, -INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT -LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK STOPPAGE, -COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR -LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH -DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH -OR PERSONAL INJURY RESULTING FROM SUCH PARTY’S NEGLIGENCE TO THE EXTENT -APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE -EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS -EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. - -8. U.S. GOVERNMENT END USERS. - -The Covered Software is a “commercial item,” as that term is defined in 48 -C.F.R. 2.101 (Oct. 1995), consisting of “commercial computer software” (as -that term is defined at 48 C.F.R. § 252.227-7014(a)(1)) and “commercial -computer software documentation” as such terms are used in 48 C.F.R. 12.212 -(Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 -through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered -Software with only those rights set forth herein. This U.S. Government Rights -clause is in lieu of, and supersedes, any other FAR, DFAR, or other clause or -provision that addresses Government rights in computer software under this -License. - -9. MISCELLANEOUS. - -This License represents the complete agreement concerning subject matter -hereof. If any provision of this License is held to be unenforceable, such -provision shall be reformed only to the extent necessary to make it -enforceable. This License shall be governed by the law of the jurisdiction -specified in a notice contained within the Original Software (except to the -extent applicable law, if any, provides otherwise), excluding such -jurisdiction’s conflict-of-law provisions. Any litigation relating to this -License shall be subject to the jurisdiction of the courts located in the -jurisdiction and venue specified in a notice contained within the Original -Software, with the losing party responsible for costs, including, without -limitation, court costs and reasonable attorneys’ fees and expenses. The -application of the United Nations Convention on Contracts for the -International Sale of Goods is expressly excluded. Any law or regulation which -provides that the language of a contract shall be construed against the -drafter shall not apply to this License. You agree that You alone are -responsible for compliance with the United States export administration -regulations (and the export control laws and regulation of any other -countries) when You use, distribute or otherwise make available any Covered -Software. - -10. RESPONSIBILITY FOR CLAIMS. - -As between Initial Developer and the Contributors, each party is responsible -for claims and damages arising, directly or indirectly, out of its utilization -of rights under this License and You agree to work with Initial Developer and -Contributors to distribute such responsibility on an equitable basis. Nothing -herein is intended or shall be deemed to constitute any admission of -liability. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/CDDL-1.1.txt b/vendor/github.com/google/licenseclassifier/licenses/CDDL-1.1.txt deleted file mode 100644 index e192bb3..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/CDDL-1.1.txt +++ /dev/null @@ -1,333 +0,0 @@ -COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) - -Version 1.1 - -1. Definitions. - -1.1. “Contributor” means each individual or entity that creates or contributes -to the creation of Modifications. - -1.2. “Contributor Version” means the combination of the Original Software, -prior Modifications used by a Contributor (if any), and the Modifications made -by that particular Contributor. - -1.3. “Covered Software” means (a) the Original Software, or (b) Modifications, -or (c) the combination of files containing Original Software with files -containing Modifications, in each case including portions thereof. - -1.4. “Executable” means the Covered Software in any form other than Source -Code. - -1.5. “Initial Developer” means the individual or entity that first makes -Original Software available under this License. - -1.6. “Larger Work” means a work which combines Covered Software or portions -thereof with code not governed by the terms of this License. - -1.7. “License” means this document. - -1.8. “Licensable” means having the right to grant, to the maximum extent -possible, whether at the time of the initial grant or subsequently acquired, -any and all of the rights conveyed herein. - -1.9. “Modifications” means the Source Code and Executable form of any of the -following: - -A. Any file that results from an addition to, deletion from or modification of -the contents of a file containing Original Software or previous Modifications; - -B. Any new file that contains any part of the Original Software or previous -Modification; or - -C. Any new file that is contributed or otherwise made available under the -terms of this License. - -1.10. “Original Software” means the Source Code and Executable form of -computer software code that is originally released under this License. - -1.11. “Patent Claims” means any patent claim(s), now owned or hereafter -acquired, including without limitation, method, process, and apparatus claims, -in any patent Licensable by grantor. - -1.12. “Source Code” means (a) the common form of computer software code in -which modifications are made and (b) associated documentation included in or -with such code. - -1.13. “You” (or “Your”) means an individual or a legal entity exercising -rights under, and complying with all of the terms of, this License. For legal -entities, “You” includes any entity which controls, is controlled by, or is -under common control with You. For purposes of this definition, “control” -means (a) the power, direct or indirect, to cause the direction or management -of such entity, whether by contract or otherwise, or (b) ownership of more -than fifty percent (50%) of the outstanding shares or beneficial ownership of -such entity. - -2. License Grants. - -2.1. The Initial Developer Grant. - -Conditioned upon Your compliance with Section 3.1 below and subject to third -party intellectual property claims, the Initial Developer hereby grants You a -world-wide, royalty-free, non-exclusive license: - -(a) under intellectual property rights (other than patent or trademark) -Licensable by Initial Developer, to use, reproduce, modify, display, perform, -sublicense and distribute the Original Software (or portions thereof), with or -without Modifications, and/or as part of a Larger Work; and - -(b) under Patent Claims infringed by the making, using or selling of Original -Software, to make, have made, use, practice, sell, and offer for sale, and/or -otherwise dispose of the Original Software (or portions thereof). - -(c) The licenses granted in Sections 2.1(a) and (b) are effective on the date -Initial Developer first distributes or otherwise makes the Original Software -available to a third party under the terms of this License. - -(d) Notwithstanding Section 2.1(b) above, no patent license is granted: (1) -for code that You delete from the Original Software, or (2) for infringements -caused by: (i) the modification of the Original Software, or (ii) the -combination of the Original Software with other software or devices. - -2.2. Contributor Grant. - -Conditioned upon Your compliance with Section 3.1 below and subject to third -party intellectual property claims, each Contributor hereby grants You a -world-wide, royalty-free, non-exclusive license: - -(a) under intellectual property rights (other than patent or trademark) -Licensable by Contributor to use, reproduce, modify, display, perform, -sublicense and distribute the Modifications created by such Contributor (or -portions thereof), either on an unmodified basis, with other Modifications, as -Covered Software and/or as part of a Larger Work; and - -(b) under Patent Claims infringed by the making, using, or selling of -Modifications made by that Contributor either alone and/or in combination with -its Contributor Version (or portions of such combination), to make, use, sell, -offer for sale, have made, and/or otherwise dispose of: (1) Modifications made -by that Contributor (or portions thereof); and (2) the combination of -Modifications made by that Contributor with its Contributor Version (or -portions of such combination). - -(c) The licenses granted in Sections 2.2(a) and 2.2(b) are effective on the -date Contributor first distributes or otherwise makes the Modifications -available to a third party. - -(d) Notwithstanding Section 2.2(b) above, no patent license is granted: (1) -for any code that Contributor has deleted from the Contributor Version; (2) -for infringements caused by: (i) third party modifications of Contributor -Version, or (ii) the combination of Modifications made by that Contributor -with other software (except as part of the Contributor Version) or other -devices; or (3) under Patent Claims infringed by Covered Software in the -absence of Modifications made by that Contributor. - -3. Distribution Obligations. - -3.1. Availability of Source Code. - -Any Covered Software that You distribute or otherwise make available in -Executable form must also be made available in Source Code form and that -Source Code form must be distributed only under the terms of this License. You -must include a copy of this License with every copy of the Source Code form of -the Covered Software You distribute or otherwise make available. You must -inform recipients of any such Covered Software in Executable form as to how -they can obtain such Covered Software in Source Code form in a reasonable -manner on or through a medium customarily used for software exchange. - -3.2. Modifications. - -The Modifications that You create or to which You contribute are governed by -the terms of this License. You represent that You believe Your Modifications -are Your original creation(s) and/or You have sufficient rights to grant the -rights conveyed by this License. - -3.3. Required Notices. - -You must include a notice in each of Your Modifications that identifies You as -the Contributor of the Modification. You may not remove or alter any -copyright, patent or trademark notices contained within the Covered Software, -or any notices of licensing or any descriptive text giving attribution to any -Contributor or the Initial Developer. - -3.4. Application of Additional Terms. - -You may not offer or impose any terms on any Covered Software in Source Code -form that alters or restricts the applicable version of this License or the -recipients' rights hereunder. You may choose to offer, and to charge a -fee for, warranty, support, indemnity or liability obligations to one or more -recipients of Covered Software. However, you may do so only on Your own -behalf, and not on behalf of the Initial Developer or any Contributor. You -must make it absolutely clear that any such warranty, support, indemnity or -liability obligation is offered by You alone, and You hereby agree to -indemnify the Initial Developer and every Contributor for any liability -incurred by the Initial Developer or such Contributor as a result of warranty, -support, indemnity or liability terms You offer. - -3.5. Distribution of Executable Versions. - -You may distribute the Executable form of the Covered Software under the terms -of this License or under the terms of a license of Your choice, which may -contain terms different from this License, provided that You are in compliance -with the terms of this License and that the license for the Executable form -does not attempt to limit or alter the recipient's rights in the Source -Code form from the rights set forth in this License. If You distribute the -Covered Software in Executable form under a different license, You must make -it absolutely clear that any terms which differ from this License are offered -by You alone, not by the Initial Developer or Contributor. You hereby agree to -indemnify the Initial Developer and every Contributor for any liability -incurred by the Initial Developer or such Contributor as a result of any such -terms You offer. - -3.6. Larger Works. - -You may create a Larger Work by combining Covered Software with other code not -governed by the terms of this License and distribute the Larger Work as a -single product. In such a case, You must make sure the requirements of this -License are fulfilled for the Covered Software. - -4. Versions of the License. - -4.1. New Versions. - -Oracle is the initial license steward and may publish revised and/or new -versions of this License from time to time. Each version will be given a -distinguishing version number. Except as provided in Section 4.3, no one other -than the license steward has the right to modify this License. - -4.2. Effect of New Versions. - -You may always continue to use, distribute or otherwise make the Covered -Software available under the terms of the version of the License under which -You originally received the Covered Software. If the Initial Developer -includes a notice in the Original Software prohibiting it from being -distributed or otherwise made available under any subsequent version of the -License, You must distribute and make the Covered Software available under the -terms of the version of the License under which You originally received the -Covered Software. Otherwise, You may also choose to use, distribute or -otherwise make the Covered Software available under the terms of any -subsequent version of the License published by the license steward. - -4.3. Modified Versions. - -When You are an Initial Developer and You want to create a new license for -Your Original Software, You may create and use a modified version of this -License if You: (a) rename the license and remove any references to the name -of the license steward (except to note that the license differs from this -License); and (b) otherwise make it clear that the license contains terms -which differ from this License. - -5. DISCLAIMER OF WARRANTY. -COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN “AS IS” BASIS, WITHOUT -WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT -LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS, -MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK -AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD -ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL -DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY -SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN -ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED SOFTWARE IS AUTHORIZED -HEREUNDER EXCEPT UNDER THIS DISCLAIMER. - -6. TERMINATION. - -6.1. This License and the rights granted hereunder will terminate -automatically if You fail to comply with terms herein and fail to cure such -breach within 30 days of becoming aware of the breach. Provisions which, by -their nature, must remain in effect beyond the termination of this License -shall survive. - -6.2. If You assert a patent infringement claim (excluding declaratory judgment -actions) against Initial Developer or a Contributor (the Initial Developer or -Contributor against whom You assert such claim is referred to as -“Participant”) alleging that the Participant Software (meaning the Contributor -Version where the Participant is a Contributor or the Original Software where -the Participant is the Initial Developer) directly or indirectly infringes any -patent, then any and all rights granted directly or indirectly to You by such -Participant, the Initial Developer (if the Initial Developer is not the -Participant) and all Contributors under Sections 2.1 and/or 2.2 of this -License shall, upon 60 days notice from Participant terminate prospectively -and automatically at the expiration of such 60 day notice period, unless if -within such 60 day period You withdraw Your claim with respect to the -Participant Software against such Participant either unilaterally or pursuant -to a written agreement with Participant. - -6.3. If You assert a patent infringement claim against Participant alleging -that the Participant Software directly or indirectly infringes any patent -where such claim is resolved (such as by license or settlement) prior to the -initiation of patent infringement litigation, then the reasonable value of the -licenses granted by such Participant under Sections 2.1 or 2.2 shall be taken -into account in determining the amount or value of any payment or license. - -6.4. In the event of termination under Sections 6.1 or 6.2 above, all end user -licenses that have been validly granted by You or any distributor hereunder -prior to termination (excluding licenses granted to You by any distributor) -shall survive termination. - -7. LIMITATION OF LIABILITY. - -UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING -NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY -OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER OF -ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, -INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT -LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR -MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH -PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS -LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL -INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE -LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION -OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND -LIMITATION MAY NOT APPLY TO YOU. - -8. U.S. GOVERNMENT END USERS. - -The Covered Software is a “commercial item,” as that term is defined in 48 -C.F.R. 2.101 (Oct. 1995), consisting of “commercial computer software” (as -that term is defined at 48 C.F.R. § 252.227-7014(a)(1)) and “commercial -computer software documentation” as such terms are used in 48 C.F.R. 12.212 -(Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 -through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered -Software with only those rights set forth herein. This U.S. Government Rights -clause is in lieu of, and supersedes, any other FAR, DFAR, or other clause or -provision that addresses Government rights in computer software under this -License. - -9. MISCELLANEOUS. - -This License represents the complete agreement concerning subject matter -hereof. If any provision of this License is held to be unenforceable, such -provision shall be reformed only to the extent necessary to make it -enforceable. This License shall be governed by the law of the jurisdiction -specified in a notice contained within the Original Software (except to the -extent applicable law, if any, provides otherwise), excluding such -jurisdiction's conflict-of-law provisions. Any litigation relating to -this License shall be subject to the jurisdiction of the courts located in the -jurisdiction and venue specified in a notice contained within the Original -Software, with the losing party responsible for costs, including, without -limitation, court costs and reasonable attorneys' fees and expenses. The -application of the United Nations Convention on Contracts for the -International Sale of Goods is expressly excluded. Any law or regulation which -provides that the language of a contract shall be construed against the -drafter shall not apply to this License. You agree that You alone are -responsible for compliance with the United States export administration -regulations (and the export control laws and regulation of any other -countries) when You use, distribute or otherwise make available any Covered -Software. - -10. RESPONSIBILITY FOR CLAIMS. - -As between Initial Developer and the Contributors, each party is responsible -for claims and damages arising, directly or indirectly, out of its utilization -of rights under this License and You agree to work with Initial Developer and -Contributors to distribute such responsibility on an equitable basis. Nothing -herein is intended or shall be deemed to constitute any admission of -liability. - -NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION -LICENSE (CDDL) - -The code released under the CDDL shall be governed by the laws of the State of -California (excluding conflict-of-law provisions). Any litigation relating to -this License shall be subject to the jurisdiction of the Federal Courts of the -Northern District of California and the state courts of the State of -California, with venue lying in Santa Clara County, California. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/CPAL-1.0.header.txt b/vendor/github.com/google/licenseclassifier/licenses/CPAL-1.0.header.txt deleted file mode 100644 index 9cc7c06..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/CPAL-1.0.header.txt +++ /dev/null @@ -1,28 +0,0 @@ -The contents of this file are subject to the Common Public Attribution License -Version 1.0 (the “License”); you may not use this file except in compliance with -the License. You may obtain a copy of the License at _____. The License is based -on the Mozilla Public License Version 1.1 but Sections 14 and 15 have been added -to cover use of software over a computer network and provide for limited -attribution for the Original Developer. In addition, Exhibit A has been modified -to be consistent with Exhibit B. - -Software distributed under the License is distributed on an “AS IS” basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the -specific language governing rights and limitations under the License. - -The Original Code is _____ . -The Original Developer is not the Initial Developer and is _____ . If left -blank, the Original Developer is the Initial Developer. -The Initial Developer of the Original Code is _____ . All portions of the code -written by _____ are Copyright (c) _____ . All Rights Reserved. -Contributor _____ . - -Alternatively, the contents of this file may be used under the terms of the -_____ license (the [____] License), in which case the provisions of [____] -License are applicable instead of those above. If you wish to allow use of your -version of this file only under the terms of the [____] License and not to allow -others to use your version of this file under the CPAL, indicate your decision -by deleting the provisions above and replace them with the notice and other -provisions required by the [____] License. If you do not delete the provisions -above, a recipient may use your version of this file under either the CPAL or -the [____] License. diff --git a/vendor/github.com/google/licenseclassifier/licenses/CPAL-1.0.txt b/vendor/github.com/google/licenseclassifier/licenses/CPAL-1.0.txt deleted file mode 100644 index 8d01f86..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/CPAL-1.0.txt +++ /dev/null @@ -1,512 +0,0 @@ -Common Public Attribution License Version 1.0 (CPAL) - -1. “Definitions” - -1.0.1 “Commercial Use” means distribution or otherwise making the Covered Code -available to a third party. - -1.1 “Contributor” means each entity that creates or contributes to the -creation of Modifications. - -1.2 “Contributor Version” means the combination of the Original Code, prior -Modifications used by a Contributor, and the Modifications made by that -particular Contributor. - -1.3 “Covered Code” means the Original Code or Modifications or the combination -of the Original Code and Modifications, in each case including portions -thereof. - -1.4 “Electronic Distribution Mechanism” means a mechanism generally accepted -in the software development community for the electronic transfer of data. - -1.5 “Executable” means Covered Code in any form other than Source Code. - -1.6 “Initial Developer” means the individual or entity identified as the -Initial Developer in the Source Code notice required by Exhibit A. - -1.7 “Larger Work” means a work which combines Covered Code or portions thereof -with code not governed by the terms of this License. - -1.8 “License” means this document. - -1.8.1 “Licensable” means having the right to grant, to the maximum extent -possible, whether at the time of the initial grant or subsequently acquired, -any and all of the rights conveyed herein. - -1.9 “Modifications” means any addition to or deletion from the substance or -structure of either the Original Code or any previous Modifications. When -Covered Code is released as a series of files, a Modification is: - -A. Any addition to or deletion from the contents of a file containing Original -Code or previous Modifications. - -B. Any new file that contains any part of the Original Code or previous -Modifications. - -1.10 “Original Code” means Source Code of computer software code which is -described in the Source Code notice required by Exhibit A as Original Code, -and which, at the time of its release under this License is not already -Covered Code governed by this License. - -1.10.1 “Patent Claims” means any patent claim(s), now owned or hereafter -acquired, including without limitation, method, process, and apparatus claims, -in any patent Licensable by grantor. - -1.11 “Source Code” means the preferred form of the Covered Code for making -modifications to it, including all modules it contains, plus any associated -interface definition files, scripts used to control compilation and -installation of an Executable, or source code differential comparisons against -either the Original Code or another well known, available Covered Code of the -Contributor’s choice. The Source Code can be in a compressed or archival form, -provided the appropriate decompression or de-archiving software is widely -available for no charge. - -1.12 “You” (or “Your”) means an individual or a legal entity exercising rights -under, and complying with all of the terms of, this License or a future -version of this License issued under Section 6.1. For legal entities, “You” -includes any entity which controls, is controlled by, or is under common -control with You. For purposes of this definition, “control” means (a) the -power, direct or indirect, to cause the direction or management of such -entity, whether by contract or otherwise, or (b) ownership of more than fifty -percent (50%) of the outstanding shares or beneficial ownership of such -entity. - -2. Source Code License. - -2.1 The Initial Developer Grant. - -The Initial Developer hereby grants You a world-wide, royalty-free, non- -exclusive license, subject to third party intellectual property claims: - -(a) under intellectual property rights (other than patent or trademark) -Licensable by Initial Developer to use, reproduce, modify, display, perform, -sublicense and distribute the Original Code (or portions thereof) with or -without Modifications, and/or as part of a Larger Work; and - -(b) under Patents Claims infringed by the making, using or selling of Original -Code, to make, have made, use, practice, sell, and offer for sale, and/or -otherwise dispose of the Original Code (or portions thereof). - -(c) the licenses granted in this Section 2.1(a) and (b) are effective on the -date Initial Developer first distributes Original Code under the terms of this -License. - -(d) Notwithstanding Section 2.1(b) above, no patent license is granted: 1) for -code that You delete from the Original Code; 2) separate from the Original -Code; or 3) for infringements caused by: i) the modification of the Original -Code or ii) the combination of the Original Code with other software or -devices. - -2.2 Contributor Grant. - -Subject to third party intellectual property claims, each Contributor hereby -grants You a world-wide, royalty-free, non-exclusive license - -(a) under intellectual property rights (other than patent or trademark) -Licensable by Contributor, to use, reproduce, modify, display, perform, -sublicense and distribute the Modifications created by such Contributor (or -portions thereof) either on an unmodified basis, with other Modifications, as -Covered Code and/or as part of a Larger Work; and - -(b) under Patent Claims infringed by the making, using, or selling of -Modifications made by that Contributor either alone and/or in combination with -its Contributor Version (or portions of such combination), to make, use, sell, -offer for sale, have made, and/or otherwise dispose of: 1) Modifications made -by that Contributor (or portions thereof); and 2) the combination of -Modifications made by that Contributor with its Contributor Version (or -portions of such combination). - -(c) the licenses granted in Sections 2.2(a) and 2.2(b) are effective on the -date Contributor first makes Commercial Use of the Covered Code. - -(d) Notwithstanding Section 2.2(b) above, no patent license is granted: 1) for -any code that Contributor has deleted from the Contributor Version; 2) -separate from the Contributor Version; 3) for infringements caused by: i) -third party modifications of Contributor Version or ii) the combination of -Modifications made by that Contributor with other software (except as part of -the Contributor Version) or other devices; or 4) under Patent Claims infringed -by Covered Code in the absence of Modifications made by that Contributor. - -3. Distribution Obligations. - -3.1 Application of License. - -The Modifications which You create or to which You contribute are governed by -the terms of this License, including without limitation Section 2.2. The -Source Code version of Covered Code may be distributed only under the terms of -this License or a future version of this License released under Section 6.1, -and You must include a copy of this License with every copy of the Source Code -You distribute. You may not offer or impose any terms on any Source Code -version that alters or restricts the applicable version of this License or the -recipients’ rights hereunder. However, You may include an additional document -offering the additional rights described in Section 3.5. - -3.2 Availability of Source Code. - -Any Modification which You create or to which You contribute must be made -available in Source Code form under the terms of this License either on the -same media as an Executable version or via an accepted Electronic Distribution -Mechanism to anyone to whom you made an Executable version available; and if -made available via Electronic Distribution Mechanism, must remain available -for at least twelve (12) months after the date it initially became available, -or at least six (6) months after a subsequent version of that particular -Modification has been made available to such recipients. You are responsible -for ensuring that the Source Code version remains available even if the -Electronic Distribution Mechanism is maintained by a third party. - -3.3 Description of Modifications. - -You must cause all Covered Code to which You contribute to contain a file -documenting the changes You made to create that Covered Code and the date of -any change. You must include a prominent statement that the Modification is -derived, directly or indirectly, from Original Code provided by the Initial -Developer and including the name of the Initial Developer in (a) the Source -Code, and (b) in any notice in an Executable version or related documentation -in which You describe the origin or ownership of the Covered Code. - -3.4 Intellectual Property Matters - -(a) Third Party Claims. If Contributor has knowledge that a license under a -third party’s intellectual property rights is required to exercise the rights -granted by such Contributor under Sections 2.1 or 2.2, Contributor must -include a text file with the Source Code distribution titled “LEGAL” which -describes the claim and the party making the claim in sufficient detail that a -recipient will know whom to contact. If Contributor obtains such knowledge -after the Modification is made available as described in Section 3.2, -Contributor shall promptly modify the LEGAL file in all copies Contributor -makes available thereafter and shall take other steps (such as notifying -appropriate mailing lists or newsgroups) reasonably calculated to inform those -who received the Covered Code that new knowledge has been obtained. - -(b) Contributor APIs. If Contributor’s Modifications include an application -programming interface and Contributor has knowledge of patent licenses which -are reasonably necessary to implement that API, Contributor must also include -this information in the LEGAL file. - -(c) Representations. Contributor represents that, except as disclosed pursuant -to Section 3.4(a) above, Contributor believes that Contributor’s Modifications -are Contributor’s original creation(s) and/or Contributor has sufficient -rights to grant the rights conveyed by this License. - -3.5 Required Notices. - -You must duplicate the notice in Exhibit A in each file of the Source Code. If -it is not possible to put such notice in a particular Source Code file due to -its structure, then You must include such notice in a location (such as a -relevant directory) where a user would be likely to look for such a notice. If -You created one or more Modification(s) You may add your name as a Contributor -to the notice described in Exhibit A. You must also duplicate this License in -any documentation for the Source Code where You describe recipients’ rights or -ownership rights relating to Covered Code. You may choose to offer, and to -charge a fee for, warranty, support, indemnity or liability obligations to one -or more recipients of Covered Code. However, You may do so only on Your own -behalf, and not on behalf of the Initial Developer or any Contributor. You -must make it absolutely clear than any such warranty, support, indemnity or -liability obligation is offered by You alone, and You hereby agree to -indemnify the Initial Developer and every Contributor for any liability -incurred by the Initial Developer or such Contributor as a result of warranty, -support, indemnity or liability terms You offer. - -3.6 Distribution of Executable Versions. - -You may distribute Covered Code in Executable form only if the requirements of -Section 3.1-3.5 have been met for that Covered Code, and if You include a -notice stating that the Source Code version of the Covered Code is available -under the terms of this License, including a description of how and where You -have fulfilled the obligations of Section 3.2. The notice must be -conspicuously included in any notice in an Executable version, related -documentation or collateral in which You describe recipients’ rights relating -to the Covered Code. You may distribute the Executable version of Covered Code -or ownership rights under a license of Your choice, which may contain terms -different from this License, provided that You are in compliance with the -terms of this License and that the license for the Executable version does not -attempt to limit or alter the recipient’s rights in the Source Code version -from the rights set forth in this License. If You distribute the Executable -version under a different license You must make it absolutely clear that any -terms which differ from this License are offered by You alone, not by the -Initial Developer, Original Developer or any Contributor. You hereby agree to -indemnify the Initial Developer, Original Developer and every Contributor for -any liability incurred by the Initial Developer, Original Developer or such -Contributor as a result of any such terms You offer. - -3.7 Larger Works. - -You may create a Larger Work by combining Covered Code with other code not -governed by the terms of this License and distribute the Larger Work as a -single product. In such a case, You must make sure the requirements of this -License are fulfilled for the Covered Code. - -4. Inability to Comply Due to Statute or Regulation. -If it is impossible for You to comply with any of the terms of this License -with respect to some or all of the Covered Code due to statute, judicial -order, or regulation then You must: (a) comply with the terms of this License -to the maximum extent possible; and (b) describe the limitations and the code -they affect. Such description must be included in the LEGAL file described in -Section 3.4 and must be included with all distributions of the Source Code. -Except to the extent prohibited by statute or regulation, such description -must be sufficiently detailed for a recipient of ordinary skill to be able to -understand it. - -5. Application of this License. -This License applies to code to which the Initial Developer has attached the -notice in Exhibit A and to related Covered Code. - -6. Versions of the License. - -6.1 New Versions. - -Socialtext, Inc. (“Socialtext”) may publish revised and/or new versions of the -License from time to time. Each version will be given a distinguishing version -number. - -6.2 Effect of New Versions. - -Once Covered Code has been published under a particular version of the -License, You may always continue to use it under the terms of that version. -You may also choose to use such Covered Code under the terms of any subsequent -version of the License published by Socialtext. No one other than Socialtext -has the right to modify the terms applicable to Covered Code created under -this License. - -6.3 Derivative Works. - -If You create or use a modified version of this License (which you may only do -in order to apply it to code which is not already Covered Code governed by -this License), You must (a) rename Your license so that the phrases -“Socialtext”, “CPAL” or any confusingly similar phrase do not appear in your -license (except to note that your license differs from this License) and (b) -otherwise make it clear that Your version of the license contains terms which -differ from the CPAL. (Filling in the name of the Initial Developer, Original -Developer, Original Code or Contributor in the notice described in Exhibit A -shall not of themselves be deemed to be modifications of this License.) - -7. DISCLAIMER OF WARRANTY. -COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN “AS IS” BASIS, WITHOUT -WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT -LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, -FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE -QUALITY AND PERFORMANCE OF THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED -CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER, ORIGINAL -DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY -SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN -ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED -HEREUNDER EXCEPT UNDER THIS DISCLAIMER. - -8. TERMINATION. - -8.1 This License and the rights granted hereunder will terminate automatically -if You fail to comply with terms herein and fail to cure such breach within 30 -days of becoming aware of the breach. All sublicenses to the Covered Code -which are properly granted shall survive any termination of this License. -Provisions which, by their nature, must remain in effect beyond the -termination of this License shall survive. - -8.2 If You initiate litigation by asserting a patent infringement claim -(excluding declatory judgment actions) against Initial Developer, Original -Developer or a Contributor (the Initial Developer, Original Developer or -Contributor against whom You file such action is referred to as “Participant”) -alleging that: - -(a) such Participant’s Contributor Version directly or indirectly infringes -any patent, then any and all rights granted by such Participant to You under -Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from -Participant terminate prospectively, unless if within 60 days after receipt of -notice You either: (i) agree in writing to pay Participant a mutually -agreeable reasonable royalty for Your past and future use of Modifications -made by such Participant, or (ii) withdraw Your litigation claim with respect -to the Contributor Version against such Participant. If within 60 days of -notice, a reasonable royalty and payment arrangement are not mutually agreed -upon in writing by the parties or the litigation claim is not withdrawn, the -rights granted by Participant to You under Sections 2.1 and/or 2.2 -automatically terminate at the expiration of the 60 day notice period -specified above. - -(b) any software, hardware, or device, other than such Participant’s -Contributor Version, directly or indirectly infringes any patent, then any -rights granted to You by such Participant under Sections 2.1(b) and 2.2(b) are -revoked effective as of the date You first made, used, sold, distributed, or -had made, Modifications made by that Participant. - -8.3 If You assert a patent infringement claim against Participant alleging -that such Participant’s Contributor Version directly or indirectly infringes -any patent where such claim is resolved (such as by license or settlement) -prior to the initiation of patent infringement litigation, then the reasonable -value of the licenses granted by such Participant under Sections 2.1 or 2.2 -shall be taken into account in determining the amount or value of any payment -or license. - -8.4 In the event of termination under Sections 8.1 or 8.2 above, all end user -license agreements (excluding distributors and resellers) which have been -validly granted by You or any distributor hereunder prior to termination shall -survive termination. - -9. LIMITATION OF LIABILITY. -UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING -NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, -ORIGINAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, -OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY -INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER -INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, -COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR -LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH -DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH -OR PERSONAL INJURY RESULTING FROM SUCH PARTY’S NEGLIGENCE TO THE EXTENT -APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE -EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS -EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. - -10. U.S. GOVERNMENT END USERS. -The Covered Code is a “commercial item,” as that term is defined in 48 C.F.R. -2.101 (Oct. 1995), consisting of “commercial computer software” and -“commercial computer software documentation,” as such terms are used in 48 -C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. -227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users -acquire Covered Code with only those rights set forth herein. - -11. MISCELLANEOUS. -This License represents the complete agreement concerning subject matter -hereof. If any provision of this License is held to be unenforceable, such -provision shall be reformed only to the extent necessary to make it -enforceable. This License shall be governed by California law provisions -(except to the extent applicable law, if any, provides otherwise), excluding -its conflict-of-law provisions. With respect to disputes in which at least one -party is a citizen of, or an entity chartered or registered to do business in -the United States of America, any litigation relating to this License shall be -subject to the jurisdiction of the Federal Courts of the Northern District of -California, with venue lying in Santa Clara County, California, with the -losing party responsible for costs, including without limitation, court costs -and reasonable attorneys’ fees and expenses. The application of the United -Nations Convention on Contracts for the International Sale of Goods is -expressly excluded. Any law or regulation which provides that the language of -a contract shall be construed against the drafter shall not apply to this -License. - -12. RESPONSIBILITY FOR CLAIMS. -As between Initial Developer, Original Developer and the Contributors, each -party is responsible for claims and damages arising, directly or indirectly, -out of its utilization of rights under this License and You agree to work with -Initial Developer, Original Developer and Contributors to distribute such -responsibility on an equitable basis. Nothing herein is intended or shall be -deemed to constitute any admission of liability. - -13. MULTIPLE-LICENSED CODE. -Initial Developer may designate portions of the Covered Code as Multiple- -Licensed. Multiple-Licensed means that the Initial Developer permits you to -utilize portions of the Covered Code under Your choice of the CPAL or the -alternative licenses, if any, specified by the Initial Developer in the file -described in Exhibit A. - -14. ADDITIONAL TERM: ATTRIBUTION - -(a) As a modest attribution to the organizer of the development of the -Original Code (“Original Developer”), in the hope that its promotional value -may help justify the time, money and effort invested in writing the Original -Code, the Original Developer may include in Exhibit B (“Attribution -Information”) a requirement that each time an Executable and Source Code or a -Larger Work is launched or initially run (which includes initiating a -session), a prominent display of the Original Developer’s Attribution -Information (as defined below) must occur on the graphic user interface -employed by the end user to access such Covered Code (which may include -display on a splash screen), if any. The size of the graphic image should be -consistent with the size of the other elements of the Attribution Information. -If the access by the end user to the Executable and Source Code does not -create a graphic user interface for access to the Covered Code, this -obligation shall not apply. If the Original Code displays such Attribution -Information in a particular form (such as in the form of a splash screen, -notice at login, an “about” display, or dedicated attribution area on user -interface screens), continued use of such form for that Attribution -Information is one way of meeting this requirement for notice. - -(b) Attribution information may only include a copyright notice, a brief -phrase, graphic image and a URL (“Attribution Information”) and is subject to -the Attribution Limits as defined below. For these purposes, prominent shall -mean display for sufficient duration to give reasonable notice to the user of -the identity of the Original Developer and that if You include Attribution -Information or similar information for other parties, You must ensure that the -Attribution Information for the Original Developer shall be no less prominent -than such Attribution Information or similar information for the other party. -For greater certainty, the Original Developer may choose to specify in Exhibit -B below that the above attribution requirement only applies to an Executable -and Source Code resulting from the Original Code or any Modification, but not -a Larger Work. The intent is to provide for reasonably modest attribution, -therefore the Original Developer cannot require that You display, at any time, -more than the following information as Attribution Information: (a) a -copyright notice including the name of the Original Developer; (b) a word or -one phrase (not exceeding 10 words); (c) one graphic image provided by the -Original Developer; and (d) a URL (collectively, the “Attribution Limits”). - -(c) If Exhibit B does not include any Attribution Information, then there are -no requirements for You to display any Attribution Information of the Original -Developer. - -(d) You acknowledge that all trademarks, service marks and/or trade names -contained within the Attribution Information distributed with the Covered Code -are the exclusive property of their owners and may only be used with the -permission of their owners, or under circumstances otherwise permitted by law -or as expressly set out in this License. - -15. ADDITIONAL TERM: NETWORK USE. -The term “External Deployment” means the use, distribution, or communication -of the Original Code or Modifications in any way such that the Original Code -or Modifications may be used by anyone other than You, whether those works are -distributed or communicated to those persons or made available as an -application intended for use over a network. As an express condition for the -grants of license hereunder, You must treat any External Deployment by You of -the Original Code or Modifications as a distribution under section 3.1 and -make Source Code available under Section 3.2. - -EXHIBIT A. Common Public Attribution License Version 1.0. - -“The contents of this file are subject to the Common Public Attribution -License Version 1.0 (the “License”); you may not use this file except in -compliance with the License. You may obtain a copy of the License at -_____________. The License is based on the Mozilla Public License Version 1.1 -but Sections 14 and 15 have been added to cover use of software over a -computer network and provide for limited attribution for the Original -Developer. In addition, Exhibit A has been modified to be consistent with -Exhibit B. - -Software distributed under the License is distributed on an “AS IS” basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for -the specific language governing rights and limitations under the License. - -The Original Code is______________________. - -The Original Developer is not the Initial Developer and is __________. If left -blank, the Original Developer is the Initial Developer. - -The Initial Developer of the Original Code is ____________. All portions of -the code written by ___________ are Copyright (c) _____. All Rights Reserved. - -Contributor ______________________. - -Alternatively, the contents of this file may be used under the terms of the -_____ license (the [___] License), in which case the provisions of [______] -License are applicable instead of those above. - -If you wish to allow use of your version of this file only under the terms of -the [____] License and not to allow others to use your version of this file -under the CPAL, indicate your decision by deleting the provisions above and -replace them with the notice and other provisions required by the [___] -License. If you do not delete the provisions above, a recipient may use your -version of this file under either the CPAL or the [___] License.” - -[NOTE: The text of this Exhibit A may differ slightly from the text of the -notices in the Source Code files of the Original Code. You should use the text -of this Exhibit A rather than the text found in the Original Code Source Code -for Your Modifications.] - -EXHIBIT B. Attribution Information - -Attribution Copyright Notice: _______________________ - -Attribution Phrase (not exceeding 10 words): _______________________ - -Attribution URL: _______________________ - -Graphic Image as provided in the Covered Code, if any. - -Display of Attribution Information is [required/not required] in Larger Works -which are defined in the CPAL as a work which combines Covered Code or -portions thereof with code not governed by the terms of the CPAL. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/CPL-1.0.txt b/vendor/github.com/google/licenseclassifier/licenses/CPL-1.0.txt deleted file mode 100644 index 5c57512..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/CPL-1.0.txt +++ /dev/null @@ -1,220 +0,0 @@ -Common Public License Version 1.0 - -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC -LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM -CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. - -1. DEFINITIONS - -"Contribution" means: - -a) in the case of the initial Contributor, the initial code and documentation -distributed under this Agreement, and - -b) in the case of each subsequent Contributor: - -i) changes to the Program, and - -ii) additions to the Program; - -where such changes and/or additions to the Program originate from and are -distributed by that particular Contributor. A Contribution -'originates' from a Contributor if it was added to the Program by -such Contributor itself or anyone acting on such Contributor's behalf. -Contributions do not include additions to the Program which: (i) are separate -modules of software distributed in conjunction with the Program under their -own license agreement, and (ii) are not derivative works of the Program. - -"Contributor" means any person or entity that distributes the Program. - -"Licensed Patents " mean patent claims licensable by a Contributor which are -necessarily infringed by the use or sale of its Contribution alone or when -combined with the Program. - -"Program" means the Contributions distributed in accordance with this -Agreement. - -"Recipient" means anyone who receives the Program under this Agreement, -including all Contributors. - -2. GRANT OF RIGHTS - -a) Subject to the terms of this Agreement, each Contributor hereby grants -Recipient a non-exclusive, worldwide, royalty-free copyright license to -reproduce, prepare derivative works of, publicly display, publicly perform, -distribute and sublicense the Contribution of such Contributor, if any, and -such derivative works, in source code and object code form. - -b) Subject to the terms of this Agreement, each Contributor hereby grants -Recipient a non-exclusive, worldwide, royalty-free patent license under -Licensed Patents to make, use, sell, offer to sell, import and otherwise -transfer the Contribution of such Contributor, if any, in source code and -object code form. This patent license shall apply to the combination of the -Contribution and the Program if, at the time the Contribution is added by the -Contributor, such addition of the Contribution causes such combination to be -covered by the Licensed Patents. The patent license shall not apply to any -other combinations which include the Contribution. No hardware per se is -licensed hereunder. - -c) Recipient understands that although each Contributor grants the licenses to -its Contributions set forth herein, no assurances are provided by any -Contributor that the Program does not infringe the patent or other -intellectual property rights of any other entity. Each Contributor disclaims -any liability to Recipient for claims brought by any other entity based on -infringement of intellectual property rights or otherwise. As a condition to -exercising the rights and licenses granted hereunder, each Recipient hereby -assumes sole responsibility to secure any other intellectual property rights -needed, if any. For example, if a third party patent license is required to -allow Recipient to distribute the Program, it is Recipient's -responsibility to acquire that license before distributing the Program. - -d) Each Contributor represents that to its knowledge it has sufficient -copyright rights in its Contribution, if any, to grant the copyright license -set forth in this Agreement. - -3. REQUIREMENTS - -A Contributor may choose to distribute the Program in object code form under -its own license agreement, provided that: - -a) it complies with the terms and conditions of this Agreement; and - -b) its license agreement: - -i) effectively disclaims on behalf of all Contributors all warranties and -conditions, express and implied, including warranties or conditions of title -and non-infringement, and implied warranties or conditions of merchantability -and fitness for a particular purpose; - -ii) effectively excludes on behalf of all Contributors all liability for -damages, including direct, indirect, special, incidental and consequential -damages, such as lost profits; - -iii) states that any provisions which differ from this Agreement are offered -by that Contributor alone and not by any other party; and - -iv) states that source code for the Program is available from such -Contributor, and informs licensees how to obtain it in a reasonable manner on -or through a medium customarily used for software exchange. - -When the Program is made available in source code form: - -a) it must be made available under this Agreement; and - -b) a copy of this Agreement must be included with each copy of the Program. - -Contributors may not remove or alter any copyright notices contained within -the Program. - -Each Contributor must identify itself as the originator of its Contribution, -if any, in a manner that reasonably allows subsequent Recipients to identify -the originator of the Contribution. - -4. COMMERCIAL DISTRIBUTION - -Commercial distributors of software may accept certain responsibilities with -respect to end users, business partners and the like. While this license is -intended to facilitate the commercial use of the Program, the Contributor who -includes the Program in a commercial product offering should do so in a manner -which does not create potential liability for other Contributors. Therefore, -if a Contributor includes the Program in a commercial product offering, such -Contributor ("Commercial Contributor") hereby agrees to defend and indemnify -every other Contributor ("Indemnified Contributor") against any losses, -damages and costs (collectively "Losses") arising from claims, lawsuits and -other legal actions brought by a third party against the Indemnified -Contributor to the extent caused by the acts or omissions of such Commercial -Contributor in connection with its distribution of the Program in a commercial -product offering. The obligations in this section do not apply to any claims -or Losses relating to any actual or alleged intellectual property -infringement. In order to qualify, an Indemnified Contributor must: a) -promptly notify the Commercial Contributor in writing of such claim, and b) -allow the Commercial Contributor to control, and cooperate with the Commercial -Contributor in, the defense and any related settlement negotiations. The -Indemnified Contributor may participate in any such claim at its own expense. - -For example, a Contributor might include the Program in a commercial product -offering, Product X. That Contributor is then a Commercial Contributor. If -that Commercial Contributor then makes performance claims, or offers -warranties related to Product X, those performance claims and warranties are -such Commercial Contributor's responsibility alone. Under this section, -the Commercial Contributor would have to defend claims against the other -Contributors related to those performance claims and warranties, and if a -court requires any other Contributor to pay any damages as a result, the -Commercial Contributor must pay those damages. - -5. NO WARRANTY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR -IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, -NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each -Recipient is solely responsible for determining the appropriateness of using -and distributing the Program and assumes all risks associated with its -exercise of rights under this Agreement, including but not limited to the -risks and costs of program errors, compliance with applicable laws, damage to -or loss of data, programs or equipment, and unavailability or interruption of -operations. - -6. DISCLAIMER OF LIABILITY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY -CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION -LOST PROFITS), 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 OR DISTRIBUTION OF THE PROGRAM OR THE -EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY -OF SUCH DAMAGES. - -7. GENERAL - -If any provision of this Agreement is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this Agreement, and without further action by the -parties hereto, such provision shall be reformed to the minimum extent -necessary to make such provision valid and enforceable. - -If Recipient institutes patent litigation against a Contributor with respect -to a patent applicable to software (including a cross-claim or counterclaim in -a lawsuit), then any patent licenses granted by that Contributor to such -Recipient under this Agreement shall terminate as of the date such litigation -is filed. In addition, if Recipient institutes patent litigation against any -entity (including a cross-claim or counterclaim in a lawsuit) alleging that -the Program itself (excluding combinations of the Program with other software -or hardware) infringes such Recipient's patent(s), then such -Recipient's rights granted under Section 2(b) shall terminate as of the -date such litigation is filed. - -All Recipient's rights under this Agreement shall terminate if it fails -to comply with any of the material terms or conditions of this Agreement and -does not cure such failure in a reasonable period of time after becoming aware -of such noncompliance. If all Recipient's rights under this Agreement -terminate, Recipient agrees to cease use and distribution of the Program as -soon as reasonably practicable. However, Recipient's obligations under -this Agreement and any licenses granted by Recipient relating to the Program -shall continue and survive. - -Everyone is permitted to copy and distribute copies of this Agreement, but in -order to avoid inconsistency the Agreement is copyrighted and may only be -modified in the following manner. The Agreement Steward reserves the right to -publish new versions (including revisions) of this Agreement from time to -time. No one other than the Agreement Steward has the right to modify this -Agreement. IBM is the initial Agreement Steward. IBM may assign the -responsibility to serve as the Agreement Steward to a suitable separate -entity. Each new version of the Agreement will be given a distinguishing -version number. The Program (including Contributions) may always be -distributed subject to the version of the Agreement under which it was -received. In addition, after a new version of the Agreement is published, -Contributor may elect to distribute the Program (including its Contributions) -under the new version. Except as expressly stated in Sections 2(a) and 2(b) -above, Recipient receives no rights or licenses to the intellectual property -of any Contributor under this Agreement, whether expressly, by implication, -estoppel or otherwise. All rights in the Program not expressly granted under -this Agreement are reserved. - -This Agreement is governed by the laws of the State of New York and the -intellectual property laws of the United States of America. No party to this -Agreement will bring a legal action under this Agreement more than one year -after the cause of action arose. Each party waives its rights to a jury trial -in any resulting litigation. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/Commons-Clause.txt b/vendor/github.com/google/licenseclassifier/licenses/Commons-Clause.txt deleted file mode 100644 index 85097f8..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/Commons-Clause.txt +++ /dev/null @@ -1,13 +0,0 @@ -Commons Clause Restriction - -The Software is provided to you by the Licensor under the License, as defined below, subject to -the following condition. - -Without limiting other conditions in the License, the grant of rights under the License will not -include, and the License does not grant to you, the right to Sell the Software. -For purposes of the foregoing, “Sell” means practicing any or all of the rights granted to you -under the License to provide to third parties, for a fee or other consideration (including without -limitation fees for hosting or consulting/ support services related to the Software), a product or -service whose value derives, entirely or substantially, from the functionality of the Software. -Any license notice or attribution required by the License must also include this Commons Cause -License Condition notice. diff --git a/vendor/github.com/google/licenseclassifier/licenses/EPL-1.0.txt b/vendor/github.com/google/licenseclassifier/licenses/EPL-1.0.txt deleted file mode 100644 index 8e63ab9..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/EPL-1.0.txt +++ /dev/null @@ -1,212 +0,0 @@ -Eclipse Public License - v 1.0 - -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC -LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM -CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. - -1. DEFINITIONS - -"Contribution" means: - -a) in the case of the initial Contributor, the initial code and documentation -distributed under this Agreement, and - -b) in the case of each subsequent Contributor: - -i) changes to the Program, and - -ii) additions to the Program; - -where such changes and/or additions to the Program originate from and are -distributed by that particular Contributor. A Contribution -'originates' from a Contributor if it was added to the Program by -such Contributor itself or anyone acting on such Contributor's behalf. -Contributions do not include additions to the Program which: (i) are separate -modules of software distributed in conjunction with the Program under their -own license agreement, and (ii) are not derivative works of the Program. - -"Contributor" means any person or entity that distributes the Program. - -"Licensed Patents" mean patent claims licensable by a Contributor which are -necessarily infringed by the use or sale of its Contribution alone or when -combined with the Program. - -"Program" means the Contributions distributed in accordance with this -Agreement. - -"Recipient" means anyone who receives the Program under this Agreement, -including all Contributors. - -2. GRANT OF RIGHTS - -a) Subject to the terms of this Agreement, each Contributor hereby grants -Recipient a non-exclusive, worldwide, royalty-free copyright license to -reproduce, prepare derivative works of, publicly display, publicly perform, -distribute and sublicense the Contribution of such Contributor, if any, and -such derivative works, in source code and object code form. - -b) Subject to the terms of this Agreement, each Contributor hereby grants -Recipient a non-exclusive, worldwide, royalty-free patent license under -Licensed Patents to make, use, sell, offer to sell, import and otherwise -transfer the Contribution of such Contributor, if any, in source code and -object code form. This patent license shall apply to the combination of the -Contribution and the Program if, at the time the Contribution is added by the -Contributor, such addition of the Contribution causes such combination to be -covered by the Licensed Patents. The patent license shall not apply to any -other combinations which include the Contribution. No hardware per se is -licensed hereunder. - -c) Recipient understands that although each Contributor grants the licenses to -its Contributions set forth herein, no assurances are provided by any -Contributor that the Program does not infringe the patent or other -intellectual property rights of any other entity. Each Contributor disclaims -any liability to Recipient for claims brought by any other entity based on -infringement of intellectual property rights or otherwise. As a condition to -exercising the rights and licenses granted hereunder, each Recipient hereby -assumes sole responsibility to secure any other intellectual property rights -needed, if any. For example, if a third party patent license is required to -allow Recipient to distribute the Program, it is Recipient's -responsibility to acquire that license before distributing the Program. - -d) Each Contributor represents that to its knowledge it has sufficient -copyright rights in its Contribution, if any, to grant the copyright license -set forth in this Agreement. - -3. REQUIREMENTS -A Contributor may choose to distribute the Program in object code form under -its own license agreement, provided that: - -a) it complies with the terms and conditions of this Agreement; and - -b) its license agreement: - -i) effectively disclaims on behalf of all Contributors all warranties and -conditions, express and implied, including warranties or conditions of title -and non-infringement, and implied warranties or conditions of merchantability -and fitness for a particular purpose; - -ii) effectively excludes on behalf of all Contributors all liability for -damages, including direct, indirect, special, incidental and consequential -damages, such as lost profits; - -iii) states that any provisions which differ from this Agreement are offered -by that Contributor alone and not by any other party; and - -iv) states that source code for the Program is available from such -Contributor, and informs licensees how to obtain it in a reasonable manner on -or through a medium customarily used for software exchange. - -When the Program is made available in source code form: - -a) it must be made available under this Agreement; and - -b) a copy of this Agreement must be included with each copy of the Program. - -Contributors may not remove or alter any copyright notices contained within -the Program. - -Each Contributor must identify itself as the originator of its Contribution, -if any, in a manner that reasonably allows subsequent Recipients to identify -the originator of the Contribution. - -4. COMMERCIAL DISTRIBUTION -Commercial distributors of software may accept certain responsibilities with -respect to end users, business partners and the like. While this license is -intended to facilitate the commercial use of the Program, the Contributor who -includes the Program in a commercial product offering should do so in a manner -which does not create potential liability for other Contributors. Therefore, -if a Contributor includes the Program in a commercial product offering, such -Contributor ("Commercial Contributor") hereby agrees to defend and indemnify -every other Contributor ("Indemnified Contributor") against any losses, -damages and costs (collectively "Losses") arising from claims, lawsuits and -other legal actions brought by a third party against the Indemnified -Contributor to the extent caused by the acts or omissions of such Commercial -Contributor in connection with its distribution of the Program in a commercial -product offering. The obligations in this section do not apply to any claims -or Losses relating to any actual or alleged intellectual property -infringement. In order to qualify, an Indemnified Contributor must: a) -promptly notify the Commercial Contributor in writing of such claim, and b) -allow the Commercial Contributor to control, and cooperate with the Commercial -Contributor in, the defense and any related settlement negotiations. The -Indemnified Contributor may participate in any such claim at its own expense. - -For example, a Contributor might include the Program in a commercial product -offering, Product X. That Contributor is then a Commercial Contributor. If -that Commercial Contributor then makes performance claims, or offers -warranties related to Product X, those performance claims and warranties are -such Commercial Contributor's responsibility alone. Under this section, -the Commercial Contributor would have to defend claims against the other -Contributors related to those performance claims and warranties, and if a -court requires any other Contributor to pay any damages as a result, the -Commercial Contributor must pay those damages. - -5. NO WARRANTY -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR -IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, -NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each -Recipient is solely responsible for determining the appropriateness of using -and distributing the Program and assumes all risks associated with its -exercise of rights under this Agreement , including but not limited to the -risks and costs of program errors, compliance with applicable laws, damage to -or loss of data, programs or equipment, and unavailability or interruption of -operations. - -6. DISCLAIMER OF LIABILITY -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY -CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION -LOST PROFITS), 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 OR DISTRIBUTION OF THE PROGRAM OR THE -EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY -OF SUCH DAMAGES. - -7. GENERAL - -If any provision of this Agreement is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this Agreement, and without further action by the -parties hereto, such provision shall be reformed to the minimum extent -necessary to make such provision valid and enforceable. - -If Recipient institutes patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Program itself -(excluding combinations of the Program with other software or hardware) -infringes such Recipient's patent(s), then such Recipient's rights -granted under Section 2(b) shall terminate as of the date such litigation is -filed. - -All Recipient's rights under this Agreement shall terminate if it fails -to comply with any of the material terms or conditions of this Agreement and -does not cure such failure in a reasonable period of time after becoming aware -of such noncompliance. If all Recipient's rights under this Agreement -terminate, Recipient agrees to cease use and distribution of the Program as -soon as reasonably practicable. However, Recipient's obligations under -this Agreement and any licenses granted by Recipient relating to the Program -shall continue and survive. - -Everyone is permitted to copy and distribute copies of this Agreement, but in -order to avoid inconsistency the Agreement is copyrighted and may only be -modified in the following manner. The Agreement Steward reserves the right to -publish new versions (including revisions) of this Agreement from time to -time. No one other than the Agreement Steward has the right to modify this -Agreement. The Eclipse Foundation is the initial Agreement Steward. The -Eclipse Foundation may assign the responsibility to serve as the Agreement -Steward to a suitable separate entity. Each new version of the Agreement will -be given a distinguishing version number. The Program (including -Contributions) may always be distributed subject to the version of the -Agreement under which it was received. In addition, after a new version of the -Agreement is published, Contributor may elect to distribute the Program -(including its Contributions) under the new version. Except as expressly -stated in Sections 2(a) and 2(b) above, Recipient receives no rights or -licenses to the intellectual property of any Contributor under this Agreement, -whether expressly, by implication, estoppel or otherwise. All rights in the -Program not expressly granted under this Agreement are reserved. - -This Agreement is governed by the laws of the State of New York and the -intellectual property laws of the United States of America. No party to this -Agreement will bring a legal action under this Agreement more than one year -after the cause of action arose. Each party waives its rights to a jury trial -in any resulting litigation. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/EPL-2.0.txt b/vendor/github.com/google/licenseclassifier/licenses/EPL-2.0.txt deleted file mode 100644 index e48e096..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/EPL-2.0.txt +++ /dev/null @@ -1,277 +0,0 @@ -Eclipse Public License - v 2.0 - - THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE - PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION - OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. - -1. DEFINITIONS - -"Contribution" means: - - a) in the case of the initial Contributor, the initial content - Distributed under this Agreement, and - - b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; - where such changes and/or additions to the Program originate from - and are Distributed by that particular Contributor. A Contribution - "originates" from a Contributor if it was added to the Program by - such Contributor itself or anyone acting on such Contributor's behalf. - Contributions do not include changes or additions to the Program that - are not Modified Works. - -"Contributor" means any person or entity that Distributes the Program. - -"Licensed Patents" mean patent claims licensable by a Contributor which -are necessarily infringed by the use or sale of its Contribution alone -or when combined with the Program. - -"Program" means the Contributions Distributed in accordance with this -Agreement. - -"Recipient" means anyone who receives the Program under this Agreement -or any Secondary License (as applicable), including Contributors. - -"Derivative Works" shall mean any work, whether in Source Code or other -form, that is based on (or derived from) the Program and for which the -editorial revisions, annotations, elaborations, or other modifications -represent, as a whole, an original work of authorship. - -"Modified Works" shall mean any work in Source Code or other form that -results from an addition to, deletion from, or modification of the -contents of the Program, including, for purposes of clarity any new file -in Source Code form that contains any contents of the Program. Modified -Works shall not include works that contain only declarations, -interfaces, types, classes, structures, or files of the Program solely -in each case in order to link to, bind by name, or subclass the Program -or Modified Works thereof. - -"Distribute" means the acts of a) distributing or b) making available -in any manner that enables the transfer of a copy. - -"Source Code" means the form of a Program preferred for making -modifications, including but not limited to software source code, -documentation source, and configuration files. - -"Secondary License" means either the GNU General Public License, -Version 2.0, or any later versions of that license, including any -exceptions or additional permissions as identified by the initial -Contributor. - -2. GRANT OF RIGHTS - - a) Subject to the terms of this Agreement, each Contributor hereby - grants Recipient a non-exclusive, worldwide, royalty-free copyright - license to reproduce, prepare Derivative Works of, publicly display, - publicly perform, Distribute and sublicense the Contribution of such - Contributor, if any, and such Derivative Works. - - b) Subject to the terms of this Agreement, each Contributor hereby - grants Recipient a non-exclusive, worldwide, royalty-free patent - license under Licensed Patents to make, use, sell, offer to sell, - import and otherwise transfer the Contribution of such Contributor, - if any, in Source Code or other form. This patent license shall - apply to the combination of the Contribution and the Program if, at - the time the Contribution is added by the Contributor, such addition - of the Contribution causes such combination to be covered by the - Licensed Patents. The patent license shall not apply to any other - combinations which include the Contribution. No hardware per se is - licensed hereunder. - - c) Recipient understands that although each Contributor grants the - licenses to its Contributions set forth herein, no assurances are - provided by any Contributor that the Program does not infringe the - patent or other intellectual property rights of any other entity. - Each Contributor disclaims any liability to Recipient for claims - brought by any other entity based on infringement of intellectual - property rights or otherwise. As a condition to exercising the - rights and licenses granted hereunder, each Recipient hereby - assumes sole responsibility to secure any other intellectual - property rights needed, if any. For example, if a third party - patent license is required to allow Recipient to Distribute the - Program, it is Recipient's responsibility to acquire that license - before distributing the Program. - - d) Each Contributor represents that to its knowledge it has - sufficient copyright rights in its Contribution, if any, to grant - the copyright license set forth in this Agreement. - - e) Notwithstanding the terms of any Secondary License, no - Contributor makes additional grants to any Recipient (other than - those set forth in this Agreement) as a result of such Recipient's - receipt of the Program under the terms of a Secondary License - (if permitted under the terms of Section 3). - -3. REQUIREMENTS - -3.1 If a Contributor Distributes the Program in any form, then: - - a) the Program must also be made available as Source Code, in - accordance with section 3.2, and the Contributor must accompany - the Program with a statement that the Source Code for the Program - is available under this Agreement, and informs Recipients how to - obtain it in a reasonable manner on or through a medium customarily - used for software exchange; and - - b) the Contributor may Distribute the Program under a license - different than this Agreement, provided that such license: - i) effectively disclaims on behalf of all other Contributors all - warranties and conditions, express and implied, including - warranties or conditions of title and non-infringement, and - implied warranties or conditions of merchantability and fitness - for a particular purpose; - - ii) effectively excludes on behalf of all other Contributors all - liability for damages, including direct, indirect, special, - incidental and consequential damages, such as lost profits; - - iii) does not attempt to limit or alter the recipients' rights - in the Source Code under section 3.2; and - - iv) requires any subsequent distribution of the Program by any - party to be under a license that satisfies the requirements - of this section 3. - -3.2 When the Program is Distributed as Source Code: - - a) it must be made available under this Agreement, or if the - Program (i) is combined with other material in a separate file or - files made available under a Secondary License, and (ii) the initial - Contributor attached to the Source Code the notice described in - Exhibit A of this Agreement, then the Program may be made available - under the terms of such Secondary Licenses, and - - b) a copy of this Agreement must be included with each copy of - the Program. - -3.3 Contributors may not remove or alter any copyright, patent, -trademark, attribution notices, disclaimers of warranty, or limitations -of liability ("notices") contained within the Program from any copy of -the Program which they Distribute, provided that Contributors may add -their own appropriate notices. - -4. COMMERCIAL DISTRIBUTION - -Commercial distributors of software may accept certain responsibilities -with respect to end users, business partners and the like. While this -license is intended to facilitate the commercial use of the Program, -the Contributor who includes the Program in a commercial product -offering should do so in a manner which does not create potential -liability for other Contributors. Therefore, if a Contributor includes -the Program in a commercial product offering, such Contributor -("Commercial Contributor") hereby agrees to defend and indemnify every -other Contributor ("Indemnified Contributor") against any losses, -damages and costs (collectively "Losses") arising from claims, lawsuits -and other legal actions brought by a third party against the Indemnified -Contributor to the extent caused by the acts or omissions of such -Commercial Contributor in connection with its distribution of the Program -in a commercial product offering. The obligations in this section do not -apply to any claims or Losses relating to any actual or alleged -intellectual property infringement. In order to qualify, an Indemnified -Contributor must: a) promptly notify the Commercial Contributor in -writing of such claim, and b) allow the Commercial Contributor to control, -and cooperate with the Commercial Contributor in, the defense and any -related settlement negotiations. The Indemnified Contributor may -participate in any such claim at its own expense. - -For example, a Contributor might include the Program in a commercial -product offering, Product X. That Contributor is then a Commercial -Contributor. If that Commercial Contributor then makes performance -claims, or offers warranties related to Product X, those performance -claims and warranties are such Commercial Contributor's responsibility -alone. Under this section, the Commercial Contributor would have to -defend claims against the other Contributors related to those performance -claims and warranties, and if a court requires any other Contributor to -pay any damages as a result, the Commercial Contributor must pay -those damages. - -5. NO WARRANTY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT -PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS" -BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR -IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF -TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR -PURPOSE. Each Recipient is solely responsible for determining the -appropriateness of using and distributing the Program and assumes all -risks associated with its exercise of rights under this Agreement, -including but not limited to the risks and costs of program errors, -compliance with applicable laws, damage to or loss of data, programs -or equipment, and unavailability or interruption of operations. - -6. DISCLAIMER OF LIABILITY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT -PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS -SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST -PROFITS), 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 OR DISTRIBUTION OF THE PROGRAM OR THE -EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - -7. GENERAL - -If any provision of this Agreement is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of -the remainder of the terms of this Agreement, and without further -action by the parties hereto, such provision shall be reformed to the -minimum extent necessary to make such provision valid and enforceable. - -If Recipient institutes patent litigation against any entity -(including a cross-claim or counterclaim in a lawsuit) alleging that the -Program itself (excluding combinations of the Program with other software -or hardware) infringes such Recipient's patent(s), then such Recipient's -rights granted under Section 2(b) shall terminate as of the date such -litigation is filed. - -All Recipient's rights under this Agreement shall terminate if it -fails to comply with any of the material terms or conditions of this -Agreement and does not cure such failure in a reasonable period of -time after becoming aware of such noncompliance. If all Recipient's -rights under this Agreement terminate, Recipient agrees to cease use -and distribution of the Program as soon as reasonably practicable. -However, Recipient's obligations under this Agreement and any licenses -granted by Recipient relating to the Program shall continue and survive. - -Everyone is permitted to copy and distribute copies of this Agreement, -but in order to avoid inconsistency the Agreement is copyrighted and -may only be modified in the following manner. The Agreement Steward -reserves the right to publish new versions (including revisions) of -this Agreement from time to time. No one other than the Agreement -Steward has the right to modify this Agreement. The Eclipse Foundation -is the initial Agreement Steward. The Eclipse Foundation may assign the -responsibility to serve as the Agreement Steward to a suitable separate -entity. Each new version of the Agreement will be given a distinguishing -version number. The Program (including Contributions) may always be -Distributed subject to the version of the Agreement under which it was -received. In addition, after a new version of the Agreement is published, -Contributor may elect to Distribute the Program (including its -Contributions) under the new version. - -Except as expressly stated in Sections 2(a) and 2(b) above, Recipient -receives no rights or licenses to the intellectual property of any -Contributor under this Agreement, whether expressly, by implication, -estoppel or otherwise. All rights in the Program not expressly granted -under this Agreement are reserved. Nothing in this Agreement is intended -to be enforceable by any entity that is not a Contributor or Recipient. -No third-party beneficiary rights are created under this Agreement. - -Exhibit A - Form of Secondary Licenses Notice - -"This Source Code may also be made available under the following -Secondary Licenses when the conditions for such availability set forth -in the Eclipse Public License, v. 2.0 are satisfied: {name license(s), -version(s), and exceptions or additional permissions here}." - - Simply including a copy of this Agreement, including this Exhibit A - is not sufficient to license the Source Code under Secondary Licenses. - - If it is not possible or desirable to put the notice in a particular - file, then You may include the notice in a location (such as a LICENSE - file in a relevant directory) where a recipient would be likely to - look for such a notice. - - You may add additional accurate notices of copyright ownership. diff --git a/vendor/github.com/google/licenseclassifier/licenses/EUPL-1.0.txt b/vendor/github.com/google/licenseclassifier/licenses/EUPL-1.0.txt deleted file mode 100644 index 5aed2d8..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/EUPL-1.0.txt +++ /dev/null @@ -1,284 +0,0 @@ -European Union Public Licence V.1.0 - -EUPL (c) the European Community 2007 - -This European Union Public Licence (the “EUPL”) applies to the Work or -Software (as defined below) which is provided under the terms of this Licence. -Any use of the Work, other than as authorised under this Licence is prohibited -(to the extent such use is covered by a right of the copyright holder of the -Work). - -The Original Work is provided under the terms of this Licence when the -Licensor (as defined below) has placed the following notice immediately -following the copyright notice for the Original Work: - -Licensed under the EUPL V.1.0 - -or has expressed by any other mean his willingness to license under the EUPL. - -1. Definitions - -In this Licence, the following terms have the following meaning: - -− The Licence: this Licence. - -− The Original Work or the Software: the software distributed and/or -communicated by the Licensor under this Licence, available as Source Code and -also as Executable Code as the case may be. - -− Derivative Works: the works or software that could be created by the -Licensee, based upon the Original Work or modifications thereof. This Licence -does not define the extent of modification or dependence on the Original Work -required in order to classify a work as a Derivative Work; this extent is -determined by copyright law applicable in the country mentioned in Article 15. - -− The Work: the Original Work and/or its Derivative Works. - -− The Source Code: the human-readable form of the Work which is the most -convenient for people to study and modify. - -− The Executable Code: any code which has generally been compiled and which is -meant to be interpreted by a computer as a program. - -− The Licensor: the natural or legal person that distributes and/or -communicates the Work under the Licence. - -− Contributor(s): any natural or legal person who modifies the Work under the -Licence, or otherwise contributes to the creation of a Derivative Work. - -− The Licensee or “You”: any natural or legal person who makes any usage of -the Software under the terms of the Licence. − Distribution and/or -Communication: any act of selling, giving, lending, renting, distributing, -communicating, transmitting, or otherwise making available, on-line or off- -line, copies of the Work at the disposal of any other natural or legal person. - -2. Scope of the rights granted by the Licence - -The Licensor hereby grants You a world-wide, royalty-free, non-exclusive, sub- -licensable licence to do the following, for the duration of copyright vested -in the Original Work: - -− use the Work in any circumstance and for all usage, - -− reproduce the Work, - -− modify the Original Work, and make Derivative Works based upon the Work, - -− communicate to the public, including the right to make available or display -the Work or copies thereof to the public and perform publicly, as the case may -be, the Work, - -− distribute the Work or copies thereof, - -− lend and rent the Work or copies thereof, - -− sub-license rights in the Work or copies thereof. - -Those rights can be exercised on any media, supports and formats, whether now -known or later invented, as far as the applicable law permits so. - -In the countries where moral rights apply, the Licensor waives his right to -exercise his moral right to the extent allowed by law in order to make -effective the licence of the economic rights here above listed. - -The Licensor grants to the Licensee royalty-free, non exclusive usage rights -to any patents held by the Licensor, to the extent necessary to make use of -the rights granted on the Work under this Licence. - -3. Communication of the Source Code - -The Licensor may provide the Work either in its Source Code form, or as -Executable Code. If the Work is provided as Executable Code, the Licensor -provides in addition a machinereadable copy of the Source Code of the Work -along with each copy of the Work that the Licensor distributes or indicates, -in a notice following the copyright notice attached to the Work, a repository -where the Source Code is easily and freely accessible for as long as the -Licensor continues to distribute and/or communicate the Work. - -4. Limitations on copyright - -Nothing in this Licence is intended to deprive the Licensee of the benefits -from any exception or limitation to the exclusive rights of the rights owners -in the Original Work or Software, of the exhaustion of those rights or of -other applicable limitations thereto. - -5. Obligations of the Licensee - -The grant of the rights mentioned above is subject to some restrictions and -obligations imposed on the Licensee. Those obligations are the following: - -Attribution right: the Licensee shall keep intact all copyright, patent or -trademarks notices and all notices that refer to the Licence and to the -disclaimer of warranties. The Licensee must include a copy of such notices and -a copy of the Licence with every copy of the Work he/she distributes and/or -communicates. The Licensee must cause any Derivative Work to carry prominent -notices stating that the Work has been modified and the date of modification. - -Copyleft clause: If the Licensee distributes and/or communicates copies of the -Original Works or Derivative Works based upon the Original Work, this -Distribution and/or Communication will be done under the terms of this -Licence. The Licensee (becoming Licensor) cannot offer or impose any -additional terms or conditions on the Work or Derivative Work that alter or -restrict the terms of the Licence. - -Compatibility clause: If the Licensee Distributes and/or Communicates -Derivative Works or copies thereof based upon both the Original Work and -another work licensed under a Compatible Licence, this Distribution and/or -Communication can be done under the terms of this Compatible Licence. For the -sake of this clause, “Compatible Licence” refers to the licences listed in the -appendix attached to this Licence. Should the Licensee’s obligations under the -Compatible Licence conflict with his/her obligations under this Licence, the -obligations of the Compatible Licence shall prevail. - -Provision of Source Code: When distributing and/or communicating copies of the -Work, the Licensee will provide a machine-readable copy of the Source Code or -indicate a repository where this Source will be easily and freely available -for as long as the Licensee continues to distribute and/or communicate the -Work. - -Legal Protection: This Licence does not grant permission to use the trade -names, trademarks, service marks, or names of the Licensor, except as required -for reasonable and customary use in describing the origin of the Work and -reproducing the content of the copyright notice. - -6. Chain of Authorship - -The original Licensor warrants that the copyright in the Original Work granted -hereunder is owned by him/her or licensed to him/her and that he/she has the -power and authority to grant the Licence. - -Each Contributor warrants that the copyright in the modifications he/she -brings to the Work are owned by him/her or licensed to him/her and that he/she -has the power and authority to grant the Licence. - -Each time You, as a Licensee, receive the Work, the original Licensor and -subsequent Contributors grant You a licence to their contributions to the -Work, under the terms of this Licence. - -7. Disclaimer of Warranty - -The Work is a work in progress, which is continuously improved by numerous -contributors. It is not a finished work and may therefore contain defects or -“bugs” inherent to this type of software development. - -For the above reason, the Work is provided under the Licence on an “as is” -basis and without warranties of any kind concerning the Work, including -without limitation merchantability, fitness for a particular purpose, absence -of defects or errors, accuracy, non-infringement of intellectual property -rights other than copyright as stated in Article 6 of this Licence. - -This disclaimer of warranty is an essential part of the Licence and a -condition for the grant of any rights to the Work. - -8. Disclaimer of Liability - -Except in the cases of wilful misconduct or damages directly caused to natural -persons, the Licensor will in no event be liable for any direct or indirect, -material or moral, damages of any kind, arising out of the Licence or of the -use of the Work, including without limitation, damages for loss of goodwill, -work stoppage, computer failure or malfunction, loss of data or any commercial -damage, even if the Licensor has been advised of the possibility of such -damage. However, the Licensor will be liable under statutory product liability -laws as far such laws apply to the Work. - -9. Additional agreements - -While distributing the Original Work or Derivative Works, You may choose to -conclude an additional agreement to offer, and charge a fee for, acceptance of -support, warranty, indemnity, or other liability obligations and/or services -consistent with this Licence. However, in accepting such obligations, You may -act only on your own behalf and on your sole responsibility, not on behalf of -the original Licensor or any other Contributor, and only if You agree to -indemnify, defend, and hold each Contributor harmless for any liability -incurred by, or claims asserted against such Contributor by the fact You have -accepted any such warranty or additional liability. - -10. Acceptance of the Licence - -The provisions of this Licence can be accepted by clicking on an icon “I -agree” placed under the bottom of a window displaying the text of this Licence -or by affirming consent in any other similar way, in accordance with the rules -of applicable law. Clicking on that icon indicates your clear and irrevocable -acceptance of this Licence and all of its terms and conditions. - -Similarly, you irrevocably accept this Licence and all of its terms and -conditions by exercising any rights granted to You by Article 2 of this -Licence, such as the use of the Work, the creation by You of a Derivative Work -or the Distribution and/or Communication by You of the Work or copies thereof. - -11. Information to the public - -In case of any Distribution and/or Communication of the Work by means of -electronic communication by You (for example, by offering to download the Work -from a remote location) the distribution channel or media (for example, a -website) must at least provide to the public the information requested by the -applicable law regarding the identification and address of the Licensor, the -Licence and the way it may be accessible, concluded, stored and reproduced by -the Licensee. - -12. Termination of the Licence - -The Licence and the rights granted hereunder will terminate automatically upon -any breach by the Licensee of the terms of the Licence. - -Such a termination will not terminate the licences of any person who has -received the Work from the Licensee under the Licence, provided such persons -remain in full compliance with the Licence. - -13. Miscellaneous - -Without prejudice of Article 9 above, the Licence represents the complete -agreement between the Parties as to the Work licensed hereunder. - -If any provision of the Licence is invalid or unenforceable under applicable -law, this will not affect the validity or enforceability of the Licence as a -whole. Such provision will be construed and/or reformed so as necessary to -make it valid and enforceable. - -The European Commission may put into force translations and/or binding new -versions of this Licence, so far this is required and reasonable. New versions -of the Licence will be published with a unique version number. The new version -of the Licence becomes binding for You as soon as You become aware of its -publication. - -14. Jurisdiction - -Any litigation resulting from the interpretation of this License, arising -between the European Commission, as a Licensor, and any Licensee, will be -subject to the jurisdiction of the Court of Justice of the European -Communities, as laid down in article 238 of the Treaty establishing the -European Community. - -Any litigation arising between Parties, other than the European Commission, -and resulting from the interpretation of this License, will be subject to the -exclusive jurisdiction of the competent court where the Licensor resides or -conducts its primary business. - -15. Applicable Law - -This Licence shall be governed by the law of the European Union country where -the Licensor resides or has his registered office. - -This licence shall be governed by the Belgian law if: - -− a litigation arises between the European Commission, as a Licensor, and any -Licensee; - -− the Licensor, other than the European Commission, has no residence or -registered office inside a European Union country. - - -Appendix - -“Compatible Licences” according to article 5 EUPL are: - -− General Public License (GPL) v. 2 - -− Open Software License (OSL) v. 2.1, v. 3.0 - -− Common Public License v. 1.0 - -− Eclipse Public License v. 1.0 - -− Cecill v. 2.0 - diff --git a/vendor/github.com/google/licenseclassifier/licenses/EUPL-1.1.txt b/vendor/github.com/google/licenseclassifier/licenses/EUPL-1.1.txt deleted file mode 100644 index 568978e..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/EUPL-1.1.txt +++ /dev/null @@ -1,265 +0,0 @@ -European Union Public Licence V. 1.1 - -EUPL (c) the European Community 2007 - -This European Union Public Licence (the "EUPL") applies to the Work or -Software (as defined below) which is provided under the terms of this Licence. -Any use of the Work, other than as authorised under this Licence is prohibited -(to the extent such use is covered by a right of the copyright holder of the -Work). - -The Original Work is provided under the terms of this Licence when the -Licensor (as defined below) has placed the following notice immediately -following the copyright notice for the Original Work: - -Licensed under the EUPL V.1.1 - -or has expressed by any other mean his willingness to license under the EUPL. - -1. Definitions - -In this Licence, the following terms have the following meaning: - -- The Licence: this Licence. - -- The Original Work or the Software: the software distributed and/or communicated by the Licensor under this Licence, available as Source Code and also as Executable Code as the case may be. - -- Derivative Works: the works or software that could be created by the Licensee, based upon the Original Work or modifications thereof. This Licence does not define the extent of modification or dependence on the Original Work required in order to classify a work as a Derivative Work; this extent is determined by copyright law applicable in the country mentioned in Article 15. - -- The Work: the Original Work and/or its Derivative Works. - -- The Source Code: the human-readable form of the Work which is the most convenient for people to study and modify. - -- The Executable Code: any code which has generally been compiled and which is meant to be interpreted by a computer as a program. - -- The Licensor: the natural or legal person that distributes and/or communicates the Work under the Licence. - -- Contributor(s): any natural or legal person who modifies the Work under the Licence, or otherwise contributes to the creation of a Derivative Work. - -- The Licensee or "You": any natural or legal person who makes any usage of the Software under the terms of the Licence. - -- Distribution and/or Communication: any act of selling, giving, lending, renting, distributing, communicating, transmitting, or otherwise making available, on-line or off-line, copies of the Work or providing access to its essential functionalities at the disposal of any other natural or legal person. - -2. Scope of the rights granted by the Licence - -The Licensor hereby grants You a world-wide, royalty-free, non-exclusive, -sublicensable licence to do the following, for the duration of copyright -vested in the Original Work: - -- use the Work in any circumstance and for all usage, - -- reproduce the Work, - -- modify the Original Work, and make Derivative Works based upon the Work, - -- communicate to the public, including the right to make available or display the Work or copies thereof to the public and perform publicly, as the case may be, the Work, - -- distribute the Work or copies thereof, - -- lend and rent the Work or copies thereof, - -- sub-license rights in the Work or copies thereof. - -Those rights can be exercised on any media, supports and formats, whether now -known or later invented, as far as the applicable law permits so. - -In the countries where moral rights apply, the Licensor waives his right to -exercise his moral right to the extent allowed by law in order to make -effective the licence of the economic rights here above listed. - -The Licensor grants to the Licensee royalty-free, non exclusive usage rights -to any patents held by the Licensor, to the extent necessary to make use of -the rights granted on the Work under this Licence. - -3. Communication of the Source Code - -The Licensor may provide the Work either in its Source Code form, or as -Executable Code. If the Work is provided as Executable Code, the Licensor -provides in addition a machine-readable copy of the Source Code of the Work -along with each copy of the Work that the Licensor distributes or indicates, -in a notice following the copyright notice attached to the Work, a repository -where the Source Code is easily and freely accessible for as long as the -Licensor continues to distribute and/or communicate the Work. - -4. Limitations on copyright - -Nothing in this Licence is intended to deprive the Licensee of the benefits -from any exception or limitation to the exclusive rights of the rights owners -in the Original Work or Software, of the exhaustion of those rights or of -other applicable limitations thereto. - -5. Obligations of the Licensee - -The grant of the rights mentioned above is subject to some restrictions and -obligations imposed on the Licensee. Those obligations are the following: - -Attribution right: the Licensee shall keep intact all copyright, patent or -trademarks notices and all notices that refer to the Licence and to the -disclaimer of warranties. The Licensee must include a copy of such notices and -a copy of the Licence with every copy of the Work he/she distributes and/or -communicates. The Licensee must cause any Derivative Work to carry prominent -notices stating that the Work has been modified and the date of modification. - -Copyleft clause: If the Licensee distributes and/or communicates copies of the -Original Works or Derivative Works based upon the Original Work, this -Distribution and/or Communication will be done under the terms of this Licence -or of a later version of this Licence unless the Original Work is expressly -distributed only under this version of the Licence. The Licensee (becoming -Licensor) cannot offer or impose any additional terms or conditions on the -Work or Derivative Work that alter or restrict the terms of the Licence. - -Compatibility clause: If the Licensee Distributes and/or Communicates -Derivative Works or copies thereof based upon both the Original Work and -another work licensed under a Compatible Licence, this Distribution and/or -Communication can be done under the terms of this Compatible Licence. For the -sake of this clause, "Compatible Licence," refers to the licences listed in -the appendix attached to this Licence. Should the Licensee's obligations -under the Compatible Licence conflict with his/her obligations under this -Licence, the obligations of the Compatible Licence shall prevail. - -Provision of Source Code: When distributing and/or communicating copies of the -Work, the Licensee will provide a machine-readable copy of the Source Code or -indicate a repository where this Source will be easily and freely available -for as long as the Licensee continues to distribute and/or communicate the -Work. - -Legal Protection: This Licence does not grant permission to use the trade -names, trademarks, service marks, or names of the Licensor, except as required -for reasonable and customary use in describing the origin of the Work and -reproducing the content of the copyright notice. - -6. Chain of Authorship - -The original Licensor warrants that the copyright in the Original Work granted -hereunder is owned by him/her or licensed to him/her and that he/she has the -power and authority to grant the Licence. - -Each Contributor warrants that the copyright in the modifications he/she -brings to the Work are owned by him/her or licensed to him/her and that he/she -has the power and authority to grant the Licence. - -Each time You accept the Licence, the original Licensor and subsequent -Contributors grant You a licence to their contributions to the Work, under the -terms of this Licence. - -7. Disclaimer of Warranty - -The Work is a work in progress, which is continuously improved by numerous -contributors. It is not a finished work and may therefore contain defects or -"bugs" inherent to this type of software development. - -For the above reason, the Work is provided under the Licence on an "as is" -basis and without warranties of any kind concerning the Work, including -without limitation merchantability, fitness for a particular purpose, absence -of defects or errors, accuracy, non-infringement of intellectual property -rights other than copyright as stated in Article 6 of this Licence. - -This disclaimer of warranty is an essential part of the Licence and a -condition for the grant of any rights to the Work. - -8. Disclaimer of Liability - -Except in the cases of wilful misconduct or damages directly caused to natural -persons, the Licensor will in no event be liable for any direct or indirect, -material or moral, damages of any kind, arising out of the Licence or of the -use of the Work, including without limitation, damages for loss of goodwill, -work stoppage, computer failure or malfunction, loss of data or any commercial -damage, even if the Licensor has been advised of the possibility of such -damage. However, the Licensor will be liable under statutory product liability -laws as far such laws apply to the Work. - -9. Additional agreements - -While distributing the Original Work or Derivative Works, You may choose to -conclude an additional agreement to offer, and charge a fee for, acceptance of -support, warranty, indemnity, or other liability obligations and/or services -consistent with this Licence. However, in accepting such obligations, You may -act only on your own behalf and on your sole responsibility, not on behalf of -the original Licensor or any other Contributor, and only if You agree to -indemnify, defend, and hold each Contributor harmless for any liability -incurred by, or claims asserted against such Contributor by the fact You have -accepted any such warranty or additional liability. - -10. Acceptance of the Licence - -The provisions of this Licence can be accepted by clicking on an icon "I -agree" placed under the bottom of a window displaying the text of this Licence -or by affirming consent in any other similar way, in accordance with the rules -of applicable law. Clicking on that icon indicates your clear and irrevocable -acceptance of this Licence and all of its terms and conditions. - -Similarly, you irrevocably accept this Licence and all of its terms and -conditions by exercising any rights granted to You by Article 2 of this -Licence, such as the use of the Work, the creation by You of a Derivative Work -or the Distribution and/or Communication by You of the Work or copies thereof. - -11. Information to the public - -In case of any Distribution and/or Communication of the Work by means of -electronic communication by You (for example, by offering to download the Work -from a remote location) the distribution channel or media (for example, a -website) must at least provide to the public the information requested by the -applicable law regarding the Licensor, the Licence and the way it may be -accessible, concluded, stored and reproduced by the Licensee. - -12. Termination of the Licence - -The Licence and the rights granted hereunder will terminate automatically upon -any breach by the Licensee of the terms of the Licence. Such a termination -will not terminate the licences of any person who has received the Work from -the Licensee under the Licence, provided such persons remain in full -compliance with the Licence. - -13. Miscellaneous - -Without prejudice of Article 9 above, the Licence represents the complete -agreement between the Parties as to the Work licensed hereunder. - -If any provision of the Licence is invalid or unenforceable under applicable -law, this will not affect the validity or enforceability of the Licence as a -whole. Such provision will be construed and/or reformed so as necessary to -make it valid and enforceable. - -The European Commission may publish other linguistic versions and/or new -versions of this Licence, so far this is required and reasonable, without -reducing the scope of the rights granted by the Licence. New versions of the -Licence will be published with a unique version number. - -All linguistic versions of this Licence, approved by the European Commission, -have identical value. Parties can take advantage of the linguistic version of -their choice. - -14. Jurisdiction - -Any litigation resulting from the interpretation of this License, arising -between the European Commission, as a Licensor, and any Licensee, will be -subject to the jurisdiction of the Court of Justice of the European -Communities, as laid down in article 238 of the Treaty establishing the -European Community. - -Any litigation arising between Parties, other than the European Commission, -and resulting from the interpretation of this License, will be subject to the -exclusive jurisdiction of the competent court where the Licensor resides or -conducts its primary business. - -15. Applicable Law - -This Licence shall be governed by the law of the European Union country where -the Licensor resides or has his registered office. - -This licence shall be governed by the Belgian law if: - -- a litigation arises between the European Commission, as a Licensor, and any Licensee; - -- the Licensor, other than the European Commission, has no residence or registered office inside a European Union country. - -Appendix - -"Compatible Licences" according to article 5 EUPL are: - -- GNU General Public License (GNU GPL) v. 2 -- Open Software License (OSL) v. 2.1, v. 3.0 -- Common Public License v. 1.0 -- Eclipse Public License v. 1.0 -- Cecill v. 2.0 - diff --git a/vendor/github.com/google/licenseclassifier/licenses/FTL.txt b/vendor/github.com/google/licenseclassifier/licenses/FTL.txt deleted file mode 100644 index 6c97515..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/FTL.txt +++ /dev/null @@ -1,141 +0,0 @@ -The FreeType Project LICENSE - -2006-Jan-27 - -Copyright 1996-2002, 2006 by David Turner, Robert Wilhelm, and Werner Lemberg - -Introduction - -The FreeType Project is distributed in several archive packages; some of them -may contain, in addition to the FreeType font engine, various tools and -contributions which rely on, or relate to, the FreeType Project. - -This license applies to all files found in such packages, and which do not -fall under their own explicit license. The license affects thus the FreeType -font engine, the test programs, documentation and makefiles, at the very -least. - -This license was inspired by the BSD, Artistic, and IJG (Independent JPEG -Group) licenses, which all encourage inclusion and use of free software in -commercial and freeware products alike. As a consequence, its main points are -that: - -o We don't promise that this software works. However, we will be -interested in any kind of bug reports. (`as is' distribution) - -o You can use this software for whatever you want, in parts or full form, -without having to pay us. (`royalty-free' usage) - -o You may not pretend that you wrote this software. If you use it, or only -parts of it, in a program, you must acknowledge somewhere in your -documentation that you have used the FreeType code. (`credits') - -We specifically permit and encourage the inclusion of this software, with or -without modifications, in commercial products. We disclaim all warranties -covering The FreeType Project and assume no liability related to The FreeType -Project. - -Finally, many people asked us for a preferred form for a credit/disclaimer to -use in compliance with this license. We thus encourage you to use the -following text: - -""" Portions of this software are copyright © The FreeType Project -(www.freetype.org). All rights reserved. """ - -Please replace with the value from the FreeType version you actually -use. - -Legal Terms - -0. Definitions - -Throughout this license, the terms `package', `FreeType Project', -and `FreeType archive' refer to the set of files originally distributed -by the authors (David Turner, Robert Wilhelm, and Werner Lemberg) as the -`FreeType Project', be they named as alpha, beta or final release. - -`You' refers to the licensee, or person using the project, where -`using' is a generic term including compiling the project's source -code as well as linking it to form a `program' or `executable'. This -program is referred to as `a program using the FreeType engine'. - -This license applies to all files distributed in the original FreeType -Project, including all source code, binaries and documentation, unless -otherwise stated in the file in its original, unmodified form as distributed -in the original archive. If you are unsure whether or not a particular file is -covered by this license, you must contact us to verify this. - -The FreeType Project is copyright (C) 1996-2000 by David Turner, Robert -Wilhelm, and Werner Lemberg. All rights reserved except as specified below. - -1. No Warranty - -THE FREETYPE PROJECT IS PROVIDED `AS IS' WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL ANY OF -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES CAUSED BY THE USE -OR THE INABILITY TO USE, OF THE FREETYPE PROJECT. - -2. Redistribution - -This license grants a worldwide, royalty-free, perpetual and irrevocable right -and license to use, execute, perform, compile, display, copy, create -derivative works of, distribute and sublicense the FreeType Project (in both -source and object code forms) and derivative works thereof for any purpose; -and to authorize others to exercise some or all of the rights granted herein, -subject to the following conditions: - -o Redistribution of source code must retain this license file (`FTL.TXT') -unaltered; any additions, deletions or changes to the original files must be -clearly indicated in accompanying documentation. The copyright notices of the -unaltered, original files must be preserved in all copies of source files. - -o Redistribution in binary form must provide a disclaimer that states that the -software is based in part of the work of the FreeType Team, in the -distribution documentation. We also encourage you to put an URL to the -FreeType web page in your documentation, though this isn't mandatory. - -These conditions apply to any software derived from or based on the FreeType -Project, not just the unmodified files. If you use our work, you must -acknowledge us. However, no fee need be paid to us. - -3. Advertising - -Neither the FreeType authors and contributors nor you shall use the name of -the other for commercial, advertising, or promotional purposes without -specific prior written permission. - -We suggest, but do not require, that you use one or more of the following -phrases to refer to this software in your documentation or advertising -materials: `FreeType Project', `FreeType Engine', `FreeType -library', or `FreeType Distribution'. - -As you have not signed this license, you are not required to accept it. -However, as the FreeType Project is copyrighted material, only this license, -or another one contracted with the authors, grants you the right to use, -distribute, and modify it. Therefore, by using, distributing, or modifying the -FreeType Project, you indicate that you understand and accept all the terms of -this license. - -4. Contacts - -There are two mailing lists related to FreeType: - -o freetype@nongnu.org - -Discusses general use and applications of FreeType, as well as future and -wanted additions to the library and distribution. If you are looking for -support, start in this list if you haven't found anything to help you in -the documentation. - -o freetype-devel@nongnu.org - -Discusses bugs, as well as engine internals, design issues, specific licenses, -porting, etc. - -Our home page can be found at - -http://www.freetype.org - ---- end of FTL.TXT --- - diff --git a/vendor/github.com/google/licenseclassifier/licenses/Facebook-2-Clause.txt b/vendor/github.com/google/licenseclassifier/licenses/Facebook-2-Clause.txt deleted file mode 100644 index 656a89d..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/Facebook-2-Clause.txt +++ /dev/null @@ -1,19 +0,0 @@ -Facebook, Inc. ("Facebook") owns all right, title and interest, including all -intellectual property and other proprietary rights, in and to the React Native -Custom Components software (the "Software"). Subject to your compliance with -these terms, you are hereby granted a non-exclusive, worldwide, royalty-free -copyright license to (1) use and copy the Software; and (2) reproduce and -distribute the Software as part of your own software ("Your Software"). -Facebook reserves all rights not expressly granted to you in this license -agreement. - -THE SOFTWARE AND DOCUMENTATION, IF ANY, ARE PROVIDED "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 FACEBOOK OR ITS AFFILIATES, OFFICERS, DIRECTORS OR EMPLOYEES 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 THE SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/google/licenseclassifier/licenses/Facebook-3-Clause.txt b/vendor/github.com/google/licenseclassifier/licenses/Facebook-3-Clause.txt deleted file mode 100644 index 0b4a67b..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/Facebook-3-Clause.txt +++ /dev/null @@ -1,20 +0,0 @@ -Facebook, Inc. ("Facebook") owns all right, title and interest, including all -intellectual property and other proprietary rights, in and to the Nuclide -software (the "Software"). Subject to your compliance with these terms, you are -hereby granted a non-exclusive, worldwide, royalty-free copyright license to -(1) use and copy the Software; and (2) reproduce and distribute the Software as -part of your own software ("Your Software"), provided Your Software does not -consist solely of the Software; and (3) modify the Software for your own -internal use. Facebook reserves all rights not expressly granted to you in -this license agreement. - -THE SOFTWARE AND DOCUMENTATION, IF ANY, ARE PROVIDED "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 FACEBOOK OR ITS AFFILIATES, OFFICERS, DIRECTORS OR EMPLOYEES 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 THE SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/google/licenseclassifier/licenses/Facebook-Examples.txt b/vendor/github.com/google/licenseclassifier/licenses/Facebook-Examples.txt deleted file mode 100644 index 87f537d..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/Facebook-Examples.txt +++ /dev/null @@ -1,9 +0,0 @@ -The examples provided by Facebook are for non-commercial testing and evaluation -purposes only. Facebook reserves all rights not expressly granted. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN -ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/github.com/google/licenseclassifier/licenses/FreeImage.txt b/vendor/github.com/google/licenseclassifier/licenses/FreeImage.txt deleted file mode 100644 index 1b800d0..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/FreeImage.txt +++ /dev/null @@ -1,117 +0,0 @@ -FreeImage Public License - Version 1.0 - -1. Definitions. - - 1.1. "Contributor" means each entity that creates or contributes to the creation of Modifications. - - 1.2. "Contributor Version" means the combination of the Original Code, prior Modifications used by a Contributor, and the Modifications made by that particular Contributor. - - 1.3. "Covered Code" means the Original Code or Modifications or the combination of the Original Code and Modifications, in each case including portions thereof. - - 1.4. "Electronic Distribution Mechanism" means a mechanism generally accepted in the software development community for the electronic transfer of data. - - 1.5. "Executable" means Covered Code in any form other than Source Code. - - 1.6. "Initial Developer" means the individual or entity identified as the Initial Developer in the Source Code notice required by Exhibit A. - - 1.7. "Larger Work" means a work which combines Covered Code or portions thereof with code not governed by the terms of this License. - - 1.8. "License" means this document. - - 1.9. "Modifications" means any addition to or deletion from the substance or structure of either the Original Code or any previous Modifications. When Covered Code is released as a series of files, a -Modification is: - - A. Any addition to or deletion from the contents of a file containing Original Code or previous Modifications. - B. Any new file that contains any part of the Original Code or previous Modifications. - - 1.10. "Original Code" means Source Code of computer software code which is described in the Source Code notice required by Exhibit A as Original Code, and which, at the time of its release under this License is not already Covered Code governed by this License. - - 1.11. "Source Code" means the preferred form of the Covered Code for making modifications to it, including all modules it contains, plus any associated interface definition files, scripts used to control compilation and installation of an Executable, or a list of source code differential comparisons against either the Original Code or another well known, available Covered Code of the Contributor's choice. The Source Code can be in a compressed or archival form, provided the appropriate decompression or de-archiving software is widely available for no charge. - - 1.12. "You" means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License or a future version of this License issued under Section 6.1. For legal entities, "You" includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, "control" means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of fifty percent (50%) or more of the outstanding shares or beneficial ownership of such entity. - -2. Source Code License. - - 2.1. The Initial Developer Grant. - The Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license, subject to third party intellectual property claims: - - (a) to use, reproduce, modify, display, perform, sublicense and distribute the Original Code (or portions thereof) with or without Modifications, or as part of a Larger Work; and - - (b) under patents now or hereafter owned or controlled by Initial Developer, to make, have made, use and sell ("Utilize") the Original Code (or portions thereof), but solely to the extent that any such patent is reasonably necessary to enable You to Utilize the Original Code (or portions thereof) and not to any greater extent that may be necessary to Utilize further Modifications or combinations. - - 2.2. Contributor Grant. - Each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license, subject to third party intellectual property claims: - - (a) to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof) either on an unmodified basis, with other Modifications, as Covered Code or as part of a Larger Work; and - - (b) under patents now or hereafter owned or controlled by Contributor, to Utilize the Contributor Version (or portions thereof), but solely to the extent that any such patent is reasonably necessary to enable You to Utilize the Contributor Version (or portions thereof), and not to any greater extent that may be necessary to Utilize further Modifications or combinations. - -3. Distribution Obligations. - - 3.1. Application of License. - The Modifications which You create or to which You contribute are governed by the terms of this License, including without limitation Section 2.2. The Source Code version of Covered Code may be distributed only under the terms of this License or a future version of this License released under Section 6.1, and You must include a copy of this License with every copy of the Source Code You distribute. You may not offer or impose any terms on any Source Code version that alters or restricts the applicable version of this License or the recipients' rights hereunder. However, You may include an additional document offering the additional rights described in Section 3.5. - - 3.2. Availability of Source Code. - Any Modification which You create or to which You contribute must be made available in Source Code form under the terms of this License either on the same media as an Executable version or via an accepted Electronic Distribution Mechanism to anyone to whom you made an Executable version available; and if made available via Electronic Distribution Mechanism, must remain available for at least twelve (12) months after the date it initially became available, or at least six (6) months after a subsequent version of that particular Modification has been made available to such recipients. You are responsible for ensuring that the Source Code version remains available even if the Electronic Distribution Mechanism is maintained by a third party. - - 3.3. Description of Modifications. - You must cause all Covered Code to which you contribute to contain a file documenting the changes You made to create that Covered Code and the date of any change. You must include a prominent statement that the Modification is derived, directly or indirectly, from Original Code provided by the Initial Developer and including the name of the Initial Developer in (a) the Source Code, and (b) in any notice in an Executable version or related documentation in which You describe the origin or ownership of the Covered Code. - - 3.4. Intellectual Property Matters - - (a) Third Party Claims. - If You have knowledge that a party claims an intellectual property right in particular functionality or code (or its utilization under this License), you must include a text file with the source code distribution titled "LEGAL" which describes the claim and the party making the claim in sufficient detail that a recipient will know whom to contact. If you obtain such knowledge after You make Your Modification available as described in Section 3.2, You shall promptly modify the LEGAL file in all copies You make available thereafter and shall take other steps (such as notifying appropriate mailing lists or newsgroups) reasonably calculated to inform those who received the Covered Code that new knowledge has been obtained. - - (b) Contributor APIs. - If Your Modification is an application programming interface and You own or control patents which are reasonably necessary to implement that API, you must also include this information in the LEGAL file. - - 3.5. Required Notices. - You must duplicate the notice in Exhibit A in each file of the Source Code, and this License in any documentation for the Source Code, where You describe recipients' rights relating to Covered Code. If You created one or more Modification(s), You may add your name as a Contributor to the notice described in Exhibit A. If it is not possible to put such notice in a particular Source Code file due to its structure, then you must include such notice in a location (such as a relevant directory file) where a user would be likely to look for such a notice. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Code. However, You may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear than any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer. - - 3.6. Distribution of Executable Versions. - You may distribute Covered Code in Executable form only if the requirements of Section 3.1-3.5 have been met for that Covered Code, and if You include a notice stating that the Source Code version of the Covered Code is available under the terms of this License, including a description of how and where You have fulfilled the obligations of Section 3.2. The notice must be conspicuously included in any notice in an Executable version, related documentation or collateral in which You descr ibe recipients' rights relating to the Covered Code. You may distribute the Executable version of Covered Code under a license of Your choice, which may contain terms different from this License,provided that You are in compliance with the terms of this License and that the license for the Executable version does not attempt to limit or alter the recipient's rights in the Source Code version from the rights set forth in this License. If You distribute the Executable version under a different license You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or any Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer. - - 3.7. Larger Works. - You may create a Larger Work by combining Covered Code with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Code. - -4. Inability to Comply Due to Statute or Regulation. -If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Covered Code due to statute or regulation then You must: (a) comply with the terms of this License to the maximum extent possible; and (b) describe the limitations and the code they affect. Such description must be included in the LEGAL file described in Section 3.4 and must be included with all distributions of the Source Code. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill to be able to understand it. - -5. Application of this License. -This License applies to code to which the Initial Developer has attached the notice in Exhibit A, and to related Covered Code. - -6. Versions of the License. - - 6.1. New Versions. - Floris van den Berg may publish revised and/or new versions of the License from time to time. Each version will be given a distinguishing version number. - - 6.2. Effect of New Versions. - Once Covered Code has been published under a particular version of the License, You may always continue to use it under the terms of that version. You may also choose to use such Covered Code under the terms of any subsequent version of the License published by Floris van den Berg -No one other than Floris van den Berg has the right to modify the terms applicable to Covered Code created under this License. - - 6.3. Derivative Works. - If you create or use a modified version of this License (which you may only do in order to apply it to code which is not already Covered Code governed by this License), you must (a) rename Your license so that the phrases "FreeImage", `FreeImage Public License", "FIPL", or any confusingly similar phrase do not appear anywhere in your license and (b) otherwise make it clear that your version of the license contains terms which differ from the FreeImage Public License. (Filling in the name of the Initial Developer, Original Code or Contributor in the notice described in Exhibit A shall not of themselves be deemed to be modifications of this License.) - -7. DISCLAIMER OF WARRANTY. -COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. - -8. TERMINATION. -This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. All sublicenses to the Covered Code which are properly granted shall survive any termination of this License. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive. - -9. LIMITATION OF LIABILITY. -UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO YOU OR ANY OTHER PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THAT EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. - -10. U.S. GOVERNMENT END USERS. -The Covered Code is a "commercial item," as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software" and "commercial computer software documentation," as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Code with only those rights set forth herein. - -11. MISCELLANEOUS. -This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by Dutch law provisions (except to the extent applicable law, if any, provides otherwise), excluding its conflict-of-law provisions. With respect to disputes in which at least one party is a citizen of, or an entity chartered or registered to do business in, the The Netherlands: (a) unless otherwise agreed in writing, all disputes relating to this License (excepting any dispute relating to intellectual property rights) shall be subject to final and binding arbitration, with the losing party paying all costs of arbitration; (b) any arbitration relating to this Agreement shall be held in Almelo, The Netherlands; and (c) any litigation relating to this Agreement shall be subject to the jurisdiction of the court of Almelo, The Netherlands with the losing party responsible for costs, including without limitation, court costs and reasonable attorneys fees and expenses. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License. - -12. RESPONSIBILITY FOR CLAIMS. -Except in cases where another Contributor has failed to comply with Section 3.4, You are responsible for damages arising, directly or indirectly, out of Your utilization of rights under this License, based on the number of copies of Covered Code you made available, the revenues you received from utilizing such rights, and other relevant factors. You agree to work with affected parties to distribute responsibility on an equitable basis. - -EXHIBIT A. - -"The contents of this file are subject to the FreeImage Public License Version 1.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://home.wxs.nl/~flvdberg/freeimage-license.txt - -Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. diff --git a/vendor/github.com/google/licenseclassifier/licenses/GPL-1.0.header.txt b/vendor/github.com/google/licenseclassifier/licenses/GPL-1.0.header.txt deleted file mode 100644 index 88e0e3b..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/GPL-1.0.header.txt +++ /dev/null @@ -1,13 +0,0 @@ -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 1, or (at your option) -any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA diff --git a/vendor/github.com/google/licenseclassifier/licenses/GPL-1.0.txt b/vendor/github.com/google/licenseclassifier/licenses/GPL-1.0.txt deleted file mode 100644 index 96e6987..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/GPL-1.0.txt +++ /dev/null @@ -1,191 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 1, February 1989 - - Copyright (C) 1989 Free Software Foundation, Inc. - 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The license agreements of most software companies try to keep users -at the mercy of those companies. By contrast, our General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. The -General Public License applies to the Free Software Foundation's -software and to any other program whose authors commit to using it. -You can use it for your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Specifically, the General Public License is designed to make -sure that you have the freedom to give away or sell copies of free -software, that you receive source code or can get it if you want it, -that you can change the software or use pieces of it in new free -programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of a such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must tell them their rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any program or other work which -contains a notice placed by the copyright holder saying it may be -distributed under the terms of this General Public License. The -"Program", below, refers to any such program or work, and a "work based -on the Program" means either the Program or any work containing the -Program or a portion of it, either verbatim or with modifications. Each -licensee is addressed as "you". - - 1. You may copy and distribute verbatim copies of the Program's source -code as you receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice and -disclaimer of warranty; keep intact all the notices that refer to this -General Public License and to the absence of any warranty; and give any -other recipients of the Program a copy of this General Public License -along with the Program. You may charge a fee for the physical act of -transferring a copy. - - 2. You may modify your copy or copies of the Program or any portion of -it, and copy and distribute such modifications under the terms of Paragraph -1 above, provided that you also do the following: - - a) cause the modified files to carry prominent notices stating that - you changed the files and the date of any change; and - - b) cause the whole of any work that you distribute or publish, that - in whole or in part contains the Program or any part thereof, either - with or without modifications, to be licensed at no charge to all - third parties under the terms of this General Public License (except - that you may choose to grant warranty protection to some or all - third parties, at your option). - - c) If the modified program normally reads commands interactively when - run, you must cause it, when started running for such interactive use - in the simplest and most usual way, to print or display an - announcement including an appropriate copyright notice and a notice - that there is no warranty (or else, saying that you provide a - warranty) and that users may redistribute the program under these - conditions, and telling the user how to view a copy of this General - Public License. - - d) You may charge a fee for the physical act of transferring a - copy, and you may at your option offer warranty protection in - exchange for a fee. - -Mere aggregation of another independent work with the Program (or its -derivative) on a volume of a storage or distribution medium does not bring -the other work under the scope of these terms. - - 3. You may copy and distribute the Program (or a portion or derivative of -it, under Paragraph 2) in object code or executable form under the terms of -Paragraphs 1 and 2 above provided that you also do one of the following: - - a) accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of - Paragraphs 1 and 2 above; or, - - b) accompany it with a written offer, valid for at least three - years, to give any third party free (except for a nominal charge - for the cost of distribution) a complete machine-readable copy of the - corresponding source code, to be distributed under the terms of - Paragraphs 1 and 2 above; or, - - c) accompany it with the information you received as to where the - corresponding source code may be obtained. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form alone.) - -Source code for a work means the preferred form of the work for making -modifications to it. For an executable file, complete source code means -all the source code for all modules it contains; but, as a special -exception, it need not include source code for modules which are standard -libraries that accompany the operating system on which the executable -file runs, or for standard header files or definitions files that -accompany that operating system. - - 4. You may not copy, modify, sublicense, distribute or transfer the -Program except as expressly provided under this General Public License. -Any attempt otherwise to copy, modify, sublicense, distribute or transfer -the Program is void, and will automatically terminate your rights to use -the Program under this License. However, parties who have received -copies, or rights to use copies, from you under this General Public -License will not have their licenses terminated so long as such parties -remain in full compliance. - - 5. By copying, distributing or modifying the Program (or any work based -on the Program) you indicate your acceptance of this license to do so, -and all its terms and conditions. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the original -licensor to copy, distribute or modify the Program subject to these -terms and conditions. You may not impose any further restrictions on the -recipients' exercise of the rights granted herein. - - 7. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of the license which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -the license, you may choose any version ever published by the Free Software -Foundation. - - 8. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS diff --git a/vendor/github.com/google/licenseclassifier/licenses/GPL-2.0-with-GCC-exception.txt b/vendor/github.com/google/licenseclassifier/licenses/GPL-2.0-with-GCC-exception.txt deleted file mode 100644 index 394d851..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/GPL-2.0-with-GCC-exception.txt +++ /dev/null @@ -1,290 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - -GCC Linking Exception - -In addition to the permissions in the GNU General Public License, the Free -Software Foundation gives you unlimited permission to link the compiled -version of this file into combinations with other programs, and to distribute -those combinations without any restriction coming from the use of this file. -(The General Public License restrictions do apply in other respects; for -example, they cover modification of the file, and distribution when not linked -into a combine executable.) - - END OF TERMS AND CONDITIONS diff --git a/vendor/github.com/google/licenseclassifier/licenses/GPL-2.0-with-autoconf-exception.txt b/vendor/github.com/google/licenseclassifier/licenses/GPL-2.0-with-autoconf-exception.txt deleted file mode 100644 index 6c562e0..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/GPL-2.0-with-autoconf-exception.txt +++ /dev/null @@ -1,308 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - -Autoconf Exception - -As a special exception, the Free Software Foundation gives unlimited -permission to copy, distribute and modify the configure scripts that are the -output of Autoconf. You need not follow the terms of the GNU General Public -License when using or distributing such scripts, even though portions of the -text of Autoconf appear in them. The GNU General Public License (GPL) does -govern all other use of the material that constitutes the Autoconf program. - -Certain portions of the Autoconf source text are designed to be copied (in -certain cases, depending on the input) into the output of Autoconf. We call -these the "data" portions. The rest of the Autoconf source text consists of -comments plus executable code that decides which of the data portions to -output in any given case. We call these comments and executable code the "non- -data" portions. Autoconf never copies any of the non-data portions into its -output. - -This special exception to the GPL applies to versions of Autoconf released by -the Free Software Foundation. When you make and distribute a modified version -of Autoconf, you may extend this special exception to the GPL to apply to your -modified version as well, *unless* your modified version has the potential to -copy into its output some of the text that was the non-data portion of the -version that you started with. (In other words, unless your change moves or -copies text from the non-data portions to the data portions.) If your -modification has such potential, you must delete any notice of this special -exception to the GPL from your modified version. - - END OF TERMS AND CONDITIONS - diff --git a/vendor/github.com/google/licenseclassifier/licenses/GPL-2.0-with-bison-exception.txt b/vendor/github.com/google/licenseclassifier/licenses/GPL-2.0-with-bison-exception.txt deleted file mode 100644 index 969ed74..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/GPL-2.0-with-bison-exception.txt +++ /dev/null @@ -1,294 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - -Bison Exception - -As a special exception, you may create a larger work that contains part or all -of the Bison parser skeleton and distribute that work under terms of your -choice, so long as that work isn't itself a parser generator using the -skeleton or a modified version thereof as a parser skeleton. Alternatively, if -you modify or redistribute the parser skeleton itself, you may (at your -option) remove this special exception, which will cause the skeleton and the -resulting Bison output files to be licensed under the GNU General Public -License without this special exception. - -This special exception was added by the Free Software Foundation in version -2.2 of Bison. - - END OF TERMS AND CONDITIONS diff --git a/vendor/github.com/google/licenseclassifier/licenses/GPL-2.0-with-classpath-exception.txt b/vendor/github.com/google/licenseclassifier/licenses/GPL-2.0-with-classpath-exception.txt deleted file mode 100644 index 73a3fcd..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/GPL-2.0-with-classpath-exception.txt +++ /dev/null @@ -1,297 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - -Class Path Exception - -Linking this library statically or dynamically with other modules is making a -combined work based on this library. Thus, the terms and conditions of the GNU -General Public License cover the whole combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent modules, and -to copy and distribute the resulting executable under terms of your choice, -provided that you also meet, for each linked independent module, the terms and -conditions of the license of that module. An independent module is a module -which is not derived from or based on this library. If you modify this -library, you may extend this exception to your version of the library, but you -are not obligated to do so. If you do not wish to do so, delete this exception -statement from your version. - - END OF TERMS AND CONDITIONS diff --git a/vendor/github.com/google/licenseclassifier/licenses/GPL-2.0-with-font-exception.txt b/vendor/github.com/google/licenseclassifier/licenses/GPL-2.0-with-font-exception.txt deleted file mode 100644 index bcfe870..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/GPL-2.0-with-font-exception.txt +++ /dev/null @@ -1,291 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - -Font Exception - -As a special exception, if you create a document which uses this font, and -embed this font or unaltered portions of this font into the document, this -font does not by itself cause the resulting document to be covered by the GNU -General Public License. This exception does not however invalidate any other -reasons why the document might be covered by the GNU General Public License. -If you modify this font, you may extend this exception to your version of the -font, but you are not obligated to do so. If you do not wish to do so, delete -this exception statement from your version. - - END OF TERMS AND CONDITIONS diff --git a/vendor/github.com/google/licenseclassifier/licenses/GPL-2.0.header.txt b/vendor/github.com/google/licenseclassifier/licenses/GPL-2.0.header.txt deleted file mode 100644 index 41fbe44..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/GPL-2.0.header.txt +++ /dev/null @@ -1,13 +0,0 @@ -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. diff --git a/vendor/github.com/google/licenseclassifier/licenses/GPL-2.0.txt b/vendor/github.com/google/licenseclassifier/licenses/GPL-2.0.txt deleted file mode 100644 index d8cf7d4..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/GPL-2.0.txt +++ /dev/null @@ -1,280 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS diff --git a/vendor/github.com/google/licenseclassifier/licenses/GPL-3.0-with-GCC-exception.txt b/vendor/github.com/google/licenseclassifier/licenses/GPL-3.0-with-GCC-exception.txt deleted file mode 100644 index 9066103..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/GPL-3.0-with-GCC-exception.txt +++ /dev/null @@ -1,75 +0,0 @@ -insert GPL v3 text here - -GCC RUNTIME LIBRARY EXCEPTION - -Version 3.1, 31 March 2009 - -General information: - -http://www.gnu.org/licenses/gcc-exception.html - -Copyright (C) 2009 Free Software Foundation, Inc. - -Everyone is permitted to copy and distribute verbatim copies of this license -document, but changing it is not allowed. - -This GCC Runtime Library Exception ("Exception") is an additional permission -under section 7 of the GNU General Public License, version 3 ("GPLv3"). It -applies to a given file (the "Runtime Library") that bears a notice placed by -the copyright holder of the file stating that the file is governed by GPLv3 -along with this Exception. - -When you use GCC to compile a program, GCC may combine portions of certain GCC -header files and runtime libraries with the compiled program. The purpose of -this Exception is to allow compilation of non-GPL (including proprietary) -programs to use, in this way, the header files and runtime libraries covered -by this Exception. - -0. Definitions. -A file is an "Independent Module" if it either requires the Runtime Library -for execution after a Compilation Process, or makes use of an interface -provided by the Runtime Library, but is not otherwise based on the Runtime -Library. - -"GCC" means a version of the GNU Compiler Collection, with or without -modifications, governed by version 3 (or a specified later version) of the GNU -General Public License (GPL) with the option of using any subsequent versions -published by the FSF. - -"GPL-compatible Software" is software whose conditions of propagation, -modification and use would permit combination with GCC in accord with the -license of GCC. - -"Target Code" refers to output from any compiler for a real or virtual target -processor architecture, in executable form or suitable for input to an -assembler, loader, linker and/or execution phase. Notwithstanding that, Target -Code does not include data in any format that is used as a compiler -intermediate representation, or used for producing a compiler intermediate -representation. - -The "Compilation Process" transforms code entirely represented in non- -intermediate languages designed for human-written code, and/or in Java Virtual -Machine byte code, into Target Code. Thus, for example, use of source code -generators and preprocessors need not be considered part of the Compilation -Process, since the Compilation Process can be understood as starting with the -output of the generators or preprocessors. - -A Compilation Process is "Eligible" if it is done using GCC, alone or with -other GPL-compatible software, or if it is done without using any work based -on GCC. For example, using non-GPL-compatible Software to optimize any GCC -intermediate representations would not qualify as an Eligible Compilation -Process. - -1. Grant of Additional Permission. -You have permission to propagate a work of Target Code formed by combining the -Runtime Library with Independent Modules, even if such propagation would -otherwise violate the terms of GPLv3, provided that all Target Code was -generated by Eligible Compilation Processes. You may then convey such a -combination under terms of your choice, consistent with the licensing of the -Independent Modules. - -2. No Weakening of GCC Copyleft. -The availability of this Exception does not imply any general presumption that -third-party software is unaffected by the copyleft requirements of the license -of GCC. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/GPL-3.0-with-autoconf-exception.txt b/vendor/github.com/google/licenseclassifier/licenses/GPL-3.0-with-autoconf-exception.txt deleted file mode 100644 index cdde1f1..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/GPL-3.0-with-autoconf-exception.txt +++ /dev/null @@ -1,44 +0,0 @@ -insert GPL v3 text here - -AUTOCONF CONFIGURE SCRIPT EXCEPTION - -Version 3.0, 18 August 2009 - -Copyright © 2009 Free Software Foundation, Inc. - -Everyone is permitted to copy and distribute verbatim copies of this license -document, but changing it is not allowed. - -This Exception is an additional permission under section 7 of the GNU General -Public License, version 3 ("GPLv3"). It applies to a given file that bears a -notice placed by the copyright holder of the file stating that the file is -governed by GPLv3 along with this Exception. - -The purpose of this Exception is to allow distribution of Autoconf's -typical output under terms of the recipient's choice (including -proprietary). - -0. Definitions. -"Covered Code" is the source or object code of a version of Autoconf that is a -covered work under this License. - -"Normally Copied Code" for a version of Autoconf means all parts of its -Covered Code which that version can copy from its code (i.e., not from its -input file) into its minimally verbose, non-debugging and non-tracing output. - -"Ineligible Code" is Covered Code that is not Normally Copied Code. - -1. Grant of Additional Permission. -You have permission to propagate output of Autoconf, even if such propagation -would otherwise violate the terms of GPLv3. However, if by modifying Autoconf -you cause any Ineligible Code of the version you received to become Normally -Copied Code of your modified version, then you void this Exception for the -resulting covered work. If you convey that resulting covered work, you must -remove this Exception in accordance with the second paragraph of Section 7 of -GPLv3. - -2. No Weakening of Autoconf Copyleft. -The availability of this Exception does not imply any general presumption that -third-party software is unaffected by the copyleft requirements of the license -of Autoconf. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/GPL-3.0.header.txt b/vendor/github.com/google/licenseclassifier/licenses/GPL-3.0.header.txt deleted file mode 100644 index 9aa03b3..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/GPL-3.0.header.txt +++ /dev/null @@ -1,12 +0,0 @@ -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . diff --git a/vendor/github.com/google/licenseclassifier/licenses/GPL-3.0.txt b/vendor/github.com/google/licenseclassifier/licenses/GPL-3.0.txt deleted file mode 100644 index 94a0453..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/GPL-3.0.txt +++ /dev/null @@ -1,621 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS diff --git a/vendor/github.com/google/licenseclassifier/licenses/GUST-Font-License.txt b/vendor/github.com/google/licenseclassifier/licenses/GUST-Font-License.txt deleted file mode 100644 index d7cb8dd..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/GUST-Font-License.txt +++ /dev/null @@ -1,28 +0,0 @@ -This is version 1.0, dated 22 June 2009, of the GUST Font License. -(GUST is the Polish TeX Users Group, http://www.gust.org.pl) - -For the most recent version of this license see -http://www.gust.org.pl/fonts/licenses/GUST-FONT-LICENSE.txt -or -http://tug.org/fonts/licenses/GUST-FONT-LICENSE.txt - -This work may be distributed and/or modified under the conditions -of the LaTeX Project Public License, either version 1.3c of this -license or (at your option) any later version. - -Please also observe the following clause: -1) it is requested, but not legally required, that derived works be - distributed only after changing the names of the fonts comprising this - work and given in an accompanying "manifest", and that the - files comprising the Work, as listed in the manifest, also be given - new names. Any exceptions to this request are also given in the - manifest. - - We recommend the manifest be given in a separate file named - MANIFEST-.txt, where is some unique identification - of the font family. If a separate "readme" file accompanies the Work, - we recommend a name of the form README-.txt. - -The latest version of the LaTeX Project Public License is in -http://www.latex-project.org/lppl.txt and version 1.3c or later -is part of all distributions of LaTeX version 2006/05/20 or later. diff --git a/vendor/github.com/google/licenseclassifier/licenses/IPL-1.0.txt b/vendor/github.com/google/licenseclassifier/licenses/IPL-1.0.txt deleted file mode 100644 index 6a8c796..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/IPL-1.0.txt +++ /dev/null @@ -1,371 +0,0 @@ -IBM Public License Version 1.0 - -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS IBM - -PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION - -OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. - -1. DEFINITIONS -"Contribution" means: - -a. in the case of International Business Machines Corporation ("IBM"), the -Original Program, and - -b. in the case of each Contributor, - -i. changes to the Program, and - -ii. additions to the Program; - -where such changes and/or additions to the Program originate from and - -are distributed by that particular Contributor. A Contribution - -'originates' from a Contributor if it was added to the Program by - -such Contributor itself or anyone acting on such Contributor's - -behalf. Contributions do not include additions to the Program which: - -(i) are separate modules of software distributed in conjunction with - -the Program under their own license agreement, and (ii) are not - -derivative works of the Program. - -"Contributor" means IBM and any other entity that distributes the Program. - -"Licensed Patents " mean patent claims licensable by a - -Contributor which are necessarily infringed by the use or sale of its - -Contribution alone or when combined with the Program. - -"Original Program" means the original version of the software - -accompanying this Agreement as released by IBM, including source - -code, object code and documentation, if any. - -"Program" means the Original Program and Contributions. - -"Recipient" means anyone who receives the Program under this - -Agreement, including all Contributors. - -2. GRANT OF RIGHTS -a. Subject to the terms of this Agreement, each Contributor hereby - -grants Recipient a non-exclusive, worldwide, royalty-free copyright - -license to reproduce, prepare derivative works of, publicly display, - -publicly perform, distribute and sublicense the Contribution of such - -Contributor, if any, and such derivative works, in source code and - -object code form. - -b. Subject to the terms of this Agreement, each Contributor hereby - -grants Recipient a non-exclusive, worldwide, royalty-free patent - -license under Licensed Patents to make, use, sell, offer to sell, - -import and otherwise transfer the Contribution of such Contributor, - -if any, in source code and object code form. This patent license - -shall apply to the combination of the Contribution and the Program - -if, at the time the Contribution is added by the Contributor, such - -addition of the Contribution causes such combination to be covered by - -the Licensed Patents. The patent license shall not apply to any - -other combinations which include the Contribution. No hardware per - -se is licensed hereunder. - -c. Recipient understands that although each Contributor grants the - -licenses to its Contributions set forth herein, no assurances are - -provided by any Contributor that the Program does not infringe the - -patent or other intellectual property rights of any other entity. - -Each Contributor disclaims any liability to Recipient for claims - -brought by any other entity based on infringement of intellectual - -property rights or otherwise. As a condition to exercising the - -rights and licenses granted hereunder, each Recipient hereby assumes - -sole responsibility to secure any other intellectual property rights - -needed, if any. For example, if a third party patent license is - -required to allow Recipient to distribute the Program, it is - -Recipient's responsibility to acquire that license before - -distributing the Program. - -d. Each Contributor represents that to its knowledge it has - -sufficient copyright rights in its Contribution, if any, to grant the - -copyright license set forth in this Agreement. - -3. REQUIREMENTS -A Contributor may choose to distribute - -the Program in object code form under its own license agreement, - -provided that: - -a. it complies with the terms and conditions of this Agreement; and - -b. its license agreement: - -i. effectively disclaims on behalf of all Contributors all warranties - -and conditions, express and implied, including warranties or - -conditions of title and non-infringement, and implied warranties or - -conditions of merchantability and fitness for a particular purpose; - -ii. effectively excludes on behalf of all Contributors all liability - -for damages, including direct, indirect, special, incidental and - -consequential damages, such as lost profits; - -iii. states that any provisions which differ from this Agreement are - -offered by that Contributor alone and not by any other party; and - -iv. states that source code for the Program is available from such - -Contributor, and informs licensees how to obtain it in a reasonable - -manner on or through a medium customarily used for software exchange. - -When the Program is made available in source code form: - -a. it must be made available under this Agreement; and - -b. a copy of this Agreement must be included with each copy of the - -Program. - -Each Contributor must include the following in a conspicuous location in the -Program: - -Copyright (C) 1996, 1999 International Business Machines Corporation and -others. All Rights Reserved. - -In addition, each Contributor must identify itself as the originator - -of its Contribution, if any, in a manner that reasonably allows - -subsequent Recipients to identify the originator of the Contribution. - -4. COMMERCIAL DISTRIBUTION -Commercial distributors of software may accept certain - -responsibilities with respect to end users, business partners and the - -like. While this license is intended to facilitate the commercial - -use of the Program, the Contributor who includes the Program in a - -commercial product offering should do so in a manner which does not - -create potential liability for other Contributors. Therefore, if a - -Contributor includes the Program in a commercial product offering, - -such Contributor ("Commercial Contributor") hereby agrees to defend - -and indemnify every other Contributor ("Indemnified Contributor") - -against any losses, damages and costs (collectively "Losses") arising - -from claims, lawsuits and other legal actions brought by a third - -party against the Indemnified Contributor to the extent caused by the - -acts or omissions of such Commercial Contributor in connection with - -its distribution of the Program in a commercial product offering. - -The obligations in this section do not apply to any claims or Losses - -relating to any actual or alleged intellectual property infringement. - -In order to qualify, an Indemnified Contributor must: a) promptly - -notify the Commercial Contributor in writing of such claim, and b) - -allow the Commercial Contributor to control, and cooperate with the - -Commercial Contributor in, the defense and any related settlement - -negotiations. The Indemnified Contributor may participate in any - -such claim at its own expense. - -For example, a Contributor might include the Program in a commercial - -product offering, Product X. That Contributor is then a Commercial - -Contributor. If that Commercial Contributor then makes performance - -claims, or offers warranties related to Product X, those performance - -claims and warranties are such Commercial Contributor's - -responsibility alone. Under this section, the Commercial Contributor - -would have to defend claims against the other Contributors related to - -those performance claims and warranties, and if a court requires any - -other Contributor to pay any damages as a result, the Commercial - -Contributor must pay those damages. - -5. NO WARRANTY -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS - -PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - -KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY - -WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY - -OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely - -responsible for determining the appropriateness of using and - -distributing the Program and assumes all risks associated with its - -exercise of rights under this Agreement, including but not limited to - -the risks and costs of program errors, compliance with applicable - -laws, damage to or loss of data, programs or equipment, and - -unavailability or interruption of operations. - -6. DISCLAIMER OF LIABILITY -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT - -NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, - -INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - -(INCLUDING WITHOUT LIMITATION LOST PROFITS), 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 OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS - -GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -7. GENERAL -If any provision of this Agreement is invalid or unenforceable under - -applicable law, it shall not affect the validity or enforceability of - -the remainder of the terms of this Agreement, and without further - -action by the parties hereto, such provision shall be reformed to the - -minimum extent necessary to make such provision valid and enforceable. - -If Recipient institutes patent litigation against a Contributor with - -respect to a patent applicable to software (including a cross-claim - -or counterclaim in a lawsuit), then any patent licenses granted by - -that Contributor to such Recipient under this Agreement shall - -terminate as of the date such litigation is filed. In addition, if - -Recipient institutes patent litigation against any entity (including - -a cross-claim or counterclaim in a lawsuit) alleging that the Program - -itself (excluding combinations of the Program with other software or - -hardware) infringes such Recipient's patent(s), then such -Recipient's - -rights granted under Section 2(b) shall terminate as of the date such - -litigation is filed. - -All Recipient's rights under this Agreement shall terminate if it - -fails to comply with any of the material terms or conditions of this - -Agreement and does not cure such failure in a reasonable period of - -time after becoming aware of such noncompliance. If all Recipient's - -rights under this Agreement terminate, Recipient agrees to cease use - -and distribution of the Program as soon as reasonably practicable. - -However, Recipient's obligations under this Agreement and any - -licenses granted by Recipient relating to the Program shall continue - -and survive. - -IBM may publish new versions (including revisions) of this Agreement - -from time to time. Each new version of the Agreement will be given a - -distinguishing version number. The Program (including Contributions) - -may always be distributed subject to the version of the Agreement - -under which it was received. In addition, after a new version of the - -Agreement is published, Contributor may elect to distribute the - -Program (including its Contributions) under the new version. No one - -other than IBM has the right to modify this Agreement. Except as - -expressly stated in Sections 2(a) and 2(b) above, Recipient receives - -no rights or licenses to the intellectual property of any Contributor - -under this Agreement, whether expressly, by implication, estoppel or - -otherwise. All rights in the Program not expressly granted under - -this Agreement are reserved. - -This Agreement is governed by the laws of the State of New York and - -the intellectual property laws of the United States of America. No - -party to this Agreement will bring a legal action under this - -Agreement more than one year after the cause of action arose. Each - -party waives its rights to a jury trial in any resulting litigation. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/ISC.txt b/vendor/github.com/google/licenseclassifier/licenses/ISC.txt deleted file mode 100644 index f8180b1..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/ISC.txt +++ /dev/null @@ -1,12 +0,0 @@ -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH REGARD -TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR -CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, -DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER -TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE -OF THIS SOFTWARE. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/ImageMagick.header.txt b/vendor/github.com/google/licenseclassifier/licenses/ImageMagick.header.txt deleted file mode 100644 index 44006e8..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/ImageMagick.header.txt +++ /dev/null @@ -1,13 +0,0 @@ - Copyright [yyyy] [name of copyright owner] - - Licensed under the ImageMagick License (the "License"); you may not use - this file except in compliance with the License. You may obtain a copy - of the License at - - http://www.imagemagick.org/script/license.php - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - License for the specific language governing permissions and limitations - under the License. diff --git a/vendor/github.com/google/licenseclassifier/licenses/ImageMagick.txt b/vendor/github.com/google/licenseclassifier/licenses/ImageMagick.txt deleted file mode 100644 index ed2fe44..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/ImageMagick.txt +++ /dev/null @@ -1,149 +0,0 @@ -The legally binding and authoritative terms and conditions for use, -reproduction, and distribution of ImageMagick follow: - -Copyright 1999-2016 ImageMagick Studio LLC, a non-profit organization dedicated -to making software imaging solutions freely available. - -1. Definitions. - -License shall mean the terms and conditions for use, reproduction, and -distribution as defined by Sections 1 through 9 of this document. - -Licensor shall mean the copyright owner or entity authorized by the copyright -owner that is granting the License. - -Legal Entity shall mean the union of the acting entity and all other entities -that control, are controlled by, or are under common control with that entity. -For the purposes of this definition, control means (i) the power, direct or -indirect, to cause the direction or management of such entity, whether by -contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the -outstanding shares, or (iii) beneficial ownership of such entity. - -You (or Your) shall mean an individual or Legal Entity exercising permissions -granted by this License. - -Source form shall mean the preferred form for making modifications, including -but not limited to software source code, documentation source, and configuration -files. - -Object form shall mean any form resulting from mechanical transformation or -translation of a Source form, including but not limited to compiled object code, -generated documentation, and conversions to other media types. - -Work shall mean the work of authorship, whether in Source or Object form, made -available under the License, as indicated by a copyright notice that is included -in or attached to the work (an example is provided in the Appendix below). - -Derivative Works shall mean any work, whether in Source or Object form, that is -based on (or derived from) the Work and for which the editorial revisions, -annotations, elaborations, or other modifications represent, as a whole, an -original work of authorship. For the purposes of this License, Derivative Works -shall not include works that remain separable from, or merely link (or bind by -name) to the interfaces of, the Work and Derivative Works thereof. - -Contribution shall mean any work of authorship, including the original version -of the Work and any modifications or additions to that Work or Derivative Works -thereof, that is intentionally submitted to Licensor for inclusion in the Work -by the copyright owner or by an individual or Legal Entity authorized to submit -on behalf of the copyright owner. For the purposes of this definition, -"submitted" means any form of electronic, verbal, or written communication sent -to the Licensor or its representatives, including but not limited to -communication on electronic mailing lists, source code control systems, and -issue tracking systems that are managed by, or on behalf of, the Licensor for -the purpose of discussing and improving the Work, but excluding communication -that is conspicuously marked or otherwise designated in writing by the copyright -owner as Not a Contribution. - -Contributor shall mean Licensor and any individual or Legal Entity on behalf of -whom a Contribution has been received by Licensor and subsequently incorporated -within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of this -License, each Contributor hereby grants to You a perpetual, worldwide, -non-exclusive, no-charge, royalty-free, irrevocable copyright license to -reproduce, prepare Derivative Works of, publicly display, publicly perform, -sublicense, and distribute the Work and such Derivative Works in Source or -Object form. - -3. Grant of Patent License. Subject to the terms and conditions of this License, -each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, -no-charge, royalty-free, irrevocable patent license to make, have made, use, -offer to sell, sell, import, and otherwise transfer the Work, where such license -applies only to those patent claims licensable by such Contributor that are -necessarily infringed by their Contribution(s) alone or by combination of their -Contribution(s) with the Work to which such Contribution(s) was submitted. If -You institute patent litigation against any entity (including a cross-claim or -counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated -within the Work constitutes direct or contributory patent infringement, then any -patent licenses granted to You under this License for that Work shall terminate -as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the Work or -Derivative Works thereof in any medium, with or without modifications, and in -Source or Object form, provided that You meet the following conditions: - -You must give any other recipients of the Work or Derivative Works a copy of -this License; and You must cause any modified files to carry prominent notices -stating that You changed the files; and You must retain, in the Source form of -any Derivative Works that You distribute, all copyright, patent, trademark, and -attribution notices from the Source form of the Work, excluding those notices -that do not pertain to any part of the Derivative Works; and If the Work -includes a "NOTICE" text file as part of its distribution, then any Derivative -Works that You distribute must include a readable copy of the attribution -notices contained within such NOTICE file, excluding those notices that do not -pertain to any part of the Derivative Works, in at least one of the following -places: within a NOTICE text file distributed as part of the Derivative Works; -within the Source form or documentation, if provided along with the Derivative -Works; or, within a display generated by the Derivative Works, if and wherever -such third-party notices normally appear. The contents of the NOTICE file are -for informational purposes only and do not modify the License. You may add Your -own attribution notices within Derivative Works that You distribute, alongside -or as an addendum to the NOTICE text from the Work, provided that such -additional attribution notices cannot be construed as modifying the License. -You may add Your own copyright statement to Your modifications and may provide -additional or different license terms and conditions for use, reproduction, or -distribution of Your modifications, or for any such Derivative Works as a whole, -provided Your use, reproduction, and distribution of the Work otherwise complies -with the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, any -Contribution intentionally submitted for inclusion in the Work by You to the -Licensor shall be under the terms and conditions of this License, without any -additional terms or conditions. Notwithstanding the above, nothing herein shall -supersede or modify the terms of any separate license agreement you may have -executed with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade names, -trademarks, service marks, or product names of the Licensor, except as required -for reasonable and customary use in describing the origin of the Work and -reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or agreed to in -writing, Licensor provides the Work (and each Contributor provides its -Contributions) on an AS IS BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, -either express or implied, including, without limitation, any warranties or -conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A -PARTICULAR PURPOSE. You are solely responsible for determining the -appropriateness of using or redistributing the Work and assume any risks -associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, whether in -tort (including negligence), contract, or otherwise, unless required by -applicable law (such as deliberate and grossly negligent acts) or agreed to in -writing, shall any Contributor be liable to You for damages, including any -direct, indirect, special, incidental, or consequential damages of any character -arising as a result of this License or out of the use or inability to use the -Work (including but not limited to damages for loss of goodwill, work stoppage, -computer failure or malfunction, or any and all other commercial damages or -losses), even if such Contributor has been advised of the possibility of such -damages. - -9. Accepting Warranty or Additional Liability. While redistributing the Work or -Derivative Works thereof, You may choose to offer, and charge a fee for, -acceptance of support, warranty, indemnity, or other liability obligations -and/or rights consistent with this License. However, in accepting such -obligations, You may act only on Your own behalf and on Your sole -responsibility, not on behalf of any other Contributor, and only if You agree to -indemnify, defend, and hold each Contributor harmless for any liability incurred -by, or claims asserted against, such Contributor by reason of your accepting any -such warranty or additional liability. diff --git a/vendor/github.com/google/licenseclassifier/licenses/LGPL-2.0.header.txt b/vendor/github.com/google/licenseclassifier/licenses/LGPL-2.0.header.txt deleted file mode 100644 index 674cf5c..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/LGPL-2.0.header.txt +++ /dev/null @@ -1,12 +0,0 @@ -Copyright (C) year name of author -This library is free software; you can redistribute it and/or modify it under -the terms of the GNU Library General Public License as published by the Free -Software Foundation; version 2. - -This library is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A -PARTICULAR PURPOSE. See the GNU Library General Public License for more details. - -You should have received a copy of the GNU Library General Public License along -with this library; if not, write to the Free Software Foundation, Inc., 51 -Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. diff --git a/vendor/github.com/google/licenseclassifier/licenses/LGPL-2.0.txt b/vendor/github.com/google/licenseclassifier/licenses/LGPL-2.0.txt deleted file mode 100644 index cda4be3..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/LGPL-2.0.txt +++ /dev/null @@ -1,397 +0,0 @@ -GNU LIBRARY GENERAL PUBLIC LICENSE - -Version 2, June 1991 Copyright (C) 1991 Free Software Foundation, Inc. - -51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - -Everyone is permitted to copy and distribute verbatim copies of this license -document, but changing it is not allowed. - -[This is the first released version of the library GPL. It is numbered 2 because -it goes with version 2 of the ordinary GPL.] - -Preamble - -The licenses for most software are designed to take away your freedom to share -and change it. By contrast, the GNU General Public Licenses are intended to -guarantee your freedom to share and change free software--to make sure the -software is free for all its users. - -This license, the Library General Public License, applies to some specially -designated Free Software Foundation software, and to any other libraries whose -authors decide to use it. You can use it for your libraries, too. - -When we speak of free software, we are referring to freedom, not price. Our -General Public Licenses are designed to make sure that you have the freedom -to distribute copies of free software (and charge for this service if you -wish), that you receive source code or can get it if you want it, that you -can change the software or use pieces of it in new free programs; and that -you know you can do these things. - -To protect your rights, we need to make restrictions that forbid anyone to -deny you these rights or to ask you to surrender the rights. These restrictions -translate to certain responsibilities for you if you distribute copies of -the library, or if you modify it. - -For example, if you distribute copies of the library, whether gratis or for -a fee, you must give the recipients all the rights that we gave you. You must -make sure that they, too, receive or can get the source code. If you link -a program with the library, you must provide complete object files to the -recipients so that they can relink them with the library, after making changes -to the library and recompiling it. And you must show them these terms so they -know their rights. - -Our method of protecting your rights has two steps: (1) copyright the library, -and (2) offer you this license which gives you legal permission to copy, distribute -and/or modify the library. - -Also, for each distributor's protection, we want to make certain that everyone -understands that there is no warranty for this free library. If the library -is modified by someone else and passed on, we want its recipients to know -that what they have is not the original version, so that any problems introduced -by others will not reflect on the original authors' reputations. - -Finally, any free program is threatened constantly by software patents. We -wish to avoid the danger that companies distributing free software will individually -obtain patent licenses, thus in effect transforming the program into proprietary -software. To prevent this, we have made it clear that any patent must be licensed -for everyone's free use or not licensed at all. - -Most GNU software, including some libraries, is covered by the ordinary GNU -General Public License, which was designed for utility programs. This license, -the GNU Library General Public License, applies to certain designated libraries. -This license is quite different from the ordinary one; be sure to read it -in full, and don't assume that anything in it is the same as in the ordinary -license. - -The reason we have a separate public license for some libraries is that they -blur the distinction we usually make between modifying or adding to a program -and simply using it. Linking a program with a library, without changing the -library, is in some sense simply using the library, and is analogous to running -a utility program or application program. However, in a textual and legal -sense, the linked executable is a combined work, a derivative of the original -library, and the ordinary General Public License treats it as such. - -Because of this blurred distinction, using the ordinary General Public License -for libraries did not effectively promote software sharing, because most developers -did not use the libraries. We concluded that weaker conditions might promote -sharing better. - -However, unrestricted linking of non-free programs would deprive the users -of those programs of all benefit from the free status of the libraries themselves. -This Library General Public License is intended to permit developers of non-free -programs to use free libraries, while preserving your freedom as a user of -such programs to change the free libraries that are incorporated in them. -(We have not seen how to achieve this as regards changes in header files, -but we have achieved it as regards changes in the actual functions of the -Library.) The hope is that this will lead to faster development of free libraries. - -The precise terms and conditions for copying, distribution and modification -follow. Pay close attention to the difference between a "work based on the -library" and a "work that uses the library". The former contains code derived -from the library, while the latter only works together with the library. - -Note that it is possible for a library to be covered by the ordinary General -Public License rather than by this special one. - -TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - -0. This License Agreement applies to any software library which contains a -notice placed by the copyright holder or other authorized party saying it -may be distributed under the terms of this Library General Public License -(also called "this License"). Each licensee is addressed as "you". - -A "library" means a collection of software functions and/or data prepared -so as to be conveniently linked with application programs (which use some -of those functions and data) to form executables. - -The "Library", below, refers to any such software library or work which has -been distributed under these terms. A "work based on the Library" means either -the Library or any derivative work under copyright law: that is to say, a -work containing the Library or a portion of it, either verbatim or with modifications -and/or translated straightforwardly into another language. (Hereinafter, translation -is included without limitation in the term "modification".) - -"Source code" for a work means the preferred form of the work for making modifications -to it. For a library, complete source code means all the source code for all -modules it contains, plus any associated interface definition files, plus -the scripts used to control compilation and installation of the library. - -Activities other than copying, distribution and modification are not covered -by this License; they are outside its scope. The act of running a program -using the Library is not restricted, and output from such a program is covered -only if its contents constitute a work based on the Library (independent of -the use of the Library in a tool for writing it). Whether that is true depends -on what the Library does and what the program that uses the Library does. - -1. You may copy and distribute verbatim copies of the Library's complete source -code as you receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice and disclaimer -of warranty; keep intact all the notices that refer to this License and to -the absence of any warranty; and distribute a copy of this License along with -the Library. - -You may charge a fee for the physical act of transferring a copy, and you -may at your option offer warranty protection in exchange for a fee. - -2. You may modify your copy or copies of the Library or any portion of it, -thus forming a work based on the Library, and copy and distribute such modifications -or work under the terms of Section 1 above, provided that you also meet all -of these conditions: - - a) The modified work must itself be a software library. - -b) You must cause the files modified to carry prominent notices stating that -you changed the files and the date of any change. - -c) You must cause the whole of the work to be licensed at no charge to all -third parties under the terms of this License. - -d) If a facility in the modified Library refers to a function or a table of -data to be supplied by an application program that uses the facility, other -than as an argument passed when the facility is invoked, then you must make -a good faith effort to ensure that, in the event an application does not supply -such function or table, the facility still operates, and performs whatever -part of its purpose remains meaningful. - -(For example, a function in a library to compute square roots has a purpose -that is entirely well-defined independent of the application. Therefore, Subsection -2d requires that any application-supplied function or table used by this function -must be optional: if the application does not supply it, the square root function -must still compute square roots.) - -These requirements apply to the modified work as a whole. If identifiable -sections of that work are not derived from the Library, and can be reasonably -considered independent and separate works in themselves, then this License, -and its terms, do not apply to those sections when you distribute them as -separate works. But when you distribute the same sections as part of a whole -which is a work based on the Library, the distribution of the whole must be -on the terms of this License, whose permissions for other licensees extend -to the entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest your -rights to work written entirely by you; rather, the intent is to exercise -the right to control the distribution of derivative or collective works based -on the Library. - -In addition, mere aggregation of another work not based on the Library with -the Library (or with a work based on the Library) on a volume of a storage -or distribution medium does not bring the other work under the scope of this -License. - -3. You may opt to apply the terms of the ordinary GNU General Public License -instead of this License to a given copy of the Library. To do this, you must -alter all the notices that refer to this License, so that they refer to the -ordinary GNU General Public License, version 2, instead of to this License. -(If a newer version than version 2 of the ordinary GNU General Public License -has appeared, then you can specify that version instead if you wish.) Do not -make any other change in these notices. - -Once this change is made in a given copy, it is irreversible for that copy, -so the ordinary GNU General Public License applies to all subsequent copies -and derivative works made from that copy. - -This option is useful when you wish to copy part of the code of the Library -into a program that is not a library. - -4. You may copy and distribute the Library (or a portion or derivative of -it, under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you accompany it with the complete corresponding -machine-readable source code, which must be distributed under the terms of -Sections 1 and 2 above on a medium customarily used for software interchange. - -If distribution of object code is made by offering access to copy from a designated -place, then offering equivalent access to copy the source code from the same -place satisfies the requirement to distribute the source code, even though -third parties are not compelled to copy the source along with the object code. - -5. A program that contains no derivative of any portion of the Library, but -is designed to work with the Library by being compiled or linked with it, -is called a "work that uses the Library". Such a work, in isolation, is not -a derivative work of the Library, and therefore falls outside the scope of -this License. - -However, linking a "work that uses the Library" with the Library creates an -executable that is a derivative of the Library (because it contains portions -of the Library), rather than a "work that uses the library". The executable -is therefore covered by this License. Section 6 states terms for distribution -of such executables. - -When a "work that uses the Library" uses material from a header file that -is part of the Library, the object code for the work may be a derivative work -of the Library even though the source code is not. Whether this is true is -especially significant if the work can be linked without the Library, or if -the work is itself a library. The threshold for this to be true is not precisely -defined by law. - -If such an object file uses only numerical parameters, data structure layouts -and accessors, and small macros and small inline functions (ten lines or less -in length), then the use of the object file is unrestricted, regardless of -whether it is legally a derivative work. (Executables containing this object -code plus portions of the Library will still fall under Section 6.) - -Otherwise, if the work is a derivative of the Library, you may distribute -the object code for the work under the terms of Section 6. Any executables -containing that work also fall under Section 6, whether or not they are linked -directly with the Library itself. - -6. As an exception to the Sections above, you may also compile or link a "work -that uses the Library" with the Library to produce a work containing portions -of the Library, and distribute that work under terms of your choice, provided -that the terms permit modification of the work for the customer's own use -and reverse engineering for debugging such modifications. - -You must give prominent notice with each copy of the work that the Library -is used in it and that the Library and its use are covered by this License. -You must supply a copy of this License. If the work during execution displays -copyright notices, you must include the copyright notice for the Library among -them, as well as a reference directing the user to the copy of this License. -Also, you must do one of these things: - -a) Accompany the work with the complete corresponding machine-readable source -code for the Library including whatever changes were used in the work (which -must be distributed under Sections 1 and 2 above); and, if the work is an -executable linked with the Library, with the complete machine-readable "work -that uses the Library", as object code and/or source code, so that the user -can modify the Library and then relink to produce a modified executable containing -the modified Library. (It is understood that the user who changes the contents -of definitions files in the Library will not necessarily be able to recompile -the application to use the modified definitions.) - -b) Accompany the work with a written offer, valid for at least three years, -to give the same user the materials specified in Subsection 6a, above, for -a charge no more than the cost of performing this distribution. - -c) If distribution of the work is made by offering access to copy from a designated -place, offer equivalent access to copy the above specified materials from -the same place. - -d) Verify that the user has already received a copy of these materials or -that you have already sent this user a copy. - -For an executable, the required form of the "work that uses the Library" must -include any data and utility programs needed for reproducing the executable -from it. However, as a special exception, the source code distributed need -not include anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the operating -system on which the executable runs, unless that component itself accompanies -the executable. - -It may happen that this requirement contradicts the license restrictions of -other proprietary libraries that do not normally accompany the operating system. -Such a contradiction means you cannot use both them and the Library together -in an executable that you distribute. - -7. You may place library facilities that are a work based on the Library side-by-side -in a single library together with other library facilities not covered by -this License, and distribute such a combined library, provided that the separate -distribution of the work based on the Library and of the other library facilities -is otherwise permitted, and provided that you do these two things: - -a) Accompany the combined library with a copy of the same work based on the -Library, uncombined with any other library facilities. This must be distributed -under the terms of the Sections above. - -b) Give prominent notice with the combined library of the fact that part of -it is a work based on the Library, and explaining where to find the accompanying -uncombined form of the same work. - -8. You may not copy, modify, sublicense, link with, or distribute the Library -except as expressly provided under this License. Any attempt otherwise to -copy, modify, sublicense, link with, or distribute the Library is void, and -will automatically terminate your rights under this License. However, parties -who have received copies, or rights, from you under this License will not -have their licenses terminated so long as such parties remain in full compliance. - -9. You are not required to accept this License, since you have not signed -it. However, nothing else grants you permission to modify or distribute the -Library or its derivative works. These actions are prohibited by law if you -do not accept this License. Therefore, by modifying or distributing the Library -(or any work based on the Library), you indicate your acceptance of this License -to do so, and all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - -10. Each time you redistribute the Library (or any work based on the Library), -the recipient automatically receives a license from the original licensor -to copy, distribute, link with or modify the Library subject to these terms -and conditions. You may not impose any further restrictions on the recipients' -exercise of the rights granted herein. You are not responsible for enforcing -compliance by third parties to this License. - -11. If, as a consequence of a court judgment or allegation of patent infringement -or for any other reason (not limited to patent issues), conditions are imposed -on you (whether by court order, agreement or otherwise) that contradict the -conditions of this License, they do not excuse you from the conditions of -this License. If you cannot distribute so as to satisfy simultaneously your -obligations under this License and any other pertinent obligations, then as -a consequence you may not distribute the Library at all. For example, if a -patent license would not permit royalty-free redistribution of the Library -by all those who receive copies directly or indirectly through you, then the -only way you could satisfy both it and this License would be to refrain entirely -from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any patents -or other property right claims or to contest validity of any such claims; -this section has the sole purpose of protecting the integrity of the free -software distribution system which is implemented by public license practices. -Many people have made generous contributions to the wide range of software -distributed through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing to -distribute software through any other system and a licensee cannot impose -that choice. - -This section is intended to make thoroughly clear what is believed to be a -consequence of the rest of this License. - -12. If the distribution and/or use of the Library is restricted in certain -countries either by patents or by copyrighted interfaces, the original copyright -holder who places the Library under this License may add an explicit geographical -distribution limitation excluding those countries, so that distribution is -permitted only in or among countries not thus excluded. In such case, this -License incorporates the limitation as if written in the body of this License. - -13. The Free Software Foundation may publish revised and/or new versions of -the Library General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to address -new problems or concerns. - -Each version is given a distinguishing version number. If the Library specifies -a version number of this License which applies to it and "any later version", -you have the option of following the terms and conditions either of that version -or of any later version published by the Free Software Foundation. If the -Library does not specify a license version number, you may choose any version -ever published by the Free Software Foundation. - -14. If you wish to incorporate parts of the Library into other free programs -whose distribution conditions are incompatible with these, write to the author -to ask for permission. For software which is copyrighted by the Free Software -Foundation, write to the Free Software Foundation; we sometimes make exceptions -for this. Our decision will be guided by the two goals of preserving the free -status of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - -15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR -THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE -STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY -"AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, -BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE -OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - -16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE -THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE -OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA -OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES -OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH -HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -END OF TERMS AND CONDITIONS diff --git a/vendor/github.com/google/licenseclassifier/licenses/LGPL-2.1.header.txt b/vendor/github.com/google/licenseclassifier/licenses/LGPL-2.1.header.txt deleted file mode 100644 index 4aace62..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/LGPL-2.1.header.txt +++ /dev/null @@ -1,13 +0,0 @@ -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/vendor/github.com/google/licenseclassifier/licenses/LGPL-2.1.txt b/vendor/github.com/google/licenseclassifier/licenses/LGPL-2.1.txt deleted file mode 100644 index 20fb9c7..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/LGPL-2.1.txt +++ /dev/null @@ -1,458 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS diff --git a/vendor/github.com/google/licenseclassifier/licenses/LGPL-3.0.header.txt b/vendor/github.com/google/licenseclassifier/licenses/LGPL-3.0.header.txt deleted file mode 100644 index 4ebd2f2..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/LGPL-3.0.header.txt +++ /dev/null @@ -1,12 +0,0 @@ -This library is free software: you can redistribute it and/or modify it under -the terms of the GNU Lesser General Public License as published by the Free -Software Foundation, either version 3 of the License, or (at your option) any -later version. - -This library is distributed in the hope that it will be useful, but WITHOUT -ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more -details. - -You should have received a copy of the GNU Lesser General Public License -along with this library. If not, see . diff --git a/vendor/github.com/google/licenseclassifier/licenses/LGPL-3.0.txt b/vendor/github.com/google/licenseclassifier/licenses/LGPL-3.0.txt deleted file mode 100644 index 65c5ca8..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/LGPL-3.0.txt +++ /dev/null @@ -1,165 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - - This version of the GNU Lesser General Public License incorporates -the terms and conditions of version 3 of the GNU General Public -License, supplemented by the additional permissions listed below. - - 0. Additional Definitions. - - As used herein, "this License" refers to version 3 of the GNU Lesser -General Public License, and the "GNU GPL" refers to version 3 of the GNU -General Public License. - - "The Library" refers to a covered work governed by this License, -other than an Application or a Combined Work as defined below. - - An "Application" is any work that makes use of an interface provided -by the Library, but which is not otherwise based on the Library. -Defining a subclass of a class defined by the Library is deemed a mode -of using an interface provided by the Library. - - A "Combined Work" is a work produced by combining or linking an -Application with the Library. The particular version of the Library -with which the Combined Work was made is also called the "Linked -Version". - - The "Minimal Corresponding Source" for a Combined Work means the -Corresponding Source for the Combined Work, excluding any source code -for portions of the Combined Work that, considered in isolation, are -based on the Application, and not on the Linked Version. - - The "Corresponding Application Code" for a Combined Work means the -object code and/or source code for the Application, including any data -and utility programs needed for reproducing the Combined Work from the -Application, but excluding the System Libraries of the Combined Work. - - 1. Exception to Section 3 of the GNU GPL. - - You may convey a covered work under sections 3 and 4 of this License -without being bound by section 3 of the GNU GPL. - - 2. Conveying Modified Versions. - - If you modify a copy of the Library, and, in your modifications, a -facility refers to a function or data to be supplied by an Application -that uses the facility (other than as an argument passed when the -facility is invoked), then you may convey a copy of the modified -version: - - a) under this License, provided that you make a good faith effort to - ensure that, in the event an Application does not supply the - function or data, the facility still operates, and performs - whatever part of its purpose remains meaningful, or - - b) under the GNU GPL, with none of the additional permissions of - this License applicable to that copy. - - 3. Object Code Incorporating Material from Library Header Files. - - The object code form of an Application may incorporate material from -a header file that is part of the Library. You may convey such object -code under terms of your choice, provided that, if the incorporated -material is not limited to numerical parameters, data structure -layouts and accessors, or small macros, inline functions and templates -(ten or fewer lines in length), you do both of the following: - - a) Give prominent notice with each copy of the object code that the - Library is used in it and that the Library and its use are - covered by this License. - - b) Accompany the object code with a copy of the GNU GPL and this license - document. - - 4. Combined Works. - - You may convey a Combined Work under terms of your choice that, -taken together, effectively do not restrict modification of the -portions of the Library contained in the Combined Work and reverse -engineering for debugging such modifications, if you also do each of -the following: - - a) Give prominent notice with each copy of the Combined Work that - the Library is used in it and that the Library and its use are - covered by this License. - - b) Accompany the Combined Work with a copy of the GNU GPL and this license - document. - - c) For a Combined Work that displays copyright notices during - execution, include the copyright notice for the Library among - these notices, as well as a reference directing the user to the - copies of the GNU GPL and this license document. - - d) Do one of the following: - - 0) Convey the Minimal Corresponding Source under the terms of this - License, and the Corresponding Application Code in a form - suitable for, and under terms that permit, the user to - recombine or relink the Application with a modified version of - the Linked Version to produce a modified Combined Work, in the - manner specified by section 6 of the GNU GPL for conveying - Corresponding Source. - - 1) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (a) uses at run time - a copy of the Library already present on the user's computer - system, and (b) will operate properly with a modified version - of the Library that is interface-compatible with the Linked - Version. - - e) Provide Installation Information, but only if you would otherwise - be required to provide such information under section 6 of the - GNU GPL, and only to the extent that such information is - necessary to install and execute a modified version of the - Combined Work produced by recombining or relinking the - Application with a modified version of the Linked Version. (If - you use option 4d0, the Installation Information must accompany - the Minimal Corresponding Source and Corresponding Application - Code. If you use option 4d1, you must provide the Installation - Information in the manner specified by section 6 of the GNU GPL - for conveying Corresponding Source.) - - 5. Combined Libraries. - - You may place library facilities that are a work based on the -Library side by side in a single library together with other library -facilities that are not Applications and are not covered by this -License, and convey such a combined library under terms of your -choice, if you do both of the following: - - a) Accompany the combined library with a copy of the same work based - on the Library, uncombined with any other library facilities, - conveyed under the terms of this License. - - b) Give prominent notice with the combined library that part of it - is a work based on the Library, and explaining where to find the - accompanying uncombined form of the same work. - - 6. Revised Versions of the GNU Lesser General Public License. - - The Free Software Foundation may publish revised and/or new versions -of the GNU Lesser General Public License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. - - Each version is given a distinguishing version number. If the -Library as you received it specifies that a certain numbered version -of the GNU Lesser General Public License "or any later version" -applies to it, you have the option of following the terms and -conditions either of that published version or of any later version -published by the Free Software Foundation. If the Library as you -received it does not specify a version number of the GNU Lesser -General Public License, you may choose any version of the GNU Lesser -General Public License ever published by the Free Software Foundation. - - If the Library as you received it specifies that a proxy can decide -whether future versions of the GNU Lesser General Public License shall -apply, that proxy's public statement of acceptance of any version is -permanent authorization for you to choose that version for the -Library. diff --git a/vendor/github.com/google/licenseclassifier/licenses/LGPLLR.txt b/vendor/github.com/google/licenseclassifier/licenses/LGPLLR.txt deleted file mode 100644 index 1dbace0..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/LGPLLR.txt +++ /dev/null @@ -1,180 +0,0 @@ -Lesser General Public License For Linguistic Resources - -Preamble - -The licenses for most data are designed to take away your freedom to share and -change it. By contrast, this License is intended to guarantee your freedom to -share and change free data--to make sure the data are free for all their -users. - -This License, the Lesser General Public License for Linguistic Resources, -applies to some specially designated linguistic resources -- typically -lexicons and grammars. - -TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - -0. This License Agreement applies to any Linguistic Resource which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License for Linguistic Resources (also called "this License"). Each licensee is addressed as "you". - -A "linguistic resource" means a collection of data about language prepared so -as to be used with application programs. - -The "Linguistic Resource", below, refers to any such work which has been -distributed under these terms. A "work based on the Linguistic Resource" means -either the Linguistic Resource or any derivative work under copyright law: -that is to say, a work containing the Linguistic Resource or a portion of it, -either verbatim or with modifications and/or translated straightforwardly into -another language. (Hereinafter, translation is included without limitation in -the term "modification".) - -"Legible form" for a linguistic resource means the preferred form of the -resource for making modifications to it. - -Activities other than copying, distribution and modification are not covered -by this License; they are outside its scope. The act of running a program -using the Linguistic Resource is not restricted, and output from such a -program is covered only if its contents constitute a work based on the -Linguistic Resource (independent of the use of the Linguistic Resource in a -tool for writing it). Whether that is true depends on what the program that -uses the Linguistic Resource does. - -1. You may copy and distribute verbatim copies of the Linguistic Resource as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Linguistic Resource. - -You may charge a fee for the physical act of transferring a copy, and you may -at your option offer warranty protection in exchange for a fee. - -2. You may modify your copy or copies of the Linguistic Resource or any portion of it, thus forming a work based on the Linguistic Resource, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: - -a) The modified work must itself be a linguistic resource. - -b) You must cause the files modified to carry prominent notices stating that -you changed the files and the date of any change. - -c) You must cause the whole of the work to be licensed at no charge to all -third parties under the terms of this License. - -These requirements apply to the modified work as a whole. If identifiable -sections of that work are not derived from the Linguistic Resource, and can be -reasonably considered independent and separate works in themselves, then this -License, and its terms, do not apply to those sections when you distribute -them as separate works. But when you distribute the same sections as part of a -whole which is a work based on the Linguistic Resource, the distribution of -the whole must be on the terms of this License, whose permissions for other -licensees extend to the entire whole, and thus to each and every part -regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest your -rights to work written entirely by you; rather, the intent is to exercise the -right to control the distribution of derivative or collective works based on -the Linguistic Resource. - -In addition, mere aggregation of another work not based on the Linguistic -Resource with the Linguistic Resource (or with a work based on the Linguistic -Resource) on a volume of a storage or distribution medium does not bring the -other work under the scope of this License. - -3. A program that contains no derivative of any portion of the Linguistic Resource, but is designed to work with the Linguistic Resource (or an encrypted form of the Linguistic Resource) by reading it or being compiled or linked with it, is called a "work that uses the Linguistic Resource". Such a work, in isolation, is not a derivative work of the Linguistic Resource, and therefore falls outside the scope of this License. - -However, combining a "work that uses the Linguistic Resource" with the -Linguistic Resource (or an encrypted form of the Linguistic Resource) creates -a package that is a derivative of the Linguistic Resource (because it contains -portions of the Linguistic Resource), rather than a "work that uses the -Linguistic Resource". If the package is a derivative of the Linguistic -Resource, you may distribute the package under the terms of Section 4. Any -works containing that package also fall under Section 4. - -4. As an exception to the Sections above, you may also combine a "work that uses the Linguistic Resource" with the Linguistic Resource (or an encrypted form of the Linguistic Resource) to produce a package containing portions of the Linguistic Resource, and distribute that package under terms of your choice, provided that the terms permit modification of the package for the customer's own use and reverse engineering for debugging such modifications. - -You must give prominent notice with each copy of the package that the -Linguistic Resource is used in it and that the Linguistic Resource and its use -are covered by this License. You must supply a copy of this License. If the -package during execution displays copyright notices, you must include the -copyright notice for the Linguistic Resource among them, as well as a -reference directing the user to the copy of this License. Also, you must do -one of these things: - -a) Accompany the package with the complete corresponding machine-readable -legible form of the Linguistic Resource including whatever changes were used -in the package (which must be distributed under Sections 1 and 2 above); and, -if the package contains an encrypted form of the Linguistic Resource, with the -complete machine-readable "work that uses the Linguistic Resource", as object -code and/or source code, so that the user can modify the Linguistic Resource -and then encrypt it to produce a modified package containing the modified -Linguistic Resource. - -b) Use a suitable mechanism for combining with the Linguistic Resource. A -suitable mechanism is one that will operate properly with a modified version -of the Linguistic Resource, if the user installs one, as long as the modified -version is interface-compatible with the version that the package was made -with. - -c) Accompany the package with a written offer, valid for at least three years, -to give the same user the materials specified in Subsection 4a, above, for a -charge no more than the cost of performing this distribution. - -d) If distribution of the package is made by offering access to copy from a -designated place, offer equivalent access to copy the above specified -materials from the same place. - -e) Verify that the user has already received a copy of these materials or that -you have already sent this user a copy. - -If the package includes an encrypted form of the Linguistic Resource, the -required form of the "work that uses the Linguistic Resource" must include any -data and utility programs needed for reproducing the package from it. However, -as a special exception, the materials to be distributed need not include -anything that is normally distributed (in either source or binary form) with -the major components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies the -executable. - -It may happen that this requirement contradicts the license restrictions of -proprietary libraries that do not normally accompany the operating system. -Such a contradiction means you cannot use both them and the Linguistic -Resource together in a package that you distribute. - -5. You may not copy, modify, sublicense, link with, or distribute the Linguistic Resource except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Linguistic Resource is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. - -6. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Linguistic Resource or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Linguistic Resource (or any work based on the Linguistic Resource), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Linguistic Resource or works based on it. - -7. Each time you redistribute the Linguistic Resource (or any work based on the Linguistic Resource), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Linguistic Resource subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. - -8. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Linguistic Resource at all. For example, if a patent license would not permit royalty-free redistribution of the Linguistic Resource by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Linguistic Resource. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, and -the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any patents or -other property right claims or to contest validity of any such claims; this -section has the sole purpose of protecting the integrity of the free resource -distribution system which is implemented by public license practices. Many -people have made generous contributions to the wide range of data distributed -through that system in reliance on consistent application of that system; it -is up to the author/donor to decide if he or she is willing to distribute -resources through any other system and a licensee cannot impose that choice. - -This section is intended to make thoroughly clear what is believed to be a -consequence of the rest of this License. - -9. If the distribution and/or use of the Linguistic Resource is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Linguistic Resource under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. - -10. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License for Linguistic Resources from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Linguistic -Resource specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free Software -Foundation. If the Linguistic Resource does not specify a license version -number, you may choose any version ever published by the Free Software -Foundation. - -11. If you wish to incorporate parts of the Linguistic Resource into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. - -NO WARRANTY - -12. BECAUSE THE LINGUISTIC RESOURCE IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LINGUISTIC RESOURCE, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LINGUISTIC RESOURCE "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LINGUISTIC RESOURCE IS WITH YOU. SHOULD THE LINGUISTIC RESOURCE PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - -13. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LINGUISTIC RESOURCE AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LINGUISTIC RESOURCE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LINGUISTIC RESOURCE TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -END OF TERMS AND CONDITIONS - diff --git a/vendor/github.com/google/licenseclassifier/licenses/LPL-1.0.txt b/vendor/github.com/google/licenseclassifier/licenses/LPL-1.0.txt deleted file mode 100644 index 0965ccd..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/LPL-1.0.txt +++ /dev/null @@ -1,218 +0,0 @@ -Lucent Public License Version 1.0 - -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS PUBLIC LICENSE -("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM -CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. - -1. DEFINITIONS - -"Contribution" means: - -a. in the case of (" "), the Original Program, and - -b. in the case of each Contributor, - -i. changes to the Program, and - -ii. additions to the Program; where such changes and/or additions to the -Program originate from and are "Contributed" by that particular Contributor. - -A Contribution is "Contributed" by a Contributor only (i) if it was added to -the Program by such Contributor itself or anyone acting on such -Contributor's behalf, and (ii) the Contributor explicitly consents, in -accordance with Section 3C, to characterization of the changes and/or -additions as Contributions. Contributions do not include additions to the -Program which: (i) are separate modules of software distributed in conjunction -with the Program under their own license agreement, and (ii) are not -derivative works of the Program. - -"Contributor" means and any other entity that has Contributed a -Contribution to the Program. - -"Distributor" means a Recipient that distributes the Program, modifications to -the Program, or any part thereof. - -"Licensed Patents" mean patent claims licensable by a Contributor which are -necessarily infringed by the use or sale of its Contribution alone or when -combined with the Program. - -"Original Program" means the original version of the software accompanying -this Agreement as released by , including source code, object code and -documentation, if any. - -"Program" means the Original Program and Contributions or any part thereof - -"Recipient" means anyone who receives the Program under this Agreement, -including all Contributors. - -2. GRANT OF RIGHTS - -a. Subject to the terms of this Agreement, each Contributor hereby grants -Recipient a non-exclusive, worldwide, royalty-free copyright license to -reproduce, prepare derivative works of, publicly display, publicly perform, -distribute and sublicense the Contribution of such Contributor, if any, and -such derivative works, in source code and object code form. - -b. Subject to the terms of this Agreement, each Contributor hereby grants -Recipient a non-exclusive, worldwide, royalty-free patent license under -Licensed Patents to make, use, sell, offer to sell, import and otherwise -transfer the Contribution of such Contributor, if any, in source code and -object code form. The patent license granted by a Contributor shall also apply -to the combination of the Contribution of that Contributor and the Program if, -at the time the Contribution is added by the Contributor, such addition of the -Contribution causes such combination to be covered by the Licensed Patents. -The patent license granted by a Contributor shall not apply to (i) any other -combinations which include the Contribution, nor to (ii) Contributions of -other Contributors. No hardware per se is licensed hereunder. - -c. Recipient understands that although each Contributor grants the licenses to -its Contributions set forth herein, no assurances are provided by any -Contributor that the Program does not infringe the patent or other -intellectual property rights of any other entity. Each Contributor disclaims -any liability to Recipient for claims brought by any other entity based on -infringement of intellectual property rights or otherwise. As a condition to -exercising the rights and licenses granted hereunder, each Recipient hereby -assumes sole responsibility to secure any other intellectual property rights -needed, if any. For example, if a third party patent license is required to -allow Recipient to distribute the Program, it is Recipient's -responsibility to acquire that license before distributing the Program. - -d. Each Contributor represents that to its knowledge it has sufficient -copyright rights in its Contribution, if any, to grant the copyright license -set forth in this Agreement. - -3. REQUIREMENTS - -A. Distributor may choose to distribute the Program in any form under this -Agreement or under its own license agreement, provided that: - -1. it complies with the terms and conditions of this Agreement; -2. if the Program is distributed in source code or other tangible form, a copy of this Agreement or Distributor's own license agreement is included with each copy of the Program; and -3. if distributed under Distributor's own license agreement, such license agreement: - -a. effectively disclaims on behalf of all Contributors all warranties and -conditions, express and implied, including warranties or conditions of title -and non-infringement, and implied warranties or conditions of merchantability -and fitness for a particular purpose; - -b. effectively excludes on behalf of all Contributors all liability for -damages, including direct, indirect, special, incidental and consequential -damages, such as lost profits; and - -c. states that any provisions which differ from this Agreement are offered by -that Contributor alone and not by any other party. - -B. Each Distributor must include the following in a conspicuous location in -the Program: - -Copyright (C) , and others. All Rights Reserved. - -C. In addition, each Contributor must identify itself as the originator of its -Contribution, if any, and indicate its consent to characterization of its -additions and/or changes as a Contribution, in a manner that reasonably allows -subsequent Recipients to identify the originator of the Contribution. Once -consent is granted, it may not thereafter be revoked. - -4. COMMERCIAL DISTRIBUTION - -Commercial distributors of software may accept certain responsibilities with -respect to end users, business partners and the like. While this license is -intended to facilitate the commercial use of the Program, the Distributor who -includes the Program in a commercial product offering should do so in a manner -which does not create potential liability for Contributors. Therefore, if a -Distributor includes the Program in a commercial product offering, such -Distributor ("Commercial Distributor") hereby agrees to defend and indemnify -every Contributor ("Indemnified Contributor") against any losses, damages and -costs (collectively "Losses") arising from claims, lawsuits and other legal -actions brought by a third party against the Indemnified Contributor to the -extent caused by the acts or omissions of such Commercial Distributor in -connection with its distribution of the Program in a commercial product -offering. The obligations in this section do not apply to any claims or Losses -relating to any actual or alleged intellectual property infringement. In order -to qualify, an Indemnified Contributor must: a) promptly notify the Commercial -Distributor in writing of such claim, and b) allow the Commercial Distributor -to control, and cooperate with the Commercial Distributor in, the defense and -any related settlement negotiations. The Indemnified Contributor may -participate in any such claim at its own expense. - -For example, a Distributor might include the Program in a commercial product -offering, Product X. That Distributor is then a Commercial Distributor. If -that Commercial Distributor then makes performance claims, or offers -warranties related to Product X, those performance claims and warranties are -such Commercial Distributor's responsibility alone. Under this section, -the Commercial Distributor would have to defend claims against the -Contributors related to those performance claims and warranties, and if a -court requires any Contributor to pay any damages as a result, the Commercial -Distributor must pay those damages. - -5. NO WARRANTY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR -IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, -NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each -Recipient is solely responsible for determining the appropriateness of using -and distributing the Program and assumes all risks associated with its -exercise of rights under this Agreement, including but not limited to the -risks and costs of program errors, compliance with applicable laws, damage to -or loss of data, programs or equipment, and unavailability or interruption of -operations. - -6. DISCLAIMER OF LIABILITY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY -CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION -LOST PROFITS), 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 OR DISTRIBUTION OF THE PROGRAM OR THE -EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY -OF SUCH DAMAGES. - -7. GENERAL - -If any provision of this Agreement is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this Agreement, and without further action by the -parties hereto, such provision shall be reformed to the minimum extent -necessary to make such provision valid and enforceable. - -If Recipient institutes patent litigation against a Contributor with respect -to a patent applicable to software (including a cross-claim or counterclaim in -a lawsuit), then any patent licenses granted by that Contributor to such -Recipient under this Agreement shall terminate as of the date such litigation -is filed. In addition, if Recipient institutes patent litigation against any -entity (including a cross-claim or counterclaim in a lawsuit) alleging that -the Program itself (excluding combinations of the Program with other software -or hardware) infringes such Recipient's patent(s), then such -Recipient's rights granted under Section 2(b) shall terminate as of the -date such litigation is filed. - -All Recipient's rights under this Agreement shall terminate if it fails -to comply with any of the material terms or conditions of this Agreement and -does not cure such failure in a reasonable period of time after becoming aware -of such noncompliance. If all Recipient's rights under this Agreement -terminate, Recipient agrees to cease use and distribution of the Program as -soon as reasonably practicable. However, Recipient's obligations under -this Agreement and any licenses granted by Recipient relating to the Program -shall continue and survive. - - may publish new versions (including revisions) of this Agreement from -time to time. Each new version of the Agreement will be given a distinguishing -version number. The Program (including Contributions) may always be -distributed subject to the version of the Agreement under which it was -received. In addition, after a new version of the Agreement is published, -Contributor may elect to distribute the Program (including its Contributions) -under the new version. No one other than has the right to modify this -Agreement. Except as expressly stated in Sections 2(a) and 2(b) above, -Recipient receives no rights or licenses to the intellectual property of any -Contributor under this Agreement, whether expressly, by implication, estoppel -or otherwise. All rights in the Program not expressly granted under this -Agreement are reserved. - -This Agreement is governed by the laws of the State of and the -intellectual property laws of the United States of America. No party to this -Agreement will bring a legal action under this Agreement more than one year -after the cause of action arose. Each party waives its rights to a jury trial -in any resulting litigation. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/LPL-1.02.txt b/vendor/github.com/google/licenseclassifier/licenses/LPL-1.02.txt deleted file mode 100644 index 754ef92..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/LPL-1.02.txt +++ /dev/null @@ -1,220 +0,0 @@ -Lucent Public License Version 1.02 - -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS PUBLIC LICENSE -("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM -CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. - -1. DEFINITIONS - -"Contribution" means: - -a. in the case of Lucent Technologies Inc. ("LUCENT"), the Original Program, -and - -b. in the case of each Contributor, - -i. changes to the Program, and - -ii. additions to the Program; - -where such changes and/or additions to the Program were added to the Program -by such Contributor itself or anyone acting on such Contributor's behalf, -and the Contributor explicitly consents, in accordance with Section 3C, to -characterization of the changes and/or additions as Contributions. - -"Contributor" means LUCENT and any other entity that has Contributed a -Contribution to the Program. - -"Distributor" means a Recipient that distributes the Program, modifications to -the Program, or any part thereof. - -"Licensed Patents" mean patent claims licensable by a Contributor which are -necessarily infringed by the use or sale of its Contribution alone or when -combined with the Program. - -"Original Program" means the original version of the software accompanying -this Agreement as released by LUCENT, including source code, object code and -documentation, if any. - -"Program" means the Original Program and Contributions or any part thereof - -"Recipient" means anyone who receives the Program under this Agreement, -including all Contributors. - -2. GRANT OF RIGHTS - -a. Subject to the terms of this Agreement, each Contributor hereby grants -Recipient a non-exclusive, worldwide, royalty-free copyright license to -reproduce, prepare derivative works of, publicly display, publicly perform, -distribute and sublicense the Contribution of such Contributor, if any, and -such derivative works, in source code and object code form. - -b. Subject to the terms of this Agreement, each Contributor hereby grants -Recipient a non-exclusive, worldwide, royalty-free patent license under -Licensed Patents to make, use, sell, offer to sell, import and otherwise -transfer the Contribution of such Contributor, if any, in source code and -object code form. The patent license granted by a Contributor shall also apply -to the combination of the Contribution of that Contributor and the Program if, -at the time the Contribution is added by the Contributor, such addition of the -Contribution causes such combination to be covered by the Licensed Patents. -The patent license granted by a Contributor shall not apply to (i) any other -combinations which include the Contribution, nor to (ii) Contributions of -other Contributors. No hardware per se is licensed hereunder. - -c. Recipient understands that although each Contributor grants the licenses to -its Contributions set forth herein, no assurances are provided by any -Contributor that the Program does not infringe the patent or other -intellectual property rights of any other entity. Each Contributor disclaims -any liability to Recipient for claims brought by any other entity based on -infringement of intellectual property rights or otherwise. As a condition to -exercising the rights and licenses granted hereunder, each Recipient hereby -assumes sole responsibility to secure any other intellectual property rights -needed, if any. For example, if a third party patent license is required to -allow Recipient to distribute the Program, it is Recipient's -responsibility to acquire that license before distributing the Program. - -d. Each Contributor represents that to its knowledge it has sufficient -copyright rights in its Contribution, if any, to grant the copyright license -set forth in this Agreement. - -3. REQUIREMENTS - -A. Distributor may choose to distribute the Program in any form under this -Agreement or under its own license agreement, provided that: - -1. it complies with the terms and conditions of this Agreement; -2. if the Program is distributed in source code or other tangible form, a copy of this Agreement or Distributor's own license agreement is included with each copy of the Program; and -3. if distributed under Distributor's own license agreement, such license agreement: - -a. effectively disclaims on behalf of all Contributors all warranties and -conditions, express and implied, including warranties or conditions of title -and non-infringement, and implied warranties or conditions of merchantability -and fitness for a particular purpose; - -b. effectively excludes on behalf of all Contributors all liability for -damages, including direct, indirect, special, incidental and consequential -damages, such as lost profits; and - -c. states that any provisions which differ from this Agreement are offered by -that Contributor alone and not by any other party. - -B. Each Distributor must include the following in a conspicuous location in -the Program: - -Copyright (C) 2003, Lucent Technologies Inc. and others. All Rights Reserved. - -C. In addition, each Contributor must identify itself as the originator of its -Contribution in a manner that reasonably allows subsequent Recipients to -identify the originator of the Contribution. Also, each Contributor must agree -that the additions and/or changes are intended to be a Contribution. Once a -Contribution is contributed, it may not thereafter be revoked. - -4. COMMERCIAL DISTRIBUTION - -Commercial distributors of software may accept certain responsibilities with -respect to end users, business partners and the like. While this license is -intended to facilitate the commercial use of the Program, the Distributor who -includes the Program in a commercial product offering should do so in a manner -which does not create potential liability for Contributors. Therefore, if a -Distributor includes the Program in a commercial product offering, such -Distributor ("Commercial Distributor") hereby agrees to defend and indemnify -every Contributor ("Indemnified Contributor") against any losses, damages and -costs (collectively "Losses") arising from claims, lawsuits and other legal -actions brought by a third party against the Indemnified Contributor to the -extent caused by the acts or omissions of such Commercial Distributor in -connection with its distribution of the Program in a commercial product -offering. The obligations in this section do not apply to any claims or Losses -relating to any actual or alleged intellectual property infringement. In order -to qualify, an Indemnified Contributor must: a) promptly notify the Commercial -Distributor in writing of such claim, and b) allow the Commercial Distributor -to control, and cooperate with the Commercial Distributor in, the defense and -any related settlement negotiations. The Indemnified Contributor may -participate in any such claim at its own expense. - -For example, a Distributor might include the Program in a commercial product -offering, Product X. That Distributor is then a Commercial Distributor. If -that Commercial Distributor then makes performance claims, or offers -warranties related to Product X, those performance claims and warranties are -such Commercial Distributor's responsibility alone. Under this section, -the Commercial Distributor would have to defend claims against the -Contributors related to those performance claims and warranties, and if a -court requires any Contributor to pay any damages as a result, the Commercial -Distributor must pay those damages. - -5. NO WARRANTY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR -IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, -NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each -Recipient is solely responsible for determining the appropriateness of using -and distributing the Program and assumes all risks associated with its -exercise of rights under this Agreement, including but not limited to the -risks and costs of program errors, compliance with applicable laws, damage to -or loss of data, programs or equipment, and unavailability or interruption of -operations. - -6. DISCLAIMER OF LIABILITY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY -CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION -LOST PROFITS), 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 OR DISTRIBUTION OF THE PROGRAM OR THE -EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY -OF SUCH DAMAGES. - -7. EXPORT CONTROL - -Recipient agrees that Recipient alone is responsible for compliance with the -United States export administration regulations (and the export control laws -and regulation of any other countries). - -8. GENERAL - -If any provision of this Agreement is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this Agreement, and without further action by the -parties hereto, such provision shall be reformed to the minimum extent -necessary to make such provision valid and enforceable. - -If Recipient institutes patent litigation against a Contributor with respect -to a patent applicable to software (including a cross-claim or counterclaim in -a lawsuit), then any patent licenses granted by that Contributor to such -Recipient under this Agreement shall terminate as of the date such litigation -is filed. In addition, if Recipient institutes patent litigation against any -entity (including a cross-claim or counterclaim in a lawsuit) alleging that -the Program itself (excluding combinations of the Program with other software -or hardware) infringes such Recipient's patent(s), then such -Recipient's rights granted under Section 2(b) shall terminate as of the -date such litigation is filed. - -All Recipient's rights under this Agreement shall terminate if it fails -to comply with any of the material terms or conditions of this Agreement and -does not cure such failure in a reasonable period of time after becoming aware -of such noncompliance. If all Recipient's rights under this Agreement -terminate, Recipient agrees to cease use and distribution of the Program as -soon as reasonably practicable. However, Recipient's obligations under -this Agreement and any licenses granted by Recipient relating to the Program -shall continue and survive. - -LUCENT may publish new versions (including revisions) of this Agreement from -time to time. Each new version of the Agreement will be given a distinguishing -version number. The Program (including Contributions) may always be -distributed subject to the version of the Agreement under which it was -received. In addition, after a new version of the Agreement is published, -Contributor may elect to distribute the Program (including its Contributions) -under the new version. No one other than LUCENT has the right to modify this -Agreement. Except as expressly stated in Sections 2(a) and 2(b) above, -Recipient receives no rights or licenses to the intellectual property of any -Contributor under this Agreement, whether expressly, by implication, estoppel -or otherwise. All rights in the Program not expressly granted under this -Agreement are reserved. - -This Agreement is governed by the laws of the State of New York and the -intellectual property laws of the United States of America. No party to this -Agreement will bring a legal action under this Agreement more than one year -after the cause of action arose. Each party waives its rights to a jury trial -in any resulting litigation. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/LPPL-1.3c.txt b/vendor/github.com/google/licenseclassifier/licenses/LPPL-1.3c.txt deleted file mode 100644 index 4db9b5a..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/LPPL-1.3c.txt +++ /dev/null @@ -1,415 +0,0 @@ -The LaTeX Project Public License -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- - -LPPL Version 1.3c 2008-05-04 - -Copyright 1999 2002-2008 LaTeX3 Project - Everyone is allowed to distribute verbatim copies of this - license document, but modification of it is not allowed. - - -PREAMBLE -======== - -The LaTeX Project Public License (LPPL) is the primary license under -which the LaTeX kernel and the base LaTeX packages are distributed. - -You may use this license for any work of which you hold the copyright -and which you wish to distribute. This license may be particularly -suitable if your work is TeX-related (such as a LaTeX package), but -it is written in such a way that you can use it even if your work is -unrelated to TeX. - -The section `WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE', -below, gives instructions, examples, and recommendations for authors -who are considering distributing their works under this license. - -This license gives conditions under which a work may be distributed -and modified, as well as conditions under which modified versions of -that work may be distributed. - -We, the LaTeX3 Project, believe that the conditions below give you -the freedom to make and distribute modified versions of your work -that conform with whatever technical specifications you wish while -maintaining the availability, integrity, and reliability of -that work. If you do not see how to achieve your goal while -meeting these conditions, then read the document `cfgguide.tex' -and `modguide.tex' in the base LaTeX distribution for suggestions. - - -DEFINITIONS -=========== - -In this license document the following terms are used: - - `Work' - Any work being distributed under this License. - - `Derived Work' - Any work that under any applicable law is derived from the Work. - - `Modification' - Any procedure that produces a Derived Work under any applicable - law -- for example, the production of a file containing an - original file associated with the Work or a significant portion of - such a file, either verbatim or with modifications and/or - translated into another language. - - `Modify' - To apply any procedure that produces a Derived Work under any - applicable law. - - `Distribution' - Making copies of the Work available from one person to another, in - whole or in part. Distribution includes (but is not limited to) - making any electronic components of the Work accessible by - file transfer protocols such as FTP or HTTP or by shared file - systems such as Sun's Network File System (NFS). - - `Compiled Work' - A version of the Work that has been processed into a form where it - is directly usable on a computer system. This processing may - include using installation facilities provided by the Work, - transformations of the Work, copying of components of the Work, or - other activities. Note that modification of any installation - facilities provided by the Work constitutes modification of the Work. - - `Current Maintainer' - A person or persons nominated as such within the Work. If there is - no such explicit nomination then it is the `Copyright Holder' under - any applicable law. - - `Base Interpreter' - A program or process that is normally needed for running or - interpreting a part or the whole of the Work. - - A Base Interpreter may depend on external components but these - are not considered part of the Base Interpreter provided that each - external component clearly identifies itself whenever it is used - interactively. Unless explicitly specified when applying the - license to the Work, the only applicable Base Interpreter is a - `LaTeX-Format' or in the case of files belonging to the - `LaTeX-format' a program implementing the `TeX language'. - - - -CONDITIONS ON DISTRIBUTION AND MODIFICATION -=========================================== - -1. Activities other than distribution and/or modification of the Work -are not covered by this license; they are outside its scope. In -particular, the act of running the Work is not restricted and no -requirements are made concerning any offers of support for the Work. - -2. You may distribute a complete, unmodified copy of the Work as you -received it. Distribution of only part of the Work is considered -modification of the Work, and no right to distribute such a Derived -Work may be assumed under the terms of this clause. - -3. You may distribute a Compiled Work that has been generated from a -complete, unmodified copy of the Work as distributed under Clause 2 -above, as long as that Compiled Work is distributed in such a way that -the recipients may install the Compiled Work on their system exactly -as it would have been installed if they generated a Compiled Work -directly from the Work. - -4. If you are the Current Maintainer of the Work, you may, without -restriction, modify the Work, thus creating a Derived Work. You may -also distribute the Derived Work without restriction, including -Compiled Works generated from the Derived Work. Derived Works -distributed in this manner by the Current Maintainer are considered to -be updated versions of the Work. - -5. If you are not the Current Maintainer of the Work, you may modify -your copy of the Work, thus creating a Derived Work based on the Work, -and compile this Derived Work, thus creating a Compiled Work based on -the Derived Work. - -6. If you are not the Current Maintainer of the Work, you may -distribute a Derived Work provided the following conditions are met -for every component of the Work unless that component clearly states -in the copyright notice that it is exempt from that condition. Only -the Current Maintainer is allowed to add such statements of exemption -to a component of the Work. - - a. If a component of this Derived Work can be a direct replacement - for a component of the Work when that component is used with the - Base Interpreter, then, wherever this component of the Work - identifies itself to the user when used interactively with that - Base Interpreter, the replacement component of this Derived Work - clearly and unambiguously identifies itself as a modified version - of this component to the user when used interactively with that - Base Interpreter. - - b. Every component of the Derived Work contains prominent notices - detailing the nature of the changes to that component, or a - prominent reference to another file that is distributed as part - of the Derived Work and that contains a complete and accurate log - of the changes. - - c. No information in the Derived Work implies that any persons, - including (but not limited to) the authors of the original version - of the Work, provide any support, including (but not limited to) - the reporting and handling of errors, to recipients of the - Derived Work unless those persons have stated explicitly that - they do provide such support for the Derived Work. - - d. You distribute at least one of the following with the Derived Work: - - 1. A complete, unmodified copy of the Work; - if your distribution of a modified component is made by - offering access to copy the modified component from a - designated place, then offering equivalent access to copy - the Work from the same or some similar place meets this - condition, even though third parties are not compelled to - copy the Work along with the modified component; - - 2. Information that is sufficient to obtain a complete, - unmodified copy of the Work. - -7. If you are not the Current Maintainer of the Work, you may -distribute a Compiled Work generated from a Derived Work, as long as -the Derived Work is distributed to all recipients of the Compiled -Work, and as long as the conditions of Clause 6, above, are met with -regard to the Derived Work. - -8. The conditions above are not intended to prohibit, and hence do not -apply to, the modification, by any method, of any component so that it -becomes identical to an updated version of that component of the Work as -it is distributed by the Current Maintainer under Clause 4, above. - -9. Distribution of the Work or any Derived Work in an alternative -format, where the Work or that Derived Work (in whole or in part) is -then produced by applying some process to that format, does not relax or -nullify any sections of this license as they pertain to the results of -applying that process. - -10. a. A Derived Work may be distributed under a different license - provided that license itself honors the conditions listed in - Clause 6 above, in regard to the Work, though it does not have - to honor the rest of the conditions in this license. - - b. If a Derived Work is distributed under a different license, that - Derived Work must provide sufficient documentation as part of - itself to allow each recipient of that Derived Work to honor the - restrictions in Clause 6 above, concerning changes from the Work. - -11. This license places no restrictions on works that are unrelated to -the Work, nor does this license place any restrictions on aggregating -such works with the Work by any means. - -12. Nothing in this license is intended to, or may be used to, prevent -complete compliance by all parties with all applicable laws. - - -NO WARRANTY -=========== - -There is no warranty for the Work. Except when otherwise stated in -writing, the Copyright Holder provides the Work `as is', without -warranty of any kind, either expressed or implied, including, but not -limited to, the implied warranties of merchantability and fitness for a -particular purpose. The entire risk as to the quality and performance -of the Work is with you. Should the Work prove defective, you assume -the cost of all necessary servicing, repair, or correction. - -In no event unless required by applicable law or agreed to in writing -will The Copyright Holder, or any author named in the components of the -Work, or any other party who may distribute and/or modify the Work as -permitted above, be liable to you for damages, including any general, -special, incidental or consequential damages arising out of any use of -the Work or out of inability to use the Work (including, but not limited -to, loss of data, data being rendered inaccurate, or losses sustained by -anyone as a result of any failure of the Work to operate with any other -programs), even if the Copyright Holder or said author or said other -party has been advised of the possibility of such damages. - - -MAINTENANCE OF THE WORK -======================= - -The Work has the status `author-maintained' if the Copyright Holder -explicitly and prominently states near the primary copyright notice in -the Work that the Work can only be maintained by the Copyright Holder -or simply that it is `author-maintained'. - -The Work has the status `maintained' if there is a Current Maintainer -who has indicated in the Work that they are willing to receive error -reports for the Work (for example, by supplying a valid e-mail -address). It is not required for the Current Maintainer to acknowledge -or act upon these error reports. - -The Work changes from status `maintained' to `unmaintained' if there -is no Current Maintainer, or the person stated to be Current -Maintainer of the work cannot be reached through the indicated means -of communication for a period of six months, and there are no other -significant signs of active maintenance. - -You can become the Current Maintainer of the Work by agreement with -any existing Current Maintainer to take over this role. - -If the Work is unmaintained, you can become the Current Maintainer of -the Work through the following steps: - - 1. Make a reasonable attempt to trace the Current Maintainer (and - the Copyright Holder, if the two differ) through the means of - an Internet or similar search. - - 2. If this search is successful, then enquire whether the Work - is still maintained. - - a. If it is being maintained, then ask the Current Maintainer - to update their communication data within one month. - - b. If the search is unsuccessful or no action to resume active - maintenance is taken by the Current Maintainer, then announce - within the pertinent community your intention to take over - maintenance. (If the Work is a LaTeX work, this could be - done, for example, by posting to comp.text.tex.) - - 3a. If the Current Maintainer is reachable and agrees to pass - maintenance of the Work to you, then this takes effect - immediately upon announcement. - - b. If the Current Maintainer is not reachable and the Copyright - Holder agrees that maintenance of the Work be passed to you, - then this takes effect immediately upon announcement. - - 4. If you make an `intention announcement' as described in 2b. above - and after three months your intention is challenged neither by - the Current Maintainer nor by the Copyright Holder nor by other - people, then you may arrange for the Work to be changed so as - to name you as the (new) Current Maintainer. - - 5. If the previously unreachable Current Maintainer becomes - reachable once more within three months of a change completed - under the terms of 3b) or 4), then that Current Maintainer must - become or remain the Current Maintainer upon request provided - they then update their communication data within one month. - -A change in the Current Maintainer does not, of itself, alter the fact -that the Work is distributed under the LPPL license. - -If you become the Current Maintainer of the Work, you should -immediately provide, within the Work, a prominent and unambiguous -statement of your status as Current Maintainer. You should also -announce your new status to the same pertinent community as -in 2b) above. - - -WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE -====================================================== - -This section contains important instructions, examples, and -recommendations for authors who are considering distributing their -works under this license. These authors are addressed as `you' in -this section. - -Choosing This License or Another License ----------------------------------------- - -If for any part of your work you want or need to use *distribution* -conditions that differ significantly from those in this license, then -do not refer to this license anywhere in your work but, instead, -distribute your work under a different license. You may use the text -of this license as a model for your own license, but your license -should not refer to the LPPL or otherwise give the impression that -your work is distributed under the LPPL. - -The document `modguide.tex' in the base LaTeX distribution explains -the motivation behind the conditions of this license. It explains, -for example, why distributing LaTeX under the GNU General Public -License (GPL) was considered inappropriate. Even if your work is -unrelated to LaTeX, the discussion in `modguide.tex' may still be -relevant, and authors intending to distribute their works under any -license are encouraged to read it. - -A Recommendation on Modification Without Distribution ------------------------------------------------------ - -It is wise never to modify a component of the Work, even for your own -personal use, without also meeting the above conditions for -distributing the modified component. While you might intend that such -modifications will never be distributed, often this will happen by -accident -- you may forget that you have modified that component; or -it may not occur to you when allowing others to access the modified -version that you are thus distributing it and violating the conditions -of this license in ways that could have legal implications and, worse, -cause problems for the community. It is therefore usually in your -best interest to keep your copy of the Work identical with the public -one. Many works provide ways to control the behavior of that work -without altering any of its licensed components. - -How to Use This License ------------------------ - -To use this license, place in each of the components of your work both -an explicit copyright notice including your name and the year the work -was authored and/or last substantially modified. Include also a -statement that the distribution and/or modification of that -component is constrained by the conditions in this license. - -Here is an example of such a notice and statement: - - %% pig.dtx - %% Copyright 2005 M. Y. Name - % - % This work may be distributed and/or modified under the - % conditions of the LaTeX Project Public License, either version 1.3 - % of this license or (at your option) any later version. - % The latest version of this license is in - % http://www.latex-project.org/lppl.txt - % and version 1.3 or later is part of all distributions of LaTeX - % version 2005/12/01 or later. - % - % This work has the LPPL maintenance status `maintained'. - % - % The Current Maintainer of this work is M. Y. Name. - % - % This work consists of the files pig.dtx and pig.ins - % and the derived file pig.sty. - -Given such a notice and statement in a file, the conditions -given in this license document would apply, with the `Work' referring -to the three files `pig.dtx', `pig.ins', and `pig.sty' (the last being -generated from `pig.dtx' using `pig.ins'), the `Base Interpreter' -referring to any `LaTeX-Format', and both `Copyright Holder' and -`Current Maintainer' referring to the person `M. Y. Name'. - -If you do not want the Maintenance section of LPPL to apply to your -Work, change `maintained' above into `author-maintained'. -However, we recommend that you use `maintained', as the Maintenance -section was added in order to ensure that your Work remains useful to -the community even when you can no longer maintain and support it -yourself. - -Derived Works That Are Not Replacements ---------------------------------------- - -Several clauses of the LPPL specify means to provide reliability and -stability for the user community. They therefore concern themselves -with the case that a Derived Work is intended to be used as a -(compatible or incompatible) replacement of the original Work. If -this is not the case (e.g., if a few lines of code are reused for a -completely different task), then clauses 6b and 6d shall not apply. - - -Important Recommendations -------------------------- - - Defining What Constitutes the Work - - The LPPL requires that distributions of the Work contain all the - files of the Work. It is therefore important that you provide a - way for the licensee to determine which files constitute the Work. - This could, for example, be achieved by explicitly listing all the - files of the Work near the copyright notice of each file or by - using a line such as: - - % This work consists of all files listed in manifest.txt. - - in that place. In the absence of an unequivocal list it might be - impossible for the licensee to determine what is considered by you - to comprise the Work and, in such a case, the licensee would be - entitled to make reasonable conjectures as to which files comprise - the Work. diff --git a/vendor/github.com/google/licenseclassifier/licenses/Libpng.txt b/vendor/github.com/google/licenseclassifier/licenses/Libpng.txt deleted file mode 100644 index 9b5cb98..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/Libpng.txt +++ /dev/null @@ -1,127 +0,0 @@ -This copy of the libpng notices is provided for your convenience. In case of -any discrepancy between this copy and the notices in the file png.h that is -included in the libpng distribution, the latter shall prevail. - -COPYRIGHT NOTICE, DISCLAIMER, and LICENSE: - -If you modify libpng you may insert additional notices immediately following -this sentence. - -This code is released under the libpng license. - -libpng versions 1.2.6, August 15, 2004, through 1.4.5, December 9, 2010, are -Copyright (c) 2004, 2006-2010 Glenn Randers-Pehrson, and are distributed -according to the same disclaimer and license as libpng-1.2.5 with the -following individual added to the list of Contributing Authors - -Cosmin Truta - -libpng versions 1.0.7, July 1, 2000, through 1.2.5 - October 3, 2002, are - -Copyright (c) 2000-2002 Glenn Randers-Pehrson, and are distributed according -to the same disclaimer and license as libpng-1.0.6 with the following -individuals added to the list of Contributing Authors - -Simon-Pierre Cadieux - -Eric S. Raymond - -Gilles Vollant - -and with the following additions to the disclaimer: - -There is no warranty against interference with your enjoyment of the library -or against infringement. There is no warranty that our efforts or the library -will fulfill any of your particular purposes or needs. This library is -provided with all faults, and the entire risk of satisfactory quality, -performance, accuracy, and effort is with the user. - -libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are - -Copyright (c) 1998, 1999 Glenn Randers-Pehrson, and are distributed according -to the same disclaimer and license as libpng-0.96, with the following -individuals added to the list of Contributing Authors: - -Tom Lane - -Glenn Randers-Pehrson - -Willem van Schaik - -libpng versions 0.89, June 1996, through 0.96, May 1997, are - -Copyright (c) 1996, 1997 Andreas Digger - -Distributed according to the same disclaimer and license as libpng-0.88, with -the following individuals added to the list of Contributing Authors: - -John Bowler - -Kevin Bracey - -Sam Bushell - -Magnus Holmgren - -Greg Roelofs - -Tom Tanner - -libpng versions 0.5, May 1995, through 0.88, January 1996, are - -Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc. - -For the purposes of this copyright and license, "Contributing Authors" is -defined as the following set of individuals: - -Andreas Dilger - -Dave Martindale - -Guy Eric Schalnat - -Paul Schmidt - -Tim Wegner - -The PNG Reference Library is supplied "AS IS". The Contributing Authors and -Group 42, Inc. disclaim all warranties, expressed or implied, including, -without limitation, the warranties of merchantability and of fitness for any -purpose. The Contributing Authors and Group 42, Inc. assume no liability for -direct, indirect, incidental, special, exemplary, or consequential damages, -which may result from the use of the PNG Reference Library, even if advised of -the possibility of such damage. - -Permission is hereby granted to use, copy, modify, and distribute this source -code, or portions hereof, for any purpose, without fee, subject to the -following restrictions: - -1. The origin of this source code must not be misrepresented. - -2. Altered versions must be plainly marked as such and must not be misrepresented as being the original source. - -3. This Copyright notice may not be removed or altered from any source or altered source distribution. - -The Contributing Authors and Group 42, Inc. specifically permit, without fee, -and encourage the use of this source code as a component to supporting the PNG -file format in commercial products. If you use this source code in a product, -acknowledgment is not required but would be appreciated. - - -A "png_get_copyright" function is available, for convenient use in "about" -boxes and the like: - -printf("%s",png_get_copyright(NULL)); - -Also, the PNG logo (in PNG format, of course) is supplied in the files -"pngbar.png" and "pngbar.jpg (88x31) and "pngnow.png" (98x31). - -Libpng is OSI Certified Open Source Software. OSI Certified Open Source is a -certification mark of the Open Source Initiative. - -Glenn Randers-Pehrson - -glennrp at users.sourceforge.net - -December 9, 2010 - diff --git a/vendor/github.com/google/licenseclassifier/licenses/Lil-1.0.txt b/vendor/github.com/google/licenseclassifier/licenses/Lil-1.0.txt deleted file mode 100644 index c6aabf3..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/Lil-1.0.txt +++ /dev/null @@ -1,20 +0,0 @@ -The Lil License v1 - -Copyright (c) [years] [authors] - -Permission is hereby granted by the authors of this software, to any person, to -use the software for any purpose, free of charge, including the rights to run, -read, copy, change, distribute and sell it, and including usage rights to any -patents the authors may hold on it, subject to the following conditions: - -This license, or a link to its text, must be included with all copies of the -software and any derivative works. - -Any modification to the software submitted to the authors may be incorporated -into the software under the terms of this license. - -The software is provided "as is", without warranty of any kind, including but -not limited to the warranties of title, fitness, merchantability and -non-infringement. The authors have no obligation to provide support or updates -for the software, and may not be held liable for any damages, claims or other -liability arising from its use. diff --git a/vendor/github.com/google/licenseclassifier/licenses/Linux-OpenIB.txt b/vendor/github.com/google/licenseclassifier/licenses/Linux-OpenIB.txt deleted file mode 100644 index 58f0847..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/Linux-OpenIB.txt +++ /dev/null @@ -1,17 +0,0 @@ -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. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/vendor/github.com/google/licenseclassifier/licenses/MIT.txt b/vendor/github.com/google/licenseclassifier/licenses/MIT.txt deleted file mode 100644 index 64a801a..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/MIT.txt +++ /dev/null @@ -1,18 +0,0 @@ -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/MPL-1.0.header.txt b/vendor/github.com/google/licenseclassifier/licenses/MPL-1.0.header.txt deleted file mode 100644 index 98ce89c..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/MPL-1.0.header.txt +++ /dev/null @@ -1,14 +0,0 @@ -The contents of this file are subject to the Mozilla Public License Version 1.0 -(the "License"); you may not use this file except in compliance with the -License. You may obtain a copy of the License at http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the -specific language governing rights and limitations under the License. - -The Original Code is _____ . - -The Initial Developer of the Original Code is _____ . Portions created by _____ -are Copyright (C) _____ . All Rights Reserved. - -Contributor(s): _____ . diff --git a/vendor/github.com/google/licenseclassifier/licenses/MPL-1.0.txt b/vendor/github.com/google/licenseclassifier/licenses/MPL-1.0.txt deleted file mode 100644 index 7553326..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/MPL-1.0.txt +++ /dev/null @@ -1,344 +0,0 @@ -MOZILLA PUBLIC LICENSE - -Version 1.0 - -1. Definitions. - -1.1. ``Contributor'' means each entity that creates or contributes -to the creation of Modifications. - -1.2. ``Contributor Version'' means the combination of the Original -Code, prior Modifications used by a Contributor, and the Modifications made by -that particular Contributor. - -1.3. ``Covered Code'' means the Original Code or Modifications or -the combination of the Original Code and Modifications, in each case including -portions thereof. - -1.4. ``Electronic Distribution Mechanism'' means a mechanism -generally accepted in the software development community for the electronic -transfer of data. - -1.5. ``Executable'' means Covered Code in any form other than Source -Code. - -1.6. ``Initial Developer'' means the individual or entity identified -as the Initial Developer in the Source Code notice required by Exhibit A. - -1.7. ``Larger Work'' means a work which combines Covered Code or -portions thereof with code not governed by the terms of this License. - -1.8. ``License'' means this document. - -1.9. ``Modifications'' means any addition to or deletion from the -substance or structure of either the Original Code or any previous -Modifications. When Covered Code is released as a series of files, a -Modification is: - -A. Any addition to or deletion from the contents of a file containing Original -Code or previous Modifications. - -B. Any new file that contains any part of the Original Code or previous -Modifications. - -1.10. ``Original Code'' means Source Code of computer software code -which is described in the Source Code notice required by Exhibit A as Original -Code, and which, at the time of its release under this License is not already -Covered Code governed by this License. - -1.11. ``Source Code'' means the preferred form of the Covered Code -for making modifications to it, including all modules it contains, plus any -associated interface definition files, scripts used to control compilation and -installation of an Executable, or a list of source code differential -comparisons against either the Original Code or another well known, available -Covered Code of the Contributor's choice. The Source Code can be in a -compressed or archival form, provided the appropriate decompression or de- -archiving software is widely available for no charge. - -1.12. ``You'' means an individual or a legal entity exercising -rights under, and complying with all of the terms of, this License or a future -version of this License issued under Section 6.1. For legal entities, -``You'' includes any entity which controls, is controlled by, or is -under common control with You. For purposes of this definition, -``control'' means (a) the power, direct or indirect, to cause the -direction or management of such entity, whether by contract or otherwise, or -(b) ownership of fifty percent (50%) or more of the outstanding shares or -beneficial ownership of such entity. - -2. Source Code License. - -2.1. The Initial Developer Grant. - -The Initial Developer hereby grants You a world-wide, royalty-free, non- -exclusive license, subject to third party intellectual property claims: - -(a) to use, reproduce, modify, display, perform, sublicense and distribute the -Original Code (or portions thereof) with or without Modifications, or as part -of a Larger Work; and - -(b) under patents now or hereafter owned or controlled by Initial Developer, -to make, have made, use and sell (``Utilize'') the Original Code (or -portions thereof), but solely to the extent that any such patent is reasonably -necessary to enable You to Utilize the Original Code (or portions thereof) and -not to any greater extent that may be necessary to Utilize further -Modifications or combinations. - -2.2. Contributor Grant. - -Each Contributor hereby grants You a world-wide, royalty-free, non-exclusive -license, subject to third party intellectual property claims: - -(a) to use, reproduce, modify, display, perform, sublicense and distribute the -Modifications created by such Contributor (or portions thereof) either on an -unmodified basis, with other Modifications, as Covered Code or as part of a -Larger Work; and - -(b) under patents now or hereafter owned or controlled by Contributor, to -Utilize the Contributor Version (or portions thereof), but solely to the -extent that any such patent is reasonably necessary to enable You to Utilize -the Contributor Version (or portions thereof), and not to any greater extent -that may be necessary to Utilize further Modifications or combinations. - -3. Distribution Obligations. - -3.1. Application of License. - -The Modifications which You create or to which You contribute are governed by -the terms of this License, including without limitation Section 2.2. The -Source Code version of Covered Code may be distributed only under the terms of -this License or a future version of this License released under Section 6.1, -and You must include a copy of this License with every copy of the Source Code -You distribute. You may not offer or impose any terms on any Source Code -version that alters or restricts the applicable version of this License or the -recipients' rights hereunder. However, You may include an additional -document offering the additional rights described in Section 3.5. - -3.2. Availability of Source Code. - -Any Modification which You create or to which You contribute must be made -available in Source Code form under the terms of this License either on the -same media as an Executable version or via an accepted Electronic Distribution -Mechanism to anyone to whom you made an Executable version available; and if -made available via Electronic Distribution Mechanism, must remain available -for at least twelve (12) months after the date it initially became available, -or at least six (6) months after a subsequent version of that particular -Modification has been made available to such recipients. You are responsible -for ensuring that the Source Code version remains available even if the -Electronic Distribution Mechanism is maintained by a third party. - -3.3. Description of Modifications. - -You must cause all Covered Code to which you contribute to contain a file -documenting the changes You made to create that Covered Code and the date of -any change. You must include a prominent statement that the Modification is -derived, directly or indirectly, from Original Code provided by the Initial -Developer and including the name of the Initial Developer in (a) the Source -Code, and (b) in any notice in an Executable version or related documentation -in which You describe the origin or ownership of the Covered Code. - -3.4. Intellectual Property Matters - -(a) Third Party Claims. - -If You have knowledge that a party claims an intellectual property right in -particular functionality or code (or its utilization under this License), you -must include a text file with the source code distribution titled -``LEGAL'' which describes the claim and the party making the claim -in sufficient detail that a recipient will know whom to contact. If you obtain -such knowledge after You make Your Modification available as described in -Section 3.2, You shall promptly modify the LEGAL file in all copies You make -available thereafter and shall take other steps (such as notifying appropriate -mailing lists or newsgroups) reasonably calculated to inform those who -received the Covered Code that new knowledge has been obtained. - -(b) Contributor APIs. - -If Your Modification is an application programming interface and You own or -control patents which are reasonably necessary to implement that API, you must -also include this information in the LEGAL file. - -3.5. Required Notices. - -You must duplicate the notice in Exhibit A in each file of the Source Code, -and this License in any documentation for the Source Code, where You describe -recipients' rights relating to Covered Code. If You created one or more -Modification(s), You may add your name as a Contributor to the notice -described in Exhibit A. If it is not possible to put such notice in a -particular Source Code file due to its structure, then you must include such -notice in a location (such as a relevant directory file) where a user would be -likely to look for such a notice. You may choose to offer, and to charge a fee -for, warranty, support, indemnity or liability obligations to one or more -recipients of Covered Code. However, You may do so only on Your own behalf, -and not on behalf of the Initial Developer or any Contributor. You must make -it absolutely clear than any such warranty, support, indemnity or liability -obligation is offered by You alone, and You hereby agree to indemnify the -Initial Developer and every Contributor for any liability incurred by the -Initial Developer or such Contributor as a result of warranty, support, -indemnity or liability terms You offer. - -3.6. Distribution of Executable Versions. - -You may distribute Covered Code in Executable form only if the requirements of -Section 3.1-3.5 have been met for that Covered Code, and if You include a -notice stating that the Source Code version of the Covered Code is available -under the terms of this License, including a description of how and where You -have fulfilled the obligations of Section 3.2. The notice must be -conspicuously included in any notice in an Executable version, related -documentation or collateral in which You describe recipients' rights -relating to the Covered Code. You may distribute the Executable version of -Covered Code under a license of Your choice, which may contain terms different -from this License, provided that You are in compliance with the terms of this -License and that the license for the Executable version does not attempt to -limit or alter the recipient's rights in the Source Code version from the -rights set forth in this License. If You distribute the Executable version -under a different license You must make it absolutely clear that any terms -which differ from this License are offered by You alone, not by the Initial -Developer or any Contributor. You hereby agree to indemnify the Initial -Developer and every Contributor for any liability incurred by the Initial -Developer or such Contributor as a result of any such terms You offer. - -3.7. Larger Works. - -You may create a Larger Work by combining Covered Code with other code not -governed by the terms of this License and distribute the Larger Work as a -single product. In such a case, You must make sure the requirements of this -License are fulfilled for the Covered Code. - -4. Inability to Comply Due to Statute or Regulation. -If it is impossible for You to comply with any of the terms of this License -with respect to some or all of the Covered Code due to statute or regulation -then You must: (a) comply with the terms of this License to the maximum extent -possible; and (b) describe the limitations and the code they affect. Such -description must be included in the LEGAL file described in Section 3.4 and -must be included with all distributions of the Source Code. Except to the -extent prohibited by statute or regulation, such description must be -sufficiently detailed for a recipient of ordinary skill to be able to -understand it. - -5. Application of this License. -This License applies to code to which the Initial Developer has attached the -notice in Exhibit A, and to related Covered Code. - -6. Versions of the License. - -6.1. New Versions. - -Netscape Communications Corporation (``Netscape'') may publish -revised and/or new versions of the License from time to time. Each version -will be given a distinguishing version number. - -6.2. Effect of New Versions. - -Once Covered Code has been published under a particular version of the -License, You may always continue to use it under the terms of that version. -You may also choose to use such Covered Code under the terms of any subsequent -version of the License published by Netscape. No one other than Netscape has -the right to modify the terms applicable to Covered Code created under this -License. - -6.3. Derivative Works. - -If you create or use a modified version of this License (which you may only do -in order to apply it to code which is not already Covered Code governed by -this License), you must (a) rename Your license so that the phrases -``Mozilla'', ``MOZILLAPL'', ``MOZPL'', -``Netscape'', ``NPL'' or any confusingly similar phrase do -not appear anywhere in your license and (b) otherwise make it clear that your -version of the license contains terms which differ from the Mozilla Public -License and Netscape Public License. (Filling in the name of the Initial -Developer, Original Code or Contributor in the notice described in Exhibit A -shall not of themselves be deemed to be modifications of this License.) - -7. DISCLAIMER OF WARRANTY. -COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN ``AS IS'' BASIS, -WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT -LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, -FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE -QUALITY AND PERFORMANCE OF THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED -CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY -OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR -CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS -LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS -DISCLAIMER. - -8. TERMINATION. -This License and the rights granted hereunder will terminate automatically if -You fail to comply with terms herein and fail to cure such breach within 30 -days of becoming aware of the breach. All sublicenses to the Covered Code -which are properly granted shall survive any termination of this License. -Provisions which, by their nature, must remain in effect beyond the -termination of this License shall survive. - -9. LIMITATION OF LIABILITY. -UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING -NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE INITIAL DEVELOPER, ANY OTHER -CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, OR ANY SUPPLIER OF ANY OF -SUCH PARTIES, BE LIABLE TO YOU OR ANY OTHER PERSON FOR ANY INDIRECT, SPECIAL, -INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT -LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR -MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH -PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS -LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL -INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE -LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION -OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THAT EXCLUSION AND -LIMITATION MAY NOT APPLY TO YOU. - -10. U.S. GOVERNMENT END USERS. -The Covered Code is a ``commercial item,'' as that term is defined -in 48 C.F.R. 2.101 (Oct. 1995), consisting of ``commercial computer -software'' and ``commercial computer software -documentation,'' as such terms are used in 48 C.F.R. 12.212 (Sept. -1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through -227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Code -with only those rights set forth herein. - -11. MISCELLANEOUS. -This License represents the complete agreement concerning subject matter -hereof. If any provision of this License is held to be unenforceable, such -provision shall be reformed only to the extent necessary to make it -enforceable. This License shall be governed by California law provisions -(except to the extent applicable law, if any, provides otherwise), excluding -its conflict-of-law provisions. With respect to disputes in which at least one -party is a citizen of, or an entity chartered or registered to do business in, -the United States of America: (a) unless otherwise agreed in writing, all -disputes relating to this License (excepting any dispute relating to -intellectual property rights) shall be subject to final and binding -arbitration, with the losing party paying all costs of arbitration; (b) any -arbitration relating to this Agreement shall be held in Santa Clara County, -California, under the auspices of JAMS/EndDispute; and (c) any litigation -relating to this Agreement shall be subject to the jurisdiction of the Federal -Courts of the Northern District of California, with venue lying in Santa Clara -County, California, with the losing party responsible for costs, including -without limitation, court costs and reasonable attorneys fees and expenses. -The application of the United Nations Convention on Contracts for the -International Sale of Goods is expressly excluded. Any law or regulation which -provides that the language of a contract shall be construed against the -drafter shall not apply to this License. - -12. RESPONSIBILITY FOR CLAIMS. -Except in cases where another Contributor has failed to comply with Section -3.4, You are responsible for damages arising, directly or indirectly, out of -Your utilization of rights under this License, based on the number of copies -of Covered Code you made available, the revenues you received from utilizing -such rights, and other relevant factors. You agree to work with affected -parties to distribute responsibility on an equitable basis. - -EXHIBIT A. - -``The contents of this file are subject to the Mozilla Public License Version -1.0 (the "License"); you may not use this file except in compliance with the -License. You may obtain a copy of the License at http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for -the specific language governing rights and limitations under the License. - -The Original Code is ______________________________________. - -The Initial Developer of the Original Code is ________________________. -Portions created by ______________________ are Copyright (C) ______ -_______________________. All Rights Reserved. - -Contributor(s): ______________________________________.'' - diff --git a/vendor/github.com/google/licenseclassifier/licenses/MPL-1.1.header.txt b/vendor/github.com/google/licenseclassifier/licenses/MPL-1.1.header.txt deleted file mode 100644 index 1d49040..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/MPL-1.1.header.txt +++ /dev/null @@ -1,25 +0,0 @@ -The contents of this file are subject to the Mozilla Public License Version 1.1 -(the "License"); you may not use this file except in compliance with the -License. You may obtain a copy of the License at http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the -specific language governing rights and limitations under the License. - -The Original Code is _____ . - -The Initial Developer of the Original Code is _____ . Portions created by _____ -are Copyright (C) _____ . All Rights Reserved. - -Contributor(s): _____ . - -Alternatively, the contents of this file may be used under the terms of the -_____ license (the " [____] License"), in which case the provisions of [____] -License are applicable instead of those above. If you wish to allow use of your -version of this file only under the terms of the [____] License and not to allow -others to use your version of this file under the MPL, indicate your decision by -deleting the provisions above and replace them with the notice and other -provisions required by the [____] License. If you do not delete the provisions -above, a recipient may use your version of this file under either the MPL or the -[____] ] License." - diff --git a/vendor/github.com/google/licenseclassifier/licenses/MPL-1.1.txt b/vendor/github.com/google/licenseclassifier/licenses/MPL-1.1.txt deleted file mode 100644 index 2a78d03..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/MPL-1.1.txt +++ /dev/null @@ -1,429 +0,0 @@ -Mozilla Public License Version 1.1 - -1. Definitions. - -1.0.1. "Commercial Use" means distribution or otherwise making the Covered -Code available to a third party. - -1.1. "Contributor" means each entity that creates or contributes to the -creation of Modifications. - -1.2. "Contributor Version" means the combination of the Original Code, prior -Modifications used by a Contributor, and the Modifications made by that -particular Contributor. - -1.3. "Covered Code" means the Original Code or Modifications or the -combination of the Original Code and Modifications, in each case including -portions thereof. - -1.4. "Electronic Distribution Mechanism" means a mechanism generally accepted -in the software development community for the electronic transfer of data. - -1.5. "Executable" means Covered Code in any form other than Source Code. - -1.6. "Initial Developer" means the individual or entity identified as the -Initial Developer in the Source Code notice required by Exhibit A. - -1.7. "Larger Work" means a work which combines Covered Code or portions -thereof with code not governed by the terms of this License. - -1.8. "License" means this document. - -1.8.1. "Licensable" means having the right to grant, to the maximum extent -possible, whether at the time of the initial grant or subsequently acquired, -any and all of the rights conveyed herein. - -1.9. "Modifications" means any addition to or deletion from the substance or -structure of either the Original Code or any previous Modifications. When -Covered Code is released as a series of files, a Modification is: - -Any addition to or deletion from the contents of a file containing Original -Code or previous Modifications. - -Any new file that contains any part of the Original Code or previous -Modifications. - -1.10. "Original Code" means Source Code of computer software code which is -described in the Source Code notice required by Exhibit A as Original Code, -and which, at the time of its release under this License is not already -Covered Code governed by this License. - -1.10.1. "Patent Claims" means any patent claim(s), now owned or hereafter -acquired, including without limitation, method, process, and apparatus claims, -in any patent Licensable by grantor. - -1.11. "Source Code" means the preferred form of the Covered Code for making -modifications to it, including all modules it contains, plus any associated -interface definition files, scripts used to control compilation and -installation of an Executable, or source code differential comparisons against -either the Original Code or another well known, available Covered Code of the -Contributor's choice. The Source Code can be in a compressed or archival -form, provided the appropriate decompression or de-archiving software is -widely available for no charge. - -1.12. "You" (or "Your") means an individual or a legal entity exercising -rights under, and complying with all of the terms of, this License or a future -version of this License issued under Section 6.1. For legal entities, "You" -includes any entity which controls, is controlled by, or is under common -control with You. For purposes of this definition, "control" means (a) the -power, direct or indirect, to cause the direction or management of such -entity, whether by contract or otherwise, or (b) ownership of more than fifty -percent (50%) of the outstanding shares or beneficial ownership of such -entity. - -2. Source Code License. - -2.1. The Initial Developer Grant. The Initial Developer hereby grants You a -world-wide, royalty-free, non-exclusive license, subject to third party -intellectual property claims: - -a. under intellectual property rights (other than patent or trademark) -Licensable by Initial Developer to use, reproduce, modify, display, perform, -sublicense and distribute the Original Code (or portions thereof) with or -without Modifications, and/or as part of a Larger Work; and - -b. under Patents Claims infringed by the making, using or selling of Original -Code, to make, have made, use, practice, sell, and offer for sale, and/or -otherwise dispose of the Original Code (or portions thereof). - -c. the licenses granted in this Section 2.1 (a) and (b) are effective on the -date Initial Developer first distributes Original Code under the terms of this -License. - -d. Notwithstanding Section 2.1 (b) above, no patent license is granted: 1) for -code that You delete from the Original Code; 2) separate from the Original -Code; or 3) for infringements caused by: i) the modification of the Original -Code or ii) the combination of the Original Code with other software or -devices. - -2.2. Contributor Grant. Subject to third party intellectual property claims, -each Contributor hereby grants You a world-wide, royalty-free, non-exclusive -license - -a. under intellectual property rights (other than patent or trademark) -Licensable by Contributor, to use, reproduce, modify, display, perform, -sublicense and distribute the Modifications created by such Contributor (or -portions thereof) either on an unmodified basis, with other Modifications, as -Covered Code and/or as part of a Larger Work; and - -b. under Patent Claims infringed by the making, using, or selling of -Modifications made by that Contributor either alone and/or in combination with -its Contributor Version (or portions of such combination), to make, use, sell, -offer for sale, have made, and/or otherwise dispose of: 1) Modifications made -by that Contributor (or portions thereof); and 2) the combination of -Modifications made by that Contributor with its Contributor Version (or -portions of such combination). - -c. the licenses granted in Sections 2.2 (a) and 2.2 (b) are effective on the -date Contributor first makes Commercial Use of the Covered Code. - -d. Notwithstanding Section 2.2 (b) above, no patent license is granted: 1) for -any code that Contributor has deleted from the Contributor Version; 2) -separate from the Contributor Version; 3) for infringements caused by: i) -third party modifications of Contributor Version or ii) the combination of -Modifications made by that Contributor with other software (except as part of -the Contributor Version) or other devices; or 4) under Patent Claims infringed -by Covered Code in the absence of Modifications made by that Contributor. - -3. Distribution Obligations. - -3.1. Application of License. The Modifications which You create or to which -You contribute are governed by the terms of this License, including without -limitation Section 2.2. The Source Code version of Covered Code may be -distributed only under the terms of this License or a future version of this -License released under Section 6.1, and You must include a copy of this -License with every copy of the Source Code You distribute. You may not offer -or impose any terms on any Source Code version that alters or restricts the -applicable version of this License or the recipients' rights hereunder. -However, You may include an additional document offering the additional rights -described in Section 3.5. - -3.2. Availability of Source Code. Any Modification which You create or to -which You contribute must be made available in Source Code form under the -terms of this License either on the same media as an Executable version or via -an accepted Electronic Distribution Mechanism to anyone to whom you made an -Executable version available; and if made available via Electronic -Distribution Mechanism, must remain available for at least twelve (12) months -after the date it initially became available, or at least six (6) months after -a subsequent version of that particular Modification has been made available -to such recipients. You are responsible for ensuring that the Source Code -version remains available even if the Electronic Distribution Mechanism is -maintained by a third party. - -3.3. Description of Modifications. You must cause all Covered Code to which -You contribute to contain a file documenting the changes You made to create -that Covered Code and the date of any change. You must include a prominent -statement that the Modification is derived, directly or indirectly, from -Original Code provided by the Initial Developer and including the name of the -Initial Developer in (a) the Source Code, and (b) in any notice in an -Executable version or related documentation in which You describe the origin -or ownership of the Covered Code. - -3.4. Intellectual Property Matters - -(a) Third Party Claims - -If Contributor has knowledge that a license under a third party's -intellectual property rights is required to exercise the rights granted by -such Contributor under Sections 2.1 or 2.2, Contributor must include a text -file with the Source Code distribution titled "LEGAL" which describes the -claim and the party making the claim in sufficient detail that a recipient -will know whom to contact. If Contributor obtains such knowledge after the -Modification is made available as described in Section 3.2, Contributor shall -promptly modify the LEGAL file in all copies Contributor makes available -thereafter and shall take other steps (such as notifying appropriate mailing -lists or newsgroups) reasonably calculated to inform those who received the -Covered Code that new knowledge has been obtained. - -(b) Contributor APIs - -If Contributor's Modifications include an application programming -interface and Contributor has knowledge of patent licenses which are -reasonably necessary to implement that API, Contributor must also include this -information in the LEGAL file. - -(c) Representations. - -Contributor represents that, except as disclosed pursuant to Section 3.4 (a) -above, Contributor believes that Contributor's Modifications are -Contributor's original creation(s) and/or Contributor has sufficient -rights to grant the rights conveyed by this License. - -3.5. Required Notices. You must duplicate the notice in Exhibit A in each file -of the Source Code. If it is not possible to put such notice in a particular -Source Code file due to its structure, then You must include such notice in a -location (such as a relevant directory) where a user would be likely to look -for such a notice. If You created one or more Modification(s) You may add your -name as a Contributor to the notice described in Exhibit A. You must also -duplicate this License in any documentation for the Source Code where You -describe recipients' rights or ownership rights relating to Covered Code. -You may choose to offer, and to charge a fee for, warranty, support, indemnity -or liability obligations to one or more recipients of Covered Code. However, -You may do so only on Your own behalf, and not on behalf of the Initial -Developer or any Contributor. You must make it absolutely clear than any such -warranty, support, indemnity or liability obligation is offered by You alone, -and You hereby agree to indemnify the Initial Developer and every Contributor -for any liability incurred by the Initial Developer or such Contributor as a -result of warranty, support, indemnity or liability terms You offer. - -3.6. Distribution of Executable Versions. You may distribute Covered Code in -Executable form only if the requirements of Sections 3.1, 3.2, 3.3, 3.4 and -3.5 have been met for that Covered Code, and if You include a notice stating -that the Source Code version of the Covered Code is available under the terms -of this License, including a description of how and where You have fulfilled -the obligations of Section 3.2. The notice must be conspicuously included in -any notice in an Executable version, related documentation or collateral in -which You describe recipients' rights relating to the Covered Code. You -may distribute the Executable version of Covered Code or ownership rights -under a license of Your choice, which may contain terms different from this -License, provided that You are in compliance with the terms of this License -and that the license for the Executable version does not attempt to limit or -alter the recipient's rights in the Source Code version from the rights -set forth in this License. If You distribute the Executable version under a -different license You must make it absolutely clear that any terms which -differ from this License are offered by You alone, not by the Initial -Developer or any Contributor. You hereby agree to indemnify the Initial -Developer and every Contributor for any liability incurred by the Initial -Developer or such Contributor as a result of any such terms You offer. - -3.7. Larger Works. You may create a Larger Work by combining Covered Code with -other code not governed by the terms of this License and distribute the Larger -Work as a single product. In such a case, You must make sure the requirements -of this License are fulfilled for the Covered Code. - -4. Inability to Comply Due to Statute or Regulation. - -If it is impossible for You to comply with any of the terms of this License -with respect to some or all of the Covered Code due to statute, judicial -order, or regulation then You must: (a) comply with the terms of this License -to the maximum extent possible; and (b) describe the limitations and the code -they affect. Such description must be included in the LEGAL file described in -Section 3.4 and must be included with all distributions of the Source Code. -Except to the extent prohibited by statute or regulation, such description -must be sufficiently detailed for a recipient of ordinary skill to be able to -understand it. - -5. Application of this License. -This License applies to code to which the Initial Developer has attached the -notice in Exhibit A and to related Covered Code. - -6. Versions of the License. - -6.1. New Versions - -Netscape Communications Corporation ("Netscape") may publish revised and/or -new versions of the License from time to time. Each version will be given a -distinguishing version number. - -6.2. Effect of New Versions - -Once Covered Code has been published under a particular version of the -License, You may always continue to use it under the terms of that version. -You may also choose to use such Covered Code under the terms of any subsequent -version of the License published by Netscape. No one other than Netscape has -the right to modify the terms applicable to Covered Code created under this -License. - -6.3. Derivative Works - -If You create or use a modified version of this License (which you may only do -in order to apply it to code which is not already Covered Code governed by -this License), You must (a) rename Your license so that the phrases "Mozilla", -"MOZILLAPL", "MOZPL", "Netscape", "MPL", "NPL" or any confusingly similar -phrase do not appear in your license (except to note that your license differs -from this License) and (b) otherwise make it clear that Your version of the -license contains terms which differ from the Mozilla Public License and -Netscape Public License. (Filling in the name of the Initial Developer, -Original Code or Contributor in the notice described in Exhibit A shall not of -themselves be deemed to be modifications of this License.) - -7. DISCLAIMER OF WARRANTY -COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT -WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT -LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, -FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE -QUALITY AND PERFORMANCE OF THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED -CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY -OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR -CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS -LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS -DISCLAIMER. - -8. Termination - -8.1. This License and the rights granted hereunder will terminate -automatically if You fail to comply with terms herein and fail to cure such -breach within 30 days of becoming aware of the breach. All sublicenses to the -Covered Code which are properly granted shall survive any termination of this -License. Provisions which, by their nature, must remain in effect beyond the -termination of this License shall survive. - -8.2. If You initiate litigation by asserting a patent infringement claim -(excluding declatory judgment actions) against Initial Developer or a -Contributor (the Initial Developer or Contributor against whom You file such -action is referred to as "Participant") alleging that: - -a. such Participant's Contributor Version directly or indirectly -infringes any patent, then any and all rights granted by such Participant to -You under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice -from Participant terminate prospectively, unless if within 60 days after -receipt of notice You either: (i) agree in writing to pay Participant a -mutually agreeable reasonable royalty for Your past and future use of -Modifications made by such Participant, or (ii) withdraw Your litigation claim -with respect to the Contributor Version against such Participant. If within 60 -days of notice, a reasonable royalty and payment arrangement are not mutually -agreed upon in writing by the parties or the litigation claim is not -withdrawn, the rights granted by Participant to You under Sections 2.1 and/or -2.2 automatically terminate at the expiration of the 60 day notice period -specified above. - -b. any software, hardware, or device, other than such Participant's -Contributor Version, directly or indirectly infringes any patent, then any -rights granted to You by such Participant under Sections 2.1(b) and 2.2(b) are -revoked effective as of the date You first made, used, sold, distributed, or -had made, Modifications made by that Participant. - -8.3. If You assert a patent infringement claim against Participant alleging -that such Participant's Contributor Version directly or indirectly -infringes any patent where such claim is resolved (such as by license or -settlement) prior to the initiation of patent infringement litigation, then -the reasonable value of the licenses granted by such Participant under -Sections 2.1 or 2.2 shall be taken into account in determining the amount or -value of any payment or license. - -8.4. In the event of termination under Sections 8.1 or 8.2 above, all end user -license agreements (excluding distributors and resellers) which have been -validly granted by You or any distributor hereunder prior to termination shall -survive termination. - -9. LIMITATION OF LIABILITY -UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING -NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY -OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, OR ANY SUPPLIER OF ANY -OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, -INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT -LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR -MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH -PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS -LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL -INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE -LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION -OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND -LIMITATION MAY NOT APPLY TO YOU. - -10. U.S. government end users -The Covered Code is a "commercial item," as that term is defined in 48 C.F.R. -2.101 (Oct. 1995), consisting of "commercial computer software" and -"commercial computer software documentation," as such terms are used in 48 -C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. -227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users -acquire Covered Code with only those rights set forth herein. - -11. Miscellaneous -This License represents the complete agreement concerning subject matter -hereof. If any provision of this License is held to be unenforceable, such -provision shall be reformed only to the extent necessary to make it -enforceable. This License shall be governed by California law provisions -(except to the extent applicable law, if any, provides otherwise), excluding -its conflict-of-law provisions. With respect to disputes in which at least one -party is a citizen of, or an entity chartered or registered to do business in -the United States of America, any litigation relating to this License shall be -subject to the jurisdiction of the Federal Courts of the Northern District of -California, with venue lying in Santa Clara County, California, with the -losing party responsible for costs, including without limitation, court costs -and reasonable attorneys' fees and expenses. The application of the -United Nations Convention on Contracts for the International Sale of Goods is -expressly excluded. Any law or regulation which provides that the language of -a contract shall be construed against the drafter shall not apply to this -License. - -12. Responsibility for claims -As between Initial Developer and the Contributors, each party is responsible -for claims and damages arising, directly or indirectly, out of its utilization -of rights under this License and You agree to work with Initial Developer and -Contributors to distribute such responsibility on an equitable basis. Nothing -herein is intended or shall be deemed to constitute any admission of -liability. - -13. Multiple-licensed code -Initial Developer may designate portions of the Covered Code as "Multiple- -Licensed". "Multiple-Licensed" means that the Initial Developer permits you to -utilize portions of the Covered Code under Your choice of the MPL or the -alternative licenses, if any, specified by the Initial Developer in the file -described in Exhibit A. - -Exhibit A - Mozilla Public License. - -"The contents of this file are subject to the Mozilla Public License Version -1.1 (the "License"); you may not use this file except in compliance with the -License. You may obtain a copy of the License at http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for -the specific language governing rights and limitations under the License. - -The Original Code is ______________________________________. - -The Initial Developer of the Original Code is ________________________. - -Portions created by ______________________ are Copyright (C) ______ - -_______________________. All Rights Reserved. - -Contributor(s): ______________________________________. - -Alternatively, the contents of this file may be used under the terms of the -_____ license (the "[___] License"), in which case the provisions of [______] -License are applicable instead of those above. If you wish to allow use of -your version of this file only under the terms of the [____] License and not -to allow others to use your version of this file under the MPL, indicate your -decision by deleting the provisions above and replace them with the notice and -other provisions required by the [___] License. If you do not delete the -provisions above, a recipient may use your version of this file under either -the MPL or the [___] License." - -NOTE: The text of this Exhibit A may differ slightly from the text of the -notices in the Source Code files of the Original Code. You should use the text -of this Exhibit A rather than the text found in the Original Code Source Code -for Your Modifications. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/MPL-2.0-no-copyleft-exception.header.txt b/vendor/github.com/google/licenseclassifier/licenses/MPL-2.0-no-copyleft-exception.header.txt deleted file mode 100644 index ddc50bb..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/MPL-2.0-no-copyleft-exception.header.txt +++ /dev/null @@ -1,6 +0,0 @@ -This Source Code Form is subject to the terms of the Mozilla Public License, v. -2.0. If a copy of the MPL was not distributed with this file, You can obtain one -at http://mozilla.org/MPL/2.0/. - -This Source Code Form is “Incompatible With Secondary Licenses”, as defined by -the Mozilla Public License, v. 2.0. diff --git a/vendor/github.com/google/licenseclassifier/licenses/MPL-2.0.header.txt b/vendor/github.com/google/licenseclassifier/licenses/MPL-2.0.header.txt deleted file mode 100644 index 3cc0ee9..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/MPL-2.0.header.txt +++ /dev/null @@ -1,3 +0,0 @@ -This Source Code Form is subject to the terms of the Mozilla Public License, v. -2.0. If a copy of the MPL was not distributed with this file, You can obtain one -at http://mozilla.org/MPL/2.0/. diff --git a/vendor/github.com/google/licenseclassifier/licenses/MPL-2.0.txt b/vendor/github.com/google/licenseclassifier/licenses/MPL-2.0.txt deleted file mode 100644 index c21d51c..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/MPL-2.0.txt +++ /dev/null @@ -1,317 +0,0 @@ -Mozilla Public License Version 2.0 - -1. Definitions - -1.1. "Contributor" means each individual or legal entity that creates, -contributes to the creation of, or owns Covered Software. - -1.2. "Contributor Version" means the combination of the Contributions of -others (if any) used by a Contributor and that particular Contributor's -Contribution. - -1.3. "Contribution" means Covered Software of a particular Contributor. - -1.4. "Covered Software" means Source Code Form to which the initial -Contributor has attached the notice in Exhibit A, the Executable Form of such -Source Code Form, and Modifications of such Source Code Form, in each case -including portions thereof. - -1.5. "Incompatible With Secondary Licenses" means - -(a) that the initial Contributor has attached the notice described in Exhibit -B to the Covered Software; or - -(b) that the Covered Software was made available under the terms of version -1.1 or earlier of the License, but not also under the terms of a Secondary -License. - -1.6. "Executable Form" means any form of the work other than Source Code Form. - -1.7. "Larger Work" means a work that combines Covered Software with other -material, in a separate file or files, that is not Covered Software. - -1.8. "License" means this document. - -1.9. "Licensable" means having the right to grant, to the maximum extent -possible, whether at the time of the initial grant or subsequently, any and -all of the rights conveyed by this License. - -1.10. "Modifications" means any of the following: - -(a) any file in Source Code Form that results from an addition to, deletion -from, or modification of the contents of Covered Software; or - -(b) any new file in Source Code Form that contains any Covered Software. - -1.11. "Patent Claims" of a Contributor means any patent claim(s), including -without limitation, method, process, and apparatus claims, in any patent -Licensable by such Contributor that would be infringed, but for the grant of -the License, by the making, using, selling, offering for sale, having made, -import, or transfer of either its Contributions or its Contributor Version. - -1.12. "Secondary License" means either the GNU General Public License, Version -2.0, the GNU Lesser General Public License, Version 2.1, the GNU Affero -General Public License, Version 3.0, or any later versions of those licenses. - -1.13. "Source Code Form" means the form of the work preferred for making -modifications. - -1.14. "You" (or "Your") means an individual or a legal entity exercising -rights under this License. For legal entities, "You" includes any entity that -controls, is controlled by, or is under common control with You. For purposes -of this definition, "control" means (a) the power, direct or indirect, to -cause the direction or management of such entity, whether by contract or -otherwise, or (b) ownership of more than fifty percent (50%) of the -outstanding shares or beneficial ownership of such entity. - -2. License Grants and Conditions - -2.1. Grants - -Each Contributor hereby grants You a world-wide, royalty-free, non-exclusive -license: - -(a) under intellectual property rights (other than patent or trademark) -Licensable by such Contributor to use, reproduce, make available, modify, -display, perform, distribute, and otherwise exploit its Contributions, either -on an unmodified basis, with Modifications, or as part of a Larger Work; and - -(b) under Patent Claims of such Contributor to make, use, sell, offer for -sale, have made, import, and otherwise transfer either its Contributions or -its Contributor Version. - -2.2. Effective Date - -The licenses granted in Section 2.1 with respect to any Contribution become -effective for each Contribution on the date the Contributor first distributes -such Contribution. - -2.3. Limitations on Grant Scope - -The licenses granted in this Section 2 are the only rights granted under this -License. No additional rights or licenses will be implied from the -distribution or licensing of Covered Software under this License. -Notwithstanding Section 2.1(b) above, no patent license is granted by a -Contributor: - -(a) for any code that a Contributor has removed from Covered Software; or - -(b) for infringements caused by: (i) Your and any other third party's -modifications of Covered Software, or (ii) the combination of its -Contributions with other software (except as part of its Contributor Version); -or - -(c) under Patent Claims infringed by Covered Software in the absence of its -Contributions. - -This License does not grant any rights in the trademarks, service marks, or -logos of any Contributor (except as may be necessary to comply with the notice -requirements in Section 3.4). - -2.4. Subsequent Licenses - -No Contributor makes additional grants as a result of Your choice to -distribute the Covered Software under a subsequent version of this License -(see Section 10.2) or under the terms of a Secondary License (if permitted -under the terms of Section 3.3). - -2.5. Representation - -Each Contributor represents that the Contributor believes its Contributions -are its original creation(s) or it has sufficient rights to grant the rights -to its Contributions conveyed by this License. - -2.6. Fair Use - -This License is not intended to limit any rights You have under applicable -copyright doctrines of fair use, fair dealing, or other equivalents. - -2.7. Conditions - -Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in -Section 2.1. - -3. Responsibilities - -3.1. Distribution of Source Form - -All distribution of Covered Software in Source Code Form, including any -Modifications that You create or to which You contribute, must be under the -terms of this License. You must inform recipients that the Source Code Form of -the Covered Software is governed by the terms of this License, and how they -can obtain a copy of this License. You may not attempt to alter or restrict -the recipients' rights in the Source Code Form. - -3.2. Distribution of Executable Form - -If You distribute Covered Software in Executable Form then: - -(a) such Covered Software must also be made available in Source Code Form, as -described in Section 3.1, and You must inform recipients of the Executable -Form how they can obtain a copy of such Source Code Form by reasonable means -in a timely manner, at a charge no more than the cost of distribution to the -recipient; and - -(b) You may distribute such Executable Form under the terms of this License, -or sublicense it under different terms, provided that the license for the -Executable Form does not attempt to limit or alter the recipients' rights -in the Source Code Form under this License. - -3.3. Distribution of a Larger Work - -You may create and distribute a Larger Work under terms of Your choice, -provided that You also comply with the requirements of this License for the -Covered Software. If the Larger Work is a combination of Covered Software with -a work governed by one or more Secondary Licenses, and the Covered Software is -not Incompatible With Secondary Licenses, this License permits You to -additionally distribute such Covered Software under the terms of such -Secondary License(s), so that the recipient of the Larger Work may, at their -option, further distribute the Covered Software under the terms of either this -License or such Secondary License(s). - -3.4. Notices - -You may not remove or alter the substance of any license notices (including -copyright notices, patent notices, disclaimers of warranty, or limitations of -liability) contained within the Source Code Form of the Covered Software, -except that You may alter any license notices to the extent required to remedy -known factual inaccuracies. - -3.5. Application of Additional Terms - -You may choose to offer, and to charge a fee for, warranty, support, indemnity -or liability obligations to one or more recipients of Covered Software. -However, You may do so only on Your own behalf, and not on behalf of any -Contributor. You must make it absolutely clear that any such warranty, -support, indemnity, or liability obligation is offered by You alone, and You -hereby agree to indemnify every Contributor for any liability incurred by such -Contributor as a result of warranty, support, indemnity or liability terms You -offer. You may include additional disclaimers of warranty and limitations of -liability specific to any jurisdiction. - -4. Inability to Comply Due to Statute or Regulation -If it is impossible for You to comply with any of the terms of this License -with respect to some or all of the Covered Software due to statute, judicial -order, or regulation then You must: (a) comply with the terms of this License -to the maximum extent possible; and (b) describe the limitations and the code -they affect. Such description must be placed in a text file included with all -distributions of the Covered Software under this License. Except to the extent -prohibited by statute or regulation, such description must be sufficiently -detailed for a recipient of ordinary skill to be able to understand it. - -5. Termination - -5.1. The rights granted under this License will terminate automatically if You -fail to comply with any of its terms. However, if You become compliant, then -the rights granted under this License from a particular Contributor are -reinstated (a) provisionally, unless and until such Contributor explicitly and -finally terminates Your grants, and (b) on an ongoing basis, if such -Contributor fails to notify You of the non-compliance by some reasonable means -prior to 60 days after You have come back into compliance. Moreover, Your -grants from a particular Contributor are reinstated on an ongoing basis if -such Contributor notifies You of the non-compliance by some reasonable means, -this is the first time You have received notice of non-compliance with this -License from such Contributor, and You become compliant prior to 30 days after -Your receipt of the notice. - -5.2. If You initiate litigation against any entity by asserting a patent -infringement claim (excluding declaratory judgment actions, counter-claims, -and cross-claims) alleging that a Contributor Version directly or indirectly -infringes any patent, then the rights granted to You by any and all -Contributors for the Covered Software under Section 2.1 of this License shall -terminate. - -5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user -license agreements (excluding distributors and resellers) which have been -validly granted by You or Your distributors under this License prior to -termination shall survive termination. - -6. Disclaimer of Warranty -Covered Software is provided under this License on an "as is" basis, without -warranty of any kind, either expressed, implied, or statutory, including, -without limitation, warranties that the Covered Software is free of defects, -merchantable, fit for a particular purpose or non-infringing. The entire risk -as to the quality and performance of the Covered Software is with You. Should -any Covered Software prove defective in any respect, You (not any Contributor) -assume the cost of any necessary servicing, repair, or correction. This -disclaimer of warranty constitutes an essential part of this License. No use -of any Covered Software is authorized under this License except under this -disclaimer. - -7. Limitation of Liability -Under no circumstances and under no legal theory, whether tort (including -negligence), contract, or otherwise, shall any Contributor, or anyone who -distributes Covered Software as permitted above, be liable to You for any -direct, indirect, special, incidental, or consequential damages of any -character including, without limitation, damages for lost profits, loss of -goodwill, work stoppage, computer failure or malfunction, or any and all other -commercial damages or losses, even if such party shall have been informed of -the possibility of such damages. This limitation of liability shall not apply -to liability for death or personal injury resulting from such party's -negligence to the extent applicable law prohibits such limitation. Some -jurisdictions do not allow the exclusion or limitation of incidental or -consequential damages, so this exclusion and limitation may not apply to You. - -8. Litigation -Any litigation relating to this License may be brought only in the courts of a -jurisdiction where the defendant maintains its principal place of business and -such litigation shall be governed by laws of that jurisdiction, without -reference to its conflict-of-law provisions. Nothing in this Section shall -prevent a party's ability to bring cross-claims or counter-claims. - -9. Miscellaneous -This License represents the complete agreement concerning the subject matter -hereof. If any provision of this License is held to be unenforceable, such -provision shall be reformed only to the extent necessary to make it -enforceable. Any law or regulation which provides that the language of a -contract shall be construed against the drafter shall not be used to construe -this License against a Contributor. - -10. Versions of the License - -10.1. New Versions - -Mozilla Foundation is the license steward. Except as provided in Section 10.3, -no one other than the license steward has the right to modify or publish new -versions of this License. Each version will be given a distinguishing version -number. - -10.2. Effect of New Versions - -You may distribute the Covered Software under the terms of the version of the -License under which You originally received the Covered Software, or under the -terms of any subsequent version published by the license steward. - -10.3. Modified Versions - -If you create software not governed by this License, and you want to create a -new license for such software, you may create and use a modified version of -this License if you rename the license and remove any references to the name -of the license steward (except to note that such modified license differs from -this License). - -10.4. Distributing Source Code Form that is Incompatible With Secondary -Licenses - -If You choose to distribute Source Code Form that is Incompatible With -Secondary Licenses under the terms of this version of the License, the notice -described in Exhibit B of this License must be attached. - -Exhibit A - Source Code Form License Notice - -This Source Code Form is subject to the terms of the Mozilla Public License, -v. 2.0. If a copy of the MPL was not distributed with this file, You can -obtain one at http://mozilla.org/MPL/2.0/. - -If it is not possible or desirable to put the notice in a particular file, -then You may include the notice in a location (such as a LICENSE file in a -relevant directory) where a recipient would be likely to look for such a -notice. - -You may add additional accurate notices of copyright ownership. - -Exhibit B - "Incompatible With Secondary Licenses" Notice - -This Source Code Form is "Incompatible With Secondary Licenses", as defined by -the Mozilla Public License, v. 2.0. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/MS-PL.txt b/vendor/github.com/google/licenseclassifier/licenses/MS-PL.txt deleted file mode 100644 index ef64935..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/MS-PL.txt +++ /dev/null @@ -1,53 +0,0 @@ -Microsoft Public License (Ms-PL) - -This license governs use of the accompanying software. If you use the -software, you accept this license. If you do not accept the license, do not -use the software. - -1. Definitions -The terms "reproduce," "reproduction," "derivative works," and "distribution" -have the same meaning here as under U.S. copyright law. A "contribution" is -the original software, or any additions or changes to the software. A -"contributor" is any person that distributes its contribution under this -license. "Licensed patents" are a contributor's patent claims that read -directly on its contribution. - -2. Grant of Rights -(A) Copyright Grant- Subject to the terms of this license, including the -license conditions and limitations in section 3, each contributor grants you a -non-exclusive, worldwide, royalty-free copyright license to reproduce its -contribution, prepare derivative works of its contribution, and distribute its -contribution or any derivative works that you create. - -(B) Patent Grant- Subject to the terms of this license, including the license -conditions and limitations in section 3, each contributor grants you a non- -exclusive, worldwide, royalty-free license under its licensed patents to make, -have made, use, sell, offer for sale, import, and/or otherwise dispose of its -contribution in the software or derivative works of the contribution in the -software. - -3. Conditions and Limitations -(A) No Trademark License- This license does not grant you rights to use any -contributors' name, logo, or trademarks. - -(B) If you bring a patent claim against any contributor over patents that you -claim are infringed by the software, your patent license from such contributor -to the software ends automatically. - -(C) If you distribute any portion of the software, you must retain all -copyright, patent, trademark, and attribution notices that are present in the -software. - -(D) If you distribute any portion of the software in source code form, you may -do so only under this license by including a complete copy of this license -with your distribution. If you distribute any portion of the software in -compiled or object code form, you may only do so under a license that complies -with this license. - -(E) The software is licensed "as-is." You bear the risk of using it. The -contributors give no express warranties, guarantees, or conditions. You may -have additional consumer rights under your local laws which this license -cannot change. To the extent permitted under your local laws, the contributors -exclude the implied warranties of merchantability, fitness for a particular -purpose and non-infringement. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/NCSA.txt b/vendor/github.com/google/licenseclassifier/licenses/NCSA.txt deleted file mode 100644 index d23db0c..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/NCSA.txt +++ /dev/null @@ -1,28 +0,0 @@ -University of Illinois/NCSA Open Source License - -Copyright (c) . All rights reserved. - -Developed by: - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -with the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimers. - -* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimers in the documentation and/or other materials provided with the distribution. - -* Neither the names of , nor the names of its contributors may be used to endorse or promote products derived from this Software without specific prior written permission. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH -THE SOFTWARE. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/NPL-1.0.txt b/vendor/github.com/google/licenseclassifier/licenses/NPL-1.0.txt deleted file mode 100644 index 041a35a..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/NPL-1.0.txt +++ /dev/null @@ -1,378 +0,0 @@ -NETSCAPE PUBLIC LICENSE
Version 1.0 - -1. Definitions. - -1.1. ``Contributor'' means each entity that creates or contributes -to the creation of Modifications. - -1.2. ``Contributor Version'' means the combination of the Original -Code, prior Modifications used by a Contributor, and the Modifications made by -that particular Contributor. - -1.3. ``Covered Code'' means the Original Code or Modifications or -the combination of the Original Code and Modifications, in each case including -portions thereof. - -1.4. ``Electronic Distribution Mechanism'' means a mechanism -generally accepted in the software development community for the electronic -transfer of data. - -1.5. ``Executable'' means Covered Code in any form other than Source -Code. - -1.6. ``Initial Developer'' means the individual or entity identified -as the Initial Developer in the Source Code notice required byExhibit A. - -1.7. ``Larger Work'' means a work which combines Covered Code or -portions thereof with code not governed by the terms of this License. - -1.8. ``License'' means this document. - -1.9. ``Modifications'' means any addition to or deletion from the -substance or structure of either the Original Code or any previous -Modifications. When Covered Code is released as a series of files, a -Modification is: - -A. Any addition to or deletion from the contents of a file containing Original -Code or previous Modifications.
 B. Any new file that contains any part of the -Original Code or previous Modifications. - -1.10. ``Original Code'' means Source Code of computer software code -which is described in the Source Code notice required byExhibit A as Original -Code, and which, at the time of its release under this License is not already -Covered Code governed by this License. - -1.11. ``Source Code'' means the preferred form of the Covered Code -for making modifications to it, including all modules it contains, plus any -associated interface definition files, scripts used to control compilation and -installation of an Executable, or a list of source code differential -comparisons against either the Original Code or another well known, available -Covered Code of the Contributor's choice. The Source Code can be in a -compressed or archival form, provided the appropriate decompression or de- -archiving software is widely available for no charge. - -1.12. ``You'' means an individual or a legal entity exercising -rights under, and complying with all of the terms of, this License or a future -version of this License issued under Section 6.1. For legal entities, -``You'' includes any entity which controls, is controlled by, or is -under common control with You. For purposes of this definition, -``control'' means (a) the power, direct or indirect, to cause the -direction or management of such entity, whether by contract or otherwise, or -(b) ownership of fifty percent (50%) or more of the outstanding shares or -beneficial ownership of such entity. - -2. Source Code License. - -2.1. The Initial Developer Grant. The Initial Developer hereby grants You a -world-wide, royalty-free, non-exclusive license, subject to third party -intellectual property claims: - -a) to use, reproduce, modify, display, perform, sublicense and distribute the -Original Code (or portions thereof) with or without Modifications, or as part -of a Larger Work; and
 (b) under patents now or hereafter owned or controlled -by Initial Developer, to make, have made, use and sell (``Utilize'') -the Original Code (or portions thereof), but solely to the extent that any -such patent is reasonably necessary to enable You to Utilize the Original Code -(or portions thereof) and not to any greater extent that may be necessary to -Utilize further Modifications or combinations. - -2.2. Contributor Grant. 
Each Contributor hereby grants You a world-wide, -royalty-free, non-exclusive license, subject to third party intellectual -property claims: - -(a) to use, reproduce, modify, display, perform, sublicense and distribute the -Modifications created by such Contributor (or portions thereof) either on an -unmodified basis, with other Modifications, as Covered Code or as part of a -Larger Work; and
 (b) under patents now or hereafter owned or controlled by -Contributor, to Utilize the Contributor Version (or portions thereof), but -solely to the extent that any such patent is reasonably necessary to enable -You to Utilize the Contributor Version (or portions thereof), and not to any -greater extent that may be necessary to Utilize further Modifications or -combinations. - -3. Distribution Obligations. - -3.1. Application of License. The Modifications which You create or to which -You contribute are governed by the terms of this License, including without -limitation Section 2.2. The Source Code version of Covered Code may be -distributed only under the terms of this License or a future version of this -License released under Section 6.1, and You must include a copy of this -License with every copy of the Source Code You distribute. You may not offer -or impose any terms on any Source Code version that alters or restricts the -applicable version of this License or the recipients' rights hereunder. -However, You may include an additional document offering the additional rights -described in Section 3.5. - -3.2. Availability of Source Code. Any Modification which You create or to -which You contribute must be made available in Source Code form under the -terms of this License either on the same media as an Executable version or via -an accepted Electronic Distribution Mechanism to anyone to whom you made an -Executable version available; and if made available via Electronic -Distribution Mechanism, must remain available for at least twelve (12) months -after the date it initially became available, or at least six (6) months after -a subsequent version of that particular Modification has been made available -to such recipients. You are responsible for ensuring that the Source Code -version remains available even if the Electronic Distribution Mechanism is -maintained by a third party. - -3.3. Description of Modifications. You must cause all Covered Code to which -you contribute to contain a file documenting the changes You made to create -that Covered Code and the date of any change. You must include a prominent -statement that the Modification is derived, directly or indirectly, from -Original Code provided by the Initial Developer and including the name of the -Initial Developer in (a) the Source Code, and (b) in any notice in an -Executable version or related documentation in which You describe the origin -or ownership of the Covered Code. - -3.4. Intellectual Property Matters - -(a) Third Party Claims. If You have knowledge that a party claims an -intellectual property right in particular functionality or code (or its -utilization under this License), you must include a text file with the source -code distribution titled ``LEGAL'' which describes the claim and the -party making the claim in sufficient detail that a recipient will know whom to -contact. If you obtain such knowledge after You make Your Modification -available as described in Section 3.2, You shall promptly modify the LEGAL -file in all copies You make available thereafter and shall take other steps -(such as notifying appropriate mailing lists or newsgroups) reasonably -calculated to inform those who received the Covered Code that new knowledge -has been obtained. - -(b) Contributor APIs. If Your Modification is an application programming -interface and You own or control patents which are reasonably necessary to -implement that API, you must also include this information in the LEGAL file. - -3.5. Required Notices. You must duplicate the notice in Exhibit A in each file -of the Source Code, and this License in any documentation for the Source Code, -where You describe recipients' rights relating to Covered Code. If You -created one or more Modification(s), You may add your name as a Contributor to -the notice described in Exhibit A. If it is not possible to put such notice in -a particular Source Code file due to its structure, then you must include such -notice in a location (such as a relevant directory file) where a user would be -likely to look for such a notice. You may choose to offer, and to charge a fee -for, warranty, support, indemnity or liability obligations to one or more -recipients of Covered Code. However, You may do so only on Your own behalf, -and not on behalf of the Initial Developer or any Contributor. You must make -it absolutely clear than any such warranty, support, indemnity or liability -obligation is offered by You alone, and You hereby agree to indemnify the -Initial Developer and every Contributor for any liability incurred by the -Initial Developer or such Contributor as a result of warranty, support, -indemnity or liability terms You offer. - -3.6. Distribution of Executable Versions. You may distribute Covered Code in -Executable form only if the requirements of Section 3.1-3.5 have been met for -that Covered Code, and if You include a notice stating that the Source Code -version of the Covered Code is available under the terms of this License, -including a description of how and where You have fulfilled the obligations of -Section 3.2. The notice must be conspicuously included in any notice in an -Executable version, related documentation or collateral in which You describe -recipients' rights relating to the Covered Code. You may distribute the -Executable version of Covered Code under a license of Your choice, which may -contain terms different from this License, provided that You are in compliance -with the terms of this License and that the license for the Executable version -does not attempt to limit or alter the recipient's rights in the Source -Code version from the rights set forth in this License. If You distribute the -Executable version under a different license You must make it absolutely clear -that any terms which differ from this License are offered by You alone, not by -the Initial Developer or any Contributor. You hereby agree to indemnify the -Initial Developer and every Contributor for any liability incurred by the -Initial Developer or such Contributor as a result of any such terms You offer. - -3.7. Larger Works. You may create a Larger Work by combining Covered Code with -other code not governed by the terms of this License and distribute the Larger -Work as a single product. In such a case, You must make sure the requirements -of this License are fulfilled for the Covered Code. - -4. Inability to Comply Due to Statute or Regulation. -If it is impossible for You to comply with any of the terms of this License -with respect to some or all of the Covered Code due to statute or regulation -then You must: (a) comply with the terms of this License to the maximum extent -possible; and (b) describe the limitations and the code they affect. Such -description must be included in the LEGAL file described in Section 3.4 and -must be included with all distributions of the Source Code. Except to the -extent prohibited by statute or regulation, such description must be -sufficiently detailed for a recipient of ordinary skill to be able to -understand it. - -5. Application of this License. -This License applies to code to which the Initial Developer has attached the -notice in Exhibit A, and to related Covered Code. - -6. Versions of the License. -6.1. New Versions. Netscape Communications Corporation -(``Netscape'') may publish revised and/or new versions of the -License from time to time. Each version will be given a distinguishing version -number. - -6.2. Effect of New Versions. Once Covered Code has been published under a -particular version of the License, You may always continue to use it under the -terms of that version. You may also choose to use such Covered Code under the -terms of any subsequent version of the License published by Netscape. No one -other than Netscape has the right to modify the terms applicable to Covered -Code created under this License. - -6.3. Derivative Works. If you create or use a modified version of this License -(which you may only do in order to apply it to code which is not already -Covered Code governed by this License), you must (a) rename Your license so -that the phrases ``Mozilla'', ``MOZILLAPL'', -``MOZPL'', ``Netscape'', ``NPL'' or any -confusingly similar phrase do not appear anywhere in your license and (b) -otherwise make it clear that your version of the license contains terms which -differ from the Mozilla Public License and Netscape Public License. (Filling -in the name of the Initial Developer, Original Code or Contributor in the -notice described in Exhibit A shall not of themselves be deemed to be -modifications of this License.) - -7. DISCLAIMER OF WARRANTY. - -COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN ``AS IS'' BASIS, -WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT -LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, -FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE -QUALITY AND PERFORMANCE OF THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED -CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY -OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR -CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS -LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS -DISCLAIMER. - -8. TERMINATION. - -This License and the rights granted hereunder will terminate automatically if -You fail to comply with terms herein and fail to cure such breach within 30 -days of becoming aware of the breach. All sublicenses to the Covered Code -which are properly granted shall survive any termination of this License. -Provisions which, by their nature, must remain in effect beyond the -termination of this License shall survive. - -9. LIMITATION OF LIABILITY. - -UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING -NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE INITIAL DEVELOPER, ANY OTHER -CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, OR ANY SUPPLIER OF ANY OF -SUCH PARTIES, BE LIABLE TO YOU OR ANY OTHER PERSON FOR ANY INDIRECT, SPECIAL, -INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT -LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR -MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH -PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS -LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL -INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE -LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION -OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THAT EXCLUSION AND -LIMITATION MAY NOT APPLY TO YOU. - -10. U.S. GOVERNMENT END USERS. - -The Covered Code is a ``commercial item,'' as that term is defined -in 48 C.F.R. 2.101 (Oct. 1995), consisting of ``commercial computer -software'' and ``commercial computer software -documentation,'' as such terms are used in 48 C.F.R. 12.212 (Sept. -1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through -227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Code -with only those rights set forth herein. - -11. MISCELLANEOUS. - -This License represents the complete agreement concerning subject matter -hereof. If any provision of this License is held to be unenforceable, such -provision shall be reformed only to the extent necessary to make it -enforceable. This License shall be governed by California law provisions -(except to the extent applicable law, if any, provides otherwise), excluding -its conflict-of-law provisions. With respect to disputes in which at least one -party is a citizen of, or an entity chartered or registered to do business in, -the United States of America: (a) unless otherwise agreed in writing, all -disputes relating to this License (excepting any dispute relating to -intellectual property rights) shall be subject to final and binding -arbitration, with the losing party paying all costs of arbitration; (b) any -arbitration relating to this Agreement shall be held in Santa Clara County, -California, under the auspices of JAMS/EndDispute; and (c) any litigation -relating to this Agreement shall be subject to the jurisdiction of the Federal -Courts of the Northern District of California, with venue lying in Santa Clara -County, California, with the losing party responsible for costs, including -without limitation, court costs and reasonable attorneys fees and expenses. -The application of the United Nations Convention on Contracts for the -International Sale of Goods is expressly excluded. Any law or regulation which -provides that the language of a contract shall be construed against the -drafter shall not apply to this License. - -12. RESPONSIBILITY FOR CLAIMS. - -Except in cases where another Contributor has failed to comply with Section -3.4, You are responsible for damages arising, directly or indirectly, out of -Your utilization of rights under this License, based on the number of copies -of Covered Code you made available, the revenues you received from utilizing -such rights, and other relevant factors. You agree to work with affected -parties to distribute responsibility on an equitable basis. - -AMENDMENTS - -Additional Terms applicable to the Netscape Public License. - -I. Effect. 
These additional terms described in this Netscape Public License --- Amendments shall apply to the Mozilla Communicator client code and to all -Covered Code under this License. - -II. ``Netscape's Branded Code'' means Covered Code that -Netscape distributes and/or permits others to distribute under one or more -trademark(s) which are controlled by Netscape but which are not licensed for -use under this License. - -III. Netscape and logo. 
 This License does not grant any rights to use the -trademark ``Netscape'', the ``Netscape N and horizon'' -logo or the Netscape lighthouse logo, even if such marks are included in the -Original Code. - -IV. Inability to Comply Due to Contractual Obligation. 
 Prior to licensing -the Original Code under this License, Netscape has licensed third party code -for use in Netscape's Branded Code. To the extent that Netscape is -limited contractually from making such third party code available under this -License, Netscape may choose to reintegrate such code into Covered Code -without being required to distribute such code in - -Source Code form, even if such code would otherwise be considered -``Modifications'' under this License. - -V. Use of Modifications and Covered Code by Initial Developer. - -V.1. In General. The obligations of Section 3 apply to Netscape, except to the -extent specified in this Amendment, Section V.2 and V.3.
 V.2. Other Products. -Netscape may include Covered Code in products other than the Netscape's -Branded Code which are released by Netscape during the two (2) years following -the release date of the Original Code, without such additional products -becoming subject to the terms of this License, and may license such additional -products on different terms from those contained in this License.
 V.3. -Alternative Licensing. Netscape may license the Source Code of Netscape's -Branded Code, including Modifications incorporated therein, without such -additional products becoming subject to the terms of this License, and may -license such additional products on different terms from those contained in -this License. - -VI. Arbitration and Litigation. 
 Notwithstanding the limitations of Section -11 above, the provisions regarding arbitration and litigation in Section -11(a), (b) and (c) of the License shall apply to all disputes relating to this -License. - -EXHIBIT A. - -“The contents of this file are subject to the Netscape Public License Version -1.0 (the "License"); you may not use this file except in compliance with the -License. You may obtain a copy of the License at http://www.mozilla.org/NPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for -the specific language governing rights and limitations under the License. - -The Original Code is Mozilla Communicator client code, released March 31, -1998. - -The Initial Developer of the Original Code is Netscape Communications -Corporation. Portions created by Netscape are Copyright (C) 1998 Netscape -Communications Corporation. All Rights Reserved. - -Contributor(s): ______________________________________.”

[NOTE: The text of -this Exhibit A may differ slightly from the text of the notices in the Source -Code files of the Original Code. This is due to time constraints encountered -in simultaneously finalizing the License and in preparing the Original Code -for release. You should use the text of this Exhibit A rather than the text -found in the Original Code Source Code for Your Modifications.] - diff --git a/vendor/github.com/google/licenseclassifier/licenses/NPL-1.1.txt b/vendor/github.com/google/licenseclassifier/licenses/NPL-1.1.txt deleted file mode 100644 index 136fd90..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/NPL-1.1.txt +++ /dev/null @@ -1,522 +0,0 @@ -Netscape Public LIcense version 1.1 - -AMENDMENTS - -The Netscape Public License Version 1.1 ("NPL") consists of the Mozilla Public -License Version 1.1 with the following Amendments, including Exhibit -A-Netscape Public License.  Files identified with "Exhibit A-Netscape Public -License" are governed by the Netscape Public License Version 1.1. - -Additional Terms applicable to the Netscape Public License. - -I. Effect. - -These additional terms described in this Netscape Public License -- Amendments -shall apply to the Mozilla Communicator client code and to all Covered Code -under this License. - -II. "Netscape's Branded Code" means Covered Code that Netscape -distributes and/or permits others to distribute under one or more trademark(s) -which are controlled by Netscape but which are not licensed for use under this -License. - -III. Netscape and logo. 
 This License does not grant any rights to use the -trademarks "Netscape", the "Netscape N and horizon" logo or the "Netscape -lighthouse" logo, "Netcenter", "Gecko", "Java" or "JavaScript", "Smart -Browsing" even if such marks are included in the Original Code or -Modifications. - -IV. Inability to Comply Due to Contractual Obligation. 
 Prior to licensing -the Original Code under this License, Netscape has licensed third party code -for use in Netscape's Branded Code. To the extent that Netscape is -limited contractually from making such third party code available under this -License, Netscape may choose to reintegrate such code into Covered Code -without being required to distribute such code in Source Code form, even if -such code would otherwise be considered "Modifications" under this License. - -V. Use of Modifications and Covered Code by Initial Developer. - -V.1. In General. - -The obligations of Section 3 apply to Netscape, except to the extent specified -in this Amendment, Section V.2 and V.3. - -V.2. Other Products. 
 Netscape may include Covered Code in products other -than the Netscape's Branded Code which are released by Netscape during -the two (2) years following the release date of the Original Code, without -such additional products becoming subject to the terms of this License, and -may license such additional products on different terms from those contained -in this License. - -V.3. Alternative Licensing. 
 Netscape may license the Source Code of -Netscape's Branded Code, including Modifications incorporated therein, -without such Netscape Branded Code becoming subject to the terms of this -License, and may license such Netscape Branded Code on different terms from -those contained in this License. - -VI. Litigation. - -Notwithstanding the limitations of Section 11 above, the provisions regarding -litigation in Section 11(a), (b) and (c) of the License shall apply to all -disputes relating to this License. - -
EXHIBIT A-Netscape Public License. - - -"The contents of this file are subject to the Netscape Public License Version -1.1 (the "License"); you may not use this file except in compliance with the -License. You may obtain a copy of the License at http://www.mozilla.org/NPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for -the specific language governing rights and limitations under the License. - -The Original Code is Mozilla Communicator client code, released March 31, -1998. - -The Initial Developer of the Original Code is Netscape Communications -Corporation. Portions created by Netscape are Copyright (C) 1998-1999 Netscape -Communications Corporation. All Rights Reserved.
Contributor(s): -______________________________________. - - -Alternatively, the contents of this file may be used under the terms of the -_____ license (the  "[___] License"), in which case the provisions of [______] -License are applicable  instead of those above.  If you wish to allow use of -your version of this file only under the terms of the [____] License and not -to allow others to use your version of this file under the NPL, indicate your -decision by deleting  the provisions above and replace  them with the notice -and other provisions required by the [___] License.  If you do not delete the -provisions above, a recipient may use your version of this file under either -the NPL or the [___] License." - - -Mozilla Public License Version 1.1 - -1. Definitions. - -1.0.1. "Commercial Use" means distribution or otherwise making the Covered -Code available to a third party. - -1.1. "Contributor" means each entity that creates or contributes to the -creation of Modifications. - -1.2. "Contributor Version" means the combination of the Original Code, prior -Modifications used by a Contributor, and the Modifications made by that -particular Contributor. - -1.3. "Covered Code" means the Original Code or Modifications or the -combination of the Original Code and Modifications, in each case including -portions thereof. - -1.4. "Electronic Distribution Mechanism" means a mechanism generally accepted -in the software development community for the electronic transfer of data. - -1.5. "Executable" means Covered Code in any form other than Source Code. - -1.6. "Initial Developer" means the individual or entity identified as the -Initial Developer in the Source Code notice required by Exhibit A. - -1.7. "Larger Work" means a work which combines Covered Code or portions -thereof with code not governed by the terms of this License. - -1.8. "License" means this document. - -1.8.1. "Licensable" means having the right to grant, to the maximum extent -possible, whether at the time of the initial grant or subsequently acquired, -any and all of the rights conveyed herein. - -1.9. "Modifications" means any addition to or deletion from the substance or -structure of either the Original Code or any previous Modifications. When -Covered Code is released as a series of files, a Modification is: - -Any addition to or deletion from the contents of a file containing Original -Code or previous Modifications. - -Any new file that contains any part of the Original Code or previous -Modifications. - -1.10. "Original Code" means Source Code of computer software code which is -described in the Source Code notice required by Exhibit A as Original Code, -and which, at the time of its release under this License is not already -Covered Code governed by this License. - -1.10.1. "Patent Claims" means any patent claim(s), now owned or hereafter -acquired, including without limitation, method, process, and apparatus claims, -in any patent Licensable by grantor. - -1.11. "Source Code" means the preferred form of the Covered Code for making -modifications to it, including all modules it contains, plus any associated -interface definition files, scripts used to control compilation and -installation of an Executable, or source code differential comparisons against -either the Original Code or another well known, available Covered Code of the -Contributor's choice. The Source Code can be in a compressed or archival -form, provided the appropriate decompression or de-archiving software is -widely available for no charge. - -1.12. "You" (or "Your") means an individual or a legal entity exercising -rights under, and complying with all of the terms of, this License or a future -version of this License issued under Section 6.1. For legal entities, "You" -includes any entity which controls, is controlled by, or is under common -control with You. For purposes of this definition, "control" means (a) the -power, direct or indirect, to cause the direction or management of such -entity, whether by contract or otherwise, or (b) ownership of more than fifty -percent (50%) of the outstanding shares or beneficial ownership of such -entity. - -2. Source Code License. - -2.1. The Initial Developer Grant. The Initial Developer hereby grants You a -world-wide, royalty-free, non-exclusive license, subject to third party -intellectual property claims: - -a. under intellectual property rights (other than patent or trademark) -Licensable by Initial Developer to use, reproduce, modify, display, perform, -sublicense and distribute the Original Code (or portions thereof) with or -without Modifications, and/or as part of a Larger Work; and - -b. under Patents Claims infringed by the making, using or selling of Original -Code, to make, have made, use, practice, sell, and offer for sale, and/or -otherwise dispose of the Original Code (or portions thereof). - -c. the licenses granted in this Section 2.1 (a) and (b) are effective on the -date Initial Developer first distributes Original Code under the terms of this -License. - -d. Notwithstanding Section 2.1 (b) above, no patent license is granted: 1) for -code that You delete from the Original Code; 2) separate from the Original -Code; or 3) for infringements caused by: i) the modification of the Original -Code or ii) the combination of the Original Code with other software or -devices. - -2.2. Contributor Grant. Subject to third party intellectual property claims, -each Contributor hereby grants You a world-wide, royalty-free, non-exclusive -license - -a. under intellectual property rights (other than patent or trademark) -Licensable by Contributor, to use, reproduce, modify, display, perform, -sublicense and distribute the Modifications created by such Contributor (or -portions thereof) either on an unmodified basis, with other Modifications, as -Covered Code and/or as part of a Larger Work; and - -b. under Patent Claims infringed by the making, using, or selling of -Modifications made by that Contributor either alone and/or in combination with -its Contributor Version (or portions of such combination), to make, use, sell, -offer for sale, have made, and/or otherwise dispose of: 1) Modifications made -by that Contributor (or portions thereof); and 2) the combination of -Modifications made by that Contributor with its Contributor Version (or -portions of such combination). - -c. the licenses granted in Sections 2.2 (a) and 2.2 (b) are effective on the -date Contributor first makes Commercial Use of the Covered Code. - -d. Notwithstanding Section 2.2 (b) above, no patent license is granted: 1) for -any code that Contributor has deleted from the Contributor Version; 2) -separate from the Contributor Version; 3) for infringements caused by: i) -third party modifications of Contributor Version or ii) the combination of -Modifications made by that Contributor with other software (except as part of -the Contributor Version) or other devices; or 4) under Patent Claims infringed -by Covered Code in the absence of Modifications made by that Contributor. - -3. Distribution Obligations. - -3.1. Application of License. The Modifications which You create or to which -You contribute are governed by the terms of this License, including without -limitation Section 2.2. The Source Code version of Covered Code may be -distributed only under the terms of this License or a future version of this -License released under Section 6.1, and You must include a copy of this -License with every copy of the Source Code You distribute. You may not offer -or impose any terms on any Source Code version that alters or restricts the -applicable version of this License or the recipients' rights hereunder. -However, You may include an additional document offering the additional rights -described in Section 3.5. - -3.2. Availability of Source Code. Any Modification which You create or to -which You contribute must be made available in Source Code form under the -terms of this License either on the same media as an Executable version or via -an accepted Electronic Distribution Mechanism to anyone to whom you made an -Executable version available; and if made available via Electronic -Distribution Mechanism, must remain available for at least twelve (12) months -after the date it initially became available, or at least six (6) months after -a subsequent version of that particular Modification has been made available -to such recipients. You are responsible for ensuring that the Source Code -version remains available even if the Electronic Distribution Mechanism is -maintained by a third party. - -3.3. Description of Modifications. You must cause all Covered Code to which -You contribute to contain a file documenting the changes You made to create -that Covered Code and the date of any change. You must include a prominent -statement that the Modification is derived, directly or indirectly, from -Original Code provided by the Initial Developer and including the name of the -Initial Developer in (a) the Source Code, and (b) in any notice in an -Executable version or related documentation in which You describe the origin -or ownership of the Covered Code. - -3.4. Intellectual Property Matters - -(a) Third Party Claims - -If Contributor has knowledge that a license under a third party's -intellectual property rights is required to exercise the rights granted by -such Contributor under Sections 2.1 or 2.2, Contributor must include a text -file with the Source Code distribution titled "LEGAL" which describes the -claim and the party making the claim in sufficient detail that a recipient -will know whom to contact. If Contributor obtains such knowledge after the -Modification is made available as described in Section 3.2, Contributor shall -promptly modify the LEGAL file in all copies Contributor makes available -thereafter and shall take other steps (such as notifying appropriate mailing -lists or newsgroups) reasonably calculated to inform those who received the -Covered Code that new knowledge has been obtained. - -(b) Contributor APIs - -If Contributor's Modifications include an application programming -interface and Contributor has knowledge of patent licenses which are -reasonably necessary to implement that API, Contributor must also include this -information in the LEGAL file. - -(c) Representations. - -Contributor represents that, except as disclosed pursuant to Section 3.4 (a) -above, Contributor believes that Contributor's Modifications are -Contributor's original creation(s) and/or Contributor has sufficient -rights to grant the rights conveyed by this License. - -3.5. Required Notices. You must duplicate the notice in Exhibit A in each file -of the Source Code. If it is not possible to put such notice in a particular -Source Code file due to its structure, then You must include such notice in a -location (such as a relevant directory) where a user would be likely to look -for such a notice. If You created one or more Modification(s) You may add your -name as a Contributor to the notice described in Exhibit A. You must also -duplicate this License in any documentation for the Source Code where You -describe recipients' rights or ownership rights relating to Covered Code. -You may choose to offer, and to charge a fee for, warranty, support, indemnity -or liability obligations to one or more recipients of Covered Code. However, -You may do so only on Your own behalf, and not on behalf of the Initial -Developer or any Contributor. You must make it absolutely clear than any such -warranty, support, indemnity or liability obligation is offered by You alone, -and You hereby agree to indemnify the Initial Developer and every Contributor -for any liability incurred by the Initial Developer or such Contributor as a -result of warranty, support, indemnity or liability terms You offer. - -3.6. Distribution of Executable Versions. You may distribute Covered Code in -Executable form only if the requirements of Sections 3.1, 3.2, 3.3, 3.4 and -3.5 have been met for that Covered Code, and if You include a notice stating -that the Source Code version of the Covered Code is available under the terms -of this License, including a description of how and where You have fulfilled -the obligations of Section 3.2. The notice must be conspicuously included in -any notice in an Executable version, related documentation or collateral in -which You describe recipients' rights relating to the Covered Code. You -may distribute the Executable version of Covered Code or ownership rights -under a license of Your choice, which may contain terms different from this -License, provided that You are in compliance with the terms of this License -and that the license for the Executable version does not attempt to limit or -alter the recipient's rights in the Source Code version from the rights -set forth in this License. If You distribute the Executable version under a -different license You must make it absolutely clear that any terms which -differ from this License are offered by You alone, not by the Initial -Developer or any Contributor. You hereby agree to indemnify the Initial -Developer and every Contributor for any liability incurred by the Initial -Developer or such Contributor as a result of any such terms You offer. - -3.7. Larger Works. You may create a Larger Work by combining Covered Code with -other code not governed by the terms of this License and distribute the Larger -Work as a single product. In such a case, You must make sure the requirements -of this License are fulfilled for the Covered Code. - -4. Inability to Comply Due to Statute or Regulation. - -If it is impossible for You to comply with any of the terms of this License -with respect to some or all of the Covered Code due to statute, judicial -order, or regulation then You must: (a) comply with the terms of this License -to the maximum extent possible; and (b) describe the limitations and the code -they affect. Such description must be included in the LEGAL file described in -Section 3.4 and must be included with all distributions of the Source Code. -Except to the extent prohibited by statute or regulation, such description -must be sufficiently detailed for a recipient of ordinary skill to be able to -understand it. - -5. Application of this License. -This License applies to code to which the Initial Developer has attached the -notice in Exhibit A and to related Covered Code. - -6. Versions of the License. - -6.1. New Versions - -Netscape Communications Corporation ("Netscape") may publish revised and/or -new versions of the License from time to time. Each version will be given a -distinguishing version number. - -6.2. Effect of New Versions - -Once Covered Code has been published under a particular version of the -License, You may always continue to use it under the terms of that version. -You may also choose to use such Covered Code under the terms of any subsequent -version of the License published by Netscape. No one other than Netscape has -the right to modify the terms applicable to Covered Code created under this -License. - -6.3. Derivative Works - -If You create or use a modified version of this License (which you may only do -in order to apply it to code which is not already Covered Code governed by -this License), You must (a) rename Your license so that the phrases "Mozilla", -"MOZILLAPL", "MOZPL", "Netscape", "MPL", "NPL" or any confusingly similar -phrase do not appear in your license (except to note that your license differs -from this License) and (b) otherwise make it clear that Your version of the -license contains terms which differ from the Mozilla Public License and -Netscape Public License. (Filling in the name of the Initial Developer, -Original Code or Contributor in the notice described in Exhibit A shall not of -themselves be deemed to be modifications of this License.) - -7. DISCLAIMER OF WARRANTY -COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT -WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT -LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, -FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE -QUALITY AND PERFORMANCE OF THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED -CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY -OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR -CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS -LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS -DISCLAIMER. - -8. Termination - -8.1. This License and the rights granted hereunder will terminate -automatically if You fail to comply with terms herein and fail to cure such -breach within 30 days of becoming aware of the breach. All sublicenses to the -Covered Code which are properly granted shall survive any termination of this -License. Provisions which, by their nature, must remain in effect beyond the -termination of this License shall survive. - -8.2. If You initiate litigation by asserting a patent infringement claim -(excluding declatory judgment actions) against Initial Developer or a -Contributor (the Initial Developer or Contributor against whom You file such -action is referred to as "Participant") alleging that: - -a. such Participant's Contributor Version directly or indirectly -infringes any patent, then any and all rights granted by such Participant to -You under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice -from Participant terminate prospectively, unless if within 60 days after -receipt of notice You either: (i) agree in writing to pay Participant a -mutually agreeable reasonable royalty for Your past and future use of -Modifications made by such Participant, or (ii) withdraw Your litigation claim -with respect to the Contributor Version against such Participant. If within 60 -days of notice, a reasonable royalty and payment arrangement are not mutually -agreed upon in writing by the parties or the litigation claim is not -withdrawn, the rights granted by Participant to You under Sections 2.1 and/or -2.2 automatically terminate at the expiration of the 60 day notice period -specified above. - -b. any software, hardware, or device, other than such Participant's -Contributor Version, directly or indirectly infringes any patent, then any -rights granted to You by such Participant under Sections 2.1(b) and 2.2(b) are -revoked effective as of the date You first made, used, sold, distributed, or -had made, Modifications made by that Participant. - -8.3. If You assert a patent infringement claim against Participant alleging -that such Participant's Contributor Version directly or indirectly -infringes any patent where such claim is resolved (such as by license or -settlement) prior to the initiation of patent infringement litigation, then -the reasonable value of the licenses granted by such Participant under -Sections 2.1 or 2.2 shall be taken into account in determining the amount or -value of any payment or license. - -8.4. In the event of termination under Sections 8.1 or 8.2 above, all end user -license agreements (excluding distributors and resellers) which have been -validly granted by You or any distributor hereunder prior to termination shall -survive termination. - -9. LIMITATION OF LIABILITY -UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING -NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY -OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, OR ANY SUPPLIER OF ANY -OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, -INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT -LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR -MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH -PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS -LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL -INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE -LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION -OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND -LIMITATION MAY NOT APPLY TO YOU. - -10. U.S. government end users -The Covered Code is a "commercial item," as that term is defined in 48 C.F.R. -2.101 (Oct. 1995), consisting of "commercial computer software" and -"commercial computer software documentation," as such terms are used in 48 -C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. -227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users -acquire Covered Code with only those rights set forth herein. - -11. Miscellaneous -This License represents the complete agreement concerning subject matter -hereof. If any provision of this License is held to be unenforceable, such -provision shall be reformed only to the extent necessary to make it -enforceable. This License shall be governed by California law provisions -(except to the extent applicable law, if any, provides otherwise), excluding -its conflict-of-law provisions. With respect to disputes in which at least one -party is a citizen of, or an entity chartered or registered to do business in -the United States of America, any litigation relating to this License shall be -subject to the jurisdiction of the Federal Courts of the Northern District of -California, with venue lying in Santa Clara County, California, with the -losing party responsible for costs, including without limitation, court costs -and reasonable attorneys' fees and expenses. The application of the -United Nations Convention on Contracts for the International Sale of Goods is -expressly excluded. Any law or regulation which provides that the language of -a contract shall be construed against the drafter shall not apply to this -License. - -12. Responsibility for claims -As between Initial Developer and the Contributors, each party is responsible -for claims and damages arising, directly or indirectly, out of its utilization -of rights under this License and You agree to work with Initial Developer and -Contributors to distribute such responsibility on an equitable basis. Nothing -herein is intended or shall be deemed to constitute any admission of -liability. - -13. Multiple-licensed code -Initial Developer may designate portions of the Covered Code as "Multiple- -Licensed". "Multiple-Licensed" means that the Initial Developer permits you to -utilize portions of the Covered Code under Your choice of the MPL or the -alternative licenses, if any, specified by the Initial Developer in the file -described in Exhibit A. - -Exhibit A - Mozilla Public License. - -"The contents of this file are subject to the Mozilla Public License Version -1.1 (the "License"); you may not use this file except in compliance with the -License. You may obtain a copy of the License at http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for -the specific language governing rights and limitations under the License. - -The Original Code is ______________________________________. - -The Initial Developer of the Original Code is ________________________. - -Portions created by ______________________ are Copyright (C) ______ - -_______________________. All Rights Reserved. - -Contributor(s): ______________________________________. - -Alternatively, the contents of this file may be used under the terms of the -_____ license (the "[___] License"), in which case the provisions of [______] -License are applicable instead of those above. If you wish to allow use of -your version of this file only under the terms of the [____] License and not -to allow others to use your version of this file under the MPL, indicate your -decision by deleting the provisions above and replace them with the notice and -other provisions required by the [___] License. If you do not delete the -provisions above, a recipient may use your version of this file under either -the MPL or the [___] License." - -NOTE: The text of this Exhibit A may differ slightly from the text of the -notices in the Source Code files of the Original Code. You should use the text -of this Exhibit A rather than the text found in the Original Code Source Code -for Your Modifications. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/OFL-1.1.txt b/vendor/github.com/google/licenseclassifier/licenses/OFL-1.1.txt deleted file mode 100644 index 6f0eea4..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/OFL-1.1.txt +++ /dev/null @@ -1,85 +0,0 @@ -This Font Software is licensed under the SIL Open Font License, Version 1.1. -This license is copied below, and is also available with a FAQ at: -http://scripts.sil.org/OFL - ---------------------------------------------------------------------------- -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ---------------------------------------------------------------------------- - -PREAMBLE - -The goals of the Open Font License (OFL) are to stimulate worldwide development -of collaborative font projects, to support the font creation efforts of academic -and linguistic communities, and to provide a free and open framework in which -fonts may be shared and improved in partnership with others. - -The OFL allows the licensed fonts to be used, studied, modified and redistributed -freely as long as they are not sold by themselves. The fonts, including any -derivative works, can be bundled, embedded, redistributed and/or sold with any -software provided that any reserved names are not used by derivative works. The -fonts and derivatives, however, cannot be released under any other type of license. -The requirement for fonts to remain under this license does not apply to any -document created using the fonts or their derivatives. - -DEFINITIONS - -"Font Software" refers to the set of files released by the Copyright Holder(s) under -this license and clearly marked as such. This may include source files, build -scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the copyright -statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, or -substituting -- in part or in whole -- any of the components of the Original Version, -by changing formats or by porting the Font Software to a new environment. - -"Author" refers to any designer, engineer, programmer, technical writer or other -person who contributed to the Font Software. - -PERMISSION & CONDITIONS - -Permission is hereby granted, free of charge, to any person obtaining a copy of the -Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell -modified and unmodified copies of the Font Software, subject to the following -conditions: - -1) Neither the Font Software nor any of its individual components, in Original or -Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, redistributed -and/or sold with any software, provided that each copy contains the above copyright -notice and this license. These can be included either as stand-alone text files, -human-readable headers or in the appropriate machine-readable metadata fields within -text or binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless -explicit written permission is granted by the corresponding Copyright Holder. This -restriction only applies to the primary font name as presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall -not be used to promote, endorse or advertise any Modified Version, except to -acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with -their explicit written permission. - -5) The Font Software, modified or unmodified, in part or in whole, must be distributed -entirely under this license, and must not be distributed under any other license. The -requirement for fonts to remain under this license does not apply to any document -created using the Font Software. - -TERMINATION - -This license becomes null and void if any of the above conditions are not met. - -DISCLAIMER - -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER -RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR -INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/vendor/github.com/google/licenseclassifier/licenses/OSL-1.0.txt b/vendor/github.com/google/licenseclassifier/licenses/OSL-1.0.txt deleted file mode 100644 index db05811..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/OSL-1.0.txt +++ /dev/null @@ -1,153 +0,0 @@ -The Open Software License v. 1.0 - -This Open Software License (the "License") applies to any original work of -authorship (the "Original Work") whose owner (the "Licensor") has placed the -following notice immediately following the copyright notice for the Original -Work: - -"Licensed under the Open Software License version 1.0" - -License Terms - -1) Grant of Copyright License. Licensor hereby grants You a world-wide, -royalty-free, non-exclusive, perpetual, non-sublicenseable license to do the -following: - -a) to reproduce the Original Work in copies; - -b) to prepare derivative works ("Derivative Works") based upon the Original -Work; - -c) to distribute copies of the Original Work and Derivative Works to the -public, with the proviso that copies of Original Work or Derivative Works that -You distribute shall be licensed under the Open Software License; - -d) to perform the Original Work publicly; and - -e) to display the Original Work publicly. - -2) Grant of Patent License. Licensor hereby grants You a world-wide, royalty- -free, non-exclusive, perpetual, non-sublicenseable license, under patent -claims owned or controlled by the Licensor that are embodied in the Original -Work as furnished by the Licensor ("Licensed Claims") to make, use, sell and -offer for sale the Original Work. Licensor hereby grants You a world-wide, -royalty-free, non-exclusive, perpetual, non-sublicenseable license under the -Licensed Claims to make, use, sell and offer for sale Derivative Works. - -3) Grant of Source Code License. The term "Source Code" means the preferred -form of the Original Work for making modifications to it and all available -documentation describing how to access and modify the Original Work. Licensor -hereby agrees to provide a machine-readable copy of the Source Code of the -Original Work along with each copy of the Original Work that Licensor -distributes. Licensor reserves the right to satisfy this obligation by placing -a machine-readable copy of the Source Code in an information repository -reasonably calculated to permit inexpensive and convenient access by You for -as long as Licensor continues to distribute the Original Work, and by -publishing the address of that information repository in a notice immediately -following the copyright notice that applies to the Original Work. - -4) Exclusions From License Grant. Nothing in this License shall be deemed to -grant any rights to trademarks, copyrights, patents, trade secrets or any -other intellectual property of Licensor except as expressly stated herein. No -patent license is granted to make, use, sell or offer to sell embodiments of -any patent claims other than the Licensed Claims defined in Section 2. No -right is granted to the trademarks of Licensor even if such marks are included -in the Original Work. Nothing in this License shall be interpreted to prohibit -Licensor from licensing under different terms from this License any Original -Work that Licensor otherwise would have a right to license. - -5) External Deployment. The term "External Deployment" means the use or -distribution of the Original Work or Derivative Works in any way such that the -Original Work or Derivative Works may be accessed or used by anyone other than -You, whether the Original Work or Derivative Works are distributed to those -persons, made available as an application intended for use over a computer -network, or used to provide services or otherwise deliver content to anyone -other than You. As an express condition for the grants of license hereunder, -You agree that any External Deployment by You shall be deemed a distribution -and shall be licensed to all under the terms of this License, as prescribed in -section 1(c) herein. - -6) Warranty and Disclaimer of Warranty. LICENSOR WARRANTS THAT THE COPYRIGHT -IN AND TO THE ORIGINAL WORK IS OWNED BY THE LICENSOR OR THAT THE ORIGINAL WORK -IS DISTRIBUTED BY LICENSOR UNDER A VALID CURRENT LICENSE FROM THE COPYRIGHT -OWNER. EXCEPT AS EXPRESSLY STATED IN THE IMMEDIATELY PRECEEDING SENTENCE, THE -ORIGINAL WORK IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT -WARRANTY, EITHER EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION, THE -WARRANTY OF NON-INFRINGEMENT AND WARRANTIES THAT THE ORIGINAL WORK IS -MERCHANTABLE OR FIT FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE -QUALITY OF THE ORIGINAL WORK IS WITH YOU. THIS DISCLAIMER OF WARRANTY -CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO LICENSE TO ORIGINAL WORK IS -GRANTED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. - -7) Limitation of Liability. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, -WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE -LICENSOR BE LIABLE TO ANY PERSON FOR ANY DIRECT, INDIRECT, SPECIAL, -INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING AS A RESULT OF -THIS LICENSE OR THE USE OF THE ORIGINAL WORK INCLUDING, WITHOUT LIMITATION, -DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, -OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PERSON SHALL -HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF -LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING -FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH -LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF -INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT -APPLY TO YOU. - -8) Acceptance and Termination. Nothing else but this License (or another -written agreement between Licensor and You) grants You permission to create -Derivative Works based upon the Original Work, and any attempt to do so except -under the terms of this License (or another written agreement between Licensor -and You) is expressly prohibited by U.S. copyright law, the equivalent laws of -other countries, and by international treaty. Therefore, by exercising any of -the rights granted to You in Sections 1 and 2 herein, You indicate Your -acceptance of this License and all of its terms and conditions. This license -shall terminate immediately and you may no longer exercise any of the rights -granted to You by this License upon Your failure to honor the proviso in -Section 1(c) herein. - -9) Mutual Termination for Patent Action. This License shall terminate -automatically and You may no longer exercise any of the rights granted to You -by this License if You file a lawsuit in any court alleging that any OSI -Certified open source software that is licensed under any license containing -this "Mutual Termination for Patent Action" clause infringes any patent claims -that are essential to use that software. - -10) Jurisdiction, Venue and Governing Law. You agree that any lawsuit arising -under or relating to this License shall be maintained in the courts of the -jurisdiction wherein the Licensor resides or in which Licensor conducts its -primary business, and under the laws of that jurisdiction excluding its -conflict-of-law provisions. The application of the United Nations Convention -on Contracts for the International Sale of Goods is expressly excluded. Any -use of the Original Work outside the scope of this License or after its -termination shall be subject to the requirements and penalties of the U.S. -Copyright Act, 17 U.S.C. § 101 et seq., the equivalent laws of other -countries, and international treaty. This section shall survive the -termination of this License. - -11) Attorneys Fees. In any action to enforce the terms of this License or -seeking damages relating thereto, the prevailing party shall be entitled to -recover its costs and expenses, including, without limitation, reasonable -attorneys' fees and costs incurred in connection with such action, -including any appeal of such action. This section shall survive the -termination of this License. - -12) Miscellaneous. This License represents the complete agreement concerning -the subject matter hereof. If any provision of this License is held to be -unenforceable, such provision shall be reformed only to the extent necessary -to make it enforceable. - -13) Definition of "You" in This License. "You" throughout this License, -whether in upper or lower case, means an individual or a legal entity -exercising rights under, and complying with all of the terms of, this License. -For legal entities, "You" includes any entity that controls, is controlled by, -or is under common control with you. For purposes of this definition, -"control" means (i) the power, direct or indirect, to cause the direction or -management of such entity, whether by contract or otherwise, or (ii) ownership -of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial -ownership of such entity. - -This license is Copyright (C) 2002 Lawrence E. Rosen. All rights reserved. -Permission is hereby granted to copy and distribute this license without -modification. This license may not be modified without the express written -permission of its copyright owner. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/OSL-1.1.txt b/vendor/github.com/google/licenseclassifier/licenses/OSL-1.1.txt deleted file mode 100644 index a910909..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/OSL-1.1.txt +++ /dev/null @@ -1,162 +0,0 @@ -The Open Software License v. 1.1 - -This Open Software License (the "License") applies to any original work of -authorship (the "Original Work") whose owner (the "Licensor") has placed the -following notice immediately following the copyright notice for the Original -Work: - -Licensed under the Open Software License version 1.1 - -1) Grant of Copyright License. Licensor hereby grants You a world-wide, -royalty-free, non-exclusive, perpetual, non-sublicenseable license to do the -following: - -a) to reproduce the Original Work in copies; - -b) to prepare derivative works ("Derivative Works") based upon the Original -Work; - -c) to distribute copies of the Original Work and Derivative Works to the -public, with the proviso that copies of Original Work or Derivative Works that -You distribute shall be licensed under the Open Software License; - -d) to perform the Original Work publicly; and - -e) to display the Original Work publicly. - -2) Grant of Patent License. Licensor hereby grants You a world-wide, royalty- -free, non-exclusive, perpetual, non-sublicenseable license, under patent -claims owned or controlled by the Licensor that are embodied in the Original -Work as furnished by the Licensor ("Licensed Claims") to make, use, sell and -offer for sale the Original Work. Licensor hereby grants You a world-wide, -royalty-free, non-exclusive, perpetual, non-sublicenseable license under the -Licensed Claims to make, use, sell and offer for sale Derivative Works. - -3) Grant of Source Code License. The term "Source Code" means the preferred -form of the Original Work for making modifications to it and all available -documentation describing how to modify the Original Work. Licensor hereby -agrees to provide a machine-readable copy of the Source Code of the Original -Work along with each copy of the Original Work that Licensor distributes. -Licensor reserves the right to satisfy this obligation by placing a machine- -readable copy of the Source Code in an information repository reasonably -calculated to permit inexpensive and convenient access by You for as long as -Licensor continues to distribute the Original Work, and by publishing the -address of that information repository in a notice immediately following the -copyright notice that applies to the Original Work. - -4) Exclusions From License Grant. Nothing in this License shall be deemed to -grant any rights to trademarks, copyrights, patents, trade secrets or any -other intellectual property of Licensor except as expressly stated herein. No -patent license is granted to make, use, sell or offer to sell embodiments of -any patent claims other than the Licensed Claims defined in Section 2. No -right is granted to the trademarks of Licensor even if such marks are included -in the Original Work. Nothing in this License shall be interpreted to prohibit -Licensor from licensing under different terms from this License any Original -Work that Licensor otherwise would have a right to license. - -5) External Deployment. The term "External Deployment" means the use or -distribution of the Original Work or Derivative Works in any way such that the -Original Work or Derivative Works may be used by anyone other than You, -whether the Original Work or Derivative Works are distributed to those persons -or made available as an application intended for use over a computer network. -As an express condition for the grants of license hereunder, You agree that -any External Deployment by You of a Derivative Work shall be deemed a -distribution and shall be licensed to all under the terms of this License, as -prescribed in section 1(c) herein. - -6) Attribution Rights. You must retain, in the Source Code of any Derivative -Works that You create, all copyright, patent or trademark notices from the -Source Code of the Original Work, as well as any notices of licensing and any -descriptive text identified therein as an "Attribution Notice." You must cause -the Source Code for any Derivative Works that You create to carry a prominent -Attribution Notice reasonably calculated to inform recipients that You have -modified the Original Work. - -7) Warranty and Disclaimer of Warranty. Licensor warrants that the copyright -in and to the Original Work is owned by the Licensor or that the Original Work -is distributed by Licensor under a valid current license from the copyright -owner. Except as expressly stated in the immediately proceeding sentence, the -Original Work is provided under this License on an "AS IS" BASIS and WITHOUT -WARRANTY, either express or implied, including, without limitation, the -warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. -This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No -license to Original Work is granted hereunder except under this disclaimer. - -8) Limitation of Liability. Under no circumstances and under no legal theory, -whether in tort (including negligence), contract, or otherwise, shall the -Licensor be liable to any person for any direct, indirect, special, -incidental, or consequential damages of any character arising as a result of -this License or the use of the Original Work including, without limitation, -damages for loss of goodwill, work stoppage, computer failure or malfunction, -or any and all other commercial damages or losses. This limitation of -liability shall not apply to liability for death or personal injury resulting -from Licensor's negligence to the extent applicable law prohibits such -limitation. Some jurisdictions do not allow the exclusion or limitation of -incidental or consequential damages, so this exclusion and limitation may not -apply to You. - -9) Acceptance and Termination. If You distribute copies of the Original Work -or a Derivative Work, You must make a reasonable effort under the -circumstances to obtain the express and volitional assent of recipients to the -terms of this License. Nothing else but this License (or another written -agreement between Licensor and You) grants You permission to create Derivative -Works based upon the Original Work or to exercise any of the rights granted in -Sections 1 herein, and any attempt to do so except under the terms of this -License (or another written agreement between Licensor and You) is expressly -prohibited by U.S. copyright law, the equivalent laws of other countries, and -by international treaty. Therefore, by exercising any of the rights granted to -You in Sections 1 herein, You indicate Your acceptance of this License and all -of its terms and conditions. This License shall terminate immediately and you -may no longer exercise any of the rights granted to You by this License upon -Your failure to honor the proviso in Section 1(c) herein. - -10) Mutual Termination for Patent Action. This License shall terminate -automatically and You may no longer exercise any of the rights granted to You -by this License if You file a lawsuit in any court alleging that any OSI -Certified open source software that is licensed under any license containing -this "Mutual Termination for Patent Action" clause infringes any patent claims -that are essential to use that software. - -11) Jurisdiction, Venue and Governing Law. Any action or suit relating to this -License may be brought only in the courts of a jurisdiction wherein the -Licensor resides or in which Licensor conducts its primary business, and under -the laws of that jurisdiction excluding its conflict-of-law provisions. The -application of the United Nations Convention on Contracts for the -International Sale of Goods is expressly excluded. Any use of the Original -Work outside the scope of this License or after its termination shall be -subject to the requirements and penalties of the U.S. Copyright Act, 17 U.S.C. -å¤ 101 et seq., the equivalent laws of other countries, and international -treaty. This section shall survive the termination of this License. - -12) Attorneys Fees. In any action to enforce the terms of this License or -seeking damages relating thereto, the prevailing party shall be entitled to -recover its costs and expenses, including, without limitation, reasonable -attorneys' fees and costs incurred in connection with such action, -including any appeal of such action. This section shall survive the -termination of this License. - -13) Miscellaneous. This License represents the complete agreement concerning -the subject matter hereof. If any provision of this License is held to be -unenforceable, such provision shall be reformed only to the extent necessary -to make it enforceable. - -14) Definition of "You" in This License. "You" throughout this License, -whether in upper or lower case, means an individual or a legal entity -exercising rights under, and complying with all of the terms of, this License. -For legal entities, "You" includes any entity that controls, is controlled by, -or is under common control with you. For purposes of this definition, -"control" means (i) the power, direct or indirect, to cause the direction or -management of such entity, whether by contract or otherwise, or (ii) ownership -of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial -ownership of such entity. - -15) Right to Use. You may use the Original Work in all ways not otherwise -restricted or conditioned by this License or by law, and Licensor promises not -to interfere with or be responsible for such uses by You. - -This license is Copyright (C) 2002 Lawrence E. Rosen. All rights reserved. -Permission is hereby granted to copy and distribute this license without -modification. This license may not be modified without the express written -permission of its copyright owner. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/OSL-2.0.txt b/vendor/github.com/google/licenseclassifier/licenses/OSL-2.0.txt deleted file mode 100644 index 1b06ad8..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/OSL-2.0.txt +++ /dev/null @@ -1,167 +0,0 @@ -Open Software Licensev. 2.0 - -This Open Software License (the "License") applies to any original work of -authorship (the "Original Work") whose owner (the "Licensor") has placed the -following notice immediately following the copyright notice for the Original -Work: - -Licensed under the Open Software License version 2.0 - -1) Grant of Copyright License. Licensor hereby grants You a world-wide, -royalty-free, non-exclusive, perpetual, sublicenseable license to do the -following: - -a) to reproduce the Original Work in copies; - -b) to prepare derivative works ("Derivative Works") based upon the Original -Work; - -c) to distribute copies of the Original Work and Derivative Works to the -public, with the proviso that copies of Original Work or Derivative Works that -You distribute shall be licensed under the Open Software License; - -d) to perform the Original Work publicly; and - -e) to display the Original Work publicly. - -2) Grant of Patent License. Licensor hereby grants You a world-wide, royalty- -free, non-exclusive, perpetual, sublicenseable license, under patent claims -owned or controlled by the Licensor that are embodied in the Original Work as -furnished by the Licensor, to make, use, sell and offer for sale the Original -Work and Derivative Works. - -3) Grant of Source Code License. The term "Source Code" means the preferred -form of the Original Work for making modifications to it and all available -documentation describing how to modify the Original Work. Licensor hereby -agrees to provide a machine-readable copy of the Source Code of the Original -Work along with each copy of the Original Work that Licensor distributes. -Licensor reserves the right to satisfy this obligation by placing a machine- -readable copy of the Source Code in an information repository reasonably -calculated to permit inexpensive and convenient access by You for as long as -Licensor continues to distribute the Original Work, and by publishing the -address of that information repository in a notice immediately following the -copyright notice that applies to the Original Work. - -4) Exclusions From License Grant. Neither the names of Licensor, nor the names -of any contributors to the Original Work, nor any of their trademarks or -service marks, may be used to endorse or promote products derived from this -Original Work without express prior written permission of the Licensor. -Nothing in this License shall be deemed to grant any rights to trademarks, -copyrights, patents, trade secrets or any other intellectual property of -Licensor except as expressly stated herein. No patent license is granted to -make, use, sell or offer to sell embodiments of any patent claims other than -the licensed claims defined in Section 2. No right is granted to the -trademarks of Licensor even if such marks are included in the Original Work. -Nothing in this License shall be interpreted to prohibit Licensor from -licensing under different terms from this License any Original Work that -Licensor otherwise would have a right to license. - -5) External Deployment. The term "External Deployment" means the use or -distribution of the Original Work or Derivative Works in any way such that the -Original Work or Derivative Works may be used by anyone other than You, -whether the Original Work or Derivative Works are distributed to those persons -or made available as an application intended for use over a computer network. -As an express condition for the grants of license hereunder, You agree that -any External Deployment by You of a Derivative Work shall be deemed a -distribution and shall be licensed to all under the terms of this License, as -prescribed in section 1(c) herein. - -6) Attribution Rights. You must retain, in the Source Code of any Derivative -Works that You create, all copyright, patent or trademark notices from the -Source Code of the Original Work, as well as any notices of licensing and any -descriptive text identified therein as an "Attribution Notice." You must cause -the Source Code for any Derivative Works that You create to carry a prominent -Attribution Notice reasonably calculated to inform recipients that You have -modified the Original Work. - -7) Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that -the copyright in and to the Original Work and the patent rights granted herein -by Licensor are owned by the Licensor or are sublicensed to You under the -terms of this License with the permission of the contributor(s) of those -copyrights and patent rights. Except as expressly stated in the immediately -proceeding sentence, the Original Work is provided under this License on an -"AS IS" BASIS and WITHOUT WARRANTY, either express or implied, including, -without limitation, the warranties of NON-INFRINGEMENT, MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY OF THE -ORIGINAL WORK IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an -essential part of this License. No license to Original Work is granted -hereunder except under this disclaimer. - -8) Limitation of Liability. Under no circumstances and under no legal theory, -whether in tort (including negligence), contract, or otherwise, shall the -Licensor be liable to any person for any direct, indirect, special, -incidental, or consequential damages of any character arising as a result of -this License or the use of the Original Work including, without limitation, -damages for loss of goodwill, work stoppage, computer failure or malfunction, -or any and all other commercial damages or losses. This limitation of -liability shall not apply to liability for death or personal injury resulting -from Licensor's negligence to the extent applicable law prohibits such -limitation. Some jurisdictions do not allow the exclusion or limitation of -incidental or consequential damages, so this exclusion and limitation may not -apply to You. - -9) Acceptance and Termination. If You distribute copies of the Original Work -or a Derivative Work, You must make a reasonable effort under the -circumstances to obtain the express assent of recipients to the terms of this -License. Nothing else but this License (or another written agreement between -Licensor and You) grants You permission to create Derivative Works based upon -the Original Work or to exercise any of the rights granted in Section 1 -herein, and any attempt to do so except under the terms of this License (or -another written agreement between Licensor and You) is expressly prohibited by -U.S. copyright law, the equivalent laws of other countries, and by -international treaty. Therefore, by exercising any of the rights granted to -You in Section 1 herein, You indicate Your acceptance of this License and all -of its terms and conditions. This License shall terminate immediately and you -may no longer exercise any of the rights granted to You by this License upon -Your failure to honor the proviso in Section 1(c) herein. - -10) Termination for Patent Action. This License shall terminate automatically -and You may no longer exercise any of the rights granted to You by this -License as of the date You commence an action, including a cross-claim or -counterclaim, for patent infringement (i) against Licensor with respect to a -patent applicable to software or (ii) against any entity with respect to a -patent applicable to the Original Work (but excluding combinations of the -Original Work with other software or hardware). - -11) Jurisdiction, Venue and Governing Law. Any action or suit relating to this -License may be brought only in the courts of a jurisdiction wherein the -Licensor resides or in which Licensor conducts its primary business, and under -the laws of that jurisdiction excluding its conflict-of-law provisions. The -application of the United Nations Convention on Contracts for the -International Sale of Goods is expressly excluded. Any use of the Original -Work outside the scope of this License or after its termination shall be -subject to the requirements and penalties of the U.S. Copyright Act, 17 U.S.C. -101 et seq., the equivalent laws of other countries, and international treaty. -This section shall survive the termination of this License. - -12) Attorneys Fees. In any action to enforce the terms of this License or -seeking damages relating thereto, the prevailing party shall be entitled to -recover its costs and expenses, including, without limitation, reasonable -attorneys' fees and costs incurred in connection with such action, -including any appeal of such action. This section shall survive the -termination of this License. - -13) Miscellaneous. This License represents the complete agreement concerning -the subject matter hereof. If any provision of this License is held to be -unenforceable, such provision shall be reformed only to the extent necessary -to make it enforceable. - -14) Definition of "You" in This License. "You" throughout this License, -whether in upper or lower case, means an individual or a legal entity -exercising rights under, and complying with all of the terms of, this License. -For legal entities, "You" includes any entity that controls, is controlled by, -or is under common control with you. For purposes of this definition, -"control" means (i) the power, direct or indirect, to cause the direction or -management of such entity, whether by contract or otherwise, or (ii) ownership -of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial -ownership of such entity. - -15) Right to Use. You may use the Original Work in all ways not otherwise -restricted or conditioned by this License or by law, and Licensor promises not -to interfere with or be responsible for such uses by You. - -This license is Copyright (C) 2003 Lawrence E. Rosen. All rights reserved. -Permission is hereby granted to copy and distribute this license without -modification. This license may not be modified without the express written -permission of its copyright owner. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/OSL-2.1.txt b/vendor/github.com/google/licenseclassifier/licenses/OSL-2.1.txt deleted file mode 100644 index 70fcfa7..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/OSL-2.1.txt +++ /dev/null @@ -1,167 +0,0 @@ -The Open Software Licensev. 2.1 - -This Open Software License (the "License") applies to any original work of -authorship (the "Original Work") whose owner (the "Licensor") has placed the -following notice immediately following the copyright notice for the Original -Work: - -Licensed under the Open Software License version 2.1 - -1) Grant of Copyright License. Licensor hereby grants You a world-wide, -royalty-free, non-exclusive, perpetual, sublicenseable license to do the -following: - -a) to reproduce the Original Work in copies; - -b) to prepare derivative works ("Derivative Works") based upon the Original -Work; - -c) to distribute copies of the Original Work and Derivative Works to the -public, with the proviso that copies of Original Work or Derivative Works that -You distribute shall be licensed under the Open Software License; - -d) to perform the Original Work publicly; and - -e) to display the Original Work publicly. - -2) Grant of Patent License. Licensor hereby grants You a world-wide, royalty- -free, non-exclusive, perpetual, sublicenseable license, under patent claims -owned or controlled by the Licensor that are embodied in the Original Work as -furnished by the Licensor, to make, use, sell and offer for sale the Original -Work and Derivative Works. - -3) Grant of Source Code License. The term "Source Code" means the preferred -form of the Original Work for making modifications to it and all available -documentation describing how to modify the Original Work. Licensor hereby -agrees to provide a machine-readable copy of the Source Code of the Original -Work along with each copy of the Original Work that Licensor distributes. -Licensor reserves the right to satisfy this obligation by placing a machine- -readable copy of the Source Code in an information repository reasonably -calculated to permit inexpensive and convenient access by You for as long as -Licensor continues to distribute the Original Work, and by publishing the -address of that information repository in a notice immediately following the -copyright notice that applies to the Original Work. - -4) Exclusions From License Grant. Neither the names of Licensor, nor the names -of any contributors to the Original Work, nor any of their trademarks or -service marks, may be used to endorse or promote products derived from this -Original Work without express prior written permission of the Licensor. -Nothing in this License shall be deemed to grant any rights to trademarks, -copyrights, patents, trade secrets or any other intellectual property of -Licensor except as expressly stated herein. No patent license is granted to -make, use, sell or offer to sell embodiments of any patent claims other than -the licensed claims defined in Section 2. No right is granted to the -trademarks of Licensor even if such marks are included in the Original Work. -Nothing in this License shall be interpreted to prohibit Licensor from -licensing under different terms from this License any Original Work that -Licensor otherwise would have a right to license. - -5) External Deployment. The term "External Deployment" means the use or -distribution of the Original Work or Derivative Works in any way such that the -Original Work or Derivative Works may be used by anyone other than You, -whether the Original Work or Derivative Works are distributed to those persons -or made available as an application intended for use over a computer network. -As an express condition for the grants of license hereunder, You agree that -any External Deployment by You of a Derivative Work shall be deemed a -distribution and shall be licensed to all under the terms of this License, as -prescribed in section 1(c) herein. - -6) Attribution Rights. You must retain, in the Source Code of any Derivative -Works that You create, all copyright, patent or trademark notices from the -Source Code of the Original Work, as well as any notices of licensing and any -descriptive text identified therein as an "Attribution Notice." You must cause -the Source Code for any Derivative Works that You create to carry a prominent -Attribution Notice reasonably calculated to inform recipients that You have -modified the Original Work. - -7) Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that -the copyright in and to the Original Work and the patent rights granted herein -by Licensor are owned by the Licensor or are sublicensed to You under the -terms of this License with the permission of the contributor(s) of those -copyrights and patent rights. Except as expressly stated in the immediately -proceeding sentence, the Original Work is provided under this License on an -"AS IS" BASIS and WITHOUT WARRANTY, either express or implied, including, -without limitation, the warranties of NON-INFRINGEMENT, MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY OF THE -ORIGINAL WORK IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an -essential part of this License. No license to Original Work is granted -hereunder except under this disclaimer. - -8) Limitation of Liability. Under no circumstances and under no legal theory, -whether in tort (including negligence), contract, or otherwise, shall the -Licensor be liable to any person for any direct, indirect, special, -incidental, or consequential damages of any character arising as a result of -this License or the use of the Original Work including, without limitation, -damages for loss of goodwill, work stoppage, computer failure or malfunction, -or any and all other commercial damages or losses. This limitation of -liability shall not apply to liability for death or personal injury resulting -from Licensor's negligence to the extent applicable law prohibits such -limitation. Some jurisdictions do not allow the exclusion or limitation of -incidental or consequential damages, so this exclusion and limitation may not -apply to You. - -9) Acceptance and Termination. If You distribute copies of the Original Work -or a Derivative Work, You must make a reasonable effort under the -circumstances to obtain the express assent of recipients to the terms of this -License. Nothing else but this License (or another written agreement between -Licensor and You) grants You permission to create Derivative Works based upon -the Original Work or to exercise any of the rights granted in Section 1 -herein, and any attempt to do so except under the terms of this License (or -another written agreement between Licensor and You) is expressly prohibited by -U.S. copyright law, the equivalent laws of other countries, and by -international treaty. Therefore, by exercising any of the rights granted to -You in Section 1 herein, You indicate Your acceptance of this License and all -of its terms and conditions. This License shall terminate immediately and you -may no longer exercise any of the rights granted to You by this License upon -Your failure to honor the proviso in Section 1(c) herein. - -10) Termination for Patent Action. This License shall terminate automatically -and You may no longer exercise any of the rights granted to You by this -License as of the date You commence an action, including a cross-claim or -counterclaim, against Licensor or any licensee alleging that the Original Work -infringes a patent. This termination provision shall not apply for an action -alleging patent infringement by combinations of the Original Work with other -software or hardware. - -11) Jurisdiction, Venue and Governing Law. Any action or suit relating to this -License may be brought only in the courts of a jurisdiction wherein the -Licensor resides or in which Licensor conducts its primary business, and under -the laws of that jurisdiction excluding its conflict-of-law provisions. The -application of the United Nations Convention on Contracts for the -International Sale of Goods is expressly excluded. Any use of the Original -Work outside the scope of this License or after its termination shall be -subject to the requirements and penalties of the U.S. Copyright Act, 17 U.S.C. -� 101 et seq., the equivalent laws of other countries, and international -treaty. This section shall survive the termination of this License. - -12) Attorneys Fees. In any action to enforce the terms of this License or -seeking damages relating thereto, the prevailing party shall be entitled to -recover its costs and expenses, including, without limitation, reasonable -attorneys' fees and costs incurred in connection with such action, -including any appeal of such action. This section shall survive the -termination of this License. - -13) Miscellaneous. This License represents the complete agreement concerning -the subject matter hereof. If any provision of this License is held to be -unenforceable, such provision shall be reformed only to the extent necessary -to make it enforceable. - -14) Definition of "You" in This License. "You" throughout this License, -whether in upper or lower case, means an individual or a legal entity -exercising rights under, and complying with all of the terms of, this License. -For legal entities, "You" includes any entity that controls, is controlled by, -or is under common control with you. For purposes of this definition, -"control" means (i) the power, direct or indirect, to cause the direction or -management of such entity, whether by contract or otherwise, or (ii) ownership -of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial -ownership of such entity. - -15) Right to Use. You may use the Original Work in all ways not otherwise -restricted or conditioned by this License or by law, and Licensor promises not -to interfere with or be responsible for such uses by You. - -This license is Copyright (C) 2003-2004 Lawrence E. Rosen. All rights -reserved. Permission is hereby granted to copy and distribute this license -without modification. This license may not be modified without the express -written permission of its copyright owner. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/OSL-3.0.header.txt b/vendor/github.com/google/licenseclassifier/licenses/OSL-3.0.header.txt deleted file mode 100644 index 6cd740c..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/OSL-3.0.header.txt +++ /dev/null @@ -1,5 +0,0 @@ -Copyright [yyyy] [name of copyright owner] - -This software is licensed under the Open Software License version -3.0. The full text of this license can be found in https://opensource.org/licenses/OSL-3.0 -or in the file LICENSE which is distributed along with the software. diff --git a/vendor/github.com/google/licenseclassifier/licenses/OSL-3.0.txt b/vendor/github.com/google/licenseclassifier/licenses/OSL-3.0.txt deleted file mode 100644 index 56625cd..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/OSL-3.0.txt +++ /dev/null @@ -1,173 +0,0 @@ -Open Software License v. 3.0 (OSL-3.0) - -This Open Software License (the "License") applies to any original work of -authorship (the "Original Work") whose owner (the "Licensor") has placed the -following licensing notice adjacent to the copyright notice for the Original -Work: - -Licensed under the Open Software License version 3.0 - -1) Grant of Copyright License. Licensor grants You a worldwide, royalty-free, -non-exclusive, sublicensable license, for the duration of the copyright, to do -the following: - -a) to reproduce the Original Work in copies, either alone or as part of a -collective work; - -b) to translate, adapt, alter, transform, modify, or arrange the Original -Work, thereby creating derivative works ("Derivative Works") based upon the -Original Work; - -c) to distribute or communicate copies of the Original Work and Derivative -Works to the public, with the proviso that copies of Original Work or -Derivative Works that You distribute or communicate shall be licensed under -this Open Software License; - -d) to perform the Original Work publicly; and - -e) to display the Original Work publicly. - -2) Grant of Patent License. Licensor grants You a worldwide, royalty-free, -non-exclusive, sublicensable license, under patent claims owned or controlled -by the Licensor that are embodied in the Original Work as furnished by the -Licensor, for the duration of the patents, to make, use, sell, offer for sale, -have made, and import the Original Work and Derivative Works. - -3) Grant of Source Code License. The term "Source Code" means the preferred -form of the Original Work for making modifications to it and all available -documentation describing how to modify the Original Work. Licensor agrees to -provide a machine-readable copy of the Source Code of the Original Work along -with each copy of the Original Work that Licensor distributes. Licensor -reserves the right to satisfy this obligation by placing a machine-readable -copy of the Source Code in an information repository reasonably calculated to -permit inexpensive and convenient access by You for as long as Licensor -continues to distribute the Original Work. - -4) Exclusions From License Grant. Neither the names of Licensor, nor the names -of any contributors to the Original Work, nor any of their trademarks or -service marks, may be used to endorse or promote products derived from this -Original Work without express prior permission of the Licensor. Except as -expressly stated herein, nothing in this License grants any license to -Licensor’s trademarks, copyrights, patents, trade secrets or any other -intellectual property. No patent license is granted to make, use, sell, offer -for sale, have made, or import embodiments of any patent claims other than the -licensed claims defined in Section 2. No license is granted to the trademarks -of Licensor even if such marks are included in the Original Work. Nothing in -this License shall be interpreted to prohibit Licensor from licensing under -terms different from this License any Original Work that Licensor otherwise -would have a right to license. - -5) External Deployment. The term "External Deployment" means the use, -distribution, or communication of the Original Work or Derivative Works in any -way such that the Original Work or Derivative Works may be used by anyone -other than You, whether those works are distributed or communicated to those -persons or made available as an application intended for use over a network. -As an express condition for the grants of license hereunder, You must treat -any External Deployment by You of the Original Work or a Derivative Work as a -distribution under section 1(c). - -6) Attribution Rights. You must retain, in the Source Code of any Derivative -Works that You create, all copyright, patent, or trademark notices from the -Source Code of the Original Work, as well as any notices of licensing and any -descriptive text identified therein as an "Attribution Notice." You must cause -the Source Code for any Derivative Works that You create to carry a prominent -Attribution Notice reasonably calculated to inform recipients that You have -modified the Original Work. - -7) Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that -the copyright in and to the Original Work and the patent rights granted herein -by Licensor are owned by the Licensor or are sublicensed to You under the -terms of this License with the permission of the contributor(s) of those -copyrights and patent rights. Except as expressly stated in the immediately -preceding sentence, the Original Work is provided under this License on an "AS -IS" BASIS and WITHOUT WARRANTY, either express or implied, including, without -limitation, the warranties of non-infringement, merchantability or fitness for -a particular purpose. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK -IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an essential part of this -License. No license to the Original Work is granted by this License except -under this disclaimer. - -8) Limitation of Liability. Under no circumstances and under no legal theory, -whether in tort (including negligence), contract, or otherwise, shall the -Licensor be liable to anyone for any indirect, special, incidental, or -consequential damages of any character arising as a result of this License or -the use of the Original Work including, without limitation, damages for loss -of goodwill, work stoppage, computer failure or malfunction, or any and all -other commercial damages or losses. This limitation of liability shall not -apply to the extent applicable law prohibits such limitation. - -9) Acceptance and Termination. If, at any time, You expressly assented to this -License, that assent indicates your clear and irrevocable acceptance of this -License and all of its terms and conditions. If You distribute or communicate -copies of the Original Work or a Derivative Work, You must make a reasonable -effort under the circumstances to obtain the express assent of recipients to -the terms of this License. This License conditions your rights to undertake -the activities listed in Section 1, including your right to create Derivative -Works based upon the Original Work, and doing so without honoring these terms -and conditions is prohibited by copyright law and international treaty. -Nothing in this License is intended to affect copyright exceptions and -limitations (including “fair use” or “fair dealing”). This License shall -terminate immediately and You may no longer exercise any of the rights granted -to You by this License upon your failure to honor the conditions in Section -1(c). - -10) Termination for Patent Action. This License shall terminate automatically -and You may no longer exercise any of the rights granted to You by this -License as of the date You commence an action, including a cross-claim or -counterclaim, against Licensor or any licensee alleging that the Original Work -infringes a patent. This termination provision shall not apply for an action -alleging patent infringement by combinations of the Original Work with other -software or hardware. - -11) Jurisdiction, Venue and Governing Law. Any action or suit relating to this -License may be brought only in the courts of a jurisdiction wherein the -Licensor resides or in which Licensor conducts its primary business, and under -the laws of that jurisdiction excluding its conflict-of-law provisions. The -application of the United Nations Convention on Contracts for the -International Sale of Goods is expressly excluded. Any use of the Original -Work outside the scope of this License or after its termination shall be -subject to the requirements and penalties of copyright or patent law in the -appropriate jurisdiction. This section shall survive the termination of this -License. - -12) Attorneys' Fees. In any action to enforce the terms of this License -or seeking damages relating thereto, the prevailing party shall be entitled to -recover its costs and expenses, including, without limitation, reasonable -attorneys' fees and costs incurred in connection with such action, -including any appeal of such action. This section shall survive the -termination of this License. - -13) Miscellaneous. If any provision of this License is held to be -unenforceable, such provision shall be reformed only to the extent necessary -to make it enforceable. - -14) Definition of "You" in This License. "You" throughout this License, -whether in upper or lower case, means an individual or a legal entity -exercising rights under, and complying with all of the terms of, this License. -For legal entities, "You" includes any entity that controls, is controlled by, -or is under common control with you. For purposes of this definition, -"control" means (i) the power, direct or indirect, to cause the direction or -management of such entity, whether by contract or otherwise, or (ii) ownership -of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial -ownership of such entity. - -15) Right to Use. You may use the Original Work in all ways not otherwise -restricted or conditioned by this License or by law, and Licensor promises not -to interfere with or be responsible for such uses by You. - -16) Modification of This License. This License is Copyright (c) 2005 Lawrence -Rosen. Permission is granted to copy, distribute, or communicate this License -without modification. Nothing in this License permits You to modify this -License as applied to the Original Work or to Derivative Works. However, You -may modify the text of this License and copy, distribute or communicate your -modified version (the "Modified License") and apply it to other original works -of authorship subject to the following conditions: (i) You may not indicate in -any way that your Modified License is the "Open Software License" or "OSL" and -you may not use those names in the name of your Modified License; (ii) You -must replace the notice specified in the first paragraph above with the notice -"Licensed under " or with a notice of your own -that is not confusingly similar to the notice in this License; and (iii) You -may not claim that your original works are open source software unless your -Modified License has been approved by Open Source Initiative (OSI) and You -comply with its license review and certification process. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/OpenSSL.txt b/vendor/github.com/google/licenseclassifier/licenses/OpenSSL.txt deleted file mode 100644 index 66f9c16..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/OpenSSL.txt +++ /dev/null @@ -1,89 +0,0 @@ -OpenSSL License - -Copyright (c) 1998-2008 The OpenSSL Project. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - -2. 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. - -3. All advertising materials mentioning features or use of this software must display the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.openssl.org/)" - -4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact openssl-core@openssl.org. - -5. Products derived from this software may not be called "OpenSSL" nor may "OpenSSL" appear in their names without prior written permission of the OpenSSL Project. - -6. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/)" - -THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY -EXPRESSED 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 OpenSSL PROJECT OR ITS 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. - -This product includes cryptographic software written by Eric Young -(eay@cryptsoft.com). This product includes software written by Tim Hudson -(tjh@cryptsoft.com). - - -Original SSLeay License - -Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) All rights reserved. - -This package is an SSL implementation written by Eric Young -(eay@cryptsoft.com). The implementation was written so as to conform with -Netscapes SSL. - -This library is free for commercial and non-commercial use as long as the -following conditions are aheared to. The following conditions apply to all -code found in this distribution, be it the RC4, RSA, lhash, DES, etc., code; -not just the SSL code. The SSL documentation included with this distribution -is covered by the same copyright terms except that the holder is Tim Hudson -(tjh@cryptsoft.com). - -Copyright remains Eric Young's, and as such any Copyright notices in the -code are not to be removed. If this package is used in a product, Eric Young -should be given attribution as the author of the parts of the library used. -This can be in the form of a textual message at program startup or in -documentation (online or textual) provided with the package. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the copyright notice, this list of conditions and the following disclaimer. - -2. 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. - -3. All advertising materials mentioning features or use of this software must display the following acknowledgement: -"This product includes cryptographic software written by Eric Young -(eay@cryptsoft.com)" - -The word 'cryptographic' can be left out if the rouines from the -library being used are not cryptographic related :-). - -4. If you include any Windows specific code (or a derivative thereof) from the apps directory (application code) you must include an acknowledgement: "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - -THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``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 AUTHOR 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. - -The licence and distribution terms for any publically available version or -derivative of this code cannot be changed. i.e. this code cannot simply be -copied and put under another distribution licence [including the GNU Public -Licence.] - diff --git a/vendor/github.com/google/licenseclassifier/licenses/OpenVision.txt b/vendor/github.com/google/licenseclassifier/licenses/OpenVision.txt deleted file mode 100644 index 9835053..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/OpenVision.txt +++ /dev/null @@ -1,33 +0,0 @@ -Copyright, OpenVision Technologies, Inc., 1993-1996, All Rights -Reserved - -WARNING: Retrieving the OpenVision Kerberos Administration system -source code, as described below, indicates your acceptance of the -following terms. If you do not agree to the following terms, do -not retrieve the OpenVision Kerberos administration system. - -You may freely use and distribute the Source Code and Object Code -compiled from it, with or without modification, but this Source -Code is provided to you "AS IS" EXCLUSIVE OF ANY WARRANTY, -INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY OR -FITNESS FOR A PARTICULAR PURPOSE, OR ANY OTHER WARRANTY, WHETHER -EXPRESS OR IMPLIED. IN NO EVENT WILL OPENVISION HAVE ANY LIABILITY -FOR ANY LOST PROFITS, LOSS OF DATA OR COSTS OF PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES, OR FOR ANY SPECIAL, INDIRECT, OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, INCLUDING, -WITHOUT LIMITATION, THOSE RESULTING FROM THE USE OF THE SOURCE -CODE, OR THE FAILURE OF THE SOURCE CODE TO PERFORM, OR FOR ANY -OTHER REASON. - -OpenVision retains all copyrights in the donated Source Code. -OpenVision also retains copyright to derivative works of the Source -Code, whether created by OpenVision or by a third party. The -OpenVision copyright notice must be preserved if derivative works -are made based on the donated Source Code. - -OpenVision Technologies, Inc. has donated this Kerberos -Administration system to MIT for inclusion in the standard Kerberos -5 distribution. This donation underscores our commitment to -continuing Kerberos technology development and our gratitude for -the valuable work which has been performed by MIT and the Kerberos -community. diff --git a/vendor/github.com/google/licenseclassifier/licenses/PHP-3.0.txt b/vendor/github.com/google/licenseclassifier/licenses/PHP-3.0.txt deleted file mode 100644 index d734a3f..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/PHP-3.0.txt +++ /dev/null @@ -1,43 +0,0 @@ -The PHP License, version 3.0 - -Copyright (c) 1999 - 2006 The PHP Group. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, is permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - -2. 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. - -3. The name "PHP" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact group@php.net. - -4. Products derived from this software may not be called "PHP", nor may "PHP" appear in their name, without prior written permission from group@php.net. You may indicate that your software works in conjunction with PHP by saying "Foo for PHP" instead of calling it "PHP Foo" or "phpfoo" - -5. The PHP Group may publish revised and/or new versions of the license from time to time. Each version will be given a distinguishing version number. Once covered code has been published under a particular version of the license, you may always continue to use it under the terms of that version. You may also choose to use such covered code under the terms of any subsequent version of the license published by the PHP Group. No one other than the PHP Group has the right to modify the terms applicable to covered code created under this License. - -6. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes PHP, freely available from ". - -THIS SOFTWARE IS PROVIDED BY THE PHP DEVELOPMENT TEAM ``AS IS'' AND -ANY EXPRESSED 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 PHP DEVELOPMENT TEAM OR ITS 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. - - -This software consists of voluntary contributions made by many individuals on -behalf of the PHP Group. - -The PHP Group can be contacted via Email at group@php.net. - -For more information on the PHP Group and the PHP project, please see -. - -This product includes the Zend Engine, freely available at -. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/PHP-3.01.txt b/vendor/github.com/google/licenseclassifier/licenses/PHP-3.01.txt deleted file mode 100644 index 52299aa..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/PHP-3.01.txt +++ /dev/null @@ -1,41 +0,0 @@ -The PHP License, version 3.01 - -Copyright (c) 1999 - 2012 The PHP Group. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, is permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - -2. 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. - -3. The name "PHP" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact group@php.net. - -4. Products derived from this software may not be called "PHP", nor may "PHP" appear in their name, without prior written permission from group@php.net. You may indicate that your software works in conjunction with PHP by saying "Foo for PHP" instead of calling it "PHP Foo" or "phpfoo" - -5. The PHP Group may publish revised and/or new versions of the license from time to time. Each version will be given a distinguishing version number. Once covered code has been published under a particular version of the license, you may always continue to use it under the terms of that version. You may also choose to use such covered code under the terms of any subsequent version of the license published by the PHP Group. No one other than the PHP Group has the right to modify the terms applicable to covered code created under this License. - -6. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes PHP software, freely available from ". - -THIS SOFTWARE IS PROVIDED BY THE PHP DEVELOPMENT TEAM ``AS IS'' AND -ANY EXPRESSED 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 PHP DEVELOPMENT TEAM OR ITS 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. - -This software consists of voluntary contributions made by many individuals on -behalf of the PHP Group. - -The PHP Group can be contacted via Email at group@php.net. - -For more information on the PHP Group and the PHP project, please see -. - -PHP includes the Zend Engine, freely available at . - diff --git a/vendor/github.com/google/licenseclassifier/licenses/PIL.txt b/vendor/github.com/google/licenseclassifier/licenses/PIL.txt deleted file mode 100644 index 284366f..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/PIL.txt +++ /dev/null @@ -1,24 +0,0 @@ -The Python Imaging Library (PIL) is - - Copyright © 1997-2011 by Secret Labs AB - Copyright © 1995-2011 by Fredrik Lundh - -By obtaining, using, and/or copying this software and/or its associated -documentation, you agree that you have read, understood, and will comply with -the following terms and conditions: - -Permission to use, copy, modify, and distribute this software and its associated -documentation for any purpose and without fee is hereby granted, provided that -the above copyright notice appears in all copies, and that both that copyright -notice and this permission notice appear in supporting documentation, and that -the name of Secret Labs AB or the author not be used in advertising or publicity -pertaining to distribution of the software without specific, written prior -permission. - -SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS -SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO -EVENT SHALL SECRET LABS AB OR THE AUTHOR BE LIABLE FOR ANY SPECIAL, INDIRECT OR -CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA -OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS -ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -SOFTWARE. diff --git a/vendor/github.com/google/licenseclassifier/licenses/PostgreSQL.txt b/vendor/github.com/google/licenseclassifier/licenses/PostgreSQL.txt deleted file mode 100644 index 20d0475..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/PostgreSQL.txt +++ /dev/null @@ -1,14 +0,0 @@ -PostgreSQL is released under the PostgreSQL License, a liberal Open Source license, similar to the BSD or MIT licenses. - -PostgreSQL Database Management System -(formerly known as Postgres, then as Postgres95) - -Portions Copyright © 1996-2019, The PostgreSQL Global Development Group - -Portions Copyright © 1994, The Regents of the University of California - -Permission to use, copy, modify, and distribute this software and its documentation for any purpose, without fee, and without a written agreement is hereby granted, provided that the above copyright notice and this paragraph and the following two paragraphs appear in all copies. - -IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. diff --git a/vendor/github.com/google/licenseclassifier/licenses/Python-2.0-complete.txt b/vendor/github.com/google/licenseclassifier/licenses/Python-2.0-complete.txt deleted file mode 100644 index f27ea0c..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/Python-2.0-complete.txt +++ /dev/null @@ -1,94 +0,0 @@ -PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2 - -1. This LICENSE AGREEMENT is between the Python Software Foundation ("PSF"), and the Individual or Organization ("Licensee") accessing and otherwise using this software ("Python") in source or binary form and its associated documentation. - -2. Subject to the terms and conditions of this License Agreement, PSF hereby grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use Python alone or in any derivative version, provided, however, that PSF's License Agreement and PSF's notice of copyright, i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006 Python Software Foundation; All Rights Reserved" are retained in Python alone or in any derivative version prepared by Licensee. - -3. In the event Licensee prepares a derivative work that is based on or incorporates Python or any part thereof, and wants to make the derivative work available to others as provided herein, then Licensee hereby agrees to include in any such work a brief summary of the changes made to Python. - -4. PSF is making Python available to Licensee on an "AS IS" basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT INFRINGE ANY THIRD PARTY RIGHTS. - -5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. - -6. This License Agreement will automatically terminate upon a material breach of its terms and conditions. - -7. Nothing in this License Agreement shall be deemed to create any relationship of agency, partnership, or joint venture between PSF and Licensee. This License Agreement does not grant permission to use PSF trademarks or trade name in a trademark sense to endorse or promote products or services of Licensee, or any third party. - -8. By copying, installing or otherwise using Python, Licensee agrees to be bound by the terms and conditions of this License Agreement. - - -BEOPEN.COM LICENSE AGREEMENT FOR PYTHON 2.0 - -BEOPEN PYTHON OPEN SOURCE LICENSE AGREEMENT VERSION 1 - -1. This LICENSE AGREEMENT is between BeOpen.com ("BeOpen"), having an office at 160 Saratoga Avenue, Santa Clara, CA 95051, and the Individual or Organization ("Licensee") accessing and otherwise using this software in source or binary form and its associated documentation ("the Software"). - -2. Subject to the terms and conditions of this BeOpen Python License Agreement, BeOpen hereby grants Licensee a non-exclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use the Software alone or in any derivative version, provided, however, that the BeOpen Python License is retained in the Software, alone or in any derivative version prepared by Licensee. - -3. BeOpen is making the Software available to Licensee on an "AS IS" basis. BEOPEN MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, BEOPEN MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE WILL NOT INFRINGE ANY THIRD PARTY RIGHTS. - -4. BEOPEN SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE SOFTWARE FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THE SOFTWARE, OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. - -5. This License Agreement will automatically terminate upon a material breach of its terms and conditions. - -6. This License Agreement shall be governed by and interpreted in all respects by the law of the State of California, excluding conflict of law provisions. Nothing in this License Agreement shall be deemed to create any relationship of agency, partnership, or joint venture between BeOpen and Licensee. This License Agreement does not grant permission to use BeOpen trademarks or trade names in a trademark sense to endorse or promote products or services of Licensee, or any third party. As an exception, the "BeOpen Python" logos available at http://www.pythonlabs.com/logos.html may be used according to the permissions granted on that web page. - -7. By copying, installing or otherwise using the software, Licensee agrees to be bound by the terms and conditions of this License Agreement. - - -CNRI OPEN SOURCE LICENSE AGREEMENT (for Python 1.6b1) - -IMPORTANT: PLEASE READ THE FOLLOWING AGREEMENT CAREFULLY. - -BY CLICKING ON "ACCEPT" WHERE INDICATED BELOW, OR BY COPYING, INSTALLING OR -OTHERWISE USING PYTHON 1.6, beta 1 SOFTWARE, YOU ARE DEEMED TO HAVE AGREED TO -THE TERMS AND CONDITIONS OF THIS LICENSE AGREEMENT. - -1. This LICENSE AGREEMENT is between the Corporation for National Research Initiatives, having an office at 1895 Preston White Drive, Reston, VA 20191 ("CNRI"), and the Individual or Organization ("Licensee") accessing and otherwise using Python 1.6, beta 1 software in source or binary form and its associated documentation, as released at the www.python.org Internet site on August 4, 2000 ("Python 1.6b1"). - -2. Subject to the terms and conditions of this License Agreement, CNRI hereby grants Licensee a non-exclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use Python 1.6b1 alone or in any derivative version, provided, however, that CNRIs License Agreement is retained in Python 1.6b1, alone or in any derivative version prepared by Licensee. - -Alternately, in lieu of CNRIs License Agreement, Licensee may substitute the -following text (omitting the quotes): "Python 1.6, beta 1, is made available -subject to the terms and conditions in CNRIs License Agreement. This Agreement -may be located on the Internet using the following unique, persistent -identifier (known as a handle): 1895.22/1011. This Agreement may also be -obtained from a proxy server on the Internet using the -URL:http://hdl.handle.net/1895.22/1011". - -3. In the event Licensee prepares a derivative work that is based on or incorporates Python 1.6b1 or any part thereof, and wants to make the derivative work available to the public as provided herein, then Licensee hereby agrees to indicate in any such work the nature of the modifications made to Python 1.6b1. - -4. CNRI is making Python 1.6b1 available to Licensee on an "AS IS" basis. CNRI MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, CNRI MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 1.6b1 WILL NOT INFRINGE ANY THIRD PARTY RIGHTS. - -5. CNRI SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE SOFTWARE FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF USING, MODIFYING OR DISTRIBUTING PYTHON 1.6b1, OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. - -6. This License Agreement will automatically terminate upon a material breach of its terms and conditions. - -7. This License Agreement shall be governed by and interpreted in all respects by the law of the State of Virginia, excluding conflict of law provisions. Nothing in this License Agreement shall be deemed to create any relationship of agency, partnership, or joint venture between CNRI and Licensee. This License Agreement does not grant permission to use CNRI trademarks or trade name in a trademark sense to endorse or promote products or services of Licensee, or any third party. - -8. By clicking on the "ACCEPT" button where indicated, or by copying, installing or otherwise using Python 1.6b1, Licensee agrees to be bound by the terms and conditions of this License Agreement. - -ACCEPT - - -CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2 - -Copyright (c) 1991 - 1995, Stichting Mathematisch Centrum Amsterdam, The -Netherlands. All rights reserved. - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, provided that -the above copyright notice appear in all copies and that both that copyright -notice and this permission notice appear in supporting documentation, and that -the name of Stichting Mathematisch Centrum or CWI not be used in advertising -or publicity pertaining to distribution of the software without specific, -written prior permission. - -STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS -SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN -NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE FOR ANY SPECIAL, -INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/Python-2.0.txt b/vendor/github.com/google/licenseclassifier/licenses/Python-2.0.txt deleted file mode 100644 index 68dbb49..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/Python-2.0.txt +++ /dev/null @@ -1,17 +0,0 @@ -PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2 - -1. This LICENSE AGREEMENT is between the Python Software Foundation ("PSF"), and the Individual or Organization ("Licensee") accessing and otherwise using this software ("Python") in source or binary form and its associated documentation. - -2. Subject to the terms and conditions of this License Agreement, PSF hereby grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use Python alone or in any derivative version, provided, however, that PSF's License Agreement and PSF's notice of copyright, i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006 Python Software Foundation; All Rights Reserved" are retained in Python alone or in any derivative version prepared by Licensee. - -3. In the event Licensee prepares a derivative work that is based on or incorporates Python or any part thereof, and wants to make the derivative work available to others as provided herein, then Licensee hereby agrees to include in any such work a brief summary of the changes made to Python. - -4. PSF is making Python available to Licensee on an "AS IS" basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT INFRINGE ANY THIRD PARTY RIGHTS. - -5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. - -6. This License Agreement will automatically terminate upon a material breach of its terms and conditions. - -7. Nothing in this License Agreement shall be deemed to create any relationship of agency, partnership, or joint venture between PSF and Licensee. This License Agreement does not grant permission to use PSF trademarks or trade name in a trademark sense to endorse or promote products or services of Licensee, or any third party. - -8. By copying, installing or otherwise using Python, Licensee agrees to be bound by the terms and conditions of this License Agreement. diff --git a/vendor/github.com/google/licenseclassifier/licenses/QPL-1.0.txt b/vendor/github.com/google/licenseclassifier/licenses/QPL-1.0.txt deleted file mode 100644 index b5b539a..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/QPL-1.0.txt +++ /dev/null @@ -1,83 +0,0 @@ -THE Q PUBLIC LICENSE version 1.0 - -Copyright (C) 1999-2005 Trolltech AS, Norway. - -Everyone is permitted to copy and distribute this license document. - -The intent of this license is to establish freedom to share and change the -software regulated by this license under the open source model. - -This license applies to any software containing a notice placed by the -copyright holder saying that it may be distributed under the terms of the Q -Public License version 1.0. Such software is herein referred to as the -Software. This license covers modification and distribution of the Software, -use of third-party application programs based on the Software, and development -of free software which uses the Software. - -Granted Rights - -1. You are granted the non-exclusive rights set forth in this license provided you agree to and comply with any and all conditions in this license. Whole or partial distribution of the Software, or software items that link with the Software, in any form signifies acceptance of this license. - -2. You may copy and distribute the Software in unmodified form provided that the entire package, including - but not restricted to - copyright, trademark notices and disclaimers, as released by the initial developer of the Software, is distributed. - -3. You may make modifications to the Software and distribute your modifications, in a form that is separate from the Software, such as patches. The following restrictions apply to modifications: - -a. Modifications must not alter or remove any copyright notices in the -Software. - -b. When modifications to the Software are released under this license, a non- -exclusive royalty-free right is granted to the initial developer of the -Software to distribute your modification in future versions of the Software -provided such versions remain available under these terms in addition to any -other license(s) of the initial developer. - -4. You may distribute machine-executable forms of the Software or machine-executable forms of modified versions of the Software, provided that you meet these restrictions: - -a. You must include this license document in the distribution. - -b. You must ensure that all recipients of the machine-executable forms are -also able to receive the complete machine-readable source code to the -distributed Software, including all modifications, without any charge beyond -the costs of data transfer, and place prominent notices in the distribution -explaining this. - -c. You must ensure that all modifications included in the machine-executable -forms are available under the terms of this license. - -5. You may use the original or modified versions of the Software to compile, link and run application programs legally developed by you or by others. - -6. You may develop application programs, reusable components and other software items that link with the original or modified versions of the Software. These items, when distributed, are subject to the following requirements: - -a. You must ensure that all recipients of machine-executable forms of these -items are also able to receive and use the complete machine-readable source -code to the items without any charge beyond the costs of data transfer. - -b. You must explicitly license all recipients of your items to use and re- -distribute original and modified versions of the items in both machine- -executable and source code forms. The recipients must be able to do so without -any charges whatsoever, and they must be able to re-distribute to anyone they -choose. - -c. If the items are not available to the general public, and the initial -developer of the Software requests a copy of the items, then you must supply -one. - -Limitations of Liability - -In no event shall the initial developers or copyright holders be liable for -any damages whatsoever, including - but not restricted to - lost revenue or -profits or other direct, indirect, special, incidental or consequential -damages, even if they have been advised of the possibility of such damages, -except to the extent invariable law, if any, provides otherwise. - -No Warranty - -The Software and this license document are provided AS IS with NO WARRANTY OF -ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A -PARTICULAR PURPOSE. - -Choice of Law - -This license is governed by the Laws of Norway. Disputes shall be settled by -Oslo City Court. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/README.md b/vendor/github.com/google/licenseclassifier/licenses/README.md deleted file mode 100644 index 9b662a1..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/README.md +++ /dev/null @@ -1,28 +0,0 @@ -# Open Source Licenses - -## Overview - -The licenses in this directory are taken from [SPDX](https://spdx.org/licenses). - -## Naming Convention - -The name of the file is the same as the identifier on the SPDX website with an -extension of `.txt`. For instance, the "Academic Free License v1.1" license -would be in a file called `AFL-1.1.txt`. - -### Special variants - -Some licenses have special variants. E.g, the Apache-2.0 license has optional -sections in it. And some licenses, like GPL-3.0, have a short "header" variant -that's included in source files. The full text of the license and each of its -special variants will be mapped to the same license. (Though the "header" form -shouldn't be used in `LICENSE` files.) - -#### Header Variants - -The name of a license header variant is `.header.txt`. So the -GPL-3.0 header variant would be named: `GPL-3.0.header.txt`. - -#### Optional Text Variants - -TBD diff --git a/vendor/github.com/google/licenseclassifier/licenses/Ruby.txt b/vendor/github.com/google/licenseclassifier/licenses/Ruby.txt deleted file mode 100644 index 4d1f379..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/Ruby.txt +++ /dev/null @@ -1,38 +0,0 @@ -1. You may make and give away verbatim copies of the source form of the software without restriction, provided that you duplicate all of the original copyright notices and associated disclaimers. - -2. You may modify your copy of the software in any way, provided that you do at least ONE of the following: - -a) place your modifications in the Public Domain or otherwise make them Freely -Available, such as by posting said modifications to Usenet or an equivalent -medium, or by allowing the author to include your modifications in the -software. - -b) use the modified software only within your corporation or organization. - -c) give non-standard binaries non-standard names, with instructions on where -to get the original software distribution. - -d) make other distribution arrangements with the author. - -3. You may distribute the software in object code or binary form, provided that you do at least ONE of the following: - -a) distribute the binaries and library files of the software, together with -instructions (in the manual page or equivalent) on where to get the original -distribution. - -b) accompany the distribution with the machine-readable source of the -software. - -c) give non-standard binaries non-standard names, with instructions on where -to get the original software distribution. - -d) make other distribution arrangements with the author. - -4. You may modify and include the part of the software into any other software (possibly commercial). But some files in the distribution are not written by the author, so that they are not under these terms. - -For the list of those files and their copying conditions, see the file LEGAL. - -5. The scripts and library files supplied as input to or produced as output from the software do not automatically fall under the copyright of the software, but belong to whomever generated them, and may be sold commercially, and may be aggregated with this software. - -6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/SGI-B-1.0.header.txt b/vendor/github.com/google/licenseclassifier/licenses/SGI-B-1.0.header.txt deleted file mode 100644 index e8330a2..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/SGI-B-1.0.header.txt +++ /dev/null @@ -1,20 +0,0 @@ -License Applicability. Except to the extent portions of this file are made -subject to an alternative license as permitted in the SGI Free Software License -B, Version 1.0 (the "License"), the contents of this file are subject only to -the provisions of the License. You may not use this file except in compliance -with the License. You may obtain a copy of the License at Silicon Graphics, -Inc., attn: Legal Services, 1600 Ampitheatre Parkway, Mountain View, CA -94043-1351, or at: -http://oss.sgi.com/projects/FreeB - -Note that, as provided in the License, the Software is distributed on an "AS IS" -basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS DISCLAIMED, -INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND CONDITIONS OF -MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, AND -NON-INFRINGEMENT. - -Original Code. The Original Code is: [name of software, version number, and -release date], developed by Silicon Graphics, Inc. The Original Code is -Copyright (c) [dates of first publication, as appearing in the Notice in the -Original Code] Silicon Graphics, Inc. Copyright in any portions created by third -parties is as indicated elsewhere herein. All Rights Reserved. diff --git a/vendor/github.com/google/licenseclassifier/licenses/SGI-B-1.0.txt b/vendor/github.com/google/licenseclassifier/licenses/SGI-B-1.0.txt deleted file mode 100644 index 9962e08..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/SGI-B-1.0.txt +++ /dev/null @@ -1,234 +0,0 @@ -SGI FREE SOFTWARE LICENSE B -(Version 1.0 1/25/2000) -1. Definitions. - -1.1 "Additional Notice Provisions" means such additional provisions as appear in -the Notice in Original Code under the heading "Additional Notice Provisions." - -1.2 "API" means an application programming interface established by SGI in -conjunction with the Original Code. - -1.3 "Covered Code" means the Original Code or Modifications or the combination -of the Original Code and Modifications, in each case including portions thereof. - -1.4 "Hardware" means any physical device that accepts input, processes input, -stores the results of processing, and/or provides output. - -1.5 "Larger Work" means a work which combines Covered Code or portions thereof -with code not governed by the terms of this License. - -1.6 "Licensable" means having the right to grant, to the maximum extent -possible, whether at the time of the initial grant or subsequently acquired, any -and all of the rights conveyed herein. - -1.7 "License" means this document. - -1.8 "Modifications" means any addition to the substance or structure of the -Original Code and/or any addition to or deletion from previous Modifications. -When Covered Code is released as a series of files, a Modification is: - -A. Any addition to the contents of a file containing Original Code and/or any -addition to or deletion from previous Modifications. - -B. Any new file that contains any part of the Original Code or previous -Modifications. - -1.9 "Notice" means any notice in Original Code or Covered Code, as required by -and in compliance with this License. - -1.10 "Original Code" means source code of computer software code which is -described in the source code Notice required by Exhibit A as Original Code, and -updates and error corrections specifically thereto. - -1.11 "Recipient" means an individual or a legal entity exercising rights under, -and complying with all of the terms of, this License or a future version of this -License issued under Section 8. For legal entities, "Recipient" includes any -entity which controls, is controlled by, or is under common control with -Recipient. For purposes of this definition, "control" of an entity means (a) the -power, direct or indirect, to direct or manage such entity, or (b) ownership of -fifty percent (50%) or more of the outstanding shares or beneficial ownership of -such entity. - -1.12 SGI" means Silicon Graphics, Inc. - -2. License Grant and Restrictions. - -2.1v License Grant. Subject to the provisions of this License and any third -party intellectual property claims, for the duration of intellectual property -protections inherent in the Original Code, SGI hereby grants Recipient a -worldwide, royalty-free, non-exclusive license, to do the following: (i) under -copyrights Licensable by SGI, to reproduce, distribute, create derivative works -from, and, to the extent applicable, display and perform the Original Code alone -and/or as part of a Larger Work; and (ii) under any patent claims Licensable by -SGI and embodied in the Original Code, to make, have made, use, practice, sell, -and offer for sale, and/or otherwise dispose of the Original Code. Recipient -accepts the terms and conditions of this License by undertaking any of the -aforementioned actions. - -2.2 Restriction on Patent License. Notwithstanding the provisions of Section -2.1(ii), no patent license is granted: 1) separate from the Original Code; nor -2) for infringements caused by (i) modification of the Original Code, or (ii) -the combination of the Original Code with other software or Hardware. - -2.3 No License For Hardware Implementations. The licenses granted in Section 2.1 -are not applicable to implementation in Hardware of the algorithms embodied in -the Original Code. - -2.4 Modifications License and API Compliance. Modifications are only licensed -under Section 2.1(i) to the extent such Modifications are fully compliant with -any API as may be identified in Additional Notice Provisions as appear in the -Original Code. - -3. Redistributions. - -A. Retention of Notice/Copy of License. The Notice set forth in Exhibit A, -below, must be conspicuously retained or included in any and all redistributions -of Covered Code. For distributions of the Covered Code in source code form, the -Notice must appear in every file that can include a text comments field; in -executable form, the Notice and a copy of this License must appear in related -documentation or collateral where the Recipient’s rights relating to Covered -Code are described. Any Additional Notice Provisions which actually appears in -the Original Code must also be retained or included in any and all -redistributions of Covered Code. - -B. Alternative License. Provided that Recipient is in compliance with the terms -of this License, Recipient may distribute the source code and/or executable -version(s) of Covered Code under (1) this License; (2) a license identical to -this License but for only such changes as are necessary in order to clarify -Recipient’s role as licensor of Modifications, without derogation of any of -SGI’s rights; and/or (3) a license of Recipient’s choosing, containing terms -different from this License, provided that the license terms include this -Section 3 and Sections 4, 6, 7, 10, 12, and 13, which terms may not be modified -or superseded by any other terms of such license. If Recipient elects to use any -license other than this License, Recipient must make it absolutely clear that -any of its terms which differ from this License are offered by Recipient alone, -and not by SGI. - -C. Indemnity. Recipient hereby agrees to indemnify SGI for any liability -incurred by SGI as a result of any such alternative license terms Recipient -offers. - -4. Termination. This License and the rights granted hereunder will terminate -automatically if Recipient breaches any term herein and fails to cure such -breach within 30 days thereof. Any sublicense to the Covered Code that is -properly granted shall survive any termination of this License, absent -termination by the terms of such sublicense. Provisions that, by their nature, -must remain in effect beyond the termination of this License, shall survive. - -5. No Trademark Or Other Rights. This License does not grant any rights to: (i) -any software apart from the Covered Code, nor shall any other rights or licenses -not expressly granted hereunder arise by implication, estoppel or otherwise with -respect to the Covered Code; (ii) any trade name, trademark or service mark -whatsoever, including without limitation any related right for purposes of -endorsement or promotion of products derived from the Covered Code, without -prior written permission of SGI; or (iii) any title to or ownership of the -Original Code, which shall at all times remains with SGI. All rights in the -Original Code not expressly granted under this License are reserved. - -6. Compliance with Laws; Non-Infringement. Recipient hereby assures that it -shall comply with all applicable laws, regulations, and executive orders, in -connection with any and all dispositions of Covered Code, including but not -limited to, all export, re-export, and import control laws, regulations, and -executive orders, of the U.S. government and other countries. Recipient may not -distribute Covered Code that (i) in any way infringes (directly or -contributorily) the rights (including patent, copyright, trade secret, trademark -or other intellectual property rights of any kind) of any other person or entity -or (ii) breaches any representation or warranty, express, implied or statutory, -to which, under any applicable law, it might be deemed to have been subject. - -7. Claims of Infringement. If Recipient learns of any third party claim that any -disposition of Covered Code and/or functionality wholly or partially infringes -the third party's intellectual property rights, Recipient will promptly notify -SGI of such claim. - -8. Versions of the License. SGI may publish revised and/or new versions of the -License from time to time, each with a distinguishing version number. Once -Covered Code has been published under a particular version of the License, -Recipient may, for the duration of the license, continue to use it under the -terms of that version, or choose to use such Covered Code under the terms of any -subsequent version published by SGI. Subject to the provisions of Sections 3 and -4 of this License, only SGI may modify the terms applicable to Covered Code -created under this License. - -9. DISCLAIMER OF WARRANTY. COVERED CODE IS PROVIDED "AS IS." ALL EXPRESS AND -IMPLIED WARRANTIES AND CONDITIONS ARE DISCLAIMED, INCLUDING, WITHOUT LIMITATION, -ANY IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, -FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. SGI ASSUMES NO RISK AS -TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE. SHOULD THE SOFTWARE PROVE -DEFECTIVE IN ANY RESPECT, SGI ASSUMES NO COST OR LIABILITY FOR SERVICING, REPAIR -OR CORRECTION. THIS DISCLAIMER OF WARRANTY IS AN ESSENTIAL PART OF THIS LICENSE. -NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT SUBJECT TO THIS -DISCLAIMER. - -10. LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES NOR LEGAL THEORY, WHETHER -TORT (INCLUDING, WITHOUT LIMITATION, NEGLIGENCE OR STRICT LIABILITY), CONTRACT, -OR OTHERWISE, SHALL SGI OR ANY SGI LICENSOR BE LIABLE FOR ANY DIRECT, INDIRECT, -SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, -WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, LOSS OF DATA, -COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR -LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH -DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR -PERSONAL INJURY RESULTING FROM SGI's NEGLIGENCE TO THE EXTENT APPLICABLE LAW -PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR -LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THAT EXCLUSION AND -LIMITATION MAY NOT APPLY TO RECIPIENT. - -11. Indemnity. Recipient shall be solely responsible for damages arising, -directly or indirectly, out of its utilization of rights under this License. -Recipient will defend, indemnify and hold harmless Silicon Graphics, Inc. from -and against any loss, liability, damages, costs or expenses (including the -payment of reasonable attorneys fees) arising out of Recipient's use, -modification, reproduction and distribution of the Covered Code or out of any -representation or warranty made by Recipient. - -12. U.S. Government End Users. The Covered Code is a "commercial item" -consisting of "commercial computer software" as such terms are defined in title -48 of the Code of Federal Regulations and all U.S. Government End Users acquire -only the rights set forth in this License and are subject to the terms of this -License. - -13. Miscellaneous. This License represents the complete agreement concerning the -its subject matter. If any provision of this License is held to be -unenforceable, such provision shall be reformed so as to achieve as nearly as -possible the same legal and economic effect as the original provision and the -remainder of this License will remain in effect. This License shall be governed -by and construed in accordance with the laws of the United States and the State -of California as applied to agreements entered into and to be performed entirely -within California between California residents. Any litigation relating to this -License shall be subject to the exclusive jurisdiction of the Federal Courts of -the Northern District of California (or, absent subject matter jurisdiction in -such courts, the courts of the State of California), with venue lying -exclusively in Santa Clara County, California, with the losing party responsible -for costs, including without limitation, court costs and reasonable attorneys -fees and expenses. The application of the United Nations Convention on Contracts -for the International Sale of Goods is expressly excluded. Any law or regulation -which provides that the language of a contract shall be construed against the -drafter shall not apply to this License. - -Exhibit A - -License Applicability. Except to the extent portions of this file are made -subject to an alternative license as permitted in the SGI Free Software License -B, Version 1.0 (the "License"), the contents of this file are subject only to -the provisions of the License. You may not use this file except in compliance -with the License. You may obtain a copy of the License at Silicon Graphics, -Inc., attn: Legal Services, 1600 Ampitheatre Parkway, Mountain View, CA -94043-1351, or at: - -http://oss.sgi.com/projects/FreeB - -Note that, as provided in the License, the Software is distributed on an "AS IS" -basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS DISCLAIMED, -INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND CONDITIONS OF -MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, AND -NON-INFRINGEMENT. - -Original Code. The Original Code is: [name of software, version number, and -release date], developed by Silicon Graphics, Inc. The Original Code is -Copyright (c) [dates of first publication, as appearing in the Notice in the -Original Code] Silicon Graphics, Inc. Copyright in any portions created by third -parties is as indicated elsewhere herein. All Rights Reserved. - -Additional Notice Provisions: [such additional provisions, if any, as appear in -the Notice in the Original Code under the heading "Additional Notice -Provisions"] diff --git a/vendor/github.com/google/licenseclassifier/licenses/SGI-B-1.1.header.txt b/vendor/github.com/google/licenseclassifier/licenses/SGI-B-1.1.header.txt deleted file mode 100644 index c24399b..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/SGI-B-1.1.header.txt +++ /dev/null @@ -1,20 +0,0 @@ -License Applicability. Except to the extent portions of this file are made -subject to an alternative license as permitted in the SGI Free Software License -B, Version 1.1 (the "License"), the contents of this file are subject only to -the provisions of the License. You may not use this file except in compliance -with the License. You may obtain a copy of the License at Silicon Graphics, -Inc., attn: Legal Services, 1600 Amphitheatre Parkway, Mountain View, CA -94043-1351, or at: -http://oss.sgi.com/projects/FreeB - -Note that, as provided in the License, the Software is distributed on an "AS IS" -basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS DISCLAIMED, -INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND CONDITIONS OF -MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, AND -NON-INFRINGEMENT. - -Original Code. The Original Code is: [name of software, version number, and -release date], developed by Silicon Graphics, Inc. The Original Code is -Copyright (c) [dates of first publication, as appearing in the Notice in the -Original Code] Silicon Graphics, Inc. Copyright in any portions created by third -parties is as indicated elsewhere herein. All Rights Reserved. diff --git a/vendor/github.com/google/licenseclassifier/licenses/SGI-B-1.1.txt b/vendor/github.com/google/licenseclassifier/licenses/SGI-B-1.1.txt deleted file mode 100644 index f2b6e15..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/SGI-B-1.1.txt +++ /dev/null @@ -1,250 +0,0 @@ -SGI FREE SOFTWARE LICENSE B -(Version 1.1 02/22/2000) -1. Definitions. - -1.1 "Additional Notice Provisions" means such additional provisions as appear in -the Notice in Original Code under the heading "Additional Notice Provisions." - -1.2 "Covered Code" means the Original Code or Modifications, or any combination -thereof. - -1.3 "Hardware" means any physical device that accepts input, processes input, -stores the results of processing, and/or provides output. - -1.4 "Larger Work" means a work that combines Covered Code or portions thereof -with code not governed by the terms of this License. - -1.5 "Licensable" means having the right to grant, to the maximum extent -possible, whether at the time of the initial grant or subsequently acquired, any -and all of the rights conveyed herein. - -1.6 "License" means this document. - -1.7 "Licensed Patents" means patent claims Licensable by SGI that are infringed -by the use or sale of Original Code or any Modifications provided by SGI, or any -combination thereof. - -1.8 "Modifications" means any addition to or deletion from the substance or -structure of the Original Code or any previous Modifications. When Covered Code -is released as a series of files, a Modification is: - -A. Any addition to the contents of a file containing Original Code and/or -addition to or deletion from the contents of a file containing previous -Modifications. - -B. Any new file that contains any part of the Original Code or previous -Modifications. - -1.9 "Notice" means any notice in Original Code or Covered Code, as required by -and in compliance with this License. - -1.10 "Original Code" means source code of computer software code that is -described in the source code Notice required by Exhibit A as Original Code, and -updates and error corrections specifically thereto. - -1.11 "Recipient" means an individual or a legal entity exercising rights under, -and complying with all of the terms of, this License or a future version of this -License issued under Section 8. For legal entities, "Recipient" includes any -entity that controls, is controlled by, or is under common control with -Recipient. For purposes of this definition, "control" of an entity means (a) the -power, direct or indirect, to direct or manage such entity, or (b) ownership of -fifty percent (50%) or more of the outstanding shares or beneficial ownership of -such entity. - -1.12 "Recipient Patents" means patent claims Licensable by a Recipient that are -infringed by the use or sale of Original Code or any Modifications provided by -SGI, or any combination thereof. - -1.13 "SGI" means Silicon Graphics, Inc. - -1.14 "SGI Patents" means patent claims Licensable by SGI other than the Licensed -Patents. - -2. License Grant and Restrictions. - -2.1 SGI License Grant. Subject to the terms of this License and any third party -intellectual property claims, for the duration of intellectual property -protections inherent in the Original Code, SGI hereby grants Recipient a -worldwide, royalty-free, non-exclusive license, to do the following: (i) under -copyrights Licensable by SGI, to reproduce, distribute, create derivative works -from, and, to the extent applicable, display and perform the Original Code -and/or any Modifications provided by SGI alone and/or as part of a Larger Work; -and (ii) under any Licensable Patents, to make, have made, use, sell, offer for -sale, import and/or otherwise transfer the Original Code and/or any -Modifications provided by SGI. Recipient accepts the terms and conditions of -this License by undertaking any of the aforementioned actions. The patent -license shall apply to the Covered Code if, at the time any related Modification -is added, such addition of the Modification causes such combination to be -covered by the Licensed Patents. The patent license in Section 2.1(ii) shall not -apply to any other combinations that include the Modification. No patent license -is provided under SGI Patents for infringements of SGI Patents by Modifications -not provided by SGI or combinations of Original Code and Modifications not -provided by SGI. - -2.2 Recipient License Grant. Subject to the terms of this License and any third -party intellectual property claims, Recipient hereby grants SGI and any other -Recipients a worldwide, royalty-free, non-exclusive license, under any Recipient -Patents, to make, have made, use, sell, offer for sale, import and/or otherwise -transfer the Original Code and/or any Modifications provided by SGI. - -2.3 No License For Hardware Implementations. The licenses granted in Section 2.1 -and 2.2 are not applicable to implementation in Hardware of the algorithms -embodied in the Original Code or any Modifications provided by SGI . - -3. Redistributions. - -3.1 Retention of Notice/Copy of License. The Notice set forth in Exhibit A, -below, must be conspicuously retained or included in any and all redistributions -of Covered Code. For distributions of the Covered Code in source code form, the -Notice must appear in every file that can include a text comments field; in -executable form, the Notice and a copy of this License must appear in related -documentation or collateral where the Recipient’s rights relating to Covered -Code are described. Any Additional Notice Provisions which actually appears in -the Original Code must also be retained or included in any and all -redistributions of Covered Code. - -3.2 Alternative License. Provided that Recipient is in compliance with the terms -of this License, Recipient may, so long as without derogation of any of SGI’s -rights in and to the Original Code, distribute the source code and/or executable -version(s) of Covered Code under (1) this License; (2) a license identical to -this License but for only such changes as are necessary in order to clarify -Recipient’s role as licensor of Modifications; and/or (3) a license of -Recipient’s choosing, containing terms different from this License, provided -that the license terms include this Section 3 and Sections 4, 6, 7, 10, 12, and -13, which terms may not be modified or superseded by any other terms of such -license. If Recipient elects to use any license other than this License, -Recipient must make it absolutely clear that any of its terms which differ from -this License are offered by Recipient alone, and not by SGI. It is emphasized -that this License is a limited license, and, regardless of the license form -employed by Recipient in accordance with this Section 3.2, Recipient may -relicense only such rights, in Original Code and Modifications by SGI, as it has -actually been granted by SGI in this License. - -3.3 Indemnity. Recipient hereby agrees to indemnify SGI for any liability -incurred by SGI as a result of any such alternative license terms Recipient -offers. - -4. Termination. This License and the rights granted hereunder will terminate -automatically if Recipient breaches any term herein and fails to cure such -breach within 30 days thereof. Any sublicense to the Covered Code that is -properly granted shall survive any termination of this License, absent -termination by the terms of such sublicense. Provisions that, by their nature, -must remain in effect beyond the termination of this License, shall survive. - -5. No Trademark Or Other Rights. This License does not grant any rights to: (i) -any software apart from the Covered Code, nor shall any other rights or licenses -not expressly granted hereunder arise by implication, estoppel or otherwise with -respect to the Covered Code; (ii) any trade name, trademark or service mark -whatsoever, including without limitation any related right for purposes of -endorsement or promotion of products derived from the Covered Code, without -prior written permission of SGI; or (iii) any title to or ownership of the -Original Code, which shall at all times remains with SGI. All rights in the -Original Code not expressly granted under this License are reserved. - -6. Compliance with Laws; Non-Infringement. There are various worldwide laws, -regulations, and executive orders applicable to dispositions of Covered Code, -including without limitation export, re-export, and import control laws, -regulations, and executive orders, of the U.S. government and other countries, -and Recipient is reminded it is obliged to obey such laws, regulations, and -executive orders. Recipient may not distribute Covered Code that (i) in any way -infringes (directly or contributorily) any intellectual property rights of any -kind of any other person or entity or (ii) breaches any representation or -warranty, express, implied or statutory, to which, under any applicable law, it -might be deemed to have been subject. - -7. Claims of Infringement. If Recipient learns of any third party claim that any -disposition of Covered Code and/or functionality wholly or partially infringes -the third party's intellectual property rights, Recipient will promptly notify -SGI of such claim. - -8. Versions of the License. SGI may publish revised and/or new versions of the -License from time to time, each with a distinguishing version number. Once -Covered Code has been published under a particular version of the License, -Recipient may, for the duration of the license, continue to use it under the -terms of that version, or choose to use such Covered Code under the terms of any -subsequent version published by SGI. Subject to the provisions of Sections 3 and -4 of this License, only SGI may modify the terms applicable to Covered Code -created under this License. - -9. DISCLAIMER OF WARRANTY. COVERED CODE IS PROVIDED "AS IS." ALL EXPRESS AND -IMPLIED WARRANTIES AND CONDITIONS ARE DISCLAIMED, INCLUDING, WITHOUT LIMITATION, -ANY IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, -FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. SGI ASSUMES NO RISK AS -TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE. SHOULD THE SOFTWARE PROVE -DEFECTIVE IN ANY RESPECT, SGI ASSUMES NO COST OR LIABILITY FOR SERVICING, REPAIR -OR CORRECTION. THIS DISCLAIMER OF WARRANTY IS AN ESSENTIAL PART OF THIS LICENSE. -NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT SUBJECT TO THIS -DISCLAIMER. - -10. LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES NOR LEGAL THEORY, WHETHER -TORT (INCLUDING, WITHOUT LIMITATION, NEGLIGENCE OR STRICT LIABILITY), CONTRACT, -OR OTHERWISE, SHALL SGI OR ANY SGI LICENSOR BE LIABLE FOR ANY DIRECT, INDIRECT, -SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, -WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, LOSS OF DATA, -COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR -LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH -DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR -PERSONAL INJURY RESULTING FROM SGI's NEGLIGENCE TO THE EXTENT APPLICABLE LAW -PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR -LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THAT EXCLUSION AND -LIMITATION MAY NOT APPLY TO RECIPIENT. - -11. Indemnity. Recipient shall be solely responsible for damages arising, -directly or indirectly, out of its utilization of rights under this License. -Recipient will defend, indemnify and hold harmless Silicon Graphics, Inc. from -and against any loss, liability, damages, costs or expenses (including the -payment of reasonable attorneys fees) arising out of Recipient's use, -modification, reproduction and distribution of the Covered Code or out of any -representation or warranty made by Recipient. - -12. U.S. Government End Users. The Covered Code is a "commercial item" -consisting of "commercial computer software" as such terms are defined in title -48 of the Code of Federal Regulations and all U.S. Government End Users acquire -only the rights set forth in this License and are subject to the terms of this -License. - -13. Miscellaneous. This License represents the complete agreement concerning the -its subject matter. If any provision of this License is held to be -unenforceable, such provision shall be reformed so as to achieve as nearly as -possible the same legal and economic effect as the original provision and the -remainder of this License will remain in effect. This License shall be governed -by and construed in accordance with the laws of the United States and the State -of California as applied to agreements entered into and to be performed entirely -within California between California residents. Any litigation relating to this -License shall be subject to the exclusive jurisdiction of the Federal Courts of -the Northern District of California (or, absent subject matter jurisdiction in -such courts, the courts of the State of California), with venue lying -exclusively in Santa Clara County, California, with the losing party responsible -for costs, including without limitation, court costs and reasonable attorneys -fees and expenses. The application of the United Nations Convention on Contracts -for the International Sale of Goods is expressly excluded. Any law or regulation -that provides that the language of a contract shall be construed against the -drafter shall not apply to this License. - -Exhibit A - -License Applicability. Except to the extent portions of this file are made -subject to an alternative license as permitted in the SGI Free Software License -B, Version 1.1 (the "License"), the contents of this file are subject only to -the provisions of the License. You may not use this file except in compliance -with the License. You may obtain a copy of the License at Silicon Graphics, -Inc., attn: Legal Services, 1600 Amphitheatre Parkway, Mountain View, CA -94043-1351, or at: - -http://oss.sgi.com/projects/FreeB - -Note that, as provided in the License, the Software is distributed on an "AS IS" -basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS DISCLAIMED, -INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND CONDITIONS OF -MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, AND -NON-INFRINGEMENT. - -Original Code. The Original Code is: [name of software, version number, and -release date], developed by Silicon Graphics, Inc. The Original Code is -Copyright (c) [dates of first publication, as appearing in the Notice in the -Original Code] Silicon Graphics, Inc. Copyright in any portions created by third -parties is as indicated elsewhere herein. All Rights Reserved. - -Additional Notice Provisions: [such additional provisions, if any, as appear in -the Notice in the Original Code under the heading "Additional Notice -Provisions"] diff --git a/vendor/github.com/google/licenseclassifier/licenses/SGI-B-2.0.txt b/vendor/github.com/google/licenseclassifier/licenses/SGI-B-2.0.txt deleted file mode 100644 index 3e570f7..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/SGI-B-2.0.txt +++ /dev/null @@ -1,25 +0,0 @@ -SGI FREE SOFTWARE LICENSE B -(Version 2.0, Sept. 18, 2008) -Copyright (C) [dates of first publication] Silicon Graphics, Inc. All Rights Reserved. - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice including the dates of first publication and either -this permission notice or a reference to http://oss.sgi.com/projects/FreeB/ -shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL SILICON -GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of Silicon Graphics, Inc. shall not -be used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from Silicon Graphics, Inc. diff --git a/vendor/github.com/google/licenseclassifier/licenses/SISSL-1.2.header.txt b/vendor/github.com/google/licenseclassifier/licenses/SISSL-1.2.header.txt deleted file mode 100644 index 3c251dc..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/SISSL-1.2.header.txt +++ /dev/null @@ -1,20 +0,0 @@ -The contents of this file are subject to the Sun Industry Standards Source -License Version 1.2 (the License); You may not use this file except in -compliance with the License. - -You may obtain a copy of the License at gridengine.sunsource.net/license.html - -Software distributed under the License is distributed on an AS IS basis, WITHOUT -WARRANTY OF ANY KIND, either express or implied. See the License for the -specific language governing rights and limitations under the License. - -The Original Code is Grid Engine. - -The Initial Developer of the Original Code is: Sun Microsystems, Inc. - -Portions created by: Sun Microsystems, Inc. are -Copyright (C) 2001 Sun Microsystems, Inc. - -All Rights Reserved. - -"Contributor(s): _____ diff --git a/vendor/github.com/google/licenseclassifier/licenses/SISSL-1.2.txt b/vendor/github.com/google/licenseclassifier/licenses/SISSL-1.2.txt deleted file mode 100644 index 5f60e15..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/SISSL-1.2.txt +++ /dev/null @@ -1,250 +0,0 @@ -SUN INDUSTRY STANDARDS SOURCE LICENSE - -Version 1.2 - -
1.0 DEFINITIONS - -1.1 Commercial Use means distribution or otherwise making the Original Code -available to a third party. - -1.2 Contributor Version means the combination of the Original Code, and the -Modifications made by that particular Contributor. - -1.3 Electronic Distribution Mechanism means a mechanism generally accepted in -the software development community for the electronic transfer of data. - -1.4 Executable means Original Code in any form other than Source Code. - -1.5 Initial Developer means the individual or entity identified as the Initial -Developer in the Source Code notice required by Exhibit A. - -1.6 Larger Work means a work which combines Original Code or portions thereof -with code not governed by the terms of this License. - -1.7 License means this document. - -1.8 Licensable means having the right to grant, to the maximum extent -possible, whether at the time of the initial grant or subsequently acquired, -any and all of the rights conveyed herein. - -1.9 Modifications means any addition to or deletion from the substance or -structure of either the Original Code or any previous Modifications. A -Modification is: - -A. Any addition to or deletion from the contents of a file containing Original -Code or previous Modifications. - -B. Any new file that contains any part of the Original Code or previous -Modifications. - -1.10 Original Code means Source Code of computer software code which is -described in the Source Code notice required by Exhibit A as Original Code. - -1.11 Patent Claims means any patent claim(s), now owned or hereafter acquired, -including without limitation, method, process, and apparatus claims, in any -patent Licensable by grantor. - -1.12 Source Code means the preferred form of the Original Code for making -modifications to it, including all modules it contains, plus any associated -interface definition files, or scripts used to control compilation and -installation of an Executable. - -1.13 Standards means the standards identified in Exhibit B. - -1.14 You (or Your) means an individual or a legal entity exercising rights -under, and complying with all of the terms of, this License or a future -version of this License issued under Section 6.1. For legal entities, You -includes any entity which controls, is controlled by, or is under common -control with You. For purposes of this definition, control means (a) the -power, direct or indirect, to cause the direction or management of such -entity, whether by contract or otherwise, or (b) ownership of more than fifty -percent (50%) of the outstanding shares or beneficial ownership of such -entity. - -2.0 SOURCE CODE LICENSE - -2.1 The Initial Developer Grant The Initial Developer hereby grants You a -world-wide, royalty-free, non-exclusive license, subject to third party -intellectual property claims: - -(a)under intellectual property rights (other than patent or trademark) -Licensable by Initial Developer to use, reproduce, modify, display, perform, -sublicense and distribute the Original Code (or portions thereof) with or -without Modifications, and/or as part of a Larger Work; and - -(b) under Patents Claims infringed by the making, using or selling of Original -Code, to make, have made, use, practice, sell, and offer for sale, and/or -otherwise dispose of the Original Code (or portions thereof). - -(c) the licenses granted in this Section 2.1(a) and (b) are effective on the -date Initial Developer first distributes Original Code under the terms of this -License. - -(d) Notwithstanding Section 2.1(b) above, no patent license is granted: 1) for -code that You delete from the Original Code; 2) separate from the Original -Code; or 3) for infringements caused by: i) the modification of the Original -Code or ii) the combination of the Original Code with other software or -devices, including but not limited to Modifications. - -3.0 DISTRIBUTION OBLIGATIONS - -3.1 Application of License. The Source Code version of Original Code may be -distributed only under the terms of this License or a future version of this -License released under Section 6.1, and You must include a copy of this -License with every copy of the Source Code You distribute. You may not offer -or impose any terms on any Source Code version that alters or restricts the -applicable version of this License or the recipients rights hereunder. Your -license for shipment of the Contributor Version is conditioned upon Your full -compliance with this Section. The Modifications which You create must comply -with all requirements set out by the Standards body in effect one hundred -twenty (120) days before You ship the Contributor Version. In the event that -the Modifications do not meet such requirements, You agree to publish either -(i) any deviation from the Standards protocol resulting from implementation of -Your Modifications and a reference implementation of Your Modifications or -(ii) Your Modifications in Source Code form, and to make any such deviation -and reference implementation or Modifications available to all third parties -under the same terms a this license on a royalty free basis within thirty (30) -days of Your first customer shipment of Your Modifications. Additionally, in -the event that the Modifications you create do not meet the requirements set -out in this Section, You agree to comply with the Standards requirements set -out in Exhibit B. - -3.2 Required Notices. You must duplicate the notice in Exhibit A in each file -of the Source Code. If it is not possible to put such notice in a particular -Source Code file due to its structure, then You must include such notice in a -location (such as a relevant directory) where a user would be likely to look -for such a notice. If You created one or more Modification(s) You may add Your -name as a Contributor to the notice described in Exhibit A. You must also -duplicate this License in any documentation for the Source Code where You -describe recipients rights or ownership rights relating to Initial Code. - -You may choose to offer, and to charge a fee for, warranty, support, indemnity -or liability obligations to one or more recipients of Your version of the -Code. However, You may do so only on Your own behalf, and not on behalf of the -Initial Developer. You must make it absolutely clear than any such warranty, -support, indemnity or liability obligation is offered by You alone, and You -hereby agree to indemnify the Initial Developer for any liability incurred by -the Initial Developer as a result of warranty, support, indemnity or liability -terms You offer. - -3.3 Distribution of Executable Versions. You may distribute Original Code in -Executable and Source form only if the requirements of Sections 3.1 and 3.2 -have been met for that Original Code, and if You include a notice stating that -the Source Code version of the Original Code is available under the terms of -this License. The notice must be conspicuously included in any notice in an -Executable or Source versions, related documentation or collateral in which -You describe recipients rights relating to the Original Code. You may -distribute the Executable and Source versions of Your version of the Code or -ownership rights under a license of Your choice, which may contain terms -different from this License, provided that You are in compliance with the -terms of this License. If You distribute the Executable and Source versions -under a different license You must make it absolutely clear that any terms -which differ from this License are offered by You alone, not by the Initial -Developer. You hereby agree to indemnify the Initial Developer for any -liability incurred by the Initial Developer as a result of any such terms You -offer. - -3.4 Larger Works. You may create a Larger Work by combining Original Code with -other code not governed by the terms of this License and distribute the Larger -Work as a single product. In such a case, You must make sure the requirements -of this License are fulfilled for the Original Code. - -4.0 INABILITY TO COMPLY DUE TO STATUTE OR REGULATION - -If it is impossible for You to comply with any of the terms of this License -with respect to some or all of the Original Code due to statute, judicial -order, or regulation then You must: (a) comply with the terms of this License -to the maximum extent possible; and (b) describe the limitations and the code -they affect. Such description must be included in the LEGAL file described in -Section 3.2 and must be included with all distributions of the Source Code. -Except to the extent prohibited by statute or regulation, such description -must be sufficiently detailed for a recipient of ordinary skill to be able to -understand it. - -5.0 APPLICATION OF THIS LICENSE - -This License applies to code to which the Initial Developer has attached the -notice in Exhibit A and to related Modifications as set out in Section 3.1. - -6.0 VERSIONS OF THE LICENSE - -6.1 New Versions. Sun may publish revised and/or new versions of the License -from time to time. Each version will be given a distinguishing version number. - -6.2 Effect of New Versions. Once Original Code has been published under a -particular version of the License, You may always continue to use it under the -terms of that version. You may also choose to use such Original Code under the -terms of any subsequent version of the License published by Sun. No one other -than Sun has the right to modify the terms applicable to Original Code. - -7.0 DISCLAIMER OF WARRANTY - -ORIGINAL CODE IS PROVIDED UNDER THIS LICENSE ON AN AS IS BASIS, WITHOUT -WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT -LIMITATION, WARRANTIES THAT THE ORIGINAL CODE IS FREE OF DEFECTS, -MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK -AS TO THE QUALITY AND PERFORMANCE OF THE ORIGINAL CODE IS WITH YOU. SHOULD ANY -ORIGINAL CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER) -ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS -DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE -OF ANY ORIGINAL CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. - -8.0 TERMINATION - -8.1 This License and the rights granted hereunder will terminate automatically -if You fail to comply with terms herein and fail to cure such breach within 30 -days of becoming aware of the breach. All sublicenses to the Original Code -which are properly granted shall survive any termination of this License. -Provisions which, by their nature, must remain in effect beyond the -termination of this License shall survive. 8.2 In the event of termination -under Section 8.1 above, all end user license agreements (excluding -distributors and resellers) which have been validly granted by You or any -distributor hereunder prior to termination shall survive termination. - - -EXHIBIT A - Sun Industry Standards Source License - -"The contents of this file are subject to the Sun Industry Standards Source -License Version 1.2 (the License); You - -may not use this file except in compliance with the License." - -"You may obtain a copy of the License at -gridengine.sunsource.net/license.html" - -"Software distributed under the License is distributed on an AS IS basis, -WITHOUT WARRANTY OF ANY KIND, either express or - -implied. See the License for the specific language governing rights and -limitations under the License." - -"The Original Code is Grid Engine." - -"The Initial Developer of the Original Code is: - -Sun Microsystems, Inc." - -"Portions created by: Sun Microsystems, Inc. are Copyright (C) 2001 Sun -Microsystems, Inc." - -"All Rights Reserved." - -"Contributor(s):__________________________________" - -EXHIBIT B - Standards - -1.0 Requirements for project Standards. The requirements for project Standards -are version-dependent and are defined at: Grid Engine standards. - -2.0 Additional requirements. The additional requirements pursuant to Section -3.1 are defined as: - -2.1 Naming Conventions. If any of your Modifications do not meet the -requirements of the Standard, then you must change the product name so that -Grid Engine, gridengine, gridengine.sunsource, and similar naming conventions -are not used. - -2.2 Compliance Claims. If any of your Modifications do not meet the -requirements of the Standards you may not claim, directly or indirectly, that -your implementation of the Standards is compliant. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/SISSL.header.txt b/vendor/github.com/google/licenseclassifier/licenses/SISSL.header.txt deleted file mode 100644 index c2b66eb..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/SISSL.header.txt +++ /dev/null @@ -1,21 +0,0 @@ -The contents of this file are subject to the Sun Standards License Version 1.1 -(the "License"); You may not use this file except in compliance with the -License. You may obtain a copy of the License at _______ . - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the -specific language governing rights and limitations under the License. - -The Original Code is _____ . - -The Initial Developer of the Original Code is: -Sun Microsystems, Inc.. - -Portions created by: _____ - -are Copyright (C): _____ - -All Rights Reserved. - -Contributor(s): _____ - diff --git a/vendor/github.com/google/licenseclassifier/licenses/SISSL.txt b/vendor/github.com/google/licenseclassifier/licenses/SISSL.txt deleted file mode 100644 index 1df6857..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/SISSL.txt +++ /dev/null @@ -1,281 +0,0 @@ -Sun Industry Standards Source License - Version 1.1 - -1.0 DEFINITIONS - -1.1 "Commercial Use" means distribution or otherwise making the Original Code -available to a third party. - -1.2 "Contributor Version" means the combination of the Original Code, and the -Modifications made by that particular Contributor. - -1.3 "Electronic Distribution Mechanism" means a mechanism generally accepted -in the software development community for the electronic transfer of data. - -1.4 "Executable" means Original Code in any form other than Source Code. - -1.5 "Initial Developer" means the individual or entity identified as the -Initial Developer in the Source Code notice required by Exhibit A. - -1.6 "Larger Work" means a work which combines Original Code or portions -thereof with code not governed by the terms of this License. - -1.7 "License" means this document. - -1.8 "Licensable" means having the right to grant, to the maximum extent -possible, whether at the time of the initial grant or subsequently acquired, -any and all of the rights conveyed herein. - -1.9 "Modifications" means any addition to or deletion from the substance or -structure of either the Original Code or any previous Modifications. A -Modification is: - -A. Any addition to or deletion from the contents of a file containing Original -Code or previous Modifications. - -B. Any new file that contains any part of the Original Code or previous -Modifications. - -1.10 "Original Code" means Source Code of computer software code which is -described in the Source Code notice required by Exhibit A as Original Code. - -1.11 "Patent Claims" means any patent claim(s), now owned or hereafter -acquired, including without limitation, method, process, and apparatus claims, -in any patent Licensable by grantor. - -1.12 "Source Code" means the preferred form of the Original Code for making -modifications to it, including all modules it contains, plus any associated -interface definition files, or scripts used to control compilation and -installation of an Executable. - -1.13 "Standards" means the standards identified in Exhibit B. - -1.14 "You" (or "Your") means an individual or a legal entity exercising rights -under, and complying with all of the terms of, this License or a future -version of this License issued under Section 6.1. For legal entities, -"You'' includes any entity which controls, is controlled by, or is -under common control with You. For purposes of this definition, -"control'' means (a) the power, direct or indirect, to cause the -direction or management of such entity, whether by contract or otherwise, or -(b) ownership of more than fifty percent (50%) of the outstanding shares or -beneficial ownership of such entity. - -2.0 SOURCE CODE LICENSE - -2.1 The Initial Developer Grant The Initial Developer hereby grants You a -world-wide, royalty-free, non-exclusive license, subject to third party -intellectual property claims: - -(a) under intellectual property rights (other than patent or trademark) -Licensable by Initial Developer to use, reproduce, modify, display, perform, -sublicense and distribute the Original Code (or portions thereof) with or -without Modifications, and/or as part of a Larger Work; and - -(b) under Patents Claims infringed by the making, using or selling of Original -Code, to make, have made, use, practice, sell, and offer for sale, and/or -otherwise dispose of the Original Code (or portions thereof). - -(c) the licenses granted in this Section 2.1(a) and (b) are effective on the -date Initial Developer first distributes Original Code under the terms of this -License. - -(d) Notwithstanding Section 2.1(b) above, no patent license is granted: 1) for -code that You delete from the Original Code; 2) separate from the Original -Code; or 3) for infringements caused by: i) the modification of the Original -Code or ii) the combination of the Original Code with other software or -devices, including but not limited to Modifications. - -3.0 DISTRIBUTION OBLIGATIONS - -3.1 Application of License. The Source Code version of Original Code may be -distributed only under the terms of this License or a future version of this -License released under Section 6.1, and You must include a copy of this -License with every copy of the Source Code You distribute. You may not offer -or impose any terms on any Source Code version that alters or restricts the -applicable version of this License or the recipients' rights hereunder. -Your license for shipment of the Contributor Version is conditioned upon Your -full compliance with this Section. The Modifications which You create must -comply with all requirements set out by the Standards body in effect one -hundred twenty (120) days before You ship the Contributor Version. In the -event that the Modifications do not meet such requirements, You agree to -publish either (i) any deviation from the Standards protocol resulting from -implementation of Your Modifications and a reference implementation of Your -Modifications or (ii) Your Modifications in Source Code form, and to make any -such deviation and reference implementation or Modifications available to all -third parties under the same terms as this license on a royalty free basis -within thirty (30) days of Your first customer shipment of Your Modifications. - -3.2 Required Notices. You must duplicate the notice in Exhibit A in each file -of the Source Code. If it is not possible to put such notice in a particular -Source Code file due to its structure, then You must include such notice in a -location (such as a relevant directory) where a user would be likely to look -for such a notice. If You created one or more Modification(s) You may add Your -name as a Contributor to the notice described in Exhibit A. You must also -duplicate this License in any documentation for the Source Code where You -describe recipients' rights or ownership rights relating to Initial Code. -You may choose to offer, and to charge a fee for, warranty, support, indemnity -or liability obligations to one or more recipients of Your version of the -Code. However, You may do so only on Your own behalf, and not on behalf of the -Initial Developer. You must make it absolutely clear than any such warranty, -support, indemnity or liability obligation is offered by You alone, and You -hereby agree to indemnify the Initial Developer for any liability incurred by -the Initial Developer as a result of warranty, support, indemnity or liability -terms You offer. - -3.3 Distribution of Executable Versions. You may distribute Original Code in -Executable and Source form only if the requirements of Sections 3.1 and 3.2 -have been met for that Original Code, and if You include a notice stating that -the Source Code version of the Original Code is available under the terms of -this License. The notice must be conspicuously included in any notice in an -Executable or Source versions, related documentation or collateral in which -You describe recipients' rights relating to the Original Code. You may -distribute the Executable and Source versions of Your version of the Code or -ownership rights under a license of Your choice, which may contain terms -different from this License, provided that You are in compliance with the -terms of this License. If You distribute the Executable and Source versions -under a different license You must make it absolutely clear that any terms -which differ from this License are offered by You alone, not by the Initial -Developer. You hereby agree to indemnify the Initial Developer for any -liability incurred by the Initial Developer as a result of any such terms You -offer. - -3.4 Larger Works. You may create a Larger Work by combining Original Code with -other code not governed by the terms of this License and distribute the Larger -Work as a single product. In such a case, You must make sure the requirements -of this License are fulfilled for the Original Code. - -4.0 INABILITY TO COMPLY DUE TO STATUTE OR REGULATION - -If it is impossible for You to comply with any of the terms of this License -with respect to some or all of the Original Code due to statute, judicial -order, or regulation then You must: (a) comply with the terms of this License -to the maximum extent possible; and (b) describe the limitations and the code -they affect. Such description must be included in the LEGAL file described in -Section 3.2 and must be included with all distributions of the Source Code. -Except to the extent prohibited by statute or regulation, such description -must be sufficiently detailed for a recipient of ordinary skill to be able to -understand it. - -5.0 APPLICATION OF THIS LICENSE - -This License applies to code to which the Initial Developer has attached the -notice in Exhibit A and to related Modifications as set out in Section 3.1. - -6.0 VERSIONS OF THE LICENSE - -6.1 New Versions. Sun may publish revised and/or new versions of the License -from time to time. Each version will be given a distinguishing version number. - -6.2 Effect of New Versions. Once Original Code has been published under a -particular version of the License, You may always continue to use it under the -terms of that version. You may also choose to use such Original Code under the -terms of any subsequent version of the License published by Sun. No one other -than Sun has the right to modify the terms applicable to Original Code. - -7.0 DISCLAIMER OF WARRANTY - -ORIGINAL CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT -WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT -LIMITATION, WARRANTIES THAT THE ORIGINAL CODE IS FREE OF DEFECTS, -MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK -AS TO THE QUALITY AND PERFORMANCE OF THE ORIGINAL CODE IS WITH YOU. SHOULD ANY -ORIGINAL CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER) -ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS -DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE -OF ANY ORIGINAL CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. - -8.0 TERMINATION - -8.1 This License and the rights granted hereunder will terminate automatically -if You fail to comply with terms herein and fail to cure such breach within 30 -days of becoming aware of the breach. All sublicenses to the Original Code -which are properly granted shall survive any termination of this License. -Provisions which, by their nature, must remain in effect beyond the -termination of this License shall survive. - -8.2 In the event of termination under Section 8.1 above, all end user license -agreements (excluding distributors and resellers) which have been validly -granted by You or any distributor hereunder prior to termination shall survive -termination. - -9.0 LIMIT OF LIABILITY - -UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING -NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY -OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF ORIGINAL CODE, OR ANY SUPPLIER OF ANY -OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, -INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT -LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR -MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH -PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS -LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL -INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE -LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION -OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND -LIMITATION MAY NOT APPLY TO YOU. - -10.0 U.S. GOVERNMENT END USERS - -U.S. Government: If this Software is being acquired by or on behalf of the -U.S. Government or by a U.S. Government prime contractor or subcontractor (at -any tier), then the Government's rights in the Software and accompanying -documentation shall be only as set forth in this license; this is in -accordance with 48 C.F.R. 227.7201 through 227.7202-4 (for Department of -Defense (DoD) acquisitions) and with 48 C.F.R. 2.101 and 12.212 (for non-DoD -acquisitions). - -11.0 MISCELLANEOUS - -This License represents the complete agreement concerning subject matter -hereof. If any provision of this License is held to be unenforceable, such -provision shall be reformed only to the extent necessary to make it -enforceable. This License shall be governed by California law provisions -(except to the extent applicable law, if any, provides otherwise), excluding -its conflict-of-law provisions. With respect to disputes in which at least one -party is a citizen of, or an entity chartered or registered to do business in -the United States of America, any litigation relating to this License shall be -subject to the jurisdiction of the Federal Courts of the Northern District of -California, with venue lying in Santa Clara County, California, with the -losing party responsible for costs, including without limitation, court costs -and reasonable attorneys' fees and expenses. The application of the -United Nations Convention on Contracts for the International Sale of Goods is -expressly excluded. Any law or regulation which provides that the language of -a contract shall be construed against the drafter shall not apply to this -License. - -EXHIBIT A - Sun Standards License - -"The contents of this file are subject to the Sun Standards License Version -1.1 (the "License"); You may not use this file except in compliance with the -License. You may obtain a copy of the License at -_______________________________. - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either - -express or implied. See the License for the specific language governing rights -and limitations under the License. - -The Original Code is ______________________________________. - -The Initial Developer of the Original Code is: - -Sun Microsystems, Inc.. - -Portions created by: _______________________________________ - -are Copyright (C): _______________________________________ - -All Rights Reserved. - -Contributor(s): _______________________________________ - -
EXHIBIT B - Standards - -The Standard is defined as the following: - -OpenOffice.org XML File Format Specification, located at -http://xml.openoffice.org - -OpenOffice.org Application Programming Interface Specification, located at -http://api.openoffice.org - diff --git a/vendor/github.com/google/licenseclassifier/licenses/Sleepycat.txt b/vendor/github.com/google/licenseclassifier/licenses/Sleepycat.txt deleted file mode 100644 index 347045b..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/Sleepycat.txt +++ /dev/null @@ -1,71 +0,0 @@ -The Sleepycat License Copyright (c) 1990-1999 Sleepycat Software. 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. - -- Redistributions in any form must be accompanied by information on how to obtain complete source code for the DB software and any accompanying software that uses the DB software. The source code must either be included in the distribution or be available for no more than the cost of distribution plus a nominal fee, and must be freely redistributable under reasonable conditions. For an executable file, complete source code means the source code for all modules it contains. It does not include source code for modules or files that typically accompany the major components of the operating system on which the executable file runs. - -THIS SOFTWARE IS PROVIDED BY SLEEPYCAT SOFTWARE ``AS IS'' AND ANY -EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON- -INFRINGEMENT, ARE DISCLAIMED. IN NO EVENT SHALL SLEEPYCAT SOFTWARE 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. - - -Copyright (c) 1990, 1993, 1994, 1995 The Regents of the University of -California. 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 the University 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 REGENTS 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 REGENTS 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. - - -Copyright (c) 1995, 1996 The President and Fellows of Harvard University. 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 the University 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 HARVARD AND ITS 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 HARVARD OR ITS CONTRIBUTORS BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/UPL-1.0.txt b/vendor/github.com/google/licenseclassifier/licenses/UPL-1.0.txt deleted file mode 100644 index cd58868..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/UPL-1.0.txt +++ /dev/null @@ -1,19 +0,0 @@ -The Universal Permissive License (UPL), Version 1.0 - -Copyright (c) - -The Universal Permissive License (UPL), Version 1.0 - -Subject to the condition set forth below, permission is hereby granted to any person obtaining a copy of this software, associated documentation and/or data (collectively the "Software"), free of charge and under any and all copyright rights in the Software, and any and all patent rights owned or freely licensable by each licensor hereunder covering either (i) the unmodified Software as contributed to or provided by such licensor, or (ii) the Larger Works (as defined below), to deal in both - -(a) the Software, and - -(b) any piece of software and/or hardware listed in the lrgrwrks.txt file if one is included with the Software (each a “Larger Work” to which the Software is contributed by such licensors), - -without restriction, including without limitation the rights to copy, create derivative works of, display, perform, and distribute the Software and make, use, sell, offer for sale, import, export, have made, and have sold the Software and the Larger Work(s), and to sublicense the foregoing rights on either these or other terms. - -This license is subject to the following condition: - -The above copyright notice and either this complete permission notice or at a minimum a reference to the UPL must be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/github.com/google/licenseclassifier/licenses/Unicode-DFS-2015.txt b/vendor/github.com/google/licenseclassifier/licenses/Unicode-DFS-2015.txt deleted file mode 100644 index 63a1736..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/Unicode-DFS-2015.txt +++ /dev/null @@ -1,18 +0,0 @@ -UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE - -Unicode Data Files include all data files under the directories http://www.unicode.org/Public/, http://www.unicode.org/reports/, and http://www.unicode.org/cldr/data/. Unicode Data Files do not include PDF online code charts under the directory http://www.unicode.org/Public/. Software includes any source code published in the Unicode Standard or under the directories http://www.unicode.org/Public/, http://www.unicode.org/reports/, and http://www.unicode.org/cldr/data/. - -NOTICE TO USER: Carefully read the following legal agreement. BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE. - -COPYRIGHT AND PERMISSION NOTICE - -Copyright © 1991-2015 Unicode, Inc. All rights reserved. Distributed under the Terms of Use in http://www.unicode.org/copyright.html. - -Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that - -(a) this copyright and permission notice appear with all copies of the Data Files or Software, -(b) this copyright and permission notice appear in associated documentation, and -(c) there is clear notice in each modified Data File or in the Software as well as in the documentation associated with the Data File(s) or Software that the data or software has been modified. -THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. - -Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. diff --git a/vendor/github.com/google/licenseclassifier/licenses/Unicode-DFS-2016.txt b/vendor/github.com/google/licenseclassifier/licenses/Unicode-DFS-2016.txt deleted file mode 100644 index 4d400bd..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/Unicode-DFS-2016.txt +++ /dev/null @@ -1,21 +0,0 @@ -UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE - -Unicode Data Files include all data files under the directories http://www.unicode.org/Public/, http://www.unicode.org/reports/, http://www.unicode.org/cldr/data/, http://source.icu-project.org/repos/icu/, http://www.unicode.org/ivd/data/, and http://www.unicode.org/utility/trac/browser/. - -Unicode Data Files do not include PDF online code charts under the directory http://www.unicode.org/Public/. - -Software includes any source code published in the Unicode Standard or under the directories http://www.unicode.org/Public/, http://www.unicode.org/reports/, http://www.unicode.org/cldr/data/, http://source.icu-project.org/repos/icu/, and http://www.unicode.org/utility/trac/browser/. - -NOTICE TO USER: Carefully read the following legal agreement. BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE. - -COPYRIGHT AND PERMISSION NOTICE - -Copyright © 1991-2016 Unicode, Inc. All rights reserved. Distributed under the Terms of Use in http://www.unicode.org/copyright.html. - -Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either - -(a) this copyright and permission notice appear with all copies of the Data Files or Software, or -(b) this copyright and permission notice appear in associated Documentation. -THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. - -Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. diff --git a/vendor/github.com/google/licenseclassifier/licenses/Unicode-TOU.txt b/vendor/github.com/google/licenseclassifier/licenses/Unicode-TOU.txt deleted file mode 100644 index f420483..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/Unicode-TOU.txt +++ /dev/null @@ -1,68 +0,0 @@ -Unicode Terms of Use - -For the general privacy policy governing access to this site, see the Unicode -Privacy Policy. For trademark usage, see the Unicode® Consortium Name and -Trademark Usage Policy. - -A. Unicode Copyright. - -1. Copyright © 1991-2014 Unicode, Inc. All rights reserved. - -2. Certain documents and files on this website contain a legend indicating that "Modification is permitted." Any person is hereby authorized, without fee, to modify such documents and files to create derivative works conforming to the Unicode® Standard, subject to Terms and Conditions herein. - -3. Any person is hereby authorized, without fee, to view, use, reproduce, and distribute all documents and files solely for informational purposes in the creation of products supporting the Unicode Standard, subject to the Terms and Conditions herein. - -4. Further specifications of rights and restrictions pertaining to the use of the particular set of data files known as the "Unicode Character Database" can be found in Exhibit 1. - -5. Each version of the Unicode Standard has further specifications of rights and restrictions of use. For the book editions (Unicode 5.0 and earlier), these are found on the back of the title page. The online code charts carry specific restrictions. All other files, including online documentation of the core specification for Unicode 6.0 and later, are covered under these general Terms of Use. - -6. No license is granted to "mirror" the Unicode website where a fee is charged for access to the "mirror" site. - -7. Modification is not permitted with respect to this document. All copies of this document must be verbatim. - -B. Restricted Rights Legend. Any technical data or software which is licensed -to the United States of America, its agencies and/or instrumentalities under -this Agreement is commercial technical data or commercial computer software -developed exclusively at private expense as defined in FAR 2.101, or DFARS -252.227-7014 (June 1995), as applicable. For technical data, use, duplication, -or disclosure by the Government is subject to restrictions as set forth in -DFARS 202.227-7015 Technical Data, Commercial and Items (Nov 1995) and this -Agreement. For Software, in accordance with FAR 12-212 or DFARS 227-7202, as -applicable, use, duplication or disclosure by the Government is subject to the -restrictions set forth in this Agreement. - -C. Warranties and Disclaimers. - -1. This publication and/or website may include technical or typographical errors or other inaccuracies . Changes are periodically added to the information herein; these changes will be incorporated in new editions of the publication and/or website. Unicode may make improvements and/or changes in the product(s) and/or program(s) described in this publication and/or website at any time. - -2. If this file has been purchased on magnetic or optical media from Unicode, Inc. the sole and exclusive remedy for any claim will be exchange of the defective media within ninety (90) days of original purchase. - -3. EXCEPT AS PROVIDED IN SECTION C.2, THIS PUBLICATION AND/OR SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND EITHER EXPRESS, IMPLIED, OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. UNICODE AND ITS LICENSORS ASSUME NO RESPONSIBILITY FOR ERRORS OR OMISSIONS IN THIS PUBLICATION AND/OR SOFTWARE OR OTHER DOCUMENTS WHICH ARE REFERENCED BY OR LINKED TO THIS PUBLICATION OR THE UNICODE WEBSITE. - -D. Waiver of Damages. In no event shall Unicode or its licensors be liable for -any special, incidental, indirect or consequential damages of any kind, or any -damages whatsoever, whether or not Unicode was advised of the possibility of -the damage, including, without limitation, those resulting from the following: -loss of use, data or profits, in connection with the use, modification or -distribution of this information or its derivatives. - -E. Trademarks & Logos. - -1. The Unicode Word Mark and the Unicode Logo are trademarks of Unicode, Inc. “The Unicode Consortium” and “Unicode, Inc.” are trade names of Unicode, Inc. Use of the information and materials found on this website indicates your acknowledgement of Unicode, Inc.’s exclusive worldwide rights in the Unicode Word Mark, the Unicode Logo, and the Unicode trade names. - -2. The Unicode Consortium Name and Trademark Usage Policy (“Trademark Policy”) are incorporated herein by reference and you agree to abide by the provisions of the Trademark Policy, which may be changed from time to time in the sole discretion of Unicode, Inc. - -3. All third party trademarks referenced herein are the property of their respective owners. - -F. Miscellaneous. - -1. Jurisdiction and Venue. This server is operated from a location in the State of California, United States of America. Unicode makes no representation that the materials are appropriate for use in other locations. If you access this server from other locations, you are responsible for compliance with local laws. This Agreement, all use of this site and any claims and damages resulting from use of this site are governed solely by the laws of the State of California without regard to any principles which would apply the laws of a different jurisdiction. The user agrees that any disputes regarding this site shall be resolved solely in the courts located in Santa Clara County, California. The user agrees said courts have personal jurisdiction and agree to waive any right to transfer the dispute to any other forum. - -2. Modification by Unicode Unicode shall have the right to modify this Agreement at any time by posting it to this site. The user may not assign any part of this Agreement without Unicode’s prior written consent. - -3. Taxes. The user agrees to pay any taxes arising from access to this website or use of the information herein, except for those based on Unicode’s net income. - -4. Severability. If any provision of this Agreement is declared invalid or unenforceable, the remaining provisions of this Agreement shall remain in effect. - -5. Entire Agreement. This Agreement constitutes the entire agreement between the parties. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/Unlicense.txt b/vendor/github.com/google/licenseclassifier/licenses/Unlicense.txt deleted file mode 100644 index ac8f5f5..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/Unlicense.txt +++ /dev/null @@ -1,24 +0,0 @@ -This is free and unencumbered software released into the public domain. - -Anyone is free to copy, modify, publish, use, compile, sell, or distribute -this software, either in source code form or as a compiled binary, for any -purpose, commercial or non-commercial, and by any means. - -In jurisdictions that recognize copyright laws, the author or authors of this -software dedicate any and all copyright interest in the software to the public -domain. We make this dedication for the benefit of the public at large and to -the detriment of our heirs and - -successors. We intend this dedication to be an overt act of relinquishment in -perpetuity of all present and future rights to this software under copyright -law. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN -ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -For more information, please refer to - diff --git a/vendor/github.com/google/licenseclassifier/licenses/W3C-19980720.txt b/vendor/github.com/google/licenseclassifier/licenses/W3C-19980720.txt deleted file mode 100644 index 00aa256..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/W3C-19980720.txt +++ /dev/null @@ -1,48 +0,0 @@ -W3C® SOFTWARE NOTICE AND LICENSE - -Copyright (c) 1994-2002 World Wide Web Consortium, (Massachusetts Institute of -Technology, Institut National de Recherche en Informatique et en Automatique, -Keio University). All Rights Reserved. http://www.w3.org/Consortium/Legal/ - -This W3C work (including software, documents, or other related items) is being -provided by the copyright holders under the following license. By obtaining, -using and/or copying this work, you (the licensee) agree that you have read, -understood, and will comply with the following terms and conditions: - -Permission to use, copy, modify, and distribute this software and its -documentation, with or without modification,  for any purpose and without fee -or royalty is hereby granted, provided that you include the following on ALL -copies of the software and documentation or portions thereof, including -modifications, that you make: - -1. The full text of this NOTICE in a location viewable to users of the redistributed or derivative work. - -2. Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, a short notice of the following form (hypertext is preferred, text is permitted) should be used within the body of any redistributed or derivative code: "Copyright © [$date-of-software] World Wide Web Consortium, (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University). All Rights Reserved. http://www.w3.org/Consortium/Legal/" - -3. Notice of any changes or modifications to the W3C files, including the date changes were made. (We recommend you provide URIs to the location from which the code is derived.) - -THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS -MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT -LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR -PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY -THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. - -COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION. - -The name and trademarks of copyright holders may NOT be used in advertising or -publicity pertaining to the software without specific, written prior -permission. Title to copyright in this software and any associated -documentation will at all times remain with copyright holders. - -____________________________________ - -This formulation of W3C's notice and license became active on August 14 -1998 so as to improve compatibility with GPL. This version ensures that W3C -software licensing terms are no more restrictive than GPL and consequently W3C -software may be distributed in GPL packages. See the older formulation for the -policy prior to this date. Please see our Copyright FAQ for common questions -about using materials from our site, including specific terms and conditions -for packages like libwww, Amaya, and Jigsaw. Other questions about this notice -can be directed to site-policy@w3.org. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/W3C-20150513.txt b/vendor/github.com/google/licenseclassifier/licenses/W3C-20150513.txt deleted file mode 100644 index 5021532..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/W3C-20150513.txt +++ /dev/null @@ -1,41 +0,0 @@ -W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE - -This work is being provided by the copyright holders under the following -license. - -License - -By obtaining and/or copying this work, you (the licensee) agree that you have -read, understood, and will comply with the following terms and conditions. - -Permission to copy, modify, and distribute this work, with or without -modification, for any purpose and without fee or royalty is hereby granted, -provided that you include the following on ALL copies of the work or portions -thereof, including modifications: - - * The full text of this NOTICE in a location viewable to users of the - redistributed or derivative work. - - * Any pre-existing intellectual property disclaimers, notices, or terms and - conditions. If none exist, the W3C Software and Document Short Notice - should be included. - - * Notice of any changes or modifications, through a copyright statement on the - new code or document such as "This software or document includes material - copied from or derived from [title and URI of the W3C document]. Copyright - (C) [YEAR] W3C (R) (MIT, ERCIM, Keio, Beihang)." - -Disclaimers - -THIS WORK IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR -WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF -MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE -SOFTWARE OR DOCUMENT WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, -TRADEMARKS OR OTHER RIGHTS. - -COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENT. - -The name and trademarks of copyright holders may NOT be used in advertising or -publicity pertaining to the work without specific, written prior permission. -Title to copyright in this work will at all times remain with copyright holders. diff --git a/vendor/github.com/google/licenseclassifier/licenses/W3C.header.txt b/vendor/github.com/google/licenseclassifier/licenses/W3C.header.txt deleted file mode 100644 index 4b259cc..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/W3C.header.txt +++ /dev/null @@ -1,6 +0,0 @@ -Copyright (C) [$date-of-software] World Wide Web Consortium, (Massachusetts -Institute of Technology, European Research Consortium for Informatics and -Mathematics, Keio University). All Rights Reserved. This work is distributed -under the W3C® Software License in the hope that it will be useful, but WITHOUT -ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -FOR A PARTICULAR PURPOSE. diff --git a/vendor/github.com/google/licenseclassifier/licenses/W3C.txt b/vendor/github.com/google/licenseclassifier/licenses/W3C.txt deleted file mode 100644 index ec98387..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/W3C.txt +++ /dev/null @@ -1,60 +0,0 @@ -W3C SOFTWARE NOTICE AND LICENSE - -This work (and included software, documentation such as READMEs, or other -related items) is being provided by the copyright holders under the following -license. - -License - -By obtaining, using and/or copying this work, you (the licensee) agree that -you have read, understood, and will comply with the following terms and -conditions. - -Permission to copy, modify, and distribute this software and its -documentation, with or without modification, for any purpose and without fee -or royalty is hereby granted, provided that you include the following on ALL -copies of the software and documentation or portions thereof, including -modifications: - -The full text of this NOTICE in a location viewable to users of the -redistributed or derivative work. - -Any pre-existing intellectual property disclaimers, notices, or terms and -conditions. If none exist, the W3C Software Short Notice should be included -(hypertext is preferred, text is permitted) within the body of any -redistributed or derivative code. - -Notice of any changes or modifications to the files, including the date -changes were made. (We recommend you provide URIs to the location from which -the code is derived.) - -Disclaimers - -THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS -MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT -LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR -PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY -THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. - -COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION. - -The name and trademarks of copyright holders may NOT be used in advertising or -publicity pertaining to the software without specific, written prior -permission. Title to copyright in this software and any associated -documentation will at all times remain with copyright holders. - -Notes - -This version: http://www.w3.org/Consortium/Legal/2002/copyright- -software-20021231 - -This formulation of W3C's notice and license became active on December 31 -2002. This version removes the copyright ownership notice such that this -license can be used with materials other than those owned by the W3C, reflects -that ERCIM is now a host of the W3C, includes references to this specific -dated version of the license, and removes the ambiguous grant of "use". -Otherwise, this version is the same as the previous version and is written so -as to preserve the Free Software Foundation's assessment of GPL -compatibility and OSI's certification under the Open Source Definition. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/WTFPL.txt b/vendor/github.com/google/licenseclassifier/licenses/WTFPL.txt deleted file mode 100644 index 9295d0b..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/WTFPL.txt +++ /dev/null @@ -1,16 +0,0 @@ -DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE - -Version 2, December 2004 - -Copyright (C) 2004 Sam Hocevar - -Everyone is permitted to copy and distribute verbatim or modified copies of -this license document, and changing it is allowed as long as the name is -changed. - -DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE - -TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - -0. You just DO WHAT THE FUCK YOU WANT TO. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/X11.txt b/vendor/github.com/google/licenseclassifier/licenses/X11.txt deleted file mode 100644 index e412e01..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/X11.txt +++ /dev/null @@ -1,27 +0,0 @@ -X11 License - -Copyright (C) 1996 X Consortium - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE X -CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN -ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of the X Consortium shall not be -used in advertising or otherwise to promote the sale, use or other dealings in -this Software without prior written authorization from the X Consortium. - -X Window System is a trademark of X Consortium, Inc. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/Xnet.txt b/vendor/github.com/google/licenseclassifier/licenses/Xnet.txt deleted file mode 100644 index 4fc0c99..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/Xnet.txt +++ /dev/null @@ -1,21 +0,0 @@ -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - -This agreement shall be governed in all respects by the laws of the State of -California and by the laws of the United States of America. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/ZPL-1.1.txt b/vendor/github.com/google/licenseclassifier/licenses/ZPL-1.1.txt deleted file mode 100644 index d7aafd8..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/ZPL-1.1.txt +++ /dev/null @@ -1,50 +0,0 @@ -Zope Public License (ZPL) Version 1.1 - -Copyright (c) Zope Corporation. All rights reserved. - -This license has been certified as open source. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions in source code must retain the above copyright notice, this list of conditions, and the following disclaimer. - -2. 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. - -3. All advertising materials and documentation mentioning features derived from or use of this software must display the following acknowledgement: - -"This product includes software developed by Zope Corporation for use in the Z -Object Publishing Environment (http://www.zope.com/)." - -In the event that the product being advertised includes an intact Zope -distribution (with copyright and license included) then this clause is waived. - -4. Names associated with Zope or Zope Corporation must not be used to endorse or promote products derived from this software without prior written permission from Zope Corporation. - -5. Modified redistributions of any form whatsoever must retain the following acknowledgment: - -"This product includes software developed by Zope Corporation for use in the Z -Object Publishing Environment (http://www.zope.com/)." - -Intact (re-)distributions of any official Zope release do not require an -external acknowledgement. - -6. Modifications are encouraged but must be packaged separately as patches to official Zope releases. Distributions that do not clearly separate the patches from the original work must be clearly labeled as unofficial distributions. Modifications which do not carry the name Zope may be packaged in any form, as long as they conform to all of the clauses above. - -Disclaimer - -THIS SOFTWARE IS PROVIDED BY ZOPE CORPORATION ``AS IS'' AND ANY -EXPRESSED 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 ZOPE CORPORATION OR ITS 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. - -This software consists of contributions made by Zope Corporation and many -individuals on behalf of Zope Corporation. Specific attributions are listed in -the accompanying credits file. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/ZPL-2.0.txt b/vendor/github.com/google/licenseclassifier/licenses/ZPL-2.0.txt deleted file mode 100644 index 3f71a5d..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/ZPL-2.0.txt +++ /dev/null @@ -1,38 +0,0 @@ -Zope Public License (ZPL) Version 2.0 - -This software is Copyright (c) Zope Corporation (tm) and Contributors. All -rights reserved. - -This license has been certified as open source. It has also been designated as -GPL compatible by the Free Software Foundation (FSF). - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions in source code must retain the above copyright notice, this list of conditions, and the following disclaimer. - -2. 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. - -3. The name Zope Corporation (tm) must not be used to endorse or promote products derived from this software without prior written permission from Zope Corporation. - -4. The right to distribute this software or to use it for any purpose does not give you the right to use Servicemarks (sm) or Trademarks (tm) of Zope Corporation. Use of them is covered in a separate agreement (see http://www.zope.com/Marks). - -5. If any files are modified, you must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. - -Disclaimer - -THIS SOFTWARE IS PROVIDED BY ZOPE CORPORATION ``AS IS'' AND ANY -EXPRESSED 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 ZOPE CORPORATION OR ITS 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. - -This software consists of contributions made by Zope Corporation and many -individuals on behalf of Zope Corporation. Specific attributions are listed in -the accompanying credits file. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/ZPL-2.1.txt b/vendor/github.com/google/licenseclassifier/licenses/ZPL-2.1.txt deleted file mode 100644 index 8d48cff..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/ZPL-2.1.txt +++ /dev/null @@ -1,34 +0,0 @@ -Zope Public License (ZPL) Version 2.1 - -A copyright notice accompanies this license document that identifies the -copyright holders. - -This license has been certified as open source. It has also been designated as -GPL compatible by the Free Software Foundation (FSF). - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions in source code must retain the accompanying copyright notice, this list of conditions, and the following disclaimer. - -2. Redistributions in binary form must reproduce the accompanying copyright notice, this list of conditions, and the following disclaimer in the documentation and/or other materials provided with the distribution. - -3. Names of the copyright holders must not be used to endorse or promote products derived from this software without prior written permission from the copyright holders. - -4. The right to distribute this software or to use it for any purpose does not give you the right to use Servicemarks (sm) or Trademarks (tm) of the copyright holders. Use of them is covered by separate agreement with the copyright holders. - -5. If any files are modified, you must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. - -Disclaimer - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY -EXPRESSED 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 HOLDERS BE LIABLE FOR ANY DIRECT, -INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/Zend-2.0.txt b/vendor/github.com/google/licenseclassifier/licenses/Zend-2.0.txt deleted file mode 100644 index e8af600..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/Zend-2.0.txt +++ /dev/null @@ -1,30 +0,0 @@ -The Zend Engine License, version 2.00 - -Copyright (c) 1999-2002 Zend Technologies Ltd. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, is permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - -2. 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. - -3. The names "Zend" and "Zend Engine" must not be used to endorse or promote products derived from this software without prior permission from Zend Technologies Ltd. For written permission, please contact license@zend.com. - -4. Zend Technologies Ltd. may publish revised and/or new versions of the license from time to time. Each version will be given a distinguishing version number. Once covered code has been published under a particular version of the license, you may always continue to use it under the terms of that version. You may also choose to use such covered code under the terms of any subsequent version of the license published by Zend Technologies Ltd. No one other than Zend Technologies Ltd. has the right to modify the terms applicable to covered code created under this License. - -5. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes the Zend Engine, freely available at http://www.zend.com" - -6. All advertising materials mentioning features or use of this software must display the following acknowledgment: "The Zend Engine is freely available at http://www.zend.com" - -THIS SOFTWARE IS PROVIDED BY ZEND TECHNOLOGIES LTD. ``AS IS'' AND -ANY EXPRESSED 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 ZEND TECHNOLOGIES LTD. BE LIABLE FOR ANY DIRECT, -INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/Zlib.txt b/vendor/github.com/google/licenseclassifier/licenses/Zlib.txt deleted file mode 100644 index b573333..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/Zlib.txt +++ /dev/null @@ -1,19 +0,0 @@ -zlib License -This software is provided 'as-is', without any express or implied warranty. In -no event will the authors be held liable for any damages arising from the use of -this software. - -Permission is granted to anyone to use this software for any purpose, including -commercial applications, and to alter it and redistribute it freely, subject to -the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim - that you wrote the original software. If you use this software in a product, - an acknowledgment in the product documentation would be appreciated but is - not required. - -2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - -3. This notice may not be removed or altered from any source distribution. - diff --git a/vendor/github.com/google/licenseclassifier/licenses/eGenix.txt b/vendor/github.com/google/licenseclassifier/licenses/eGenix.txt deleted file mode 100644 index cf694c8..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/eGenix.txt +++ /dev/null @@ -1,83 +0,0 @@ -EGENIX.COM PUBLIC LICENSE AGREEMENT -Version 1.1.0 -This license agreement is based on the Python CNRI License Agreement, a widely -accepted open- source license. - -1. Introduction -This "License Agreement" is between eGenix.com Software, Skills and Services -GmbH ("eGenix.com"), having an office at Pastor-Loeh-Str. 48, D-40764 -Langenfeld, Germany, and the Individual or Organization ("Licensee") accessing -and otherwise using this software in source or binary form and its associated -documentation ("the Software"). - -2. License -Subject to the terms and conditions of this eGenix.com Public License Agreement, -eGenix.com hereby grants Licensee a non-exclusive, royalty-free, world-wide -license to reproduce, analyze, test, perform and/or display publicly, prepare -derivative works, distribute, and otherwise use the Software alone or in any -derivative version, provided, however, that the eGenix.com Public License -Agreement is retained in the Software, or in any derivative version of the -Software prepared by Licensee. - -3. NO WARRANTY -eGenix.com is making the Software available to Licensee on an "AS IS" basis. -SUBJECT TO ANY STATUTORY WARRANTIES WHICH CAN NOT BE EXCLUDED, EGENIX.COM MAKES -NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT -LIMITATION, EGENIX.COM MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF -MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE -SOFTWARE WILL NOT INFRINGE ANY THIRD PARTY RIGHTS. - -4. LIMITATION OF LIABILITY -EGENIX.COM SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE SOFTWARE -FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS (INCLUDING, -WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, -LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) AS A RESULT OF USING, -MODIFYING OR DISTRIBUTING THE SOFTWARE, OR ANY DERIVATIVE THEREOF, EVEN IF -ADVISED OF THE POSSIBILITY THEREOF. SOME JURISDICTIONS DO NOT ALLOW THE -EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THE ABOVE -EXCLUSION OR LIMITATION MAY NOT APPLY TO LICENSEE. - -5. Termination -This License Agreement will automatically terminate upon a material breach of -its terms and conditions. - -6. Third Party Rights -Any software or documentation in source or binary form provided along with the -Software that is associated with a separate license agreement is licensed to -Licensee under the terms of that license agreement. This License Agreement does -not apply to those portions of the Software. Copies of the third party licenses -are included in the Software Distribution. - -7. General -Nothing in this License Agreement affects any statutory rights of consumers that -cannot be waived or limited by contract. - -Nothing in this License Agreement shall be deemed to create any relationship of -agency, partnership, or joint venture between eGenix.com and Licensee. - -If any provision of this License Agreement shall be unlawful, void, or for any -reason unenforceable, such provision shall be modified to the extent necessary -to render it enforceable without losing its intent, or, if no such modification -is possible, be severed from this License Agreement and shall not affect the -validity and enforceability of the remaining provisions of this License -Agreement. - -This License Agreement shall be governed by and interpreted in all respects by -the law of Germany, excluding conflict of law provisions. It shall not be -governed by the United Nations Convention on Contracts for International Sale of -Goods. This License Agreement does not grant permission to use eGenix.com -trademarks or trade names in a trademark sense to endorse or promote products or -services of Licensee, or any third party. - -The controlling language of this License Agreement is English. If Licensee has -received a translation into another language, it has been provided for -Licensee's convenience only. - -8. Agreement -By downloading, copying, installing or otherwise using the Software, Licensee -agrees to be bound by the terms and conditions of this License Agreement. For -question regarding this License Agreement, please write to: -eGenix.com Software, Skills and Services GmbH -Pastor-Loeh-Str. 48 -D-40764 Langenfeld -Germany diff --git a/vendor/github.com/google/licenseclassifier/licenses/embed.go b/vendor/github.com/google/licenseclassifier/licenses/embed.go deleted file mode 100644 index e7f682b..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/embed.go +++ /dev/null @@ -1,19 +0,0 @@ -package licenses - -import ( - "embed" - "io/fs" -) - -//go:embed *.db *.txt -var licenseFS embed.FS - -// ReadLicenseFile locates and reads the license archive file. Absolute paths are used unmodified. Relative paths are expected to be in the licenses directory of the licenseclassifier package. -func ReadLicenseFile(filename string) ([]byte, error) { - return licenseFS.ReadFile(filename) -} - -// ReadLicenseDir reads directory containing the license files. -func ReadLicenseDir() ([]fs.DirEntry, error) { - return licenseFS.ReadDir(".") -} diff --git a/vendor/github.com/google/licenseclassifier/licenses/forbidden_licenses.db b/vendor/github.com/google/licenseclassifier/licenses/forbidden_licenses.db deleted file mode 100644 index d8a16ede88bfa892141f429c9fc8364021dc05b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1107122 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

$IluRtj6!dlv8v=|5s!j@+4q_dxJvypUlk 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

U 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 >xU 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%0DwfiqcT;QMVCQ!ghOm;^cct7d1EkIr{l zco%t=VJo}_w^)f4$&M$}_osbCWA(GXY=Dv-D!>G5Egrl^etI46UqSN$2h>33$#MTm zm)(^ zjdz(QY+uf5WkVx~DTg+SQZPk0!5_BEJi`_3FhVBZ_r(80DBB4wJ##&bMiYeFXJ8!g zf)6GLZgAJFtGN{v2Uhv%N0kgdVV-x$8yQmXhHx$SysZ}3?y$hxSGt-}cl+)O&tL;G zWZd@Zp9ayv8XTWbdxNH#q5de!L+&+!hmjm&beCrNO55gA zF+22B*+}@p6$I0jgy|wWJvCOppq}N>?5M!4ug_?rr&4U7&8*J2Vt5di>E@>=6g(eQ zx7H@)&W@G@3dDB4WT}i5xh{buW&Gkjz@HZ0+Wr)KzFw#$eIZEK>owmT{Svei1@fRW zaVeyG+0x&T-R}c=k3XMA2D3@11X2vXM(aHl!9kXh1&8?`h)G4@BcqMpGG=1*01>S& zKc&}WExBFG;Lf-(A!hWh>|qGaGv@379>ndkc5L`%ao zU*!+{w*5VJ4jv^0!ReMVN590kRt_dR+(}E&9F=LiFzAL_Qq>oJ5DNXvR`~ep*RX=j z2Kp2UkZo9=vrU&0*`Gw>6t*PG31n@xr{3h%Gab2FYzO@xEPTu}Z^5gCr;XizRcGFI!{u6&JNQA%M$jJ> zeWjdztI1$xLQwSYuS{J3=s<@dP}bZls}H-+L8Uk{1Ah*={R%kD3fw#*+K}dKP?~W2d5QVr-*AjW4a)+=-@7SpCHTz zuQ>r49@52qb$SDKAeQkQ>8*Ty9s#dYbJJc=U(0>bn6gIoY?I>6EPw# zC4;Z&K-+|-qeOn?b1IL=eOIwTX>WSb!Ft*2yuY>F9S17GTx%*`|4~kOro{*#DJ*@x%u$W&qRO z&#eJ?$w;$z7$KY`HH=FNy(k{M;3f1^=JZ|Jg!wzL2o0>!!h6t6Gk*6$E67Nnk}$7* zf44cYC|kb*zb7cFtH^CnxcaqP|4H+s4RyyKT3D~DBOmUtPf%x~8}wtX+0iquL+3pWGAU}36=mga*f zvYA-IJ73_1^7JXq-$u<2FqU^kq+kB;aBO4*6S{XXS6NFblV{l&I~^>UqN7Zr?Fdm5 zw!Sa>cdi1nDRNKI=@`bIr@gzeOH&X9HB{yjWcxP7Z<2usNIL1cdh6p@QR$3)6N1!M z{Qh#B%gk|L4hcHb?}VUt_{6b)jE=HvuBhd)SC6+tKO}lFz`P_7_k9_>*j1!R6$f{( z7sMTAE83keh4%707=qV7*L%eqq`$Z?&&as5Ha(t$pML?Sn?(*vU{FRoJ(Umm*LZX*N$*mh*Kn0cZDj_6=18wx$zXa!X6IZb zRSobM65gO}@t5=_M4zD_r^DPR3FXYcTK7t8Qw zTH6F6?U4I4GbnRnOYt*peGUAbx;!D#T$Usax?rwZT|CMU*dYUGD!p3f&!q$)2Q+ln z-eH#TW#qi)_m6FbVATM@@ulM|O0UcpcNOd`N13(S6X!yB*}L6`OSx1&uY^pd1~G@6 z*I`w$93~gL{aPgdYG$tzL;Ix-zKNRQ!Mykp{`XHT<2_C!tCI;GNFRLCOqAG>Ww^nO z5Ax#K^D-cRegyqZY{O;%0W6FGad#r1|Jlo1OU@V9n|;6}2}aLpmlih=eKo_xZCD() zMhUh{0^1SEoQH*_x^}W@cd!vKcl<%Hx3)IHKl1>m9gLcDiliu*ND`@Z`HJaQ`#zlt zK?lNoD+J2_y@%rFKslAGwlbfCYM*a@)(Tz33gG}-t#9B4SOKjBLi4+p`fR*fHEh&n zV}ws^vmC^sUCl}nJV~y!h?mP-iU8-7+0J;@m@is5Q_nyiq*);|Q-8SMi|}UQ{Efcn z`4A_s{fW`2IipP8?yV}0%|zgS(fg|7ePNJ?YS!Lec+OT&eLnH!>G&cl!mW-CUhV+Y z&UPAWUbC;BRY*sBUjIr+6m*Ao8+nlfhd%#WljSL~%`!|LS?1%4G~3DqR5L5KU-fQA zBAhbs+adRRXaTBADNruD@)J9fx6)_nu@8(ock^agqV1Ew`C*M7SxwX~$aO%v+Aj-+ zx{2unS-78e{a&`JPu#%kEgT{=I0fE83-$Hyd(}V)D$+^@Hk+eFu3G#RVg7W8w;Y)< zyx&SQ!9oD$`|^t-_^qr<(?m{FFfFIgjP6S#*70n%1_*tu{NVGqFB;5W)Q-5Np|T_w zxo+gJ$|AV=9NFbLZ{%>;97|jD+0N=?1N8dD&OI7jTiOICJ<$1HJA78{ z+njbMacU*e&tR^jFF>Qj(Ef}28#&WDKKOwf&>z%)+EUkohdcnhkBz!D3FieR6QSP- zmI~5zXE``P7Cg@Mbx)gt58hDmvkkt05qHoES>DAj22ET(78nxe^r++@5il1F8W)A; z3$;%ZyY_G{e}g#oUrimlt@!HG;6>cdHxIw+I_K&o2h7J_p{5gt39|Z=A@|2RpQx*w z3lmt-qQiHh8cHNcX$Ev}VtO?0yO$}!5X*B=vh__#9KI%4PrCzzRgE#W=EO?iTIP(j&X)CfJmy~dn$Q}=XB z@br%8L`vly;0Ak?!mdGf5O4#)du7m6gU^Z)CPIz=mBBIg96n%61^na225ZJf4~bpG zf^}k9u9vlegh+7CQxERQZ7e>XDQYFZ7w;)&wkOJzw~qQei4l{HRvgs1q2$O=Q}Bzv zS=yvWhmMpt!97`J4iNm0gO)tUbZ@}vg^TW-%N{uU?6J$V*hkE;J$@6{fL{t)>ReSs z=;WIh?!+!ToEre>?!$mpsVMu?@2dP*DEeaAO_iGA`mshTkAl> zS_&kROmKI*g3tI2qjQeIu~oSAo6$ei{-Fm^OEEln;$me^KPSf(*$G&^xgGf|Wk)1c zfRj&;naDvVOprrs4_W^8;2~jTNbZ^B~=CA2N6&?SGPLic2!@-*C`(Cgx^+sHrQE$h-JE~bX;SC zuOWfUdkm@hL)_JwY-~ME%^x)iaNq@+z;qD~ey-nO&~y~^f(L`M6@UZtkj@fnKU93` zP6P{LLO?H@6Z&3bGfCj|_h0_!o!!U;-$nvEV`ZX>-`Qt^ZAec4dGE<#XJoU{LzC5x zFfv@quq?K24TMy6A#rrqdEZBkgEIJmD$qc+0+TOf#Is?;8G9)K$gE;TO5%8;)EUxZ zdW7@7%e3|HIHnBPv*d3}oh}{M@}fhV=_v?)hJsB~DSfbE?Zkq2<#c!2{JwBG3PkCJ z---b0k;t&Xz6)PrY|UUye-{8W_5VqM?&Qn(44$-+L-3+{!KJee2$P)k-9 zl2)PZsWklc?apdCcvaxM@&&;4>G>1bji55{(33)>?#XuQvC4j0Q|t$mi)`d zg1hv3T~FIOD0?3d*tS&+(xOp<9IrVR@E2KdyOJT|_gn2Yk2s||01m9j=-%~WzqiG- z(|Pe=J%XkF;AC#NoBp&?D)RbGd;mMFnG#()T_XlO<1LBK0!^AeGvpdBJ;ZA~Is z&S)BZN(2~2XL+xK09!?n&fHX)X~(V7!4HaoMD3dSAtU4Z4|MtiK|y6$off;lpZU7y z!kS;{c-cPNQ@8(O<6Qr=LljT{T2xbVqBfh&BTj$qVL|kS8a9r5dLiJLneQYaoZjTA zZ=1_#6($XflsEA@DrAys{x^hw`lp|uf%2qafKNuO1=p*$pXQ9bghwG}rL4Wj*Odc3M1fK;Oq z+)8mU1eglLlyTr{%l91<%av`SA9b$zAq1F^VmVNx!jR zm*-mU1l(<*lXG4vEhl^cK7^f0y1YHaf*n$t93@3h#?RRN=!jFAlGSHCe5(~YjCB?h z*Z}e`53D|aHn9F{;_+bzm z5lePQjd`!nhm))Rclh07avPvb3>ip;4Ah=@Dg?7wYb~e$s>Sy*+n0!1q**7li3-Ow z6H{O^Z&n*@UMZ2Ash8!8f`Cz^=0Rx74_O=UaP5F;<#(>xzXL42^0ka5uAcJ#=%q#W z0?;*)UlQui%W_@<^83RLk1qefrv#y%#u>ld!g6MhQo)g`589^{PahPa{yF^b`3{V< zbdHp}NSH1FtKsVs4_P3;-r**|g#~Dl%#DN`xq&TZwbK4#(>s5YA6T)X+5_xrAwc$U zcw#VNHiF%3$VF0f$xcIRNtB}t3!-m+Y^uzc0p=@#c$3+GDe$yiV^>_)O$L~w?m-HZ zX0LlxmdOHK$fdSP5_qRrJYDxnMztkKM%raVTdUsUYTcIjCl29dezC(dDhJ zG{epnS{bfAYM>ba#eZA8d6x;lm9 zjlu*E!*B9XR84fLpq_;;bdf_jFq;hz7&3i8`Aw-IyR02pC~cg&dt6FygS8YPX>t2O zkqlW%bh>)X5lj8gdN)IFyHdqe$wv$pqKG(-B^}fq=>Hu2vvT@As8;W{P}XnSy6e!~ z;kz0>c#Ruyd`k6S|Add3(*De7+6~;~^PIl4-1U3%RQB%9v@5_;cVwBh`=~8wGy>{W zTFdKo)R+@R;~7wRf05eqojZ~S5>Y(B@eYm3xOazkrKL0zFRQ?R(RpJ24W_LW8KoxT zUDt1yD&QNi!K$&*wHH=z3Bq`JlxHE8{NN^SOuP%QB7Kj4>7~B5oEuj6XtLr6kAr4M z%Is2F_P!fXq+IdN30ssHNkbC+!6R7ygK@)bOzu=?XD5lSoWXD6;KR0UM~%2u_*68| zN+R$6$GiJUeHPcy1-zbz)@DYe6@GB+SlS%boxn^iK6Fsl@8e2SIWGlK+oH*x&m74y3+E6E8c#UCy^HQtKr zXF4dIBD7p8=HtO3*wxS3_=H;K-+=dtPuItH=+jKTb1JXLW%QdUKc!8~TIGkvUU#VR zK${_XG~B6 z>Ea*`w%+i*d38wdh}CZ1FKefD2Y~Iv-bQf4RPj7tEK|3dXFLb#k|WZ*Mx2PPzhpTC z#jPnj`RKkI(t_^CGV!%iIWo)mb$bA+0mHXM`YCvci4wHu81CDhks(cW< z&cx}z=v-dYI7MmcU|s8OE`I@?o58oqi~Ct%d;q~d_fg&W;0zOsEJq=8y!T-XTxu(_ zx>EGerCRDKo`_)`@(FnZh{sw2c#XJi{o8n=6c8UKW`}Q`3bw<}b1}%mUCoZiJR`6@ z8T*s0W!R9d+79$ORJG%WSn=F=$DKFA1efm~%L@z*@a-7j2l>##WG(wPsX=>E(9U)C zZiDZoJb^?qFl?B5E>iSc_$icdwpvtUQz$4@c;5ExX1MGwf6P9yeOO zx1Mcss>o59E=CTNw5SIpYyTauyFEuSo9Vtlb9T#gp!-&%Cx*8Tm<;cBSS z3p5Uqo79n;B)CQ|{Fh^4OU`X)8;2jg8Up(oh=Uvh3Q;uuMRH#qF>2)h9vW*&@ zv71TAFnq4_U$l{p_cc7j-Hpx?va1k24?znOc!cdzn-B+zaA_1gO?LRQ`V|0 zh}s!ABkLh@JHjIW24p}^{D{jF7Wq_#GVM@%EdBn=w%1}i#GoB-t{-}!9VVzxSVck9 zs6zrq9Pb*PKO;hQ=QA_N?s>xjuBE&yM8whwR_+J1I{d=3d703--6>AQuADX53n`bM z4!2<)3J2ZrwKn6yGhRZkm||`Cw>g=R#rQu<1I<=azF;A3NI^)YCI^VE5Ele1gcym$ zZu^Jg@YfI>+64xmwqEhur{2?1H+|OqZV2qeMBKW@ZQ)9l<6j$xC-dH)vsPcoM9XeC zxDkD7z}*Kn#Xiq|G8Mv#3?W8OELibkj=;L-GB}1AZEuN=ZSp#xGT~vr)KW6{vP|`K zE3*v)fC1CmM8%DNDo247!55{}(%FgNaXRT%R%8cp-EOij7?6_n4O=FDQJ89$C`B?3 zJ!*wVtxE)}Vin}swLI#}aD!*$15J$+4GQ)j&)odQ^4=??Phos>1hnJX6Tx#Jkh+GP zXR-^2G8<&K0^oOlgor#FKL(4{9_gj)x5=>}<(z=aN#JGdJk&-Mj5JnnmI69pXvjf` z;>li>1n$tUeiAj*;fY*_tOaDmXtS4OsVc{%_Tj`*Svb_ncvUlmDSS(G56X%rfz+rS zaS)Y6vt&oxL8LPCpDkppW=R6-PCJo<3}z0AV9P0wV9iinthm7fMy>sPxRjCMbXWdlExsf!@ZoN=Rf+~CqJ&r~?ynsg1NcUronLG=*n*}5p%%?< zBDKQ)oIE&*iaW#}lUwj@CZM#xT*_{XEYEVN0dAInzMnb-td1Mpd1Lltjg29TtuW5< z!EMoy2DT#w)3ve1#AC>Cgil^m5ZZWfMeYEq4bjJ}m4kG5x{&8M9YO-n#0`FnxpQjo zwi`{0x0U7<+h*-2$KB6I+Lx+0YImTpyzO2`*9!hLBC>L;A%U-r1O0E?WD_RwS z;*S#fugFy$R)vQ~-7G!}{i6cGsNl9;Ok7ZKTe^xNe#~DDa$lDq25CG;t0ee|{!nN6 z{s0cD-k_)Bx1&HMEvp@xQZ~>5V~%{pRC#r9LG2uYoZhqD@)S%tj(PXP!XV)vQMe-m zqU%HKGAI8+68ISFkrls8d>&x!6=&=pv&Nb7exrW&U+F-Ef9*@Q4#COcA2QuGti8>q zxQyuUIC_cS&e(GLaJ0(~x%n459K8mOe?|p#LRyV>O$`TcLI>*J-*CcuEl7i`K*kCt zZZo;6czv%x{CwSCtL0x%8%$p5}$n&TB-J}g) zcmX||8ox+Mnta+JPWgfZ*uh3^(VKzcgyyWF(r{YkIhR@D)E>|TT!}#hupkD+y+?-t zA&dd1sSTN%g!zGcy&cid8(JRP8Uzfx5Tjp^4$*Or2>1bvmsaC z_1j5-tjXHAp2>)y!q?}dAOkr>Cm&ucJ*<{$YvQW&njTA~Y>7(ld+$KM{+w^`wWT2SMUsOPM^q6 zT1y$ipiye*>7iXE-XSf>O3CEmaFC8+T`3-;g#UA^V@rE+`xu zrVY@ajsY2yAO@!GMes(MK^HGLeJYl%6Y8juW;mx4+I&mrTY?T9LMJC|FTL#N__hGH z0d2j3q>me8^W<$IW3S^z9o}NZv5!@6vKYO`{XpYtPznz+Q+gRbtS~G?8IOLhbABcy zKUZ^;{tGTBZX_u2_pcORFU~kXE?n|E{nDr zY?VrbipMO8uk9IZ;YL%zzR-G(I8|Kgpx-BA#_+~O`<=`Y7V#Kif}S9+G4+HHIZy)u zdbg7zN>Ef-yTb}A+N7ATxY|_-=1Ol;rL0IIi8mML-hV%*q!r6^Ef46ws?Z&-E_UZC z*#?w3wi%YjeWFLUv7(Ro2JpjGlE6wtr(O?Th1#SHdfo)5;Xg?9?_tkgC_~>!3~;5Q zok6vD=ogvbl-^P=_|$VKl`5On<|AfNWb+)G{bNTt^o08DlCk+OL@eLc3F4K+Yu40X;^%_B&%`}u&)il{s^lTUVlqKWT=_t8R4F}y|*h||!S(o&Sc zU6O%w=J>Dx#&%YM1<@m_43&3?{*`1!+r`1YFLe_67IODmVky3kH(79vNM5C(&Q&5yf-dx$~oN0zE=eR@W~g~udn zSG_iEP9fo)hR}@?=msAuP*`T3@uq^o2H*Q?nWu9sN;I-z`2&kDT{jj zcKFM}6Oa!t;%{*oFd}J*Htd1?i zCmN6#WtWDrCT|mbFt3Nw3DjZFTk!inJw4QVV2AEU>MBy+-OQi>!55ptL;yoycugqh zq4a8kQh_aKJP_&ybhk~z=@yv&mjVn%cj zaIA_NT`Iv!hD*0OBah>BDwvMyDZ}Vso$Q_~iEis$4zk}~L61m`4V=U2?&Kl1#%fLi z&Sjc%4!GAh_uAjW=g1@pfzjSH>@+KLS^LGnp%`Ry}HrkCs!m3 zL{tJqQQ$w6J!uL=*-z46cqt}>y9t9)Nlv`qTgo*$Lb0l^zNawuyvTN70^Tj$eQAiY zdkYrFet$l0R+0eo$nvG$TXN0XKLYmeM12yyJ)`4m>fK=rZduwTx3 zX?biL(F`i?{sb5%ek1$>sISqX7wF%h)iICtXL505ZaI{D`5dczSy9&O7}!_Mpxl$(LjzawlT#!1yB$- zq8n9y)336?T~dfM;`?w#@hvYOzMuq!)f4k|8)}Av0B8Fh2c6tqYCkR^;6m$P>H9hD zIQh516&8+biI`s`r2+t4Epwq%?@V)M9PPLZ15p9=2BK3z7JR?BacphnX1@SpR-E=Wx_ zbSd6$ce(TQZsW*;LIr&k)3R3Qfur{bE}@=YR-`J9pzCV6X!y!I%o_gb{Hi-qk?LNS zDhq@4o&8M z!At)I#BCP{(J5Hvx2bM0c}WhPzTb*4Vz=V%{R_dD08_4pPV0tR0nQljx-LnbdWU;} z>TI!kFNLk7VLtK*%do_^*^vyeNC^{%xy(#L+kJQq4KO)2%Bjd#?Jd|Z(P{L8p2Y{5 z3ibj-{9Y1UPu&m6iNIc6-dFmuAr886gpPzoD_fxHGTxa2W%EBRPr|q7;oGv*2Nl53 z(gIFy+m8fw0cdFogRiTiTrEZKdEgzcz?3vA{e*onDj&R`T_WdV;VN%1sswGn$JGZ@ z(1UO9MSz+pqnsxbGf5av0;OD(s%4iN2hxUU^Fme9hLQn)84?k5w=JPjpbv5)LnJj{ z8|91+!3U}yJBbf#deK`Upn93j2iC!X)OYe)pM0y_a@>!`fW`+s(<1+Vaz+*cLY{XE zxi3WGAjg3e6yzN5ijsY~{|&@$|ej0B$4r;L0Z$Pqy^iU^ z^?fwYB}1(I8Xp5h;KEdy(fPZoS~mM`)FABWnGKI@VPhd!Edbq4qgUBmP7j)Pf!YT- zwZ1PuftMQqQ*xL2+Ryx+p8Gxan+C5Omkm>p3i;{prYh5Ix+O)3qwUR0|NlJkVXktB zwl&ve;!H!h5dp$=emB0k7J!tdK_{c4#E1$nii!-Oc=GHwMvqv?0~>a~9Zf}OObioX z^Bf@{prZ)VQp5VT%$-J+`{eAQ_2RTr~Pv>{L%V|pNHp#2Dj^m>$71U z*W3@(YLZ_$HHSze87U{>&!~_|H3?c^DGgT|yUDk3Qp1$Dgr?cFGtY?fS3n7%%cD}% zQA~5%^z)9xje$edUH`)+`{?3EOVON5laIq*&)VW#_<-Y-(;n(dVNnaapjlBpY>6aV zzvWv)%QqK%xQ2BAm3)Ix%ln#V{)yTKuipoeh&oREbi^|_2)!RUw|m`f+Q(rT1;1J@ zzg>+yX_?irP7!#Q{ogv^Vf~r4%F@+*Eh<1r{pzK)7gHzsy(G0N029@ zaiD=@WAM8ZGxkZR;W=4~w0Q?*0DWfQJ&a@&lShMX_ctzO zCxgG%W-ElgH6-PnboMuFJQ@75+cGA)bK+DI#WMIsI-Gki3Ux!SwSutvRyjWv+qtvj zw<*#5#)AFTeSxDUqt*PImcM&bgXbwu$Bq0*5`%N)!ISH56=JCRJ16r8j{7I0TTFyQ z&f?P>PgJ&U9nzb zxluU?l(k+Ox+-3@55|vGp)X)Rysg-_DEe=tx@DbhisPg@SOF0qx>Fl^za<(^~ukHVX2=6E4hbpUkJk0fJeD+JQ=v0VZu#YO_a26D0`g3di&`yxaqCk`6 zGBvpJGk1r%8@pxY(-i9L)R38m{rlPGt#Jiv?d#b9uBGF_EppEPkELZlhh;SUs&JXO zVv|}Ot3efW>*cER4bg*ZN?a>H^rqe4 z;oQo+xk@Q@ii+9$q|&8^HLfn&f!#& znX*{v3thh_-3~1)>^tgRe<&t4yq&Du2TxFr*W!K`3P}V(I|2@2OKDM`j#_R(JBOvA zGaC2D8rC7%Cus+`L%pF`mdcyAcM_<^Tbu8%!|vrvV&H>z%UBJ*!S{bA&185kiAB}W zx5<_<7FByy&OaD;4$E(%9c^5sGx4SdA5JA+4b_n*TIeXme#h8#`PDbIcqgAMqHdA= z_g(CktG}a0y^PVk9%7B5gC|u7muQ-(DrC#+jFSuX2jknVTW;%^PbXp=io;)qUJx_} zx1ZGZ{oGiLsv>U8QF@sDBJpnQKjG1@!lP2rH(!PCN*^|T7QI2v@{QMhC+e#Yl+$^s zX^ccu91qFbL6@rjiTNC1_lqZMG4io08CD@v7yT!_x7YP0&ht%Eh0QU`->FFjzP+M$ z^^dQj&rkaItd)&^KluJJugT2muM#8sE49vBfj;8tRg&?h zp!+vXB(GBooQTGoLt~6f{CXKKhEkiAVrP8)Md(}<$nggZVrWIxlO#TqzrLS-YW*>0 zP}=3_$@hChm^$jdR6XRQ8SY)!9_+9?yeZh27y(>+(Yj1tLpEIL$G2Bdc=ke*=Z{53<;n zMeDb1G)5+a|Jhr+4V7b`o@J50%QsGC`JG_`yjy3)L(N7FhJiP{`QZ8XP5 zGovC%LLwP;4Dt7t1l6CgQ`>#l zveGc+6m;>6hPdThsI`m0;HFy3OZ9sfzQ(TiBF-v}D#$AVzpu)d{k}^pXx6Z`Ey-W0h+9a&o2P*BVLSJ^amQ7U_* zYTuFE9W{kg_@m&+kT2Zw;_s~u!)h22Dp*dmc;ohq+({acOtrK*%E-7gZP{g{Y%2Du zxPRiuF`;#M-if^W-4WMU^XFkP&qB^Q#gRHOzEd1tcNDTr-&X|6V!lyoW+bOLBCiL*0OnVfCsxmIhbQ}1tZ_tEMh!zq8rxQ{ z!d5Oeg1T8noVP5djD=8>eV;`WEe>AY|2>R)ExmXf-Le$1GpHK-OM2yr?hrA95^AA^ zcU#vMAR-=iKh7gz^004W9g=XO{#i9twJ=ynw0r0(tp7E>vHaY8%c`kfDlN%O_V-j1UhR>k`J0C*i1DfQ%3JWNyKjv$9x8)PH zjM46FNQ*E2ctlWRW>ZcP3nNy5TGzT0CuR4cn|gE~M_G@55Nl)I#2T@P+En|IQX?n| zRn{Wa96sJWG}dVT!n#_(xSl=9LjHvLC1a!9>{Y|Sg;x^UL2{f#T5`BxaLh5q!EdCQ zAC+k5|0G>?KvQ27mJaD|5G8~W64D|npi(LdLs}Z7L7LI1luCCfB?uE#y1Pb$l9Hnl zMh(XHdvCvg*nRh$^L^hr@4kEQdkZGeqC%C9YpK3etLbQ~p2JDu{jefjomO7edB$7sRzhx=`tYp;y^yY;Y}`iwZ0%+NZKZZr%fa9C0Q6L9s|RD2 z`M<#{yGAvwhcVeL8=o{Mt{l*nH};|BFV}Aee<_5|09&C`M1!}I6W?%qmaG3T%%0`w z22^GQy)Uc1%ED<*6oXWRwVRt6k$NpeBaRWY!AEUmenv3a@<6ec={5MwW29Z2Q4xEz zljRz)3;P>Gd#IiF=34oicc_{>UJq%N;{UPjU_MXBjY9jLKrJIsJr@qjOJc9Xn13n4 zYJ!Y>mVdR0C}rV>#`RP`b-W&Q-!O?sBqMn1E)C5I6sPl0caW9mQ!~-EYD1w*iaEwd z5o`WRunr?m?{H6cD$y+5Z@c&vcRn9ENX=9ey7SJ;;b7F{x;$*dJaurDteKXj(g&M) z;nI|SF=+!IyWz6o)B4y)0oE-ve4!WIO>JSlJ5Dd#@EzqC*{ z^J6jWcz^0Kok1m9BaiDszGVA2iiX>lqpVyOx)}3)IUx&6n9%QCJ_kKYY^sO^^RXj- z$j3V^i}bm)j6*0!w|=!#QbjF) zM7lYplWDnn+-deYD>Yd`SweedgOwrEJ?LX68OoRPRHDAf{j(|N@ml|!@Z?iP7-BiQ zkxO^I{Sz7ivs|j(HF*{;K!O}@JZL+0cV@Pz%RuRy1t%6uPx8PWC6K&<>vEW+7vYnX zKusnBd?6Ka5tAB9i|0F!=IRQLfjdYPQr8HiiSs!yWKz><1UJ=dirAB*0hq78uIf;CoUplU(SEDlfMIRK_hZ{yBU~dLK^CDw%Da*3= zFc&oYQ$xT0z`f#8F!tYWoFjFF*}w%bog$Ij=ZbNG27g2O1c|7$|CFXRsO>`=RxEl+ znfpkU&n#oUss`$64sk)g$;0}k4Fi+t|556_U?&Lo`?`gZ(?j?1RCF?>9CnpFRU&s`#Lb*C!0Hr8~q0o1d+Dk6hFYnZUYgv&^!OG>Cs zGRk$)Z6n;|Qz?AL3z@KQzpC!)%v}Da24!e+D;GI`uss)&h3gb(S$;>5(g7a>{=f0X zwszD%3+SG9MI*}c0E(i~DPGX%msx;RT*pq3bn)k(}E^@Uad=LhxmlyUEeEMKTEjXSw;-+|8l8 z?dwXms@Fc{ykiq{;La(=)S**Y<44O zaj%XUj_T^j#`&%F9=F~o`lGUsy;Ji&kR(M9xR+i`T^w+JtqK`N72M;6=I5dsT9o}o zQeEiFe@vjGZ?DQCRNp>AV!RV_2K9H&T%e6pXj9tLrJPU7#9Fr%S~l-*n-MA^^HGAx zeUpV$C0BR4a`{fQ#LnDVB__?TL!`rRD;WDAc!)HH64;Ff4hJ{y@jx4g(J>mVzYdLS znN!5wo9$3b5}u>c9fwE-*#1jNvcnY%^Z^3ry}gfZRd0+f>qEoLYL;2BzHA1-S;oA} zJwj^fgca&%0HuwBYErGIEEEsn4!14u?Tk8fKQ^kmQaUk)b@gBaZz)3$5T+5nT5tUrwjooYE9%KAY1mC)b#Cdhd-RW%c zW-~w`%Hu zCtv?@w&X6>qx32R43a*0!;c7%Fn2UDwf-Fvtz1v+pq$k%?{wQT2?BO>b$>#Co&`F# z7pRX~3cg$1_QVaFAh*LrVyQ}1sn~K^a3WpnXEwmLy6#6^4qR5%&G3KD80<+$f2AUB ziGp_Xp(+zgoEtW(jF(vkMGT#oMx);hXzVdJSdOCRM0F#&gcNYQPrG9h+FwOAq6*c0 z+*e|{TMOI~Er%LU=dU_hj0Pck?6UJoLr3A5NQ7R{FeV$*&=_0}+%r$uweea(m)MXJ zoD1z&XAhxJv=nj?w%h`X-Cnr^tzSSNtyZUv$Y1HWhLnKqOJiO>jIvQ+XO|b->%um5UAc zo#j+4>dX+de$F(N>F;X}879$k`@Ykk1GjS;NxiW1F)Q9CI~RUZI~YwpjG)}_esLF4 z#3{FA*rKC1dwG33I(Lq(DUp4G)4<8C(K=F~A$uRzHkRx8EsH{wYQ^w2k3rfFrgpd) zZB$XP32%oWace~TXrJa|H8U=S#q;nqRbLC6#-UyYz}qfS6$wa zLRux&fKzJK)dbp(u^|NOqI`N!NBa$^g5CwdT3Ay+>n3b{dHmgDAJ|@Tf?HA5( zA?jsWsx`+W0vK{Fi^w%ZF0RY8UO|b?KzSU^YciLLM6Sib4_S~2=04{aAqeCs`V+8T zXQJ6g>S(hofa@m(u83!ja_}%5X-VA>Q!&)+z z`^wP{C0eYNB5-evm%PMBt)cl{Xsz5p)`WyLQ}`hdavJmcj$GUqR)_)ujTUP0l{H*2 zfhsPdeaz3IfyvC2R@B)oc>DxAe4t4yip)}7Z(o`#5WTcWCP3&JV{~2eM}NZYb5IQz z8v9F#b7hGCyV>JMaNj%>YpzMgV2doRL0unOZc%>s750p&{4fh8QF%^2erI=BS{a#1 z)|j|0VIIB~Adf2))xM4#us|~-RDZ1Wo4XS!v?tQ%3_+q_7$~;jtZ@BW-wtoV55FT+ zYj=6fL{eGX`(v_H*I3n^ZLBOK2eM$ZFqH~UGNJabLJH=7=(;5g)1}4e6=d$#W#&&4 z)iTSzCIk+f)x++$DbGWlghfR&?OLWhmt9v%{O113Ji^Wz3qs1TyF2=^#H+bfx9Ejj&vX-QZd7kqGpW`L-0) zj|2y2H&|H5{Bq@5j`UI{VFCWB>%fRnD&hTG?dTfA7Ju4Q7fGL2$l@lgCi6mW_?S3y zIyZobR(nkien^MR?P?=reRFG=a6Yp*Fd7N%yA7@CKqndwPX*50f@8iTQiBh;d_oyg z%T@y`Z8&~Ha%n_qy@T@`j)V9329w^ShN9hwSmnfmF0RLYK^t=E3{L>4A|$@b=qCyHie4~mD#xNGa{4px6%qpnZ`bDYFmYS5)@A+d%8I6R z^Ji5=DLWomvT4;t#*IMc?C5NX({%YX(GpdNYA<^Cv{BHv_jY#(YU*M!c+eGiY|=P` zUQ_*@m;ZhVKI4a2JX!hUuNy#Y;EABE^Wq%d7>|T|eMIG6c0T@@uR^RPrvN)B$=|Yl zNis0MixJ@E?hyMa&ts6agITStab4Fs4ttT{iIrykak$fXo5P@C1f7#xZy}&MObTrr zMGs%jers7$$F9KJ^<#?}ExQuWq8lu_WHDw!t^N90xZWyF(gV|%mR&SR+67Mq2__L9 zgCPYN;`jcRiw*(HWY(eqI-&BwRIp>21*s~%K6TqHn>O6?M&(>=>LdbZKSN9VkFB04 z$`rA$0wZl<-3eb}M#^O!@Yf7JCNL-k?t47PBM+g(We{(y)_xP(rFrEK+`bm23fbfB z=-M8NxrrPo7Be4Q=`DpXZ(`)fExU{`9Uf43fz#NZ@UcsTYZj`?RwpMcImZ)wzoo^M zafIwLYY~@9=F1Ulz^0g`>Sg>+^V1wT)FlaZpEt;s2{w0S0C?_MPuqf()XO_*J-kT6 zG+9QHBFT<8hP8h7m%;ljkrIAAvwn5-)Zyyav-kblk$$hW_oE7(vT^^4n|nX&yO2R@ z2GG+k7n4-jdE?qeCET}3WXWfD;_}=5=)Qqe;o;Qw0;Mc-_od^OWf60l7(>Mtm)t#5 zmecn47umSA7d?SVsytE5O(<3_;cWtQS7>1yI{M|w=2Q?Fq<#jCV$HsA;^Da6S`eo! za}?6mlx5!hYJkjWktpVjeIFAJjXS&> z<5Ph<8Lx}t%9RG!=ofDk7bQ+DO&Ji;FIW{@kS9Luus{+6l?}}FrvdM#dUk`^bqo^s zBOLhd(LHEYFS>`uykE4yiwrWq*4X0pdm1G=iZAfMJ%DEm=#TWS|9WVkXh$S%qi^bn>$c@jYD7)o4wHskBRz|&J2sg@ z(@VmJL3$LOa)DSYbg~pZ6-3sUVCjQ>x;V;zcc2kEcCpKU`sd*ymD!0w@Kt7HF6LAZ z6;Qet`r=dpH(jl9Sa7Sty-*3K;jeO$Yt>oc{NG0}AzOMA>1^ zy`nTnEegX>!wM=N#7uiVrI9T;+Xuy5s=VcaT#No(5cYk{-?3gZ42uW+aTnTodJ%Co z>@f^#^8sau^Tx=b|Kvtbnt5PNb9;4&AHU7UO<|RaJ?)xFqPk3agrt+62= zrf{xe_6Ur-G999sZIx85HxGj9Vk=wUlV#`D?B&YFp2|b~`_Y=~tm-TaB1W>hEOv_89YyB1pe}g* z!i#^SS)k4H=pZXq>0GU9Is@n`W;rGbMLkvu_o_!#Rv5YQ;I=Q}?e`H0;&;BRE)a^o z_Q5VT`+N)zsgg5zf02V$Sl^PvvKWXFjn`^s^yBk=+!VGUgW1{!ZI!|Y<#5LzpyHQv2w*>bj#1d zGoI8n7iiTKnzLCZ<$~vSD|{5)ruurNC~Kc&fEO9qp=Y+DCISOu`Ur2=n8d%mCC6cdqhIr;srzs6!-b|1`kP9hpWF zQ|XS)W<6SY|JW>4fGoS^z|$Q0$7PO_MNS@<9kjn<22LhF7<-0Ww`TLgMzVtxr_ zS@#{&5eSV>Zr6gh6YS|=IpF+p14C=B$ z_vUJIwc$r{?IOlmyqJG2+1=d#+<_Uq!i$*cZ>8`x+3RZ%&jH9o@B>f>0xTy|G&f1jt z=;U*GTn%$E>Z*8r2(zYw>h|^U_klIjmLCu1quQ1~B2<4`vD8d?i9wnc(W2%Ue%gvn z4l@-c+|n#AP{2(vN=oTb@WU9)!PEdSMkUc`JU zrn#4C34C5tRpIYXmDmU+i@Js^-iw;~n6%samdtVcz(mBN2s`*b;$A^yP&b2K$-&%` zt9GO+<5|H-pPJ4mE~2cV?fSbOnR)wRnGWRYOE<6$Ieu5?_>RNfWC@wRZkny!el;y} zkBO(Aq|k0Mqi|};yoAR4N@)%BvefbE#9q-g{!Q`;_ph6GpK=_hJ#*3}_s!lECFx`y zUrpvAdjCT7FeHO;&1uxxL+8hKMNtUnazD9oh0c9iU9a$`RD{Qh8>3A#OB3Wmi@;k? z8Rg8Y(1foKl&6y#Z;Ng66KhW@{M@_lNJ|gXf||q~ZM?cWj?L&C9ZY)jB5rhp-THEk zwi)^Zi@W7@S}F$ zchH-6zFB0qlaTjIh6H$QJqD!RXK58Y1B}*N;o85(AB#N(wjG^kr6xjA=FDe z?au7R8X^wkYU9%XsmRGb{~g1a4!J@=Y@?<()KvVWYVjv~yk zq*H`rlT8~@sS@_xPgiF634M&ShnuY&%g*b(c=foijA?A-2`av7n(`Us75_+kU(BPb z@a^p~gadW?L<_B1-&^@>=Oyx=+F!qqlz5im#XBassi>KyHy=3}k+k=MQm2f^H?*OP zg5lL&=%I`GhQzO$Bi0u$hJ|Hk#4kQoygtU5X8}J5kz}}zv;T=YhuZmUtv;tM+Au#p z4ji+BW#3GT%d1jsW64x^q5k;mLHER3;uZT>q@|*2c?&h931&ylygI*2Z3#mgWyVXc z4b?OseqXFT)8nB1`1N5J|E;&gjFW8N_?$8}m~a|jm~UFiT&s9w9eRwN?W$cZMql^0 zuP~syHaE#u=6-n2fH`PfyrGCF)zR3B^?!cAZ>lFtJTqDy>`nEUAW!InYmi({+h*0X z*q2KK+iFGBiPMA}tk0u=t}Du_6&yS_Re0|qn3GwrEqips*S4l`=4itCstkWAJFj=2 z!=a&c_gD_O`OUOkmnr)by$`GYXBD|#Z;W0W&^Jz0NHqS+@!1T{%ZNXoP@f;IR}d(v zMbOE17DvhZiG1<-bnV`5ya&0%7j0tQr<(%K<3r5o=MxnIh6zssrP3!8#CdC1wOUxU zwd9gz_4945REEdyzd5#ZVuJHD9~jxaPP8w=k|;|C>cMU)AN6X*=`Qbor8SIaFgFI1#OJ%k;2E0FTeR>P}FkTa!d`N3XF^kY5aBYBhE1AlCJe)hThdFSQmXa3w0 zn1;}pukG}jXWh2360F`AFfn$sHLE_$`?1K)u)IghvTxA>M=5Z!u=gA5Z=F)yIg+M3VL#J=e&VaTI2dH=vbPKS~`@e_}{LI5}SO?rxvxgW1Vl*P*NA z`VtVsOLd9gr-zg(VWZcH{!9?}Fx^qJP*XV{jjRa_<6rwapzYb^I=_|US8!-qmpwuH z%sg)qG1G7_*1=SApfR7`w9ep&OHc2K%=wpQ>RW$hyGnwq+RT3|GC1xs_V_5hdO-Ae{q$81!OG&hbsQRD+99p z!vt8O|NSdap*$2C4|}fO{(ZCR$rye9m&hRctIvFwYbxHVWC!Ff0dMnOXL) zIv*xo=SigdTd!ndo+oX)?o(#>qQ2yuY%qZ%xQT~tWBuJ~Kz(TCfd$2T8T2Kv22I#qaGBDML(t~eR@<=F+Qrb-(u`zvj?tvR*AAa96E%V1hh9c@M zC*mQFc0s4xiZabM>C=Je6YOD%y}YRjlcmqrRhi3~JGjymasv87I6X>RtiJ%__)v`r zW(kQDW1YBrasyp{<3p*$ndjcS+i@;iG#_{*%66YBO6H4niH%pw^^FrpeVVz)?J>_% zwRSx^7^>>W{k`)WR@Jm_`fM(7gIru1g5Wxbt-&-8=O2*P`CkM z?0h~n!{I>pNc#r+@zuBMWx?;xr?4aOqOii^0etGec}^&!Dmh1wug2aCqQN}&RD5;+y*jp~=F9eQ(~_B`@B>q($)^blk;LOFA_v&c zj#N>7X`BC%huVdF8C!g|bG{_6$21@6WMHG#2tC|{(*PK$1=pCP= z)I1*KJQi>w{rfFl9yK!Sl477Y+}Sn5@Z?)CyZ`WMZvB%L55m;x8o2RP?pcv=KS$BX zeU0?H5xGqNURn$K5p+SOH)^A}ZF--Dr<_0avV+Dd9y`QbD~=*RW}067W{$3P=cpOu z_P_PyOGnb{Z_TBF7b~YZ-vmjG`X}5(M}FB>k`yqIRyBL(97jgFjt6 zhKz?8h0sl>B*BJ>tkU=d7YT2i5}7N*Gu>fc5{~I=!=HTiTpEdrTaUg8-CvnEY%(0G zY9H_4c-b;DK{ENM+HAY{QE-09gJU{J&G8<`_9u)vPeK`t5IWnv~fK7(s+0oWrWt&mS<5w7aOYt_1^wu`DPgvfc&*>i z!>2hmHT1V0e7g4M`!V!UxzTsiwV?6)f6s$fYk~yl^PU>sQdsmKz@*}CtrM3{P6`5d zSLaKSuP2f|k`}F*eB#o2drt+%eD>^@LFoGS>2zfax>|=rF-5~9tKN{{DAKLdTv_yg4WS630#67tq|m-5EU!pTg+IL*fBa@vsCFsZU=v{Av^* z%04K$7HCv4X;c<(?;YLyx}cP3RCc2Kx!s-rQ$3)N*&Ec zK176w95$87sw>M;>p9%f)Vp8E$1tMDA)0Ozsn7aWGi&dhqpbtq{rNZJ;O7G6 z`niQ$Co}bSq#w0+-DXU>-_QM%f^waI<;Yks5clT1$F9%1n8uC3>Psoz)feGfhx|>) zt-*UqYYnRj<8C4T54Y9MX5w9cm7>h_;{b`rCSs(|1|7ys@6Qr)_gS04P_UQv?%DNx zoia?xPZQ=>CqC{zJbHC3GVtccL--N>v(U0G^I=rs)CiI7qqazT#zVu;tMe|Il`5y% ztR*pZ!47WQ_oMe1Y|NckkB#m2RSvf`Cy(`8=Jqe=F?Af|lWZley0}E+SG+Hq&h4u9 zrado!cT`Nvzdv{y|7GfVW$t?Gs($I>!Nxo?i}S`1JvuL#6CG3I+NhS;=8^kV`eAne z)~}C;#&2adJs*TIjl5)Z%`knY>2W!7dFFGX%&+uO`0FQRjHqaTbJ2B~BtDs(zpBU1 zxRmizOa)Kt;x>EFRxy3kGmZQ7JFsDD=6IQ~|LCmYv@%)TIFQU6 z`_}05O+A9*38YA4w1&C$ReDd8-N{3qK0-m#j}fF9|HiXEDKq**z9D$&op3$HzrwHP z%HJ2;J&tMh+s2})e*P#MHuMa8Mpedc!te2ux^(`z{`|4lym`gt$+gi}vIaMt^LZ~# za6HFxWz`2Gr;*>sSGLbtZm*4E)Q`9Gs}Yy2NiG*DzkZ)CpobQ=a?rVfX+hL>Dn$mN z=MKN;DtCkLL$`5}Brwz@s|!nyMiU8+R;)26NBLy0CD>Tmu`ZE#>LYo1Gs(uU3)Eg` zOaJxaDMi_2%1%gg!-u5y&+kWt4?^k%h^^?VU!oFU$vVB)cx5njwU-OEXq)$|(H_0P zOJP}*^7#A3S|#HPsES?2{y6b>)w30M)$uRi&o-CCwPwHGVo}W>Z!y=8W1#GR37O03 zj@y>I6%f1?mdwES{?(T#(VuHyEALiM9ipAupJ*?+lxUh}@`D_Qh%Gw`DnA$eacmuKHgiuuM|@yGt) znNIC=pL%Fg!+N8%;-#8LaEa+P}){b6E7`^LN^O|Zr5tWF|Y zzbq9H>g|a{Pk$5O#>#nR-}drrR=|RP&k8mlzqs?`u&g7(h50~h_j>_5#S3VQF7DxR zWlNbV6AW!t9UXITFM7@>W-@+BwIOgwG94#t%}*1tc)9I^NtN`xw@5i9a3d6WBg(E% zXIXXLYcf~H@8+vdB}v#u9?$6aC&It;GB7s+QgO!Ceg{bp(nj1`?1he};{RNB)6h>p zK96y!p~b(=Q6*XC-dEX(O}~DR^S#CIU9-DuWlbUsIuG~0UK3?M*w%Y6?0PX(-UJ?mcGCRmSO+Z4cG{b2U1@ z3KgJu9+;~ND=v9T)v^zK8>7mx&+A(H2iV3U&Z%N!;vRA7ra4A`$lj@4pPxd_a{?ha z+tMP5n_Rq_e)D$qAkQ;W%3#R9+PAIGntha}VHfTzf>(XTKNt9)P2Lv&R1(#2qj=gr z{Rg2(e`&Oyuhli*uCzo`-2!GmR~bstx^IFmHn%?68+kH$3_HaCrma2Al9+_;pXBNV zKcAm|_Rc|4m&4}T-%IAyW)y`(QlT`Ris6JyT-LkUzsPxyS-sU)j9&MGUThsse)&wA zG~r+PNc_=^wczyMIGKR0@_BeaihU)PGMYr@2KP-%%5- zS$nLD)pYltYJLnvflKh{#Z7JSVQ*`Y!(pb3{ zjk-1E@CiCbOC8+*=((Y*Y1AX#dCv^7X{sU_vG%sNF8r_3pq6RzM!FpAePpYlm3k=i zIE0g_Eko()qPJNL!cUx0%Wj1}r$>g-kV0O^>zc_AHcZ2PF!f=IK+ecNk^>fMLU9qB()PcgPpLnWW1N9zc( zIZcc92YWL&=H4R2#8Fy#p3;gnb)N}0>SaVd#qvFs6n*NoD?$<68*^(?zR-1RrN`A3 z32V0J9kFjRbzbCqN+_N-ye=2Xl=(2bu^hf<$&ZKw8|UL>_3Ad!9WaCp8tm7R4Zly&rdns1RxzZhC6H|_qw7EB=`C> zErUbp>5~>ilX-WX)h_7-Z-?!s*sz_ReEu4Bw;2$if)l>0GC1n9;zPV+{$XuJk&VR* z8BKEZV1zL8CNU(!^5gcDH1Bg(C~?O#tmQ4Lf%+r${C&B<_XxH5Lfnbqad?Y;n6aHSNSZJa&sq{I^7VJL zy18|d@reyca=EK5u+FJMIy?|0rjBf$lx~Q;yR=U}{{3vpo??ZywsIi&%V-^7S)XPD z-TN(GrG4dD71h8km`9UkUDTd+1J!$mh!^wgRvtkXb-||NTx#v@Qji`@AL(lQTg|(Q zq_DykjPD%ixej>{|`%PK{<;ese_fFL9{#e{RCnj9!>>e~8 zoyd6=WLdFLSl81KrTjI*r$?^w)*{u4J;e#FWVi7g^f@Rsidsukt=oiip@bOuNgMp! z0*Ei1Ms$eP%tzY3Qw>lky`26-?EM%{;KOONQFUXHc))?u@fs+Q>n!vN({BSH@xk2K zGj2~xGw%@ z$5bvIwr2@-@$?DRaA5@Dqe{Y@uJJjBb6wA?4d1>VyG-K!nr@9W!Y;3$?7qSP7=Ee@ zI%-q4Y0>}PB6!L+A*y!tfALI~+bXyO?ZcBoZJ;^mL=?P{zgXOrg5fgHm^#oV#nNwG zk5q)BV=k0~bA+A1lT$Dbs6)EypWk|LY2uk{1MtSQ)SiyR!Q4P1$S|hwcM1eN7`#q5 zv5jwG9>JASLYZ(I_7pp;_0AnU;<}wJdx~oHRYS%f@7roQHi!sXxi@|ggpI`^nEp1W zYZY(~NQWE1sRpEBhgKGV1nfOfT;CF*p1_AApl0c+?EjMSf_2zQFP}Y8jtJe6+@8|8 zo19An1cgB*?hba)Sq9$*H6>C1uY?Q0V1)C9&NKNU2r`)LQD_oS8;lWjItn5nW-V$b zWK98K$Jf3>DFGm5CwH;m{Q-}v|yv~tmDZioCLT$aKqfa5*E8%D{sa0)p8JMAf&+7Tnm8!qhxC+nn50z-GG?E!NsA) zls`j6;ey%()l{OAFv@BR0640JYV30>4`oR0l{ngeRsh+->h?~(1(bHnAJ2UIcmR(W zcpr~LrOPxT*|tsB>V-elo@V%)-ZtI_y4)-e1FJJvz=^xsa z-H|HrFk$lH4oa!-69PH_Yo%9it=LX9bHsxH5`zyWdsoW&ZsVTr-e2M?=QBIL235;z zQ5?M$YeR-LVe__SH?TfoLQ9~8q%kDbfpk42zo2Y?XzS6EkGc8wARX@qb6t1`fNp%w z?QdZRFTwC7+pv-MHegF(AWX27llJ;Ut@kypK#H+fS=dhS$;R4qzh)))HWz35>1Gcg z%h0=zlu6g5d-6#so#@JE-7#ZBVwkrKHQ)(H^XPgB8SpSaW%QE&D z>foLFsF{=g+Yb(d`WmfS?ud;xhhC}jAI&lSOi(ofmmYi>d#iwZ{=#Sr07`>+*VeC} z>t)*!_YP5;e>dJfGEOj0Z~wY2kn!%*wgtvmmigD83ROVSNB9JH!O|55;X4?Bj44Vm ze97c@P6szRH{$S8Vqg7<^W~KcV8=qidPz9mxP#Ez1 zUSlFZiQ{Xgt!?BJvS9~3qFVtEstDH3gHYRcsq#V0P1^9}bk(&bkfYiLP9-W0>qoW$ zPKUxE3=cKF1LV_w!1dZW^hG}y)u&wtXh^I#xk1p(V*fF;4j6p^mR=-?#R9EsYLNS) z%ncIGTG{|p>Mvlf1`g~%oRDD&b0X2Jn?4hRS@cKY-}y(dgqLr@ED{wcfpZ9~A%AW` zSAbTkmr+3YdzrU+z%buGQ~I*(0ZM8n0-&t7K7>pHmk>*h3v)Syf5j1MRC`{Z35;>j zgBA4P@5;mBX{|Sw?>bTM+(-eX*veRdQmn~G?=I6S_vX>kwimS4QQo%1Tm8t&8@KlZ zS-gjB??zOC#gHmj!Ph^HCj7jqkrvFtJPg!0EBB!c&;_&vfCUSI36>G|%nVqCe5+?E)-w_CgJNyk#`Gk*TCj(4UO8#^z zRa9W>npSIJHNJJn)+bBnmlXqk8}7NVbCiPLrB=JRyREbRs@&07<_H zh-E|#b~u4mT$iSPcJx=C=J4RJHI?s72soVrz`%F0fDuVIh*$K)x{a4{!&B|g|8*)C z4DDqbR8or^8M>DFF@&fh1D~iL4Jc636DUi%!6}##)iQ9k1L^HV11j0Q#UHW~$pV)X zSWaS4Ks3Hy-ca@6-0SeKk{#ZH4j=xJCBJe@C2a0!yuj;VuA?3_8CZV|jG{n~1<=`_3-o&~h_`Q1fL$|W1~yphtd%@sDhRN-cmYf| z+rX%{!9FKz2SBvBTBX1k$ZA^_aJ2%h@;rR>U@mj{={$Pox&;v8eWP3?Vbl-AQ=|lA zH9-MeXrM!Ayx}`lnH21+6^LCF0*rlt?{TQbHtmyrK5KFh20ZCH7qBS+3p(hIQT;OP_UDE&Vs0H5LzFth-cQ?Pom@|?;vYDm_k+W)2c(3=Q^&I7}(8`w$SZ42kl zn}u{Z9#<(>sObW8AJCg52Xp{e3APJ7EIp2xOjG@72IoK(zkvW96zw5-)wHB5FNw+p z+eRpWejyYmz`gl{=sTFS2LIbQ+esqyh@pkFmTa1OKoWdAi+;x@3tP9X56 zYRjKXrnk@XY_Epwgs9NGFU+$B^aD4oADmJ^m?EpIQG6=5| z0(7LG=h{HO6*hz@0{`L%l;Zde)O#CbvF$(0HaV<0MoaP!>|7nih`1C z!Q}y?=2qZvG!+k#P9csP=y9eND0I*3IVn|fc;GysL%xf)DNHm32zsM=;1@HP0at#Ruv3w zA_UX?EP+q%4ILOt1BPmgGjds~S@%dmUSX|&1^Y6v^}6x)>@~<#5e0w^whiD*f%ss-YQxTQ3s&F<5)DPGUu_`o z2g29&e$av4#ulT?dt+F8dXO;&WYkY3g98gIkbR%F5s0O|%@BLicGiurP#NeVP4yk0 zSrdpkPX;FW5}@wuOjTRLp8{eJ&nv5%v|u%lBtc|O%h42ZZ{V~60nVXdwxU3{wQUJs z293#)#XHLLEEh_IJuA>jy!h-0ECumB7`%b_qsI?gK&Mo=7(R9|cog^)9p;@`q^ z)WJjOAm-h0co)*=W+}kT`eu{l|CoEAp{E@XtxN+5Sk?lyG*f}i15gR@RouZ`Uj{&? z_2UG-AC~N(g#`>U2GMh9K%q)t7Tlnsr*q-LK#ssBkgE~`mckZe1%^oVu;UXOjt1cf zK!3S5z}!d&;u(Xa)mUJ#0_%fF6d3<571Y!S3X!VOa7!n(lESCVo`ToyD+@`v_nI1% zrKpO}v%0Yg3_nl=gQr32A}d>VmKZMc)LJ;+(g6y5Boc-Ymi!Z52CVzwR`nZRB}N`p zqy)-Xpa47(cXJOZ7#YC(Y#y4m^(7#G0NbMUCNjbUAn zp#%6+bQ^f|BnkUu1$J*zXaU!FKJXZ(9rMV)gMngpO9a@t0Tzc40pPMIM1bHogxZ0? zF;*}v7=+9s2Erb}z#!6Az$8Tnvg-@s*{Py{NNaL1t{6{PY=BSf4$xB(3R2O4RMTK;wv@p0H^3dQV=x*t5`adzHU_lY zRuu=nB6ZB5i#jM3f=`hGaIroFHckM%5e*1W|9>G3+CNRs&nxwbfO_Wa@p=URS>P!y zKru#FLAi>clqpc`dY(1jNDYEhJTi(B$ZQBy!pBwN4Pv0-btE86+lnO?^FQJY<)C_25$flIstPfn79Xc;y&HS(;7j+tX9b( zz*dY0mSX9UKM>Aj0!*Z18CPk51*$aoJE>N>ssk19CtX~&R>UZ(5YS@?j6WOfm!9@# z>v}VsDN?Yp6^olFAx~gK1UPO|z?0C4C!v7n(F15d=FtV-j~4Vx1pTUU-|>JyRP1x{ zfL@ZIfM(7VOTena2s&1SO>RmMP7=h3?f|$H2|?3G5I%0qbfej^ee#P1hBKVg6xc70vrnX1f(zjFT*R)oC=!jnZRfpkU=~eEDH?? z&eebi_h*G9UpO&?^2hGtlqo{N*q{^U_X6=8e}6IlZ($qjOU;BQsO|9{LxZ z>)k0)q0~ei*rjQqUqAI+om?j><%aF;owx1nU)wu0R#|#@Ui^sao_a)`IFqq;yt(UK zogpME`$NWb^!J$L=h7epRA&)8bz+8{SCiH3YE=BqA!&}68A7*zBJ8)$2mDuxqPh*l zEsO)4#$Qk~8fRp_RN|P)e0g*tT_mH2>scFE@Y1-n$ut(K`KebX;cQ%H=1j^OaBn4c zogH_US}Yr^27I;L#wsAd%1P66JT~g2NR(q%NVdjobmUgy=DwL^K-r^Xy?JG;S6Wsm znc$>uiXpKfZbMmZ7bn-W3Hfgalud)N>0;c0>3zG-;~W`EwlYAinC{4#U-bVvk#Iu` z%IdhdIA=^q=9d=kJ{EWO{ha&H+&1FpX@ZmGdPK_lyQN7X-K>SNktuA# zz5(nYzUUoyU`rW?;4ht)uTALpH@VNXop-67x%D$-Tpe|j*)JI2hSY1YPr_a{Yy*z<^@C<R*q)NgYT1O}bde-Vuo`fz_FiY5JIa`^e5c#4Y_( zXV^Yt;kVhMxsa?(jjm(H!i3^GCDFyShHI&>W@3v{jC7zH6Bu zJxO7fEc{luxnZ}THuih;*h~jEUteEUSE!zTEB|Jo=$t60pzKe%VaJ{GF4*sy+Hj9! z?c6_inw&MpRbAK_u}iYpy_ob7`EcX2qhC`lO7|{|DQ6OY5Ej?S$;u45zG9J4ssPE$}|QjfQ=vfa;yPX=R;SqQDzJHu>Rmpl0GlGEK= zA0V_gB0mu5?0Nh$ziX_bzJcMdV#KpBifa*c_k>fQRNN;QhUDuF|W~b=_NPe81VQ z%1N+_(gj5EyLXM;y5`5=*2bA2{XD=;c1fAVk+Pf7gGff|hKwd$;kVit*GqxUXCnuy zp+%2w1jdG)pIR8o%$2WIDa`yyBQIwvcs(7d7LG2m573n1nJRgxaXpC1oZG=MPW^fY z;Tz|NRJ?)@?5zrIzN*ZqFGlwX_p%d9jJV)jeP*mTCHuaNnaM^sv=3#s-7e*0uudh$ zeijqUht3hAS6;__9}KmJG%9ml`^7YKx%kq?#_74yfvppBG}9;&JLR8P=)2WLzwo- zWd*ppML49ZyYK1byQO}JiH8dF2qiD@#9y^!&I#>c6DZ(VAK?wDRRDYw4`u&}*gK3Z z-_?@jVmx^{ME6dRc$(td>r9O^EsAGzLqFUg6LWtaz<)$D{s@P@#r!IY_z%WFIltW^ z2V)YO0&=rXOE?x!1meNAkmW*%X{6s4P}(uHs;R9rPW-KAQxatP2GNy~P)zOE=`nna zYZ4EPGTRY`JP_|}Twx=}6OC~)9S!8z8tHrE$T!=jO44odKobo$k%7PoIp5J( zprbV!iAv2YDAgQ}ceDjpD;KwIHQ`#=C-Wa@smK0f<7%ZFNV^1@!^^`7p~;%VQE9of z5ZW-*)Yd7D=HvT)Y_HA#pV`1;xE1Wy7`5a~*=@~YVne~Uwm`dZ9BFkKOUX~QvM%@nRa4nI<05hlo-qS!bmtRtfV{^q7YSJLleHSGa=>>%1dfR z8w~MKf)-7*5;XBplibbdfD8yn2SS0-Mrn$lEY%(|z*wIKMkySI<2In%gUunk5~Ha# zI4Y=ViMF*xR|=zMUo9vNVsN#cEe$(;EEf{TT7v|a*?zT5TBL3DziE>RSOG+5JYjeu zC={LuE9AGGk+7IM7K%qZV@;tzm_i4NN@7ZVCfnFhS17hxP2&(ShZ9CC{|9beW0M#{ zI3+Yb+%9}EGKmTWHVqokXq3vFo<`}+SG{3iWpf##;x z2!*`DPj3$e;UQ;Q;t8hW@!*EkikRJGyJDd~>I|!3BzbhOgMv2W8_I1Y;-R({mElNM5g)&c zuym5ONq%f85x7c*kP8yRjjl8-q}B+n5}50V1)CDem5GJg2{Q)R$M!<5Bk@>>BC$kN zngg?f;{W78L%7X<)ESBkj3(_NIZXNw-@{{Bg#Y_JG&;n^$hZi&pD5>vsQBVZ#v&p< zQ!Fi{KxEUx?ZH^MZMEgmw@BEU!!eodOGH-&W6c3uzBkz16^tY(FeRB3n+^rqqmfV| zD70;Rhsh2o_q{b3S?-jt7UP&3uQt@I-9eiNqy3kba9b!4Zw18Xpk)H*F>g>L zUz42Ik2MZfXrj%8j%Q42YdKBxB#v*2g_^^p+JfE zp%M(-s~y_m-*Q;Ol1qdj8l4dD2sP2qamBsCcs$w^76!twib}$?k>L^=r85?`8wg{V zLyu9#O6|+A-a4Xqj9NNW3rf5AgdC}+o7$5h!4oX$leA+fu$%(oNK>mLqiO%LarI+_ zA{;fvLZOIYd6`xfnKw1;nGzCv3Y7F2rDIz5Q4Bxh17&VLIz zkIPO#WHsBvk#Kuwy8|4N(+hTVgn}`ZX|(dGq&k8z0gx@zr9PD3#5K8$yFv^V3dR#; zN;+cE_HcyQG^n`ce`Dh2|A=I0SZf;bxlDl&V@ofzu`L*REo2fIaZ3bLbQOP6=0~In zBwkI#Y31+Qgp=PzQJ!;c6@^8c!lA@!!Fa)VQ?Mh@*d7kVL-Amf4LmD(Dh|f%^B8?< zjFSCVns#NVQDnH26o=p$``G^i!y66<+CyYh1YvX*F48QLL7j|oYh z9*Q)HADct*@bZXIX7nEu0%fhiSZsBmCAvxvbdrKZ!5+5RJUXYN+Y}|~)TbHhpjF$- zB%hZM)!7y&9GINA%0D-*4vZWd=!`cR|7qmNF`Ay8ar?PvQ$o9N71%ail(0r2jp_`+vtc zqyOU==MTXCU%)V9L`F6g4@Gol-WJf?FExlHyzopc|Gd33A?YYWW9gU6d=$m2G($KN zSQ!f^92}E;>LjmY&|2p1MKVm$m>n$Tg})Y-Dg35TETTOW>3^tW6>i2p=FGZ4V`J zUUO95*=cKwuC$A-R9qTsHVnj7fNPD@aVz=Xt958vVn<*!V!H*S4}g=rYmx8}0+w{U zBuwFZAk-zZGHq=Z^E8IUv@(*QMWfQclNXE_U ze(30ogoPg$jZp~R-qA(^qVMbIlPzM6k4e)dd&C4XNw#%-6pRNNL!k)Cq{x%2(H+rv zT=S8(7JA*WB6SmvNJIvokcj(3SwMj=J%R86qZA3qq`JtA5NaA@p2&EA?VA70?^;{c6? z+Jj*cpSN_jNmsTlEEKGYyrR}EthklM9~mePj0uzk#tNL5N}%GMu`b$+&h~05J$`E> z$-u}|%@fZapL8amlMnxgr-=4r!bmhh`-~@o5p!`tLi1!JZcKM9M8QTV`F=oiSRBVk zY-g2{Z$xk!PeeOx&X8R%2j#hOBHSMOnCMFgt$b#&|aEj!Ih86qZM0O zneSl2lE7$;5NfoJ48t|P|96ftk`5sRD@79FNN33KR!cP2BnO9DNRw-uY2#Vz)K(Iq zG|(Q7H-*~Tf{{?PlYA{9nF32miJ^Z-+UKz#)p4glo8YMPtRWDzA3xj9dE{l6VEe}~ zaPY}ItTgl!1spB;>mTPm4MTLc>|r66A>)Y$}PcZURJXX$bpWYIDoo(DyOnNxnC}IB~0h!)N zUd(>)G0E3eSrY-oA98%PC+Ps;4@5ik&GJwr6brUJ$!XRMYy9S9581iDWb{1A0cnZG zLd&D#ua(h2aX^S+q$wog;>S=zHr%=oVN&hQ`ViEiqt*2ksYi|C6rQB*UWmAo+t?Of z9yAxg%;zdx(H@t+Yhk-}Nvfrmhy_(vbsO*0+;CT zypgej?l)B;|8D!XAy}=z&=TtOJtz#76{6{&6j9vg zX)*IUQuYPYICtMNNOj+_Bf|Yq!R<+NZq4J@pn3)4_7qsrWuTR{dSCbd+YDKgBhf0 z?_PG%@yZ7svICBU*jr=9FR-D)yG-C)z5SHUX4G!I>j>cy+4&{Q@fuXNe31YiX5d~O z?TpE8D?aOesO+dB2VG&{j(0Y-%04H0m)`d@;=Fem_^h;)>_Y-0WwVeB+e=c}EChnG zk%!O91Ij)giiD|CNiT+iVtln4UvK@q#DJ69s`xfFriQH|?lP}XW&a9~c#A3Z(3zH0ypVz*)_l;-nYu80B(w1WTk)FSXwOuuYB<;>-P)Fq%~XOoVG&J*?I#j z3+rdvU&6|2_i6e)tgJ&XiI{d;SQGO$R+fwRh=UPX&Ry=|HUppaT2|I&PYDvsrF#j# z`sJ)FmF^BlNQ%-2$Zez#O(J{x2!Y-xDYo?KYEZ2~Zu&f_qY|8F<+mcwMuM?>&qCd>=AM=^!@nJtXc| z?}%l+S7ER4^ygQb~O>>f8 zAIqwvUik)DR{Bg;FOg;8&Qx^`MwZ|7#HE(cxFMV$b*)4e$4ns~Ulg;W2G88WAf-LHS{5r5 zT%Ea>OoVv#ENc*E*xo+NvVsx{@^{obXj$gZE3-?oR-cl)%)634nUAbB(fpc~mMoQ7 zO2cO*Yxpcn!)Hx3Qkhk)r7~-Qf%erLdxM}A2fRviPh$PE^iCO$^1|D%KNtWsItdxe=-%Ee$A7G&K z7b*A0KU!|ZKiB*X5dK+ zrn8F2{N&?__u#VFQJM~(WECT2iTsKW{Evhvbx8513kfY}u5=r`kl*}V;ovx^jE zvqvXUHha9BG`l8=ve|V8&g>PMD%lCWjqEq>G+0+4o6C#A9v1>_#vpI&UTI zDCeNsQO+6Lj&ja3NLkq$13{Us(N1!_*A2X!KY$o@--F)pW2{j+Ga5L)J{7F zpL&Y{(14@bv3}~f4dl}*rhn=}61twcq|o)$`!;kv^7|)%`Af=TIVs4ezh`DtlR?=_$0dpG|r0JLbfVl<@x$7-7R1G@N3L|s z)f-^I9s^7sp+~7+s>fu9aQ2v~fa%d7918gg39yGf80?X-u-s#v*>8_6_WkzQDI7IX zg#fU}0jYC(oDh+s#4ccuQw-8gT>`)!?}#iL_8?Q(5)9J<@9QYL$6Y%N8 zrB?HL8F2FY*ulvgsEk2g34=6!cM>qKOl>%?S{U%=PBJ)obqqY>miuldkr>h(QCMU)n26z_U~26z$@Q=1NN%7 zr3HGmYVFmlOR{pWH4M^Cqx3){RhBaI|SiF^n;9nB7nV)IEmBi1cP*QqYJRt zMQwF^8DFT^2Mp5m9WTIM+7)`*rAIuSmW1o4bDXq#dZ2yFPmfpVe0rus#Gf|lj;HOy z{iB-#6neE7;p>!rtCF3{s+z5Mb|o#hJZH^R-9GQ|vuB$wTg4Y=ug_ zD>WYu`ginEee0V5120xC&O^u2E#=ef%d+p zA$Zr8jPHHRKzKI^u!l+B+%uWhq|XeHuGllf)uhi9(`a+c3h2?Ie#?Szh}-nhP~q)c0(on zp1EuJ3(q`I%jdf!U*)F>FvP_$z*_egyXIH7^pItA}{p=e7gGoI3>^Tcb&tBKGc=mmor7mX8Pm^6{@O~0QTvn2-2sB zc1e*>pAiCnky7kas`uV!DuYy24+O9exw-0^JYb&&p`lj-_Gx3_5mik9`y>=u`mAM; zZYrDr_Sqm@n=S>xF1?RF2d#bdIcnQSpVJIdRjmuaJ{Qdg?=tWxCEe#e#VdX8lClcE zM!!EWshhrxL6)ON3SeKKV${9^bvm%`PzD*cswsedM>9w_SL*=#R;hLRE_0~=zAYN6 zzN>7Y_g$;-+t+5@`);=|+;^|WaNk3A4EH^z>CyL`eZGs@(e8U)P*Ppu0qlE=L8`h< z3E206;>H56!$KEi>a7+O*lcydKc_) zd==3<30QtkU;_hpG$KZCwY=hhk^R7a%OedOR!TE)(zu-ghqD{FpwSt)u2B%6n5Vsy zB7wkdyS@nAm)Pp>X5c2b4zPckTA_cg+G2lmxYfUaL8^L=4%lA_hIo_?*uR9LZ1Xf7 zuz#g?Ir}d$!1iyk1KYpDM6UhUGVq8>JAnN+S>Wu@Q0!%pVKZQW{r77~Pa6Qw8MOAl zsCVE0Y7*J|-*C{Z|9v~z2Y4Mn4(Mek;DEsjngONGQRPmu52$f`)vQ4okkGt1;0>)T z22iXo(jtHZHtYF!GVsc3KY#=F=x}hrA&V6T98(e6fHQjg1J0Z64|vC9vj$ufM^VDQ z47jBixZ{X82i(_lJmU^F24-Oi;nVXVnw}e6G@A4W3(~ zC+#qwblKG5b8GB6=()|xKq|3#Znwteb4N5TpF5#(`P>->KC2!P;B)50Z~9e{-{LcX}R2UwV?jZI;`%nOJcF<3ajAh?kHd{Ht1uuup6g_Q4C~OsOPr67_xJ&P%&|sp_V50C$64MvH?cmtL z8+N8IyzBV!d1hzd=d~huet>h-U?f3?aB4<>ktQSgPKk5 zYLMamL9bh5*O3H@3)g^yHmlta+NC`8L3@o;F=)TtsTicAqCrL{4mxj9XV5!}I)koT z`@3nU&Y;_bFBO7%SMT!f@De*4Yg6C$l`#aS~EfNeSo57vw@=5HFQPm zos=ljLQ%BWP@-tRV+Tb?6eWtznzi0`P@?FPjS@w-6eWu8Iw?`~K&Fj`_%ud___e_q z(o3s^Aq5UAKV+bWd`PJhx*-)Bj3Lu)_I^mU-QEvrQ2QFvW>$+S9X8~3dl)igtqenk zY_-(pknMWtUbFmun@S&Y*w~RFr&Po;Lc$H$e;S1Ew;NeSXa#`&SaCo!A?r?MVGyHYudg~rv zPqX`QnfBGsq5y{d47vI)XUDl|4 z@mi9OeetGkgAdgB5w0YgI3mp&HKIW8dPI@22P2A2&@iIR7Bq~Qu7idVbo)JK)q!~9&%{&5yx!We8hQaE1Sc#=oJx?>9S;i zBW@{?8u8FfhNLG&tvtYyUWJm8d6ohgnXfT0(j)~(4rh>VD(L}^EK!;993t+hfxh$ z*N1;r?n9UZmSDKn!s+I+WByA{ujIw;;es5*pzqmCp$pBQCcL5wmtUPf6r zeMfz$rEAm!rAJ4h9yeNK#DZk6MrSIn7~M;{oTK|BX_L{`^_S5lYD|Sq{zgwF(5woF zfTNB3H+qGRRY%A4ItCM?tqXCZH!2uMZ!^E{Oon5xHT<|t0*^k!0BFH;47{>ZBH-w^ zlkaAZzN*(YH{eI#wgU8qBbVeCTe2}6k)~;W#F^wD*}!wwyv#?sZ?33F?G(V ztP9~|+VpB&&LMBuSKDHkZOm>Ps>kftuIZR#imS(*BJ5jr8Ue@Xt8!zE_dn)ll8PMj zfz59mgAT)9lF1-dRTBX$DKHXOGF(kuVs1f{lp97W(O1GsY9y1C%u6C*iG_ud4u#H= z*ORPLiNzEpqz%Qwd)15-4y)n^fF%bFl1fh6kW_Nc+~q5|Oh^^)-~mhCweCHZ+}5Zm zd0_dCB`AF-RrV2ZtS{-7*VuqkkLBc(@(T44@EoxU| z6XHFZxcEBubrqhB-5?+0$cmJJV>jy`tVn3A?On{+Bgr72N(T9|9pn$>xyslFT6v5$ z?}AEQ&dZ~vK1I;d0_*Zu}Vfa5wOCdREw-r=}6 zY@y<~?G#|hVts()-jXVA+)=6G#vP|XFy0jG033IcK}utL7;xNqiZ(*=U=!fDcbw=N zcU{wXoKbt@9@w6cjl*Pk#%C(v#~0ehjW4o?MB_^z`>IlcI)0f1b$m17NR|o&9N((g zXuP=xGu}EM8oxo=`0-nfo*BR6u@&|zrW$|38P1MB?TD4eU)Eb5ucMstA39>C@%L=8 z(gb%>tTZ9l87ocDQQm|yd#p5JvLkkxQ2SWyGJyh~a2RmH8U{YA$|&H3^)`}E*rj#G zgahQh==yqq6OK5EIpLgxr6*i-u=Ir68nqL+lcmet7E71)RxDjsXlLoNB0Ec$jem@# z%VsJplr?LXE>o{r%EXli5^lgU`#DG1I?}wNTq$7LRy~1CXXzTJfMxr{D>k9(%1%l) zDmyRPsO$m*kEneLSoV$}>?**r>-LFnIk8lBSJQu@TPyg9naM|M6Z5pIKXIrn=QeS) z$zM&JtnoRq%CPFhItCt54-jzT68k%hi7PZ2C%&E(GfrG*&)`nnsVFef+-aJ4SSfH> zG!t;*aeK;k;zj%2=85kr=V9W93|u3}0#3Xq9IPh5i4X1hqjJU|W#q^)faN(#{>sfs zXF2J%&NyKCK&LNSK9n{>kd{{{l9gAQuc{gNta6-y<@1!CD{r$5QhAI)mZMA}VEGy) zHbk3G6BKd2!+XKY>h1qZQ1S$ldi0=IJ}}xp|oO&6z_^=>pe$B ztMffaMZ%$xDmFSaQiVC-uQ=q?NEOE{ja2crl81^bc8yeV-L8=;Za=1xDjq2syp*Rk z(o6XgU7bw!DfCS?5BDYqlGMrM z!FF{rx!kT!CRZzUGI@zoCzG4CI+?t}u1+S$ggO}wIC-6dZ}KLy=2oRnChv5rlgWFu zI+=V_5p1%#v^x1rk~*3Ewo)gPZFjdPzxTL0nS58NlPQ@-olMEKQD90RI|Zf`B~xIE zzRxqI)~PzCEO4lfDQ%k6Q`RW>r)+SjjwzdMs$y>IqHCsi#GOrUujn|HcBx9d0Zx6_p)aO>XnTb;)nq27 zSsAHmc`EdoR-ni=tx)f4nynhev|^QWo>u-O>`a@gkUp(B2~E>hC{~_kN)t@mz`*@l zSS+zcW}Q`4WWZ_Wrq;B>7Ldp7Pe-PmVUVio{sKAvaB46>6dEdx&PV34ZnEdx&9su_H`3bCgj zVBoVVFau6MWPiLi{Vap*q-xB7(=V%yO*cAgI(Z|iz%t;=Oab_E4g;^O)eQJ@FZJ2W zg_gj-TqNHqhnh%Tzg)r~P1kS+e0jS5Vu4=h&hwyt~f2wXq=?V)}*;&I!#o$!9XEy9Cvh(U{~rJ z7nP>UMCAbnPy$$aB#GH7^+l}83(hJmm6vQ!a4YpC+)Bd%l@D!M;u%bM2eM);;0(Xg zAu|F=8Sohc_4Ak+WlD|An5yJ^#!PvMPE1&1k~}kvt`|Ez?nnsb!}!=*k4A?tYMHM6vNDAie+ZDnhPH@ zBX)B?bCq7e+^v|oMQ3DZ>cfVad(4mfjAEO4h=H4s4LI|-vbQtOI50i)ynatN^BMzp zV@M3XDc)(TJKi&I>orW8X%-`MY*pi&I%Zoo;A>pfmtIMz*xXp72=k*sTK`5 zYpT>+vlpX)j zM^$jZS=Y^-j9Cvfqf{{lURfv=uqsWlepN5ch*f>m{;LW#gjGe>y`HLK{d2k5W7Smq z9;>QlH4I&}8?b7LB79Yss_r4RN7WnpF=W*i2JY4%v0>E?$7{%{y-9i7s-xCHVU<39 ztV+IOQ+3@o%Bs9n#q~B{@mlG-SNvuxujJde@=BpS`TWXggZ)>gYEAY^wSoMVdGZW8 zOk6M#GLA`Q^ zcH1eSyszAES^QDq&ldX?tJ>W#@VRIRHpRUa@^sXlC{O7#hONv8U3 zd-zd(QR&oba{yI+%et;oecR&U>IWLqS6xYO4PP}u?5mE;x33Pi%jK)3rdZIcmC7A_ zwbuCx@YMxcNx#}==1e$V0lxZ%+Ul!Y%!uR{m#^-2Mlr7*Rdjy!y!qy$(UY%U5gw7F zFe~7z<_W^9Xknzr`6Qzz*AX(;80oJmu|njUa)soYnc`NWs3Z?qV@{lFtO6@Fwwhx# zF>$p(RhS2?Sz||T%{GfRHQMi~IjomDMzWEJb^z9#bfjr$Z#C!4($=lxn)lVIM$KK# zXf+Rro5JKN)i_U>W~bSOe0ILc{LU`YAI~0b#B+8T$zYofMQ2YpEIxaI)(Nv4MIJmx zSe~ulUd$%lr>oop&VIvi_iV?D>)AUM0%jjD%OAEp(%FuL-0ZU!w3oI0oBgh_f3tPs zdG;N}rnB!me4p8m6nM3n%2BD!wR3uHZ;Obv=Gk5CXp3OAx(Gq7bql-JaSOZF+`_K4 zT!Y#U$B@?z8f!N(NYfSg0c-WWo7(+GuhkxsZ+A$g)gCvKpCuPh6j2APynkT7jNclvR}NJV;rJ6R-`xQxSr~a0_J>@1)Oui8fE7BQTDtXMZkF`uQxAX2sm%B zMZkH*nt=1llL$C(x+37b1~W;c9i(|H>;#gIXd!gLX=T$ETo6W2m+@L~NiT8B!0>_nGRK0uwrs&d=6rg)(67E;IKVvdT{zeP zw6NF-(84kX9>qEfYc#$VHZaI=aL&SJc^P8i8!ExDa4qdWM2cdeF3z!VYtrO8YF>EI zAZy_fJBb#awD7U;g2Knbs|>udg9hNjcNutP9}U2Tw+)036&&^UfU({y?;6I{^`81X zg^c>aHiKI~+@PbrOwS$ztk)T{`a1ctC@wHuUvI%!ze2%S-=z$H{TuegZT&h8VEs0- z-J(wiVErz|R`upAv!1*rQHLL}{Ktr7}ejfVE@1lyS|dXh}mIZ z#70iySfJqQc}dZ;M825EoUcnn)B$EUI%d`6AMfsxt`SqAv5%2D`W{+F~GI zw8vhMXwd<+Wj`>Azw4#qDv;AS#-;~NxkSpefe~e=7t8w!0+rc0@xrb z_?d1afDPInHjIB#7QCUt0Nt?64s?U|mK#iZq`|s^)v!@3$cAmU`<2ar4Z95d4Tl{D zv*CorTMZY?_qsG~!wsu6ZNqzthZ;=O(C~mZW;&YyHlVD*tNNP&F3vL^_~Ig+=v+M7 zcGGLIP8}|usi$3BBeHR}9w>l|7nm%?;)FJOi`N*gTD-x|Rg1Tpwf5>wEk2+&wfKlQ z!qKHt7azCl=Edfj=HhD%yz+nraPdtgWeMW8#dn;%xEPh5Sz>&{CA}SZUJ}r9xujS_ zzhu0le)N*b_WIFF^zrVJX1#$W>K@0Em?gPOx)et&u}V}e*=R?_l5J+?x2$uRB?lG5 zE;&wdm+IaExa1TApVdGGaLGH0JWJk7y4b(uw&BvHOmBOsRj+z!u48*k``EX)bhwFV zmYRy}ODh$Hme$y^!As|*%-{~?HwX6_5Dz*8FL>0MBMzQZu4V9=rTKz4OqMcuTfdhG-nS*5gIr5dqmMy` zt%nX^qb|VJSmao`afI#ArE#+6vqqB*YFuEiGSRrqet6f|p(kCdN(Rc#JAjQF6crnH zn~C1C9jG@RG%B~z*tW*AMlKsKD9zG%#bM+cuUo!((Mho)G46IpiE!3VI(X9-+W zzLDmpf%?dz$=oa4vP)vD78I;5Hd9Z@Noci-pCc5ABM-*==`jn)B2u&4rFtnv3kK zG?(dpG*`(SsO&BT*j%S^)!b?j*xaF%VDsxrj+@se<*A!D7|q+f+qv?7$I2%JCkViW zKPNjA0XAQDqOh5q8quW)u$gSS)vE|FaC4xs6fFO8b~|RJ&XWDLzU(YRp^rC zq3QC*Ok9*m4C$gx)MyWl`m=!zXpq4&+c9_W3cE`Kktj^-0Hz!l4JG*SAEu|$;B}%LEC0vOOxg#4>AL{a_cH$eqqh&yuepFZ zy&2E_&EIwcVA?vsw2h2^dd}xR4}ktmKz}adi?06lKc@h~AwW3F05jhM%)HG2vmOFw zA>;paDl(Lot^!P{WqfVPo8th`vmMa0i}4e)-aG<;sRsa44>R6AV8BlZk_u64omX%C z#s>hHaTqY;82kNC-bVn;TmhKb!FWpj()9r7x-Oc4@Na(i!k1luDdzxFF3|dJz$_o* zfAO1b(_Mh>VnBB(19Z0mx?_wldZYNCU4Wj~0X=IOVA?Xkv=+wSN!hW5)?5dev61oW zy)P0({uO}!4#vk+{QXM+lcAFFPks9LKpBCQ=n6ZQLyzqlh z(yzNjlMucn|H~tZ5(@y+mN0(fM=zJr;9YI9s(NFdzG?W9nrxF@g0lL>PK4r(%3>uaI%zmBmv;SCL2~Z7njQ^_Y$618mdw{No zj0c|iN+vCSTNKpipIP)bl@B9rhz!t#N?TiomM6iSyAOe`4V0`x2eZF+T>-+DmbCdR$n_unSOPY2AZV*JpA-Ch@Z! zm|4YmOZdkF34xV>+0~5ydEHNb4Nwou7*8)7-$f#|0}ysIK-W+}S26wL4M5jA#&b%K zev7bs6wrTy@q=Z17rOvceSoPs#L1@t)6Ow|ZXLT$xGVrnFJyeuyq*bKzZ@`gD&zlJ zHl~aITq}yT^V*xIiM%<70dtNqo?CI5)JaAJFeAbEO};!1(0vBF&of?n_A?WRWYYmt zs~Dg3{*R8)mqma%BN#vM^Evco_I*)*nx7r}o#FKBJiwd=#+UZ}=^*-c1z>6i<3D+` z=S2YYO$PK;GXC31GoK+$azMX}@jqhI-gX0ePXT(*k`hF~R5$Ig4lu2r0cLy%m~oHs zzvT7T2nDABQ_m5}4gh8!X1x6OnSV-{>H_q?!FcT-Uyl;+9Rlv^TY2fAPNlyOfP19evO;3 zk+U8!XA|R>|NG9rC-B-t(*VBuE4{q*?GpN)@kcxNk4OPbUk8}Jk=X1$VEQ9s%cG)I z0)PLDo5D1Hf#}e~J=H(_C9PEsm_C*9Nk9A_ZxQA*0e!iQ7bJpTA#T_uiu3b33p`H~ zDz*XocQXFWt>q!2%W%M~(Tx8CKl20nbC)P(&kt;F{|mxEEg&pl{G;El{S<+{Q8YE+ z9-gklKxvFTz0jn<<3ikJp+W0G|?P`@5mTY4ln{r7;pQ@_rC$q zeFwVlGk*4$7grJdYXLJhF#b_%Iw`vB{eanr7$5ri4Z{fjGQgb4jIVn4&2Q45#{hFq zG7g7cB)p}>08>^m{`N=TJxBz~19ayzp7y7`(p-RPU4UtC5Q7~8%s$HaFMjjIT?E)! z(d~lodF#USF2JnIfLYfVpudl(h?!OsQe~ zdmZJUBP8SlrUw{5)l^0dnLYq8eK6yHbD{hfE|Nt+Uo}ngNVLb`8@7JoJG7CVfH`{@ zpEZ0(x(m>I4bXdoG-^IzYJl?UwFk~wY4gls1Wc)WJUB4y(Ish}e7~eGQ z-gETlTYwn{82?588DtpJjsT_|XZ%s*FIwr(3xH{t7~fDom;@%B1NvNy|HZ+>y@)y1 z0{S*Ee&XA^4iNUb0O1YBZ|%L6Ljur1LcsXE9NeN(98ROmG zKKgaS_Zh}7{%q28!f}OYRKQ36 zLoNxsw++x6WBl`OvKp03I{T5)#0owRIz|4o_QM?D3Mc%J}1fai!@##bVESuJ? z5j~Okl+&Li56=HSp#MY0J?~GQO@H12^xtRvyH9^E0?>UEy5DE~`!lBfmPlC$2t|y~ zYTZM|JaY$N=5EGoLOYg|-thxw=P^EM)^n}2fqUe4)AHqj{;BNucmJ7$-9G@(KbY|^ z{AxeBguZ&wp@+|?_#JsuzD7V_E8{yBWo;nh?j}}b{4?J?P0A|uZNSub7=L$g#NY$SJbe(4W-X}jnESFLVm{QI7SKEF@(T68No;%|u zujG6lp!*zjUtoMn{-hHrfUe1aE{d7bYXQ^A1M_VG^lfK6I44Fdl2QPeQpotF`LT(_ zrdMPuJ#=3JbYEq>)ID}0vEymLtaFSH{GT`b1N4Rh#=n+7cO*bQ1Q?$&_8&(BM+h$%B91mGf(o>rH^EWFxYx0JCcu6rE`}RR0^s zt=SnvgfPRPC}fGOV}uFWm&!6NvLrOw#=bKXGD7yXB!ndU)^hMm*|+Rfv4YA_b&buJOAA8f2;9C2|qgLzxSvcdHZYmJQXGM z2j%BPDJo&Q#*3OPOPadt0!+rfSK26}Qej3XN3nlD#g@{38jeV?U3YTYXc46g+_(}d zwNq10(5PH6XpG2l}|GGlXeN2q`LFL)wfd{ zM=e!5*w~}d1a?c4Xok+sF-B~MN!)Xz|B-Md^zqEZ1HjJf+tri|YlaNvNC;QALCCxQ zjuW;b5cb4t1_$>Nrr*wSYU%nXz?Q~rDmFYa&zVFyPJpeA9KzyZ0h~iK-fFA9922D-FVGH^M=cb>K-AP)h9~3Ep<-R zQtOXa#V+wN>l|Tk?Oe5OrR%qEVFKNU$hEs4|9&M^?u1v~OfU^DT@ku|q(WmkcBRb? zA!U~zC?dZjHm4r?^Tu{}4pYYXCrZ`-6wS6b$}3T2FawwA>U(q@{=W_E)F7zwr=T)Q9RLmb_sIS zoiyh=_b%VvJ=58KyxLoDNqev4Z^E<6-_dLbU4ma2p&5_yd9I<|?=SHg>-5G_TYvZH z54O(D9xR-@Qd1A_x9g$&=R3>i#&OX3o${)=QTA#6Rk}A`NN!cyCG{RkM3y4TOiOOR zJ7G_hvS5xfJG>qzc)V6MT+72PO6#oH$rKYt5G@Ge_t|*Z@=vjT3Se5LJw1+$X#d%} z)LpJH{~WWBGx7@>b91eFym7_TjK)EqD3G?Bkl_y>Hkj7k;D-+cmtFS`!`Hb4k!kj%38_%HCd}&FQOD>9cd#`qKQ5DjL ztvfkBCG4F$(V2K7#`2UJUAit@!yn(H5ByN))8XL6m> z4kjpOX5<8Z%6XX3ezc%1B{h`7wzS+s;Zg~7Rhh9sdtIBGjn|fdGfvW2`YX(Q4N23u zbmE6Tk?ov464gA8IroNJzBvs_9vRu7^U04~uSv*nSE8N?8K=#d=%D1`g44dF{ivr= zlpB?fTr}4(f9}h8Q->5q5qdS;&Zt)*OzR=ykKQkn)iC9>5 z6Kr=3!VHX3Y2TPQQ&X11OtqZuXr3}*=gE#}sQ%mC4chIE2f$n zMQj9GWC~QPeUqGp4Wh~D6sWSZhYXxv_kLfm%2;6h(d|UdpECNU`CkKj20jt$JNlXd z(Nw_h1$X`IJHB$UgElEt$kdK>FLmlc%QiylPCJ$mC(P5 zy7S)6T+c*4QmeFlWw;6swS2ViQx$R9CnA?;&n%Iy9J}wuJ2gC2(6hUIy!^5+KH6Hi zT6wN3l&Z$4vMfbA)F*#zytvUhuo?O(L8B8_I>{%&Va~$LYe%MgT72a=Wz@^UDXUII z-h*duI_yJYwA>owqm9&HV%woQL-HFJ=rGYLO60 zMUB;MWF``CCepfAY1T7DxZMD^hCO z>Fy#N5YN|iW~uQrWh_kN*Cpg>I8>xTnLD$HnBVPkcRoQJxYAn~OFZV%DH!qu!d|^3 zRn}4m`@)q0tmh z2va)v-bcn{b1t3DTXy}l4J8EC?c%UX38d$>!Tq1z6`7xhgfBA*oHS>hzaNNGEbwBS z`<c9- z(r$UPrHN7gf%;r2&+gwR^nsjofzRd9eL>+OtQ#$jA9NMoaPlQa?AMRha_bM85;-e^ zM@_X=Z*2W#`k@L?nD|d5^dmNGUG*^7`&5Lo*Uxo5+wE|iw!<(l@##l- zf}EG&;WdkS+7BfkZ5o#}ew^$+sf>RgX0D{Uz|V9fbCl^zBfly?H``+xlALj0u^>!n zu2m$Vk*>d$vq?qac+@DL!axE-2F~V%1^hmIEu+~*t66d`DcB1tapRH*Uw)X7} zQleZ&tA3*V`_KrgBIuS3<+Xl$?V6LK8N~wwU&PU3GneylcWex99ltQqdAm`0-Fe{^~ViYJJJMe#>r3Pu6xRZ*nEA zv6ShRBiXwL^pU^i3pUQpeV&^Y(Mb`%`z9OGJ|4UVC%-EUzul2w5Y~8K1n(tu*DnE@ zd03Ul#QX`}xzU!2OG(R3Y1$Xw2c{8U9qD9vfzcOYdcT%Rao3Vl| zb~mmmhCZ_M5xV#{KKx>I&pYD*>`VWdzT@))0($%&TFbSU#b&)}`y@-4e&)g!D@CnVSP~hWrzhx=CU3_w$ zL=y;42y^)pqm88K!x9qOm0oZ9Z!a>1m-?T>-5Jq==LGP{Z+Udiav6&;jc?FzFUo64 zjXsSa?lJfGoSQWlx_E=uXOX5U=nC3jvmi)-yUO}w!s4n|kE%X!;SC`i`o?4N->bc| zW)}cTO-zRnX{?godCG|@x{)iz)iX`A?$4&mdcI=1s?>B7{yXIH;yc+9m2)7`zmt9V?lQpK7U8aJ#q zrz>6L6r`yap2wY#L`5uy!A^3SjGO->3Cw1Akely(Nb?XfCevsQ>{x95Kx|6?RKR?8k-itPntKW0x6(R@PRS_NK z$<8}ttZe|MGG!$9QTBzjzPRoRg^#bE+w;kjWObeuv(1IlXEGK_ij8PB7ZTEs*Y?^s z#I)#)TTRbRux2zyLD?#OEC#XKi8HBjM@sDXuDr0)Rd%K zPaNo`ZMD4kL;FmI--|aw92wX0pu)IFUb@CT`X;U`$JrZ|L5a@o^cjBnP>8@zn2G8v zQ-&`Y0!M_f9fNnpB_%XTAScPz02puhGQ)7Qkz>3VT;LZ=E{JGP>Ocai^!gLbU)rb)Zh&@ zyRK*nkUJ@h6VqeN6Yzn=eE*yKgZ#AJ_oU}s+Ng40H2%aNw@oQ8KH)!VnvDM~N0`r{F zNz<%4>hczi14lxYa9yGXF~R;*!pyu;(!arcmQM*|-)J={nqsk{@-j&fsUh+7kLt1c zRzP%T!XUr6bb`j=N~h_Usw#M?3Ei8#dsMIdUWe;8^O~QwClmZrTa5f4;b-(Y2SPw*Gx;&o^&T zZERO#Eb#K`_zzL51xkc7R{Z#pd!56WM@)l1JZZnLWTi;;E5bw)dLD1L;@(n$n5hG_ z0`0`lhDj0IWuUR1y|sQh1Eh%qnEv5Tr6ub~ZRjEO2Tw@a(0k!XO`vKTDxEOw6CsvF z6NV>lu9OG5=(eyCbCKUqRwF2!nBcRIx?UiT-*orkiLX`$-MH`y#J!I0v?53h8>|j_ zuj56RMqla%8|=g-B95Ivaif#L3*9PQpdFSv_}azMg2_!1RnRT#!L_C2 zC1Y^hWp!08nd3776&nw zlP@Cg44~{jW2?{AXI*O?Jocg^eaUMJSx5(d3^E$|*~xc1%-eG&Y{XvJpMznQxHlu; zTrb$mCwOO7!Nt|}<`h`?bJg%`CCrqo_Cyhx*9iDe?TRk6poOsov{0Ha|FX20AG^NB zTklbU;(w0BFi|L7lV4@TjVl6(;~Db^Y~MVE>&`{sxLvT^!iOWgAr>B{R$eJ#@FRxs zl%%b3XW~}lsR8KZ7`Ahz}nu9l_(v@@I%SUJ*>Iir#N|tNBnw4)*&wt@{#~8 zCmgBOK7{p2gA1Y`15B5v&%)PrrqoPp-Dy%GoYD60s6NDuQan+mvZ}G(CkN-io_6<{QhyoQ9ck4ox-40P9&@0ziBE0ApxY_z3#*6=?;;;IHj`5|d7OPsS@DV4oLhqr<8@3ePvez}7NJ%}n=en}EB zsk#^gQj+pF_X3ku3*vXq?RZ4x+QDyL!1pEPnef`1mGjbwJZW%kZbslw4220z71Tbk z)uEPK-%dl*9a`VM8O~7h_G>abOEDa$c>jaPggN%tIp{mC{Y@&1zBL=qp1sfF;-j`P zU9m^IMY7mor018kN0(lSBL^OX1HO*#r4d2r;WjsgCfP`9;-PEkrdaQRMDh|JIGf!Y zpr^bRYCWXZdQkR;WRR41`^_s}T`}no15IRC-TRKV73+_k_)rQ-l#W^x`eJJwM*&I7 zw71#fT1N!Ja7r!Epi%*?h*eD_*x8II9IZXUqT&gAgSPx-pE#lb1=8GX()+o-Kjd5P zV3*xhSC)?$JCOR4zmoCbE)BE`eGjw!EN}*Lfma2L_`|R{81NEQxZOOxa!)C)pf=Tm1SffJm)Dq+RO!B77yL;yM}wq{gV^FVGa#js{=xQqf_rDZ_z_J zQf-sdzi$>>Y5}$d=WQ9GT!f<~A)X#php0|$*!<7HF4ag%XUdW!_pa&sPNUaVpgx@7 z{ZHoM>z^9f$4Kb64({S|%MNk|1%72~YqNA|0@Sc%#nLLS=y`F%~; zo+fR65QmxCZ4$2vxWZy-jTen*kg-mWvG!lNAEy(%LWv8+U_wY<=d~?+Y8Cmxd3c}K zQLmla(;%#B6lEx}YIsRYH2S(Uu_~lt#?@gDG3|c;MDLq2nrj=`Ynr8EGcLidBMd&+ z3sQGQOq~U-9abDzpb72=;zYUIrB7gB6{45Av>;vbSHd6a0@pb`Gf`4lCL`V`Ox|U#u8bW37iB_=T4Sz&FC-FB;30_ ztJtUd=Rq5m&0e#<*oGFK~R~-!PV-g#j@QFt0gIsW7OmMZj-UI(WN1}@;^jz!JhNWa?(N`YPP&H*C zY$_5TO*uSt99=HbWDo$VIZW3EyP{xLuy*fdyOs0?CiIjpDarKE;qr6;^ME>uQf>5w z$@i)dq7760gah!;Q{5Ufn6W-PE&_HVWLv#5JJr@N!uHs~h(1v(^@YFDsvSV^-|ech zj4Vv#MPR%y)!%A*<_x%8@K=!&%zPcaN(cFkamgTNG=ybYKud#u+!;s|8QNzzZB$ZE z13Fv}zNbTdTI}XuTs}CwWEgC_@wgf4?spLL%m^;;c=?Ttm45=S`2`^mEWaZ~ zdovkxe%HitUhh61e9P*0RcyoPO59VT(X`bD4be6&*ohUT5JlMBOq{fm=m|$h-M6JD zmUBbj>19XmcH`Kgba>d)e>ZKk{TNXN^DMnF43~L4xlp$-8n5Qz4_`dtMz!P;e*D@< zlOZ$cSb`+}S=JFn9z@$k!Ocmi)shi!0^2((4^EEFx=2PhNt1gY`H+G%{reRj*Xa~B zlT{^?8Hk|9=IhTir`^_k!M$qKps+88?t1~&LFhgg5p(DNrZ z-0XXvw5-0TGxZRVkdqC=jG!e^@-G_(mfox!M%$Db+^|1@!io+EtZ+4>DcL>ck)Fx} zm@ORNH~itVTK*8M?;1!S)is``rwoKWqm0K@1vu>7)g{(ft930R?wJebgH z8W!-PSR3K1v$d^B2r=b4)$=4(bi0}ZSVp(B{IaQ;_fUR`Yy%%R?vH1ZDYx#=R*D-6 z%%0BP#;K0v51WQf(ty#z{2?z#F{!X%HV+O&DAycdq>55sq4ETkPw>O68L;_guH z^W=KNQT?feP^b6P1h0tbdhS_5cl~(9$~n-);;Jhrr)MX8T(vusRQiw2&N^0TY|^VGSD{t^QSw@gZ{W?Ldnyupo$Hf;gy zC7t_>Q0hOIm~OkXFe~njqxoosloSSh7Q9~F!`7iPnByIBwrMAk$)~(mx8-`ywZ)i@ zvRw;AvJaR#sZ##p`9?GlPioIKb2|)V083GxPrH&HnSJ?+_-zb!{$}TJ7EeSbI|EY3 zE!#mM_OzsVZhzB*iRVpsWb{a_>)yK!4Dg|ArmZi0dWR4hdO2YyMt&d0&w{Hu_L;U->kUDbjP( zagoU?SvH)3@1pkO7zTg1*Q}z2hx0Zw>duW8{ET;3YP-K~OAtxu=;MEzZt9qvUO;M* zy=Kkq;U8GisdGo3mSQa8xnN@j;%!#7MWAK7sHxP(RDwEcA+RUjzQzyiM{ z=J>B4Zxnx-07XhQ(} zQlY=IH{|@?pRhvZirm*2NjcUdVBVUb{oOMA)2Tr66H7Jk>L)+iwbjqE(Ubn1&U&T>HWJxF@kh z5g598`JWQe<)xu9C!n23*^!L!4$hcM!R5188bxG~X08z)Xz;anAN(SQS?;lm$k^|8bxQ`BogD4?gqc z-|64eN4_=Ea9awZPc7I&oQ@;QvF}{6x$+~1;pI|yy-s8^iES5Ur3VZmt8D;-MeCmg zmk~BZ<+os+;z1l8v?0a$IJmb0H&YRD1^PaumM~V(#s(BWe^elclE>oOnBn&N_M6-B zZ}LsiIYU5{f$!K)X-9sz7dGL*YrVg#noMB;xj4syn6S(YB49;S*Xn=ke_;OZV7|Vw zt?8#}ZgAb0dRXI8<|`&ZzQqsDNF50>s6T`)GUFGgE+;JwvLOpAfO@XUcf8N#q5xa& z6P2LKz$fe8uzJ`=9+dWwCRGPxK-_cm-oKBihLMVa9eQ!=w8k;aln~MT`26OJ_0>=; z1p#GfJs9rpbkPB~h+RNcD0b0G6mBGz7dn*Gw}KnPfI>u<^L8^gYZugrUay{RTqJH> z!s|DdXET8toKSh6$j>t@e{BSxM>EunfTMBIFNhl_?!AV}gPO?Wwr&q2#PQjKlw2~p z`WVFqKVPEl#>}EDsTHJFTK>V8ANx@q(&fLJJ1SsLg?E1YMns8IFi64rEx?$A4d^d}y3 z{yNkW!YWaszZY# ze~Sn>ab4qIw$VG*_v*m1Ua;TOW-s5bd>GJ(l++V%Y!Pvrjpc0s+ju{s8qVS-vq^l@Wwd?!K1y=*2lVR_HZsb~_;G zySxY!bW_YkiL!d9m=NMSPh>h?awvAs4#?S6vR)^K)mohRsZrp z?+A8m0UPw{vg3IgRCltf;Z%E2ENg8%(vu&0>&~<&W3U%VIlLHuDTZR5$>gU?7nHU% zPX0w$SVCdnUW9sF?zpV{C{xBFv|gNi2viz)NM4c#U%v9@S_$O}zkZ7JS020Y=Nj5! z3&f%62Qpqm9J^>x2OQ;h7^7c`*8y4`v%N`h?@K@?n)+!Wq-}uFFS0-e|8I_IcL|rR zn==ZGoK4p(y_Ej?iUu?ydE@PVj(EdMaF(peK|CQ;gG)l(x)WQapARaG8*K^MHzKUr0g{U8&~M>Z1zKb5hD zuk-Y{4yKb6ee`j#ktw@{DVuK@n>zba6cM2{#e z1mqrz9-_?nIY{Z$$0}*-?8Ig^=nudDTgIJ{7>XeLbc?3SDuM%HA`X()Z%AKCE++qH z2y!h-&c43X$PB-wAH1D>Bq}|=i~b@3sLa;uc=%o7feRT?U)xh-EbglV&2g0ZzVbEw zQX06UX-oZ)$1AJ(F^pJQffyYrkm!G;=6L%*p*X@SPhTdeLRvlr&EDxr=Z{)^Zzm1U ze|JjRrYD^?;m8w`gwLTa>z zZZ0w5IgrO{Tk=*&cJn&1-lnEMn#FxrIJk+p?5m5?5?D@@LSn1)Z9>Z76v1VqJzXjjDf`q< zV?81WlhX#Q1!@81AWY<=L0u8-1?*JUQR-=b&L1+t9c-Vd3bS|Vg;m89FjZ&E zx~R&qlK^n8y`3T{fBrU5lXtBZSE|GZ=Ax+&`__cE<6V%Uk|IZ|m1$_XZSmu$&T?s{ zeQ=@+BlP2lX?;wh^xh74pPS!@dQWqD>}zg(e2EJ0(gQ^-Dv|OzqHi_yjICP&Ca3;F zlTEr6i;gn>VV}W>t-dlt32|@upJ=yE3@l%bxor!k&8?#LA;Fq6ONY)4(BwONX^4dx z1tMjIZg_mkr;dVEvp52&{vTP=I^(K(;14@Tr+v*v%B2N@w* ztJ4%*lNQR8oKanC+EN>RG(rbJBgNhBmGXdf9ARhvkYoOp45~kh@-1@bRcgsoKw`uTv+}hqFI@U=M7f@#DgyjgY7u)#S0}DX>%;@1ArmS*H2KBIn)l}=`Wu1e%J{Bz%V|6meXtqG)PvsH}|Q;@Xjk6L8OSbtF0ZZGX^`Ab$7 zC0p?^M);CRPU!K2k;?-k&kld_`7X0;S$e;R<^HLlDC< z48uf#cKul!R+jT-?&>V?oU;29>~KTzJhKz6v=p=m>V0g({(+tH1Zfcs4iUBAt~{=* zVFcWCgSBds^=%3($!1*O_r9>>Vg-E;RB#^UXV_|~C3hwV=@KIJ^1r%GmNyvr6vB$! z;_$xTMnr>=&u>l?Tp}-LuY=xG_&oepiQ=UQhP_qxIYAYeRPB+f?d%X=FQsG}0cd zZ6aEa`JztRD!0=tw!3CqpF(*7N~tg1>h9-+k{Q>Ocp*l{H6Ty! zY5BHZJfc?t%o=X=>s954f0uC7)?78oy?F*0((7<%1r(zi`kFNl$_T|eEh}vMe3)P( z(qVp6RpAFa5#WmcKOMSzARo2%?31+!RS7_`E#S_B%_rW8HpHRMAH%MSqb%@M!}H5- zaoOwZFn>8vKYId4iz*|l>S#z>2v~ETXTskUlRZB=P=#A7U3o?s)$=dyXG}szrUBwv zI5QW-dj|L|og81!1HAAbUXHfN?8%)*~BAQL1i0u5Lc( z4zgN^#h2o+i1ZZWI6!(@NB&MDKWS4qx{ZxiuKU(ceo0v`on4kM+b@7e!P|BTUDcM=4&2jW#4{2e?kE7NndJ(0D(z<;naM+21fe!VVgWV;}RNY_11S zF7Ei$R;IvgIq-kO z_J3FU%x-V%wA=&tW}xi@-5;D%}cZiTLaT3RNEKmh!v3vdJT0ZHm<>g%&$Sq{eNuwkX_y{MJg= zlLlWdw=Bd8B@S1AM{p7H$24$u4C;94K+>Ids(e*0d0|4CnjOffgSUmF8cg9{liCB1bZd~u5HNkG{dErSc?K3v z@izRp$q2)5jIs&fuGPAr=I|?k7*8~%uGQ+Ur;)K*_;KH{zZT=J%p_&WnH=r%Y)&Q1 z%L33mer&4n-IV>b!ovk)-|s}ZR=1B$rk~ZCBmi7%(+{)O56E>0NDsIp!*Ns$JD~-g zOSD?`7$09k$wyE!bL1{-x67gi$&@;mKOH-GI7%UnV12k#cBSPAF@prYi+dWdOp3s} z5uPC@7aZJP%b^sAl$!ZJXJvmT@2Gp9We>zsh?@%wu!c4 z`vj&%m}HrZ>wuUXNnh+??9BJwwmfeT)hN12ySR7}zlld^Wbqf_KT zV$sB<9_Dt9d%kLN3xgo zgplp|Ef9M*#q%32_I(b8b}`+uJER2hxdtc~Ro%&6CpnGlo?b~rHUUP`~iqG5CU+Er}6(=@e9`f#qkjPKg7)cjWBD zb2LJOeS85*y4HfJm)CU&yubJiX-ad$)o|*a+S*wOzw?m?K>hLUH;+0rX~8^YqCEEUwWctxQ&?IE(KC#*AEFK0Y@z`>{v+Dci zK!@Lu5+U2EjdS3~Vj6^2o-0QJFLre8uD$Z!D*-L*$WiRMXsi z#|GDAC5a5-0ua>*=)jSGcj?(zLp5;Gv`%0#qCkd0(`O@2$KFQ#1uazSy~2yhsQ^ql zGb$BU9g7ZLsJ83ic1$8Ik)JaGyXV?2jepq?)q23U_V$&L+$0R>OJdVszg6+!2?J>D z&MU&ol7tdz45*2vjkrffOG0t=by*ej8)rz{D3P)EgR-(&I-na6AD5G}9@&tkYhOm| zFodYQ4M@G=qE@}|rvsE@C=*b*b!lTZX6ho~E7@zc@XJXj2M_2v)vvg-$06b=|2i_q z4{kAkwgJZ-ymG3NBw&A~w8FlcEpU!ui89%gy}sD-QU{Wt4=5MPS@t+q3jM{B7&i0d zw?pn492?AtZ;x9Kygr?^4)c=ZNZUd<%GjPtAh&&~r<_&FJ>_f= zinS8QKcfu%XtuuBSca^$1XP0kzdH;2zI$%0v0Y!3?^9cjT(1S%RJdkd=|7bQTz>He zA== zdvq4oo;CWPB=$9SYy(|n4&I#&YV*~hP9lz{yPFxwKLf#MGmGgLQ>@(^bf`a54?PFn zn2?ZawYa}#$?{dv~6=9wIj9HMQ# zpXlxzYk=T>*x)LSn#gIOR*J5ywpUq-42P+RpxRdIx~%t`EfMQJ;GSTm%AK7^!U4C- zdixMfMcvy)eT@g9jb{M>IdA}6-Y_&Am@SL-CN}f#TM337A=;1to8ye)?RJgx@E$R( zk4OU#?{{*jt3*m{wvFfTEjvr z9fRPIKmN9~QQOKAt%tqza3=BvDbCs86p3#Ox>JlmVi_oye)x4oh-X%-=tS`#gBJ2f zifH`(&FZjx73-t|{dEuRH6It?A}zvjVUjl&dDLl1xssutf1;Rns%224QG|bub*FWI z1w^4Nu+?^K$MmdXEQ8!|PfeM2qJSPhKK`ZI=k~?!6rkhqgWZK2(uf&pkn8DUOC|ST z6c(*ngjPm9G4y}RfogcJO6d-e(e+@}VTCFTJT0CGw8;HE$ejo#%+$S(H*@ z9?j=>g&9wUO%%Ysaa2nT<(qDrnspdA(4I^9 zwdkR3dvbx5Wz0IwlAV+W$E6N?H4K(2qGl2s9{Z)Uq3?6RSBXJ{dI1pwCSpAgv@{T< z{K9_}lfwZFxO;});7lhXkkFHhcYB5_NT`QkGs64a!h)c-*eWl=4AyBAFbQB%D zYW3AK?)omQDrB?6N7z{cNH;z2Vd4BRjt$vs0e;Fn@B66e0djx^u-#oL8~xcX49@BX z7vBCpTE^p|8_7mAh!eSJ6}m!CVn40(KtgJBw-m9L5(#}%Is1?P86h1xM!zhRpU8j< zUQ>G?yPvpV&8B;PUBj9YCp+@%6r^GSd*HNx?CpyU>*n9$j{EC2GE_Hu7JtOLX0d~a zndl8buYRV$k@=wPHFr`|z$}|u=>ZuFhrFQsi6eB=$OuPZtT?#bhD*xFmT0PZSWzbF zzRtFIXSAkHI?0K#R62c9p2}MJs8PNv5fl ztJht0infUPP32SF_Vqd~%_RT({sz-OXvx3KK%`r1VA;SmHvAR*AM&Hxzr9vO#gvB7 z-{s;yLlc-tVc#JWbYuz1zg1YULgQ4sAHSY+eE7`Ikbw)}NA+qbQVoRf6DQ2US&hqU z8SfQQqluI{$)QKv^|~Xj+g#!wD1)TmT58AK?@I(^4!IeO|dp8N|H87-)b z=^^^J*j9dx;lp5zNMrUkl+^YA=&%HC2p18xl5QZSQ)Ed}Z&$I-3&RhaxCLgiiUSvQ8XEm(Ej|tJy%cl}P)wWg+ z$*so`xZvttUQK#OLu)HpD}M-xV+2%J<|iG0Tn7s?0RQ@bJ>&SE6MT%S>=y9Bkm`lu z6S_H>O}L(DcMTv-cZw3F__Dy75ucC9rp^AaZ*F|Yk2WfM4KC6U0m$PY{m~Np?Wh@?l4B1#}WJ;F;=QU zIxT0slIft^6Ydg#m)W-6@M&XI;~$gSs&xzEAq{?K$JEoNy&^l1VWqw&lJJMytHpoi zPVpQ&mT(oH;*S;WTw%M9Bg(*JGWsgM{Y;`&Zfw)reU$9pC2Q-yYBcyXo;`uFjfCU6GhmL?`h44m ze2b5#H788Y(>)`xv{r`*k+y)0X7_Q0tfNnwDUPh)M?c9)Vdh6{zdX@xRDIF3FE!qlI-fcOHnt4f>_~&ovV_q>Fy);=i91X** z9~4WFZzTeEz>nA5q@Ai!*moD9$KR$)AH8LOk5}3Mq=9=}pVEA~hC8UeP5!9?a*3Pn z4*K@SHt@sbo+$-5oL#mdx=2B9Up)_;|J_FZhX8M9uggCf$t7d2;CHy(M;f^*!x^@S zqEpSw?h@UOM6Z0f1S>Qqk(V~{Uw@4>a^MkYx#~%sVI=v*UH6qLQb!Kl2i;jEi&uP;rKvCoJO-IY zQcB<@xU;sV8n;B@r=r%$f!8A}<`7vJ1t_++=m#h@vBDj0wrmX^`n-rx!2V)}dK3$u zKYn)>HTsgUfOZn9>Uw+i56^~eqm^ewaMRQ+vWN3Og*@Cfw6?CWwtf~&Q zYMNYFG3Vx@^j8EZhX4c z8r_Vs*R=9E(4o^!9Z$ay&pnnazpOBwHwwcAf!^xsx7gCE$^S8c_%vGqja@gQ_j5|K z31heMZxpuSB6Kg{FCIZu#Yc4=9QUblqfq1agOZlLS*lgaYW|X zd*A&&pZosv_wp7cLX9jd2( z+x7E>YZ1@)Xyek8PAYr8pP4b!4Yb4Q&0BfvuP1%~{4DD2AxBF-2W~a_7js8goMIDC z)PB8bi82|Qo_0x5CUEXyZCQFA8{_8Yta?GKGJX7g`b`7nDifI>9#~cs(nh6+$&`L@yuTm-SV?)koxoR>F zCS!K1zRuo$Vg1%$pq<8uck?)VN;+T5l;r27nTb7m!!^-!v`jiONQ?eese14DKPoc} zAB+m(R`nIqcxOZe0&{Dw4*ieTSzG4O2D#>Iruw4o`LB!#PducE2; zOJaHHII?cG@UPY0lW3KuoJqfTG9f*OPJYbYBK_eY(rn-9J_ES-vCoy^x0zM!#Z2@x z;1y}*WMZydpT?_%V*j4=WRfj>?5C~H$t+5JAD?ewY8!?|xfNx!qcSIhF*J7FHStfB zAKgyQSW=>*#X3GZf6lK(xh6RCGkCmZQdbDZKp@ zJ-7ezE-6hU-@5jIdQ$$lW}w9wJD+zdmBIve>iM3cj9p7@5tc^38b!T%{nCP5gU*Nf zH=&XVuNqB*lX;OJ6=v9GGAnQQU1$rsJR_$vQ8p~%GA#S&!lv7U&Zk#qY#*)PW1mEd zs7Kt@i(1~*sn@i6c8(Uw)!^xMxUDdAi&pDok6jl$`k%^CbaiIX?wZdMc{7a%>x|k# zxKhxA{D}IN^(3uK-`+=8q-a zM4oOHhaI@(?JE&s8PB&VhhW(vQk0Z#woLhG-a!V4u+g@2vJEc^NlX8aD2kFt%DSdw^99&t>-h&9@?4OYkCd$Qz#z#raaf0 z3y;zWJBoi!ySe1V$4wLyuNBxooani}rAXqJlzjwKNTX1k8D<-`yqA21 zThcWGoiZ~E^%R*~ra}(--=R$u9?8>^M#&dW+JD@pYGJr;xw%?}t@gj7DAW0>ajI_n zMxT=HlIFssW4PBL&1D*abpqQqU@{-%UB436GSjlX7bEJzG9t^dCQf}*Al_kzW^{^aFGJjcALGR6M0Jms0Glhb9{bGyw| z6ZRcPPwc;JWv1Ad^nE8?#D_fX?4}QA!`A3K*$!G34xG}AnTo}?npR8$o*gh@$tsDLd?8`_a^^?v`T`!IiwpYk7 z$(?pZK10Tfo7x;}8M~n*e_n>xD7IJy?qjGJxUI=KONgRmW{&t)EL$2aQL>x&Ugk|c zKxdF{-r};{?4W1AQC&K;eQj;{-*V;Ab7opu)wG69`(0D>W6q+`mO;URunq5I%vi%g3V|55wZ6$6@m=NT2>xrH-Nhj`dZyvo;{Zm`li-#c+? z=fReT^Kxc6&tUjfnK%OOaQVNN6k8xszESj|rQlVj=}Ab+?ni3ci*z3xk}jW#(%>qH zva(A4Jh5y+yjgS&=dxv4%h>fYEEjxYD$5YI`%X?Pr+8v8xtfWM#wtCcj1s{0ypW$k zac=INd#b{Grkb9FC5z&6hYWkP_)2`IIhR?o-M;a3RC>Lc745RxBPQD1SCkp(Z{oLl z+kUKcO-qECgvN-Tqh5Bm8|$SBxiw$L!X>>RTJB4HxtyGR+0U^$%255WTWDd(D6@=l zn?h)|(1XeXqGsmO5MCD-2cEY+2zxS4^z9!<4#ubu#St^jyBFu)Xj4SDmJ0H#2+d1) zv2L5*>IDBuc2%d9BbG9M=+nKGyFDAjw;r_7>QdZ6JKv$q9#=SbOQ$53vZ7c%sBpxL zq`_vx9bMW-rMgnt{`xni_4sR7N=gi~qw##{Ssl}*Y)&SV{jP=0Bu{jh`V+ zE_OZ=uXAy^=EQ1Q$obktpw?RSBQx>klFxTKxyq>&eO%qlotBynXCJkblkB-;Iw%I( zKWS6ePRe{j^!@rc9ooD*DHLS)<6XoH57Y&U;EqpDlqSEiulP4xi=KDCVZqg&O-b%_ zQsX5db!C0GLexLTVDjv}V$FC^a(dc$Vr`bzs8i+AQ$BKukBH9u5?XA_$xe(Sxv_;8 zdbhq%h)oIG7hWq!)H7?;URHLHwV+`9>7GNOH)6UoYVeJI!uaRs^b4kJuj#E>T=VYH zkR&?T?IxMpFi@fmJ87?VzZF)a>ui@0ByG+sacB3Tw5h;WEK^diOpJx_YA%Qcl7xy? zQN^K$TKwBiLi01L{T8T6>fCUz#FRxS>c{w(5q}5SyG2Txw2^Ii(mT{vX~}N+NRnT+ zZjObdxmns{K}M^MIXg#AFRrU5hgZ0=XbuV(PEH%dIthYQ-}V>q{5c`BAMCY@S-Ejlr$0m7rx@1iidjsoZa-sac`{G5F>Ue5HTWPhgm^K?x;g*5BSCnTaD-0~aSdfwG0>Po8Y zB`8VEM{?3u=<}goaD=v+^46phRr8&1M0ze<&JW&s-z_VOMVpTDYEXm?ldDkt`}NSi zaHyM#it<;N28M!WAbt>q4^RKVk{c$bSbikZX(9f?%EibjChJ!Jz>~w3Tj(?06quGk zyJ#=|2V*r%#QT-?2`K91*vC8wZrdP6AZOkHVHP2MVGS2r6Gr!&FmPj|LZLadJM|W@TXbHKMRSyrN3nOS5*PB7jkOy~0wHM8|P83zZyeplfoJXH#R= zl!u{U7EKfjFDtua_$4o0!Q{i4 z(0;*BWW;h3=KRttqJMAm#gvjblB^xZ8I8uXYEX*`zVIS`RFRuSg13`pS^d#U^B1$F#p-CKW9B9)0Ura4)hy`zay2H9rKj>yIerJKtrr~5qU zOM^6Kt3<B@`3)oITghfrq-QO-*mp?*>x5NO}tf2)E?iI zC;8`SpbcJ_yjw&P=4OpV2X<}oqhedI1{4i{&NNY$|CAzPGK@1o84rYWvJN$r`wnl) zNDq|czW4EXG-6Fc<%$xfkm-*7M!7n=B}$pw_j&`@4Q{~u6bXL{)_j0W@2jHY-KMxQ zti#D~@v|n>gf?NC%e3ZuV!tt7rdd_woKCZ6`Bg*WpQS{Pl>I6$vr8*hX3HVZm0I@| z1g|{ldM%53HF4x=Qp~Q5se9s(utZX7Z;*n<{gg^F#^0>vue7%&VR!kqV`%K~K{si~ zHb{!%-uSm}3Zh93+QR1dIo>8C7cQ=%WXAnvhMxT@Ij(12QEC?smqvsKcb2EV1OWK#8*?&0QQEt!I z(zk?246GM1Nq^mq!Xw&^T{hQm>{&RiuA|bY@$IkWf>%>~Z_Sjeh@$Jqo;{{a`l)dP z<&d@eROrt+WOUX4cwK(GAF7bBSpUJ16zqB^8H<)Wxc3BxdR1s$a>=o+Polv7!7B0l zO*|x{oc`>iBq2M0yDIl#l8;HPg71Ehu35H`OOGRcD0;Ppc8ht%C%R@ zeLM|wAEkfBT^dNvo1Yk;c_XG-DjpIsW^ax2`FHG*vS(armu{nLJcCLsW>L!Y7Ae|g z!R3s}r<*UBx|oKO6#9_h| zteOp_6f(7Hf*Y<#2ML+S%D$o(9BcE%S14RMtvXl7_jFIXq_|Bl3L+DPFUWV=eXXdH zzznRq)&3DvpkMZST+dB;_ebd@s^8V^ubA-RtV2YCE9L)CeOQF}V3TyFiHEv^;U{}H z$(6;yp6C1@+Sg=IMEz3o#t(%Wn@>9m!+r`ox)|N5V$v;XXeD8FIoKp|vOn*SZ!$tLG_!M(ceS|rd(#pr+(EL9 z%-8A85tD0LNQu+P!@%X}+;LPg31VkT+Q-B@bDGBVZM@=nrZWi`3R9{V-mO&wPPMvK z4~;uxD)X&X&DZ5uR+E+vJw)DC<9k>Nhwq_Coc=AFPPwa6?2OiIGMc{- z^DaIeUC*RUbyjyHDRj!|@cH7-;gi&AZPJTY?^r|QH|JOo0?(&tH@|P@6o*q<_NM$X z)-};|DAAX8x#?`dg(`VDZO^Fmg5C*-w>s>z4*v63dgcC9iV&k~6=#CUmKZ{`ve`32 zyi?ktPtoOR*FEY=c1O1xl*7N`6DZ$>`dO%3g$`DT(sW)e5X&EBr%bc0Z=m?xxz;~A z9@O@f4O6}}62W25&xqSB7*1I4t(qiFvcMspYKc7Cwy*MjS=IFm&mMpv<~K^r@SR!6 zUzhThBj+UJ47(9VqjZ6jEQR~r;E9uxAa_{b7i~d=7ABx~nEz<9Ahn=|_9_LZu(qwz zh1M_{N@c;H!Zw077dXQ>Z@mHOe`A%5!vsY+&(TF#cl~Be*a~ovU7vKw)H5Qg8pmWL zSIkt@nbz$O-3eGP+xI}E)n}^Oy&7(`@!G-<$yw+w7N|$8wdy_4k(J2GV;}lw?lz}S zX}$AH_PDYj>NR;-!P||+Vtfpb1XA`bHoai%v#BTYZ-TSL*ZWr!*B1) z2Nb+{#eBQK@bzo|uZJHr`j$$}WiLqiFCVMoG>X7e@Umr728|D7y$a;CRx@4 zszbR^xtIL-B1_|8G5h@~5^tjs5w!D{?Bm6qb9GYG`9!IvA<1X^7DILMsm#}x{iJ1! zipMN@F|H&E(o~2YsfwEeZf|*qP>-Bz+AZTG^Y0WKiNxSA`-XL&HM0EOAMF%d${kk? z3tFI73?5s^&g$2zd#`vC=bKLC|7&pH9uZlpVX<=CA6C?({(ky(eetKkhkaH2#}Vxz#4uw)hWn2_*b~!cp89kC^n7BM+FsC;?dciTgv_`PKoB_&RuBG_t4XASVlV=P!Dwf^;c`ZHI98hQ`zd$R?wOn zoNTCkEwP9t$P*)7|6pg4o+m#ewqqNq6;bmnzq#2FUp%qBuG-l%ir)tJCxaH&7dQ1Q zrUy`(*&ec6%Xs5P-`FeQowL!yyEZ!~h@iQ#e&nxOj}f|e1^q%tn5o9i+M3LJ*Byo* zc#Br=Nf<64QW*^EN%ua;^ThPVOyU?2xWaynJi}yR$GX3qt=Dqq@s4B#{X+%=*@!%0 z?;1ZhuTB0&+)HwPq)Yz|=CptWccfmT5$5P?0LRdh$uPt2M9A2K0^aI^$o!4hYf}$i ziqo&&S9QZAAbFqjo}ME8B7Sl?6V7D$8)P zp#e9qBVGJo`K6zJ!(Sh`*?O}YWQoz289L$mNA_e-qW!H6u7?`%E5xRNd<RtDq^!3p~GuPZ);F?hYPZGi=j+elU$FqWWxq=_Fv}6pit3(7kuo zz*TuzMjO#j-h*+tB5zcTpWoNNao=vQn<1xh&)4c;a`CsXFITpKZllovF-uLAkJsFE z+sO{0gq+IMZY|?(MDI$?mW?mJ9~ZSvy;7?-*LmA(Zax58`Jo&&^OpxP8m10#c`kK`mlzCO-lu)n*!(A4y{3o-*ya6QZ2#TZ-H<@)VPQOLmwV(6|`ZpCDylK|B zqiKJ&bit#3cWRhvI#TU`J$Ne3)&H?ymZZIs>G$2Vv=E=LK8FYU4nUDJsv)xT|$zOIVcU=OCjp1mxqTl^W#`$4ki*dgw8$~*OY&AsGxrcV5X zRq&G`nSbEj3*wG7jk>bmhchgHUDB`9tbeM4-z*!C?V%skZBNHrP`_E6ck=!jS*v-ZBBGbItlWUx2-H$FJ7Cs>E?S^@`H`Bljb1JOQ{KRpG<9lcNr$$0SzWg>+^D3chU@TTVr zh8B$KZ>p%CF078k;g*$oFj;G8Y+P}TY{65hqt;{m44J`)e&Wvs+=Y8@{O{iPy&j8} zJ&<!H|CnPmfg}^QtP(Gwo-rbm5{6mTF%+Hpv z96wz5KF)V9F~mpo=d8=HEM~pvw>mlsZIr6nL#?0M%Cd+_9S&s&$#N94)$xAM3n9in zMoudEyQ-ertKerAc;p7lezW_7LEHwJS2>OS8-bF<3}V)?H2DrVeZ{-I z)&Fj#E$3&I^Va<{H~*V2p2OSzkH~x_Ka}!zQx4nhR=bR`OISm9gG9q(b^4(;`tM_d z35x}ppF^xa{&*94)BIn)p_qN&?i0#+S=o-f@v!0O`v#J`Z&F523fErG550byTz58F z!p|^?I6C0l^JoXkWxcrSohOxI;|3UUnqk20@8^#RqDsr^Fn5X_0Iw=*iE#-O!n zM%DOasClN%Smv(@LqB-0%jTIYjT4UR~w5kRG49_3@JpOV0*3D-fFTbB@ zN=kNWpT2s*%+Xo0MKFxt;K|J}l))3GFn;k0T2Is40MY-vkPZT|jZ8VBs+x=8z??ZJ}jiLY>uDbgpf@*FMi1RJ%N zCpX`7oVRL@CpxqZPXoT+?8xHvlOJh3)X=79Om#C}9$how_feSQX1Q=X^MYGa!aLr= z(97cXq|ZE`_4WKK{zmqY13{k3d44PJ+j%e)MyV{+1~Y$Az+Kjfy!<<}i3uV}(g9at z06zg%k`$&aD3Q;`(OniuqrUm|nUgbaj%u3Wb_kG=mpVP+K>h)`hlv~*LF`Jk!ot;= zwDEK^qUQJ}uSxrkC3{nPL>}|f>|I8nI#Y=O!lPd5S^9n!*XbEpLWocR>EX*z))V3{ zPxQFMmt0q2g_%v=@gd}N7^0hBLop~YjL6A5i+cA?+HGa_4CmhU~NcU za8CamIkf^1Q_<8_yC#*B5(z;!E`SP+=~x}&=Y}fNRX<9rbP9giaGiI2U*#nsOh%y$ z6Fz!H)~EMc7$4qu`lR1KSz}qPhoMk@JsX$k<|Y29=k37F z8}sMFU!VP=hP!-C?d{1^%W=bvYdluVGFIudeow`qeMI5)tnO2OFf<1LYGMYfGa+^7 zNuJJ#(t^pN)^XY@Wpn&YvY!cpPj{883$&!2Jzx=CeR>CZJ%aPzR$B&(J>x?z z#A^m600my<`SzqF<03&vh2fLfuR4zhm|7&;DHqPJbv*)Wr#*A#9AwVp0J*$z<^XBfd8RDusG+e$i@@;uu~d%vf1@Z#-+R6qqw2^zsni6{11=~jGX$jZ z?au3e{7g-VnYv>h`@B{mp(lAhe`R)Fdw?dy zZExIepuAbY{YM%A*v?U=>Az2S;7PtuXv$#yjbMtK@8o~!!Ui~72*L^a`{1Y<*s1cf zBcAU1Jmc$;n@BDPoCUq|iPjGBi)qi9Kr%buGwiJ^+iX5MaU=P=9+3d9>u82R)FWE4<63HH{P?B_A%Ihp;s?53eGG{i>q@XIlrWG^;5O7HrXXaqn+Khyi*+ z5G@GOFanC=y!AbgVknd~MjqpWbfW*A4kg&3aP(_%00S-1>FW8=qV6K4tGN*QFK{Y7o)qT((=RKeVJ4vXvjNeC zi4AmOV9x=g5D93ubxUE4cyHOuWsvrOr#b#z0jloo&HTu`OAoKB?wHl}yYod0_ufbe4(SO)V2u-FvSob8jp*Q4OFp?-9Qqz?lfl0Qp<99w zNe70KQ#X*s^W|=!r|p?rPVvHrwyP&_!oJ)J4j5WEV>{ajPP?tP0`pl6d2b|)IuD}s z8fXBtaJ?8$$okM*0_hD1Ix{@1^vD)Zf|t&SMTx0=YWam=fgYRN+(*c0+j zu&V(;2>_UP!VS13&F(D7+t9bCo7{%Udco{)1+XiCwPE1p>mI422DUD+HW1_>ujf9hh?_KVIJOUb2l^_(_S9QqQBQ*|z)N1hK6-40;d&`ZzhidnB z%LPL9^=n5C<|R8V7fk+6$o~gB9N*zJsf`pqpa0dPLli>TbI@z+%DO;I$G@)0khzfm^|Vb+ZSHNIWc~1i z$B<9hAY>?DQtxwCBREdai60E*8Dm$*!d~~wm7UN>v;q$ZHo<-KM91hyXX;C zs=izZq-le#uRs2;VQ1CmqP0GO9UH96*eVL;f?3^r90pr?1xX#rMM-q?K02K}0bo-} z1P3BI9lj4XYTkDCJz!(i!08()6}Sjj*hFxG_!^Rj*AWFSa5xsCZ}4GQatgG(z@>{s z&EWiogi---Wjz@PDWqU&j^{np!;t5{lOJA<$1?dj^kbKxNtPJ;47dtGx;s9)x zV3G-2v#SS@EdTZ_rxHpFKAR6tK(&cBYB49APn~Du=tI14ffUNlv$`k}=$d{5UHSLo znGf|`lz`cd>5B@^csMwMQ*5j4Xc`E9D_o5*=NzO#uM6 zh#|25pL7Vq>~%Yso#!L?tyYQdoN^AMqo;G=?p(@%Ji;M@%mZ@(D&ojDc` zc>euw$C&{N1i!$IIVria1=YqShJ#gk4dHAA(BdkVy{<$Mif|)>Mm;DmHDbtK)*%HP zZvZg0I6;9pH6Sz$8&qz?gIQkF ze?^^lbw~jRSYV5?UFC}A=Z_I>@oiChQ-Z-bD>=OD_n8c!dv&jD?jgpOWROFwy9 zxr+WW<`*s{3r@q{^4nuRmA(|p*jZiK7eipH7hEsrVTu@P&pdhtg7b^RppmIX@QV&^ zXhZ>o1@Xh7S-jMto)u|+g8c3-98R5q!x%73sP6V4vf|)iDDU%9Dh;Vps zBTUXgov8$A7h$dkL7E$^vXK=KV0~d5PIU;u=Rq*qJ)KbD zdic=rpLt6)3)a}R&>@4u(XR|(vqRdQgvQs@NB~ni`@*mlf)QfG0gO1$N$=p|-8M*t zJNE_WHQxdDAHbLigtIT-0ec3VgbrDCb)wK#VD)4kMaLiU`30~o49;@pEf*_6A;(bJ z6g5;m0=f&YL&nMTtp3ZMf>3$V<_HGJx~_<2pV!vKvMXTO7u>LE)8?nPunYtd$nJSl zAAANzWhz2gPlDs@CLp~q1BzTsvw5Y9J2(#)*I#)w(PW-%x`0KAAq$0a;8t54huq;m z2~Ih1x%Y`F;sETWxF@aPQy*|y5pTA$BlugaG7onJDd1SP1+J*Co}3Ph02^ojsxhcb zHh>RUPgVhDyScRvc&S<(f&^HE5kdwvK+!yRLlXu`~gMz$gVPAA$9xtb=$^1vR8e<-nnmODjdzYzd{fK@}bZ@ubjA z0GK+zxo@w+O`&{pEWFO?kku>*UB?hx{>&zOhuMY0V-DQ4Zpr`61f~H6sD>vbo z^$brr?}l+g8W0ayM1UaU=z9^Ilv{1=ip;Zd0`Vk=gMaY}@-akT6mg;&@e#!~YS(_( zePxUg1xKrrUO{M1flk>)umy_-aI`Tz!Y&3ZzKP%obtxby^0_ZN`nzY2(91>Zi}K)eYe zIB^DN3^<{JVA32wt*MYO1)S6pDx`)GdrDB7B_WU$X4$_bWXW8BfkB`-wis{NK=x(r z|7v3+)b2H z$W42h9D;s8N1@QS?a@b!z>B^cWuvBmJGabv_K?o?#W`@5;%di8>)KuGZd_#+!TED3 znE`x=esMyk6A7H&6~GxU|I-9odLquv>OP@@M4m7`jTFfG8wlYT6o|HXzSF?admyxg z>KTPHv|NUiB<~@maji@Q%rYl~S-ddINI7Jw>o++20j~ptLu(VE2ovbCfHnrOiJm>Q z?XE~i$u-CSji{5bdm;l&;qG?Vc5C9I?&<^ zEIi*?pr8-nat~O*?^%F_8j1$*8$Tgq1MSe=;DG&dks`~cyXfy;yW6y^R z*V_akxCnG-kdcAA6q(HgizmTyk*qy)Lk0pYCn z^eWid21?Lt2QS8ki)6$1PG!};#&)m6loQzD=}4F&9|BW^V2UnG2_}cNoPqOR!kmh1 zIA-Uf+Fe}OHMk&(`py36`c=edA}+9?<=PUXi29xR6}*Z_iJkVX{DU)Kb|d8OtnN@4 zSb!gozm@NQ1`_Y`arUQlX^fZzh`*}jpJYyH2kB)0BrCLRp z5XT2YRzXOVPACBMl7e#)j!TDh>0}^w@fO5(fVonnkgGa=F{JAU_@oBR3<_7b+Q#gp zvsdcO)~`d1+u;y{31Ad{;An=Hq8HF|9a=7>i;Oxj0ub~Xxc39{MF;^e?}Ck|1#CP3 zT?WS8<0WMJC;{}N9#D>Z*R5)%h`Y`MLD!%MID^@fQ1@b#zeuR;D-o(RDL zg&YylCdl_+01I>%SUu+LCwq($Ee#8Gzri1H1xyT%DGBmV&qcLoekTKq=S*CNn!f)O zS_Qed5iyb?-}ws3kY`|CL=i@ffxZ!hM`I1fGtBGC821_vy01Pfeen+cFEGXw}b5ruRP z1R>0XLQiC%g#ij^gi;T#!(;(M@_CqygvpK6unKt?Is%g|vi?ivhL$R5adS$a0y`v# zoq~0p$UzS^ghdcwuR&OL2#bR%H}ha9wE~<|!1)4!=7lJrIp+k<6)xbWUBXGpWEzEX zN<##vHrOJo!6hPAfC!kKRN}coE7ie8R(t0BGZa-GvWa#H-_sQ^7u~y_M&8 z8v^%+LheJDQg>#63z5R0lmhO;g8L_6QiufSe(0fqo+*ONIf8)*dY1+N^D;v(9ki!~ zKr~UvlI;drc*^R;ioSd3F(~QY3&)*OMB$JqRd-it5fo z>?-Kn7KbgHB-AAh>dN!ufx+v9U<^SODGUxE6emFN5sEv7zCc28)C3ZC;4`*;;P452 z-UbNl;jlS)aGMrPGGV8dUlBSbnn|cwgphv)V)rUSA%0Lu16%{>E^r$GPAK4nHN!@2 zTWlS1GKDY0?{|A-1g=@#Ih^sxs0->GsiY`o#c^encrT+-d6_;bxOFtj?8C`={&++1 zSiVzNOO@L=Zdb1!t$UT9^mMAp`p;T`Srtxwy-d^-&wkk09z4M2(kTozlf!-IQCYOs3RO4gqg~7r9xMt>X*<@azz}weYg|WINE~?sdY?O zZ`1u*_D#T`+DCN;SSyd(3*~|Z2b1L`gZ8qBJ;!x?Yeq6f@>jig-HEvaKFcmrP~kSs zkEM?e&_zCtQ)^Vx?VpBqeaesZ($`|qPq>+Cvx0`+w|hGX-Wgx(65?Bp>Tz}WUMq%K zuF4(rTxIo7{n@kH-J%}n`>`Saam}E1t|?u+s|SPLGFy3H zy2g?Js^C&DrTG%8Ir&ApvUGLd{r2|5QNv=y#$Z=>WczGHu9rF(tN*Qbj@Ot(H5 zDUqgrgxWhfadjw_6-r%1y8D8Em$AFKr!(I){pRM(UelA@k#+MAnx1Rd_m8ScHzT;2 zMAD;TwN;<-FaLe<>sRDbVkr9C2ie}lcC7(j)7pTGsJ+?8!XC7fll{81mU3^)x&1F% z)Gz$}l_Ws5y>8i95h@V;$@lSuoPX&EYvnF#aa+nlg(N+{MLc{`6wzN5<><>(;YD&W zL1Zsk3;noQdbqz}e9V5b^t9N=rBp&XRSPRUw9udsPsLbSJy;<{Jx_9n-Mty+x!=ic+gRT2;rl0V|M;$|Zl#YnpaHPvpSrO z9DEFuh2DOzYBC&6(Kt#^UtMVm9lOGEBibQ2OMZ%li*)2oROp(}-XrcYV)VwLrNju$ zktWgDyYe#&$Lf65l_GstMXo2*kJ&V0SQ$$z=C6<(#U?6Azq^w(tKX=-X6{h*aZPIr zF<$0mUF7g_DEWW4cM{M&U*!KHsLS{E6WTLujB9mY^y~-dUGxt%4EQ{iJeH+vy{lD2 zY?gIAwx!in;r>7KtogB8lljxfrLv4E6dN6P+xs(|d&|UlMx4ur_7CWu=V@9_D|!f? z1_U@1izHTd=1(@Ye5=q*eU=gKX0(-1Uwt_FDdEbmfk(4(B(=2(BBz!TLBxK{rA@xZ zG)@kQmHE|^I=F^rou3nm%S4{XJl#u=TLtyhwGm>&qoc{Dj=jtZ6r%!8hx@sC2{;bT ztq;5WOy$zjQWl09cE{|yZ!AP)$0K#^dOvnlajIBIdF0u)Pag|rYEiY-6j)AS zDl)aW)6>Uz=a1X16+ZQPlZ@$mn+u}pDFd8R5{lI}^@TsK)70Ot7q6&W+CzKQ4vtKY zO=gX=IH&7zFSuuC=YTh~|03N_$PZV~wJQ>NOm#%2>Xy(Ph?rPQ9T<9FyP)NJ6l&wr zm!VyHHf*x>&6sIYOnXH_*+pWsdw|4vaOqn`4mS$s~yL=OT zs=em@zfwNSBQ}doI%>MwZDOLik(Hs_vChZ!m{k+1EyuJclDx`K5Uc$7eo2y^={6 z_CM9>oHlY3lP01JtD-E?J+8&+hC_YI<3(;UIEQWPd|(R=+H_g8mff$zYN!sLA-7?vJ3C%UW4G)DK~<4PV%&yC54r21}eMczA^mgmc&cYHKNFsbRQ zs{=ax`0~mnn(^B0;Q@m@0aSQl$>=@P&S!}3n)0=kHThCq`$uAzE{0|y>DaiY~$sO?~?F&laUk`-#euo!?mG3)?euiCh>gOt=Qm4^EOPY z<#f8OAFfmNoBU6vn$vh^&AkGdc`_UxoBrljeT{6ddMXQRiYod@Q2Rw5m6*+wzd;K46zrh$aOgWNR+GAcjm5fP`8EJ2~Y!n+_N=>Y@@i3~DAMQZSRp$9r)+*~rjZTV2s=E}8 zXh*o&Elt#=9*+M!)T*tuty|TqwW(q$(Nm0J%H9gW(lc<=KY~G|DPK48ybJ0yK_bDGk{S4Ga^r;(VY5k=3a(88*C|cs*sr9+?0k1W% zWKaFS|LMmv1+4N=%LQJw(CDPMtE70B^o}ZyTI1VRok*I+K*HQ>r!@DqOSNqZ`>K?c zQn{2j>`Pa=c@j>xe^hqwS@(gkb-zP_p7mn7pL8c@#@1rd!QZY ze7`r>>9U%(ZEg7>ZanqlSjO$79Mzwj1nkUkaHv%)UE(n1 z>SoK?+T*M?hEyOIfAn_mJBtuy&+{}hH5ola{mVUMXVCS5`7PU%9{!m!uhoy+u(x$w0*xM%K2 zx|8}x*I7(yaHvH#)9&|ox2Aj7rWcOC3O0rOlruLt9Ur1k_Sibp?=bcgaXJ!MGFoRr zEzAyB25vRquANWpZf*N|Yhf_yMu*$BeJy>T3;EuM{kp9y9Hj1S&oWDHspOi4erGV1 zE)R6<_sXRo;|&MKlK!VqH&eL=>89Tma*Gl94H^0gLB}T9{9|rmXx^hv>&?8wtfr-7u1>eL ztKS)p)tIGU%*<92KFjSJS(>I^Kc6f+%lJ;me1Mot`rUMlVn!hLqYwuI9M)yke{A-Y ztx$3Z)>|0nKCdi!oEbK2ys&whyt0_*H9|T3+c5bQIX*T)=!1&}AML%|t(GPtLID zwGgMjYPHJ|d*HqTvsRdou{)FOYwQm-k=E{=4?V;;*mN-Nwk_!Whcij1pN%M8-lnoq zyq4dWCA6Q+wL3c9oL-nUgW1`R0@lvGdf5)LLG}$|o9^5@z4di1^D|7M1`GY2%uBjf zoxY`mcf2g=V9Zj~A-|j+>WfCYxbh=@1I>Tr?DmGt=U~|Gx=j}*HHYrRUDw@DINeB= z?roUr=w^a$?n|qwH#$8X414pr;ZUB-ZS&Q8*qKYdWd5a%R!KAKmWgal&;;@U%*#~2 zz3ZU%n9Z)TRr~fZYk|E!3)E4^OvKaj{$W1CEct|@RjE7dbQcm=x2AjjNpo>BO_Ha5 zX0Fa=-<-`$IHNV!8B8X#v+ZuuTi{qrTc(!Ml7+87#`ZZcg0(mFmk6diPv$j~nGt;11C+~lWz#+-Tk*_)n{bTKWHCZQ_{$73wLaT9p z>BKd{Y=oi52)aop_gzKb`GOs54g2k>WUhUvx?$h1Zigkc+?Bn4YqqzerytP{u25N9 znD2KunYK+K#n7RCr8SMimZ6T1(jm`;-L*eHhCb-m!x`Rwp|9h_ESU>~_Ku{rW1%yZ z%yzno_O5o>-hMYS>;9eLptUQR7<7io_@rGw(zkcEJF}*<U}@P7|+ zGG({@Ryu6!;t2S;RKaKypbn$N#f%>-Xyx-7YNh`>YT zFHTPnk|9d^v%gsaN_?0;s-kxb7k{yU!s4wS7H{#qwTs{5O>W^$%HJBc`}`@2f37>F zw^+IOw+cY*=l=f-o$m0|?V7}j=lvo6(!}B(NbPTJ=b<>;-i5`7 zJ(Q+9{W&Z??xEQ3PGRvG52dLdOY(*ESFd`g+F2$RU-wYfo)U}id#I&{=&<;yhakUr z4`Im^deacB^-y9*2Elp{RZDURwxmxJoNXT`xWGfjEEz*^iHAa)H@nJ1Ej@V$!4xmj z^LG&J^bq7v;X!ayzLW&_<;qF$n1@<=F3;Her^(yzp^^LQYuxt>`i}!?O1|Jf2FCWD z<*O$5Wj(=XTxjldyg1$K8^`ae9fufi@47o1Xgs=0><^5ocCj-Y z7{~150^eY9W&V8@*QO~g^3Ag6HdfVIUd40xAamZyI8T>#v$%1O){-nvjAf@dU!-X$`7VE@Wj67pH6H5j^rCU!Ellh-X1R5@q+}d&&08v6VxLpG+(TJAXX8`r zXVX?=L8}c`onnja?r!4;YhFR=4qF7JdtB=7%Tl*5cjL#jj97_F&)AnzdXW!vrz4GR zYFg%{cU_^DKF$|J>2sUza&0_o{cAC=IdTP0pS@W|)FvfDzWUoBo zp<)J@#saf2>=`pllf&{2E{Elt$LdV^4i6;`TaA5Wad&UQctcjqQAlF~X^Ox6yoa*R zVvKL2dC2QbUSf|ud-jWJ$0b{f<;;+X_K>Y=o|x6n6c zbbfX|)ELg0i(d0k;zZlnz@@pYyq6YS3q^;LqY_Go}`}0*UIn^0kZ>xQK*|n@)?i8xA_bTgIRO7={cPCPf!f;`Q{OMFM_&b4dId(O_l8sDKHe-hT1 z0oBs;u*Rmxyu{kG+MBquvBpiOtREMQ+l|S?haUXww5+kMDYjYV>J^r6dUDn{$&@-> zwxaqvla2c3C9l1{Rg1Sru+`7E7hUQKxBhLzsG+e*Y2+4ij2DVtzh~)9Z_aLTuNLL( ztT78QV~YA?woTWcG8NZu@H8eLddt^5_}P-EG2%#X`LV5Z_0RJ?SY5In%#YIU)L)%e z8GjwYWKZ%MqX~V7{#lL@{<(QZ_!oJ=gmG*bON)QCON+lVYbySYChh)h*`Mz)LlLIW zXP3x%ov|&jiFz!%_9@#M{O7X^Uvd}j&n|p3tup?5S@rWj@=%;-HSj-Y?YHNMjU0bk ziyF&Z(`~G^rP$bLlHJ(ip^@9!W_0eWcB_<8qHp9*92-sfaO~W%(SC0(J$-CM*(>G@ zvJpbB+LOpe*Su;slNfdK^1x8O@wN_r?A8pU9bV)ZU$wr2{5fSK?d@l$m5uCnkUz6* zWU{r0gG zs|+trTV;5;O@Daxl2#c`+go10q$PwmX1BaMZF1rLX)%Ql@kN^^XY^mS#f8}jKYTIY z;==E{d%WZB@d2ThZssv6sd|^F6il(y)8O@GY$jA+VqT4*gOHO01n~l#jH;pe@ z@@C`9Tsq@x(zg;1(`>}o=ih96lg(#*mwU7E-u#=5AM}7pqj;AaZN*Pz_>5n6H-FuO zpMCT;Qgiw;;sb0Wy8GHlz}Z&Nta+%I4`oKK&D^Nja+zpu%*N5p?e2oJv*A?pe4B~p zr7jcA%k!CNaypcLWiv8k6*E>h5@Bghns>VU-?t~asa^o&1bnJb26H)h4K>=s)L%d%FmY^)V5d(gG!Wlwmh+HX&gWzX8# z&azkConLcrYS~-16qdd3QvH!j^#KKj*{K3qHu6xlpA;a6M`k!~Pya#=U+dNn4nHk@ z)Zu53HOj-!w~0CYaveyR6H1W7ugaD3;qzH3AAW<&@8P%R^LzMRIzUtX0m$JG8rB^C zgw7C6=|T>F%0t~L52Y=ZF5!=vV1-r zM=alyOW1Ojg8haBS$>Zz^W_h@JS~4b&C~K{Jd{-x0kZrB4$#_cs>{EhKJ(3Nh_d`0 z4~?8!0%Z9|c13JODSe+Sd=GWEWfihwSuSlWHrQIa!oB|$XO6ELtT>ks+|}g+SA08r z&nqUDT-Qxk7gp@CXD?W0m{xoZPE51mF#49UHrot;Do8Oh|UA0)bDgV@!r;SzrmFIb=m{Z@7 zmEX=S2dtb*>9x{McUNBLq3$#vAS-WRt2W9Hkd=4pi%_<%7rgelH0330h!_yIa>`dZ_+dNdv9w5jOcV^SEBkniFb;Kj-V;|Fjlofn{ z9Py;P@5|YJ_or9Cr88r9Y!-6FyYBj|7hF|v)7@2phhndrKvu1^HFFioH`n6`an<@I zBjZ(DvMJK4^U|uc>Jt0>RhN&acGXqs(^vJgr(b7FVbx6@g8U(0$f{dy`K@};{qo_Z zX?Q%BhL_CDbJc5U3f{;q!moPUrSPLA2|KW46nA7TyXlc@%@FL!P4=coZsFB#hZ5w- z)A$sXrhpuIp)I&0FZU4SWhx*?US%ubk=GLN=CmT@NL~H5o17p=-p(lNUu_eX5 z`pH~zuTDogtKU4RxL3bp^Skb$YbE*ih=N?Y7V zb+h6=YG@ySlwIIB>gIfLA9ZV1+(+#_sJM^Xx1>%U^;}j+N4=iDi=*DZ#fLfe z9Q9c`zg|HJdg4x|F!)v^4K)&hb#SN+6Im9Ol|B z=8!d)E1`Em*35V)tDXsD&AfdrYp(ZDciJY9HG6buv(u*F?ld23_GS54^Jp#~Yo7K{ zwJH~oHEv;N%^M!d7Se0pv2|t5M}$@TJN)~nZpmiN$U``$jsiKlVk_#=>(XVwqc?hJ z)oa(8 zv62?f!%(>%5f6N71y&mdLc?NRK0|({om?sTPj`@B%s5<7g zw51>O))G`6^WGSyjv3=%D;WD@YfT<-tu3|zx6U5F>OB1*Yxm(oTHhY~)ir5OTG=?K zwZ}uL*VU_U%SOd5*Y;ZvWFykn!xoyYC*82KH8$97y_gnf>-DqH$Y$}_=iDt$4=xEd+e;6xgLAHhq7wyK#sjROU|8XD(>~r$aP?lV;@LU`m{^nbFNsAeJRcT zvHO?2_G8~1duPXfl7H>%3S)m-MJ8!F3O1Rbky@c80d@nKb+Bo_E<__p)2XTKAfM zg3|tFUApA8?!&Pe=ekeQdmLBD9&wy+OZd2z?gbvVCjSDD+hFf^-0AKHXL;~5H6h4x z=Z*CS$6b-$bk_Z(pTpsC*X0>>+%2|)w9VqUd(0U2xJS}5J?^ozOpkjiEz{$k^WbNC zM3CcL$9UY^u8fX*-`(RA*FcW@+(YR*Niq*vU*Jp7t#6R^LE7o8Uv1V0bVrP=U*`&X zJ%Omg1CaG+S-h>kz!ly4i}OXd{_?b;uAfP-oljG_ey6Fk_ADV}{SCI%*59>cBgy)` zX)e~gl34FbV*PVVD*yVI#%k{RxAT>M{U>98Jl@M!1e8<1rayFc6pSR&+_xd+nmVf;luJTZKd#fQE+~VJcJz2lHL6>}t;uB=U-L|4^a9{d1 zJmPY(;R!ot+wkl`lZy>6*c@(n+vf1SC6kN|*;4QZNryBiWE&k$Xu4foC#+6u*9q%& zxlxY@K~C75rs{;VmfZb>^W5D}xPsZ6*AH$dOu03z6I|UtA?q7Y*uxg6o0cIb+-7rs z!d^RKKjD5ixHw^7esFQZW9g;Oxx2oYy`2+YwQuKyH?#b`lYcuWe8}?R6wc`nl%FHI}|#w*9hq8r_s(8iq(O&f2p zx!QP3nyZbs>(@O~D>vTFE;7?zfoyzGS03lIE^T}!d#?K^vhlU08F(wpz^5*CBa`>3 z&Jc29$=0(ImuVkj4v0ZcTxADrCvMVhdu?rbCvG*P&=b!#>jWpBoBsNIU1hNHRge=e zvPFKP>n=~6&K3EIT~p*IF8x|~V)nK0#JgRQpLl<+$WMIOW&Omb(oCKB{8*8n__BNK zTdv4Ye9sp7iEc;Gi3f5;e&T3pk#F*IMZRgBd+sL3iA`rN$-t&_T?RH?o~CZoM6Sp; zU1JMv)3swozUc;AYjW@gm>!c$(!+FQ#3`rdQL(z3KI_ zetXl~E@|nv(oLVcJV~wxKdF-M!B1Lli}0lN>C;ZyWNCEL_WZ=+q%+LK;-m{Q0G@PF zdZ{a!ldj6a`J`#rBb+p}bC8p6&@Fma2>^1^O=IiwC*6~dOHX>(b`&Q)?xB_{1VB!D z%0tEI1VB!DSzCzPr7I`BL2{>>0g#hEws+ZF&^@%O9{|~0W7lO>1R$GN>ArzXO8~NY zQ(AnR%@D~5Hb6FCWD9t+TN2znN8+Wdg6D4QS6 zR$w+ikv`_R{L0Jb7j?rhEA!^p`F@O+8f5c3X+}TsPuyxvxclg~^qIcMw@oqT?p#gi|$&pi3+u~&5RbnX?MeC?7~bn?yPuju4^ z)4M#De?=!hIrfT9e(|7Jbn+Wx+YV3Gj{{~yz?PD&Zd;mmkMEY1yt&bKgKSx2OLxoW zwB~NvKK8sVXCCytEopV%GHuGNn>LOu*;HxEp0rkMxoxc8Y)Ll;Y}vQ8GHiJys|;IS zFkIO3eM{Ueuca+>%bQDvi(B3u8|!WPJU?7K#UK0QDXa4Xzf(5bGC$?4@vF`qA1r?uOlZqr1(`El7RKI;J;$kzSt zzOQ>Ib=!0NXF5#Y`oY+qgsmUv_9Sfc?4!3u(+fU1FI@o@phpJWlgKWP%tv%akmK+z6?ei85+iw}m*7n;yU;x>E|9HLJ z{$OqZwEd}U^t=5<`;xcs*WOppc0jhjVKcq`1KU?@|2XSjwjWqhK~MFvdUvYZ8+GbB zSC>vrcS4?enp}UHt zx4G}@I@fvmo^!6Z6K8VgKGFU<7bh~gb6KpdI%EIRbfdS)W@E90GCqZocE+S47W<}MOV+V8PSCL~p{PK+q!_1A zqW3F8y0mG0pruQOspnl{JK(#N$B6GzZQ61db5X3zwAg#<7sia%xTDM5s8)1Y6tToE zjlDvbApsE zq&JPdp58u!BI#)n6iLq@I3hPdLejGu@0Lw3i1wWxTSZA9A8%}G)K=4HB|&5Q+yrP$ zH|J2(*AP7Mdm|y~>*E`V(|1MZ6VneQH+4AP+iA16i^;ECN$9PsC8lg$LkX zhBujP?7B6kNL_bEncQ_>L`k|HY$U+0aV~T{8)awL%Z;Lou5qQv@Mz989g@*B(qe`N zN6{-CAQ>q!CS{~1FexJ=w!1PTPnl|*?uTR)$9JM;RGF;Fm>37>jA@Y=IC`BWBx6pa z{dXD56Fb@%nOGV-dfG#fj2))IWgLj|DdR|#?&AsE&Nyj~>b!A6(AbKcVQ!qyxEVPb z6}f2>(v6~j=+-ng+HNi4BzJ4mh~#b^88gJ+A)({D%x?NMh5xuqmb^o$?WQ0WXiaE z4EDNDOgPlneOhCBx|>Nt_xi;5Rwt&m-8cQuSG%I59*dHCLU|Oq01?u?A*x2*WBbFp zUyZ3t_nT24pJj{TOqQo{4_Qs4N|n_id0HYXdAnd%Ea%NKbKb1voHr{m=gn%I^JX>5 zd9%!%H!CUU%}UOBv;H^d%{mc{z_YFrJn`F8Az3#PMBXD{Vn&aa8orpf210tYNfu_0 zj3kxrQJAFCJz{elJ*FnBbdQ;FmF{6q{`RO(ROue86IHs$=KoRY9=oGl=yAeS=^oK3 z@E+$hf>q;&^hn$r(&M@!uW=14B-<8kAiIg-63n|>A=%B1bA<-fWv52eC_6KvM%mc} zyK$#0Bs`X{@QDVbo$y~~=HRYc@(**eJxs4Y+vlp5vUiO-V$((_={&-FYVcSt?Y5&TJ)KSFw5jT(7QAaQp1waJ)}GcgGha^{#ik+U>9rkwgDOvqWC zfC)KU8eu}t?qp2JIcBzUJ`odgE+=6^j{FZM^a@4vyH|UHCw^-#q*rQ!;q;1aa_m)- z3<Vv||D7A5=eUgl}mUhCsNyw|3<5AU@j_UXQuruRA&Wo@tH5i{@A z5IvZx-n_icakSUjvkSRBI;v=_BGBV|Mh$B;OPSh@P3lotkw0yCl+S@3KU<+1p&=?;YFl(tB!5LcM1u!bN?#v~*=HYD z6ju6#l3}G!GZR+&w2um`Pwb#ipNvMZ(kCYhD}53U0QRZ;Us&lgJ_;*+=Eq>A&!Pkg z^jV%Lfj(;+OQ6rzsGj#Zm<%C(jwC@ypR=Z@`&>8amm~=3YfFHTzRemzNZ&Te5Yjg@ z+DhM|L=iM-ahCCtIemOzA=odY<5WVvm(l2BZ*{^Mk$bPAbhkN>E5S-CljUoN=lYzXS z8JqT-l+5>j(~|c^_FJHgi(I7z>9>;Li61b5^xN2IApQ142h#6&eA=&H10mSx9%)EF zbzafiq#^k(Q^E6_N8mHxm~oBWFAd3WlX$E!Ka&t_bk{T_-`tp_|MjHsAokY5>E46H%2Ja5}aXXTZ5ccR%1tw1Yx2#Zu@nXJ!k{V_1c; zC5XcKS=7Qd1e-D&QfRI~6(%R6h1uqb$HHQQt!Aw8a=CGWKDrCPu*U2oHV0ieQ{8d= zPI5@0ITc-4A5-bV)rlM^+(1BANZ}4+AARgDY)Ij*2yPV~i?N{aL?R0c&zL@=@M?^N zn+Xx&Kuh9|i-Do!J(B}l#q?}o8o?dAT^TYko8V8n^Bgj;B({lW;AB%#2F@fnBGIJRTMNz{}Bl zS0d;!@S1sCwa7uRjUTOQSQJP)uUgc+(fn;u`}o3dQBJhsqQXWKxJ4xiZ;g+o)J4jNNRwYhC7j24hzi5|Dr)_#_Su^E;`CVIZ5mrlo#2cG+J?KP1=j!$H>m%;+(|vqqt8L zQ;SPYy)CYYZ$B!oiR*CjWRue3S&dGE7RQp<;`*dM*Cg6y@s`*%PQ`no;b8H>oj>E-xJ^pFD6{|zaP z`M)9NW{e?qQ8gVhDJk|DGA&BpkonO-WyqpLO&_u}F2o_Rds~KViVJLrx%X^H{MMEs zNw>BPIbxdIka%b?xm`5;sx}jRizQnM|)^&kM_|0 z@y-uN1KXjo%SwixGA=PtZVf#b*QB9WOi>QyMzCCF?o=*|UDs9CDv^e=c8OYBW?tA( zmTwB9tSGL?Wo0onEK54YR5mH%S;}U|BwIE&CfTw@vBs7+l5Cl|L{qjkNwQ@-k|kSq zFj2B)(e;b6%Z*~3viQ=}FjtbqhBZl$*f4YV<*?X1*079Zi4Dt%bTKUH$ilF4^TXIC zyC}x(=HjdgEWf>sl=3N%$%Lx9Y8Wxc9`UEPsHS*=l@yR5J;|q0U2)I<1xHX?E3;kIihtjAj3<{ zSL$M~Op1$hxOuL7_}mzWhA&9u(D2w+z2R#TCy9m|r+g#TG$6xw7)N>{4s-Z{XvQ%- zcC>qVL*j(paC4*n@VJK@elz)qO@%Gyk1Ludi?yP4oS_xzQJ+?kYdAggg0%|scymRC zNkc_-;--#@@d>j96*H3$M^`K`zg`(Tgk7;FPSD0i1Z^YOqpDMJz~ooOF@iTqb1E7l zn<6T%MJE_4Zs_>ODo|8NRMI0{$&HUNv*r=4W6T=SE>T1yI>q@hA~(v95k&+?q&^5_ zL@B`$sS*MiQDag#VrrC*5s3-oh&ho9O&^MG^BG~T=8jmC;BZH*kFjIKHnVjl-<&ZU zaVT=;>mh@~BaSA}c*dmha@6sUxRy9^J0fpUjZ2mLq8msxlc+qDtmKu7kI}j(kjmJGwMt1emywPb9C; z(_^4MGJd6#j(=o+ETI`$5#Jde zsw{qKaFuzvMO7?osG6(;i`8v`RLzLojvTGt0;yUYi@>YaniHK>n-X?>Rhd(VReNL2 z9x!I(5-Pkvs*c2FDXK1+POs{EOslFSQL9F|%)Ul7HwQJURdi6J+8IkY<|VeHQWLRx zRF28nQN;vDWPt@Tsyu3C(^cC>)g|lVs2Ne585N5SM=ed_^Qd~$E=O%NsUNj9>1OXy zI}>mA9%U}?j%tVv;7lY~8FevkxuY&eHDc7w7%QqNkrmY*v*+p-@pYK$)=`D6PSw0C zTAKz^oksA)%fmpb^P=LZu55Hrqq-)hrPZ;E9INNW)UkR|((tO6Cl0TAeJrD?-fj-C zdQVhB)dv!0gR2imhgjWUa<1Ckw_bhG)S2olai&z?h=ydNZRVdxd*YMDqnjj57LQIb z=OISNj<1YPOPtRfoz;jXqYIN)fJWCOD$wW|jV9$sFNn3fN`tsaJsrsCb%|5bqqjAh zk{)gDQ5${of9Ix0pH8BX6X%?3%#^UEWh05zw2pGJCL^XSHQ9;EQj`Dxn;@x)B}g?h zjf*LwHF_X5#-WWzw8`a>>93kq3O#1k9!SlaXsB7UElC|}lC-_%keQv=G$h}vQFAtN z!+9;F=0?I%*)f4=+&m_>S7%J?B*PoiK6#FKOjb0s98(-ezAZQml>LS5ey{VL`n%eo((Q=G$sBV|H1a8%37d!XzhGTN01WYh&9lYp2G_ z2-K=)kJcxG)Xs|=T>G#M;i+(V+6~Q)X%D5?zv1W8XwqsIPW78A68k?VJxMO2lK6bngZQ2B* z(W!~RKX!Iva5HwX*~_ZrUe+e{vdtXF*nN>X&`9kh$k;vhpCQ31~oim+H7Kr0;q(Xr>0}y9Z;=es~%X@%07aKSJ^Z3_aw*unc z1aWUAUb{T72@srx;3Ba*D|3bwf)x;~B8a5}#L`KB%!XLz5o6OY-Uh@v6=I!1-2TE3 zw*q3H1hG#eUeuOnYhQaH&i%yAcb>IDsWYyo=JPZD+6s{1Y)Eh(@yD0Xbpgb+3*y>K zJpacfy8yAZg4o&;?>X0fg*KH2ab^-f@P7qQE7{{A?#aYA>(_U*Lfi)-?jr>8WJRuv z7Y{?c7UF}ScY6&GUnht!gShvp9>3GB_d-MBL$n?;ci-T@0}-BS>J0aThnQ z{OSJhRb!7p97?t`1aUSaKC|Xb2#~;fNMIAOWyt0k+VxT624=qSz>1%%#+E`*LHx?x zXYNr-_CfpyiF>a&?p3mPLxTH=?baKg>*Hxi@EkFpzxp2?@!~ZN%3${8hQ?I|lKc zB>sH)#KAU%w;Oe*#E}hg^dX3gA#Mvnd~=k?#FskP->^We2O!qNiU_3;e+6-?+h6gi z_&Y(|8N?k&tXZUt+W^64;t3OGsrbETAl~!DD@OQLcfIEz-b=)jK78xXK=?Ak*NFf5 zrRN2uYY)V?pV!e0s{u%0)*N#8FEeYMha)`Le~II^0^LXaT3Ra(}On+m!>vH@nu{r7w?%SSAyXD9Syr zk2fJ!BKD2UOSeF<7y`8uOKXUw9dXLJ&_A_vkD3Va;tzk&$KXv!h=@~$PWVb;r9H&f zQDLRlsENd%T+KPH3R(uSR}xp{P5M?F*$;6ZA|5b)^+_e{G{kp~_~F^ZdMM*d6%>gd za-UM8vYmt2E)kD*eRV~-mI?9Z5WkdO{Gook8sb|=?0Iv7+L&*Pj+6M-q3s81Q|(la z#NOM#+oI~Q$0(q}+Xmb^ROR0h;!h{8_-s>yj%9{%hdrHQCuWea-O~-Hv61qzKlbx??GmefBM>=tf zYwvug&9sF0TN594{Yf<-uoe>7K)m<;LH$&yA&8|J@iT2N8w0L^_{S5!aDLf+R){4p zQprr*t0C@niscOu&l%#8FPv3D5O)=^<^LwNus}SsBIQ)Xn+ox!5uZ3VL(M331roYWeEXtq%2%v|U?cIH zw>>`@2%kpy9P!^JS1sH-7vfz&Jnh+~8WQ+c8g)51<>XHk9fG-#U_SBJ3tZEc(E*5~ zDRI#~msGXgS0lw`#M=VmZAJXeUosVJJ#CD-G2Fh#$Lh_!OCjDB#2N3u^_B(VJP&bR zR+v1gdQP0uyX_j)jqMt95dY!xz%2c0KE%6-*s<`(a(z4k@g67Mdtm(kDPip(!Bpbc zJs4C1L*HsnFP zg~Z+8TlcD3=^mp{8E<;xrBr3!YQ;U``_G5|p^XF}?xw`OCj6*o>2D43wIK8U>u@!?;+^tkq$261N+Kl#Q;*%S9Y0%-ThWP4; zyDxoZic-}KVrfadqU&>ySs?aS5PMry=1hn)hj`WR|LxZTU5|=iX6o9Gq;F_27BmEylZj8>Yo)RpZiK5cgiizf_1PO@Ca5c&=#}GallfOnmY59Zx7#wHmk)Z&>`mpOhCR z5R?=5_~!6CI>40>+Zy73*6z~*y5~XM3yEL*^TV2Bc=C+;QT)*1^hrSY7{VusAL{f{ zB@k{v_zdxf6F-GEQ>6}+c;BOgvQ+bCKw%G?|hN+CY_>sba2WI+7c#FhUU`?WIj2n5H8|8&=A4FlXM5O*8m z_YP)%slc-o;?c&veT=$O+-=5g!*NzZf;Gf}hjQmDbc%Xf;^+U;phj$;2eB_C{-8Ld z(COI(@oXjD?_8_FgLjKYVZ{0Mv{6CpqER-FfBDr7O)otMAfCg-7S}2bJVPmvP#fZo zvwoYRkINyUmBgKPwbxkEu?XT=O8oAp6Bep$QXtMY#J4!!xkdAtDu}g~xcdE9_bXKl zaaf4k$tNl-Z#~4jnt0VmA8DLsTV@oB09e+AGSc8u_5XXG=t_L*F zCVpnf3rb#~3=*g$Zu9IJo5pYRAy}mGTMLM#6>-;Gt^dNm%wUBU>)%z%RW?N3i*sWJ>21i z1^4OW0!U~v@oklNYVe`|v)G6$ny08Sd6y~Qh%bM+{#hmPno$gkyL{W>rhc0a31t!2 zyD$Gz74rndeoC>sgMtI`w{OlGd8`WoZb#`7)j4{ zh=X;E8~>_brK)2g-oC(Q_=zPD%W~pHeXpup^tkWdHWrZ3E22ZRqIe1y1Z&7ZfbXcns~5SO$+F-jk=Ky25Ep9yUI znH}ORhB(V~NXsG4m1>(Ih^LwU*a7kER!bQV@lGaAd8YY9C8e2$i^L7PS8IIZUj^~6 zC0;Qs@7GGodPry!ahIHb6rFcG6#gH_lMuq$l^v2%DtqrJp|URPjEv0hWsf5(hfoQb zmlHDLWUo8pqzGMB=G7I>JZGMpKfnJze|{dHKR%!L=ly!UU(ds{&tBUs9>I?x_I}tV;-qef#|tCm#nOVewEt>xojDRK6FwfgSz7o?o%TW$4Q)5f1azQlb zeD%k>EVfxc?Oj?{d~3fVjDAZ+^yoN?oqhDu_)E!xyL^jL$;s>5JRI1JgDJz86W#1u zXvamI;blM;2&(hkEw?z5i7#{_bSq=R&*F5r#^ z>4k7atZI<7{(o7FI&!o0qefd%4M}b(?wm#UGk0&v*xiZq^q}V$MllZ*r+4#2{!?fa zHmbKwSJufJc0dq|X&5pz&M&2hX;tJD`of4$yEmVyX_s z)p6CwcuNaSSkC=~c~Nl*jd>IG?KQ0~?|>T+b_Mw?W<`ZOTL~EEz-_P1TniOjDZ0mx zI&ru7>+|oj8Z4n_(Ha{*Cwb%at#9paJiEVVA!b5cHR&-!OU$8W&doGS;IvG8b{t_J z@3JZzB{`;pI!bO?dD{bOM6c&NLA~M6GurI~dxY7)7TX(>~(5{RGVZnzQxR)dmDGHML%G+dY`}8hP^#KncT5 zeF`UkZWct(<{i(QT@pV|24ZFEobc#AjRb55i94Jh-$hpgkhfHfu@+YQhU7ujF; zE0l4iV~%w5TYps1kZetAaSNY)aXJ8N=SjI9;-3w8cY*!BT*FDsEXw}D=F2z3aiatZ zq}H?zgD%vh{`(v;Z0%+ zcX3MpylPo%)Bl z;!M(M5A5p4obK`lQltYl07ieB7wjflp~>GvZdfzg}Sc9gnrGrr(vF1^So7BiVv@WzV(6grgz1%MuI)b#$Ibw5W1pGr0iR&)wEro1(c8$gt4&}=K7W@ z@wkZ>v{TZR63cCziK{SotD#bK{O zXw|B9ddJd*Cnqfa!n>F2Xakpky03rrL#95i za39AtK26DaiTlv=uboZYKJM39_CPu0k$dkw{r@iUb==Y2a%9*`2xv30mtF}z@f`&# zq92`W@`LZV@qj}f4QX)_U1Y>DqT0d7O3>IF#5#~cTpzm;v+uy!d4|$gJ@a{x&XT{4Mq)dckO`23hSuc|e5hz}4sTQU%PY$zf3Epe*>$}MGe2;A za(>##I2Ssc)nniM;>RruyiC*IH*pOzV#&W{h;QdY*6Q2@O_coAcDMk?KDcCuOog`A ziif^1&^B!tQ>&#RsV=pnTJQMcjVhZb%!azDd_*&cY`8#u6UkGmP>tLuNH>UZX22Yv zZymR@nrL;;yz*iE8&JITAkf>1oA_z!JpQf1YcFl|txQt$LRsmj{;%xN!Sjj50TIR} z0Zp|$rq|E$rw_Mx20q#6oDKjq>du%!q7Z^Izw${3KZ+GwhgB`E>2LXL_aru*oj=&jY%Bv1!vd$4#NLw`jBGpAw)t zlccfjq%_+c4MiXj%%8E#M;ECrN zo8axzP^obi^rX46!lZg#t1GU+O~0-ttGm=k2R-pU!vE|aS7u^^Tv?@d~lA=TW}=5^;x_3kP5kbayVPDIbLqosBA(Yddk|Kt9jeyY_u4ZE`c12d^Ci#S2;iZx$e$( zJYByo^GXvz5*?XB8d(j7$@9$yh=2Mm`21WkUyexY$h(#W4)$%y5G7KbHwax-plLubvu=ZZ(Wj0JL`tNJsyKNLxVo9%8a!qO=qK++lfiwiHVVE) zMqAg@X~VG3Pn(DC@Iu73yD3iZFFEm{=5(wueJJB*dmO4Omf>(Ij+?K;v}doPn=PQl zBY6=gMIUs90b3Z4pp8i#2TrGeoa0cbY!-Cnub%}Q54ep>%%SE>U#UQ~fLrM9m%mzf z4RV;pRHbS!>g*b^q210m1uO=Dn41)BML$VpN7RbSNm{2qLYXR9TfV=@cTIYkbcc7n z?}qV~BQ!Fr!$z9)BhbQ6ocR3Ptg2U&>(rC7jx`;|1I4|!#=3&&q3TB_3KQI~4CR7C zugcs^iwZqvQ@x8IB>g((n=puo>&X7xcMUiW>UmVdl%mGzIVQVIe;b*&G5(MxPPR4u ztUmF*mPB0v@ere&zUeS4!nrmqMQ6pWt>tLdz@38a{8nFl+nhdsJxwyd0<9&@9d!tn zM}JQ0pxNRdK2pmrxQuVZ(X+Momq(vd?96BsP;#ng*~+l zwNB2^LFb2Pq&&0mEvzZwVqbck5%h(Rwh_ zct#+z9*?oEIh3(Wn<+jeFu!s)7ju=80UA@sLt-b`1}u5qjC41<{jPUdm+hSo7P|GG5b%WHvh=+EY--2-3)F9?DIhht}Sp{=i? z81o3fUDvZsBGy%6=-0KMbt{u?#}Jo>#!i+S^(S}d2}vYow92PV`iC4VDY_6ErAXTi zcz<>pz0FFyW7U6~*R${*wThAcX!}1Vbl1D6g+b1|y0Ue^gc6RU5t7Y<)44!=N?x61 z=s+i|#fgq;$a@y=UyusBgfA?)aj}1rrf)B9t!t0OW!b2a9#;@+zEoAK>dU%4ysfpw z(ZnLzR>g5^1>l^Q9iofARY+>jYiB$hYPZRHOG+P+J63!>Dm9ab4iONw`}$v7nx+mP z59wde9nob)03jR~@}*l%p3^PyTqA!qirAyw{6omXPlpK7zueHIon6b#hoYYMc< z$B)Ve4L7o*W(j5LJ{1a*BPZ#RO1ceM1;&AbXf83HOK!dr=!jQQ1D6U0QbVqzPd^C( z$4rfNXKW0q)zJNj?+%B^%EE``#lCuzbkW}?{J3bIILsZXT2@bqMkPDF$fu&8xp9-C zO9>Zoj_WMkW+TIvyGk-quSsYxSG$)-sQ?NePP~_cQ6E>z1RlSNjQyKVuN^6n+^IvK z4pC;kU_xdBu!1-PJ>uyY4mu8+z)PgY25;FnV%R+=O-Iz(J&W&9`$r=$KDE@Bu`}%< zyPn*OU1Vw^Tt(8FTJIcuwvjf)QS`6bi+5NXx>Q4}-&)Y^(MIcMk{0W0E$6Fknld#v zX;u^KUV7;EBGOQMR2j1V;%_NB)n8;Rqo-Ky!WH_QSIE;Fo6c1dfE<0XqW84%7n*Cl zYkDU}!jnn+Kq)+Z$Ev*!A~~+?|dzm>p zKysOgHc#d%Vp+yLU&Ki_G)PcnA7p8JF2{k3`C?6%E`vvo>S1U9gq{aoDMLK%e$jZu z0-$)}vW}GfmJ7q?Pm6OUcb=kaj#E@u z5A2L|ThS^R$P+`9RhniqbZ`vCNJYA^fM@w~V!i!9VxvybNM`U31$NEf$pjFfg7cY# z#XTOrEe?01e2eTt*4?*#Pvlhwl5rxnKYb<3_tDo;HBL(c+nCn?pYuu?i6VLY3iSI> zS@Q&?pB+XCfl0u&jhsoqsMc6x93X(7)+Fw^^dZrq)v2AXdHSsJtz1jhR5%z`fSTCP zXo%s8D-F0mWOE|LPfR)1IkBX)OZJqK*0tnRyIXt=>*vsp zWi-Fk3?)HN8)@-dYtmlIJ5Erq)5v`)~qp= zKRu`HqN<&<;&b3s%Tj<;uM@IzV1FQ|RGTcCpwv>Q^WPIg(Yb@adCFz8 z@4WbAZf14t_vII5J+==JMZr+xoIs~j;#dVjtRmX8F zIZjLJ7v0`?Dlx#x>t=i&YY2QhCnA|YMy_D;)T$8ckeqq$?^PM&L~D}poRz^oya2wq z4?hH?eF;NCiVAA@#2;Ymy4pbyWn#9~jg?l2E?U2kw9FP=aJjg$k z@xYo5y)Ip*PizPkf_8-!m@q;)aN3q}c%)7OS4x4Diw)K4R=}@uU zksR~n@Jsl{>vT$%NV$M!v*fr7uBTE*!cOyHUnH-AK}d9}{%v%K6!OPMQ3* zP+PrCJ924=XqPxxtkHgZ&5%u8E#%$>nDB!s>E@txnfjB1ou zB)HhfxJIz2oJ*M}QNDfbp3pZJCeigU&Z$bBEz!T9?X7cZt z*~jIU6GprOzb^5xi(jG7+SX*geIE#|;~{3MwSfZi8gS}`b#b2_Vhz{qc*LZmUcS#0lqq}gt%q@GUdTtFW0jVrBIk9JNng*b7^nFp< zrs(-qe$>8Ga`x!L8DiP#0Y&?iskd_QxmfCMZ%8ZvCG%GRqxYsU+knvQ#Zh+Rt))c>9?;{9O+icl z4QYVdR-tHEmfU!+tZ6k6OlEHe5^L~7qSHRnkk9buU{xMgePTxad*( zN2w}r1@!G?QW{ZCZE>IQoD|8AQa|;9jr=_AH$>prY6wgs=q66wueyveKsDKERslM? z3tb0*gorto#*zO2H5oJO+RvZm+J%-H%t5TJz$)nGtf>CV6<7NoV^T-~TqBHrxHKOt z2Q^5JBHLWQ{M(t^SjikZp?ox9XVSq6#!jg_8~1!lXD(K>d$gPdAPC`v*kF%XE9B2z zht3|wP{EKM)_yD8RB=cRgTp29TmwIWd~?lw`xXyQSw_E!V8Vs3*N{@bLf>s9^gK;= z=Q&5QpDZ$|m-qi#EoGf0a+ceo&s?;tbwZN%9~-)>m^8Fd74U;l#sr?YT2?f@TUhHL zVzrWvEt9+qX5%qQ8ixAPgWH>I!xYY`Knea7XO_kv-WK@F#MS7=4QcMDBNmIjstjx` zbsdoD6O+#Z81=-t4@%hC2Kq|2?V}5dTR~M{|LnzgE&`?K?Rn)ekG$ zP5=v6aP7l8g{%igOvGiI=KaJgZ~1I4Fpins`Kovmj>t$AL%GyZdlaSS#ea$0uljD_ zDC*-=Q^QW2P1Z7QKOhAI|LwBMTtn9^#Q6JpXmK=^NQzH3jv1!TpM|*V08mEDmVok~fzlI%Z~Wgm&F zSG`v^PI87eBHhY&WdFO&r)eHny;3)B7^OE*422;#S8au$G!AsUs}7O_yex^_Z0*6! z6T#4KBb^AN9wyvt(68BRUOC2ba!>-US*2zD)2lviT=kcOjgL>JO^oZ(Ly!l{xrR~F z1I|!Xbfd$=`K1fE;Jdotj?F;Zzgf|rjFQ_0(F^$l{O3EKrW;r2t|<1_+7z|R zulNbB`;Jzb+p|&;SM?Lj>#8`O76QzC9RGXL-%;~q4UtLb<<_e)t$4Pf|!Cjk>{J0%j4((yB$?ZlU1o7T+4_v=2@ zfq}%zdjv`P*-(pUo;7@J7d=6DdKf#~Yl*vYDZ;#w;*0SJq!SnBLeQT>AL&Ez?Q@gq z`vwHR`Z^s|VM%c{@LL?>(|J!t*;`*0O&ID?T_A~Le@H| zer??Gonr?F?RgVXv2=;(U}|Id8DGhUee|bg(os)Dn2=|$1+^sM?JX;xWRe~_6on5K zMdHt~`v4dRF@wjo+zXQBrReT_tA}-M;weD2+}#2rY94y?Mpccyv#@c!B^0Yo6;2hA zt1FO>Z%(zHZ0I{B=_PjbJ2cAotXxDtdqXNnP&rcR@Rw{LqH~8sW@MJsBydiqqKo9W zRj!&fP0Zjg0k$pjn^Dm4+u*8LpQ2|qm(VkBI^v&nw8o!GE`of=1d2*l^P(UiQjJ(E zY{GDO=XQ>GLzcd~?#v^e@~5H%~ei12NYGLsd@9g>5F_rqN`Y$hPZ<0%k8+u*L(-z%gmHNw$ zcRL!;-F1g@59(^GYHkUwXuV8)2;Dyio&#GxIJ^sb251z~Hk@Q)7()}-i9Cs*r(eB; zn3~$I#Q#?Ja&A%)#(kH&0a+X$hv4Kl3VgIzue)M$MLtB?#hBM%4cK z_%HE23KocbQZlwt^?L{(T01MsbivY}IolR6{1_L@jQx1G+sDwQIej>Rvdd;jx-#Gh z72a{J-u0AE1J*(%N+UoCEE{&v>sD+A;-1C#sa^}?>m#%Zzyv#vx-cQXMOrYT)}VzA zupff4q1?Dm)5X_Q%D<#edT>RGn`IAMv2xO3I*)Gx(!dfgJ2W$3F&8;zQvbCSp^ zv_w)V*4KNjM4FYJ*^=MY26OGCJ&;Wk+S9D+)vngSWMl2W_cQIsll#0qkj!$=0-s3vEx|sv|uiiat8Itt)O);@og*QRt~bzzIG=|o%*#VwSGn_{jg#+}Wn9gwPg_KbnCFri^~+CRx_fHJvEkxnizsa) z-Am-Z3h2<}j+{l3HRPENRL-73JC6=6={Rw9R{ePN)`L=2L z-8o;2AI7>zLz%T|*OK4A>7dw4&o$R41J(IJVpFC~=omrIUZX9yh2>xGia8SfS=)>d zxtf%m1kA4m6?R#6ks{4*8%j)=1Qw)E98fBKV4Hwt3teAYin-l{id38E^!_P!LJ6n#*jbew zQDCxVkLHiRF(pBl{PNC!-BQ_*46C!?d1wN0)OmXG6a(5n zh7JN*+*&OcHrldGXAm5Hi_ZQDIFFTy52h7p*h$=${CbssIKAjKf{K9#sS&#uhUIl! zRiqlU&^CdKw~e|D*x5_3j`uL86eGT)MY&={Bxh7c?0L{ak39XQveQQ@?E!>SGYAsq zvsL`V;;UKDd$?uvTYD;0IBYN5zuA}Sa^&p zAJg{pSt;WLD@(fF+Pc9~)n{+VOFnR@d6+5nexv(Npir8_>73LUS zZMgMi>kccr(2DvE?y2Uy_5>QLO(g8ch_Lmo`PmuuJlRU+V|iN)kl=NsMGrF`OXZ6~ zWo;@3W1z9EmvLZdbz;;MHlbF&u=0Xujm)y1e;2QQrE&dJ^iSN}Y%7=tEqEpVXn`Pb z!_`uuA3tIjcbv9jS6XbcOPSpwIq&~U{`YVCpdW;7(8uw^Gb9xS&pZ_dj zC$0bp)MEiF21HR3X^&P08iSlA$4>xjR~}VgU~jlm)-m?`)xIb?I{jBSx&DtIx5?RI zs78nzwe3+iH{ZNPT#c=pvTPqSI0Y(!(wMFrX?4m4;DQ!}W8RjoNga)%IT^P)Do?W` z0qrsVHkZ*APOF`)#6_7lgC1uql_@5^4bwQia4<4siUrI970F(t$BtbMHrD-cX6iC7 z$lOJBJ#^a7CLkP+PSB;~z4(_6Kx1BNLfr8zl07_slF@4hG`K~vA2+y;rE|e#Q7qjc z%6GF)d-XA3?Q~*ZLhs4al^p2F~>Frtb#dKeN3 z`bRmfv-7?%i1nL$U%pW$^ZMSMH?MA;rpdf{`SPXAUD-=sr^|nD zWD4KNNZ)<)dg|TnN9%L@aUm1KZl6LMf@dj5oei5bI(>4x#Bq2zps{zxtJf_+4|Yt6 z2d?2?L;@%d`0-o=!313{th0KGUwS>x>tTaTeja7FCq_}w{w z;G8xlS>Wr`RN|yVIm6`J98{(ni${pZ}5C+B-wI=iX-htq! zt|z6i@S0wI3V&}D8B#x>{X5he(=XOWx%}Y=n*&}s#;58?Niydi=D4gzZ$SA-&qE95 z@Xu%PS)gJA=cvZ6#7y5_JRqMdH7^U$TOOAKQ>rOPOr6IZIWjhU66)9ypTEHs@08t| zVi3*){agGNg1R3MBP8<4_XWJ%j##{_awa~T!8${Tn(x`I1$(Pka_Lz@Uj{jHO@-^% zZr6C8tM_d2n{}@jTJdv*huO{;7JsQ z$*TS3Zsa9a%PfK3j;M4At<-zK@@#y`P9(YAZjoDYhp%_@!*;xEPS+sZ4Q_*-f0-Bc z$-_IyOfD~on0j|E5IE<8VORGK;&9OAb~xBpI!Y9zWX?d8wpDWWA`pAoaFKBrjcJ~7 zE5w!qM!C3WUoqizD&n&&eAenWEpsb42Y`vo0Wp@C16Y*W=b1MF^*E^CZb8K?sehVD zC_+fAYfT0=XYSh%-#3jdof(_x*zy5J6ysOCs$4fhZq1;aF`+2Gbr}4=7sDU$RVRVt zmfJ*vL)f=@lQr^j3?TpHUf39d&EU8+T2^V+@nC5bTl1H&a8XE|A9BIs^aRV-cNm8)VhG6f zgnC5Sy|5n!pfav76B|sLulVL{#8hH=8NQq;Vb9VtxYvf&6y>Ky1=0UFL|ulei=Bju zyIDc}<;fV~L<{O|ct{78v|b0OG%9{9T9xYz_O}4|t-95z@#xJ_!icS8BIt zS*KglDBo?8R;tP1Nb&mmUVM2KzaFPzTc1K(W<;+aQ4~Ap>@g<>=h;b!v$*`?>CN3} zBU|7|u96yG{$=U;!~E^7ESEE*H-vis`||Z(Lct|OkIlIe?f#Ljj0pde=MvQ?(Fm$B z2Ig}7Q|i6{)mm|0y_mWA`1pUYKbB`;Z@7+RpX2RYk11-JOWgT8*T}mQLa>6p8YZO! ztMm)`6Hw&M4_P3i3Vp;!lwVz4&ePw7DVBV~4f5t3=fcTwF=ri6a{gbEFO3{##~Wc6 zgt1jFJ%OVR1%N(Xs6#%WPbWS(0l8((xR~p4@|1pSeqcl!st!9IO4ipG$v?iSu*spg zDbqU-@A15R9l_o91HglYts7JQIo%g=G)3IFX(7kh>=Vb}ewC8t*oxxo79d2Rd0@Tr^XCrY&O60kL^ipbo zAM0ovfHq1)$y|D`qO^52#&dJ?vEV$DP`HrZ%6zewNifH#hA@q^Php%r*tZYuTC@L4 zwQui#q+^B(?j;Ffccl^aP~`spa9psUdUEP@(?*@heHhjD=tbT!|Mstab}T$YJ)Si^ zK6a@|gM8yLi(1RtW$m9{ty(SS} zTt-cr=pRq^UdXJnE<7#)RmAi^gHSIYo>v++ZjI3|BudN->>*{YiLfe)$j2C02=!F_ z{92$7r(rE9{vUpgL_$L*G_g|f(wyBg-m@1u;DehktFMK(k2#@!1cs&;QsUAigk4UX zl#}2y0pux)#KH(B$=m5Y|9f(jW6ya>M*{9Xm@z#0~Q7qf~lEL*Kv zrc0SM2GO@S>BBl67;#Lf1aLDn)7TkUo{UeNS@?B5x&&2-e_Rl85tnA72mJNmpv+#qiEot99apLAPntNyBS)97(;WW0? z6z~#(Adr}h@fJ1>872k%#Qirmnyfk=c zr>*!d|EaEH;Bt_JoG7Z^6NeqA`=GQ|u<`jy$=(hbtb3-G6HDp{7ah#38}+~eYiR}q zIvo3>_17hT=n&(c<;yqlsXIN%)nWLz-O0$H8X zI#RH~YI!ICiJV@|(ytTWV9OxT{e_|1?5)N;;56#`xz57w;Lym#>X-D3@=LySe( zOqX06seGR0#SXlnhwN_4IIwc>v^B%_ZhFFe><<#{4}?pR#4>}k_PGz$tPVhhlhjA9 zb7Bs2mSF@4|KnbaSpK?f7wITbI9e6PHcEP!dx?GYC9haF5jeiY42(89Sh7vXJ5p)a zx^SK4h4;;R0UGgly13l>AfhFsY`=XbkR-~%8CQEzbobnanf|0%Q$p{dhQTr6;~CC? z^fH>ui4W?hXrdYNzWmE1!7mx~C;ewZU3tgP^FZ=Wl&(SKO^b==mA;wrl&?)8qyX#Z zEV*W&ps6@Vj@IAUJ3|q`p&OWH1BRzrm<=JjCZ^qbNwFcczHF5v*AErF~nA*>XI$!^+<6}cvOqztU zl#;VRZ_VI4a6EAPIZHP!s)lV;O`um}p}$>j@jPccbZ1^=X`6In3=!PusA#2 zvvu#}oOD+fhvW9S2X^!DEY)%NwCIR}#`~rrml(%9v{zfJp%Dq0m-Ky)rJLF&=4feo zr%RJ(?3kq~iN#Qq7PTp+)_0A^6&H)Jww;`|c~-X3en+VA<)BMoYNF^^+rctYx=*UaT3L zXfw>FK%)P;nH;7JYQS%iOEs-O;ZCt+R0=Iwz3Fy<3}@pBmuB|`jpo&+Cc zwSp&su=ZFC*i^=-TSj;qU{sD6{q2Y!^CrNSA!X;_yZs!c9;v}+>%R9X?88$-C;sFT zv=9ez7#D0wqpwPQZ)UD!*ySoYt#J^f$!bQ+T5oC5MZ?83;Ua!Q8q| z(4Iu4)*!YnV7e(&`_nczIfPycy6TYs+S0ayc}Bzeg7#)#H!|DjK2Wm{!@aUyJ7b^u zpw;eRjsn{Ae)K>@Xi9L*TI==U0kcPEIlR5Md(D#(eo3kQ(Lw#w(RtF#3l~w|zQz7=KBHC)9-@D67DY36@7Ki`R8mgrwWtC@DJezmLa zpg|-*aIOZfamWtYE1Y8<-4dozU#4Xr|L`YZlNogn5q|af92C%0A9ovgau1{7$aNJJ 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

= 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

3+a7 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

$9_sTSXHS*N)fmWI(YY(!~RZ+*o3 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 z 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 z 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 !|)DhaEC2~g;jxCDbHX9}TNvZ=*hDRvF|evOdT? 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

9S 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�h!; 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%0D3kQFyFs+oLjc9RfD6uIk}KeV)D@uC$CG{= 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 bul`s6tN-;rd;PBf00960oD5lb01_Yo!S8n& diff --git a/vendor/github.com/google/licenseclassifier/licenses/licenses.db b/vendor/github.com/google/licenseclassifier/licenses/licenses.db deleted file mode 100644 index 762a4b26e97d7170387ec18bf2540e8361cd47b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5565366 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

    vCui$*=)$sdx6dDa;KaJI*1lk8f^-<5g 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
    W8k9PCfT6NmN9L` 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�j?ak?UgOV{CmUdG*nWnBF_dSm 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 z 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 Efd!l_zE|Nz$@QS$f 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 z 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.LoM%X(y) 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�ng?1bU+Ga1 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

    k%cZ$f)pqRG4I0#K2}Qt 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Ð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

    $Eb;*yi-!`S!$iobh0in4#px-`}rEs~+o%8xQOu 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

    )T0~Gy_+go1Sx2-ayEo zby1^cHzdqLs#D)+a{Q18o0mQ^SIk3ebG4KqrW5IJkggu%q%NYABNu7D1?%Kc*fOJ? zyJ5SnHr<~QKZyb|>rSSboLYs1HxylJcVB3m4>%w&$v!0w881`9HW+52P;<035psIO zMPl70(soXq>*ww)T(uyeIydnu@UkR>Tq%mo+4^XtqJ@K6DX?a;lKme3IShSb0WL5K z5sTBq=sjnU(*@+70Dn-f%BK{n+%2nG-g1bay$YUv?E2E0vy8F!CijPahT2mHN-M;5 z#mLEBM1*7|!+a;wAo?HDve%o}$wls9#oENlC@CrawI3K&Nef*T>3xnav)6od#Kqs1 z;a2Eb3B6K{>aYI2L7#YtTBL=B`ZZY?31fI-vU8=v;@6D|qsXsojEJ*0NFEd+R{XL6 zBC6SEY1>j+eU`Vd!G?M)KW8&jH^;iL&f8Xg=&ZQ^#R;MAj{Q_}t!zu)3zsSf_CL1N zcY2CpaC0sHa;~uDGIm*Kt-U66fWB=D8L_?pOM>yl0^yJUd{2egW{Qoftl5F5$&Q&L zTcVHuUY!T-qc^XDvECjHOXnHU>Pq_CJy}LvLmJ#vqV`1*hOAq7oBfk*B7HzolLWXo znC;0ljj71376tTq1CZb$h@oT>amWWu^`ow{dIvq)TSw;Na(s*}C4$s1(4=KImNOPM=i)pNTxFA&cyM?I;TY zon^@{IaP$2;2eT6as3zkb*hiit5wi}CD-sJQ9AxRV8}*X`7=H{$|nwRZgx82`@8!p z#Cp>Xv<_mz9P6>)SxnQ=Nyu?UnLLbbe_`QZfaoRcb{~sjUIinb2*muE|EUZIw9s9V z;7i`x^4#BLbfFG-_qn6%wk?2^)qhA>+ptezNLJ#24KT2{Q^HolO6V7g`S+SDJm9Bu z)f1qWD>euwGM=(*+c5F-Fl&3?oBaF zYbM8auo=ej6Up|Ptt8p7QyFC=IA%I>J6>}rm;?KYw7<=4#Aw}J z$q+iuCM?2c;m1S>gcY?QD<`zRoKe-43yHe{d`2Bdvp{yx zWS$GEnYVB5oQwU_r!M=({8rkj#t%mYyLc*!3RfB-56Rf+$g)YI?%-VUuD!8XT! zz?C*;QQt(U)=zw00UW{u)SIM4SS&13B=Zj%nk=#cPsIUWW^0e%dN$4-SuVb18NVL} zaI&{+9c2;dt}P=YWbgi|H(*l|k&fRt8y0AK>LTHQ*SZQeW{ z4PU*5&@{(>6L1a;6`{9SMsDbCCOiLc;vyp40^4V@QJ2IojrMRUgsj zPFfq&sw_#EJfsBh+gHz`%g7ijm}jk(|9CvA)0�B_V(C!%@uYj36fq{sVH?K5x=9 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%0A@UjO?o#m! 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 z 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

    F{L9jdz)n;XM{xG;!Z7 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 zƁ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≦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

    S-O0}_!3tPypYcTpqv|42Ib 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

    gnTHD%j7X)bUHKfyEc};ClKD`_g$J& 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

    j8&KU#EQj>wDxYL9|t5v)A8_9+rFk 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 X8-?yn< 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

    Rub}^Rd8MGAwpGDH~?wL;A2`V{mFKDJiUUddP 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

    4O4QvmDn136y)c}of7wM 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

    L1hW(Rp749njIiYzKA^0Jw43!j*06U~?S4txV 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%0A)-@$$2M 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%0DYty$! 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�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 H00yT3c>M@% diff --git a/vendor/github.com/google/licenseclassifier/licenses/zlib-acknowledgement.txt b/vendor/github.com/google/licenseclassifier/licenses/zlib-acknowledgement.txt deleted file mode 100644 index 0894d89..0000000 --- a/vendor/github.com/google/licenseclassifier/licenses/zlib-acknowledgement.txt +++ /dev/null @@ -1,24 +0,0 @@ -Copyright (c) 2002-2007 Charlie Poole - -Copyright (c) 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov - -Copyright (c) 2000-2002 Philip A. Craig - -This software is provided 'as-is', without any express or implied -warranty. In no event will the authors be held liable for any damages arising -from the use of this software. - -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment (see the following) in the product documentation is required. - -Portions Copyright (c) 2002-2007 Charlie Poole or Copyright (c) 2002-2004 -James W. Newkirk, Michael C. Two, Alexei A. Vorontsov or Copyright (c) -2000-2002 Philip A. Craig - -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. - -3. This notice may not be removed or altered from any source distribution. - diff --git a/vendor/github.com/google/licenseclassifier/stringclassifier/CONTRIBUTING.md b/vendor/github.com/google/licenseclassifier/stringclassifier/CONTRIBUTING.md deleted file mode 100644 index 143bfd2..0000000 --- a/vendor/github.com/google/licenseclassifier/stringclassifier/CONTRIBUTING.md +++ /dev/null @@ -1,24 +0,0 @@ -# How to contribute - -We'd love to accept your patches and contributions to this project. There are -just a few small guidelines you need to follow. - -## Contributor License Agreement - -Contributions to this project must be accompanied by a Contributor License -Agreement. You (or your employer) retain the copyright to your contribution, -this simply gives us permission to use and redistribute your contributions as -part of the project. Head over to to see -your current agreements on file or to sign a new one. - -You generally only need to submit a CLA once, so if you've already submitted -one (even if it was for a different project), you probably don't need to do it -again. - -## Code reviews - -All submissions, including submissions by project members, require review. We -use GitHub pull requests for this purpose. Consult [GitHub Help] for more -information on using pull requests. - -[GitHub Help]: https://help.github.com/articles/about-pull-requests/ diff --git a/vendor/github.com/google/licenseclassifier/stringclassifier/LICENSE b/vendor/github.com/google/licenseclassifier/stringclassifier/LICENSE deleted file mode 100644 index d645695..0000000 --- a/vendor/github.com/google/licenseclassifier/stringclassifier/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor 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, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/vendor/github.com/google/licenseclassifier/stringclassifier/README.md b/vendor/github.com/google/licenseclassifier/stringclassifier/README.md deleted file mode 100644 index cc8a9eb..0000000 --- a/vendor/github.com/google/licenseclassifier/stringclassifier/README.md +++ /dev/null @@ -1,65 +0,0 @@ -# StringClassifier - -StringClassifier is a library to classify an unknown text against a set of known -texts. The classifier uses the [Levenshtein Distance] algorithm to determine -which of the known texts most closely matches the unknown text. The Levenshtein -Distance is normalized into a "confidence percentage" between 1 and 0, where 1.0 -indicates an exact match and 0.0 indicates a complete mismatch. - -[Levenshtein Distance]: https://en.wikipedia.org/wiki/Levenshtein_distance - -## Types of matching - -There are two kinds of matching algorithms the string classifier can perform: - -1. [Nearest matching](#nearest), and -2. [Multiple matching](#multiple). - -### Normalization - -To get the best match, normalizing functions can be applied to the texts. For -example, flattening whitespaces removes a lot of inconsequential formatting -differences that would otherwise lower the matching confidence percentage. - -```go -sc := stringclassifier.New(stringclassifier.FlattenWhitespace, strings.ToLower) -``` - -The normalizating functions are run on all the known texts that are added to the -classifier. They're also run on the unknown text before classification. - -### Nearest matching {#nearest} - -A nearest match returns the name of the known text that most closely matches the -full unknown text. This is most useful when the unknown text doesn't have -extraneous text around it. - -Example: - -```go -func IdentifyText(sc *stringclassifier.Classifier, name, unknown string) { - m := sc.NearestMatch(unknown) - log.Printf("The nearest match to %q is %q (confidence: %v)", name, m.Name, m.Confidence) -} -``` - -## Multiple matching {#multiple} - -Multiple matching identifies all of the known texts which may exist in the -unknown text. It can also detect a known text in an unknown text even if there's -extraneous text around the unknown text. As with nearest matching, a confidence -percentage for each match is given. - -Example: - -```go -log.Printf("The text %q contains:", name) -for _, m := range sc.MultipleMatch(unknown, false) { - log.Printf(" %q (conf: %v, offset: %v)", m.Name, m.Confidence, m.Offset) -} -``` - -## Disclaimer - -This is not an official Google product (experimental or otherwise), it is just -code that happens to be owned by Google. diff --git a/vendor/github.com/google/licenseclassifier/stringclassifier/classifier.go b/vendor/github.com/google/licenseclassifier/stringclassifier/classifier.go deleted file mode 100644 index 1bf01e2..0000000 --- a/vendor/github.com/google/licenseclassifier/stringclassifier/classifier.go +++ /dev/null @@ -1,560 +0,0 @@ -// Copyright 2017 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Package stringclassifier finds the nearest match between a string and a set of known values. It -// uses the Levenshtein Distance (LD) algorithm to determine this. A match with a large LD is less -// likely to be correct than one with a small LD. A confidence percentage is returned, which -// indicates how confident the algorithm is that the match is correct. The higher the percentage, -// the greater the confidence that the match is correct. -// -// Example Usage: -// -// type Text struct { -// Name string -// Text string -// } -// -// func NewClassifier(knownTexts []Text) (*stringclassifier.Classifier, error) { -// sc := stringclassifier.New(stringclassifier.FlattenWhitespace) -// for _, known := range knownTexts { -// if err := sc.AddValue(known.Name, known.Text); err != nil { -// return nil, err -// } -// } -// return sc, nil -// } -// -// func IdentifyTexts(sc *stringclassifier.Classifier, unknownTexts []*Text) { -// for _, unknown := range unknownTexts { -// m := sc.NearestMatch(unknown.Text) -// log.Printf("The nearest match to %q is %q (confidence: %v)", -// unknown.Name, m.Name, m.Confidence) -// } -// } -package stringclassifier - -import ( - "fmt" - "log" - "math" - "regexp" - "sort" - "sync" - - "github.com/google/licenseclassifier/stringclassifier/internal/pq" - "github.com/google/licenseclassifier/stringclassifier/searchset" - "github.com/sergi/go-diff/diffmatchpatch" -) - -// The diff/match/patch algorithm. -var dmp = diffmatchpatch.New() - -const ( - // DefaultConfidenceThreshold is the minimum ratio threshold between - // the matching range and the full source range that we're willing to - // accept in order to say that the matching range will produce a - // sufficiently good edit distance. I.e., if the matching range is - // below this threshold we won't run the Levenshtein Distance algorithm - // on it. - DefaultConfidenceThreshold float64 = 0.80 - - defaultMinDiffRatio float64 = 0.75 -) - -// A Classifier matches a string to a set of known values. -type Classifier struct { - muValues sync.RWMutex - values map[string]*knownValue - normalizers []NormalizeFunc - threshold float64 - - // MinDiffRatio defines the minimum ratio of the length difference - // allowed to consider a known value a possible match. This is used as - // a performance optimization to eliminate values that are unlikely to - // be a match. - // - // For example, a value of 0.75 means that the shorter string must be - // at least 75% the length of the longer string to consider it a - // possible match. - // - // Setting this to 1.0 will require that strings are identical length. - // Setting this to 0 will consider all known values as possible - // matches. - MinDiffRatio float64 -} - -// NormalizeFunc is a function that is used to normalize a string prior to comparison. -type NormalizeFunc func(string) string - -// New creates a new Classifier with the provided NormalizeFuncs. Each -// NormalizeFunc is applied in order to a string before comparison. -func New(threshold float64, funcs ...NormalizeFunc) *Classifier { - return &Classifier{ - values: make(map[string]*knownValue), - normalizers: append([]NormalizeFunc(nil), funcs...), - threshold: threshold, - MinDiffRatio: defaultMinDiffRatio, - } -} - -// knownValue identifies a value in the corpus to match against. -type knownValue struct { - key string - normalizedValue string - reValue *regexp.Regexp - set *searchset.SearchSet -} - -// AddValue adds a known value to be matched against. If a value already exists -// for key, an error is returned. -func (c *Classifier) AddValue(key, value string) error { - c.muValues.Lock() - defer c.muValues.Unlock() - if _, ok := c.values[key]; ok { - return fmt.Errorf("value already registered with key %q", key) - } - norm := c.normalize(value) - c.values[key] = &knownValue{ - key: key, - normalizedValue: norm, - reValue: regexp.MustCompile(norm), - } - return nil -} - -// AddPrecomputedValue adds a known value to be matched against. The value has -// already been normalized and the SearchSet object deserialized, so no -// processing is necessary. -func (c *Classifier) AddPrecomputedValue(key, value string, set *searchset.SearchSet) error { - c.muValues.Lock() - defer c.muValues.Unlock() - if _, ok := c.values[key]; ok { - return fmt.Errorf("value already registered with key %q", key) - } - set.GenerateNodeList() - c.values[key] = &knownValue{ - key: key, - normalizedValue: value, - reValue: regexp.MustCompile(value), - set: set, - } - return nil -} - -// normalize a string by applying each of the registered NormalizeFuncs. -func (c *Classifier) normalize(s string) string { - for _, fn := range c.normalizers { - s = fn(s) - } - return s -} - -// Match identifies the result of matching a string against a knownValue. -type Match struct { - Name string // Name of knownValue that was matched - Confidence float64 // Confidence percentage - Offset int // The offset into the unknown string the match was made - Extent int // The length from the offset into the unknown string -} - -// Matches is a list of Match-es. This is here mainly so that the list can be -// sorted. -type Matches []*Match - -func (m Matches) Len() int { return len(m) } -func (m Matches) Swap(i, j int) { m[i], m[j] = m[j], m[i] } -func (m Matches) Less(i, j int) bool { - if math.Abs(m[j].Confidence-m[i].Confidence) < math.SmallestNonzeroFloat64 { - if m[i].Name == m[j].Name { - if m[i].Offset > m[j].Offset { - return false - } - if m[i].Offset == m[j].Offset { - return m[i].Extent > m[j].Extent - } - return true - } - return m[i].Name < m[j].Name - } - return m[i].Confidence > m[j].Confidence -} - -// Names returns an unsorted slice of the names of the matched licenses. -func (m Matches) Names() []string { - var names []string - for _, n := range m { - names = append(names, n.Name) - } - return names -} - -// uniquify goes through the matches and removes any that are contained within -// one with a higher confidence. This assumes that Matches is sorted. -func (m Matches) uniquify() Matches { - type matchedRange struct { - offset, extent int - } - - var matched []matchedRange - var matches Matches -OUTER: - for _, match := range m { - for _, mr := range matched { - if match.Offset >= mr.offset && match.Offset <= mr.offset+mr.extent { - continue OUTER - } - } - matched = append(matched, matchedRange{match.Offset, match.Extent}) - matches = append(matches, match) - } - - return matches -} - -// NearestMatch returns the name of the known value that most closely matches -// the unknown string and a confidence percentage is returned indicating how -// confident the classifier is in the result. A percentage of "1.0" indicates -// an exact match, while a percentage of "0.0" indicates a complete mismatch. -// -// If the string is equidistant from multiple known values, it is undefined -// which will be returned. -func (c *Classifier) NearestMatch(s string) *Match { - pq := c.nearestMatch(s) - if pq.Len() == 0 { - return &Match{} - } - return pq.Pop().(*Match) -} - -// MultipleMatch tries to determine which known strings are found within an -// unknown string. This differs from "NearestMatch" in that it looks only at -// those areas within the unknown string that are likely to match. A list of -// potential matches are returned. It's up to the caller to determine which -// ones are acceptable. -func (c *Classifier) MultipleMatch(s string) (matches Matches) { - pq := c.multipleMatch(s) - if pq == nil { - return matches - } - - // A map to remove duplicate entries. - m := make(map[Match]bool) - - for pq.Len() != 0 { - v := pq.Pop().(*Match) - if _, ok := m[*v]; !ok { - m[*v] = true - matches = append(matches, v) - } - } - - sort.Sort(matches) - return matches.uniquify() -} - -// possibleMatch identifies a known value and it's diffRatio to a given string. -type possibleMatch struct { - value *knownValue - diffRatio float64 -} - -// likelyMatches is a slice of possibleMatches that can be sorted by their -// diffRatio to a given string, such that the most likely matches (based on -// length) are at the beginning. -type likelyMatches []possibleMatch - -func (m likelyMatches) Len() int { return len(m) } -func (m likelyMatches) Less(i, j int) bool { return m[i].diffRatio > m[j].diffRatio } -func (m likelyMatches) Swap(i, j int) { m[i], m[j] = m[j], m[i] } - -// nearestMatch returns a Queue of values that the unknown string may be. The -// values are compared via their Levenshtein Distance and ranked with the -// nearest match at the beginning. -func (c *Classifier) nearestMatch(unknown string) *pq.Queue { - var mu sync.Mutex // Protect the priority queue. - pq := pq.NewQueue(func(x, y interface{}) bool { - return x.(*Match).Confidence > y.(*Match).Confidence - }, nil) - - unknown = c.normalize(unknown) - if len(unknown) == 0 { - return pq - } - - c.muValues.RLock() - var likely likelyMatches - for _, v := range c.values { - dr := diffRatio(unknown, v.normalizedValue) - if dr < c.MinDiffRatio { - continue - } - if unknown == v.normalizedValue { - // We found an exact match. - pq.Push(&Match{Name: v.key, Confidence: 1.0, Offset: 0, Extent: len(unknown)}) - c.muValues.RUnlock() - return pq - } - likely = append(likely, possibleMatch{value: v, diffRatio: dr}) - } - c.muValues.RUnlock() - sort.Sort(likely) - - var wg sync.WaitGroup - classifyString := func(name, unknown, known string) { - defer wg.Done() - - diffs := dmp.DiffMain(unknown, known, true) - distance := dmp.DiffLevenshtein(diffs) - confidence := confidencePercentage(len(unknown), len(known), distance) - if confidence > 0.0 { - mu.Lock() - pq.Push(&Match{Name: name, Confidence: confidence, Offset: 0, Extent: len(unknown)}) - mu.Unlock() - } - } - - wg.Add(len(likely)) - for _, known := range likely { - go classifyString(known.value.key, unknown, known.value.normalizedValue) - } - wg.Wait() - return pq -} - -// matcher finds all potential matches of "known" in "unknown". The results are -// placed in "queue". -type matcher struct { - unknown *searchset.SearchSet - normUnknown string - threshold float64 - - mu sync.Mutex - queue *pq.Queue -} - -// newMatcher creates a "matcher" object. -func newMatcher(unknown string, threshold float64) *matcher { - return &matcher{ - unknown: searchset.New(unknown, searchset.DefaultGranularity), - normUnknown: unknown, - threshold: threshold, - queue: pq.NewQueue(func(x, y interface{}) bool { - return x.(*Match).Confidence > y.(*Match).Confidence - }, nil), - } -} - -// findMatches takes a known text and finds all potential instances of it in -// the unknown text. The resulting matches can then filtered to determine which -// are the best matches. -func (m *matcher) findMatches(known *knownValue) { - var mrs []searchset.MatchRanges - if all := known.reValue.FindAllStringIndex(m.normUnknown, -1); all != nil { - // We found exact matches. Just use those! - for _, a := range all { - var start, end int - for i, tok := range m.unknown.Tokens { - if tok.Offset == a[0] { - start = i - } else if tok.Offset >= a[len(a)-1]-len(tok.Text) { - end = i - break - } - } - - mrs = append(mrs, searchset.MatchRanges{{ - SrcStart: 0, - SrcEnd: len(known.set.Tokens), - TargetStart: start, - TargetEnd: end + 1, - }}) - } - } else { - // No exact match. Perform a more thorough match. - mrs = searchset.FindPotentialMatches(known.set, m.unknown) - } - - var wg sync.WaitGroup - for _, mr := range mrs { - if !m.withinConfidenceThreshold(known.set, mr) { - continue - } - - wg.Add(1) - go func(mr searchset.MatchRanges) { - start, end := mr.TargetRange(m.unknown) - conf := levDist(m.normUnknown[start:end], known.normalizedValue) - if conf > 0.0 { - m.mu.Lock() - m.queue.Push(&Match{Name: known.key, Confidence: conf, Offset: start, Extent: end - start}) - m.mu.Unlock() - } - wg.Done() - }(mr) - } - wg.Wait() -} - -// withinConfidenceThreshold returns the Confidence we have in the potential -// match. It does this by calculating the ratio of what's matching to the -// original known text. -func (m *matcher) withinConfidenceThreshold(known *searchset.SearchSet, mr searchset.MatchRanges) bool { - return float64(mr.Size())/float64(len(known.Tokens)) >= m.threshold -} - -// multipleMatch returns a Queue of values that might be within the unknown -// string. The values are compared via their Levenshtein Distance and ranked -// with the nearest match at the beginning. -func (c *Classifier) multipleMatch(unknown string) *pq.Queue { - normUnknown := c.normalize(unknown) - if normUnknown == "" { - return nil - } - - m := newMatcher(normUnknown, c.threshold) - - c.muValues.RLock() - var kvals []*knownValue - for _, known := range c.values { - kvals = append(kvals, known) - } - c.muValues.RUnlock() - - var wg sync.WaitGroup - wg.Add(len(kvals)) - for _, known := range kvals { - go func(known *knownValue) { - if known.set == nil { - k := searchset.New(known.normalizedValue, searchset.DefaultGranularity) - c.muValues.Lock() - c.values[known.key].set = k - c.muValues.Unlock() - } - m.findMatches(known) - wg.Done() - }(known) - } - wg.Wait() - return m.queue -} - -// levDist runs the Levenshtein Distance algorithm on the known and unknown -// texts to measure how well they match. -func levDist(unknown, known string) float64 { - if len(known) == 0 || len(unknown) == 0 { - log.Printf("Zero-sized texts in Levenshtein Distance algorithm: known==%d, unknown==%d", len(known), len(unknown)) - return 0.0 - } - - // Calculate the differences between the potentially matching known - // text and the unknown text. - diffs := dmp.DiffMain(unknown, known, false) - end := diffRangeEnd(known, diffs) - - // Now execute the Levenshtein Distance algorithm to see how much it - // does match. - distance := dmp.DiffLevenshtein(diffs[:end]) - return confidencePercentage(unknownTextLength(unknown, diffs), len(known), distance) -} - -// unknownTextLength returns the length of the unknown text based on the diff range. -func unknownTextLength(unknown string, diffs []diffmatchpatch.Diff) int { - last := len(diffs) - 1 - for ; last >= 0; last-- { - if diffs[last].Type == diffmatchpatch.DiffEqual { - break - } - } - ulen := 0 - for i := 0; i < last+1; i++ { - switch diffs[i].Type { - case diffmatchpatch.DiffEqual, diffmatchpatch.DiffDelete: - ulen += len(diffs[i].Text) - } - } - return ulen -} - -// diffRangeEnd returns the end index for the "Diff" objects that constructs -// (or nearly constructs) the "known" value. -func diffRangeEnd(known string, diffs []diffmatchpatch.Diff) (end int) { - var seen string - for end = 0; end < len(diffs); end++ { - if seen == known { - // Once we've constructed the "known" value, then we've - // reached the point in the diff list where more - // "Diff"s would just make the Levenshtein Distance - // less valid. There shouldn't be further "DiffEqual" - // nodes, because there's nothing further to match in - // the "known" text. - break - } - switch diffs[end].Type { - case diffmatchpatch.DiffEqual, diffmatchpatch.DiffInsert: - seen += diffs[end].Text - } - } - return end -} - -// confidencePercentage calculates how confident we are in the result of the -// match. A percentage of "1.0" means an identical match. A confidence of "0.0" -// means a complete mismatch. -func confidencePercentage(ulen, klen, distance int) float64 { - if ulen == 0 && klen == 0 { - return 1.0 - } - if ulen == 0 || klen == 0 || (distance > ulen && distance > klen) { - return 0.0 - } - return 1.0 - float64(distance)/float64(max(ulen, klen)) -} - -// diffRatio calculates the ratio of the length of s1 and s2, returned as a -// percentage of the length of the longer string. E.g., diffLength("abcd", "e") -// would return 0.25 because "e" is 25% of the size of "abcd". Comparing -// strings of equal length will return 1. -func diffRatio(s1, s2 string) float64 { - x, y := len(s1), len(s2) - if x == 0 && y == 0 { - // Both strings are zero length - return 1.0 - } - if x < y { - return float64(x) / float64(y) - } - return float64(y) / float64(x) -} - -func max(a, b int) int { - if a > b { - return a - } - return b -} - -func min(a, b int) int { - if a < b { - return a - } - return b -} - -// wsRegexp is a regexp used to identify blocks of whitespace. -var wsRegexp = regexp.MustCompile(`\s+`) - -// FlattenWhitespace will flatten contiguous blocks of whitespace down to a single space. -var FlattenWhitespace NormalizeFunc = func(s string) string { - return wsRegexp.ReplaceAllString(s, " ") -} diff --git a/vendor/github.com/google/licenseclassifier/stringclassifier/internal/pq/priority.go b/vendor/github.com/google/licenseclassifier/stringclassifier/internal/pq/priority.go deleted file mode 100644 index d1797c7..0000000 --- a/vendor/github.com/google/licenseclassifier/stringclassifier/internal/pq/priority.go +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright 2017 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Package pq provides a priority queue. -package pq - -import "container/heap" - -// NewQueue returns an unbounded priority queue that compares elements using -// less; the minimal element is at the top of the queue. -// -// If setIndex is not nil, the queue calls setIndex to inform each element of -// its position in the queue. If an element's priority changes, its position in -// the queue may be incorrect. Call Fix on the element's index to update the -// queue. Call Remove on the element's index to remove it from the queue. -func NewQueue(less func(x, y interface{}) bool, setIndex func(x interface{}, idx int)) *Queue { - return &Queue{ - heap: pqHeap{ - less: less, - setIndex: setIndex, - }, - } -} - -// Queue is a priority queue that supports updating the priority of an element. -// A Queue must be created with NewQueue. -type Queue struct { - heap pqHeap -} - -// Len returns the number of elements in the queue. -func (pq *Queue) Len() int { - return pq.heap.Len() -} - -// Push adds x to the queue. -func (pq *Queue) Push(x interface{}) { - heap.Push(&pq.heap, x) -} - -// Min returns the minimal element. -// Min panics if the queue is empty. -func (pq *Queue) Min() interface{} { - return pq.heap.a[0] -} - -// Pop removes and returns the minimal element. -// Pop panics if the queue is empty. -func (pq *Queue) Pop() interface{} { - return heap.Pop(&pq.heap) -} - -// Fix adjusts the heap to reflect that the element at index has changed priority. -func (pq *Queue) Fix(index int) { - heap.Fix(&pq.heap, index) -} - -// Remove removes the element at index i from the heap. -func (pq *Queue) Remove(index int) { - heap.Remove(&pq.heap, index) -} - -// pqHeap implements heap.Interface. -type pqHeap struct { - a []interface{} - less func(x, y interface{}) bool - setIndex func(x interface{}, idx int) -} - -func (h pqHeap) Len() int { - return len(h.a) -} - -func (h pqHeap) Less(i, j int) bool { - return h.less(h.a[i], h.a[j]) -} - -func (h pqHeap) Swap(i, j int) { - h.a[i], h.a[j] = h.a[j], h.a[i] - if h.setIndex != nil { - h.setIndex(h.a[i], i) - h.setIndex(h.a[j], j) - } -} - -func (h *pqHeap) Push(x interface{}) { - n := len(h.a) - if h.setIndex != nil { - h.setIndex(x, n) - } - h.a = append(h.a, x) -} - -func (h *pqHeap) Pop() interface{} { - old := h.a - n := len(old) - x := old[n-1] - h.a = old[:n-1] - return x -} diff --git a/vendor/github.com/google/licenseclassifier/stringclassifier/searchset/searchset.go b/vendor/github.com/google/licenseclassifier/stringclassifier/searchset/searchset.go deleted file mode 100644 index 2f443e5..0000000 --- a/vendor/github.com/google/licenseclassifier/stringclassifier/searchset/searchset.go +++ /dev/null @@ -1,491 +0,0 @@ -// Copyright 2017 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Package searchset generates hashes for all substrings of a text. Potential -// matches between two SearchSet objects can then be determined quickly. -// Generating the hashes can be expensive, so it's best to perform it once. If -// the text is part of a known corpus, then the SearchSet can be serialized and -// kept in an archive. -// -// Matching occurs by "mapping" ranges from the source text into the target -// text but still retaining the source order: -// -// SOURCE: |-----------------------------| -// -// TARGET: |*****************************************| -// -// MAP SOURCE SECTIONS ONTO TARGET IN SOURCE ORDER: -// -// S: |-[--]-----[---]------[----]------| -// / | \ -// |---| |---------| |-------------| -// T: |*****************************************| -// -// Note that a single source range may match many different ranges in the -// target. The matching algorithm untangles these so that all matched ranges -// are in order with respect to the source ranges. This is especially important -// since the source text may occur more than once in the target text. The -// algorithm finds each potential occurrence of S in T and returns all as -// potential matched ranges. -package searchset - -import ( - "encoding/gob" - "fmt" - "io" - "sort" - - "github.com/google/licenseclassifier/stringclassifier/searchset/tokenizer" -) - -// DefaultGranularity is the minimum size (in words) of the hash chunks. -const DefaultGranularity = 3 - -// SearchSet is a set of substrings that have hashes associated with them, -// making it fast to search for potential matches. -type SearchSet struct { - // Tokens is a tokenized list of the original input string. - Tokens tokenizer.Tokens - // Hashes is a map of checksums to a range of tokens. - Hashes tokenizer.Hash - // Checksums is a list of checksums ordered from longest range to - // shortest. - Checksums []uint32 - // ChecksumRanges are the token ranges for the above checksums. - ChecksumRanges tokenizer.TokenRanges - - nodes []*node -} - -// node consists of a range of tokens along with the checksum for those tokens. -type node struct { - checksum uint32 - tokens *tokenizer.TokenRange -} - -func (n *node) String() string { - return fmt.Sprintf("[%d:%d]", n.tokens.Start, n.tokens.End) -} - -// New creates a new SearchSet object. It generates a hash for each substring of "s". -func New(s string, granularity int) *SearchSet { - toks := tokenizer.Tokenize(s) - - // Start generating hash values for all substrings within the text. - h := make(tokenizer.Hash) - checksums, tokenRanges := toks.GenerateHashes(h, func(a, b int) int { - if a < b { - return a - } - return b - }(len(toks), granularity)) - sset := &SearchSet{ - Tokens: toks, - Hashes: h, - Checksums: checksums, - ChecksumRanges: tokenRanges, - } - sset.GenerateNodeList() - return sset -} - -// GenerateNodeList creates a node list out of the search set. -func (s *SearchSet) GenerateNodeList() { - if len(s.Tokens) == 0 { - return - } - - for i := 0; i < len(s.Checksums); i++ { - s.nodes = append(s.nodes, &node{ - checksum: s.Checksums[i], - tokens: s.ChecksumRanges[i], - }) - } -} - -// Serialize emits the SearchSet out so that it can be recreated at a later -// time. -func (s *SearchSet) Serialize(w io.Writer) error { - return gob.NewEncoder(w).Encode(s) -} - -// Deserialize reads a file with a serialized SearchSet in it and reconstructs it. -func Deserialize(r io.Reader, s *SearchSet) error { - if err := gob.NewDecoder(r).Decode(&s); err != nil { - return err - } - s.GenerateNodeList() - return nil -} - -// MatchRange is the range within the source text that is a match to the range -// in the target text. -type MatchRange struct { - // Offsets into the source tokens. - SrcStart, SrcEnd int - // Offsets into the target tokens. - TargetStart, TargetEnd int -} - -// in returns true if the start and end are enclosed in the match range. -func (m *MatchRange) in(start, end int) bool { - return start >= m.TargetStart && end <= m.TargetEnd -} - -func (m *MatchRange) String() string { - return fmt.Sprintf("[%v, %v)->[%v, %v)", m.SrcStart, m.SrcEnd, m.TargetStart, m.TargetEnd) -} - -// MatchRanges is a list of "MatchRange"s. The ranges are monotonically -// increasing in value and indicate a single potential occurrence of the source -// text in the target text. -type MatchRanges []*MatchRange - -func (m MatchRanges) Len() int { return len(m) } -func (m MatchRanges) Swap(i, j int) { m[i], m[j] = m[j], m[i] } -func (m MatchRanges) Less(i, j int) bool { - if m[i].TargetStart < m[j].TargetStart { - return true - } - return m[i].TargetStart == m[j].TargetStart && m[i].SrcStart < m[j].SrcStart -} - -// TargetRange is the start and stop token offsets into the target text. -func (m MatchRanges) TargetRange(target *SearchSet) (start, end int) { - start = target.Tokens[m[0].TargetStart].Offset - end = target.Tokens[m[len(m)-1].TargetEnd-1].Offset + len(target.Tokens[m[len(m)-1].TargetEnd-1].Text) - return start, end -} - -// Size is the number of source tokens that were matched. -func (m MatchRanges) Size() int { - sum := 0 - for _, mr := range m { - sum += mr.SrcEnd - mr.SrcStart - } - return sum -} - -// FindPotentialMatches returns the ranges in the target (unknown) text that -// are best potential matches to the source (known) text. -func FindPotentialMatches(src, target *SearchSet) []MatchRanges { - matchedRanges := getMatchedRanges(src, target) - if len(matchedRanges) == 0 { - return nil - } - - // Cleanup the matching ranges so that we get the longest contiguous ranges. - for i := 0; i < len(matchedRanges); i++ { - matchedRanges[i] = coalesceMatchRanges(matchedRanges[i]) - } - return matchedRanges -} - -// getMatchedRanges finds the ranges in the target text that match the source -// text. There can be multiple occurrences of the source text within the target -// text. Each separate occurrence is an entry in the returned slice. -func getMatchedRanges(src, target *SearchSet) []MatchRanges { - matched := targetMatchedRanges(src, target) - if len(matched) == 0 { - return nil - } - sort.Sort(matched) - matched = untangleSourceRanges(matched) - matchedRanges := splitRanges(matched) - return mergeConsecutiveRanges(matchedRanges) -} - -func extendsAny(tr tokenizer.TokenRanges, mr []MatchRanges) bool { - if len(mr) == 0 { - return false - } - for _, tv := range tr { - for _, mv := range mr { - if tv.Start >= mv[0].TargetStart && tv.Start <= mv[len(mv)-1].TargetEnd { - return true - } - } - } - return false -} - -// targetMatchedRanges finds matching sequences in target and src ordered by target position -func targetMatchedRanges(src, target *SearchSet) MatchRanges { - if src.nodes == nil { - return nil - } - - var matched MatchRanges - var previous *node - var possible []MatchRanges - for _, tgtNode := range target.nodes { - sr, ok := src.Hashes[tgtNode.checksum] - if !ok || (previous != nil && tgtNode.tokens.Start > previous.tokens.End) || !extendsAny(sr, possible) { - for _, r := range possible { - matched = append(matched, r...) - } - possible = possible[:0] - previous = nil - } - if !ok { - // There isn't a match in the source. - continue - } - - // Maps index within `possible` to the slice of ranges extended by a new range - extended := make(map[int]*MatchRanges) - // Go over the set of source ranges growing lists of `possible` match ranges. - tv := tgtNode.tokens - for _, sv := range sr { - r := &MatchRange{ - SrcStart: sv.Start, - SrcEnd: sv.End, - TargetStart: tv.Start, - TargetEnd: tv.End, - } - found := false - // Grow or extend each abutting `possible` match range. - for i, p := range possible { - last := p[len(p)-1] - if sv.Start >= last.SrcStart && sv.Start <= last.SrcEnd && tv.Start >= last.TargetStart && tv.Start <= last.TargetEnd { - found = true - possible[i] = append(possible[i], r) - extended[i] = &possible[i] - } - } - if !found { - // Did not abut any existing ranges, start a new `possible` match range. - mrs := make(MatchRanges, 0, 2) - mrs = append(mrs, r) - possible = append(possible, mrs) - extended[len(possible)-1] = &possible[len(possible)-1] - } - } - if len(extended) < len(possible) { - // Ranges not extended--add to `matched` if not included in other range. - for i := 0; i < len(possible); { - _, updated := extended[i] - if updated { - i++ // Keep in `possible` and advance to next index. - continue - } - p1 := possible[i] - found := false // whether found as subrange of another `possible` match. - for _, p2 := range extended { - if p1[0].SrcStart >= (*p2)[0].SrcStart && p1[0].TargetStart >= (*p2)[0].TargetStart { - found = true - break - } - } - if !found { - matched = append(matched, p1...) - } // else included in other match. - // Finished -- delete from `possible` and continue from same index. - possible = append(possible[:i], possible[i+1:]...) - } - } - previous = tgtNode - } - // At end of file, terminate all `possible` match ranges. - for i := 0; i < len(possible); i++ { - p1 := possible[i] - found := false // whether found as subrange of another `possible` match. - for j := i + 1; j < len(possible); { - p2 := possible[j] - if p1[0].SrcStart <= p2[0].SrcStart && p1[0].TargetStart <= p2[0].TargetStart { - // Delete later sub-ranges included in this range. - possible = append(possible[:j], possible[j+1:]...) - continue - } - // Skip if subrange of a later range - if p1[0].SrcStart >= p2[0].SrcStart && p1[0].TargetStart >= p2[0].TargetStart { - found = true - } - j++ - } - if !found { - matched = append(matched, p1...) - } - } - return matched -} - -// untangleSourceRanges goes through the ranges and removes any whose source -// ranges are "out of order". A source range is "out of order" if the source -// range is out of sequence with the source ranges before and after it. This -// happens when more than one source range maps to the same target range. -// E.g.: -// -// SrcStart: 20, SrcEnd: 30, TargetStart: 127, TargetEnd: 137 -// 1: SrcStart: 12, SrcEnd: 17, TargetStart: 138, TargetEnd: 143 -// 2: SrcStart: 32, SrcEnd: 37, TargetStart: 138, TargetEnd: 143 -// SrcStart: 38, SrcEnd: 40, TargetStart: 144, TargetEnd: 146 -// -// Here (1) is out of order, because the source range [12, 17) is out of -// sequence with the surrounding source sequences, but [32, 37) is. -func untangleSourceRanges(matched MatchRanges) MatchRanges { - mr := MatchRanges{matched[0]} -NEXT: - for i := 1; i < len(matched); i++ { - if mr[len(mr)-1].TargetStart == matched[i].TargetStart && mr[len(mr)-1].TargetEnd == matched[i].TargetEnd { - // The matched range has already been added. - continue - } - - if i+1 < len(matched) && equalTargetRange(matched[i], matched[i+1]) { - // A sequence of ranges match the same target range. - // Find the first one that has a source range greater - // than the currently matched range. Omit all others. - if matched[i].SrcStart > mr[len(mr)-1].SrcStart { - mr = append(mr, matched[i]) - continue - } - - for j := i + 1; j < len(matched) && equalTargetRange(matched[i], matched[j]); j++ { - // Check subsequent ranges to see if we can - // find one that matches in the correct order. - if matched[j].SrcStart > mr[len(mr)-1].SrcStart { - mr = append(mr, matched[j]) - i = j - continue NEXT - } - } - } - - mr = append(mr, matched[i]) - } - return mr -} - -// equalTargetRange returns true if the two MatchRange's cover the same target range. -func equalTargetRange(this, that *MatchRange) bool { - return this.TargetStart == that.TargetStart && this.TargetEnd == that.TargetEnd -} - -// splitRanges splits the matched ranges so that a single match range has a -// monotonically increasing source range (indicating a single, potential -// instance of the source in the target). -func splitRanges(matched MatchRanges) []MatchRanges { - var matchedRanges []MatchRanges - mr := MatchRanges{matched[0]} - for i := 1; i < len(matched); i++ { - if mr[len(mr)-1].SrcStart > matched[i].SrcStart { - matchedRanges = append(matchedRanges, mr) - mr = MatchRanges{matched[i]} - } else { - mr = append(mr, matched[i]) - } - } - matchedRanges = append(matchedRanges, mr) - return matchedRanges -} - -// mergeConsecutiveRanges goes through the matched ranges and merges -// consecutive ranges. Two ranges are consecutive if the end of the previous -// matched range and beginning of the next matched range overlap. "matched" -// should have 1 or more MatchRanges, each with one or more MatchRange objects. -func mergeConsecutiveRanges(matched []MatchRanges) []MatchRanges { - mr := []MatchRanges{matched[0]} - - // Convenience functions. - prevMatchedRange := func() MatchRanges { - return mr[len(mr)-1] - } - prevMatchedRangeLastElem := func() *MatchRange { - return prevMatchedRange()[len(prevMatchedRange())-1] - } - - // This algorithm compares the start of each MatchRanges object to the - // end of the previous MatchRanges object. If they overlap, then it - // tries to combine them. Note that a 0 offset into a MatchRanges - // object (e.g., matched[i][0]) is its first MatchRange, which - // indicates the start of the whole matched range. -NEXT: - for i := 1; i < len(matched); i++ { - if prevMatchedRangeLastElem().TargetEnd > matched[i][0].TargetStart { - // Consecutive matched ranges overlap. Merge them. - if prevMatchedRangeLastElem().TargetStart < matched[i][0].TargetStart { - // The last element of the previous matched - // range overlaps with the first element of the - // current matched range. Concatenate them. - if prevMatchedRangeLastElem().TargetEnd < matched[i][0].TargetEnd { - prevMatchedRangeLastElem().SrcEnd += matched[i][0].TargetEnd - prevMatchedRangeLastElem().TargetEnd - prevMatchedRangeLastElem().TargetEnd = matched[i][0].TargetEnd - } - mr[len(mr)-1] = append(prevMatchedRange(), matched[i][1:]...) - continue - } - - for j := 1; j < len(matched[i]); j++ { - // Find the positions in the ranges where the - // tail end of the previous matched range - // overlaps with the start of the next matched - // range. - for k := len(prevMatchedRange()) - 1; k > 0; k-- { - if prevMatchedRange()[k].SrcStart < matched[i][j].SrcStart && - prevMatchedRange()[k].TargetStart < matched[i][j].TargetStart { - // Append the next range to the previous range. - if prevMatchedRange()[k].TargetEnd < matched[i][j].TargetStart { - // Coalesce the ranges. - prevMatchedRange()[k].SrcEnd += matched[i][j-1].TargetEnd - prevMatchedRange()[k].TargetEnd - prevMatchedRange()[k].TargetEnd = matched[i][j-1].TargetEnd - } - mr[len(mr)-1] = append(prevMatchedRange()[:k+1], matched[i][j:]...) - continue NEXT - } - } - } - } - mr = append(mr, matched[i]) - } - return mr -} - -// coalesceMatchRanges coalesces overlapping match ranges into a single -// contiguous match range. -func coalesceMatchRanges(matchedRanges MatchRanges) MatchRanges { - coalesced := MatchRanges{matchedRanges[0]} - for i := 1; i < len(matchedRanges); i++ { - c := coalesced[len(coalesced)-1] - mr := matchedRanges[i] - - if mr.SrcStart <= c.SrcEnd && mr.SrcStart >= c.SrcStart { - var se, ts, te int - if mr.SrcEnd > c.SrcEnd { - se = mr.SrcEnd - } else { - se = c.SrcEnd - } - if mr.TargetStart < c.TargetStart { - ts = mr.TargetStart - } else { - ts = c.TargetStart - } - if mr.TargetEnd > c.TargetEnd { - te = mr.TargetEnd - } else { - te = c.TargetEnd - } - coalesced[len(coalesced)-1] = &MatchRange{ - SrcStart: c.SrcStart, - SrcEnd: se, - TargetStart: ts, - TargetEnd: te, - } - } else { - coalesced = append(coalesced, mr) - } - } - return coalesced -} diff --git a/vendor/github.com/google/licenseclassifier/stringclassifier/searchset/tokenizer/tokenizer.go b/vendor/github.com/google/licenseclassifier/stringclassifier/searchset/tokenizer/tokenizer.go deleted file mode 100644 index 0f842d8..0000000 --- a/vendor/github.com/google/licenseclassifier/stringclassifier/searchset/tokenizer/tokenizer.go +++ /dev/null @@ -1,175 +0,0 @@ -// Copyright 2017 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Package tokenizer converts a text into a stream of tokens. -package tokenizer - -import ( - "bytes" - "fmt" - "hash/crc32" - "sort" - "unicode" - "unicode/utf8" -) - -// Token is a non-whitespace sequence (i.e., word or punctuation) in the -// original string. This is not meant for use outside of this package. -type token struct { - Text string - Offset int -} - -// Tokens is a list of Token objects. -type Tokens []*token - -// newToken creates a new token object with an invalid (negative) offset, which -// will be set before the token's used. -func newToken() *token { - return &token{Offset: -1} -} - -// Tokenize converts a string into a stream of tokens. -func Tokenize(s string) (toks Tokens) { - tok := newToken() - for i := 0; i < len(s); { - r, size := utf8.DecodeRuneInString(s[i:]) - switch { - case unicode.IsSpace(r): - if tok.Offset >= 0 { - toks = append(toks, tok) - tok = newToken() - } - case unicode.IsPunct(r): - if tok.Offset >= 0 { - toks = append(toks, tok) - tok = newToken() - } - toks = append(toks, &token{ - Text: string(r), - Offset: i, - }) - default: - if tok.Offset == -1 { - tok.Offset = i - } - tok.Text += string(r) - } - i += size - } - if tok.Offset != -1 { - // Add any remaining token that wasn't yet included in the list. - toks = append(toks, tok) - } - return toks -} - -// GenerateHashes generates hashes for "size" length substrings. The -// "stringifyTokens" call takes a long time to run, so not all substrings have -// hashes, i.e. we skip some of the smaller substrings. -func (t Tokens) GenerateHashes(h Hash, size int) ([]uint32, TokenRanges) { - if size == 0 { - return nil, nil - } - - var css []uint32 - var tr TokenRanges - for offset := 0; offset+size <= len(t); offset += size / 2 { - var b bytes.Buffer - t.stringifyTokens(&b, offset, size) - cs := crc32.ChecksumIEEE(b.Bytes()) - css = append(css, cs) - tr = append(tr, &TokenRange{offset, offset + size}) - h.add(cs, offset, offset+size) - if size <= 1 { - break - } - } - - return css, tr -} - -// stringifyTokens serializes a sublist of tokens into a bytes buffer. -func (t Tokens) stringifyTokens(b *bytes.Buffer, offset, size int) { - for j := offset; j < offset+size; j++ { - if j != offset { - b.WriteRune(' ') - } - b.WriteString(t[j].Text) - } -} - -// TokenRange indicates the range of tokens that map to a particular checksum. -type TokenRange struct { - Start int - End int -} - -func (t *TokenRange) String() string { - return fmt.Sprintf("[%v, %v)", t.Start, t.End) -} - -// TokenRanges is a list of TokenRange objects. The chance that two different -// strings map to the same checksum is very small, but unfortunately isn't -// zero, so we use this instead of making the assumption that they will all be -// unique. -type TokenRanges []*TokenRange - -func (t TokenRanges) Len() int { return len(t) } -func (t TokenRanges) Swap(i, j int) { t[i], t[j] = t[j], t[i] } -func (t TokenRanges) Less(i, j int) bool { return t[i].Start < t[j].Start } - -// CombineUnique returns the combination of both token ranges with no duplicates. -func (t TokenRanges) CombineUnique(other TokenRanges) TokenRanges { - if len(other) == 0 { - return t - } - if len(t) == 0 { - return other - } - - cu := append(t, other...) - sort.Sort(cu) - - if len(cu) == 0 { - return nil - } - - res := TokenRanges{cu[0]} - for prev, i := cu[0], 1; i < len(cu); i++ { - if prev.Start != cu[i].Start || prev.End != cu[i].End { - res = append(res, cu[i]) - prev = cu[i] - } - } - return res -} - -// Hash is a map of the hashes of a section of text to the token range covering that text. -type Hash map[uint32]TokenRanges - -// add associates a token range, [start, end], to a checksum. -func (h Hash) add(checksum uint32, start, end int) { - ntr := &TokenRange{Start: start, End: end} - if r, ok := h[checksum]; ok { - for _, tr := range r { - if tr.Start == ntr.Start && tr.End == ntr.End { - // The token range already exists at this - // checksum. No need to re-add it. - return - } - } - } - h[checksum] = append(h[checksum], ntr) -} diff --git a/vendor/github.com/inconshreveable/mousetrap/LICENSE b/vendor/github.com/inconshreveable/mousetrap/LICENSE deleted file mode 100644 index 5f0d1fb..0000000 --- a/vendor/github.com/inconshreveable/mousetrap/LICENSE +++ /dev/null @@ -1,13 +0,0 @@ -Copyright 2014 Alan Shreve - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. diff --git a/vendor/github.com/inconshreveable/mousetrap/README.md b/vendor/github.com/inconshreveable/mousetrap/README.md deleted file mode 100644 index 7a950d1..0000000 --- a/vendor/github.com/inconshreveable/mousetrap/README.md +++ /dev/null @@ -1,23 +0,0 @@ -# mousetrap - -mousetrap is a tiny library that answers a single question. - -On a Windows machine, was the process invoked by someone double clicking on -the executable file while browsing in explorer? - -### Motivation - -Windows developers unfamiliar with command line tools will often "double-click" -the executable for a tool. Because most CLI tools print the help and then exit -when invoked without arguments, this is often very frustrating for those users. - -mousetrap provides a way to detect these invocations so that you can provide -more helpful behavior and instructions on how to run the CLI tool. To see what -this looks like, both from an organizational and a technical perspective, see -https://inconshreveable.com/09-09-2014/sweat-the-small-stuff/ - -### The interface - -The library exposes a single interface: - - func StartedByExplorer() (bool) diff --git a/vendor/github.com/inconshreveable/mousetrap/trap_others.go b/vendor/github.com/inconshreveable/mousetrap/trap_others.go deleted file mode 100644 index 9d2d8a4..0000000 --- a/vendor/github.com/inconshreveable/mousetrap/trap_others.go +++ /dev/null @@ -1,15 +0,0 @@ -// +build !windows - -package mousetrap - -// StartedByExplorer returns true if the program was invoked by the user -// double-clicking on the executable from explorer.exe -// -// It is conservative and returns false if any of the internal calls fail. -// It does not guarantee that the program was run from a terminal. It only can tell you -// whether it was launched from explorer.exe -// -// On non-Windows platforms, it always returns false. -func StartedByExplorer() bool { - return false -} diff --git a/vendor/github.com/inconshreveable/mousetrap/trap_windows.go b/vendor/github.com/inconshreveable/mousetrap/trap_windows.go deleted file mode 100644 index 336142a..0000000 --- a/vendor/github.com/inconshreveable/mousetrap/trap_windows.go +++ /dev/null @@ -1,98 +0,0 @@ -// +build windows -// +build !go1.4 - -package mousetrap - -import ( - "fmt" - "os" - "syscall" - "unsafe" -) - -const ( - // defined by the Win32 API - th32cs_snapprocess uintptr = 0x2 -) - -var ( - kernel = syscall.MustLoadDLL("kernel32.dll") - CreateToolhelp32Snapshot = kernel.MustFindProc("CreateToolhelp32Snapshot") - Process32First = kernel.MustFindProc("Process32FirstW") - Process32Next = kernel.MustFindProc("Process32NextW") -) - -// ProcessEntry32 structure defined by the Win32 API -type processEntry32 struct { - dwSize uint32 - cntUsage uint32 - th32ProcessID uint32 - th32DefaultHeapID int - th32ModuleID uint32 - cntThreads uint32 - th32ParentProcessID uint32 - pcPriClassBase int32 - dwFlags uint32 - szExeFile [syscall.MAX_PATH]uint16 -} - -func getProcessEntry(pid int) (pe *processEntry32, err error) { - snapshot, _, e1 := CreateToolhelp32Snapshot.Call(th32cs_snapprocess, uintptr(0)) - if snapshot == uintptr(syscall.InvalidHandle) { - err = fmt.Errorf("CreateToolhelp32Snapshot: %v", e1) - return - } - defer syscall.CloseHandle(syscall.Handle(snapshot)) - - var processEntry processEntry32 - processEntry.dwSize = uint32(unsafe.Sizeof(processEntry)) - ok, _, e1 := Process32First.Call(snapshot, uintptr(unsafe.Pointer(&processEntry))) - if ok == 0 { - err = fmt.Errorf("Process32First: %v", e1) - return - } - - for { - if processEntry.th32ProcessID == uint32(pid) { - pe = &processEntry - return - } - - ok, _, e1 = Process32Next.Call(snapshot, uintptr(unsafe.Pointer(&processEntry))) - if ok == 0 { - err = fmt.Errorf("Process32Next: %v", e1) - return - } - } -} - -func getppid() (pid int, err error) { - pe, err := getProcessEntry(os.Getpid()) - if err != nil { - return - } - - pid = int(pe.th32ParentProcessID) - return -} - -// StartedByExplorer returns true if the program was invoked by the user double-clicking -// on the executable from explorer.exe -// -// It is conservative and returns false if any of the internal calls fail. -// It does not guarantee that the program was run from a terminal. It only can tell you -// whether it was launched from explorer.exe -func StartedByExplorer() bool { - ppid, err := getppid() - if err != nil { - return false - } - - pe, err := getProcessEntry(ppid) - if err != nil { - return false - } - - name := syscall.UTF16ToString(pe.szExeFile[:]) - return name == "explorer.exe" -} diff --git a/vendor/github.com/inconshreveable/mousetrap/trap_windows_1.4.go b/vendor/github.com/inconshreveable/mousetrap/trap_windows_1.4.go deleted file mode 100644 index 9a28e57..0000000 --- a/vendor/github.com/inconshreveable/mousetrap/trap_windows_1.4.go +++ /dev/null @@ -1,46 +0,0 @@ -// +build windows -// +build go1.4 - -package mousetrap - -import ( - "os" - "syscall" - "unsafe" -) - -func getProcessEntry(pid int) (*syscall.ProcessEntry32, error) { - snapshot, err := syscall.CreateToolhelp32Snapshot(syscall.TH32CS_SNAPPROCESS, 0) - if err != nil { - return nil, err - } - defer syscall.CloseHandle(snapshot) - var procEntry syscall.ProcessEntry32 - procEntry.Size = uint32(unsafe.Sizeof(procEntry)) - if err = syscall.Process32First(snapshot, &procEntry); err != nil { - return nil, err - } - for { - if procEntry.ProcessID == uint32(pid) { - return &procEntry, nil - } - err = syscall.Process32Next(snapshot, &procEntry) - if err != nil { - return nil, err - } - } -} - -// StartedByExplorer returns true if the program was invoked by the user double-clicking -// on the executable from explorer.exe -// -// It is conservative and returns false if any of the internal calls fail. -// It does not guarantee that the program was run from a terminal. It only can tell you -// whether it was launched from explorer.exe -func StartedByExplorer() bool { - pe, err := getProcessEntry(os.Getppid()) - if err != nil { - return false - } - return "explorer.exe" == syscall.UTF16ToString(pe.ExeFile[:]) -} diff --git a/vendor/github.com/jbenet/go-context/LICENSE b/vendor/github.com/jbenet/go-context/LICENSE deleted file mode 100644 index c7386b3..0000000 --- a/vendor/github.com/jbenet/go-context/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 Juan Batiz-Benet - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/vendor/github.com/jbenet/go-context/io/ctxio.go b/vendor/github.com/jbenet/go-context/io/ctxio.go deleted file mode 100644 index b4f2454..0000000 --- a/vendor/github.com/jbenet/go-context/io/ctxio.go +++ /dev/null @@ -1,120 +0,0 @@ -// Package ctxio provides io.Reader and io.Writer wrappers that -// respect context.Contexts. Use these at the interface between -// your context code and your io. -// -// WARNING: read the code. see how writes and reads will continue -// until you cancel the io. Maybe this package should provide -// versions of io.ReadCloser and io.WriteCloser that automatically -// call .Close when the context expires. But for now -- since in my -// use cases I have long-lived connections with ephemeral io wrappers -// -- this has yet to be a need. -package ctxio - -import ( - "io" - - context "golang.org/x/net/context" -) - -type ioret struct { - n int - err error -} - -type Writer interface { - io.Writer -} - -type ctxWriter struct { - w io.Writer - ctx context.Context -} - -// NewWriter wraps a writer to make it respect given Context. -// If there is a blocking write, the returned Writer will return -// whenever the context is cancelled (the return values are n=0 -// and err=ctx.Err().) -// -// Note well: this wrapper DOES NOT ACTUALLY cancel the underlying -// write-- there is no way to do that with the standard go io -// interface. So the read and write _will_ happen or hang. So, use -// this sparingly, make sure to cancel the read or write as necesary -// (e.g. closing a connection whose context is up, etc.) -// -// Furthermore, in order to protect your memory from being read -// _after_ you've cancelled the context, this io.Writer will -// first make a **copy** of the buffer. -func NewWriter(ctx context.Context, w io.Writer) *ctxWriter { - if ctx == nil { - ctx = context.Background() - } - return &ctxWriter{ctx: ctx, w: w} -} - -func (w *ctxWriter) Write(buf []byte) (int, error) { - buf2 := make([]byte, len(buf)) - copy(buf2, buf) - - c := make(chan ioret, 1) - - go func() { - n, err := w.w.Write(buf2) - c <- ioret{n, err} - close(c) - }() - - select { - case r := <-c: - return r.n, r.err - case <-w.ctx.Done(): - return 0, w.ctx.Err() - } -} - -type Reader interface { - io.Reader -} - -type ctxReader struct { - r io.Reader - ctx context.Context -} - -// NewReader wraps a reader to make it respect given Context. -// If there is a blocking read, the returned Reader will return -// whenever the context is cancelled (the return values are n=0 -// and err=ctx.Err().) -// -// Note well: this wrapper DOES NOT ACTUALLY cancel the underlying -// write-- there is no way to do that with the standard go io -// interface. So the read and write _will_ happen or hang. So, use -// this sparingly, make sure to cancel the read or write as necesary -// (e.g. closing a connection whose context is up, etc.) -// -// Furthermore, in order to protect your memory from being read -// _before_ you've cancelled the context, this io.Reader will -// allocate a buffer of the same size, and **copy** into the client's -// if the read succeeds in time. -func NewReader(ctx context.Context, r io.Reader) *ctxReader { - return &ctxReader{ctx: ctx, r: r} -} - -func (r *ctxReader) Read(buf []byte) (int, error) { - buf2 := make([]byte, len(buf)) - - c := make(chan ioret, 1) - - go func() { - n, err := r.r.Read(buf2) - c <- ioret{n, err} - close(c) - }() - - select { - case ret := <-c: - copy(buf, buf2) - return ret.n, ret.err - case <-r.ctx.Done(): - return 0, r.ctx.Err() - } -} diff --git a/vendor/github.com/kevinburke/ssh_config/.gitattributes b/vendor/github.com/kevinburke/ssh_config/.gitattributes deleted file mode 100644 index 44db581..0000000 --- a/vendor/github.com/kevinburke/ssh_config/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -testdata/dos-lines eol=crlf diff --git a/vendor/github.com/kevinburke/ssh_config/.gitignore b/vendor/github.com/kevinburke/ssh_config/.gitignore deleted file mode 100644 index e69de29..0000000 diff --git a/vendor/github.com/kevinburke/ssh_config/.mailmap b/vendor/github.com/kevinburke/ssh_config/.mailmap deleted file mode 100644 index 253406b..0000000 --- a/vendor/github.com/kevinburke/ssh_config/.mailmap +++ /dev/null @@ -1 +0,0 @@ -Kevin Burke Kevin Burke diff --git a/vendor/github.com/kevinburke/ssh_config/.travis.yml b/vendor/github.com/kevinburke/ssh_config/.travis.yml deleted file mode 100644 index 4306f30..0000000 --- a/vendor/github.com/kevinburke/ssh_config/.travis.yml +++ /dev/null @@ -1,14 +0,0 @@ -go_import_path: github.com/kevinburke/ssh_config - -language: go - -go: - - 1.11.x - - 1.12.x - - master - -before_script: - - go get -u ./... - -script: - - make race-test diff --git a/vendor/github.com/kevinburke/ssh_config/AUTHORS.txt b/vendor/github.com/kevinburke/ssh_config/AUTHORS.txt deleted file mode 100644 index cd33794..0000000 --- a/vendor/github.com/kevinburke/ssh_config/AUTHORS.txt +++ /dev/null @@ -1,5 +0,0 @@ -Eugene Terentev -Kevin Burke -Mark Nevill -Sergey Lukjanov -Wayne Ashley Berry diff --git a/vendor/github.com/kevinburke/ssh_config/LICENSE b/vendor/github.com/kevinburke/ssh_config/LICENSE deleted file mode 100644 index b9a770a..0000000 --- a/vendor/github.com/kevinburke/ssh_config/LICENSE +++ /dev/null @@ -1,49 +0,0 @@ -Copyright (c) 2017 Kevin Burke. - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -=================== - -The lexer and parser borrow heavily from github.com/pelletier/go-toml. The -license for that project is copied below. - -The MIT License (MIT) - -Copyright (c) 2013 - 2017 Thomas Pelletier, Eric Anderton - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/vendor/github.com/kevinburke/ssh_config/Makefile b/vendor/github.com/kevinburke/ssh_config/Makefile deleted file mode 100644 index a1880d1..0000000 --- a/vendor/github.com/kevinburke/ssh_config/Makefile +++ /dev/null @@ -1,30 +0,0 @@ -BUMP_VERSION := $(GOPATH)/bin/bump_version -STATICCHECK := $(GOPATH)/bin/staticcheck -WRITE_MAILMAP := $(GOPATH)/bin/write_mailmap - -$(STATICCHECK): - go get honnef.co/go/tools/cmd/staticcheck - -lint: $(STATICCHECK) - go vet ./... - $(STATICCHECK) - -test: lint - @# the timeout helps guard against infinite recursion - go test -timeout=250ms ./... - -race-test: lint - go test -timeout=500ms -race ./... - -$(BUMP_VERSION): - go get -u github.com/kevinburke/bump_version - -release: test | $(BUMP_VERSION) - $(BUMP_VERSION) minor config.go - -force: ; - -AUTHORS.txt: force | $(WRITE_MAILMAP) - $(WRITE_MAILMAP) > AUTHORS.txt - -authors: AUTHORS.txt diff --git a/vendor/github.com/kevinburke/ssh_config/README.md b/vendor/github.com/kevinburke/ssh_config/README.md deleted file mode 100644 index 52cc1ea..0000000 --- a/vendor/github.com/kevinburke/ssh_config/README.md +++ /dev/null @@ -1,81 +0,0 @@ -# ssh_config - -This is a Go parser for `ssh_config` files. Importantly, this parser attempts -to preserve comments in a given file, so you can manipulate a `ssh_config` file -from a program, if your heart desires. - -It's designed to be used with the excellent -[x/crypto/ssh](https://golang.org/x/crypto/ssh) package, which handles SSH -negotiation but isn't very easy to configure. - -The `ssh_config` `Get()` and `GetStrict()` functions will attempt to read values -from `$HOME/.ssh/config` and fall back to `/etc/ssh/ssh_config`. The first -argument is the host name to match on, and the second argument is the key you -want to retrieve. - -```go -port := ssh_config.Get("myhost", "Port") -``` - -You can also load a config file and read values from it. - -```go -var config = ` -Host *.test - Compression yes -` - -cfg, err := ssh_config.Decode(strings.NewReader(config)) -fmt.Println(cfg.Get("example.test", "Port")) -``` - -Some SSH arguments have default values - for example, the default value for -`KeyboardAuthentication` is `"yes"`. If you call Get(), and no value for the -given Host/keyword pair exists in the config, we'll return a default for the -keyword if one exists. - -### Manipulating SSH config files - -Here's how you can manipulate an SSH config file, and then write it back to -disk. - -```go -f, _ := os.Open(filepath.Join(os.Getenv("HOME"), ".ssh", "config")) -cfg, _ := ssh_config.Decode(f) -for _, host := range cfg.Hosts { - fmt.Println("patterns:", host.Patterns) - for _, node := range host.Nodes { - // Manipulate the nodes as you see fit, or use a type switch to - // distinguish between Empty, KV, and Include nodes. - fmt.Println(node.String()) - } -} - -// Print the config to stdout: -fmt.Println(cfg.String()) -``` - -## Spec compliance - -Wherever possible we try to implement the specification as documented in -the `ssh_config` manpage. Unimplemented features should be present in the -[issues][issues] list. - -Notably, the `Match` directive is currently unsupported. - -[issues]: https://github.com/kevinburke/ssh_config/issues - -## Errata - -This is the second [comment-preserving configuration parser][blog] I've written, after -[an /etc/hosts parser][hostsfile]. Eventually, I will write one for every Linux -file format. - -[blog]: https://kev.inburke.com/kevin/more-comment-preserving-configuration-parsers/ -[hostsfile]: https://github.com/kevinburke/hostsfile - -## Donating - -Donations free up time to make improvements to the library, and respond to -bug reports. You can send donations via Paypal's "Send Money" feature to -kev@inburke.com. Donations are not tax deductible in the USA. diff --git a/vendor/github.com/kevinburke/ssh_config/config.go b/vendor/github.com/kevinburke/ssh_config/config.go deleted file mode 100644 index 136f0c3..0000000 --- a/vendor/github.com/kevinburke/ssh_config/config.go +++ /dev/null @@ -1,649 +0,0 @@ -// Package ssh_config provides tools for manipulating SSH config files. -// -// Importantly, this parser attempts to preserve comments in a given file, so -// you can manipulate a `ssh_config` file from a program, if your heart desires. -// -// The Get() and GetStrict() functions will attempt to read values from -// $HOME/.ssh/config, falling back to /etc/ssh/ssh_config. The first argument is -// the host name to match on ("example.com"), and the second argument is the key -// you want to retrieve ("Port"). The keywords are case insensitive. -// -// port := ssh_config.Get("myhost", "Port") -// -// You can also manipulate an SSH config file and then print it or write it back -// to disk. -// -// f, _ := os.Open(filepath.Join(os.Getenv("HOME"), ".ssh", "config")) -// cfg, _ := ssh_config.Decode(f) -// for _, host := range cfg.Hosts { -// fmt.Println("patterns:", host.Patterns) -// for _, node := range host.Nodes { -// fmt.Println(node.String()) -// } -// } -// -// // Write the cfg back to disk: -// fmt.Println(cfg.String()) -// -// BUG: the Match directive is currently unsupported; parsing a config with -// a Match directive will trigger an error. -package ssh_config - -import ( - "bytes" - "errors" - "fmt" - "io" - "io/ioutil" - "os" - osuser "os/user" - "path/filepath" - "regexp" - "runtime" - "strings" - "sync" -) - -const version = "1.0" - -var _ = version - -type configFinder func() string - -// UserSettings checks ~/.ssh and /etc/ssh for configuration files. The config -// files are parsed and cached the first time Get() or GetStrict() is called. -type UserSettings struct { - IgnoreErrors bool - systemConfig *Config - systemConfigFinder configFinder - userConfig *Config - userConfigFinder configFinder - loadConfigs sync.Once - onceErr error -} - -func homedir() string { - user, err := osuser.Current() - if err == nil { - return user.HomeDir - } else { - return os.Getenv("HOME") - } -} - -func userConfigFinder() string { - return filepath.Join(homedir(), ".ssh", "config") -} - -// DefaultUserSettings is the default UserSettings and is used by Get and -// GetStrict. It checks both $HOME/.ssh/config and /etc/ssh/ssh_config for keys, -// and it will return parse errors (if any) instead of swallowing them. -var DefaultUserSettings = &UserSettings{ - IgnoreErrors: false, - systemConfigFinder: systemConfigFinder, - userConfigFinder: userConfigFinder, -} - -func systemConfigFinder() string { - return filepath.Join("/", "etc", "ssh", "ssh_config") -} - -func findVal(c *Config, alias, key string) (string, error) { - if c == nil { - return "", nil - } - val, err := c.Get(alias, key) - if err != nil || val == "" { - return "", err - } - if err := validate(key, val); err != nil { - return "", err - } - return val, nil -} - -// Get finds the first value for key within a declaration that matches the -// alias. Get returns the empty string if no value was found, or if IgnoreErrors -// is false and we could not parse the configuration file. Use GetStrict to -// disambiguate the latter cases. -// -// The match for key is case insensitive. -// -// Get is a wrapper around DefaultUserSettings.Get. -func Get(alias, key string) string { - return DefaultUserSettings.Get(alias, key) -} - -// GetStrict finds the first value for key within a declaration that matches the -// alias. If key has a default value and no matching configuration is found, the -// default will be returned. For more information on default values and the way -// patterns are matched, see the manpage for ssh_config. -// -// error will be non-nil if and only if a user's configuration file or the -// system configuration file could not be parsed, and u.IgnoreErrors is false. -// -// GetStrict is a wrapper around DefaultUserSettings.GetStrict. -func GetStrict(alias, key string) (string, error) { - return DefaultUserSettings.GetStrict(alias, key) -} - -// Get finds the first value for key within a declaration that matches the -// alias. Get returns the empty string if no value was found, or if IgnoreErrors -// is false and we could not parse the configuration file. Use GetStrict to -// disambiguate the latter cases. -// -// The match for key is case insensitive. -func (u *UserSettings) Get(alias, key string) string { - val, err := u.GetStrict(alias, key) - if err != nil { - return "" - } - return val -} - -// GetStrict finds the first value for key within a declaration that matches the -// alias. If key has a default value and no matching configuration is found, the -// default will be returned. For more information on default values and the way -// patterns are matched, see the manpage for ssh_config. -// -// error will be non-nil if and only if a user's configuration file or the -// system configuration file could not be parsed, and u.IgnoreErrors is false. -func (u *UserSettings) GetStrict(alias, key string) (string, error) { - u.loadConfigs.Do(func() { - // can't parse user file, that's ok. - var filename string - if u.userConfigFinder == nil { - filename = userConfigFinder() - } else { - filename = u.userConfigFinder() - } - var err error - u.userConfig, err = parseFile(filename) - //lint:ignore S1002 I prefer it this way - if err != nil && os.IsNotExist(err) == false { - u.onceErr = err - return - } - if u.systemConfigFinder == nil { - filename = systemConfigFinder() - } else { - filename = u.systemConfigFinder() - } - u.systemConfig, err = parseFile(filename) - //lint:ignore S1002 I prefer it this way - if err != nil && os.IsNotExist(err) == false { - u.onceErr = err - return - } - }) - //lint:ignore S1002 I prefer it this way - if u.onceErr != nil && u.IgnoreErrors == false { - return "", u.onceErr - } - val, err := findVal(u.userConfig, alias, key) - if err != nil || val != "" { - return val, err - } - val2, err2 := findVal(u.systemConfig, alias, key) - if err2 != nil || val2 != "" { - return val2, err2 - } - return Default(key), nil -} - -func parseFile(filename string) (*Config, error) { - return parseWithDepth(filename, 0) -} - -func parseWithDepth(filename string, depth uint8) (*Config, error) { - b, err := ioutil.ReadFile(filename) - if err != nil { - return nil, err - } - return decodeBytes(b, isSystem(filename), depth) -} - -func isSystem(filename string) bool { - // TODO: not sure this is the best way to detect a system repo - return strings.HasPrefix(filepath.Clean(filename), "/etc/ssh") -} - -// Decode reads r into a Config, or returns an error if r could not be parsed as -// an SSH config file. -func Decode(r io.Reader) (*Config, error) { - b, err := ioutil.ReadAll(r) - if err != nil { - return nil, err - } - return decodeBytes(b, false, 0) -} - -func decodeBytes(b []byte, system bool, depth uint8) (c *Config, err error) { - defer func() { - if r := recover(); r != nil { - if _, ok := r.(runtime.Error); ok { - panic(r) - } - if e, ok := r.(error); ok && e == ErrDepthExceeded { - err = e - return - } - err = errors.New(r.(string)) - } - }() - - c = parseSSH(lexSSH(b), system, depth) - return c, err -} - -// Config represents an SSH config file. -type Config struct { - // A list of hosts to match against. The file begins with an implicit - // "Host *" declaration matching all hosts. - Hosts []*Host - depth uint8 - position Position -} - -// Get finds the first value in the configuration that matches the alias and -// contains key. Get returns the empty string if no value was found, or if the -// Config contains an invalid conditional Include value. -// -// The match for key is case insensitive. -func (c *Config) Get(alias, key string) (string, error) { - lowerKey := strings.ToLower(key) - for _, host := range c.Hosts { - if !host.Matches(alias) { - continue - } - for _, node := range host.Nodes { - switch t := node.(type) { - case *Empty: - continue - case *KV: - // "keys are case insensitive" per the spec - lkey := strings.ToLower(t.Key) - if lkey == "match" { - panic("can't handle Match directives") - } - if lkey == lowerKey { - return t.Value, nil - } - case *Include: - val := t.Get(alias, key) - if val != "" { - return val, nil - } - default: - return "", fmt.Errorf("unknown Node type %v", t) - } - } - } - return "", nil -} - -// String returns a string representation of the Config file. -func (c Config) String() string { - return marshal(c).String() -} - -func (c Config) MarshalText() ([]byte, error) { - return marshal(c).Bytes(), nil -} - -func marshal(c Config) *bytes.Buffer { - var buf bytes.Buffer - for i := range c.Hosts { - buf.WriteString(c.Hosts[i].String()) - } - return &buf -} - -// Pattern is a pattern in a Host declaration. Patterns are read-only values; -// create a new one with NewPattern(). -type Pattern struct { - str string // Its appearance in the file, not the value that gets compiled. - regex *regexp.Regexp - not bool // True if this is a negated match -} - -// String prints the string representation of the pattern. -func (p Pattern) String() string { - return p.str -} - -// Copied from regexp.go with * and ? removed. -var specialBytes = []byte(`\.+()|[]{}^$`) - -func special(b byte) bool { - return bytes.IndexByte(specialBytes, b) >= 0 -} - -// NewPattern creates a new Pattern for matching hosts. NewPattern("*") creates -// a Pattern that matches all hosts. -// -// From the manpage, a pattern consists of zero or more non-whitespace -// characters, `*' (a wildcard that matches zero or more characters), or `?' (a -// wildcard that matches exactly one character). For example, to specify a set -// of declarations for any host in the ".co.uk" set of domains, the following -// pattern could be used: -// -// Host *.co.uk -// -// The following pattern would match any host in the 192.168.0.[0-9] network range: -// -// Host 192.168.0.? -func NewPattern(s string) (*Pattern, error) { - if s == "" { - return nil, errors.New("ssh_config: empty pattern") - } - negated := false - if s[0] == '!' { - negated = true - s = s[1:] - } - var buf bytes.Buffer - buf.WriteByte('^') - for i := 0; i < len(s); i++ { - // A byte loop is correct because all metacharacters are ASCII. - switch b := s[i]; b { - case '*': - buf.WriteString(".*") - case '?': - buf.WriteString(".?") - default: - // borrowing from QuoteMeta here. - if special(b) { - buf.WriteByte('\\') - } - buf.WriteByte(b) - } - } - buf.WriteByte('$') - r, err := regexp.Compile(buf.String()) - if err != nil { - return nil, err - } - return &Pattern{str: s, regex: r, not: negated}, nil -} - -// Host describes a Host directive and the keywords that follow it. -type Host struct { - // A list of host patterns that should match this host. - Patterns []*Pattern - // A Node is either a key/value pair or a comment line. - Nodes []Node - // EOLComment is the comment (if any) terminating the Host line. - EOLComment string - hasEquals bool - leadingSpace int // TODO: handle spaces vs tabs here. - // The file starts with an implicit "Host *" declaration. - implicit bool -} - -// Matches returns true if the Host matches for the given alias. For -// a description of the rules that provide a match, see the manpage for -// ssh_config. -func (h *Host) Matches(alias string) bool { - found := false - for i := range h.Patterns { - if h.Patterns[i].regex.MatchString(alias) { - if h.Patterns[i].not { - // Negated match. "A pattern entry may be negated by prefixing - // it with an exclamation mark (`!'). If a negated entry is - // matched, then the Host entry is ignored, regardless of - // whether any other patterns on the line match. Negated matches - // are therefore useful to provide exceptions for wildcard - // matches." - return false - } - found = true - } - } - return found -} - -// String prints h as it would appear in a config file. Minor tweaks may be -// present in the whitespace in the printed file. -func (h *Host) String() string { - var buf bytes.Buffer - //lint:ignore S1002 I prefer to write it this way - if h.implicit == false { - buf.WriteString(strings.Repeat(" ", int(h.leadingSpace))) - buf.WriteString("Host") - if h.hasEquals { - buf.WriteString(" = ") - } else { - buf.WriteString(" ") - } - for i, pat := range h.Patterns { - buf.WriteString(pat.String()) - if i < len(h.Patterns)-1 { - buf.WriteString(" ") - } - } - if h.EOLComment != "" { - buf.WriteString(" #") - buf.WriteString(h.EOLComment) - } - buf.WriteByte('\n') - } - for i := range h.Nodes { - buf.WriteString(h.Nodes[i].String()) - buf.WriteByte('\n') - } - return buf.String() -} - -// Node represents a line in a Config. -type Node interface { - Pos() Position - String() string -} - -// KV is a line in the config file that contains a key, a value, and possibly -// a comment. -type KV struct { - Key string - Value string - Comment string - hasEquals bool - leadingSpace int // Space before the key. TODO handle spaces vs tabs. - position Position -} - -// Pos returns k's Position. -func (k *KV) Pos() Position { - return k.position -} - -// String prints k as it was parsed in the config file. There may be slight -// changes to the whitespace between values. -func (k *KV) String() string { - if k == nil { - return "" - } - equals := " " - if k.hasEquals { - equals = " = " - } - line := fmt.Sprintf("%s%s%s%s", strings.Repeat(" ", int(k.leadingSpace)), k.Key, equals, k.Value) - if k.Comment != "" { - line += " #" + k.Comment - } - return line -} - -// Empty is a line in the config file that contains only whitespace or comments. -type Empty struct { - Comment string - leadingSpace int // TODO handle spaces vs tabs. - position Position -} - -// Pos returns e's Position. -func (e *Empty) Pos() Position { - return e.position -} - -// String prints e as it was parsed in the config file. -func (e *Empty) String() string { - if e == nil { - return "" - } - if e.Comment == "" { - return "" - } - return fmt.Sprintf("%s#%s", strings.Repeat(" ", int(e.leadingSpace)), e.Comment) -} - -// Include holds the result of an Include directive, including the config files -// that have been parsed as part of that directive. At most 5 levels of Include -// statements will be parsed. -type Include struct { - // Comment is the contents of any comment at the end of the Include - // statement. - Comment string - // an include directive can include several different files, and wildcards - directives []string - - mu sync.Mutex - // 1:1 mapping between matches and keys in files array; matches preserves - // ordering - matches []string - // actual filenames are listed here - files map[string]*Config - leadingSpace int - position Position - depth uint8 - hasEquals bool -} - -const maxRecurseDepth = 5 - -// ErrDepthExceeded is returned if too many Include directives are parsed. -// Usually this indicates a recursive loop (an Include directive pointing to the -// file it contains). -var ErrDepthExceeded = errors.New("ssh_config: max recurse depth exceeded") - -func removeDups(arr []string) []string { - // Use map to record duplicates as we find them. - encountered := make(map[string]bool, len(arr)) - result := make([]string, 0) - - for v := range arr { - //lint:ignore S1002 I prefer it this way - if encountered[arr[v]] == false { - encountered[arr[v]] = true - result = append(result, arr[v]) - } - } - return result -} - -// NewInclude creates a new Include with a list of file globs to include. -// Configuration files are parsed greedily (e.g. as soon as this function runs). -// Any error encountered while parsing nested configuration files will be -// returned. -func NewInclude(directives []string, hasEquals bool, pos Position, comment string, system bool, depth uint8) (*Include, error) { - if depth > maxRecurseDepth { - return nil, ErrDepthExceeded - } - inc := &Include{ - Comment: comment, - directives: directives, - files: make(map[string]*Config), - position: pos, - leadingSpace: pos.Col - 1, - depth: depth, - hasEquals: hasEquals, - } - // no need for inc.mu.Lock() since nothing else can access this inc - matches := make([]string, 0) - for i := range directives { - var path string - if filepath.IsAbs(directives[i]) { - path = directives[i] - } else if system { - path = filepath.Join("/etc/ssh", directives[i]) - } else { - path = filepath.Join(homedir(), ".ssh", directives[i]) - } - theseMatches, err := filepath.Glob(path) - if err != nil { - return nil, err - } - matches = append(matches, theseMatches...) - } - matches = removeDups(matches) - inc.matches = matches - for i := range matches { - config, err := parseWithDepth(matches[i], depth) - if err != nil { - return nil, err - } - inc.files[matches[i]] = config - } - return inc, nil -} - -// Pos returns the position of the Include directive in the larger file. -func (i *Include) Pos() Position { - return i.position -} - -// Get finds the first value in the Include statement matching the alias and the -// given key. -func (inc *Include) Get(alias, key string) string { - inc.mu.Lock() - defer inc.mu.Unlock() - // TODO: we search files in any order which is not correct - for i := range inc.matches { - cfg := inc.files[inc.matches[i]] - if cfg == nil { - panic("nil cfg") - } - val, err := cfg.Get(alias, key) - if err == nil && val != "" { - return val - } - } - return "" -} - -// String prints out a string representation of this Include directive. Note -// included Config files are not printed as part of this representation. -func (inc *Include) String() string { - equals := " " - if inc.hasEquals { - equals = " = " - } - line := fmt.Sprintf("%sInclude%s%s", strings.Repeat(" ", int(inc.leadingSpace)), equals, strings.Join(inc.directives, " ")) - if inc.Comment != "" { - line += " #" + inc.Comment - } - return line -} - -var matchAll *Pattern - -func init() { - var err error - matchAll, err = NewPattern("*") - if err != nil { - panic(err) - } -} - -func newConfig() *Config { - return &Config{ - Hosts: []*Host{ - &Host{ - implicit: true, - Patterns: []*Pattern{matchAll}, - Nodes: make([]Node, 0), - }, - }, - depth: 0, - } -} diff --git a/vendor/github.com/kevinburke/ssh_config/lexer.go b/vendor/github.com/kevinburke/ssh_config/lexer.go deleted file mode 100644 index 11680b4..0000000 --- a/vendor/github.com/kevinburke/ssh_config/lexer.go +++ /dev/null @@ -1,240 +0,0 @@ -package ssh_config - -import ( - "bytes" -) - -// Define state functions -type sshLexStateFn func() sshLexStateFn - -type sshLexer struct { - inputIdx int - input []rune // Textual source - - buffer []rune // Runes composing the current token - tokens chan token - line int - col int - endbufferLine int - endbufferCol int -} - -func (s *sshLexer) lexComment(previousState sshLexStateFn) sshLexStateFn { - return func() sshLexStateFn { - growingString := "" - for next := s.peek(); next != '\n' && next != eof; next = s.peek() { - if next == '\r' && s.follow("\r\n") { - break - } - growingString += string(next) - s.next() - } - s.emitWithValue(tokenComment, growingString) - s.skip() - return previousState - } -} - -// lex the space after an equals sign in a function -func (s *sshLexer) lexRspace() sshLexStateFn { - for { - next := s.peek() - if !isSpace(next) { - break - } - s.skip() - } - return s.lexRvalue -} - -func (s *sshLexer) lexEquals() sshLexStateFn { - for { - next := s.peek() - if next == '=' { - s.emit(tokenEquals) - s.skip() - return s.lexRspace - } - // TODO error handling here; newline eof etc. - if !isSpace(next) { - break - } - s.skip() - } - return s.lexRvalue -} - -func (s *sshLexer) lexKey() sshLexStateFn { - growingString := "" - - for r := s.peek(); isKeyChar(r); r = s.peek() { - // simplified a lot here - if isSpace(r) || r == '=' { - s.emitWithValue(tokenKey, growingString) - s.skip() - return s.lexEquals - } - growingString += string(r) - s.next() - } - s.emitWithValue(tokenKey, growingString) - return s.lexEquals -} - -func (s *sshLexer) lexRvalue() sshLexStateFn { - growingString := "" - for { - next := s.peek() - switch next { - case '\r': - if s.follow("\r\n") { - s.emitWithValue(tokenString, growingString) - s.skip() - return s.lexVoid - } - case '\n': - s.emitWithValue(tokenString, growingString) - s.skip() - return s.lexVoid - case '#': - s.emitWithValue(tokenString, growingString) - s.skip() - return s.lexComment(s.lexVoid) - case eof: - s.next() - } - if next == eof { - break - } - growingString += string(next) - s.next() - } - s.emit(tokenEOF) - return nil -} - -func (s *sshLexer) read() rune { - r := s.peek() - if r == '\n' { - s.endbufferLine++ - s.endbufferCol = 1 - } else { - s.endbufferCol++ - } - s.inputIdx++ - return r -} - -func (s *sshLexer) next() rune { - r := s.read() - - if r != eof { - s.buffer = append(s.buffer, r) - } - return r -} - -func (s *sshLexer) lexVoid() sshLexStateFn { - for { - next := s.peek() - switch next { - case '#': - s.skip() - return s.lexComment(s.lexVoid) - case '\r': - fallthrough - case '\n': - s.emit(tokenEmptyLine) - s.skip() - continue - } - - if isSpace(next) { - s.skip() - } - - if isKeyStartChar(next) { - return s.lexKey - } - - // removed IsKeyStartChar and lexKey. probably will need to readd - - if next == eof { - s.next() - break - } - } - - s.emit(tokenEOF) - return nil -} - -func (s *sshLexer) ignore() { - s.buffer = make([]rune, 0) - s.line = s.endbufferLine - s.col = s.endbufferCol -} - -func (s *sshLexer) skip() { - s.next() - s.ignore() -} - -func (s *sshLexer) emit(t tokenType) { - s.emitWithValue(t, string(s.buffer)) -} - -func (s *sshLexer) emitWithValue(t tokenType, value string) { - tok := token{ - Position: Position{s.line, s.col}, - typ: t, - val: value, - } - s.tokens <- tok - s.ignore() -} - -func (s *sshLexer) peek() rune { - if s.inputIdx >= len(s.input) { - return eof - } - - r := s.input[s.inputIdx] - return r -} - -func (s *sshLexer) follow(next string) bool { - inputIdx := s.inputIdx - for _, expectedRune := range next { - if inputIdx >= len(s.input) { - return false - } - r := s.input[inputIdx] - inputIdx++ - if expectedRune != r { - return false - } - } - return true -} - -func (s *sshLexer) run() { - for state := s.lexVoid; state != nil; { - state = state() - } - close(s.tokens) -} - -func lexSSH(input []byte) chan token { - runes := bytes.Runes(input) - l := &sshLexer{ - input: runes, - tokens: make(chan token), - line: 1, - col: 1, - endbufferLine: 1, - endbufferCol: 1, - } - go l.run() - return l.tokens -} diff --git a/vendor/github.com/kevinburke/ssh_config/parser.go b/vendor/github.com/kevinburke/ssh_config/parser.go deleted file mode 100644 index 36c4205..0000000 --- a/vendor/github.com/kevinburke/ssh_config/parser.go +++ /dev/null @@ -1,191 +0,0 @@ -package ssh_config - -import ( - "fmt" - "strings" -) - -type sshParser struct { - flow chan token - config *Config - tokensBuffer []token - currentTable []string - seenTableKeys []string - // /etc/ssh parser or local parser - used to find the default for relative - // filepaths in the Include directive - system bool - depth uint8 -} - -type sshParserStateFn func() sshParserStateFn - -// Formats and panics an error message based on a token -func (p *sshParser) raiseErrorf(tok *token, msg string, args ...interface{}) { - // TODO this format is ugly - panic(tok.Position.String() + ": " + fmt.Sprintf(msg, args...)) -} - -func (p *sshParser) raiseError(tok *token, err error) { - if err == ErrDepthExceeded { - panic(err) - } - // TODO this format is ugly - panic(tok.Position.String() + ": " + err.Error()) -} - -func (p *sshParser) run() { - for state := p.parseStart; state != nil; { - state = state() - } -} - -func (p *sshParser) peek() *token { - if len(p.tokensBuffer) != 0 { - return &(p.tokensBuffer[0]) - } - - tok, ok := <-p.flow - if !ok { - return nil - } - p.tokensBuffer = append(p.tokensBuffer, tok) - return &tok -} - -func (p *sshParser) getToken() *token { - if len(p.tokensBuffer) != 0 { - tok := p.tokensBuffer[0] - p.tokensBuffer = p.tokensBuffer[1:] - return &tok - } - tok, ok := <-p.flow - if !ok { - return nil - } - return &tok -} - -func (p *sshParser) parseStart() sshParserStateFn { - tok := p.peek() - - // end of stream, parsing is finished - if tok == nil { - return nil - } - - switch tok.typ { - case tokenComment, tokenEmptyLine: - return p.parseComment - case tokenKey: - return p.parseKV - case tokenEOF: - return nil - default: - p.raiseErrorf(tok, fmt.Sprintf("unexpected token %q\n", tok)) - } - return nil -} - -func (p *sshParser) parseKV() sshParserStateFn { - key := p.getToken() - hasEquals := false - val := p.getToken() - if val.typ == tokenEquals { - hasEquals = true - val = p.getToken() - } - comment := "" - tok := p.peek() - if tok == nil { - tok = &token{typ: tokenEOF} - } - if tok.typ == tokenComment && tok.Position.Line == val.Position.Line { - tok = p.getToken() - comment = tok.val - } - if strings.ToLower(key.val) == "match" { - // https://github.com/kevinburke/ssh_config/issues/6 - p.raiseErrorf(val, "ssh_config: Match directive parsing is unsupported") - return nil - } - if strings.ToLower(key.val) == "host" { - strPatterns := strings.Split(val.val, " ") - patterns := make([]*Pattern, 0) - for i := range strPatterns { - if strPatterns[i] == "" { - continue - } - pat, err := NewPattern(strPatterns[i]) - if err != nil { - p.raiseErrorf(val, "Invalid host pattern: %v", err) - return nil - } - patterns = append(patterns, pat) - } - p.config.Hosts = append(p.config.Hosts, &Host{ - Patterns: patterns, - Nodes: make([]Node, 0), - EOLComment: comment, - hasEquals: hasEquals, - }) - return p.parseStart - } - lastHost := p.config.Hosts[len(p.config.Hosts)-1] - if strings.ToLower(key.val) == "include" { - inc, err := NewInclude(strings.Split(val.val, " "), hasEquals, key.Position, comment, p.system, p.depth+1) - if err == ErrDepthExceeded { - p.raiseError(val, err) - return nil - } - if err != nil { - p.raiseErrorf(val, "Error parsing Include directive: %v", err) - return nil - } - lastHost.Nodes = append(lastHost.Nodes, inc) - return p.parseStart - } - kv := &KV{ - Key: key.val, - Value: val.val, - Comment: comment, - hasEquals: hasEquals, - leadingSpace: key.Position.Col - 1, - position: key.Position, - } - lastHost.Nodes = append(lastHost.Nodes, kv) - return p.parseStart -} - -func (p *sshParser) parseComment() sshParserStateFn { - comment := p.getToken() - lastHost := p.config.Hosts[len(p.config.Hosts)-1] - lastHost.Nodes = append(lastHost.Nodes, &Empty{ - Comment: comment.val, - // account for the "#" as well - leadingSpace: comment.Position.Col - 2, - position: comment.Position, - }) - return p.parseStart -} - -func parseSSH(flow chan token, system bool, depth uint8) *Config { - // Ensure we consume tokens to completion even if parser exits early - defer func() { - for range flow { - } - }() - - result := newConfig() - result.position = Position{1, 1} - parser := &sshParser{ - flow: flow, - config: result, - tokensBuffer: make([]token, 0), - currentTable: make([]string, 0), - seenTableKeys: make([]string, 0), - system: system, - depth: depth, - } - parser.run() - return result -} diff --git a/vendor/github.com/kevinburke/ssh_config/position.go b/vendor/github.com/kevinburke/ssh_config/position.go deleted file mode 100644 index e0b5e3f..0000000 --- a/vendor/github.com/kevinburke/ssh_config/position.go +++ /dev/null @@ -1,25 +0,0 @@ -package ssh_config - -import "fmt" - -// Position of a document element within a SSH document. -// -// Line and Col are both 1-indexed positions for the element's line number and -// column number, respectively. Values of zero or less will cause Invalid(), -// to return true. -type Position struct { - Line int // line within the document - Col int // column within the line -} - -// String representation of the position. -// Displays 1-indexed line and column numbers. -func (p Position) String() string { - return fmt.Sprintf("(%d, %d)", p.Line, p.Col) -} - -// Invalid returns whether or not the position is valid (i.e. with negative or -// null values) -func (p Position) Invalid() bool { - return p.Line <= 0 || p.Col <= 0 -} diff --git a/vendor/github.com/kevinburke/ssh_config/token.go b/vendor/github.com/kevinburke/ssh_config/token.go deleted file mode 100644 index a0ecbb2..0000000 --- a/vendor/github.com/kevinburke/ssh_config/token.go +++ /dev/null @@ -1,49 +0,0 @@ -package ssh_config - -import "fmt" - -type token struct { - Position - typ tokenType - val string -} - -func (t token) String() string { - switch t.typ { - case tokenEOF: - return "EOF" - } - return fmt.Sprintf("%q", t.val) -} - -type tokenType int - -const ( - eof = -(iota + 1) -) - -const ( - tokenError tokenType = iota - tokenEOF - tokenEmptyLine - tokenComment - tokenKey - tokenEquals - tokenString -) - -func isSpace(r rune) bool { - return r == ' ' || r == '\t' -} - -func isKeyStartChar(r rune) bool { - return !(isSpace(r) || r == '\r' || r == '\n' || r == eof) -} - -// I'm not sure that this is correct -func isKeyChar(r rune) bool { - // Keys start with the first character that isn't whitespace or [ and end - // with the last non-whitespace character before the equals sign. Keys - // cannot contain a # character." - return !(r == '\r' || r == '\n' || r == eof || r == '=') -} diff --git a/vendor/github.com/kevinburke/ssh_config/validators.go b/vendor/github.com/kevinburke/ssh_config/validators.go deleted file mode 100644 index 29fab6a..0000000 --- a/vendor/github.com/kevinburke/ssh_config/validators.go +++ /dev/null @@ -1,162 +0,0 @@ -package ssh_config - -import ( - "fmt" - "strconv" - "strings" -) - -// Default returns the default value for the given keyword, for example "22" if -// the keyword is "Port". Default returns the empty string if the keyword has no -// default, or if the keyword is unknown. Keyword matching is case-insensitive. -// -// Default values are provided by OpenSSH_7.4p1 on a Mac. -func Default(keyword string) string { - return defaults[strings.ToLower(keyword)] -} - -// Arguments where the value must be "yes" or "no" and *only* yes or no. -var yesnos = map[string]bool{ - strings.ToLower("BatchMode"): true, - strings.ToLower("CanonicalizeFallbackLocal"): true, - strings.ToLower("ChallengeResponseAuthentication"): true, - strings.ToLower("CheckHostIP"): true, - strings.ToLower("ClearAllForwardings"): true, - strings.ToLower("Compression"): true, - strings.ToLower("EnableSSHKeysign"): true, - strings.ToLower("ExitOnForwardFailure"): true, - strings.ToLower("ForwardAgent"): true, - strings.ToLower("ForwardX11"): true, - strings.ToLower("ForwardX11Trusted"): true, - strings.ToLower("GatewayPorts"): true, - strings.ToLower("GSSAPIAuthentication"): true, - strings.ToLower("GSSAPIDelegateCredentials"): true, - strings.ToLower("HostbasedAuthentication"): true, - strings.ToLower("IdentitiesOnly"): true, - strings.ToLower("KbdInteractiveAuthentication"): true, - strings.ToLower("NoHostAuthenticationForLocalhost"): true, - strings.ToLower("PasswordAuthentication"): true, - strings.ToLower("PermitLocalCommand"): true, - strings.ToLower("PubkeyAuthentication"): true, - strings.ToLower("RhostsRSAAuthentication"): true, - strings.ToLower("RSAAuthentication"): true, - strings.ToLower("StreamLocalBindUnlink"): true, - strings.ToLower("TCPKeepAlive"): true, - strings.ToLower("UseKeychain"): true, - strings.ToLower("UsePrivilegedPort"): true, - strings.ToLower("VisualHostKey"): true, -} - -var uints = map[string]bool{ - strings.ToLower("CanonicalizeMaxDots"): true, - strings.ToLower("CompressionLevel"): true, // 1 to 9 - strings.ToLower("ConnectionAttempts"): true, - strings.ToLower("ConnectTimeout"): true, - strings.ToLower("NumberOfPasswordPrompts"): true, - strings.ToLower("Port"): true, - strings.ToLower("ServerAliveCountMax"): true, - strings.ToLower("ServerAliveInterval"): true, -} - -func mustBeYesOrNo(lkey string) bool { - return yesnos[lkey] -} - -func mustBeUint(lkey string) bool { - return uints[lkey] -} - -func validate(key, val string) error { - lkey := strings.ToLower(key) - if mustBeYesOrNo(lkey) && (val != "yes" && val != "no") { - return fmt.Errorf("ssh_config: value for key %q must be 'yes' or 'no', got %q", key, val) - } - if mustBeUint(lkey) { - _, err := strconv.ParseUint(val, 10, 64) - if err != nil { - return fmt.Errorf("ssh_config: %v", err) - } - } - return nil -} - -var defaults = map[string]string{ - strings.ToLower("AddKeysToAgent"): "no", - strings.ToLower("AddressFamily"): "any", - strings.ToLower("BatchMode"): "no", - strings.ToLower("CanonicalizeFallbackLocal"): "yes", - strings.ToLower("CanonicalizeHostname"): "no", - strings.ToLower("CanonicalizeMaxDots"): "1", - strings.ToLower("ChallengeResponseAuthentication"): "yes", - strings.ToLower("CheckHostIP"): "yes", - // TODO is this still the correct cipher - strings.ToLower("Cipher"): "3des", - strings.ToLower("Ciphers"): "chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,aes192-cbc,aes256-cbc", - strings.ToLower("ClearAllForwardings"): "no", - strings.ToLower("Compression"): "no", - strings.ToLower("CompressionLevel"): "6", - strings.ToLower("ConnectionAttempts"): "1", - strings.ToLower("ControlMaster"): "no", - strings.ToLower("EnableSSHKeysign"): "no", - strings.ToLower("EscapeChar"): "~", - strings.ToLower("ExitOnForwardFailure"): "no", - strings.ToLower("FingerprintHash"): "sha256", - strings.ToLower("ForwardAgent"): "no", - strings.ToLower("ForwardX11"): "no", - strings.ToLower("ForwardX11Timeout"): "20m", - strings.ToLower("ForwardX11Trusted"): "no", - strings.ToLower("GatewayPorts"): "no", - strings.ToLower("GlobalKnownHostsFile"): "/etc/ssh/ssh_known_hosts /etc/ssh/ssh_known_hosts2", - strings.ToLower("GSSAPIAuthentication"): "no", - strings.ToLower("GSSAPIDelegateCredentials"): "no", - strings.ToLower("HashKnownHosts"): "no", - strings.ToLower("HostbasedAuthentication"): "no", - - strings.ToLower("HostbasedKeyTypes"): "ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519,ssh-rsa", - strings.ToLower("HostKeyAlgorithms"): "ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519,ssh-rsa", - // HostName has a dynamic default (the value passed at the command line). - - strings.ToLower("IdentitiesOnly"): "no", - strings.ToLower("IdentityFile"): "~/.ssh/identity", - - // IPQoS has a dynamic default based on interactive or non-interactive - // sessions. - - strings.ToLower("KbdInteractiveAuthentication"): "yes", - - strings.ToLower("KexAlgorithms"): "curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1", - strings.ToLower("LogLevel"): "INFO", - strings.ToLower("MACs"): "umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1", - - strings.ToLower("NoHostAuthenticationForLocalhost"): "no", - strings.ToLower("NumberOfPasswordPrompts"): "3", - strings.ToLower("PasswordAuthentication"): "yes", - strings.ToLower("PermitLocalCommand"): "no", - strings.ToLower("Port"): "22", - - strings.ToLower("PreferredAuthentications"): "gssapi-with-mic,hostbased,publickey,keyboard-interactive,password", - strings.ToLower("Protocol"): "2", - strings.ToLower("ProxyUseFdpass"): "no", - strings.ToLower("PubkeyAcceptedKeyTypes"): "ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519,ssh-rsa", - strings.ToLower("PubkeyAuthentication"): "yes", - strings.ToLower("RekeyLimit"): "default none", - strings.ToLower("RhostsRSAAuthentication"): "no", - strings.ToLower("RSAAuthentication"): "yes", - - strings.ToLower("ServerAliveCountMax"): "3", - strings.ToLower("ServerAliveInterval"): "0", - strings.ToLower("StreamLocalBindMask"): "0177", - strings.ToLower("StreamLocalBindUnlink"): "no", - strings.ToLower("StrictHostKeyChecking"): "ask", - strings.ToLower("TCPKeepAlive"): "yes", - strings.ToLower("Tunnel"): "no", - strings.ToLower("TunnelDevice"): "any:any", - strings.ToLower("UpdateHostKeys"): "no", - strings.ToLower("UseKeychain"): "no", - strings.ToLower("UsePrivilegedPort"): "no", - - strings.ToLower("UserKnownHostsFile"): "~/.ssh/known_hosts ~/.ssh/known_hosts2", - strings.ToLower("VerifyHostKeyDNS"): "no", - strings.ToLower("VisualHostKey"): "no", - strings.ToLower("XAuthLocation"): "/usr/X11R6/bin/xauth", -} diff --git a/vendor/github.com/mitchellh/go-homedir/LICENSE b/vendor/github.com/mitchellh/go-homedir/LICENSE deleted file mode 100644 index f9c841a..0000000 --- a/vendor/github.com/mitchellh/go-homedir/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2013 Mitchell Hashimoto - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/vendor/github.com/mitchellh/go-homedir/README.md b/vendor/github.com/mitchellh/go-homedir/README.md deleted file mode 100644 index d70706d..0000000 --- a/vendor/github.com/mitchellh/go-homedir/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# go-homedir - -This is a Go library for detecting the user's home directory without -the use of cgo, so the library can be used in cross-compilation environments. - -Usage is incredibly simple, just call `homedir.Dir()` to get the home directory -for a user, and `homedir.Expand()` to expand the `~` in a path to the home -directory. - -**Why not just use `os/user`?** The built-in `os/user` package requires -cgo on Darwin systems. This means that any Go code that uses that package -cannot cross compile. But 99% of the time the use for `os/user` is just to -retrieve the home directory, which we can do for the current user without -cgo. This library does that, enabling cross-compilation. diff --git a/vendor/github.com/mitchellh/go-homedir/homedir.go b/vendor/github.com/mitchellh/go-homedir/homedir.go deleted file mode 100644 index 2537853..0000000 --- a/vendor/github.com/mitchellh/go-homedir/homedir.go +++ /dev/null @@ -1,167 +0,0 @@ -package homedir - -import ( - "bytes" - "errors" - "os" - "os/exec" - "path/filepath" - "runtime" - "strconv" - "strings" - "sync" -) - -// DisableCache will disable caching of the home directory. Caching is enabled -// by default. -var DisableCache bool - -var homedirCache string -var cacheLock sync.RWMutex - -// Dir returns the home directory for the executing user. -// -// This uses an OS-specific method for discovering the home directory. -// An error is returned if a home directory cannot be detected. -func Dir() (string, error) { - if !DisableCache { - cacheLock.RLock() - cached := homedirCache - cacheLock.RUnlock() - if cached != "" { - return cached, nil - } - } - - cacheLock.Lock() - defer cacheLock.Unlock() - - var result string - var err error - if runtime.GOOS == "windows" { - result, err = dirWindows() - } else { - // Unix-like system, so just assume Unix - result, err = dirUnix() - } - - if err != nil { - return "", err - } - homedirCache = result - return result, nil -} - -// Expand expands the path to include the home directory if the path -// is prefixed with `~`. If it isn't prefixed with `~`, the path is -// returned as-is. -func Expand(path string) (string, error) { - if len(path) == 0 { - return path, nil - } - - if path[0] != '~' { - return path, nil - } - - if len(path) > 1 && path[1] != '/' && path[1] != '\\' { - return "", errors.New("cannot expand user-specific home dir") - } - - dir, err := Dir() - if err != nil { - return "", err - } - - return filepath.Join(dir, path[1:]), nil -} - -// Reset clears the cache, forcing the next call to Dir to re-detect -// the home directory. This generally never has to be called, but can be -// useful in tests if you're modifying the home directory via the HOME -// env var or something. -func Reset() { - cacheLock.Lock() - defer cacheLock.Unlock() - homedirCache = "" -} - -func dirUnix() (string, error) { - homeEnv := "HOME" - if runtime.GOOS == "plan9" { - // On plan9, env vars are lowercase. - homeEnv = "home" - } - - // First prefer the HOME environmental variable - if home := os.Getenv(homeEnv); home != "" { - return home, nil - } - - var stdout bytes.Buffer - - // If that fails, try OS specific commands - if runtime.GOOS == "darwin" { - cmd := exec.Command("sh", "-c", `dscl -q . -read /Users/"$(whoami)" NFSHomeDirectory | sed 's/^[^ ]*: //'`) - cmd.Stdout = &stdout - if err := cmd.Run(); err == nil { - result := strings.TrimSpace(stdout.String()) - if result != "" { - return result, nil - } - } - } else { - cmd := exec.Command("getent", "passwd", strconv.Itoa(os.Getuid())) - cmd.Stdout = &stdout - if err := cmd.Run(); err != nil { - // If the error is ErrNotFound, we ignore it. Otherwise, return it. - if err != exec.ErrNotFound { - return "", err - } - } else { - if passwd := strings.TrimSpace(stdout.String()); passwd != "" { - // username:password:uid:gid:gecos:home:shell - passwdParts := strings.SplitN(passwd, ":", 7) - if len(passwdParts) > 5 { - return passwdParts[5], nil - } - } - } - } - - // If all else fails, try the shell - stdout.Reset() - cmd := exec.Command("sh", "-c", "cd && pwd") - cmd.Stdout = &stdout - if err := cmd.Run(); err != nil { - return "", err - } - - result := strings.TrimSpace(stdout.String()) - if result == "" { - return "", errors.New("blank output when reading home directory") - } - - return result, nil -} - -func dirWindows() (string, error) { - // First prefer the HOME environmental variable - if home := os.Getenv("HOME"); home != "" { - return home, nil - } - - // Prefer standard environment variable USERPROFILE - if home := os.Getenv("USERPROFILE"); home != "" { - return home, nil - } - - drive := os.Getenv("HOMEDRIVE") - path := os.Getenv("HOMEPATH") - home := drive + path - if drive == "" || path == "" { - return "", errors.New("HOMEDRIVE, HOMEPATH, or USERPROFILE are blank") - } - - return home, nil -} diff --git a/vendor/github.com/otiai10/copy/.gitignore b/vendor/github.com/otiai10/copy/.gitignore deleted file mode 100644 index d65ce17..0000000 --- a/vendor/github.com/otiai10/copy/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -test/data.copy -coverage.txt -vendor -.vagrant -.idea/ diff --git a/vendor/github.com/otiai10/copy/LICENSE b/vendor/github.com/otiai10/copy/LICENSE deleted file mode 100644 index 1f0cc5d..0000000 --- a/vendor/github.com/otiai10/copy/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2018 otiai10 - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/vendor/github.com/otiai10/copy/README.md b/vendor/github.com/otiai10/copy/README.md deleted file mode 100644 index 78ad991..0000000 --- a/vendor/github.com/otiai10/copy/README.md +++ /dev/null @@ -1,62 +0,0 @@ -# copy - -[![Go Reference](https://pkg.go.dev/badge/github.com/otiai10/copy.svg)](https://pkg.go.dev/github.com/otiai10/copy) -[![Actions Status](https://github.com/otiai10/copy/workflows/Go/badge.svg)](https://github.com/otiai10/copy/actions) -[![codecov](https://codecov.io/gh/otiai10/copy/branch/main/graph/badge.svg)](https://codecov.io/gh/otiai10/copy) -[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://github.com/otiai10/copy/blob/main/LICENSE) -[![Go Report Card](https://goreportcard.com/badge/github.com/otiai10/copy)](https://goreportcard.com/report/github.com/otiai10/copy) -[![GitHub tag (latest SemVer)](https://img.shields.io/github/v/tag/otiai10/copy?sort=semver)](https://pkg.go.dev/github.com/otiai10/copy) - -`copy` copies directories recursively. - -# Example Usage - -```go -err := Copy("your/directory", "your/directory.copy") -``` - -# Advanced Usage - -```go -// Options specifies optional actions on copying. -type Options struct { - - // OnSymlink can specify what to do on symlink - OnSymlink func(src string) SymlinkAction - - // OnDirExists can specify what to do when there is a directory already existing in destination. - OnDirExists func(src, dest string) DirExistsAction - - // Skip can specify which files should be skipped - Skip func(src string) (bool, error) - - // AddPermission to every entities, - // NO MORE THAN 0777 - AddPermission os.FileMode - - // Sync file after copy. - // Useful in case when file must be on the disk - // (in case crash happens, for example), - // at the expense of some performance penalty - Sync bool - - // Preserve the atime and the mtime of the entries - // On linux we can preserve only up to 1 millisecond accuracy - PreserveTimes bool - -} -``` - -```go -// For example... -opt := Options{ - Skip: func(src string) (bool, error) { - return strings.HasSuffix(src, ".git"), nil - }, -} -err := Copy("your/directory", "your/directory.copy", opt) -``` - -# Issues - -- https://github.com/otiai10/copy/issues diff --git a/vendor/github.com/otiai10/copy/copy.go b/vendor/github.com/otiai10/copy/copy.go deleted file mode 100644 index 77bf9f9..0000000 --- a/vendor/github.com/otiai10/copy/copy.go +++ /dev/null @@ -1,228 +0,0 @@ -package copy - -import ( - "io" - "io/ioutil" - "os" - "path/filepath" - "time" -) - -const ( - // tmpPermissionForDirectory makes the destination directory writable, - // so that stuff can be copied recursively even if any original directory is NOT writable. - // See https://github.com/otiai10/copy/pull/9 for more information. - tmpPermissionForDirectory = os.FileMode(0755) -) - -type timespec struct { - Mtime time.Time - Atime time.Time - Ctime time.Time -} - -// Copy copies src to dest, doesn't matter if src is a directory or a file. -func Copy(src, dest string, opt ...Options) error { - info, err := os.Lstat(src) - if err != nil { - return err - } - return switchboard(src, dest, info, assure(src, dest, opt...)) -} - -// switchboard switches proper copy functions regarding file type, etc... -// If there would be anything else here, add a case to this switchboard. -func switchboard(src, dest string, info os.FileInfo, opt Options) (err error) { - switch { - case info.Mode()&os.ModeSymlink != 0: - err = onsymlink(src, dest, info, opt) - case info.IsDir(): - err = dcopy(src, dest, info, opt) - case info.Mode()&os.ModeNamedPipe != 0: - err = pcopy(dest, info) - default: - err = fcopy(src, dest, info, opt) - } - - return err -} - -// copyNextOrSkip decide if this src should be copied or not. -// Because this "copy" could be called recursively, -// "info" MUST be given here, NOT nil. -func copyNextOrSkip(src, dest string, info os.FileInfo, opt Options) error { - skip, err := opt.Skip(src) - if err != nil { - return err - } - if skip { - return nil - } - return switchboard(src, dest, info, opt) -} - -// fcopy is for just a file, -// with considering existence of parent directory -// and file permission. -func fcopy(src, dest string, info os.FileInfo, opt Options) (err error) { - - if err = os.MkdirAll(filepath.Dir(dest), os.ModePerm); err != nil { - return - } - - f, err := os.Create(dest) - if err != nil { - return - } - defer fclose(f, &err) - - if err = os.Chmod(f.Name(), info.Mode()|opt.AddPermission); err != nil { - return - } - - s, err := os.Open(src) - if err != nil { - return - } - defer fclose(s, &err) - - var buf []byte = nil - var w io.Writer = f - // var r io.Reader = s - if opt.CopyBufferSize != 0 { - buf = make([]byte, opt.CopyBufferSize) - // Disable using `ReadFrom` by io.CopyBuffer. - // See https://github.com/otiai10/copy/pull/60#discussion_r627320811 for more details. - w = struct{ io.Writer }{f} - // r = struct{ io.Reader }{s} - } - if _, err = io.CopyBuffer(w, s, buf); err != nil { - return err - } - - if opt.Sync { - err = f.Sync() - } - - if opt.PreserveTimes { - return preserveTimes(info, dest) - } - - return -} - -// dcopy is for a directory, -// with scanning contents inside the directory -// and pass everything to "copy" recursively. -func dcopy(srcdir, destdir string, info os.FileInfo, opt Options) (err error) { - - _, err = os.Stat(destdir) - if err == nil && opt.OnDirExists != nil && destdir != opt.intent.dest { - switch opt.OnDirExists(srcdir, destdir) { - case Replace: - if err := os.RemoveAll(destdir); err != nil { - return err - } - case Untouchable: - return nil - } // case "Merge" is default behaviour. Go through. - } else if err != nil && !os.IsNotExist(err) { - return err // Unwelcome error type...! - } - - originalMode := info.Mode() - - // Make dest dir with 0755 so that everything writable. - if err = os.MkdirAll(destdir, tmpPermissionForDirectory); err != nil { - return - } - // Recover dir mode with original one. - defer chmod(destdir, originalMode|opt.AddPermission, &err) - - contents, err := ioutil.ReadDir(srcdir) - if err != nil { - return - } - - for _, content := range contents { - cs, cd := filepath.Join(srcdir, content.Name()), filepath.Join(destdir, content.Name()) - - if err = copyNextOrSkip(cs, cd, content, opt); err != nil { - // If any error, exit immediately - return - } - } - - if opt.PreserveTimes { - return preserveTimes(info, destdir) - } - - return -} - -func onsymlink(src, dest string, info os.FileInfo, opt Options) error { - switch opt.OnSymlink(src) { - case Shallow: - return lcopy(src, dest) - case Deep: - orig, err := os.Readlink(src) - if err != nil { - return err - } - info, err = os.Lstat(orig) - if err != nil { - return err - } - return copyNextOrSkip(orig, dest, info, opt) - case Skip: - fallthrough - default: - return nil // do nothing - } -} - -// lcopy is for a symlink, -// with just creating a new symlink by replicating src symlink. -func lcopy(src, dest string) error { - src, err := os.Readlink(src) - if err != nil { - return err - } - return os.Symlink(src, dest) -} - -// fclose ANYHOW closes file, -// with asiging error raised during Close, -// BUT respecting the error already reported. -func fclose(f *os.File, reported *error) { - if err := f.Close(); *reported == nil { - *reported = err - } -} - -// chmod ANYHOW changes file mode, -// with asiging error raised during Chmod, -// BUT respecting the error already reported. -func chmod(dir string, mode os.FileMode, reported *error) { - if err := os.Chmod(dir, mode); *reported == nil { - *reported = err - } -} - -// assure Options struct, should be called only once. -// All optional values MUST NOT BE nil/zero after assured. -func assure(src, dest string, opts ...Options) Options { - defopt := getDefaultOptions(src, dest) - if len(opts) == 0 { - return defopt - } - if opts[0].OnSymlink == nil { - opts[0].OnSymlink = defopt.OnSymlink - } - if opts[0].Skip == nil { - opts[0].Skip = defopt.Skip - } - opts[0].intent.src = defopt.intent.src - opts[0].intent.dest = defopt.intent.dest - return opts[0] -} diff --git a/vendor/github.com/otiai10/copy/copy_namedpipes.go b/vendor/github.com/otiai10/copy/copy_namedpipes.go deleted file mode 100644 index dff1731..0000000 --- a/vendor/github.com/otiai10/copy/copy_namedpipes.go +++ /dev/null @@ -1,17 +0,0 @@ -// +build !windows - -package copy - -import ( - "os" - "path/filepath" - "syscall" -) - -// pcopy is for just named pipes -func pcopy(dest string, info os.FileInfo) error { - if err := os.MkdirAll(filepath.Dir(dest), os.ModePerm); err != nil { - return err - } - return syscall.Mkfifo(dest, uint32(info.Mode())) -} diff --git a/vendor/github.com/otiai10/copy/copy_namedpipes_windows.go b/vendor/github.com/otiai10/copy/copy_namedpipes_windows.go deleted file mode 100644 index db30b78..0000000 --- a/vendor/github.com/otiai10/copy/copy_namedpipes_windows.go +++ /dev/null @@ -1,12 +0,0 @@ -// +build windows - -package copy - -import ( - "os" -) - -// pcopy is for just named pipes. Windows doesn't support them -func pcopy(dest string, info os.FileInfo) error { - return nil -} diff --git a/vendor/github.com/otiai10/copy/options.go b/vendor/github.com/otiai10/copy/options.go deleted file mode 100644 index 18e87ac..0000000 --- a/vendor/github.com/otiai10/copy/options.go +++ /dev/null @@ -1,86 +0,0 @@ -package copy - -import "os" - -// Options specifies optional actions on copying. -type Options struct { - - // OnSymlink can specify what to do on symlink - OnSymlink func(src string) SymlinkAction - - // OnDirExists can specify what to do when there is a directory already existing in destination. - OnDirExists func(src, dest string) DirExistsAction - - // Skip can specify which files should be skipped - Skip func(src string) (bool, error) - - // AddPermission to every entities, - // NO MORE THAN 0777 - AddPermission os.FileMode - - // Sync file after copy. - // Useful in case when file must be on the disk - // (in case crash happens, for example), - // at the expense of some performance penalty - Sync bool - - // Preserve the atime and the mtime of the entries. - // On linux we can preserve only up to 1 millisecond accuracy. - PreserveTimes bool - - // The byte size of the buffer to use for copying files. - // If zero, the internal default buffer of 32KB is used. - // See https://golang.org/pkg/io/#CopyBuffer for more information. - CopyBufferSize uint - - intent struct { - src string - dest string - } -} - -// SymlinkAction represents what to do on symlink. -type SymlinkAction int - -const ( - // Deep creates hard-copy of contents. - Deep SymlinkAction = iota - // Shallow creates new symlink to the dest of symlink. - Shallow - // Skip does nothing with symlink. - Skip -) - -// DirExistsAction represents what to do on dest dir. -type DirExistsAction int - -const ( - // Merge preserves or overwrites existing files under the dir (default behavior). - Merge DirExistsAction = iota - // Replace deletes all contents under the dir and copy src files. - Replace - // Untouchable does nothing for the dir, and leaves it as it is. - Untouchable -) - -// getDefaultOptions provides default options, -// which would be modified by usage-side. -func getDefaultOptions(src, dest string) Options { - return Options{ - OnSymlink: func(string) SymlinkAction { - return Shallow // Do shallow copy - }, - OnDirExists: nil, // Default behavior is "Merge". - Skip: func(string) (bool, error) { - return false, nil // Don't skip - }, - AddPermission: 0, // Add nothing - Sync: false, // Do not sync - PreserveTimes: false, // Do not preserve the modification time - CopyBufferSize: 0, // Do not specify, use default bufsize (32*1024) - intent: struct { - src string - dest string - }{src, dest}, - } -} diff --git a/vendor/github.com/otiai10/copy/preserve_times.go b/vendor/github.com/otiai10/copy/preserve_times.go deleted file mode 100644 index d89b128..0000000 --- a/vendor/github.com/otiai10/copy/preserve_times.go +++ /dev/null @@ -1,11 +0,0 @@ -package copy - -import "os" - -func preserveTimes(srcinfo os.FileInfo, dest string) error { - spec := getTimeSpec(srcinfo) - if err := os.Chtimes(dest, spec.Atime, spec.Mtime); err != nil { - return err - } - return nil -} diff --git a/vendor/github.com/otiai10/copy/stat_times.go b/vendor/github.com/otiai10/copy/stat_times.go deleted file mode 100644 index 7d8ac6b..0000000 --- a/vendor/github.com/otiai10/copy/stat_times.go +++ /dev/null @@ -1,21 +0,0 @@ -// +build !windows,!darwin,!freebsd - -// TODO: add more runtimes - -package copy - -import ( - "os" - "syscall" - "time" -) - -func getTimeSpec(info os.FileInfo) timespec { - stat := info.Sys().(*syscall.Stat_t) - times := timespec{ - Mtime: info.ModTime(), - Atime: time.Unix(int64(stat.Atim.Sec), int64(stat.Atim.Nsec)), - Ctime: time.Unix(int64(stat.Ctim.Sec), int64(stat.Ctim.Nsec)), - } - return times -} diff --git a/vendor/github.com/otiai10/copy/stat_times_darwin.go b/vendor/github.com/otiai10/copy/stat_times_darwin.go deleted file mode 100644 index ce7a7fb..0000000 --- a/vendor/github.com/otiai10/copy/stat_times_darwin.go +++ /dev/null @@ -1,19 +0,0 @@ -// +build darwin - -package copy - -import ( - "os" - "syscall" - "time" -) - -func getTimeSpec(info os.FileInfo) timespec { - stat := info.Sys().(*syscall.Stat_t) - times := timespec{ - Mtime: info.ModTime(), - Atime: time.Unix(stat.Atimespec.Sec, stat.Atimespec.Nsec), - Ctime: time.Unix(stat.Ctimespec.Sec, stat.Ctimespec.Nsec), - } - return times -} diff --git a/vendor/github.com/otiai10/copy/stat_times_freebsd.go b/vendor/github.com/otiai10/copy/stat_times_freebsd.go deleted file mode 100644 index 115f138..0000000 --- a/vendor/github.com/otiai10/copy/stat_times_freebsd.go +++ /dev/null @@ -1,19 +0,0 @@ -// +build freebsd - -package copy - -import ( - "os" - "syscall" - "time" -) - -func getTimeSpec(info os.FileInfo) timespec { - stat := info.Sys().(*syscall.Stat_t) - times := timespec{ - Mtime: info.ModTime(), - Atime: time.Unix(int64(stat.Atimespec.Sec), int64(stat.Atimespec.Nsec)), - Ctime: time.Unix(int64(stat.Ctimespec.Sec), int64(stat.Ctimespec.Nsec)), - } - return times -} diff --git a/vendor/github.com/otiai10/copy/stat_times_windows.go b/vendor/github.com/otiai10/copy/stat_times_windows.go deleted file mode 100644 index 113a2ec..0000000 --- a/vendor/github.com/otiai10/copy/stat_times_windows.go +++ /dev/null @@ -1,18 +0,0 @@ -// +build windows - -package copy - -import ( - "os" - "syscall" - "time" -) - -func getTimeSpec(info os.FileInfo) timespec { - stat := info.Sys().(*syscall.Win32FileAttributeData) - return timespec{ - Mtime: time.Unix(0, stat.LastWriteTime.Nanoseconds()), - Atime: time.Unix(0, stat.LastAccessTime.Nanoseconds()), - Ctime: time.Unix(0, stat.CreationTime.Nanoseconds()), - } -} diff --git a/vendor/github.com/otiai10/copy/test_setup.go b/vendor/github.com/otiai10/copy/test_setup.go deleted file mode 100644 index 9eb5b2c..0000000 --- a/vendor/github.com/otiai10/copy/test_setup.go +++ /dev/null @@ -1,17 +0,0 @@ -// +build !windows - -package copy - -import ( - "os" - "syscall" - "testing" -) - -func setup(m *testing.M) { - os.MkdirAll("test/data.copy", os.ModePerm) - os.Symlink("test/data/case01", "test/data/case03/case01") - os.Chmod("test/data/case07/dir_0555", 0555) - os.Chmod("test/data/case07/file_0444", 0444) - syscall.Mkfifo("test/data/case11/foo/bar", 0555) -} diff --git a/vendor/github.com/otiai10/copy/test_setup_windows.go b/vendor/github.com/otiai10/copy/test_setup_windows.go deleted file mode 100644 index 55099fa..0000000 --- a/vendor/github.com/otiai10/copy/test_setup_windows.go +++ /dev/null @@ -1,15 +0,0 @@ -// +build windows - -package copy - -import ( - "os" - "testing" -) - -func setup(m *testing.M) { - os.MkdirAll("test/data.copy", os.ModePerm) - os.Symlink("test/data/case01", "test/data/case03/case01") - os.Chmod("test/data/case07/dir_0555", 0555) - os.Chmod("test/data/case07/file_0444", 0444) -} diff --git a/vendor/github.com/sergi/go-diff/AUTHORS b/vendor/github.com/sergi/go-diff/AUTHORS deleted file mode 100644 index 2d7bb2b..0000000 --- a/vendor/github.com/sergi/go-diff/AUTHORS +++ /dev/null @@ -1,25 +0,0 @@ -# This is the official list of go-diff authors for copyright purposes. -# This file is distinct from the CONTRIBUTORS files. -# See the latter for an explanation. - -# Names should be added to this file as -# Name or Organization -# The email address is not required for organizations. - -# Please keep the list sorted. - -Danny Yoo -James Kolb -Jonathan Amsterdam -Markus Zimmermann -Matt Kovars -Örjan Persson -Osman Masood -Robert Carlsen -Rory Flynn -Sergi Mansilla -Shatrugna Sadhu -Shawn Smith -Stas Maksimov -Tor Arvid Lund -Zac Bergquist diff --git a/vendor/github.com/sergi/go-diff/CONTRIBUTORS b/vendor/github.com/sergi/go-diff/CONTRIBUTORS deleted file mode 100644 index 369e3d5..0000000 --- a/vendor/github.com/sergi/go-diff/CONTRIBUTORS +++ /dev/null @@ -1,32 +0,0 @@ -# This is the official list of people who can contribute -# (and typically have contributed) code to the go-diff -# repository. -# -# The AUTHORS file lists the copyright holders; this file -# lists people. For example, ACME Inc. employees would be listed here -# but not in AUTHORS, because ACME Inc. would hold the copyright. -# -# When adding J Random Contributor's name to this file, -# either J's name or J's organization's name should be -# added to the AUTHORS file. -# -# Names should be added to this file like so: -# Name -# -# Please keep the list sorted. - -Danny Yoo -James Kolb -Jonathan Amsterdam -Markus Zimmermann -Matt Kovars -Örjan Persson -Osman Masood -Robert Carlsen -Rory Flynn -Sergi Mansilla -Shatrugna Sadhu -Shawn Smith -Stas Maksimov -Tor Arvid Lund -Zac Bergquist diff --git a/vendor/github.com/sergi/go-diff/LICENSE b/vendor/github.com/sergi/go-diff/LICENSE deleted file mode 100644 index 937942c..0000000 --- a/vendor/github.com/sergi/go-diff/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (c) 2012-2016 The go-diff Authors. All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the "Software"), -to deal in the Software without restriction, including without limitation -the rights to use, copy, modify, merge, publish, distribute, sublicense, -and/or sell copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. - diff --git a/vendor/github.com/sergi/go-diff/diffmatchpatch/diff.go b/vendor/github.com/sergi/go-diff/diffmatchpatch/diff.go deleted file mode 100644 index 2a9f2dc..0000000 --- a/vendor/github.com/sergi/go-diff/diffmatchpatch/diff.go +++ /dev/null @@ -1,1352 +0,0 @@ -// Copyright (c) 2012-2016 The go-diff authors. All rights reserved. -// https://github.com/sergi/go-diff -// See the included LICENSE file for license details. -// -// go-diff is a Go implementation of Google's Diff, Match, and Patch library -// Original library is Copyright (c) 2006 Google Inc. -// http://code.google.com/p/google-diff-match-patch/ - -package diffmatchpatch - -import ( - "bytes" - "errors" - "fmt" - "html" - "math" - "net/url" - "regexp" - "strconv" - "strings" - "time" - "unicode/utf8" -) - -// Operation defines the operation of a diff item. -type Operation int8 - -//go:generate stringer -type=Operation -trimprefix=Diff - -const ( - // DiffDelete item represents a delete diff. - DiffDelete Operation = -1 - // DiffInsert item represents an insert diff. - DiffInsert Operation = 1 - // DiffEqual item represents an equal diff. - DiffEqual Operation = 0 - //IndexSeparator is used to seperate the array indexes in an index string - IndexSeparator = "," -) - -// Diff represents one diff operation -type Diff struct { - Type Operation - Text string -} - -// splice removes amount elements from slice at index index, replacing them with elements. -func splice(slice []Diff, index int, amount int, elements ...Diff) []Diff { - if len(elements) == amount { - // Easy case: overwrite the relevant items. - copy(slice[index:], elements) - return slice - } - if len(elements) < amount { - // Fewer new items than old. - // Copy in the new items. - copy(slice[index:], elements) - // Shift the remaining items left. - copy(slice[index+len(elements):], slice[index+amount:]) - // Calculate the new end of the slice. - end := len(slice) - amount + len(elements) - // Zero stranded elements at end so that they can be garbage collected. - tail := slice[end:] - for i := range tail { - tail[i] = Diff{} - } - return slice[:end] - } - // More new items than old. - // Make room in slice for new elements. - // There's probably an even more efficient way to do this, - // but this is simple and clear. - need := len(slice) - amount + len(elements) - for len(slice) < need { - slice = append(slice, Diff{}) - } - // Shift slice elements right to make room for new elements. - copy(slice[index+len(elements):], slice[index+amount:]) - // Copy in new elements. - copy(slice[index:], elements) - return slice -} - -// DiffMain finds the differences between two texts. -// If an invalid UTF-8 sequence is encountered, it will be replaced by the Unicode replacement character. -func (dmp *DiffMatchPatch) DiffMain(text1, text2 string, checklines bool) []Diff { - return dmp.DiffMainRunes([]rune(text1), []rune(text2), checklines) -} - -// DiffMainRunes finds the differences between two rune sequences. -// If an invalid UTF-8 sequence is encountered, it will be replaced by the Unicode replacement character. -func (dmp *DiffMatchPatch) DiffMainRunes(text1, text2 []rune, checklines bool) []Diff { - var deadline time.Time - if dmp.DiffTimeout > 0 { - deadline = time.Now().Add(dmp.DiffTimeout) - } - return dmp.diffMainRunes(text1, text2, checklines, deadline) -} - -func (dmp *DiffMatchPatch) diffMainRunes(text1, text2 []rune, checklines bool, deadline time.Time) []Diff { - if runesEqual(text1, text2) { - var diffs []Diff - if len(text1) > 0 { - diffs = append(diffs, Diff{DiffEqual, string(text1)}) - } - return diffs - } - // Trim off common prefix (speedup). - commonlength := commonPrefixLength(text1, text2) - commonprefix := text1[:commonlength] - text1 = text1[commonlength:] - text2 = text2[commonlength:] - - // Trim off common suffix (speedup). - commonlength = commonSuffixLength(text1, text2) - commonsuffix := text1[len(text1)-commonlength:] - text1 = text1[:len(text1)-commonlength] - text2 = text2[:len(text2)-commonlength] - - // Compute the diff on the middle block. - diffs := dmp.diffCompute(text1, text2, checklines, deadline) - - // Restore the prefix and suffix. - if len(commonprefix) != 0 { - diffs = append([]Diff{{DiffEqual, string(commonprefix)}}, diffs...) - } - if len(commonsuffix) != 0 { - diffs = append(diffs, Diff{DiffEqual, string(commonsuffix)}) - } - - return dmp.DiffCleanupMerge(diffs) -} - -// diffCompute finds the differences between two rune slices. Assumes that the texts do not have any common prefix or suffix. -func (dmp *DiffMatchPatch) diffCompute(text1, text2 []rune, checklines bool, deadline time.Time) []Diff { - diffs := []Diff{} - if len(text1) == 0 { - // Just add some text (speedup). - return append(diffs, Diff{DiffInsert, string(text2)}) - } else if len(text2) == 0 { - // Just delete some text (speedup). - return append(diffs, Diff{DiffDelete, string(text1)}) - } - - var longtext, shorttext []rune - if len(text1) > len(text2) { - longtext = text1 - shorttext = text2 - } else { - longtext = text2 - shorttext = text1 - } - - if i := runesIndex(longtext, shorttext); i != -1 { - op := DiffInsert - // Swap insertions for deletions if diff is reversed. - if len(text1) > len(text2) { - op = DiffDelete - } - // Shorter text is inside the longer text (speedup). - return []Diff{ - Diff{op, string(longtext[:i])}, - Diff{DiffEqual, string(shorttext)}, - Diff{op, string(longtext[i+len(shorttext):])}, - } - } else if len(shorttext) == 1 { - // Single character string. - // After the previous speedup, the character can't be an equality. - return []Diff{ - {DiffDelete, string(text1)}, - {DiffInsert, string(text2)}, - } - // Check to see if the problem can be split in two. - } else if hm := dmp.diffHalfMatch(text1, text2); hm != nil { - // A half-match was found, sort out the return data. - text1A := hm[0] - text1B := hm[1] - text2A := hm[2] - text2B := hm[3] - midCommon := hm[4] - // Send both pairs off for separate processing. - diffsA := dmp.diffMainRunes(text1A, text2A, checklines, deadline) - diffsB := dmp.diffMainRunes(text1B, text2B, checklines, deadline) - // Merge the results. - diffs := diffsA - diffs = append(diffs, Diff{DiffEqual, string(midCommon)}) - diffs = append(diffs, diffsB...) - return diffs - } else if checklines && len(text1) > 100 && len(text2) > 100 { - return dmp.diffLineMode(text1, text2, deadline) - } - return dmp.diffBisect(text1, text2, deadline) -} - -// diffLineMode does a quick line-level diff on both []runes, then rediff the parts for greater accuracy. This speedup can produce non-minimal diffs. -func (dmp *DiffMatchPatch) diffLineMode(text1, text2 []rune, deadline time.Time) []Diff { - // Scan the text on a line-by-line basis first. - text1, text2, linearray := dmp.DiffLinesToRunes(string(text1), string(text2)) - - diffs := dmp.diffMainRunes(text1, text2, false, deadline) - - // Convert the diff back to original text. - diffs = dmp.DiffCharsToLines(diffs, linearray) - // Eliminate freak matches (e.g. blank lines) - diffs = dmp.DiffCleanupSemantic(diffs) - - // Rediff any replacement blocks, this time character-by-character. - // Add a dummy entry at the end. - diffs = append(diffs, Diff{DiffEqual, ""}) - - pointer := 0 - countDelete := 0 - countInsert := 0 - - // NOTE: Rune slices are slower than using strings in this case. - textDelete := "" - textInsert := "" - - for pointer < len(diffs) { - switch diffs[pointer].Type { - case DiffInsert: - countInsert++ - textInsert += diffs[pointer].Text - case DiffDelete: - countDelete++ - textDelete += diffs[pointer].Text - case DiffEqual: - // Upon reaching an equality, check for prior redundancies. - if countDelete >= 1 && countInsert >= 1 { - // Delete the offending records and add the merged ones. - diffs = splice(diffs, pointer-countDelete-countInsert, - countDelete+countInsert) - - pointer = pointer - countDelete - countInsert - a := dmp.diffMainRunes([]rune(textDelete), []rune(textInsert), false, deadline) - for j := len(a) - 1; j >= 0; j-- { - diffs = splice(diffs, pointer, 0, a[j]) - } - pointer = pointer + len(a) - } - - countInsert = 0 - countDelete = 0 - textDelete = "" - textInsert = "" - } - pointer++ - } - - return diffs[:len(diffs)-1] // Remove the dummy entry at the end. -} - -// DiffBisect finds the 'middle snake' of a diff, split the problem in two and return the recursively constructed diff. -// If an invalid UTF-8 sequence is encountered, it will be replaced by the Unicode replacement character. -// See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations. -func (dmp *DiffMatchPatch) DiffBisect(text1, text2 string, deadline time.Time) []Diff { - // Unused in this code, but retained for interface compatibility. - return dmp.diffBisect([]rune(text1), []rune(text2), deadline) -} - -// diffBisect finds the 'middle snake' of a diff, splits the problem in two and returns the recursively constructed diff. -// See Myers's 1986 paper: An O(ND) Difference Algorithm and Its Variations. -func (dmp *DiffMatchPatch) diffBisect(runes1, runes2 []rune, deadline time.Time) []Diff { - // Cache the text lengths to prevent multiple calls. - runes1Len, runes2Len := len(runes1), len(runes2) - - maxD := (runes1Len + runes2Len + 1) / 2 - vOffset := maxD - vLength := 2 * maxD - - v1 := make([]int, vLength) - v2 := make([]int, vLength) - for i := range v1 { - v1[i] = -1 - v2[i] = -1 - } - v1[vOffset+1] = 0 - v2[vOffset+1] = 0 - - delta := runes1Len - runes2Len - // If the total number of characters is odd, then the front path will collide with the reverse path. - front := (delta%2 != 0) - // Offsets for start and end of k loop. Prevents mapping of space beyond the grid. - k1start := 0 - k1end := 0 - k2start := 0 - k2end := 0 - for d := 0; d < maxD; d++ { - // Bail out if deadline is reached. - if !deadline.IsZero() && d%16 == 0 && time.Now().After(deadline) { - break - } - - // Walk the front path one step. - for k1 := -d + k1start; k1 <= d-k1end; k1 += 2 { - k1Offset := vOffset + k1 - var x1 int - - if k1 == -d || (k1 != d && v1[k1Offset-1] < v1[k1Offset+1]) { - x1 = v1[k1Offset+1] - } else { - x1 = v1[k1Offset-1] + 1 - } - - y1 := x1 - k1 - for x1 < runes1Len && y1 < runes2Len { - if runes1[x1] != runes2[y1] { - break - } - x1++ - y1++ - } - v1[k1Offset] = x1 - if x1 > runes1Len { - // Ran off the right of the graph. - k1end += 2 - } else if y1 > runes2Len { - // Ran off the bottom of the graph. - k1start += 2 - } else if front { - k2Offset := vOffset + delta - k1 - if k2Offset >= 0 && k2Offset < vLength && v2[k2Offset] != -1 { - // Mirror x2 onto top-left coordinate system. - x2 := runes1Len - v2[k2Offset] - if x1 >= x2 { - // Overlap detected. - return dmp.diffBisectSplit(runes1, runes2, x1, y1, deadline) - } - } - } - } - // Walk the reverse path one step. - for k2 := -d + k2start; k2 <= d-k2end; k2 += 2 { - k2Offset := vOffset + k2 - var x2 int - if k2 == -d || (k2 != d && v2[k2Offset-1] < v2[k2Offset+1]) { - x2 = v2[k2Offset+1] - } else { - x2 = v2[k2Offset-1] + 1 - } - var y2 = x2 - k2 - for x2 < runes1Len && y2 < runes2Len { - if runes1[runes1Len-x2-1] != runes2[runes2Len-y2-1] { - break - } - x2++ - y2++ - } - v2[k2Offset] = x2 - if x2 > runes1Len { - // Ran off the left of the graph. - k2end += 2 - } else if y2 > runes2Len { - // Ran off the top of the graph. - k2start += 2 - } else if !front { - k1Offset := vOffset + delta - k2 - if k1Offset >= 0 && k1Offset < vLength && v1[k1Offset] != -1 { - x1 := v1[k1Offset] - y1 := vOffset + x1 - k1Offset - // Mirror x2 onto top-left coordinate system. - x2 = runes1Len - x2 - if x1 >= x2 { - // Overlap detected. - return dmp.diffBisectSplit(runes1, runes2, x1, y1, deadline) - } - } - } - } - } - // Diff took too long and hit the deadline or number of diffs equals number of characters, no commonality at all. - return []Diff{ - {DiffDelete, string(runes1)}, - {DiffInsert, string(runes2)}, - } -} - -func (dmp *DiffMatchPatch) diffBisectSplit(runes1, runes2 []rune, x, y int, - deadline time.Time) []Diff { - runes1a := runes1[:x] - runes2a := runes2[:y] - runes1b := runes1[x:] - runes2b := runes2[y:] - - // Compute both diffs serially. - diffs := dmp.diffMainRunes(runes1a, runes2a, false, deadline) - diffsb := dmp.diffMainRunes(runes1b, runes2b, false, deadline) - - return append(diffs, diffsb...) -} - -// DiffLinesToChars splits two texts into a list of strings, and educes the texts to a string of hashes where each Unicode character represents one line. -// It's slightly faster to call DiffLinesToRunes first, followed by DiffMainRunes. -func (dmp *DiffMatchPatch) DiffLinesToChars(text1, text2 string) (string, string, []string) { - chars1, chars2, lineArray := dmp.diffLinesToStrings(text1, text2) - return chars1, chars2, lineArray -} - -// DiffLinesToRunes splits two texts into a list of runes. -func (dmp *DiffMatchPatch) DiffLinesToRunes(text1, text2 string) ([]rune, []rune, []string) { - chars1, chars2, lineArray := dmp.diffLinesToStrings(text1, text2) - return []rune(chars1), []rune(chars2), lineArray -} - -// DiffCharsToLines rehydrates the text in a diff from a string of line hashes to real lines of text. -func (dmp *DiffMatchPatch) DiffCharsToLines(diffs []Diff, lineArray []string) []Diff { - hydrated := make([]Diff, 0, len(diffs)) - for _, aDiff := range diffs { - chars := strings.Split(aDiff.Text, IndexSeparator) - text := make([]string, len(chars)) - - for i, r := range chars { - i1, err := strconv.Atoi(r) - if err == nil { - text[i] = lineArray[i1] - } - } - - aDiff.Text = strings.Join(text, "") - hydrated = append(hydrated, aDiff) - } - return hydrated -} - -// DiffCommonPrefix determines the common prefix length of two strings. -func (dmp *DiffMatchPatch) DiffCommonPrefix(text1, text2 string) int { - // Unused in this code, but retained for interface compatibility. - return commonPrefixLength([]rune(text1), []rune(text2)) -} - -// DiffCommonSuffix determines the common suffix length of two strings. -func (dmp *DiffMatchPatch) DiffCommonSuffix(text1, text2 string) int { - // Unused in this code, but retained for interface compatibility. - return commonSuffixLength([]rune(text1), []rune(text2)) -} - -// commonPrefixLength returns the length of the common prefix of two rune slices. -func commonPrefixLength(text1, text2 []rune) int { - // Linear search. See comment in commonSuffixLength. - n := 0 - for ; n < len(text1) && n < len(text2); n++ { - if text1[n] != text2[n] { - return n - } - } - return n -} - -// commonSuffixLength returns the length of the common suffix of two rune slices. -func commonSuffixLength(text1, text2 []rune) int { - // Use linear search rather than the binary search discussed at https://neil.fraser.name/news/2007/10/09/. - // See discussion at https://github.com/sergi/go-diff/issues/54. - i1 := len(text1) - i2 := len(text2) - for n := 0; ; n++ { - i1-- - i2-- - if i1 < 0 || i2 < 0 || text1[i1] != text2[i2] { - return n - } - } -} - -// DiffCommonOverlap determines if the suffix of one string is the prefix of another. -func (dmp *DiffMatchPatch) DiffCommonOverlap(text1 string, text2 string) int { - // Cache the text lengths to prevent multiple calls. - text1Length := len(text1) - text2Length := len(text2) - // Eliminate the null case. - if text1Length == 0 || text2Length == 0 { - return 0 - } - // Truncate the longer string. - if text1Length > text2Length { - text1 = text1[text1Length-text2Length:] - } else if text1Length < text2Length { - text2 = text2[0:text1Length] - } - textLength := int(math.Min(float64(text1Length), float64(text2Length))) - // Quick check for the worst case. - if text1 == text2 { - return textLength - } - - // Start by looking for a single character match and increase length until no match is found. Performance analysis: http://neil.fraser.name/news/2010/11/04/ - best := 0 - length := 1 - for { - pattern := text1[textLength-length:] - found := strings.Index(text2, pattern) - if found == -1 { - break - } - length += found - if found == 0 || text1[textLength-length:] == text2[0:length] { - best = length - length++ - } - } - - return best -} - -// DiffHalfMatch checks whether the two texts share a substring which is at least half the length of the longer text. This speedup can produce non-minimal diffs. -func (dmp *DiffMatchPatch) DiffHalfMatch(text1, text2 string) []string { - // Unused in this code, but retained for interface compatibility. - runeSlices := dmp.diffHalfMatch([]rune(text1), []rune(text2)) - if runeSlices == nil { - return nil - } - - result := make([]string, len(runeSlices)) - for i, r := range runeSlices { - result[i] = string(r) - } - return result -} - -func (dmp *DiffMatchPatch) diffHalfMatch(text1, text2 []rune) [][]rune { - if dmp.DiffTimeout <= 0 { - // Don't risk returning a non-optimal diff if we have unlimited time. - return nil - } - - var longtext, shorttext []rune - if len(text1) > len(text2) { - longtext = text1 - shorttext = text2 - } else { - longtext = text2 - shorttext = text1 - } - - if len(longtext) < 4 || len(shorttext)*2 < len(longtext) { - return nil // Pointless. - } - - // First check if the second quarter is the seed for a half-match. - hm1 := dmp.diffHalfMatchI(longtext, shorttext, int(float64(len(longtext)+3)/4)) - - // Check again based on the third quarter. - hm2 := dmp.diffHalfMatchI(longtext, shorttext, int(float64(len(longtext)+1)/2)) - - hm := [][]rune{} - if hm1 == nil && hm2 == nil { - return nil - } else if hm2 == nil { - hm = hm1 - } else if hm1 == nil { - hm = hm2 - } else { - // Both matched. Select the longest. - if len(hm1[4]) > len(hm2[4]) { - hm = hm1 - } else { - hm = hm2 - } - } - - // A half-match was found, sort out the return data. - if len(text1) > len(text2) { - return hm - } - - return [][]rune{hm[2], hm[3], hm[0], hm[1], hm[4]} -} - -// diffHalfMatchI checks if a substring of shorttext exist within longtext such that the substring is at least half the length of longtext? -// Returns a slice containing the prefix of longtext, the suffix of longtext, the prefix of shorttext, the suffix of shorttext and the common middle, or null if there was no match. -func (dmp *DiffMatchPatch) diffHalfMatchI(l, s []rune, i int) [][]rune { - var bestCommonA []rune - var bestCommonB []rune - var bestCommonLen int - var bestLongtextA []rune - var bestLongtextB []rune - var bestShorttextA []rune - var bestShorttextB []rune - - // Start with a 1/4 length substring at position i as a seed. - seed := l[i : i+len(l)/4] - - for j := runesIndexOf(s, seed, 0); j != -1; j = runesIndexOf(s, seed, j+1) { - prefixLength := commonPrefixLength(l[i:], s[j:]) - suffixLength := commonSuffixLength(l[:i], s[:j]) - - if bestCommonLen < suffixLength+prefixLength { - bestCommonA = s[j-suffixLength : j] - bestCommonB = s[j : j+prefixLength] - bestCommonLen = len(bestCommonA) + len(bestCommonB) - bestLongtextA = l[:i-suffixLength] - bestLongtextB = l[i+prefixLength:] - bestShorttextA = s[:j-suffixLength] - bestShorttextB = s[j+prefixLength:] - } - } - - if bestCommonLen*2 < len(l) { - return nil - } - - return [][]rune{ - bestLongtextA, - bestLongtextB, - bestShorttextA, - bestShorttextB, - append(bestCommonA, bestCommonB...), - } -} - -// DiffCleanupSemantic reduces the number of edits by eliminating semantically trivial equalities. -func (dmp *DiffMatchPatch) DiffCleanupSemantic(diffs []Diff) []Diff { - changes := false - // Stack of indices where equalities are found. - equalities := make([]int, 0, len(diffs)) - - var lastequality string - // Always equal to diffs[equalities[equalitiesLength - 1]][1] - var pointer int // Index of current position. - // Number of characters that changed prior to the equality. - var lengthInsertions1, lengthDeletions1 int - // Number of characters that changed after the equality. - var lengthInsertions2, lengthDeletions2 int - - for pointer < len(diffs) { - if diffs[pointer].Type == DiffEqual { - // Equality found. - equalities = append(equalities, pointer) - lengthInsertions1 = lengthInsertions2 - lengthDeletions1 = lengthDeletions2 - lengthInsertions2 = 0 - lengthDeletions2 = 0 - lastequality = diffs[pointer].Text - } else { - // An insertion or deletion. - - if diffs[pointer].Type == DiffInsert { - lengthInsertions2 += utf8.RuneCountInString(diffs[pointer].Text) - } else { - lengthDeletions2 += utf8.RuneCountInString(diffs[pointer].Text) - } - // Eliminate an equality that is smaller or equal to the edits on both sides of it. - difference1 := int(math.Max(float64(lengthInsertions1), float64(lengthDeletions1))) - difference2 := int(math.Max(float64(lengthInsertions2), float64(lengthDeletions2))) - if utf8.RuneCountInString(lastequality) > 0 && - (utf8.RuneCountInString(lastequality) <= difference1) && - (utf8.RuneCountInString(lastequality) <= difference2) { - // Duplicate record. - insPoint := equalities[len(equalities)-1] - diffs = splice(diffs, insPoint, 0, Diff{DiffDelete, lastequality}) - - // Change second copy to insert. - diffs[insPoint+1].Type = DiffInsert - // Throw away the equality we just deleted. - equalities = equalities[:len(equalities)-1] - - if len(equalities) > 0 { - equalities = equalities[:len(equalities)-1] - } - pointer = -1 - if len(equalities) > 0 { - pointer = equalities[len(equalities)-1] - } - - lengthInsertions1 = 0 // Reset the counters. - lengthDeletions1 = 0 - lengthInsertions2 = 0 - lengthDeletions2 = 0 - lastequality = "" - changes = true - } - } - pointer++ - } - - // Normalize the diff. - if changes { - diffs = dmp.DiffCleanupMerge(diffs) - } - diffs = dmp.DiffCleanupSemanticLossless(diffs) - // Find any overlaps between deletions and insertions. - // e.g: abcxxxxxxdef - // -> abcxxxdef - // e.g: xxxabcdefxxx - // -> defxxxabc - // Only extract an overlap if it is as big as the edit ahead or behind it. - pointer = 1 - for pointer < len(diffs) { - if diffs[pointer-1].Type == DiffDelete && - diffs[pointer].Type == DiffInsert { - deletion := diffs[pointer-1].Text - insertion := diffs[pointer].Text - overlapLength1 := dmp.DiffCommonOverlap(deletion, insertion) - overlapLength2 := dmp.DiffCommonOverlap(insertion, deletion) - if overlapLength1 >= overlapLength2 { - if float64(overlapLength1) >= float64(utf8.RuneCountInString(deletion))/2 || - float64(overlapLength1) >= float64(utf8.RuneCountInString(insertion))/2 { - - // Overlap found. Insert an equality and trim the surrounding edits. - diffs = splice(diffs, pointer, 0, Diff{DiffEqual, insertion[:overlapLength1]}) - diffs[pointer-1].Text = - deletion[0 : len(deletion)-overlapLength1] - diffs[pointer+1].Text = insertion[overlapLength1:] - pointer++ - } - } else { - if float64(overlapLength2) >= float64(utf8.RuneCountInString(deletion))/2 || - float64(overlapLength2) >= float64(utf8.RuneCountInString(insertion))/2 { - // Reverse overlap found. Insert an equality and swap and trim the surrounding edits. - overlap := Diff{DiffEqual, deletion[:overlapLength2]} - diffs = splice(diffs, pointer, 0, overlap) - diffs[pointer-1].Type = DiffInsert - diffs[pointer-1].Text = insertion[0 : len(insertion)-overlapLength2] - diffs[pointer+1].Type = DiffDelete - diffs[pointer+1].Text = deletion[overlapLength2:] - pointer++ - } - } - pointer++ - } - pointer++ - } - - return diffs -} - -// Define some regex patterns for matching boundaries. -var ( - nonAlphaNumericRegex = regexp.MustCompile(`[^a-zA-Z0-9]`) - whitespaceRegex = regexp.MustCompile(`\s`) - linebreakRegex = regexp.MustCompile(`[\r\n]`) - blanklineEndRegex = regexp.MustCompile(`\n\r?\n$`) - blanklineStartRegex = regexp.MustCompile(`^\r?\n\r?\n`) -) - -// diffCleanupSemanticScore computes a score representing whether the internal boundary falls on logical boundaries. -// Scores range from 6 (best) to 0 (worst). Closure, but does not reference any external variables. -func diffCleanupSemanticScore(one, two string) int { - if len(one) == 0 || len(two) == 0 { - // Edges are the best. - return 6 - } - - // Each port of this function behaves slightly differently due to subtle differences in each language's definition of things like 'whitespace'. Since this function's purpose is largely cosmetic, the choice has been made to use each language's native features rather than force total conformity. - rune1, _ := utf8.DecodeLastRuneInString(one) - rune2, _ := utf8.DecodeRuneInString(two) - char1 := string(rune1) - char2 := string(rune2) - - nonAlphaNumeric1 := nonAlphaNumericRegex.MatchString(char1) - nonAlphaNumeric2 := nonAlphaNumericRegex.MatchString(char2) - whitespace1 := nonAlphaNumeric1 && whitespaceRegex.MatchString(char1) - whitespace2 := nonAlphaNumeric2 && whitespaceRegex.MatchString(char2) - lineBreak1 := whitespace1 && linebreakRegex.MatchString(char1) - lineBreak2 := whitespace2 && linebreakRegex.MatchString(char2) - blankLine1 := lineBreak1 && blanklineEndRegex.MatchString(one) - blankLine2 := lineBreak2 && blanklineEndRegex.MatchString(two) - - if blankLine1 || blankLine2 { - // Five points for blank lines. - return 5 - } else if lineBreak1 || lineBreak2 { - // Four points for line breaks. - return 4 - } else if nonAlphaNumeric1 && !whitespace1 && whitespace2 { - // Three points for end of sentences. - return 3 - } else if whitespace1 || whitespace2 { - // Two points for whitespace. - return 2 - } else if nonAlphaNumeric1 || nonAlphaNumeric2 { - // One point for non-alphanumeric. - return 1 - } - return 0 -} - -// DiffCleanupSemanticLossless looks for single edits surrounded on both sides by equalities which can be shifted sideways to align the edit to a word boundary. -// E.g: The cat came. -> The cat came. -func (dmp *DiffMatchPatch) DiffCleanupSemanticLossless(diffs []Diff) []Diff { - pointer := 1 - - // Intentionally ignore the first and last element (don't need checking). - for pointer < len(diffs)-1 { - if diffs[pointer-1].Type == DiffEqual && - diffs[pointer+1].Type == DiffEqual { - - // This is a single edit surrounded by equalities. - equality1 := diffs[pointer-1].Text - edit := diffs[pointer].Text - equality2 := diffs[pointer+1].Text - - // First, shift the edit as far left as possible. - commonOffset := dmp.DiffCommonSuffix(equality1, edit) - if commonOffset > 0 { - commonString := edit[len(edit)-commonOffset:] - equality1 = equality1[0 : len(equality1)-commonOffset] - edit = commonString + edit[:len(edit)-commonOffset] - equality2 = commonString + equality2 - } - - // Second, step character by character right, looking for the best fit. - bestEquality1 := equality1 - bestEdit := edit - bestEquality2 := equality2 - bestScore := diffCleanupSemanticScore(equality1, edit) + - diffCleanupSemanticScore(edit, equality2) - - for len(edit) != 0 && len(equality2) != 0 { - _, sz := utf8.DecodeRuneInString(edit) - if len(equality2) < sz || edit[:sz] != equality2[:sz] { - break - } - equality1 += edit[:sz] - edit = edit[sz:] + equality2[:sz] - equality2 = equality2[sz:] - score := diffCleanupSemanticScore(equality1, edit) + - diffCleanupSemanticScore(edit, equality2) - // The >= encourages trailing rather than leading whitespace on edits. - if score >= bestScore { - bestScore = score - bestEquality1 = equality1 - bestEdit = edit - bestEquality2 = equality2 - } - } - - if diffs[pointer-1].Text != bestEquality1 { - // We have an improvement, save it back to the diff. - if len(bestEquality1) != 0 { - diffs[pointer-1].Text = bestEquality1 - } else { - diffs = splice(diffs, pointer-1, 1) - pointer-- - } - - diffs[pointer].Text = bestEdit - if len(bestEquality2) != 0 { - diffs[pointer+1].Text = bestEquality2 - } else { - diffs = append(diffs[:pointer+1], diffs[pointer+2:]...) - pointer-- - } - } - } - pointer++ - } - - return diffs -} - -// DiffCleanupEfficiency reduces the number of edits by eliminating operationally trivial equalities. -func (dmp *DiffMatchPatch) DiffCleanupEfficiency(diffs []Diff) []Diff { - changes := false - // Stack of indices where equalities are found. - type equality struct { - data int - next *equality - } - var equalities *equality - // Always equal to equalities[equalitiesLength-1][1] - lastequality := "" - pointer := 0 // Index of current position. - // Is there an insertion operation before the last equality. - preIns := false - // Is there a deletion operation before the last equality. - preDel := false - // Is there an insertion operation after the last equality. - postIns := false - // Is there a deletion operation after the last equality. - postDel := false - for pointer < len(diffs) { - if diffs[pointer].Type == DiffEqual { // Equality found. - if len(diffs[pointer].Text) < dmp.DiffEditCost && - (postIns || postDel) { - // Candidate found. - equalities = &equality{ - data: pointer, - next: equalities, - } - preIns = postIns - preDel = postDel - lastequality = diffs[pointer].Text - } else { - // Not a candidate, and can never become one. - equalities = nil - lastequality = "" - } - postIns = false - postDel = false - } else { // An insertion or deletion. - if diffs[pointer].Type == DiffDelete { - postDel = true - } else { - postIns = true - } - - // Five types to be split: - // ABXYCD - // AXCD - // ABXC - // AXCD - // ABXC - var sumPres int - if preIns { - sumPres++ - } - if preDel { - sumPres++ - } - if postIns { - sumPres++ - } - if postDel { - sumPres++ - } - if len(lastequality) > 0 && - ((preIns && preDel && postIns && postDel) || - ((len(lastequality) < dmp.DiffEditCost/2) && sumPres == 3)) { - - insPoint := equalities.data - - // Duplicate record. - diffs = splice(diffs, insPoint, 0, Diff{DiffDelete, lastequality}) - - // Change second copy to insert. - diffs[insPoint+1].Type = DiffInsert - // Throw away the equality we just deleted. - equalities = equalities.next - lastequality = "" - - if preIns && preDel { - // No changes made which could affect previous entry, keep going. - postIns = true - postDel = true - equalities = nil - } else { - if equalities != nil { - equalities = equalities.next - } - if equalities != nil { - pointer = equalities.data - } else { - pointer = -1 - } - postIns = false - postDel = false - } - changes = true - } - } - pointer++ - } - - if changes { - diffs = dmp.DiffCleanupMerge(diffs) - } - - return diffs -} - -// DiffCleanupMerge reorders and merges like edit sections. Merge equalities. -// Any edit section can move as long as it doesn't cross an equality. -func (dmp *DiffMatchPatch) DiffCleanupMerge(diffs []Diff) []Diff { - // Add a dummy entry at the end. - diffs = append(diffs, Diff{DiffEqual, ""}) - pointer := 0 - countDelete := 0 - countInsert := 0 - commonlength := 0 - textDelete := []rune(nil) - textInsert := []rune(nil) - - for pointer < len(diffs) { - switch diffs[pointer].Type { - case DiffInsert: - countInsert++ - textInsert = append(textInsert, []rune(diffs[pointer].Text)...) - pointer++ - break - case DiffDelete: - countDelete++ - textDelete = append(textDelete, []rune(diffs[pointer].Text)...) - pointer++ - break - case DiffEqual: - // Upon reaching an equality, check for prior redundancies. - if countDelete+countInsert > 1 { - if countDelete != 0 && countInsert != 0 { - // Factor out any common prefixies. - commonlength = commonPrefixLength(textInsert, textDelete) - if commonlength != 0 { - x := pointer - countDelete - countInsert - if x > 0 && diffs[x-1].Type == DiffEqual { - diffs[x-1].Text += string(textInsert[:commonlength]) - } else { - diffs = append([]Diff{{DiffEqual, string(textInsert[:commonlength])}}, diffs...) - pointer++ - } - textInsert = textInsert[commonlength:] - textDelete = textDelete[commonlength:] - } - // Factor out any common suffixies. - commonlength = commonSuffixLength(textInsert, textDelete) - if commonlength != 0 { - insertIndex := len(textInsert) - commonlength - deleteIndex := len(textDelete) - commonlength - diffs[pointer].Text = string(textInsert[insertIndex:]) + diffs[pointer].Text - textInsert = textInsert[:insertIndex] - textDelete = textDelete[:deleteIndex] - } - } - // Delete the offending records and add the merged ones. - if countDelete == 0 { - diffs = splice(diffs, pointer-countInsert, - countDelete+countInsert, - Diff{DiffInsert, string(textInsert)}) - } else if countInsert == 0 { - diffs = splice(diffs, pointer-countDelete, - countDelete+countInsert, - Diff{DiffDelete, string(textDelete)}) - } else { - diffs = splice(diffs, pointer-countDelete-countInsert, - countDelete+countInsert, - Diff{DiffDelete, string(textDelete)}, - Diff{DiffInsert, string(textInsert)}) - } - - pointer = pointer - countDelete - countInsert + 1 - if countDelete != 0 { - pointer++ - } - if countInsert != 0 { - pointer++ - } - } else if pointer != 0 && diffs[pointer-1].Type == DiffEqual { - // Merge this equality with the previous one. - diffs[pointer-1].Text += diffs[pointer].Text - diffs = append(diffs[:pointer], diffs[pointer+1:]...) - } else { - pointer++ - } - countInsert = 0 - countDelete = 0 - textDelete = nil - textInsert = nil - break - } - } - - if len(diffs[len(diffs)-1].Text) == 0 { - diffs = diffs[0 : len(diffs)-1] // Remove the dummy entry at the end. - } - - // Second pass: look for single edits surrounded on both sides by equalities which can be shifted sideways to eliminate an equality. E.g: ABAC -> ABAC - changes := false - pointer = 1 - // Intentionally ignore the first and last element (don't need checking). - for pointer < (len(diffs) - 1) { - if diffs[pointer-1].Type == DiffEqual && - diffs[pointer+1].Type == DiffEqual { - // This is a single edit surrounded by equalities. - if strings.HasSuffix(diffs[pointer].Text, diffs[pointer-1].Text) { - // Shift the edit over the previous equality. - diffs[pointer].Text = diffs[pointer-1].Text + - diffs[pointer].Text[:len(diffs[pointer].Text)-len(diffs[pointer-1].Text)] - diffs[pointer+1].Text = diffs[pointer-1].Text + diffs[pointer+1].Text - diffs = splice(diffs, pointer-1, 1) - changes = true - } else if strings.HasPrefix(diffs[pointer].Text, diffs[pointer+1].Text) { - // Shift the edit over the next equality. - diffs[pointer-1].Text += diffs[pointer+1].Text - diffs[pointer].Text = - diffs[pointer].Text[len(diffs[pointer+1].Text):] + diffs[pointer+1].Text - diffs = splice(diffs, pointer+1, 1) - changes = true - } - } - pointer++ - } - - // If shifts were made, the diff needs reordering and another shift sweep. - if changes { - diffs = dmp.DiffCleanupMerge(diffs) - } - - return diffs -} - -// DiffXIndex returns the equivalent location in s2. -func (dmp *DiffMatchPatch) DiffXIndex(diffs []Diff, loc int) int { - chars1 := 0 - chars2 := 0 - lastChars1 := 0 - lastChars2 := 0 - lastDiff := Diff{} - for i := 0; i < len(diffs); i++ { - aDiff := diffs[i] - if aDiff.Type != DiffInsert { - // Equality or deletion. - chars1 += len(aDiff.Text) - } - if aDiff.Type != DiffDelete { - // Equality or insertion. - chars2 += len(aDiff.Text) - } - if chars1 > loc { - // Overshot the location. - lastDiff = aDiff - break - } - lastChars1 = chars1 - lastChars2 = chars2 - } - if lastDiff.Type == DiffDelete { - // The location was deleted. - return lastChars2 - } - // Add the remaining character length. - return lastChars2 + (loc - lastChars1) -} - -// DiffPrettyHtml converts a []Diff into a pretty HTML report. -// It is intended as an example from which to write one's own display functions. -func (dmp *DiffMatchPatch) DiffPrettyHtml(diffs []Diff) string { - var buff bytes.Buffer - for _, diff := range diffs { - text := strings.Replace(html.EscapeString(diff.Text), "\n", "¶
    ", -1) - switch diff.Type { - case DiffInsert: - _, _ = buff.WriteString("") - _, _ = buff.WriteString(text) - _, _ = buff.WriteString("") - case DiffDelete: - _, _ = buff.WriteString("") - _, _ = buff.WriteString(text) - _, _ = buff.WriteString("") - case DiffEqual: - _, _ = buff.WriteString("") - _, _ = buff.WriteString(text) - _, _ = buff.WriteString("") - } - } - return buff.String() -} - -// DiffPrettyText converts a []Diff into a colored text report. -func (dmp *DiffMatchPatch) DiffPrettyText(diffs []Diff) string { - var buff bytes.Buffer - for _, diff := range diffs { - text := diff.Text - - switch diff.Type { - case DiffInsert: - _, _ = buff.WriteString("\x1b[32m") - _, _ = buff.WriteString(text) - _, _ = buff.WriteString("\x1b[0m") - case DiffDelete: - _, _ = buff.WriteString("\x1b[31m") - _, _ = buff.WriteString(text) - _, _ = buff.WriteString("\x1b[0m") - case DiffEqual: - _, _ = buff.WriteString(text) - } - } - - return buff.String() -} - -// DiffText1 computes and returns the source text (all equalities and deletions). -func (dmp *DiffMatchPatch) DiffText1(diffs []Diff) string { - //StringBuilder text = new StringBuilder() - var text bytes.Buffer - - for _, aDiff := range diffs { - if aDiff.Type != DiffInsert { - _, _ = text.WriteString(aDiff.Text) - } - } - return text.String() -} - -// DiffText2 computes and returns the destination text (all equalities and insertions). -func (dmp *DiffMatchPatch) DiffText2(diffs []Diff) string { - var text bytes.Buffer - - for _, aDiff := range diffs { - if aDiff.Type != DiffDelete { - _, _ = text.WriteString(aDiff.Text) - } - } - return text.String() -} - -// DiffLevenshtein computes the Levenshtein distance that is the number of inserted, deleted or substituted characters. -func (dmp *DiffMatchPatch) DiffLevenshtein(diffs []Diff) int { - levenshtein := 0 - insertions := 0 - deletions := 0 - - for _, aDiff := range diffs { - switch aDiff.Type { - case DiffInsert: - insertions += utf8.RuneCountInString(aDiff.Text) - case DiffDelete: - deletions += utf8.RuneCountInString(aDiff.Text) - case DiffEqual: - // A deletion and an insertion is one substitution. - levenshtein += max(insertions, deletions) - insertions = 0 - deletions = 0 - } - } - - levenshtein += max(insertions, deletions) - return levenshtein -} - -// DiffToDelta crushes the diff into an encoded string which describes the operations required to transform text1 into text2. -// E.g. =3\t-2\t+ing -> Keep 3 chars, delete 2 chars, insert 'ing'. Operations are tab-separated. Inserted text is escaped using %xx notation. -func (dmp *DiffMatchPatch) DiffToDelta(diffs []Diff) string { - var text bytes.Buffer - for _, aDiff := range diffs { - switch aDiff.Type { - case DiffInsert: - _, _ = text.WriteString("+") - _, _ = text.WriteString(strings.Replace(url.QueryEscape(aDiff.Text), "+", " ", -1)) - _, _ = text.WriteString("\t") - break - case DiffDelete: - _, _ = text.WriteString("-") - _, _ = text.WriteString(strconv.Itoa(utf8.RuneCountInString(aDiff.Text))) - _, _ = text.WriteString("\t") - break - case DiffEqual: - _, _ = text.WriteString("=") - _, _ = text.WriteString(strconv.Itoa(utf8.RuneCountInString(aDiff.Text))) - _, _ = text.WriteString("\t") - break - } - } - delta := text.String() - if len(delta) != 0 { - // Strip off trailing tab character. - delta = delta[0 : utf8.RuneCountInString(delta)-1] - delta = unescaper.Replace(delta) - } - return delta -} - -// DiffFromDelta given the original text1, and an encoded string which describes the operations required to transform text1 into text2, comAdde the full diff. -func (dmp *DiffMatchPatch) DiffFromDelta(text1 string, delta string) (diffs []Diff, err error) { - i := 0 - runes := []rune(text1) - - for _, token := range strings.Split(delta, "\t") { - if len(token) == 0 { - // Blank tokens are ok (from a trailing \t). - continue - } - - // Each token begins with a one character parameter which specifies the operation of this token (delete, insert, equality). - param := token[1:] - - switch op := token[0]; op { - case '+': - // Decode would Diff all "+" to " " - param = strings.Replace(param, "+", "%2b", -1) - param, err = url.QueryUnescape(param) - if err != nil { - return nil, err - } - if !utf8.ValidString(param) { - return nil, fmt.Errorf("invalid UTF-8 token: %q", param) - } - - diffs = append(diffs, Diff{DiffInsert, param}) - case '=', '-': - n, err := strconv.ParseInt(param, 10, 0) - if err != nil { - return nil, err - } else if n < 0 { - return nil, errors.New("Negative number in DiffFromDelta: " + param) - } - - i += int(n) - // Break out if we are out of bounds, go1.6 can't handle this very well - if i > len(runes) { - break - } - // Remember that string slicing is by byte - we want by rune here. - text := string(runes[i-int(n) : i]) - - if op == '=' { - diffs = append(diffs, Diff{DiffEqual, text}) - } else { - diffs = append(diffs, Diff{DiffDelete, text}) - } - default: - // Anything else is an error. - return nil, errors.New("Invalid diff operation in DiffFromDelta: " + string(token[0])) - } - } - - if i != len(runes) { - return nil, fmt.Errorf("Delta length (%v) is different from source text length (%v)", i, len(text1)) - } - - return diffs, nil -} - -// diffLinesToStrings splits two texts into a list of strings. Each string represents one line. -func (dmp *DiffMatchPatch) diffLinesToStrings(text1, text2 string) (string, string, []string) { - // '\x00' is a valid character, but various debuggers don't like it. So we'll insert a junk entry to avoid generating a null character. - lineArray := []string{""} // e.g. lineArray[4] == 'Hello\n' - - //Each string has the index of lineArray which it points to - strIndexArray1 := dmp.diffLinesToStringsMunge(text1, &lineArray) - strIndexArray2 := dmp.diffLinesToStringsMunge(text2, &lineArray) - - return intArrayToString(strIndexArray1), intArrayToString(strIndexArray2), lineArray -} - -// diffLinesToStringsMunge splits a text into an array of strings, and reduces the texts to a []string. -func (dmp *DiffMatchPatch) diffLinesToStringsMunge(text string, lineArray *[]string) []uint32 { - // Walk the text, pulling out a substring for each line. text.split('\n') would would temporarily double our memory footprint. Modifying text would create many large strings to garbage collect. - lineHash := map[string]int{} // e.g. lineHash['Hello\n'] == 4 - lineStart := 0 - lineEnd := -1 - strs := []uint32{} - - for lineEnd < len(text)-1 { - lineEnd = indexOf(text, "\n", lineStart) - - if lineEnd == -1 { - lineEnd = len(text) - 1 - } - - line := text[lineStart : lineEnd+1] - lineStart = lineEnd + 1 - lineValue, ok := lineHash[line] - - if ok { - strs = append(strs, uint32(lineValue)) - } else { - *lineArray = append(*lineArray, line) - lineHash[line] = len(*lineArray) - 1 - strs = append(strs, uint32(len(*lineArray)-1)) - } - } - - return strs -} diff --git a/vendor/github.com/sergi/go-diff/diffmatchpatch/diffmatchpatch.go b/vendor/github.com/sergi/go-diff/diffmatchpatch/diffmatchpatch.go deleted file mode 100644 index d3acc32..0000000 --- a/vendor/github.com/sergi/go-diff/diffmatchpatch/diffmatchpatch.go +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright (c) 2012-2016 The go-diff authors. All rights reserved. -// https://github.com/sergi/go-diff -// See the included LICENSE file for license details. -// -// go-diff is a Go implementation of Google's Diff, Match, and Patch library -// Original library is Copyright (c) 2006 Google Inc. -// http://code.google.com/p/google-diff-match-patch/ - -// Package diffmatchpatch offers robust algorithms to perform the operations required for synchronizing plain text. -package diffmatchpatch - -import ( - "time" -) - -// DiffMatchPatch holds the configuration for diff-match-patch operations. -type DiffMatchPatch struct { - // Number of seconds to map a diff before giving up (0 for infinity). - DiffTimeout time.Duration - // Cost of an empty edit operation in terms of edit characters. - DiffEditCost int - // How far to search for a match (0 = exact location, 1000+ = broad match). A match this many characters away from the expected location will add 1.0 to the score (0.0 is a perfect match). - MatchDistance int - // When deleting a large block of text (over ~64 characters), how close do the contents have to be to match the expected contents. (0.0 = perfection, 1.0 = very loose). Note that MatchThreshold controls how closely the end points of a delete need to match. - PatchDeleteThreshold float64 - // Chunk size for context length. - PatchMargin int - // The number of bits in an int. - MatchMaxBits int - // At what point is no match declared (0.0 = perfection, 1.0 = very loose). - MatchThreshold float64 -} - -// New creates a new DiffMatchPatch object with default parameters. -func New() *DiffMatchPatch { - // Defaults. - return &DiffMatchPatch{ - DiffTimeout: time.Second, - DiffEditCost: 4, - MatchThreshold: 0.5, - MatchDistance: 1000, - PatchDeleteThreshold: 0.5, - PatchMargin: 4, - MatchMaxBits: 32, - } -} diff --git a/vendor/github.com/sergi/go-diff/diffmatchpatch/match.go b/vendor/github.com/sergi/go-diff/diffmatchpatch/match.go deleted file mode 100644 index 17374e1..0000000 --- a/vendor/github.com/sergi/go-diff/diffmatchpatch/match.go +++ /dev/null @@ -1,160 +0,0 @@ -// Copyright (c) 2012-2016 The go-diff authors. All rights reserved. -// https://github.com/sergi/go-diff -// See the included LICENSE file for license details. -// -// go-diff is a Go implementation of Google's Diff, Match, and Patch library -// Original library is Copyright (c) 2006 Google Inc. -// http://code.google.com/p/google-diff-match-patch/ - -package diffmatchpatch - -import ( - "math" -) - -// MatchMain locates the best instance of 'pattern' in 'text' near 'loc'. -// Returns -1 if no match found. -func (dmp *DiffMatchPatch) MatchMain(text, pattern string, loc int) int { - // Check for null inputs not needed since null can't be passed in C#. - - loc = int(math.Max(0, math.Min(float64(loc), float64(len(text))))) - if text == pattern { - // Shortcut (potentially not guaranteed by the algorithm) - return 0 - } else if len(text) == 0 { - // Nothing to match. - return -1 - } else if loc+len(pattern) <= len(text) && text[loc:loc+len(pattern)] == pattern { - // Perfect match at the perfect spot! (Includes case of null pattern) - return loc - } - // Do a fuzzy compare. - return dmp.MatchBitap(text, pattern, loc) -} - -// MatchBitap locates the best instance of 'pattern' in 'text' near 'loc' using the Bitap algorithm. -// Returns -1 if no match was found. -func (dmp *DiffMatchPatch) MatchBitap(text, pattern string, loc int) int { - // Initialise the alphabet. - s := dmp.MatchAlphabet(pattern) - - // Highest score beyond which we give up. - scoreThreshold := dmp.MatchThreshold - // Is there a nearby exact match? (speedup) - bestLoc := indexOf(text, pattern, loc) - if bestLoc != -1 { - scoreThreshold = math.Min(dmp.matchBitapScore(0, bestLoc, loc, - pattern), scoreThreshold) - // What about in the other direction? (speedup) - bestLoc = lastIndexOf(text, pattern, loc+len(pattern)) - if bestLoc != -1 { - scoreThreshold = math.Min(dmp.matchBitapScore(0, bestLoc, loc, - pattern), scoreThreshold) - } - } - - // Initialise the bit arrays. - matchmask := 1 << uint((len(pattern) - 1)) - bestLoc = -1 - - var binMin, binMid int - binMax := len(pattern) + len(text) - lastRd := []int{} - for d := 0; d < len(pattern); d++ { - // Scan for the best match; each iteration allows for one more error. Run a binary search to determine how far from 'loc' we can stray at this error level. - binMin = 0 - binMid = binMax - for binMin < binMid { - if dmp.matchBitapScore(d, loc+binMid, loc, pattern) <= scoreThreshold { - binMin = binMid - } else { - binMax = binMid - } - binMid = (binMax-binMin)/2 + binMin - } - // Use the result from this iteration as the maximum for the next. - binMax = binMid - start := int(math.Max(1, float64(loc-binMid+1))) - finish := int(math.Min(float64(loc+binMid), float64(len(text))) + float64(len(pattern))) - - rd := make([]int, finish+2) - rd[finish+1] = (1 << uint(d)) - 1 - - for j := finish; j >= start; j-- { - var charMatch int - if len(text) <= j-1 { - // Out of range. - charMatch = 0 - } else if _, ok := s[text[j-1]]; !ok { - charMatch = 0 - } else { - charMatch = s[text[j-1]] - } - - if d == 0 { - // First pass: exact match. - rd[j] = ((rd[j+1] << 1) | 1) & charMatch - } else { - // Subsequent passes: fuzzy match. - rd[j] = ((rd[j+1]<<1)|1)&charMatch | (((lastRd[j+1] | lastRd[j]) << 1) | 1) | lastRd[j+1] - } - if (rd[j] & matchmask) != 0 { - score := dmp.matchBitapScore(d, j-1, loc, pattern) - // This match will almost certainly be better than any existing match. But check anyway. - if score <= scoreThreshold { - // Told you so. - scoreThreshold = score - bestLoc = j - 1 - if bestLoc > loc { - // When passing loc, don't exceed our current distance from loc. - start = int(math.Max(1, float64(2*loc-bestLoc))) - } else { - // Already passed loc, downhill from here on in. - break - } - } - } - } - if dmp.matchBitapScore(d+1, loc, loc, pattern) > scoreThreshold { - // No hope for a (better) match at greater error levels. - break - } - lastRd = rd - } - return bestLoc -} - -// matchBitapScore computes and returns the score for a match with e errors and x location. -func (dmp *DiffMatchPatch) matchBitapScore(e, x, loc int, pattern string) float64 { - accuracy := float64(e) / float64(len(pattern)) - proximity := math.Abs(float64(loc - x)) - if dmp.MatchDistance == 0 { - // Dodge divide by zero error. - if proximity == 0 { - return accuracy - } - - return 1.0 - } - return accuracy + (proximity / float64(dmp.MatchDistance)) -} - -// MatchAlphabet initialises the alphabet for the Bitap algorithm. -func (dmp *DiffMatchPatch) MatchAlphabet(pattern string) map[byte]int { - s := map[byte]int{} - charPattern := []byte(pattern) - for _, c := range charPattern { - _, ok := s[c] - if !ok { - s[c] = 0 - } - } - i := 0 - - for _, c := range charPattern { - value := s[c] | int(uint(1)< y { - return x - } - return y -} diff --git a/vendor/github.com/sergi/go-diff/diffmatchpatch/operation_string.go b/vendor/github.com/sergi/go-diff/diffmatchpatch/operation_string.go deleted file mode 100644 index 533ec0d..0000000 --- a/vendor/github.com/sergi/go-diff/diffmatchpatch/operation_string.go +++ /dev/null @@ -1,17 +0,0 @@ -// Code generated by "stringer -type=Operation -trimprefix=Diff"; DO NOT EDIT. - -package diffmatchpatch - -import "fmt" - -const _Operation_name = "DeleteEqualInsert" - -var _Operation_index = [...]uint8{0, 6, 11, 17} - -func (i Operation) String() string { - i -= -1 - if i < 0 || i >= Operation(len(_Operation_index)-1) { - return fmt.Sprintf("Operation(%d)", i+-1) - } - return _Operation_name[_Operation_index[i]:_Operation_index[i+1]] -} diff --git a/vendor/github.com/sergi/go-diff/diffmatchpatch/patch.go b/vendor/github.com/sergi/go-diff/diffmatchpatch/patch.go deleted file mode 100644 index 0dbe3bd..0000000 --- a/vendor/github.com/sergi/go-diff/diffmatchpatch/patch.go +++ /dev/null @@ -1,556 +0,0 @@ -// Copyright (c) 2012-2016 The go-diff authors. All rights reserved. -// https://github.com/sergi/go-diff -// See the included LICENSE file for license details. -// -// go-diff is a Go implementation of Google's Diff, Match, and Patch library -// Original library is Copyright (c) 2006 Google Inc. -// http://code.google.com/p/google-diff-match-patch/ - -package diffmatchpatch - -import ( - "bytes" - "errors" - "math" - "net/url" - "regexp" - "strconv" - "strings" -) - -// Patch represents one patch operation. -type Patch struct { - diffs []Diff - Start1 int - Start2 int - Length1 int - Length2 int -} - -// String emulates GNU diff's format. -// Header: @@ -382,8 +481,9 @@ -// Indices are printed as 1-based, not 0-based. -func (p *Patch) String() string { - var coords1, coords2 string - - if p.Length1 == 0 { - coords1 = strconv.Itoa(p.Start1) + ",0" - } else if p.Length1 == 1 { - coords1 = strconv.Itoa(p.Start1 + 1) - } else { - coords1 = strconv.Itoa(p.Start1+1) + "," + strconv.Itoa(p.Length1) - } - - if p.Length2 == 0 { - coords2 = strconv.Itoa(p.Start2) + ",0" - } else if p.Length2 == 1 { - coords2 = strconv.Itoa(p.Start2 + 1) - } else { - coords2 = strconv.Itoa(p.Start2+1) + "," + strconv.Itoa(p.Length2) - } - - var text bytes.Buffer - _, _ = text.WriteString("@@ -" + coords1 + " +" + coords2 + " @@\n") - - // Escape the body of the patch with %xx notation. - for _, aDiff := range p.diffs { - switch aDiff.Type { - case DiffInsert: - _, _ = text.WriteString("+") - case DiffDelete: - _, _ = text.WriteString("-") - case DiffEqual: - _, _ = text.WriteString(" ") - } - - _, _ = text.WriteString(strings.Replace(url.QueryEscape(aDiff.Text), "+", " ", -1)) - _, _ = text.WriteString("\n") - } - - return unescaper.Replace(text.String()) -} - -// PatchAddContext increases the context until it is unique, but doesn't let the pattern expand beyond MatchMaxBits. -func (dmp *DiffMatchPatch) PatchAddContext(patch Patch, text string) Patch { - if len(text) == 0 { - return patch - } - - pattern := text[patch.Start2 : patch.Start2+patch.Length1] - padding := 0 - - // Look for the first and last matches of pattern in text. If two different matches are found, increase the pattern length. - for strings.Index(text, pattern) != strings.LastIndex(text, pattern) && - len(pattern) < dmp.MatchMaxBits-2*dmp.PatchMargin { - padding += dmp.PatchMargin - maxStart := max(0, patch.Start2-padding) - minEnd := min(len(text), patch.Start2+patch.Length1+padding) - pattern = text[maxStart:minEnd] - } - // Add one chunk for good luck. - padding += dmp.PatchMargin - - // Add the prefix. - prefix := text[max(0, patch.Start2-padding):patch.Start2] - if len(prefix) != 0 { - patch.diffs = append([]Diff{Diff{DiffEqual, prefix}}, patch.diffs...) - } - // Add the suffix. - suffix := text[patch.Start2+patch.Length1 : min(len(text), patch.Start2+patch.Length1+padding)] - if len(suffix) != 0 { - patch.diffs = append(patch.diffs, Diff{DiffEqual, suffix}) - } - - // Roll back the start points. - patch.Start1 -= len(prefix) - patch.Start2 -= len(prefix) - // Extend the lengths. - patch.Length1 += len(prefix) + len(suffix) - patch.Length2 += len(prefix) + len(suffix) - - return patch -} - -// PatchMake computes a list of patches. -func (dmp *DiffMatchPatch) PatchMake(opt ...interface{}) []Patch { - if len(opt) == 1 { - diffs, _ := opt[0].([]Diff) - text1 := dmp.DiffText1(diffs) - return dmp.PatchMake(text1, diffs) - } else if len(opt) == 2 { - text1 := opt[0].(string) - switch t := opt[1].(type) { - case string: - diffs := dmp.DiffMain(text1, t, true) - if len(diffs) > 2 { - diffs = dmp.DiffCleanupSemantic(diffs) - diffs = dmp.DiffCleanupEfficiency(diffs) - } - return dmp.PatchMake(text1, diffs) - case []Diff: - return dmp.patchMake2(text1, t) - } - } else if len(opt) == 3 { - return dmp.PatchMake(opt[0], opt[2]) - } - return []Patch{} -} - -// patchMake2 computes a list of patches to turn text1 into text2. -// text2 is not provided, diffs are the delta between text1 and text2. -func (dmp *DiffMatchPatch) patchMake2(text1 string, diffs []Diff) []Patch { - // Check for null inputs not needed since null can't be passed in C#. - patches := []Patch{} - if len(diffs) == 0 { - return patches // Get rid of the null case. - } - - patch := Patch{} - charCount1 := 0 // Number of characters into the text1 string. - charCount2 := 0 // Number of characters into the text2 string. - // Start with text1 (prepatchText) and apply the diffs until we arrive at text2 (postpatchText). We recreate the patches one by one to determine context info. - prepatchText := text1 - postpatchText := text1 - - for i, aDiff := range diffs { - if len(patch.diffs) == 0 && aDiff.Type != DiffEqual { - // A new patch starts here. - patch.Start1 = charCount1 - patch.Start2 = charCount2 - } - - switch aDiff.Type { - case DiffInsert: - patch.diffs = append(patch.diffs, aDiff) - patch.Length2 += len(aDiff.Text) - postpatchText = postpatchText[:charCount2] + - aDiff.Text + postpatchText[charCount2:] - case DiffDelete: - patch.Length1 += len(aDiff.Text) - patch.diffs = append(patch.diffs, aDiff) - postpatchText = postpatchText[:charCount2] + postpatchText[charCount2+len(aDiff.Text):] - case DiffEqual: - if len(aDiff.Text) <= 2*dmp.PatchMargin && - len(patch.diffs) != 0 && i != len(diffs)-1 { - // Small equality inside a patch. - patch.diffs = append(patch.diffs, aDiff) - patch.Length1 += len(aDiff.Text) - patch.Length2 += len(aDiff.Text) - } - if len(aDiff.Text) >= 2*dmp.PatchMargin { - // Time for a new patch. - if len(patch.diffs) != 0 { - patch = dmp.PatchAddContext(patch, prepatchText) - patches = append(patches, patch) - patch = Patch{} - // Unlike Unidiff, our patch lists have a rolling context. http://code.google.com/p/google-diff-match-patch/wiki/Unidiff Update prepatch text & pos to reflect the application of the just completed patch. - prepatchText = postpatchText - charCount1 = charCount2 - } - } - } - - // Update the current character count. - if aDiff.Type != DiffInsert { - charCount1 += len(aDiff.Text) - } - if aDiff.Type != DiffDelete { - charCount2 += len(aDiff.Text) - } - } - - // Pick up the leftover patch if not empty. - if len(patch.diffs) != 0 { - patch = dmp.PatchAddContext(patch, prepatchText) - patches = append(patches, patch) - } - - return patches -} - -// PatchDeepCopy returns an array that is identical to a given an array of patches. -func (dmp *DiffMatchPatch) PatchDeepCopy(patches []Patch) []Patch { - patchesCopy := []Patch{} - for _, aPatch := range patches { - patchCopy := Patch{} - for _, aDiff := range aPatch.diffs { - patchCopy.diffs = append(patchCopy.diffs, Diff{ - aDiff.Type, - aDiff.Text, - }) - } - patchCopy.Start1 = aPatch.Start1 - patchCopy.Start2 = aPatch.Start2 - patchCopy.Length1 = aPatch.Length1 - patchCopy.Length2 = aPatch.Length2 - patchesCopy = append(patchesCopy, patchCopy) - } - return patchesCopy -} - -// PatchApply merges a set of patches onto the text. Returns a patched text, as well as an array of true/false values indicating which patches were applied. -func (dmp *DiffMatchPatch) PatchApply(patches []Patch, text string) (string, []bool) { - if len(patches) == 0 { - return text, []bool{} - } - - // Deep copy the patches so that no changes are made to originals. - patches = dmp.PatchDeepCopy(patches) - - nullPadding := dmp.PatchAddPadding(patches) - text = nullPadding + text + nullPadding - patches = dmp.PatchSplitMax(patches) - - x := 0 - // delta keeps track of the offset between the expected and actual location of the previous patch. If there are patches expected at positions 10 and 20, but the first patch was found at 12, delta is 2 and the second patch has an effective expected position of 22. - delta := 0 - results := make([]bool, len(patches)) - for _, aPatch := range patches { - expectedLoc := aPatch.Start2 + delta - text1 := dmp.DiffText1(aPatch.diffs) - var startLoc int - endLoc := -1 - if len(text1) > dmp.MatchMaxBits { - // PatchSplitMax will only provide an oversized pattern in the case of a monster delete. - startLoc = dmp.MatchMain(text, text1[:dmp.MatchMaxBits], expectedLoc) - if startLoc != -1 { - endLoc = dmp.MatchMain(text, - text1[len(text1)-dmp.MatchMaxBits:], expectedLoc+len(text1)-dmp.MatchMaxBits) - if endLoc == -1 || startLoc >= endLoc { - // Can't find valid trailing context. Drop this patch. - startLoc = -1 - } - } - } else { - startLoc = dmp.MatchMain(text, text1, expectedLoc) - } - if startLoc == -1 { - // No match found. :( - results[x] = false - // Subtract the delta for this failed patch from subsequent patches. - delta -= aPatch.Length2 - aPatch.Length1 - } else { - // Found a match. :) - results[x] = true - delta = startLoc - expectedLoc - var text2 string - if endLoc == -1 { - text2 = text[startLoc:int(math.Min(float64(startLoc+len(text1)), float64(len(text))))] - } else { - text2 = text[startLoc:int(math.Min(float64(endLoc+dmp.MatchMaxBits), float64(len(text))))] - } - if text1 == text2 { - // Perfect match, just shove the Replacement text in. - text = text[:startLoc] + dmp.DiffText2(aPatch.diffs) + text[startLoc+len(text1):] - } else { - // Imperfect match. Run a diff to get a framework of equivalent indices. - diffs := dmp.DiffMain(text1, text2, false) - if len(text1) > dmp.MatchMaxBits && float64(dmp.DiffLevenshtein(diffs))/float64(len(text1)) > dmp.PatchDeleteThreshold { - // The end points match, but the content is unacceptably bad. - results[x] = false - } else { - diffs = dmp.DiffCleanupSemanticLossless(diffs) - index1 := 0 - for _, aDiff := range aPatch.diffs { - if aDiff.Type != DiffEqual { - index2 := dmp.DiffXIndex(diffs, index1) - if aDiff.Type == DiffInsert { - // Insertion - text = text[:startLoc+index2] + aDiff.Text + text[startLoc+index2:] - } else if aDiff.Type == DiffDelete { - // Deletion - startIndex := startLoc + index2 - text = text[:startIndex] + - text[startIndex+dmp.DiffXIndex(diffs, index1+len(aDiff.Text))-index2:] - } - } - if aDiff.Type != DiffDelete { - index1 += len(aDiff.Text) - } - } - } - } - } - x++ - } - // Strip the padding off. - text = text[len(nullPadding) : len(nullPadding)+(len(text)-2*len(nullPadding))] - return text, results -} - -// PatchAddPadding adds some padding on text start and end so that edges can match something. -// Intended to be called only from within patchApply. -func (dmp *DiffMatchPatch) PatchAddPadding(patches []Patch) string { - paddingLength := dmp.PatchMargin - nullPadding := "" - for x := 1; x <= paddingLength; x++ { - nullPadding += string(rune(x)) - } - - // Bump all the patches forward. - for i := range patches { - patches[i].Start1 += paddingLength - patches[i].Start2 += paddingLength - } - - // Add some padding on start of first diff. - if len(patches[0].diffs) == 0 || patches[0].diffs[0].Type != DiffEqual { - // Add nullPadding equality. - patches[0].diffs = append([]Diff{Diff{DiffEqual, nullPadding}}, patches[0].diffs...) - patches[0].Start1 -= paddingLength // Should be 0. - patches[0].Start2 -= paddingLength // Should be 0. - patches[0].Length1 += paddingLength - patches[0].Length2 += paddingLength - } else if paddingLength > len(patches[0].diffs[0].Text) { - // Grow first equality. - extraLength := paddingLength - len(patches[0].diffs[0].Text) - patches[0].diffs[0].Text = nullPadding[len(patches[0].diffs[0].Text):] + patches[0].diffs[0].Text - patches[0].Start1 -= extraLength - patches[0].Start2 -= extraLength - patches[0].Length1 += extraLength - patches[0].Length2 += extraLength - } - - // Add some padding on end of last diff. - last := len(patches) - 1 - if len(patches[last].diffs) == 0 || patches[last].diffs[len(patches[last].diffs)-1].Type != DiffEqual { - // Add nullPadding equality. - patches[last].diffs = append(patches[last].diffs, Diff{DiffEqual, nullPadding}) - patches[last].Length1 += paddingLength - patches[last].Length2 += paddingLength - } else if paddingLength > len(patches[last].diffs[len(patches[last].diffs)-1].Text) { - // Grow last equality. - lastDiff := patches[last].diffs[len(patches[last].diffs)-1] - extraLength := paddingLength - len(lastDiff.Text) - patches[last].diffs[len(patches[last].diffs)-1].Text += nullPadding[:extraLength] - patches[last].Length1 += extraLength - patches[last].Length2 += extraLength - } - - return nullPadding -} - -// PatchSplitMax looks through the patches and breaks up any which are longer than the maximum limit of the match algorithm. -// Intended to be called only from within patchApply. -func (dmp *DiffMatchPatch) PatchSplitMax(patches []Patch) []Patch { - patchSize := dmp.MatchMaxBits - for x := 0; x < len(patches); x++ { - if patches[x].Length1 <= patchSize { - continue - } - bigpatch := patches[x] - // Remove the big old patch. - patches = append(patches[:x], patches[x+1:]...) - x-- - - Start1 := bigpatch.Start1 - Start2 := bigpatch.Start2 - precontext := "" - for len(bigpatch.diffs) != 0 { - // Create one of several smaller patches. - patch := Patch{} - empty := true - patch.Start1 = Start1 - len(precontext) - patch.Start2 = Start2 - len(precontext) - if len(precontext) != 0 { - patch.Length1 = len(precontext) - patch.Length2 = len(precontext) - patch.diffs = append(patch.diffs, Diff{DiffEqual, precontext}) - } - for len(bigpatch.diffs) != 0 && patch.Length1 < patchSize-dmp.PatchMargin { - diffType := bigpatch.diffs[0].Type - diffText := bigpatch.diffs[0].Text - if diffType == DiffInsert { - // Insertions are harmless. - patch.Length2 += len(diffText) - Start2 += len(diffText) - patch.diffs = append(patch.diffs, bigpatch.diffs[0]) - bigpatch.diffs = bigpatch.diffs[1:] - empty = false - } else if diffType == DiffDelete && len(patch.diffs) == 1 && patch.diffs[0].Type == DiffEqual && len(diffText) > 2*patchSize { - // This is a large deletion. Let it pass in one chunk. - patch.Length1 += len(diffText) - Start1 += len(diffText) - empty = false - patch.diffs = append(patch.diffs, Diff{diffType, diffText}) - bigpatch.diffs = bigpatch.diffs[1:] - } else { - // Deletion or equality. Only take as much as we can stomach. - diffText = diffText[:min(len(diffText), patchSize-patch.Length1-dmp.PatchMargin)] - - patch.Length1 += len(diffText) - Start1 += len(diffText) - if diffType == DiffEqual { - patch.Length2 += len(diffText) - Start2 += len(diffText) - } else { - empty = false - } - patch.diffs = append(patch.diffs, Diff{diffType, diffText}) - if diffText == bigpatch.diffs[0].Text { - bigpatch.diffs = bigpatch.diffs[1:] - } else { - bigpatch.diffs[0].Text = - bigpatch.diffs[0].Text[len(diffText):] - } - } - } - // Compute the head context for the next patch. - precontext = dmp.DiffText2(patch.diffs) - precontext = precontext[max(0, len(precontext)-dmp.PatchMargin):] - - postcontext := "" - // Append the end context for this patch. - if len(dmp.DiffText1(bigpatch.diffs)) > dmp.PatchMargin { - postcontext = dmp.DiffText1(bigpatch.diffs)[:dmp.PatchMargin] - } else { - postcontext = dmp.DiffText1(bigpatch.diffs) - } - - if len(postcontext) != 0 { - patch.Length1 += len(postcontext) - patch.Length2 += len(postcontext) - if len(patch.diffs) != 0 && patch.diffs[len(patch.diffs)-1].Type == DiffEqual { - patch.diffs[len(patch.diffs)-1].Text += postcontext - } else { - patch.diffs = append(patch.diffs, Diff{DiffEqual, postcontext}) - } - } - if !empty { - x++ - patches = append(patches[:x], append([]Patch{patch}, patches[x:]...)...) - } - } - } - return patches -} - -// PatchToText takes a list of patches and returns a textual representation. -func (dmp *DiffMatchPatch) PatchToText(patches []Patch) string { - var text bytes.Buffer - for _, aPatch := range patches { - _, _ = text.WriteString(aPatch.String()) - } - return text.String() -} - -// PatchFromText parses a textual representation of patches and returns a List of Patch objects. -func (dmp *DiffMatchPatch) PatchFromText(textline string) ([]Patch, error) { - patches := []Patch{} - if len(textline) == 0 { - return patches, nil - } - text := strings.Split(textline, "\n") - textPointer := 0 - patchHeader := regexp.MustCompile("^@@ -(\\d+),?(\\d*) \\+(\\d+),?(\\d*) @@$") - - var patch Patch - var sign uint8 - var line string - for textPointer < len(text) { - - if !patchHeader.MatchString(text[textPointer]) { - return patches, errors.New("Invalid patch string: " + text[textPointer]) - } - - patch = Patch{} - m := patchHeader.FindStringSubmatch(text[textPointer]) - - patch.Start1, _ = strconv.Atoi(m[1]) - if len(m[2]) == 0 { - patch.Start1-- - patch.Length1 = 1 - } else if m[2] == "0" { - patch.Length1 = 0 - } else { - patch.Start1-- - patch.Length1, _ = strconv.Atoi(m[2]) - } - - patch.Start2, _ = strconv.Atoi(m[3]) - - if len(m[4]) == 0 { - patch.Start2-- - patch.Length2 = 1 - } else if m[4] == "0" { - patch.Length2 = 0 - } else { - patch.Start2-- - patch.Length2, _ = strconv.Atoi(m[4]) - } - textPointer++ - - for textPointer < len(text) { - if len(text[textPointer]) > 0 { - sign = text[textPointer][0] - } else { - textPointer++ - continue - } - - line = text[textPointer][1:] - line = strings.Replace(line, "+", "%2b", -1) - line, _ = url.QueryUnescape(line) - if sign == '-' { - // Deletion. - patch.diffs = append(patch.diffs, Diff{DiffDelete, line}) - } else if sign == '+' { - // Insertion. - patch.diffs = append(patch.diffs, Diff{DiffInsert, line}) - } else if sign == ' ' { - // Minor equality. - patch.diffs = append(patch.diffs, Diff{DiffEqual, line}) - } else if sign == '@' { - // Start of next patch. - break - } else { - // WTF? - return patches, errors.New("Invalid patch mode '" + string(sign) + "' in: " + string(line)) - } - textPointer++ - } - - patches = append(patches, patch) - } - return patches, nil -} diff --git a/vendor/github.com/sergi/go-diff/diffmatchpatch/stringutil.go b/vendor/github.com/sergi/go-diff/diffmatchpatch/stringutil.go deleted file mode 100644 index 44c4359..0000000 --- a/vendor/github.com/sergi/go-diff/diffmatchpatch/stringutil.go +++ /dev/null @@ -1,106 +0,0 @@ -// Copyright (c) 2012-2016 The go-diff authors. All rights reserved. -// https://github.com/sergi/go-diff -// See the included LICENSE file for license details. -// -// go-diff is a Go implementation of Google's Diff, Match, and Patch library -// Original library is Copyright (c) 2006 Google Inc. -// http://code.google.com/p/google-diff-match-patch/ - -package diffmatchpatch - -import ( - "strconv" - "strings" - "unicode/utf8" -) - -// unescaper unescapes selected chars for compatibility with JavaScript's encodeURI. -// In speed critical applications this could be dropped since the receiving application will certainly decode these fine. Note that this function is case-sensitive. Thus "%3F" would not be unescaped. But this is ok because it is only called with the output of HttpUtility.UrlEncode which returns lowercase hex. Example: "%3f" -> "?", "%24" -> "$", etc. -var unescaper = strings.NewReplacer( - "%21", "!", "%7E", "~", "%27", "'", - "%28", "(", "%29", ")", "%3B", ";", - "%2F", "/", "%3F", "?", "%3A", ":", - "%40", "@", "%26", "&", "%3D", "=", - "%2B", "+", "%24", "$", "%2C", ",", "%23", "#", "%2A", "*") - -// indexOf returns the first index of pattern in str, starting at str[i]. -func indexOf(str string, pattern string, i int) int { - if i > len(str)-1 { - return -1 - } - if i <= 0 { - return strings.Index(str, pattern) - } - ind := strings.Index(str[i:], pattern) - if ind == -1 { - return -1 - } - return ind + i -} - -// lastIndexOf returns the last index of pattern in str, starting at str[i]. -func lastIndexOf(str string, pattern string, i int) int { - if i < 0 { - return -1 - } - if i >= len(str) { - return strings.LastIndex(str, pattern) - } - _, size := utf8.DecodeRuneInString(str[i:]) - return strings.LastIndex(str[:i+size], pattern) -} - -// runesIndexOf returns the index of pattern in target, starting at target[i]. -func runesIndexOf(target, pattern []rune, i int) int { - if i > len(target)-1 { - return -1 - } - if i <= 0 { - return runesIndex(target, pattern) - } - ind := runesIndex(target[i:], pattern) - if ind == -1 { - return -1 - } - return ind + i -} - -func runesEqual(r1, r2 []rune) bool { - if len(r1) != len(r2) { - return false - } - for i, c := range r1 { - if c != r2[i] { - return false - } - } - return true -} - -// runesIndex is the equivalent of strings.Index for rune slices. -func runesIndex(r1, r2 []rune) int { - last := len(r1) - len(r2) - for i := 0; i <= last; i++ { - if runesEqual(r1[i:i+len(r2)], r2) { - return i - } - } - return -1 -} - -func intArrayToString(ns []uint32) string { - if len(ns) == 0 { - return "" - } - - indexSeparator := IndexSeparator[0] - - // Appr. 3 chars per num plus the comma. - b := []byte{} - for _, n := range ns { - b = strconv.AppendInt(b, int64(n), 10) - b = append(b, indexSeparator) - } - b = b[:len(b)-1] - return string(b) -} diff --git a/vendor/github.com/spf13/cobra/.gitignore b/vendor/github.com/spf13/cobra/.gitignore deleted file mode 100644 index c7b459e..0000000 --- a/vendor/github.com/spf13/cobra/.gitignore +++ /dev/null @@ -1,39 +0,0 @@ -# Compiled Object files, Static and Dynamic libs (Shared Objects) -*.o -*.a -*.so - -# Folders -_obj -_test - -# Architecture specific extensions/prefixes -*.[568vq] -[568vq].out - -*.cgo1.go -*.cgo2.c -_cgo_defun.c -_cgo_gotypes.go -_cgo_export.* - -_testmain.go - -# Vim files https://github.com/github/gitignore/blob/master/Global/Vim.gitignore -# swap -[._]*.s[a-w][a-z] -[._]s[a-w][a-z] -# session -Session.vim -# temporary -.netrwhist -*~ -# auto-generated tag files -tags - -*.exe -cobra.test -bin - -.idea/ -*.iml diff --git a/vendor/github.com/spf13/cobra/.golangci.yml b/vendor/github.com/spf13/cobra/.golangci.yml deleted file mode 100644 index 0d6e617..0000000 --- a/vendor/github.com/spf13/cobra/.golangci.yml +++ /dev/null @@ -1,48 +0,0 @@ -run: - deadline: 5m - -linters: - disable-all: true - enable: - #- bodyclose - - deadcode - #- depguard - #- dogsled - #- dupl - - errcheck - #- exhaustive - #- funlen - - gas - #- gochecknoinits - - goconst - #- gocritic - #- gocyclo - #- gofmt - - goimports - - golint - #- gomnd - #- goprintffuncname - #- gosec - #- gosimple - - govet - - ineffassign - - interfacer - #- lll - - maligned - - megacheck - #- misspell - #- nakedret - #- noctx - #- nolintlint - #- rowserrcheck - #- scopelint - #- staticcheck - - structcheck - #- stylecheck - #- typecheck - - unconvert - #- unparam - #- unused - - varcheck - #- whitespace - fast: false diff --git a/vendor/github.com/spf13/cobra/.mailmap b/vendor/github.com/spf13/cobra/.mailmap deleted file mode 100644 index 94ec530..0000000 --- a/vendor/github.com/spf13/cobra/.mailmap +++ /dev/null @@ -1,3 +0,0 @@ -Steve Francia -Bjørn Erik Pedersen -Fabiano Franz diff --git a/vendor/github.com/spf13/cobra/CHANGELOG.md b/vendor/github.com/spf13/cobra/CHANGELOG.md deleted file mode 100644 index 8a23b4f..0000000 --- a/vendor/github.com/spf13/cobra/CHANGELOG.md +++ /dev/null @@ -1,51 +0,0 @@ -# Cobra Changelog - -## v1.1.3 - -* **Fix:** release-branch.cobra1.1 only: Revert "Deprecate Go < 1.14" to maintain backward compatibility - -## v1.1.2 - -### Notable Changes - -* Bump license year to 2021 in golden files (#1309) @Bowbaq -* Enhance PowerShell completion with custom comp (#1208) @Luap99 -* Update gopkg.in/yaml.v2 to v2.4.0: The previous breaking change in yaml.v2 v2.3.0 has been reverted, see go-yaml/yaml#670 -* Documentation readability improvements (#1228 etc.) @zaataylor etc. -* Use golangci-lint: Repair warnings and errors resulting from linting (#1044) @umarcor - -## v1.1.1 - -* **Fix:** yaml.v2 2.3.0 contained a unintended breaking change. This release reverts to yaml.v2 v2.2.8 which has recent critical CVE fixes, but does not have the breaking changes. See https://github.com/spf13/cobra/pull/1259 for context. -* **Fix:** correct internal formatting for go-md2man v2 (which caused man page generation to be broken). See https://github.com/spf13/cobra/issues/1049 for context. - -## v1.1.0 - -### Notable Changes - -* Extend Go completions and revamp zsh comp (#1070) -* Fix man page doc generation - no auto generated tag when `cmd.DisableAutoGenTag = true` (#1104) @jpmcb -* Add completion for help command (#1136) -* Complete subcommands when TraverseChildren is set (#1171) -* Fix stderr printing functions (#894) -* fix: fish output redirection (#1247) - -## v1.0.0 - -Announcing v1.0.0 of Cobra. 🎉 - -### Notable Changes -* Fish completion (including support for Go custom completion) @marckhouzam -* API (urgent): Rename BashCompDirectives to ShellCompDirectives @marckhouzam -* Remove/replace SetOutput on Command - deprecated @jpmcb -* add support for autolabel stale PR @xchapter7x -* Add Labeler Actions @xchapter7x -* Custom completions coded in Go (instead of Bash) @marckhouzam -* Partial Revert of #922 @jharshman -* Add Makefile to project @jharshman -* Correct documentation for InOrStdin @desponda -* Apply formatting to templates @jharshman -* Revert change so help is printed on stdout again @marckhouzam -* Update md2man to v2.0.0 @pdf -* update viper to v1.4.0 @umarcor -* Update cmd/root.go example in README.md @jharshman diff --git a/vendor/github.com/spf13/cobra/CONDUCT.md b/vendor/github.com/spf13/cobra/CONDUCT.md deleted file mode 100644 index 9d16f88..0000000 --- a/vendor/github.com/spf13/cobra/CONDUCT.md +++ /dev/null @@ -1,37 +0,0 @@ -## Cobra User Contract - -### Versioning -Cobra will follow a steady release cadence. Non breaking changes will be released as minor versions quarterly. Patch bug releases are at the discretion of the maintainers. Users can expect security patch fixes to be released within relatively short order of a CVE becoming known. For more information on security patch fixes see the CVE section below. Releases will follow [Semantic Versioning](https://semver.org/). Users tracking the Master branch should expect unpredictable breaking changes as the project continues to move forward. For stability, it is highly recommended to use a release. - -### Backward Compatibility -We will maintain two major releases in a moving window. The N-1 release will only receive bug fixes and security updates and will be dropped once N+1 is released. - -### Deprecation -Deprecation of Go versions or dependent packages will only occur in major releases. To reduce the change of this taking users by surprise, any large deprecation will be preceded by an announcement in the [#cobra slack channel](https://gophers.slack.com/archives/CD3LP1199) and an Issue on Github. - -### CVE -Maintainers will make every effort to release security patches in the case of a medium to high severity CVE directly impacting the library. The speed in which these patches reach a release is up to the discretion of the maintainers. A low severity CVE may be a lower priority than a high severity one. - -### Communication -Cobra maintainers will use GitHub issues and the [#cobra slack channel](https://gophers.slack.com/archives/CD3LP1199) as the primary means of communication with the community. This is to foster open communication with all users and contributors. - -### Breaking Changes -Breaking changes are generally allowed in the master branch, as this is the branch used to develop the next release of Cobra. - -There may be times, however, when master is closed for breaking changes. This is likely to happen as we near the release of a new version. - -Breaking changes are not allowed in release branches, as these represent minor versions that have already been released. These version have consumers who expect the APIs, behaviors, etc, to remain stable during the lifetime of the patch stream for the minor release. - -Examples of breaking changes include: -- Removing or renaming exported constant, variable, type, or function. -- Updating the version of critical libraries such as `spf13/pflag`, `spf13/viper` etc... - - Some version updates may be acceptable for picking up bug fixes, but maintainers must exercise caution when reviewing. - -There may, at times, need to be exceptions where breaking changes are allowed in release branches. These are at the discretion of the project's maintainers, and must be carefully considered before merging. - -### CI Testing -Maintainers will ensure the Cobra test suite utilizes the current supported versions of Golang. - -### Disclaimer -Changes to this document and the contents therein are at the discretion of the maintainers. -None of the contents of this document are legally binding in any way to the maintainers or the users. diff --git a/vendor/github.com/spf13/cobra/CONTRIBUTING.md b/vendor/github.com/spf13/cobra/CONTRIBUTING.md deleted file mode 100644 index 6f356e6..0000000 --- a/vendor/github.com/spf13/cobra/CONTRIBUTING.md +++ /dev/null @@ -1,50 +0,0 @@ -# Contributing to Cobra - -Thank you so much for contributing to Cobra. We appreciate your time and help. -Here are some guidelines to help you get started. - -## Code of Conduct - -Be kind and respectful to the members of the community. Take time to educate -others who are seeking help. Harassment of any kind will not be tolerated. - -## Questions - -If you have questions regarding Cobra, feel free to ask it in the community -[#cobra Slack channel][cobra-slack] - -## Filing a bug or feature - -1. Before filing an issue, please check the existing issues to see if a - similar one was already opened. If there is one already opened, feel free - to comment on it. -1. If you believe you've found a bug, please provide detailed steps of - reproduction, the version of Cobra and anything else you believe will be - useful to help troubleshoot it (e.g. OS environment, environment variables, - etc...). Also state the current behavior vs. the expected behavior. -1. If you'd like to see a feature or an enhancement please open an issue with - a clear title and description of what the feature is and why it would be - beneficial to the project and its users. - -## Submitting changes - -1. CLA: Upon submitting a Pull Request (PR), contributors will be prompted to - sign a CLA. Please sign the CLA :slightly_smiling_face: -1. Tests: If you are submitting code, please ensure you have adequate tests - for the feature. Tests can be run via `go test ./...` or `make test`. -1. Since this is golang project, ensure the new code is properly formatted to - ensure code consistency. Run `make all`. - -### Quick steps to contribute - -1. Fork the project. -1. Download your fork to your PC (`git clone https://github.com/your_username/cobra && cd cobra`) -1. Create your feature branch (`git checkout -b my-new-feature`) -1. Make changes and run tests (`make test`) -1. Add them to staging (`git add .`) -1. Commit your changes (`git commit -m 'Add some feature'`) -1. Push to the branch (`git push origin my-new-feature`) -1. Create new pull request - - -[cobra-slack]: https://gophers.slack.com/archives/CD3LP1199 diff --git a/vendor/github.com/spf13/cobra/LICENSE.txt b/vendor/github.com/spf13/cobra/LICENSE.txt deleted file mode 100644 index 298f0e2..0000000 --- a/vendor/github.com/spf13/cobra/LICENSE.txt +++ /dev/null @@ -1,174 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor 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, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. diff --git a/vendor/github.com/spf13/cobra/MAINTAINERS b/vendor/github.com/spf13/cobra/MAINTAINERS deleted file mode 100644 index 4c5ac3d..0000000 --- a/vendor/github.com/spf13/cobra/MAINTAINERS +++ /dev/null @@ -1,13 +0,0 @@ -maintainers: -- spf13 -- johnSchnake -- jpmcb -- marckhouzam -inactive: -- anthonyfok -- bep -- bogem -- broady -- eparis -- jharshman -- wfernandes diff --git a/vendor/github.com/spf13/cobra/Makefile b/vendor/github.com/spf13/cobra/Makefile deleted file mode 100644 index 443ef1a..0000000 --- a/vendor/github.com/spf13/cobra/Makefile +++ /dev/null @@ -1,35 +0,0 @@ -BIN="./bin" -SRC=$(shell find . -name "*.go") - -ifeq (, $(shell which golangci-lint)) -$(warning "could not find golangci-lint in $(PATH), run: curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh") -endif - -ifeq (, $(shell which richgo)) -$(warning "could not find richgo in $(PATH), run: go get github.com/kyoh86/richgo") -endif - -.PHONY: fmt lint test install_deps clean - -default: all - -all: fmt test - -fmt: - $(info ******************** checking formatting ********************) - @test -z $(shell gofmt -l $(SRC)) || (gofmt -d $(SRC); exit 1) - -lint: - $(info ******************** running lint tools ********************) - golangci-lint run -v - -test: install_deps - $(info ******************** running tests ********************) - richgo test -v ./... - -install_deps: - $(info ******************** downloading dependencies ********************) - go get -v ./... - -clean: - rm -rf $(BIN) diff --git a/vendor/github.com/spf13/cobra/README.md b/vendor/github.com/spf13/cobra/README.md deleted file mode 100644 index 7adef14..0000000 --- a/vendor/github.com/spf13/cobra/README.md +++ /dev/null @@ -1,111 +0,0 @@ -![cobra logo](https://cloud.githubusercontent.com/assets/173412/10886352/ad566232-814f-11e5-9cd0-aa101788c117.png) - -Cobra is a library for creating powerful modern CLI applications. - -Cobra is used in many Go projects such as [Kubernetes](http://kubernetes.io/), -[Hugo](https://gohugo.io), and [Github CLI](https://github.com/cli/cli) to -name a few. [This list](./projects_using_cobra.md) contains a more extensive list of projects using Cobra. - -[![](https://img.shields.io/github/workflow/status/spf13/cobra/Test?longCache=tru&label=Test&logo=github%20actions&logoColor=fff)](https://github.com/spf13/cobra/actions?query=workflow%3ATest) -[![Go Reference](https://pkg.go.dev/badge/github.com/spf13/cobra.svg)](https://pkg.go.dev/github.com/spf13/cobra) -[![Go Report Card](https://goreportcard.com/badge/github.com/spf13/cobra)](https://goreportcard.com/report/github.com/spf13/cobra) -[![Slack](https://img.shields.io/badge/Slack-cobra-brightgreen)](https://gophers.slack.com/archives/CD3LP1199) - -# Overview - -Cobra is a library providing a simple interface to create powerful modern CLI -interfaces similar to git & go tools. - -Cobra provides: -* Easy subcommand-based CLIs: `app server`, `app fetch`, etc. -* Fully POSIX-compliant flags (including short & long versions) -* Nested subcommands -* Global, local and cascading flags -* Intelligent suggestions (`app srver`... did you mean `app server`?) -* Automatic help generation for commands and flags -* Automatic help flag recognition of `-h`, `--help`, etc. -* Automatically generated shell autocomplete for your application (bash, zsh, fish, powershell) -* Automatically generated man pages for your application -* Command aliases so you can change things without breaking them -* The flexibility to define your own help, usage, etc. -* Optional seamless integration with [viper](http://github.com/spf13/viper) for 12-factor apps - -# Concepts - -Cobra is built on a structure of commands, arguments & flags. - -**Commands** represent actions, **Args** are things and **Flags** are modifiers for those actions. - -The best applications read like sentences when used, and as a result, users -intuitively know how to interact with them. - -The pattern to follow is -`APPNAME VERB NOUN --ADJECTIVE.` - or -`APPNAME COMMAND ARG --FLAG` - -A few good real world examples may better illustrate this point. - -In the following example, 'server' is a command, and 'port' is a flag: - - hugo server --port=1313 - -In this command we are telling Git to clone the url bare. - - git clone URL --bare - -## Commands - -Command is the central point of the application. Each interaction that -the application supports will be contained in a Command. A command can -have children commands and optionally run an action. - -In the example above, 'server' is the command. - -[More about cobra.Command](https://pkg.go.dev/github.com/spf13/cobra#Command) - -## Flags - -A flag is a way to modify the behavior of a command. Cobra supports -fully POSIX-compliant flags as well as the Go [flag package](https://golang.org/pkg/flag/). -A Cobra command can define flags that persist through to children commands -and flags that are only available to that command. - -In the example above, 'port' is the flag. - -Flag functionality is provided by the [pflag -library](https://github.com/spf13/pflag), a fork of the flag standard library -which maintains the same interface while adding POSIX compliance. - -# Installing -Using Cobra is easy. First, use `go get` to install the latest version -of the library. - -``` -go get -u github.com/spf13/cobra@latest -``` - -Next, include Cobra in your application: - -```go -import "github.com/spf13/cobra" -``` - -# Usage -`cobra-cli` is a command line program to generate cobra applications and command files. -It will bootstrap your application scaffolding to rapidly -develop a Cobra-based application. It is the easiest way to incorporate Cobra into your application. - -It can be installed by running: - -``` -go install github.com/spf13/cobra-cli@latest -``` - -For complete details on using the Cobra-CLI generator, please read [The Cobra Generator README](https://github.com/spf13/cobra-cli/blob/master/README.md) - -For complete details on using the Cobra library, please read the [The Cobra User Guide](user_guide.md). - -# License - -Cobra is released under the Apache 2.0 license. See [LICENSE.txt](https://github.com/spf13/cobra/blob/master/LICENSE.txt) diff --git a/vendor/github.com/spf13/cobra/args.go b/vendor/github.com/spf13/cobra/args.go deleted file mode 100644 index 20a022b..0000000 --- a/vendor/github.com/spf13/cobra/args.go +++ /dev/null @@ -1,121 +0,0 @@ -package cobra - -import ( - "fmt" - "strings" -) - -type PositionalArgs func(cmd *Command, args []string) error - -// Legacy arg validation has the following behaviour: -// - root commands with no subcommands can take arbitrary arguments -// - root commands with subcommands will do subcommand validity checking -// - subcommands will always accept arbitrary arguments -func legacyArgs(cmd *Command, args []string) error { - // no subcommand, always take args - if !cmd.HasSubCommands() { - return nil - } - - // root command with subcommands, do subcommand checking. - if !cmd.HasParent() && len(args) > 0 { - return fmt.Errorf("unknown command %q for %q%s", args[0], cmd.CommandPath(), cmd.findSuggestions(args[0])) - } - return nil -} - -// NoArgs returns an error if any args are included. -func NoArgs(cmd *Command, args []string) error { - if len(args) > 0 { - return fmt.Errorf("unknown command %q for %q", args[0], cmd.CommandPath()) - } - return nil -} - -// OnlyValidArgs returns an error if any args are not in the list of ValidArgs. -func OnlyValidArgs(cmd *Command, args []string) error { - if len(cmd.ValidArgs) > 0 { - // Remove any description that may be included in ValidArgs. - // A description is following a tab character. - var validArgs []string - for _, v := range cmd.ValidArgs { - validArgs = append(validArgs, strings.Split(v, "\t")[0]) - } - - for _, v := range args { - if !stringInSlice(v, validArgs) { - return fmt.Errorf("invalid argument %q for %q%s", v, cmd.CommandPath(), cmd.findSuggestions(args[0])) - } - } - } - return nil -} - -// ArbitraryArgs never returns an error. -func ArbitraryArgs(cmd *Command, args []string) error { - return nil -} - -// MinimumNArgs returns an error if there is not at least N args. -func MinimumNArgs(n int) PositionalArgs { - return func(cmd *Command, args []string) error { - if len(args) < n { - return fmt.Errorf("requires at least %d arg(s), only received %d", n, len(args)) - } - return nil - } -} - -// MaximumNArgs returns an error if there are more than N args. -func MaximumNArgs(n int) PositionalArgs { - return func(cmd *Command, args []string) error { - if len(args) > n { - return fmt.Errorf("accepts at most %d arg(s), received %d", n, len(args)) - } - return nil - } -} - -// ExactArgs returns an error if there are not exactly n args. -func ExactArgs(n int) PositionalArgs { - return func(cmd *Command, args []string) error { - if len(args) != n { - return fmt.Errorf("accepts %d arg(s), received %d", n, len(args)) - } - return nil - } -} - -// ExactValidArgs returns an error if -// there are not exactly N positional args OR -// there are any positional args that are not in the `ValidArgs` field of `Command` -func ExactValidArgs(n int) PositionalArgs { - return func(cmd *Command, args []string) error { - if err := ExactArgs(n)(cmd, args); err != nil { - return err - } - return OnlyValidArgs(cmd, args) - } -} - -// RangeArgs returns an error if the number of args is not within the expected range. -func RangeArgs(min int, max int) PositionalArgs { - return func(cmd *Command, args []string) error { - if len(args) < min || len(args) > max { - return fmt.Errorf("accepts between %d and %d arg(s), received %d", min, max, len(args)) - } - return nil - } -} - -// MatchAll allows combining several PositionalArgs to work in concert. -func MatchAll(pargs ...PositionalArgs) PositionalArgs { - return func(cmd *Command, args []string) error { - for _, parg := range pargs { - if err := parg(cmd, args); err != nil { - return err - } - } - return nil - } -} diff --git a/vendor/github.com/spf13/cobra/bash_completions.go b/vendor/github.com/spf13/cobra/bash_completions.go deleted file mode 100644 index 6c360c5..0000000 --- a/vendor/github.com/spf13/cobra/bash_completions.go +++ /dev/null @@ -1,697 +0,0 @@ -package cobra - -import ( - "bytes" - "fmt" - "io" - "os" - "sort" - "strings" - - "github.com/spf13/pflag" -) - -// Annotations for Bash completion. -const ( - BashCompFilenameExt = "cobra_annotation_bash_completion_filename_extensions" - BashCompCustom = "cobra_annotation_bash_completion_custom" - BashCompOneRequiredFlag = "cobra_annotation_bash_completion_one_required_flag" - BashCompSubdirsInDir = "cobra_annotation_bash_completion_subdirs_in_dir" -) - -func writePreamble(buf io.StringWriter, name string) { - WriteStringAndCheck(buf, fmt.Sprintf("# bash completion for %-36s -*- shell-script -*-\n", name)) - WriteStringAndCheck(buf, fmt.Sprintf(` -__%[1]s_debug() -{ - if [[ -n ${BASH_COMP_DEBUG_FILE:-} ]]; then - echo "$*" >> "${BASH_COMP_DEBUG_FILE}" - fi -} - -# Homebrew on Macs have version 1.3 of bash-completion which doesn't include -# _init_completion. This is a very minimal version of that function. -__%[1]s_init_completion() -{ - COMPREPLY=() - _get_comp_words_by_ref "$@" cur prev words cword -} - -__%[1]s_index_of_word() -{ - local w word=$1 - shift - index=0 - for w in "$@"; do - [[ $w = "$word" ]] && return - index=$((index+1)) - done - index=-1 -} - -__%[1]s_contains_word() -{ - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done - return 1 -} - -__%[1]s_handle_go_custom_completion() -{ - __%[1]s_debug "${FUNCNAME[0]}: cur is ${cur}, words[*] is ${words[*]}, #words[@] is ${#words[@]}" - - local shellCompDirectiveError=%[3]d - local shellCompDirectiveNoSpace=%[4]d - local shellCompDirectiveNoFileComp=%[5]d - local shellCompDirectiveFilterFileExt=%[6]d - local shellCompDirectiveFilterDirs=%[7]d - - local out requestComp lastParam lastChar comp directive args - - # Prepare the command to request completions for the program. - # Calling ${words[0]} instead of directly %[1]s allows to handle aliases - args=("${words[@]:1}") - requestComp="${words[0]} %[2]s ${args[*]}" - - lastParam=${words[$((${#words[@]}-1))]} - lastChar=${lastParam:$((${#lastParam}-1)):1} - __%[1]s_debug "${FUNCNAME[0]}: lastParam ${lastParam}, lastChar ${lastChar}" - - if [ -z "${cur}" ] && [ "${lastChar}" != "=" ]; then - # If the last parameter is complete (there is a space following it) - # We add an extra empty parameter so we can indicate this to the go method. - __%[1]s_debug "${FUNCNAME[0]}: Adding extra empty parameter" - requestComp="${requestComp} \"\"" - fi - - __%[1]s_debug "${FUNCNAME[0]}: calling ${requestComp}" - # Use eval to handle any environment variables and such - out=$(eval "${requestComp}" 2>/dev/null) - - # Extract the directive integer at the very end of the output following a colon (:) - directive=${out##*:} - # Remove the directive - out=${out%%:*} - if [ "${directive}" = "${out}" ]; then - # There is not directive specified - directive=0 - fi - __%[1]s_debug "${FUNCNAME[0]}: the completion directive is: ${directive}" - __%[1]s_debug "${FUNCNAME[0]}: the completions are: ${out[*]}" - - if [ $((directive & shellCompDirectiveError)) -ne 0 ]; then - # Error code. No completion. - __%[1]s_debug "${FUNCNAME[0]}: received error from custom completion go code" - return - else - if [ $((directive & shellCompDirectiveNoSpace)) -ne 0 ]; then - if [[ $(type -t compopt) = "builtin" ]]; then - __%[1]s_debug "${FUNCNAME[0]}: activating no space" - compopt -o nospace - fi - fi - if [ $((directive & shellCompDirectiveNoFileComp)) -ne 0 ]; then - if [[ $(type -t compopt) = "builtin" ]]; then - __%[1]s_debug "${FUNCNAME[0]}: activating no file completion" - compopt +o default - fi - fi - fi - - if [ $((directive & shellCompDirectiveFilterFileExt)) -ne 0 ]; then - # File extension filtering - local fullFilter filter filteringCmd - # Do not use quotes around the $out variable or else newline - # characters will be kept. - for filter in ${out[*]}; do - fullFilter+="$filter|" - done - - filteringCmd="_filedir $fullFilter" - __%[1]s_debug "File filtering command: $filteringCmd" - $filteringCmd - elif [ $((directive & shellCompDirectiveFilterDirs)) -ne 0 ]; then - # File completion for directories only - local subdir - # Use printf to strip any trailing newline - subdir=$(printf "%%s" "${out[0]}") - if [ -n "$subdir" ]; then - __%[1]s_debug "Listing directories in $subdir" - __%[1]s_handle_subdirs_in_dir_flag "$subdir" - else - __%[1]s_debug "Listing directories in ." - _filedir -d - fi - else - while IFS='' read -r comp; do - COMPREPLY+=("$comp") - done < <(compgen -W "${out[*]}" -- "$cur") - fi -} - -__%[1]s_handle_reply() -{ - __%[1]s_debug "${FUNCNAME[0]}" - local comp - case $cur in - -*) - if [[ $(type -t compopt) = "builtin" ]]; then - compopt -o nospace - fi - local allflags - if [ ${#must_have_one_flag[@]} -ne 0 ]; then - allflags=("${must_have_one_flag[@]}") - else - allflags=("${flags[*]} ${two_word_flags[*]}") - fi - while IFS='' read -r comp; do - COMPREPLY+=("$comp") - done < <(compgen -W "${allflags[*]}" -- "$cur") - if [[ $(type -t compopt) = "builtin" ]]; then - [[ "${COMPREPLY[0]}" == *= ]] || compopt +o nospace - fi - - # complete after --flag=abc - if [[ $cur == *=* ]]; then - if [[ $(type -t compopt) = "builtin" ]]; then - compopt +o nospace - fi - - local index flag - flag="${cur%%=*}" - __%[1]s_index_of_word "${flag}" "${flags_with_completion[@]}" - COMPREPLY=() - if [[ ${index} -ge 0 ]]; then - PREFIX="" - cur="${cur#*=}" - ${flags_completion[${index}]} - if [ -n "${ZSH_VERSION:-}" ]; then - # zsh completion needs --flag= prefix - eval "COMPREPLY=( \"\${COMPREPLY[@]/#/${flag}=}\" )" - fi - fi - fi - - if [[ -z "${flag_parsing_disabled}" ]]; then - # If flag parsing is enabled, we have completed the flags and can return. - # If flag parsing is disabled, we may not know all (or any) of the flags, so we fallthrough - # to possibly call handle_go_custom_completion. - return 0; - fi - ;; - esac - - # check if we are handling a flag with special work handling - local index - __%[1]s_index_of_word "${prev}" "${flags_with_completion[@]}" - if [[ ${index} -ge 0 ]]; then - ${flags_completion[${index}]} - return - fi - - # we are parsing a flag and don't have a special handler, no completion - if [[ ${cur} != "${words[cword]}" ]]; then - return - fi - - local completions - completions=("${commands[@]}") - if [[ ${#must_have_one_noun[@]} -ne 0 ]]; then - completions+=("${must_have_one_noun[@]}") - elif [[ -n "${has_completion_function}" ]]; then - # if a go completion function is provided, defer to that function - __%[1]s_handle_go_custom_completion - fi - if [[ ${#must_have_one_flag[@]} -ne 0 ]]; then - completions+=("${must_have_one_flag[@]}") - fi - while IFS='' read -r comp; do - COMPREPLY+=("$comp") - done < <(compgen -W "${completions[*]}" -- "$cur") - - if [[ ${#COMPREPLY[@]} -eq 0 && ${#noun_aliases[@]} -gt 0 && ${#must_have_one_noun[@]} -ne 0 ]]; then - while IFS='' read -r comp; do - COMPREPLY+=("$comp") - done < <(compgen -W "${noun_aliases[*]}" -- "$cur") - fi - - if [[ ${#COMPREPLY[@]} -eq 0 ]]; then - if declare -F __%[1]s_custom_func >/dev/null; then - # try command name qualified custom func - __%[1]s_custom_func - else - # otherwise fall back to unqualified for compatibility - declare -F __custom_func >/dev/null && __custom_func - fi - fi - - # available in bash-completion >= 2, not always present on macOS - if declare -F __ltrim_colon_completions >/dev/null; then - __ltrim_colon_completions "$cur" - fi - - # If there is only 1 completion and it is a flag with an = it will be completed - # but we don't want a space after the = - if [[ "${#COMPREPLY[@]}" -eq "1" ]] && [[ $(type -t compopt) = "builtin" ]] && [[ "${COMPREPLY[0]}" == --*= ]]; then - compopt -o nospace - fi -} - -# The arguments should be in the form "ext1|ext2|extn" -__%[1]s_handle_filename_extension_flag() -{ - local ext="$1" - _filedir "@(${ext})" -} - -__%[1]s_handle_subdirs_in_dir_flag() -{ - local dir="$1" - pushd "${dir}" >/dev/null 2>&1 && _filedir -d && popd >/dev/null 2>&1 || return -} - -__%[1]s_handle_flag() -{ - __%[1]s_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}" - - # if a command required a flag, and we found it, unset must_have_one_flag() - local flagname=${words[c]} - local flagvalue="" - # if the word contained an = - if [[ ${words[c]} == *"="* ]]; then - flagvalue=${flagname#*=} # take in as flagvalue after the = - flagname=${flagname%%=*} # strip everything after the = - flagname="${flagname}=" # but put the = back - fi - __%[1]s_debug "${FUNCNAME[0]}: looking for ${flagname}" - if __%[1]s_contains_word "${flagname}" "${must_have_one_flag[@]}"; then - must_have_one_flag=() - fi - - # if you set a flag which only applies to this command, don't show subcommands - if __%[1]s_contains_word "${flagname}" "${local_nonpersistent_flags[@]}"; then - commands=() - fi - - # keep flag value with flagname as flaghash - # flaghash variable is an associative array which is only supported in bash > 3. - if [[ -z "${BASH_VERSION:-}" || "${BASH_VERSINFO[0]:-}" -gt 3 ]]; then - if [ -n "${flagvalue}" ] ; then - flaghash[${flagname}]=${flagvalue} - elif [ -n "${words[ $((c+1)) ]}" ] ; then - flaghash[${flagname}]=${words[ $((c+1)) ]} - else - flaghash[${flagname}]="true" # pad "true" for bool flag - fi - fi - - # skip the argument to a two word flag - if [[ ${words[c]} != *"="* ]] && __%[1]s_contains_word "${words[c]}" "${two_word_flags[@]}"; then - __%[1]s_debug "${FUNCNAME[0]}: found a flag ${words[c]}, skip the next argument" - c=$((c+1)) - # if we are looking for a flags value, don't show commands - if [[ $c -eq $cword ]]; then - commands=() - fi - fi - - c=$((c+1)) - -} - -__%[1]s_handle_noun() -{ - __%[1]s_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}" - - if __%[1]s_contains_word "${words[c]}" "${must_have_one_noun[@]}"; then - must_have_one_noun=() - elif __%[1]s_contains_word "${words[c]}" "${noun_aliases[@]}"; then - must_have_one_noun=() - fi - - nouns+=("${words[c]}") - c=$((c+1)) -} - -__%[1]s_handle_command() -{ - __%[1]s_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}" - - local next_command - if [[ -n ${last_command} ]]; then - next_command="_${last_command}_${words[c]//:/__}" - else - if [[ $c -eq 0 ]]; then - next_command="_%[1]s_root_command" - else - next_command="_${words[c]//:/__}" - fi - fi - c=$((c+1)) - __%[1]s_debug "${FUNCNAME[0]}: looking for ${next_command}" - declare -F "$next_command" >/dev/null && $next_command -} - -__%[1]s_handle_word() -{ - if [[ $c -ge $cword ]]; then - __%[1]s_handle_reply - return - fi - __%[1]s_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}" - if [[ "${words[c]}" == -* ]]; then - __%[1]s_handle_flag - elif __%[1]s_contains_word "${words[c]}" "${commands[@]}"; then - __%[1]s_handle_command - elif [[ $c -eq 0 ]]; then - __%[1]s_handle_command - elif __%[1]s_contains_word "${words[c]}" "${command_aliases[@]}"; then - # aliashash variable is an associative array which is only supported in bash > 3. - if [[ -z "${BASH_VERSION:-}" || "${BASH_VERSINFO[0]:-}" -gt 3 ]]; then - words[c]=${aliashash[${words[c]}]} - __%[1]s_handle_command - else - __%[1]s_handle_noun - fi - else - __%[1]s_handle_noun - fi - __%[1]s_handle_word -} - -`, name, ShellCompNoDescRequestCmd, - ShellCompDirectiveError, ShellCompDirectiveNoSpace, ShellCompDirectiveNoFileComp, - ShellCompDirectiveFilterFileExt, ShellCompDirectiveFilterDirs)) -} - -func writePostscript(buf io.StringWriter, name string) { - name = strings.Replace(name, ":", "__", -1) - WriteStringAndCheck(buf, fmt.Sprintf("__start_%s()\n", name)) - WriteStringAndCheck(buf, fmt.Sprintf(`{ - local cur prev words cword split - declare -A flaghash 2>/dev/null || : - declare -A aliashash 2>/dev/null || : - if declare -F _init_completion >/dev/null 2>&1; then - _init_completion -s || return - else - __%[1]s_init_completion -n "=" || return - fi - - local c=0 - local flag_parsing_disabled= - local flags=() - local two_word_flags=() - local local_nonpersistent_flags=() - local flags_with_completion=() - local flags_completion=() - local commands=("%[1]s") - local command_aliases=() - local must_have_one_flag=() - local must_have_one_noun=() - local has_completion_function="" - local last_command="" - local nouns=() - local noun_aliases=() - - __%[1]s_handle_word -} - -`, name)) - WriteStringAndCheck(buf, fmt.Sprintf(`if [[ $(type -t compopt) = "builtin" ]]; then - complete -o default -F __start_%s %s -else - complete -o default -o nospace -F __start_%s %s -fi - -`, name, name, name, name)) - WriteStringAndCheck(buf, "# ex: ts=4 sw=4 et filetype=sh\n") -} - -func writeCommands(buf io.StringWriter, cmd *Command) { - WriteStringAndCheck(buf, " commands=()\n") - for _, c := range cmd.Commands() { - if !c.IsAvailableCommand() && c != cmd.helpCommand { - continue - } - WriteStringAndCheck(buf, fmt.Sprintf(" commands+=(%q)\n", c.Name())) - writeCmdAliases(buf, c) - } - WriteStringAndCheck(buf, "\n") -} - -func writeFlagHandler(buf io.StringWriter, name string, annotations map[string][]string, cmd *Command) { - for key, value := range annotations { - switch key { - case BashCompFilenameExt: - WriteStringAndCheck(buf, fmt.Sprintf(" flags_with_completion+=(%q)\n", name)) - - var ext string - if len(value) > 0 { - ext = fmt.Sprintf("__%s_handle_filename_extension_flag ", cmd.Root().Name()) + strings.Join(value, "|") - } else { - ext = "_filedir" - } - WriteStringAndCheck(buf, fmt.Sprintf(" flags_completion+=(%q)\n", ext)) - case BashCompCustom: - WriteStringAndCheck(buf, fmt.Sprintf(" flags_with_completion+=(%q)\n", name)) - - if len(value) > 0 { - handlers := strings.Join(value, "; ") - WriteStringAndCheck(buf, fmt.Sprintf(" flags_completion+=(%q)\n", handlers)) - } else { - WriteStringAndCheck(buf, " flags_completion+=(:)\n") - } - case BashCompSubdirsInDir: - WriteStringAndCheck(buf, fmt.Sprintf(" flags_with_completion+=(%q)\n", name)) - - var ext string - if len(value) == 1 { - ext = fmt.Sprintf("__%s_handle_subdirs_in_dir_flag ", cmd.Root().Name()) + value[0] - } else { - ext = "_filedir -d" - } - WriteStringAndCheck(buf, fmt.Sprintf(" flags_completion+=(%q)\n", ext)) - } - } -} - -const cbn = "\")\n" - -func writeShortFlag(buf io.StringWriter, flag *pflag.Flag, cmd *Command) { - name := flag.Shorthand - format := " " - if len(flag.NoOptDefVal) == 0 { - format += "two_word_" - } - format += "flags+=(\"-%s" + cbn - WriteStringAndCheck(buf, fmt.Sprintf(format, name)) - writeFlagHandler(buf, "-"+name, flag.Annotations, cmd) -} - -func writeFlag(buf io.StringWriter, flag *pflag.Flag, cmd *Command) { - name := flag.Name - format := " flags+=(\"--%s" - if len(flag.NoOptDefVal) == 0 { - format += "=" - } - format += cbn - WriteStringAndCheck(buf, fmt.Sprintf(format, name)) - if len(flag.NoOptDefVal) == 0 { - format = " two_word_flags+=(\"--%s" + cbn - WriteStringAndCheck(buf, fmt.Sprintf(format, name)) - } - writeFlagHandler(buf, "--"+name, flag.Annotations, cmd) -} - -func writeLocalNonPersistentFlag(buf io.StringWriter, flag *pflag.Flag) { - name := flag.Name - format := " local_nonpersistent_flags+=(\"--%[1]s" + cbn - if len(flag.NoOptDefVal) == 0 { - format += " local_nonpersistent_flags+=(\"--%[1]s=" + cbn - } - WriteStringAndCheck(buf, fmt.Sprintf(format, name)) - if len(flag.Shorthand) > 0 { - WriteStringAndCheck(buf, fmt.Sprintf(" local_nonpersistent_flags+=(\"-%s\")\n", flag.Shorthand)) - } -} - -// Setup annotations for go completions for registered flags -func prepareCustomAnnotationsForFlags(cmd *Command) { - flagCompletionMutex.RLock() - defer flagCompletionMutex.RUnlock() - for flag := range flagCompletionFunctions { - // Make sure the completion script calls the __*_go_custom_completion function for - // every registered flag. We need to do this here (and not when the flag was registered - // for completion) so that we can know the root command name for the prefix - // of ___go_custom_completion - if flag.Annotations == nil { - flag.Annotations = map[string][]string{} - } - flag.Annotations[BashCompCustom] = []string{fmt.Sprintf("__%[1]s_handle_go_custom_completion", cmd.Root().Name())} - } -} - -func writeFlags(buf io.StringWriter, cmd *Command) { - prepareCustomAnnotationsForFlags(cmd) - WriteStringAndCheck(buf, ` flags=() - two_word_flags=() - local_nonpersistent_flags=() - flags_with_completion=() - flags_completion=() - -`) - - if cmd.DisableFlagParsing { - WriteStringAndCheck(buf, " flag_parsing_disabled=1\n") - } - - localNonPersistentFlags := cmd.LocalNonPersistentFlags() - cmd.NonInheritedFlags().VisitAll(func(flag *pflag.Flag) { - if nonCompletableFlag(flag) { - return - } - writeFlag(buf, flag, cmd) - if len(flag.Shorthand) > 0 { - writeShortFlag(buf, flag, cmd) - } - // localNonPersistentFlags are used to stop the completion of subcommands when one is set - // if TraverseChildren is true we should allow to complete subcommands - if localNonPersistentFlags.Lookup(flag.Name) != nil && !cmd.Root().TraverseChildren { - writeLocalNonPersistentFlag(buf, flag) - } - }) - cmd.InheritedFlags().VisitAll(func(flag *pflag.Flag) { - if nonCompletableFlag(flag) { - return - } - writeFlag(buf, flag, cmd) - if len(flag.Shorthand) > 0 { - writeShortFlag(buf, flag, cmd) - } - }) - - WriteStringAndCheck(buf, "\n") -} - -func writeRequiredFlag(buf io.StringWriter, cmd *Command) { - WriteStringAndCheck(buf, " must_have_one_flag=()\n") - flags := cmd.NonInheritedFlags() - flags.VisitAll(func(flag *pflag.Flag) { - if nonCompletableFlag(flag) { - return - } - for key := range flag.Annotations { - switch key { - case BashCompOneRequiredFlag: - format := " must_have_one_flag+=(\"--%s" - if flag.Value.Type() != "bool" { - format += "=" - } - format += cbn - WriteStringAndCheck(buf, fmt.Sprintf(format, flag.Name)) - - if len(flag.Shorthand) > 0 { - WriteStringAndCheck(buf, fmt.Sprintf(" must_have_one_flag+=(\"-%s"+cbn, flag.Shorthand)) - } - } - } - }) -} - -func writeRequiredNouns(buf io.StringWriter, cmd *Command) { - WriteStringAndCheck(buf, " must_have_one_noun=()\n") - sort.Strings(cmd.ValidArgs) - for _, value := range cmd.ValidArgs { - // Remove any description that may be included following a tab character. - // Descriptions are not supported by bash completion. - value = strings.Split(value, "\t")[0] - WriteStringAndCheck(buf, fmt.Sprintf(" must_have_one_noun+=(%q)\n", value)) - } - if cmd.ValidArgsFunction != nil { - WriteStringAndCheck(buf, " has_completion_function=1\n") - } -} - -func writeCmdAliases(buf io.StringWriter, cmd *Command) { - if len(cmd.Aliases) == 0 { - return - } - - sort.Strings(cmd.Aliases) - - WriteStringAndCheck(buf, fmt.Sprint(` if [[ -z "${BASH_VERSION:-}" || "${BASH_VERSINFO[0]:-}" -gt 3 ]]; then`, "\n")) - for _, value := range cmd.Aliases { - WriteStringAndCheck(buf, fmt.Sprintf(" command_aliases+=(%q)\n", value)) - WriteStringAndCheck(buf, fmt.Sprintf(" aliashash[%q]=%q\n", value, cmd.Name())) - } - WriteStringAndCheck(buf, ` fi`) - WriteStringAndCheck(buf, "\n") -} -func writeArgAliases(buf io.StringWriter, cmd *Command) { - WriteStringAndCheck(buf, " noun_aliases=()\n") - sort.Strings(cmd.ArgAliases) - for _, value := range cmd.ArgAliases { - WriteStringAndCheck(buf, fmt.Sprintf(" noun_aliases+=(%q)\n", value)) - } -} - -func gen(buf io.StringWriter, cmd *Command) { - for _, c := range cmd.Commands() { - if !c.IsAvailableCommand() && c != cmd.helpCommand { - continue - } - gen(buf, c) - } - commandName := cmd.CommandPath() - commandName = strings.Replace(commandName, " ", "_", -1) - commandName = strings.Replace(commandName, ":", "__", -1) - - if cmd.Root() == cmd { - WriteStringAndCheck(buf, fmt.Sprintf("_%s_root_command()\n{\n", commandName)) - } else { - WriteStringAndCheck(buf, fmt.Sprintf("_%s()\n{\n", commandName)) - } - - WriteStringAndCheck(buf, fmt.Sprintf(" last_command=%q\n", commandName)) - WriteStringAndCheck(buf, "\n") - WriteStringAndCheck(buf, " command_aliases=()\n") - WriteStringAndCheck(buf, "\n") - - writeCommands(buf, cmd) - writeFlags(buf, cmd) - writeRequiredFlag(buf, cmd) - writeRequiredNouns(buf, cmd) - writeArgAliases(buf, cmd) - WriteStringAndCheck(buf, "}\n\n") -} - -// GenBashCompletion generates bash completion file and writes to the passed writer. -func (c *Command) GenBashCompletion(w io.Writer) error { - buf := new(bytes.Buffer) - writePreamble(buf, c.Name()) - if len(c.BashCompletionFunction) > 0 { - buf.WriteString(c.BashCompletionFunction + "\n") - } - gen(buf, c) - writePostscript(buf, c.Name()) - - _, err := buf.WriteTo(w) - return err -} - -func nonCompletableFlag(flag *pflag.Flag) bool { - return flag.Hidden || len(flag.Deprecated) > 0 -} - -// GenBashCompletionFile generates bash completion file. -func (c *Command) GenBashCompletionFile(filename string) error { - outFile, err := os.Create(filename) - if err != nil { - return err - } - defer outFile.Close() - - return c.GenBashCompletion(outFile) -} diff --git a/vendor/github.com/spf13/cobra/bash_completions.md b/vendor/github.com/spf13/cobra/bash_completions.md deleted file mode 100644 index 52919b2..0000000 --- a/vendor/github.com/spf13/cobra/bash_completions.md +++ /dev/null @@ -1,93 +0,0 @@ -# Generating Bash Completions For Your cobra.Command - -Please refer to [Shell Completions](shell_completions.md) for details. - -## Bash legacy dynamic completions - -For backward compatibility, Cobra still supports its legacy dynamic completion solution (described below). Unlike the `ValidArgsFunction` solution, the legacy solution will only work for Bash shell-completion and not for other shells. This legacy solution can be used along-side `ValidArgsFunction` and `RegisterFlagCompletionFunc()`, as long as both solutions are not used for the same command. This provides a path to gradually migrate from the legacy solution to the new solution. - -**Note**: Cobra's default `completion` command uses bash completion V2. If you are currently using Cobra's legacy dynamic completion solution, you should not use the default `completion` command but continue using your own. - -The legacy solution allows you to inject bash functions into the bash completion script. Those bash functions are responsible for providing the completion choices for your own completions. - -Some code that works in kubernetes: - -```bash -const ( - bash_completion_func = `__kubectl_parse_get() -{ - local kubectl_output out - if kubectl_output=$(kubectl get --no-headers "$1" 2>/dev/null); then - out=($(echo "${kubectl_output}" | awk '{print $1}')) - COMPREPLY=( $( compgen -W "${out[*]}" -- "$cur" ) ) - fi -} - -__kubectl_get_resource() -{ - if [[ ${#nouns[@]} -eq 0 ]]; then - return 1 - fi - __kubectl_parse_get ${nouns[${#nouns[@]} -1]} - if [[ $? -eq 0 ]]; then - return 0 - fi -} - -__kubectl_custom_func() { - case ${last_command} in - kubectl_get | kubectl_describe | kubectl_delete | kubectl_stop) - __kubectl_get_resource - return - ;; - *) - ;; - esac -} -`) -``` - -And then I set that in my command definition: - -```go -cmds := &cobra.Command{ - Use: "kubectl", - Short: "kubectl controls the Kubernetes cluster manager", - Long: `kubectl controls the Kubernetes cluster manager. - -Find more information at https://github.com/GoogleCloudPlatform/kubernetes.`, - Run: runHelp, - BashCompletionFunction: bash_completion_func, -} -``` - -The `BashCompletionFunction` option is really only valid/useful on the root command. Doing the above will cause `__kubectl_custom_func()` (`___custom_func()`) to be called when the built in processor was unable to find a solution. In the case of kubernetes a valid command might look something like `kubectl get pod [mypod]`. If you type `kubectl get pod [tab][tab]` the `__kubectl_customc_func()` will run because the cobra.Command only understood "kubectl" and "get." `__kubectl_custom_func()` will see that the cobra.Command is "kubectl_get" and will thus call another helper `__kubectl_get_resource()`. `__kubectl_get_resource` will look at the 'nouns' collected. In our example the only noun will be `pod`. So it will call `__kubectl_parse_get pod`. `__kubectl_parse_get` will actually call out to kubernetes and get any pods. It will then set `COMPREPLY` to valid pods! - -Similarly, for flags: - -```go - annotation := make(map[string][]string) - annotation[cobra.BashCompCustom] = []string{"__kubectl_get_namespaces"} - - flag := &pflag.Flag{ - Name: "namespace", - Usage: usage, - Annotations: annotation, - } - cmd.Flags().AddFlag(flag) -``` - -In addition add the `__kubectl_get_namespaces` implementation in the `BashCompletionFunction` -value, e.g.: - -```bash -__kubectl_get_namespaces() -{ - local template - template="{{ range .items }}{{ .metadata.name }} {{ end }}" - local kubectl_out - if kubectl_out=$(kubectl get -o template --template="${template}" namespace 2>/dev/null); then - COMPREPLY=( $( compgen -W "${kubectl_out}[*]" -- "$cur" ) ) - fi -} -``` diff --git a/vendor/github.com/spf13/cobra/bash_completionsV2.go b/vendor/github.com/spf13/cobra/bash_completionsV2.go deleted file mode 100644 index 82d26c1..0000000 --- a/vendor/github.com/spf13/cobra/bash_completionsV2.go +++ /dev/null @@ -1,331 +0,0 @@ -package cobra - -import ( - "bytes" - "fmt" - "io" - "os" -) - -func (c *Command) genBashCompletion(w io.Writer, includeDesc bool) error { - buf := new(bytes.Buffer) - genBashComp(buf, c.Name(), includeDesc) - _, err := buf.WriteTo(w) - return err -} - -func genBashComp(buf io.StringWriter, name string, includeDesc bool) { - compCmd := ShellCompRequestCmd - if !includeDesc { - compCmd = ShellCompNoDescRequestCmd - } - - WriteStringAndCheck(buf, fmt.Sprintf(`# bash completion V2 for %-36[1]s -*- shell-script -*- - -__%[1]s_debug() -{ - if [[ -n ${BASH_COMP_DEBUG_FILE:-} ]]; then - echo "$*" >> "${BASH_COMP_DEBUG_FILE}" - fi -} - -# Macs have bash3 for which the bash-completion package doesn't include -# _init_completion. This is a minimal version of that function. -__%[1]s_init_completion() -{ - COMPREPLY=() - _get_comp_words_by_ref "$@" cur prev words cword -} - -# This function calls the %[1]s program to obtain the completion -# results and the directive. It fills the 'out' and 'directive' vars. -__%[1]s_get_completion_results() { - local requestComp lastParam lastChar args - - # Prepare the command to request completions for the program. - # Calling ${words[0]} instead of directly %[1]s allows to handle aliases - args=("${words[@]:1}") - requestComp="${words[0]} %[2]s ${args[*]}" - - lastParam=${words[$((${#words[@]}-1))]} - lastChar=${lastParam:$((${#lastParam}-1)):1} - __%[1]s_debug "lastParam ${lastParam}, lastChar ${lastChar}" - - if [ -z "${cur}" ] && [ "${lastChar}" != "=" ]; then - # If the last parameter is complete (there is a space following it) - # We add an extra empty parameter so we can indicate this to the go method. - __%[1]s_debug "Adding extra empty parameter" - requestComp="${requestComp} ''" - fi - - # When completing a flag with an = (e.g., %[1]s -n=) - # bash focuses on the part after the =, so we need to remove - # the flag part from $cur - if [[ "${cur}" == -*=* ]]; then - cur="${cur#*=}" - fi - - __%[1]s_debug "Calling ${requestComp}" - # Use eval to handle any environment variables and such - out=$(eval "${requestComp}" 2>/dev/null) - - # Extract the directive integer at the very end of the output following a colon (:) - directive=${out##*:} - # Remove the directive - out=${out%%:*} - if [ "${directive}" = "${out}" ]; then - # There is not directive specified - directive=0 - fi - __%[1]s_debug "The completion directive is: ${directive}" - __%[1]s_debug "The completions are: ${out[*]}" -} - -__%[1]s_process_completion_results() { - local shellCompDirectiveError=%[3]d - local shellCompDirectiveNoSpace=%[4]d - local shellCompDirectiveNoFileComp=%[5]d - local shellCompDirectiveFilterFileExt=%[6]d - local shellCompDirectiveFilterDirs=%[7]d - - if [ $((directive & shellCompDirectiveError)) -ne 0 ]; then - # Error code. No completion. - __%[1]s_debug "Received error from custom completion go code" - return - else - if [ $((directive & shellCompDirectiveNoSpace)) -ne 0 ]; then - if [[ $(type -t compopt) = "builtin" ]]; then - __%[1]s_debug "Activating no space" - compopt -o nospace - else - __%[1]s_debug "No space directive not supported in this version of bash" - fi - fi - if [ $((directive & shellCompDirectiveNoFileComp)) -ne 0 ]; then - if [[ $(type -t compopt) = "builtin" ]]; then - __%[1]s_debug "Activating no file completion" - compopt +o default - else - __%[1]s_debug "No file completion directive not supported in this version of bash" - fi - fi - fi - - if [ $((directive & shellCompDirectiveFilterFileExt)) -ne 0 ]; then - # File extension filtering - local fullFilter filter filteringCmd - - # Do not use quotes around the $out variable or else newline - # characters will be kept. - for filter in ${out[*]}; do - fullFilter+="$filter|" - done - - filteringCmd="_filedir $fullFilter" - __%[1]s_debug "File filtering command: $filteringCmd" - $filteringCmd - elif [ $((directive & shellCompDirectiveFilterDirs)) -ne 0 ]; then - # File completion for directories only - - # Use printf to strip any trailing newline - local subdir - subdir=$(printf "%%s" "${out[0]}") - if [ -n "$subdir" ]; then - __%[1]s_debug "Listing directories in $subdir" - pushd "$subdir" >/dev/null 2>&1 && _filedir -d && popd >/dev/null 2>&1 || return - else - __%[1]s_debug "Listing directories in ." - _filedir -d - fi - else - __%[1]s_handle_completion_types - fi - - __%[1]s_handle_special_char "$cur" : - __%[1]s_handle_special_char "$cur" = -} - -__%[1]s_handle_completion_types() { - __%[1]s_debug "__%[1]s_handle_completion_types: COMP_TYPE is $COMP_TYPE" - - case $COMP_TYPE in - 37|42) - # Type: menu-complete/menu-complete-backward and insert-completions - # If the user requested inserting one completion at a time, or all - # completions at once on the command-line we must remove the descriptions. - # https://github.com/spf13/cobra/issues/1508 - local tab comp - tab=$(printf '\t') - while IFS='' read -r comp; do - # Strip any description - comp=${comp%%%%$tab*} - # Only consider the completions that match - comp=$(compgen -W "$comp" -- "$cur") - if [ -n "$comp" ]; then - COMPREPLY+=("$comp") - fi - done < <(printf "%%s\n" "${out[@]}") - ;; - - *) - # Type: complete (normal completion) - __%[1]s_handle_standard_completion_case - ;; - esac -} - -__%[1]s_handle_standard_completion_case() { - local tab comp - tab=$(printf '\t') - - local longest=0 - # Look for the longest completion so that we can format things nicely - while IFS='' read -r comp; do - # Strip any description before checking the length - comp=${comp%%%%$tab*} - # Only consider the completions that match - comp=$(compgen -W "$comp" -- "$cur") - if ((${#comp}>longest)); then - longest=${#comp} - fi - done < <(printf "%%s\n" "${out[@]}") - - local completions=() - while IFS='' read -r comp; do - if [ -z "$comp" ]; then - continue - fi - - __%[1]s_debug "Original comp: $comp" - comp="$(__%[1]s_format_comp_descriptions "$comp" "$longest")" - __%[1]s_debug "Final comp: $comp" - completions+=("$comp") - done < <(printf "%%s\n" "${out[@]}") - - while IFS='' read -r comp; do - COMPREPLY+=("$comp") - done < <(compgen -W "${completions[*]}" -- "$cur") - - # If there is a single completion left, remove the description text - if [ ${#COMPREPLY[*]} -eq 1 ]; then - __%[1]s_debug "COMPREPLY[0]: ${COMPREPLY[0]}" - comp="${COMPREPLY[0]%%%% *}" - __%[1]s_debug "Removed description from single completion, which is now: ${comp}" - COMPREPLY=() - COMPREPLY+=("$comp") - fi -} - -__%[1]s_handle_special_char() -{ - local comp="$1" - local char=$2 - if [[ "$comp" == *${char}* && "$COMP_WORDBREAKS" == *${char}* ]]; then - local word=${comp%%"${comp##*${char}}"} - local idx=${#COMPREPLY[*]} - while [[ $((--idx)) -ge 0 ]]; do - COMPREPLY[$idx]=${COMPREPLY[$idx]#"$word"} - done - fi -} - -__%[1]s_format_comp_descriptions() -{ - local tab - tab=$(printf '\t') - local comp="$1" - local longest=$2 - - # Properly format the description string which follows a tab character if there is one - if [[ "$comp" == *$tab* ]]; then - desc=${comp#*$tab} - comp=${comp%%%%$tab*} - - # $COLUMNS stores the current shell width. - # Remove an extra 4 because we add 2 spaces and 2 parentheses. - maxdesclength=$(( COLUMNS - longest - 4 )) - - # Make sure we can fit a description of at least 8 characters - # if we are to align the descriptions. - if [[ $maxdesclength -gt 8 ]]; then - # Add the proper number of spaces to align the descriptions - for ((i = ${#comp} ; i < longest ; i++)); do - comp+=" " - done - else - # Don't pad the descriptions so we can fit more text after the completion - maxdesclength=$(( COLUMNS - ${#comp} - 4 )) - fi - - # If there is enough space for any description text, - # truncate the descriptions that are too long for the shell width - if [ $maxdesclength -gt 0 ]; then - if [ ${#desc} -gt $maxdesclength ]; then - desc=${desc:0:$(( maxdesclength - 1 ))} - desc+="…" - fi - comp+=" ($desc)" - fi - fi - - # Must use printf to escape all special characters - printf "%%q" "${comp}" -} - -__start_%[1]s() -{ - local cur prev words cword split - - COMPREPLY=() - - # Call _init_completion from the bash-completion package - # to prepare the arguments properly - if declare -F _init_completion >/dev/null 2>&1; then - _init_completion -n "=:" || return - else - __%[1]s_init_completion -n "=:" || return - fi - - __%[1]s_debug - __%[1]s_debug "========= starting completion logic ==========" - __%[1]s_debug "cur is ${cur}, words[*] is ${words[*]}, #words[@] is ${#words[@]}, cword is $cword" - - # The user could have moved the cursor backwards on the command-line. - # We need to trigger completion from the $cword location, so we need - # to truncate the command-line ($words) up to the $cword location. - words=("${words[@]:0:$cword+1}") - __%[1]s_debug "Truncated words[*]: ${words[*]}," - - local out directive - __%[1]s_get_completion_results - __%[1]s_process_completion_results -} - -if [[ $(type -t compopt) = "builtin" ]]; then - complete -o default -F __start_%[1]s %[1]s -else - complete -o default -o nospace -F __start_%[1]s %[1]s -fi - -# ex: ts=4 sw=4 et filetype=sh -`, name, compCmd, - ShellCompDirectiveError, ShellCompDirectiveNoSpace, ShellCompDirectiveNoFileComp, - ShellCompDirectiveFilterFileExt, ShellCompDirectiveFilterDirs)) -} - -// GenBashCompletionFileV2 generates Bash completion version 2. -func (c *Command) GenBashCompletionFileV2(filename string, includeDesc bool) error { - outFile, err := os.Create(filename) - if err != nil { - return err - } - defer outFile.Close() - - return c.GenBashCompletionV2(outFile, includeDesc) -} - -// GenBashCompletionV2 generates Bash completion file version 2 -// and writes it to the passed writer. -func (c *Command) GenBashCompletionV2(w io.Writer, includeDesc bool) error { - return c.genBashCompletion(w, includeDesc) -} diff --git a/vendor/github.com/spf13/cobra/cobra.go b/vendor/github.com/spf13/cobra/cobra.go deleted file mode 100644 index d6cbfd7..0000000 --- a/vendor/github.com/spf13/cobra/cobra.go +++ /dev/null @@ -1,222 +0,0 @@ -// Copyright © 2013 Steve Francia . -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Commands similar to git, go tools and other modern CLI tools -// inspired by go, go-Commander, gh and subcommand - -package cobra - -import ( - "fmt" - "io" - "os" - "reflect" - "strconv" - "strings" - "text/template" - "time" - "unicode" -) - -var templateFuncs = template.FuncMap{ - "trim": strings.TrimSpace, - "trimRightSpace": trimRightSpace, - "trimTrailingWhitespaces": trimRightSpace, - "appendIfNotPresent": appendIfNotPresent, - "rpad": rpad, - "gt": Gt, - "eq": Eq, -} - -var initializers []func() - -// EnablePrefixMatching allows to set automatic prefix matching. Automatic prefix matching can be a dangerous thing -// to automatically enable in CLI tools. -// Set this to true to enable it. -var EnablePrefixMatching = false - -// EnableCommandSorting controls sorting of the slice of commands, which is turned on by default. -// To disable sorting, set it to false. -var EnableCommandSorting = true - -// MousetrapHelpText enables an information splash screen on Windows -// if the CLI is started from explorer.exe. -// To disable the mousetrap, just set this variable to blank string (""). -// Works only on Microsoft Windows. -var MousetrapHelpText = `This is a command line tool. - -You need to open cmd.exe and run it from there. -` - -// MousetrapDisplayDuration controls how long the MousetrapHelpText message is displayed on Windows -// if the CLI is started from explorer.exe. Set to 0 to wait for the return key to be pressed. -// To disable the mousetrap, just set MousetrapHelpText to blank string (""). -// Works only on Microsoft Windows. -var MousetrapDisplayDuration = 5 * time.Second - -// AddTemplateFunc adds a template function that's available to Usage and Help -// template generation. -func AddTemplateFunc(name string, tmplFunc interface{}) { - templateFuncs[name] = tmplFunc -} - -// AddTemplateFuncs adds multiple template functions that are available to Usage and -// Help template generation. -func AddTemplateFuncs(tmplFuncs template.FuncMap) { - for k, v := range tmplFuncs { - templateFuncs[k] = v - } -} - -// OnInitialize sets the passed functions to be run when each command's -// Execute method is called. -func OnInitialize(y ...func()) { - initializers = append(initializers, y...) -} - -// FIXME Gt is unused by cobra and should be removed in a version 2. It exists only for compatibility with users of cobra. - -// Gt takes two types and checks whether the first type is greater than the second. In case of types Arrays, Chans, -// Maps and Slices, Gt will compare their lengths. Ints are compared directly while strings are first parsed as -// ints and then compared. -func Gt(a interface{}, b interface{}) bool { - var left, right int64 - av := reflect.ValueOf(a) - - switch av.Kind() { - case reflect.Array, reflect.Chan, reflect.Map, reflect.Slice: - left = int64(av.Len()) - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - left = av.Int() - case reflect.String: - left, _ = strconv.ParseInt(av.String(), 10, 64) - } - - bv := reflect.ValueOf(b) - - switch bv.Kind() { - case reflect.Array, reflect.Chan, reflect.Map, reflect.Slice: - right = int64(bv.Len()) - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - right = bv.Int() - case reflect.String: - right, _ = strconv.ParseInt(bv.String(), 10, 64) - } - - return left > right -} - -// FIXME Eq is unused by cobra and should be removed in a version 2. It exists only for compatibility with users of cobra. - -// Eq takes two types and checks whether they are equal. Supported types are int and string. Unsupported types will panic. -func Eq(a interface{}, b interface{}) bool { - av := reflect.ValueOf(a) - bv := reflect.ValueOf(b) - - switch av.Kind() { - case reflect.Array, reflect.Chan, reflect.Map, reflect.Slice: - panic("Eq called on unsupported type") - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - return av.Int() == bv.Int() - case reflect.String: - return av.String() == bv.String() - } - return false -} - -func trimRightSpace(s string) string { - return strings.TrimRightFunc(s, unicode.IsSpace) -} - -// FIXME appendIfNotPresent is unused by cobra and should be removed in a version 2. It exists only for compatibility with users of cobra. - -// appendIfNotPresent will append stringToAppend to the end of s, but only if it's not yet present in s. -func appendIfNotPresent(s, stringToAppend string) string { - if strings.Contains(s, stringToAppend) { - return s - } - return s + " " + stringToAppend -} - -// rpad adds padding to the right of a string. -func rpad(s string, padding int) string { - template := fmt.Sprintf("%%-%ds", padding) - return fmt.Sprintf(template, s) -} - -// tmpl executes the given template text on data, writing the result to w. -func tmpl(w io.Writer, text string, data interface{}) error { - t := template.New("top") - t.Funcs(templateFuncs) - template.Must(t.Parse(text)) - return t.Execute(w, data) -} - -// ld compares two strings and returns the levenshtein distance between them. -func ld(s, t string, ignoreCase bool) int { - if ignoreCase { - s = strings.ToLower(s) - t = strings.ToLower(t) - } - d := make([][]int, len(s)+1) - for i := range d { - d[i] = make([]int, len(t)+1) - } - for i := range d { - d[i][0] = i - } - for j := range d[0] { - d[0][j] = j - } - for j := 1; j <= len(t); j++ { - for i := 1; i <= len(s); i++ { - if s[i-1] == t[j-1] { - d[i][j] = d[i-1][j-1] - } else { - min := d[i-1][j] - if d[i][j-1] < min { - min = d[i][j-1] - } - if d[i-1][j-1] < min { - min = d[i-1][j-1] - } - d[i][j] = min + 1 - } - } - - } - return d[len(s)][len(t)] -} - -func stringInSlice(a string, list []string) bool { - for _, b := range list { - if b == a { - return true - } - } - return false -} - -// CheckErr prints the msg with the prefix 'Error:' and exits with error code 1. If the msg is nil, it does nothing. -func CheckErr(msg interface{}) { - if msg != nil { - fmt.Fprintln(os.Stderr, "Error:", msg) - os.Exit(1) - } -} - -// WriteStringAndCheck writes a string into a buffer, and checks if the error is not nil. -func WriteStringAndCheck(b io.StringWriter, s string) { - _, err := b.WriteString(s) - CheckErr(err) -} diff --git a/vendor/github.com/spf13/cobra/command.go b/vendor/github.com/spf13/cobra/command.go deleted file mode 100644 index 2cc1889..0000000 --- a/vendor/github.com/spf13/cobra/command.go +++ /dev/null @@ -1,1680 +0,0 @@ -// Copyright © 2013 Steve Francia . -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Package cobra is a commander providing a simple interface to create powerful modern CLI interfaces. -// In addition to providing an interface, Cobra simultaneously provides a controller to organize your application code. -package cobra - -import ( - "bytes" - "context" - "fmt" - "io" - "os" - "path/filepath" - "sort" - "strings" - - flag "github.com/spf13/pflag" -) - -// FParseErrWhitelist configures Flag parse errors to be ignored -type FParseErrWhitelist flag.ParseErrorsWhitelist - -// Command is just that, a command for your application. -// E.g. 'go run ...' - 'run' is the command. Cobra requires -// you to define the usage and description as part of your command -// definition to ensure usability. -type Command struct { - // Use is the one-line usage message. - // Recommended syntax is as follow: - // [ ] identifies an optional argument. Arguments that are not enclosed in brackets are required. - // ... indicates that you can specify multiple values for the previous argument. - // | indicates mutually exclusive information. You can use the argument to the left of the separator or the - // argument to the right of the separator. You cannot use both arguments in a single use of the command. - // { } delimits a set of mutually exclusive arguments when one of the arguments is required. If the arguments are - // optional, they are enclosed in brackets ([ ]). - // Example: add [-F file | -D dir]... [-f format] profile - Use string - - // Aliases is an array of aliases that can be used instead of the first word in Use. - Aliases []string - - // SuggestFor is an array of command names for which this command will be suggested - - // similar to aliases but only suggests. - SuggestFor []string - - // Short is the short description shown in the 'help' output. - Short string - - // Long is the long message shown in the 'help ' output. - Long string - - // Example is examples of how to use the command. - Example string - - // ValidArgs is list of all valid non-flag arguments that are accepted in shell completions - ValidArgs []string - // ValidArgsFunction is an optional function that provides valid non-flag arguments for shell completion. - // It is a dynamic version of using ValidArgs. - // Only one of ValidArgs and ValidArgsFunction can be used for a command. - ValidArgsFunction func(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective) - - // Expected arguments - Args PositionalArgs - - // ArgAliases is List of aliases for ValidArgs. - // These are not suggested to the user in the shell completion, - // but accepted if entered manually. - ArgAliases []string - - // BashCompletionFunction is custom bash functions used by the legacy bash autocompletion generator. - // For portability with other shells, it is recommended to instead use ValidArgsFunction - BashCompletionFunction string - - // Deprecated defines, if this command is deprecated and should print this string when used. - Deprecated string - - // Annotations are key/value pairs that can be used by applications to identify or - // group commands. - Annotations map[string]string - - // Version defines the version for this command. If this value is non-empty and the command does not - // define a "version" flag, a "version" boolean flag will be added to the command and, if specified, - // will print content of the "Version" variable. A shorthand "v" flag will also be added if the - // command does not define one. - Version string - - // The *Run functions are executed in the following order: - // * PersistentPreRun() - // * PreRun() - // * Run() - // * PostRun() - // * PersistentPostRun() - // All functions get the same args, the arguments after the command name. - // - // PersistentPreRun: children of this command will inherit and execute. - PersistentPreRun func(cmd *Command, args []string) - // PersistentPreRunE: PersistentPreRun but returns an error. - PersistentPreRunE func(cmd *Command, args []string) error - // PreRun: children of this command will not inherit. - PreRun func(cmd *Command, args []string) - // PreRunE: PreRun but returns an error. - PreRunE func(cmd *Command, args []string) error - // Run: Typically the actual work function. Most commands will only implement this. - Run func(cmd *Command, args []string) - // RunE: Run but returns an error. - RunE func(cmd *Command, args []string) error - // PostRun: run after the Run command. - PostRun func(cmd *Command, args []string) - // PostRunE: PostRun but returns an error. - PostRunE func(cmd *Command, args []string) error - // PersistentPostRun: children of this command will inherit and execute after PostRun. - PersistentPostRun func(cmd *Command, args []string) - // PersistentPostRunE: PersistentPostRun but returns an error. - PersistentPostRunE func(cmd *Command, args []string) error - - // args is actual args parsed from flags. - args []string - // flagErrorBuf contains all error messages from pflag. - flagErrorBuf *bytes.Buffer - // flags is full set of flags. - flags *flag.FlagSet - // pflags contains persistent flags. - pflags *flag.FlagSet - // lflags contains local flags. - lflags *flag.FlagSet - // iflags contains inherited flags. - iflags *flag.FlagSet - // parentsPflags is all persistent flags of cmd's parents. - parentsPflags *flag.FlagSet - // globNormFunc is the global normalization function - // that we can use on every pflag set and children commands - globNormFunc func(f *flag.FlagSet, name string) flag.NormalizedName - - // usageFunc is usage func defined by user. - usageFunc func(*Command) error - // usageTemplate is usage template defined by user. - usageTemplate string - // flagErrorFunc is func defined by user and it's called when the parsing of - // flags returns an error. - flagErrorFunc func(*Command, error) error - // helpTemplate is help template defined by user. - helpTemplate string - // helpFunc is help func defined by user. - helpFunc func(*Command, []string) - // helpCommand is command with usage 'help'. If it's not defined by user, - // cobra uses default help command. - helpCommand *Command - // versionTemplate is the version template defined by user. - versionTemplate string - - // inReader is a reader defined by the user that replaces stdin - inReader io.Reader - // outWriter is a writer defined by the user that replaces stdout - outWriter io.Writer - // errWriter is a writer defined by the user that replaces stderr - errWriter io.Writer - - //FParseErrWhitelist flag parse errors to be ignored - FParseErrWhitelist FParseErrWhitelist - - // CompletionOptions is a set of options to control the handling of shell completion - CompletionOptions CompletionOptions - - // commandsAreSorted defines, if command slice are sorted or not. - commandsAreSorted bool - // commandCalledAs is the name or alias value used to call this command. - commandCalledAs struct { - name string - called bool - } - - ctx context.Context - - // commands is the list of commands supported by this program. - commands []*Command - // parent is a parent command for this command. - parent *Command - // Max lengths of commands' string lengths for use in padding. - commandsMaxUseLen int - commandsMaxCommandPathLen int - commandsMaxNameLen int - - // TraverseChildren parses flags on all parents before executing child command. - TraverseChildren bool - - // Hidden defines, if this command is hidden and should NOT show up in the list of available commands. - Hidden bool - - // SilenceErrors is an option to quiet errors down stream. - SilenceErrors bool - - // SilenceUsage is an option to silence usage when an error occurs. - SilenceUsage bool - - // DisableFlagParsing disables the flag parsing. - // If this is true all flags will be passed to the command as arguments. - DisableFlagParsing bool - - // DisableAutoGenTag defines, if gen tag ("Auto generated by spf13/cobra...") - // will be printed by generating docs for this command. - DisableAutoGenTag bool - - // DisableFlagsInUseLine will disable the addition of [flags] to the usage - // line of a command when printing help or generating docs - DisableFlagsInUseLine bool - - // DisableSuggestions disables the suggestions based on Levenshtein distance - // that go along with 'unknown command' messages. - DisableSuggestions bool - - // SuggestionsMinimumDistance defines minimum levenshtein distance to display suggestions. - // Must be > 0. - SuggestionsMinimumDistance int -} - -// Context returns underlying command context. If command wasn't -// executed with ExecuteContext Context returns Background context. -func (c *Command) Context() context.Context { - return c.ctx -} - -// SetArgs sets arguments for the command. It is set to os.Args[1:] by default, if desired, can be overridden -// particularly useful when testing. -func (c *Command) SetArgs(a []string) { - c.args = a -} - -// SetOutput sets the destination for usage and error messages. -// If output is nil, os.Stderr is used. -// Deprecated: Use SetOut and/or SetErr instead -func (c *Command) SetOutput(output io.Writer) { - c.outWriter = output - c.errWriter = output -} - -// SetOut sets the destination for usage messages. -// If newOut is nil, os.Stdout is used. -func (c *Command) SetOut(newOut io.Writer) { - c.outWriter = newOut -} - -// SetErr sets the destination for error messages. -// If newErr is nil, os.Stderr is used. -func (c *Command) SetErr(newErr io.Writer) { - c.errWriter = newErr -} - -// SetIn sets the source for input data -// If newIn is nil, os.Stdin is used. -func (c *Command) SetIn(newIn io.Reader) { - c.inReader = newIn -} - -// SetUsageFunc sets usage function. Usage can be defined by application. -func (c *Command) SetUsageFunc(f func(*Command) error) { - c.usageFunc = f -} - -// SetUsageTemplate sets usage template. Can be defined by Application. -func (c *Command) SetUsageTemplate(s string) { - c.usageTemplate = s -} - -// SetFlagErrorFunc sets a function to generate an error when flag parsing -// fails. -func (c *Command) SetFlagErrorFunc(f func(*Command, error) error) { - c.flagErrorFunc = f -} - -// SetHelpFunc sets help function. Can be defined by Application. -func (c *Command) SetHelpFunc(f func(*Command, []string)) { - c.helpFunc = f -} - -// SetHelpCommand sets help command. -func (c *Command) SetHelpCommand(cmd *Command) { - c.helpCommand = cmd -} - -// SetHelpTemplate sets help template to be used. Application can use it to set custom template. -func (c *Command) SetHelpTemplate(s string) { - c.helpTemplate = s -} - -// SetVersionTemplate sets version template to be used. Application can use it to set custom template. -func (c *Command) SetVersionTemplate(s string) { - c.versionTemplate = s -} - -// SetGlobalNormalizationFunc sets a normalization function to all flag sets and also to child commands. -// The user should not have a cyclic dependency on commands. -func (c *Command) SetGlobalNormalizationFunc(n func(f *flag.FlagSet, name string) flag.NormalizedName) { - c.Flags().SetNormalizeFunc(n) - c.PersistentFlags().SetNormalizeFunc(n) - c.globNormFunc = n - - for _, command := range c.commands { - command.SetGlobalNormalizationFunc(n) - } -} - -// OutOrStdout returns output to stdout. -func (c *Command) OutOrStdout() io.Writer { - return c.getOut(os.Stdout) -} - -// OutOrStderr returns output to stderr -func (c *Command) OutOrStderr() io.Writer { - return c.getOut(os.Stderr) -} - -// ErrOrStderr returns output to stderr -func (c *Command) ErrOrStderr() io.Writer { - return c.getErr(os.Stderr) -} - -// InOrStdin returns input to stdin -func (c *Command) InOrStdin() io.Reader { - return c.getIn(os.Stdin) -} - -func (c *Command) getOut(def io.Writer) io.Writer { - if c.outWriter != nil { - return c.outWriter - } - if c.HasParent() { - return c.parent.getOut(def) - } - return def -} - -func (c *Command) getErr(def io.Writer) io.Writer { - if c.errWriter != nil { - return c.errWriter - } - if c.HasParent() { - return c.parent.getErr(def) - } - return def -} - -func (c *Command) getIn(def io.Reader) io.Reader { - if c.inReader != nil { - return c.inReader - } - if c.HasParent() { - return c.parent.getIn(def) - } - return def -} - -// UsageFunc returns either the function set by SetUsageFunc for this command -// or a parent, or it returns a default usage function. -func (c *Command) UsageFunc() (f func(*Command) error) { - if c.usageFunc != nil { - return c.usageFunc - } - if c.HasParent() { - return c.Parent().UsageFunc() - } - return func(c *Command) error { - c.mergePersistentFlags() - err := tmpl(c.OutOrStderr(), c.UsageTemplate(), c) - if err != nil { - c.PrintErrln(err) - } - return err - } -} - -// Usage puts out the usage for the command. -// Used when a user provides invalid input. -// Can be defined by user by overriding UsageFunc. -func (c *Command) Usage() error { - return c.UsageFunc()(c) -} - -// HelpFunc returns either the function set by SetHelpFunc for this command -// or a parent, or it returns a function with default help behavior. -func (c *Command) HelpFunc() func(*Command, []string) { - if c.helpFunc != nil { - return c.helpFunc - } - if c.HasParent() { - return c.Parent().HelpFunc() - } - return func(c *Command, a []string) { - c.mergePersistentFlags() - // The help should be sent to stdout - // See https://github.com/spf13/cobra/issues/1002 - err := tmpl(c.OutOrStdout(), c.HelpTemplate(), c) - if err != nil { - c.PrintErrln(err) - } - } -} - -// Help puts out the help for the command. -// Used when a user calls help [command]. -// Can be defined by user by overriding HelpFunc. -func (c *Command) Help() error { - c.HelpFunc()(c, []string{}) - return nil -} - -// UsageString returns usage string. -func (c *Command) UsageString() string { - // Storing normal writers - tmpOutput := c.outWriter - tmpErr := c.errWriter - - bb := new(bytes.Buffer) - c.outWriter = bb - c.errWriter = bb - - CheckErr(c.Usage()) - - // Setting things back to normal - c.outWriter = tmpOutput - c.errWriter = tmpErr - - return bb.String() -} - -// FlagErrorFunc returns either the function set by SetFlagErrorFunc for this -// command or a parent, or it returns a function which returns the original -// error. -func (c *Command) FlagErrorFunc() (f func(*Command, error) error) { - if c.flagErrorFunc != nil { - return c.flagErrorFunc - } - - if c.HasParent() { - return c.parent.FlagErrorFunc() - } - return func(c *Command, err error) error { - return err - } -} - -var minUsagePadding = 25 - -// UsagePadding return padding for the usage. -func (c *Command) UsagePadding() int { - if c.parent == nil || minUsagePadding > c.parent.commandsMaxUseLen { - return minUsagePadding - } - return c.parent.commandsMaxUseLen -} - -var minCommandPathPadding = 11 - -// CommandPathPadding return padding for the command path. -func (c *Command) CommandPathPadding() int { - if c.parent == nil || minCommandPathPadding > c.parent.commandsMaxCommandPathLen { - return minCommandPathPadding - } - return c.parent.commandsMaxCommandPathLen -} - -var minNamePadding = 11 - -// NamePadding returns padding for the name. -func (c *Command) NamePadding() int { - if c.parent == nil || minNamePadding > c.parent.commandsMaxNameLen { - return minNamePadding - } - return c.parent.commandsMaxNameLen -} - -// UsageTemplate returns usage template for the command. -func (c *Command) UsageTemplate() string { - if c.usageTemplate != "" { - return c.usageTemplate - } - - if c.HasParent() { - return c.parent.UsageTemplate() - } - return `Usage:{{if .Runnable}} - {{.UseLine}}{{end}}{{if .HasAvailableSubCommands}} - {{.CommandPath}} [command]{{end}}{{if gt (len .Aliases) 0}} - -Aliases: - {{.NameAndAliases}}{{end}}{{if .HasExample}} - -Examples: -{{.Example}}{{end}}{{if .HasAvailableSubCommands}} - -Available Commands:{{range .Commands}}{{if (or .IsAvailableCommand (eq .Name "help"))}} - {{rpad .Name .NamePadding }} {{.Short}}{{end}}{{end}}{{end}}{{if .HasAvailableLocalFlags}} - -Flags: -{{.LocalFlags.FlagUsages | trimTrailingWhitespaces}}{{end}}{{if .HasAvailableInheritedFlags}} - -Global Flags: -{{.InheritedFlags.FlagUsages | trimTrailingWhitespaces}}{{end}}{{if .HasHelpSubCommands}} - -Additional help topics:{{range .Commands}}{{if .IsAdditionalHelpTopicCommand}} - {{rpad .CommandPath .CommandPathPadding}} {{.Short}}{{end}}{{end}}{{end}}{{if .HasAvailableSubCommands}} - -Use "{{.CommandPath}} [command] --help" for more information about a command.{{end}} -` -} - -// HelpTemplate return help template for the command. -func (c *Command) HelpTemplate() string { - if c.helpTemplate != "" { - return c.helpTemplate - } - - if c.HasParent() { - return c.parent.HelpTemplate() - } - return `{{with (or .Long .Short)}}{{. | trimTrailingWhitespaces}} - -{{end}}{{if or .Runnable .HasSubCommands}}{{.UsageString}}{{end}}` -} - -// VersionTemplate return version template for the command. -func (c *Command) VersionTemplate() string { - if c.versionTemplate != "" { - return c.versionTemplate - } - - if c.HasParent() { - return c.parent.VersionTemplate() - } - return `{{with .Name}}{{printf "%s " .}}{{end}}{{printf "version %s" .Version}} -` -} - -func hasNoOptDefVal(name string, fs *flag.FlagSet) bool { - flag := fs.Lookup(name) - if flag == nil { - return false - } - return flag.NoOptDefVal != "" -} - -func shortHasNoOptDefVal(name string, fs *flag.FlagSet) bool { - if len(name) == 0 { - return false - } - - flag := fs.ShorthandLookup(name[:1]) - if flag == nil { - return false - } - return flag.NoOptDefVal != "" -} - -func stripFlags(args []string, c *Command) []string { - if len(args) == 0 { - return args - } - c.mergePersistentFlags() - - commands := []string{} - flags := c.Flags() - -Loop: - for len(args) > 0 { - s := args[0] - args = args[1:] - switch { - case s == "--": - // "--" terminates the flags - break Loop - case strings.HasPrefix(s, "--") && !strings.Contains(s, "=") && !hasNoOptDefVal(s[2:], flags): - // If '--flag arg' then - // delete arg from args. - fallthrough // (do the same as below) - case strings.HasPrefix(s, "-") && !strings.Contains(s, "=") && len(s) == 2 && !shortHasNoOptDefVal(s[1:], flags): - // If '-f arg' then - // delete 'arg' from args or break the loop if len(args) <= 1. - if len(args) <= 1 { - break Loop - } else { - args = args[1:] - continue - } - case s != "" && !strings.HasPrefix(s, "-"): - commands = append(commands, s) - } - } - - return commands -} - -// argsMinusFirstX removes only the first x from args. Otherwise, commands that look like -// openshift admin policy add-role-to-user admin my-user, lose the admin argument (arg[4]). -func argsMinusFirstX(args []string, x string) []string { - for i, y := range args { - if x == y { - ret := []string{} - ret = append(ret, args[:i]...) - ret = append(ret, args[i+1:]...) - return ret - } - } - return args -} - -func isFlagArg(arg string) bool { - return ((len(arg) >= 3 && arg[1] == '-') || - (len(arg) >= 2 && arg[0] == '-' && arg[1] != '-')) -} - -// Find the target command given the args and command tree -// Meant to be run on the highest node. Only searches down. -func (c *Command) Find(args []string) (*Command, []string, error) { - var innerfind func(*Command, []string) (*Command, []string) - - innerfind = func(c *Command, innerArgs []string) (*Command, []string) { - argsWOflags := stripFlags(innerArgs, c) - if len(argsWOflags) == 0 { - return c, innerArgs - } - nextSubCmd := argsWOflags[0] - - cmd := c.findNext(nextSubCmd) - if cmd != nil { - return innerfind(cmd, argsMinusFirstX(innerArgs, nextSubCmd)) - } - return c, innerArgs - } - - commandFound, a := innerfind(c, args) - if commandFound.Args == nil { - return commandFound, a, legacyArgs(commandFound, stripFlags(a, commandFound)) - } - return commandFound, a, nil -} - -func (c *Command) findSuggestions(arg string) string { - if c.DisableSuggestions { - return "" - } - if c.SuggestionsMinimumDistance <= 0 { - c.SuggestionsMinimumDistance = 2 - } - suggestionsString := "" - if suggestions := c.SuggestionsFor(arg); len(suggestions) > 0 { - suggestionsString += "\n\nDid you mean this?\n" - for _, s := range suggestions { - suggestionsString += fmt.Sprintf("\t%v\n", s) - } - } - return suggestionsString -} - -func (c *Command) findNext(next string) *Command { - matches := make([]*Command, 0) - for _, cmd := range c.commands { - if cmd.Name() == next || cmd.HasAlias(next) { - cmd.commandCalledAs.name = next - return cmd - } - if EnablePrefixMatching && cmd.hasNameOrAliasPrefix(next) { - matches = append(matches, cmd) - } - } - - if len(matches) == 1 { - return matches[0] - } - - return nil -} - -// Traverse the command tree to find the command, and parse args for -// each parent. -func (c *Command) Traverse(args []string) (*Command, []string, error) { - flags := []string{} - inFlag := false - - for i, arg := range args { - switch { - // A long flag with a space separated value - case strings.HasPrefix(arg, "--") && !strings.Contains(arg, "="): - // TODO: this isn't quite right, we should really check ahead for 'true' or 'false' - inFlag = !hasNoOptDefVal(arg[2:], c.Flags()) - flags = append(flags, arg) - continue - // A short flag with a space separated value - case strings.HasPrefix(arg, "-") && !strings.Contains(arg, "=") && len(arg) == 2 && !shortHasNoOptDefVal(arg[1:], c.Flags()): - inFlag = true - flags = append(flags, arg) - continue - // The value for a flag - case inFlag: - inFlag = false - flags = append(flags, arg) - continue - // A flag without a value, or with an `=` separated value - case isFlagArg(arg): - flags = append(flags, arg) - continue - } - - cmd := c.findNext(arg) - if cmd == nil { - return c, args, nil - } - - if err := c.ParseFlags(flags); err != nil { - return nil, args, err - } - return cmd.Traverse(args[i+1:]) - } - return c, args, nil -} - -// SuggestionsFor provides suggestions for the typedName. -func (c *Command) SuggestionsFor(typedName string) []string { - suggestions := []string{} - for _, cmd := range c.commands { - if cmd.IsAvailableCommand() { - levenshteinDistance := ld(typedName, cmd.Name(), true) - suggestByLevenshtein := levenshteinDistance <= c.SuggestionsMinimumDistance - suggestByPrefix := strings.HasPrefix(strings.ToLower(cmd.Name()), strings.ToLower(typedName)) - if suggestByLevenshtein || suggestByPrefix { - suggestions = append(suggestions, cmd.Name()) - } - for _, explicitSuggestion := range cmd.SuggestFor { - if strings.EqualFold(typedName, explicitSuggestion) { - suggestions = append(suggestions, cmd.Name()) - } - } - } - } - return suggestions -} - -// VisitParents visits all parents of the command and invokes fn on each parent. -func (c *Command) VisitParents(fn func(*Command)) { - if c.HasParent() { - fn(c.Parent()) - c.Parent().VisitParents(fn) - } -} - -// Root finds root command. -func (c *Command) Root() *Command { - if c.HasParent() { - return c.Parent().Root() - } - return c -} - -// ArgsLenAtDash will return the length of c.Flags().Args at the moment -// when a -- was found during args parsing. -func (c *Command) ArgsLenAtDash() int { - return c.Flags().ArgsLenAtDash() -} - -func (c *Command) execute(a []string) (err error) { - if c == nil { - return fmt.Errorf("Called Execute() on a nil Command") - } - - if len(c.Deprecated) > 0 { - c.Printf("Command %q is deprecated, %s\n", c.Name(), c.Deprecated) - } - - // initialize help and version flag at the last point possible to allow for user - // overriding - c.InitDefaultHelpFlag() - c.InitDefaultVersionFlag() - - err = c.ParseFlags(a) - if err != nil { - return c.FlagErrorFunc()(c, err) - } - - // If help is called, regardless of other flags, return we want help. - // Also say we need help if the command isn't runnable. - helpVal, err := c.Flags().GetBool("help") - if err != nil { - // should be impossible to get here as we always declare a help - // flag in InitDefaultHelpFlag() - c.Println("\"help\" flag declared as non-bool. Please correct your code") - return err - } - - if helpVal { - return flag.ErrHelp - } - - // for back-compat, only add version flag behavior if version is defined - if c.Version != "" { - versionVal, err := c.Flags().GetBool("version") - if err != nil { - c.Println("\"version\" flag declared as non-bool. Please correct your code") - return err - } - if versionVal { - err := tmpl(c.OutOrStdout(), c.VersionTemplate(), c) - if err != nil { - c.Println(err) - } - return err - } - } - - if !c.Runnable() { - return flag.ErrHelp - } - - c.preRun() - - argWoFlags := c.Flags().Args() - if c.DisableFlagParsing { - argWoFlags = a - } - - if err := c.ValidateArgs(argWoFlags); err != nil { - return err - } - - for p := c; p != nil; p = p.Parent() { - if p.PersistentPreRunE != nil { - if err := p.PersistentPreRunE(c, argWoFlags); err != nil { - return err - } - break - } else if p.PersistentPreRun != nil { - p.PersistentPreRun(c, argWoFlags) - break - } - } - if c.PreRunE != nil { - if err := c.PreRunE(c, argWoFlags); err != nil { - return err - } - } else if c.PreRun != nil { - c.PreRun(c, argWoFlags) - } - - if err := c.validateRequiredFlags(); err != nil { - return err - } - if c.RunE != nil { - if err := c.RunE(c, argWoFlags); err != nil { - return err - } - } else { - c.Run(c, argWoFlags) - } - if c.PostRunE != nil { - if err := c.PostRunE(c, argWoFlags); err != nil { - return err - } - } else if c.PostRun != nil { - c.PostRun(c, argWoFlags) - } - for p := c; p != nil; p = p.Parent() { - if p.PersistentPostRunE != nil { - if err := p.PersistentPostRunE(c, argWoFlags); err != nil { - return err - } - break - } else if p.PersistentPostRun != nil { - p.PersistentPostRun(c, argWoFlags) - break - } - } - - return nil -} - -func (c *Command) preRun() { - for _, x := range initializers { - x() - } -} - -// ExecuteContext is the same as Execute(), but sets the ctx on the command. -// Retrieve ctx by calling cmd.Context() inside your *Run lifecycle or ValidArgs -// functions. -func (c *Command) ExecuteContext(ctx context.Context) error { - c.ctx = ctx - return c.Execute() -} - -// Execute uses the args (os.Args[1:] by default) -// and run through the command tree finding appropriate matches -// for commands and then corresponding flags. -func (c *Command) Execute() error { - _, err := c.ExecuteC() - return err -} - -// ExecuteContextC is the same as ExecuteC(), but sets the ctx on the command. -// Retrieve ctx by calling cmd.Context() inside your *Run lifecycle or ValidArgs -// functions. -func (c *Command) ExecuteContextC(ctx context.Context) (*Command, error) { - c.ctx = ctx - return c.ExecuteC() -} - -// ExecuteC executes the command. -func (c *Command) ExecuteC() (cmd *Command, err error) { - if c.ctx == nil { - c.ctx = context.Background() - } - - // Regardless of what command execute is called on, run on Root only - if c.HasParent() { - return c.Root().ExecuteC() - } - - // windows hook - if preExecHookFn != nil { - preExecHookFn(c) - } - - // initialize help at the last point to allow for user overriding - c.InitDefaultHelpCmd() - // initialize completion at the last point to allow for user overriding - c.initDefaultCompletionCmd() - - args := c.args - - // Workaround FAIL with "go test -v" or "cobra.test -test.v", see #155 - if c.args == nil && filepath.Base(os.Args[0]) != "cobra.test" { - args = os.Args[1:] - } - - // initialize the hidden command to be used for shell completion - c.initCompleteCmd(args) - - var flags []string - if c.TraverseChildren { - cmd, flags, err = c.Traverse(args) - } else { - cmd, flags, err = c.Find(args) - } - if err != nil { - // If found parse to a subcommand and then failed, talk about the subcommand - if cmd != nil { - c = cmd - } - if !c.SilenceErrors { - c.PrintErrln("Error:", err.Error()) - c.PrintErrf("Run '%v --help' for usage.\n", c.CommandPath()) - } - return c, err - } - - cmd.commandCalledAs.called = true - if cmd.commandCalledAs.name == "" { - cmd.commandCalledAs.name = cmd.Name() - } - - // We have to pass global context to children command - // if context is present on the parent command. - if cmd.ctx == nil { - cmd.ctx = c.ctx - } - - err = cmd.execute(flags) - if err != nil { - // Always show help if requested, even if SilenceErrors is in - // effect - if err == flag.ErrHelp { - cmd.HelpFunc()(cmd, args) - return cmd, nil - } - - // If root command has SilenceErrors flagged, - // all subcommands should respect it - if !cmd.SilenceErrors && !c.SilenceErrors { - c.PrintErrln("Error:", err.Error()) - } - - // If root command has SilenceUsage flagged, - // all subcommands should respect it - if !cmd.SilenceUsage && !c.SilenceUsage { - c.Println(cmd.UsageString()) - } - } - return cmd, err -} - -func (c *Command) ValidateArgs(args []string) error { - if c.Args == nil { - return nil - } - return c.Args(c, args) -} - -func (c *Command) validateRequiredFlags() error { - if c.DisableFlagParsing { - return nil - } - - flags := c.Flags() - missingFlagNames := []string{} - flags.VisitAll(func(pflag *flag.Flag) { - requiredAnnotation, found := pflag.Annotations[BashCompOneRequiredFlag] - if !found { - return - } - if (requiredAnnotation[0] == "true") && !pflag.Changed { - missingFlagNames = append(missingFlagNames, pflag.Name) - } - }) - - if len(missingFlagNames) > 0 { - return fmt.Errorf(`required flag(s) "%s" not set`, strings.Join(missingFlagNames, `", "`)) - } - return nil -} - -// InitDefaultHelpFlag adds default help flag to c. -// It is called automatically by executing the c or by calling help and usage. -// If c already has help flag, it will do nothing. -func (c *Command) InitDefaultHelpFlag() { - c.mergePersistentFlags() - if c.Flags().Lookup("help") == nil { - usage := "help for " - if c.Name() == "" { - usage += "this command" - } else { - usage += c.Name() - } - c.Flags().BoolP("help", "h", false, usage) - } -} - -// InitDefaultVersionFlag adds default version flag to c. -// It is called automatically by executing the c. -// If c already has a version flag, it will do nothing. -// If c.Version is empty, it will do nothing. -func (c *Command) InitDefaultVersionFlag() { - if c.Version == "" { - return - } - - c.mergePersistentFlags() - if c.Flags().Lookup("version") == nil { - usage := "version for " - if c.Name() == "" { - usage += "this command" - } else { - usage += c.Name() - } - if c.Flags().ShorthandLookup("v") == nil { - c.Flags().BoolP("version", "v", false, usage) - } else { - c.Flags().Bool("version", false, usage) - } - } -} - -// InitDefaultHelpCmd adds default help command to c. -// It is called automatically by executing the c or by calling help and usage. -// If c already has help command or c has no subcommands, it will do nothing. -func (c *Command) InitDefaultHelpCmd() { - if !c.HasSubCommands() { - return - } - - if c.helpCommand == nil { - c.helpCommand = &Command{ - Use: "help [command]", - Short: "Help about any command", - Long: `Help provides help for any command in the application. -Simply type ` + c.Name() + ` help [path to command] for full details.`, - ValidArgsFunction: func(c *Command, args []string, toComplete string) ([]string, ShellCompDirective) { - var completions []string - cmd, _, e := c.Root().Find(args) - if e != nil { - return nil, ShellCompDirectiveNoFileComp - } - if cmd == nil { - // Root help command. - cmd = c.Root() - } - for _, subCmd := range cmd.Commands() { - if subCmd.IsAvailableCommand() || subCmd == cmd.helpCommand { - if strings.HasPrefix(subCmd.Name(), toComplete) { - completions = append(completions, fmt.Sprintf("%s\t%s", subCmd.Name(), subCmd.Short)) - } - } - } - return completions, ShellCompDirectiveNoFileComp - }, - Run: func(c *Command, args []string) { - cmd, _, e := c.Root().Find(args) - if cmd == nil || e != nil { - c.Printf("Unknown help topic %#q\n", args) - CheckErr(c.Root().Usage()) - } else { - cmd.InitDefaultHelpFlag() // make possible 'help' flag to be shown - CheckErr(cmd.Help()) - } - }, - } - } - c.RemoveCommand(c.helpCommand) - c.AddCommand(c.helpCommand) -} - -// ResetCommands delete parent, subcommand and help command from c. -func (c *Command) ResetCommands() { - c.parent = nil - c.commands = nil - c.helpCommand = nil - c.parentsPflags = nil -} - -// Sorts commands by their names. -type commandSorterByName []*Command - -func (c commandSorterByName) Len() int { return len(c) } -func (c commandSorterByName) Swap(i, j int) { c[i], c[j] = c[j], c[i] } -func (c commandSorterByName) Less(i, j int) bool { return c[i].Name() < c[j].Name() } - -// Commands returns a sorted slice of child commands. -func (c *Command) Commands() []*Command { - // do not sort commands if it already sorted or sorting was disabled - if EnableCommandSorting && !c.commandsAreSorted { - sort.Sort(commandSorterByName(c.commands)) - c.commandsAreSorted = true - } - return c.commands -} - -// AddCommand adds one or more commands to this parent command. -func (c *Command) AddCommand(cmds ...*Command) { - for i, x := range cmds { - if cmds[i] == c { - panic("Command can't be a child of itself") - } - cmds[i].parent = c - // update max lengths - usageLen := len(x.Use) - if usageLen > c.commandsMaxUseLen { - c.commandsMaxUseLen = usageLen - } - commandPathLen := len(x.CommandPath()) - if commandPathLen > c.commandsMaxCommandPathLen { - c.commandsMaxCommandPathLen = commandPathLen - } - nameLen := len(x.Name()) - if nameLen > c.commandsMaxNameLen { - c.commandsMaxNameLen = nameLen - } - // If global normalization function exists, update all children - if c.globNormFunc != nil { - x.SetGlobalNormalizationFunc(c.globNormFunc) - } - c.commands = append(c.commands, x) - c.commandsAreSorted = false - } -} - -// RemoveCommand removes one or more commands from a parent command. -func (c *Command) RemoveCommand(cmds ...*Command) { - commands := []*Command{} -main: - for _, command := range c.commands { - for _, cmd := range cmds { - if command == cmd { - command.parent = nil - continue main - } - } - commands = append(commands, command) - } - c.commands = commands - // recompute all lengths - c.commandsMaxUseLen = 0 - c.commandsMaxCommandPathLen = 0 - c.commandsMaxNameLen = 0 - for _, command := range c.commands { - usageLen := len(command.Use) - if usageLen > c.commandsMaxUseLen { - c.commandsMaxUseLen = usageLen - } - commandPathLen := len(command.CommandPath()) - if commandPathLen > c.commandsMaxCommandPathLen { - c.commandsMaxCommandPathLen = commandPathLen - } - nameLen := len(command.Name()) - if nameLen > c.commandsMaxNameLen { - c.commandsMaxNameLen = nameLen - } - } -} - -// Print is a convenience method to Print to the defined output, fallback to Stderr if not set. -func (c *Command) Print(i ...interface{}) { - fmt.Fprint(c.OutOrStderr(), i...) -} - -// Println is a convenience method to Println to the defined output, fallback to Stderr if not set. -func (c *Command) Println(i ...interface{}) { - c.Print(fmt.Sprintln(i...)) -} - -// Printf is a convenience method to Printf to the defined output, fallback to Stderr if not set. -func (c *Command) Printf(format string, i ...interface{}) { - c.Print(fmt.Sprintf(format, i...)) -} - -// PrintErr is a convenience method to Print to the defined Err output, fallback to Stderr if not set. -func (c *Command) PrintErr(i ...interface{}) { - fmt.Fprint(c.ErrOrStderr(), i...) -} - -// PrintErrln is a convenience method to Println to the defined Err output, fallback to Stderr if not set. -func (c *Command) PrintErrln(i ...interface{}) { - c.PrintErr(fmt.Sprintln(i...)) -} - -// PrintErrf is a convenience method to Printf to the defined Err output, fallback to Stderr if not set. -func (c *Command) PrintErrf(format string, i ...interface{}) { - c.PrintErr(fmt.Sprintf(format, i...)) -} - -// CommandPath returns the full path to this command. -func (c *Command) CommandPath() string { - if c.HasParent() { - return c.Parent().CommandPath() + " " + c.Name() - } - return c.Name() -} - -// UseLine puts out the full usage for a given command (including parents). -func (c *Command) UseLine() string { - var useline string - if c.HasParent() { - useline = c.parent.CommandPath() + " " + c.Use - } else { - useline = c.Use - } - if c.DisableFlagsInUseLine { - return useline - } - if c.HasAvailableFlags() && !strings.Contains(useline, "[flags]") { - useline += " [flags]" - } - return useline -} - -// DebugFlags used to determine which flags have been assigned to which commands -// and which persist. -func (c *Command) DebugFlags() { - c.Println("DebugFlags called on", c.Name()) - var debugflags func(*Command) - - debugflags = func(x *Command) { - if x.HasFlags() || x.HasPersistentFlags() { - c.Println(x.Name()) - } - if x.HasFlags() { - x.flags.VisitAll(func(f *flag.Flag) { - if x.HasPersistentFlags() && x.persistentFlag(f.Name) != nil { - c.Println(" -"+f.Shorthand+",", "--"+f.Name, "["+f.DefValue+"]", "", f.Value, " [LP]") - } else { - c.Println(" -"+f.Shorthand+",", "--"+f.Name, "["+f.DefValue+"]", "", f.Value, " [L]") - } - }) - } - if x.HasPersistentFlags() { - x.pflags.VisitAll(func(f *flag.Flag) { - if x.HasFlags() { - if x.flags.Lookup(f.Name) == nil { - c.Println(" -"+f.Shorthand+",", "--"+f.Name, "["+f.DefValue+"]", "", f.Value, " [P]") - } - } else { - c.Println(" -"+f.Shorthand+",", "--"+f.Name, "["+f.DefValue+"]", "", f.Value, " [P]") - } - }) - } - c.Println(x.flagErrorBuf) - if x.HasSubCommands() { - for _, y := range x.commands { - debugflags(y) - } - } - } - - debugflags(c) -} - -// Name returns the command's name: the first word in the use line. -func (c *Command) Name() string { - name := c.Use - i := strings.Index(name, " ") - if i >= 0 { - name = name[:i] - } - return name -} - -// HasAlias determines if a given string is an alias of the command. -func (c *Command) HasAlias(s string) bool { - for _, a := range c.Aliases { - if a == s { - return true - } - } - return false -} - -// CalledAs returns the command name or alias that was used to invoke -// this command or an empty string if the command has not been called. -func (c *Command) CalledAs() string { - if c.commandCalledAs.called { - return c.commandCalledAs.name - } - return "" -} - -// hasNameOrAliasPrefix returns true if the Name or any of aliases start -// with prefix -func (c *Command) hasNameOrAliasPrefix(prefix string) bool { - if strings.HasPrefix(c.Name(), prefix) { - c.commandCalledAs.name = c.Name() - return true - } - for _, alias := range c.Aliases { - if strings.HasPrefix(alias, prefix) { - c.commandCalledAs.name = alias - return true - } - } - return false -} - -// NameAndAliases returns a list of the command name and all aliases -func (c *Command) NameAndAliases() string { - return strings.Join(append([]string{c.Name()}, c.Aliases...), ", ") -} - -// HasExample determines if the command has example. -func (c *Command) HasExample() bool { - return len(c.Example) > 0 -} - -// Runnable determines if the command is itself runnable. -func (c *Command) Runnable() bool { - return c.Run != nil || c.RunE != nil -} - -// HasSubCommands determines if the command has children commands. -func (c *Command) HasSubCommands() bool { - return len(c.commands) > 0 -} - -// IsAvailableCommand determines if a command is available as a non-help command -// (this includes all non deprecated/hidden commands). -func (c *Command) IsAvailableCommand() bool { - if len(c.Deprecated) != 0 || c.Hidden { - return false - } - - if c.HasParent() && c.Parent().helpCommand == c { - return false - } - - if c.Runnable() || c.HasAvailableSubCommands() { - return true - } - - return false -} - -// IsAdditionalHelpTopicCommand determines if a command is an additional -// help topic command; additional help topic command is determined by the -// fact that it is NOT runnable/hidden/deprecated, and has no sub commands that -// are runnable/hidden/deprecated. -// Concrete example: https://github.com/spf13/cobra/issues/393#issuecomment-282741924. -func (c *Command) IsAdditionalHelpTopicCommand() bool { - // if a command is runnable, deprecated, or hidden it is not a 'help' command - if c.Runnable() || len(c.Deprecated) != 0 || c.Hidden { - return false - } - - // if any non-help sub commands are found, the command is not a 'help' command - for _, sub := range c.commands { - if !sub.IsAdditionalHelpTopicCommand() { - return false - } - } - - // the command either has no sub commands, or no non-help sub commands - return true -} - -// HasHelpSubCommands determines if a command has any available 'help' sub commands -// that need to be shown in the usage/help default template under 'additional help -// topics'. -func (c *Command) HasHelpSubCommands() bool { - // return true on the first found available 'help' sub command - for _, sub := range c.commands { - if sub.IsAdditionalHelpTopicCommand() { - return true - } - } - - // the command either has no sub commands, or no available 'help' sub commands - return false -} - -// HasAvailableSubCommands determines if a command has available sub commands that -// need to be shown in the usage/help default template under 'available commands'. -func (c *Command) HasAvailableSubCommands() bool { - // return true on the first found available (non deprecated/help/hidden) - // sub command - for _, sub := range c.commands { - if sub.IsAvailableCommand() { - return true - } - } - - // the command either has no sub commands, or no available (non deprecated/help/hidden) - // sub commands - return false -} - -// HasParent determines if the command is a child command. -func (c *Command) HasParent() bool { - return c.parent != nil -} - -// GlobalNormalizationFunc returns the global normalization function or nil if it doesn't exist. -func (c *Command) GlobalNormalizationFunc() func(f *flag.FlagSet, name string) flag.NormalizedName { - return c.globNormFunc -} - -// Flags returns the complete FlagSet that applies -// to this command (local and persistent declared here and by all parents). -func (c *Command) Flags() *flag.FlagSet { - if c.flags == nil { - c.flags = flag.NewFlagSet(c.Name(), flag.ContinueOnError) - if c.flagErrorBuf == nil { - c.flagErrorBuf = new(bytes.Buffer) - } - c.flags.SetOutput(c.flagErrorBuf) - } - - return c.flags -} - -// LocalNonPersistentFlags are flags specific to this command which will NOT persist to subcommands. -func (c *Command) LocalNonPersistentFlags() *flag.FlagSet { - persistentFlags := c.PersistentFlags() - - out := flag.NewFlagSet(c.Name(), flag.ContinueOnError) - c.LocalFlags().VisitAll(func(f *flag.Flag) { - if persistentFlags.Lookup(f.Name) == nil { - out.AddFlag(f) - } - }) - return out -} - -// LocalFlags returns the local FlagSet specifically set in the current command. -func (c *Command) LocalFlags() *flag.FlagSet { - c.mergePersistentFlags() - - if c.lflags == nil { - c.lflags = flag.NewFlagSet(c.Name(), flag.ContinueOnError) - if c.flagErrorBuf == nil { - c.flagErrorBuf = new(bytes.Buffer) - } - c.lflags.SetOutput(c.flagErrorBuf) - } - c.lflags.SortFlags = c.Flags().SortFlags - if c.globNormFunc != nil { - c.lflags.SetNormalizeFunc(c.globNormFunc) - } - - addToLocal := func(f *flag.Flag) { - if c.lflags.Lookup(f.Name) == nil && c.parentsPflags.Lookup(f.Name) == nil { - c.lflags.AddFlag(f) - } - } - c.Flags().VisitAll(addToLocal) - c.PersistentFlags().VisitAll(addToLocal) - return c.lflags -} - -// InheritedFlags returns all flags which were inherited from parent commands. -func (c *Command) InheritedFlags() *flag.FlagSet { - c.mergePersistentFlags() - - if c.iflags == nil { - c.iflags = flag.NewFlagSet(c.Name(), flag.ContinueOnError) - if c.flagErrorBuf == nil { - c.flagErrorBuf = new(bytes.Buffer) - } - c.iflags.SetOutput(c.flagErrorBuf) - } - - local := c.LocalFlags() - if c.globNormFunc != nil { - c.iflags.SetNormalizeFunc(c.globNormFunc) - } - - c.parentsPflags.VisitAll(func(f *flag.Flag) { - if c.iflags.Lookup(f.Name) == nil && local.Lookup(f.Name) == nil { - c.iflags.AddFlag(f) - } - }) - return c.iflags -} - -// NonInheritedFlags returns all flags which were not inherited from parent commands. -func (c *Command) NonInheritedFlags() *flag.FlagSet { - return c.LocalFlags() -} - -// PersistentFlags returns the persistent FlagSet specifically set in the current command. -func (c *Command) PersistentFlags() *flag.FlagSet { - if c.pflags == nil { - c.pflags = flag.NewFlagSet(c.Name(), flag.ContinueOnError) - if c.flagErrorBuf == nil { - c.flagErrorBuf = new(bytes.Buffer) - } - c.pflags.SetOutput(c.flagErrorBuf) - } - return c.pflags -} - -// ResetFlags deletes all flags from command. -func (c *Command) ResetFlags() { - c.flagErrorBuf = new(bytes.Buffer) - c.flagErrorBuf.Reset() - c.flags = flag.NewFlagSet(c.Name(), flag.ContinueOnError) - c.flags.SetOutput(c.flagErrorBuf) - c.pflags = flag.NewFlagSet(c.Name(), flag.ContinueOnError) - c.pflags.SetOutput(c.flagErrorBuf) - - c.lflags = nil - c.iflags = nil - c.parentsPflags = nil -} - -// HasFlags checks if the command contains any flags (local plus persistent from the entire structure). -func (c *Command) HasFlags() bool { - return c.Flags().HasFlags() -} - -// HasPersistentFlags checks if the command contains persistent flags. -func (c *Command) HasPersistentFlags() bool { - return c.PersistentFlags().HasFlags() -} - -// HasLocalFlags checks if the command has flags specifically declared locally. -func (c *Command) HasLocalFlags() bool { - return c.LocalFlags().HasFlags() -} - -// HasInheritedFlags checks if the command has flags inherited from its parent command. -func (c *Command) HasInheritedFlags() bool { - return c.InheritedFlags().HasFlags() -} - -// HasAvailableFlags checks if the command contains any flags (local plus persistent from the entire -// structure) which are not hidden or deprecated. -func (c *Command) HasAvailableFlags() bool { - return c.Flags().HasAvailableFlags() -} - -// HasAvailablePersistentFlags checks if the command contains persistent flags which are not hidden or deprecated. -func (c *Command) HasAvailablePersistentFlags() bool { - return c.PersistentFlags().HasAvailableFlags() -} - -// HasAvailableLocalFlags checks if the command has flags specifically declared locally which are not hidden -// or deprecated. -func (c *Command) HasAvailableLocalFlags() bool { - return c.LocalFlags().HasAvailableFlags() -} - -// HasAvailableInheritedFlags checks if the command has flags inherited from its parent command which are -// not hidden or deprecated. -func (c *Command) HasAvailableInheritedFlags() bool { - return c.InheritedFlags().HasAvailableFlags() -} - -// Flag climbs up the command tree looking for matching flag. -func (c *Command) Flag(name string) (flag *flag.Flag) { - flag = c.Flags().Lookup(name) - - if flag == nil { - flag = c.persistentFlag(name) - } - - return -} - -// Recursively find matching persistent flag. -func (c *Command) persistentFlag(name string) (flag *flag.Flag) { - if c.HasPersistentFlags() { - flag = c.PersistentFlags().Lookup(name) - } - - if flag == nil { - c.updateParentsPflags() - flag = c.parentsPflags.Lookup(name) - } - return -} - -// ParseFlags parses persistent flag tree and local flags. -func (c *Command) ParseFlags(args []string) error { - if c.DisableFlagParsing { - return nil - } - - if c.flagErrorBuf == nil { - c.flagErrorBuf = new(bytes.Buffer) - } - beforeErrorBufLen := c.flagErrorBuf.Len() - c.mergePersistentFlags() - - // do it here after merging all flags and just before parse - c.Flags().ParseErrorsWhitelist = flag.ParseErrorsWhitelist(c.FParseErrWhitelist) - - err := c.Flags().Parse(args) - // Print warnings if they occurred (e.g. deprecated flag messages). - if c.flagErrorBuf.Len()-beforeErrorBufLen > 0 && err == nil { - c.Print(c.flagErrorBuf.String()) - } - - return err -} - -// Parent returns a commands parent command. -func (c *Command) Parent() *Command { - return c.parent -} - -// mergePersistentFlags merges c.PersistentFlags() to c.Flags() -// and adds missing persistent flags of all parents. -func (c *Command) mergePersistentFlags() { - c.updateParentsPflags() - c.Flags().AddFlagSet(c.PersistentFlags()) - c.Flags().AddFlagSet(c.parentsPflags) -} - -// updateParentsPflags updates c.parentsPflags by adding -// new persistent flags of all parents. -// If c.parentsPflags == nil, it makes new. -func (c *Command) updateParentsPflags() { - if c.parentsPflags == nil { - c.parentsPflags = flag.NewFlagSet(c.Name(), flag.ContinueOnError) - c.parentsPflags.SetOutput(c.flagErrorBuf) - c.parentsPflags.SortFlags = false - } - - if c.globNormFunc != nil { - c.parentsPflags.SetNormalizeFunc(c.globNormFunc) - } - - c.Root().PersistentFlags().AddFlagSet(flag.CommandLine) - - c.VisitParents(func(parent *Command) { - c.parentsPflags.AddFlagSet(parent.PersistentFlags()) - }) -} diff --git a/vendor/github.com/spf13/cobra/command_notwin.go b/vendor/github.com/spf13/cobra/command_notwin.go deleted file mode 100644 index bb5dad9..0000000 --- a/vendor/github.com/spf13/cobra/command_notwin.go +++ /dev/null @@ -1,6 +0,0 @@ -//go:build !windows -// +build !windows - -package cobra - -var preExecHookFn func(*Command) diff --git a/vendor/github.com/spf13/cobra/command_win.go b/vendor/github.com/spf13/cobra/command_win.go deleted file mode 100644 index a84f5a8..0000000 --- a/vendor/github.com/spf13/cobra/command_win.go +++ /dev/null @@ -1,27 +0,0 @@ -//go:build windows -// +build windows - -package cobra - -import ( - "fmt" - "os" - "time" - - "github.com/inconshreveable/mousetrap" -) - -var preExecHookFn = preExecHook - -func preExecHook(c *Command) { - if MousetrapHelpText != "" && mousetrap.StartedByExplorer() { - c.Print(MousetrapHelpText) - if MousetrapDisplayDuration > 0 { - time.Sleep(MousetrapDisplayDuration) - } else { - c.Println("Press return to continue...") - fmt.Scanln() - } - os.Exit(1) - } -} diff --git a/vendor/github.com/spf13/cobra/completions.go b/vendor/github.com/spf13/cobra/completions.go deleted file mode 100644 index 9ecd56a..0000000 --- a/vendor/github.com/spf13/cobra/completions.go +++ /dev/null @@ -1,811 +0,0 @@ -package cobra - -import ( - "fmt" - "os" - "strings" - "sync" - - "github.com/spf13/pflag" -) - -const ( - // ShellCompRequestCmd is the name of the hidden command that is used to request - // completion results from the program. It is used by the shell completion scripts. - ShellCompRequestCmd = "__complete" - // ShellCompNoDescRequestCmd is the name of the hidden command that is used to request - // completion results without their description. It is used by the shell completion scripts. - ShellCompNoDescRequestCmd = "__completeNoDesc" -) - -// Global map of flag completion functions. Make sure to use flagCompletionMutex before you try to read and write from it. -var flagCompletionFunctions = map[*pflag.Flag]func(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective){} - -// lock for reading and writing from flagCompletionFunctions -var flagCompletionMutex = &sync.RWMutex{} - -// ShellCompDirective is a bit map representing the different behaviors the shell -// can be instructed to have once completions have been provided. -type ShellCompDirective int - -type flagCompError struct { - subCommand string - flagName string -} - -func (e *flagCompError) Error() string { - return "Subcommand '" + e.subCommand + "' does not support flag '" + e.flagName + "'" -} - -const ( - // ShellCompDirectiveError indicates an error occurred and completions should be ignored. - ShellCompDirectiveError ShellCompDirective = 1 << iota - - // ShellCompDirectiveNoSpace indicates that the shell should not add a space - // after the completion even if there is a single completion provided. - ShellCompDirectiveNoSpace - - // ShellCompDirectiveNoFileComp indicates that the shell should not provide - // file completion even when no completion is provided. - ShellCompDirectiveNoFileComp - - // ShellCompDirectiveFilterFileExt indicates that the provided completions - // should be used as file extension filters. - // For flags, using Command.MarkFlagFilename() and Command.MarkPersistentFlagFilename() - // is a shortcut to using this directive explicitly. The BashCompFilenameExt - // annotation can also be used to obtain the same behavior for flags. - ShellCompDirectiveFilterFileExt - - // ShellCompDirectiveFilterDirs indicates that only directory names should - // be provided in file completion. To request directory names within another - // directory, the returned completions should specify the directory within - // which to search. The BashCompSubdirsInDir annotation can be used to - // obtain the same behavior but only for flags. - ShellCompDirectiveFilterDirs - - // =========================================================================== - - // All directives using iota should be above this one. - // For internal use. - shellCompDirectiveMaxValue - - // ShellCompDirectiveDefault indicates to let the shell perform its default - // behavior after completions have been provided. - // This one must be last to avoid messing up the iota count. - ShellCompDirectiveDefault ShellCompDirective = 0 -) - -const ( - // Constants for the completion command - compCmdName = "completion" - compCmdNoDescFlagName = "no-descriptions" - compCmdNoDescFlagDesc = "disable completion descriptions" - compCmdNoDescFlagDefault = false -) - -// CompletionOptions are the options to control shell completion -type CompletionOptions struct { - // DisableDefaultCmd prevents Cobra from creating a default 'completion' command - DisableDefaultCmd bool - // DisableNoDescFlag prevents Cobra from creating the '--no-descriptions' flag - // for shells that support completion descriptions - DisableNoDescFlag bool - // DisableDescriptions turns off all completion descriptions for shells - // that support them - DisableDescriptions bool - // HiddenDefaultCmd makes the default 'completion' command hidden - HiddenDefaultCmd bool -} - -// NoFileCompletions can be used to disable file completion for commands that should -// not trigger file completions. -func NoFileCompletions(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective) { - return nil, ShellCompDirectiveNoFileComp -} - -// RegisterFlagCompletionFunc should be called to register a function to provide completion for a flag. -func (c *Command) RegisterFlagCompletionFunc(flagName string, f func(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective)) error { - flag := c.Flag(flagName) - if flag == nil { - return fmt.Errorf("RegisterFlagCompletionFunc: flag '%s' does not exist", flagName) - } - flagCompletionMutex.Lock() - defer flagCompletionMutex.Unlock() - - if _, exists := flagCompletionFunctions[flag]; exists { - return fmt.Errorf("RegisterFlagCompletionFunc: flag '%s' already registered", flagName) - } - flagCompletionFunctions[flag] = f - return nil -} - -// Returns a string listing the different directive enabled in the specified parameter -func (d ShellCompDirective) string() string { - var directives []string - if d&ShellCompDirectiveError != 0 { - directives = append(directives, "ShellCompDirectiveError") - } - if d&ShellCompDirectiveNoSpace != 0 { - directives = append(directives, "ShellCompDirectiveNoSpace") - } - if d&ShellCompDirectiveNoFileComp != 0 { - directives = append(directives, "ShellCompDirectiveNoFileComp") - } - if d&ShellCompDirectiveFilterFileExt != 0 { - directives = append(directives, "ShellCompDirectiveFilterFileExt") - } - if d&ShellCompDirectiveFilterDirs != 0 { - directives = append(directives, "ShellCompDirectiveFilterDirs") - } - if len(directives) == 0 { - directives = append(directives, "ShellCompDirectiveDefault") - } - - if d >= shellCompDirectiveMaxValue { - return fmt.Sprintf("ERROR: unexpected ShellCompDirective value: %d", d) - } - return strings.Join(directives, ", ") -} - -// Adds a special hidden command that can be used to request custom completions. -func (c *Command) initCompleteCmd(args []string) { - completeCmd := &Command{ - Use: fmt.Sprintf("%s [command-line]", ShellCompRequestCmd), - Aliases: []string{ShellCompNoDescRequestCmd}, - DisableFlagsInUseLine: true, - Hidden: true, - DisableFlagParsing: true, - Args: MinimumNArgs(1), - Short: "Request shell completion choices for the specified command-line", - Long: fmt.Sprintf("%[2]s is a special command that is used by the shell completion logic\n%[1]s", - "to request completion choices for the specified command-line.", ShellCompRequestCmd), - Run: func(cmd *Command, args []string) { - finalCmd, completions, directive, err := cmd.getCompletions(args) - if err != nil { - CompErrorln(err.Error()) - // Keep going for multiple reasons: - // 1- There could be some valid completions even though there was an error - // 2- Even without completions, we need to print the directive - } - - noDescriptions := (cmd.CalledAs() == ShellCompNoDescRequestCmd) - for _, comp := range completions { - if noDescriptions { - // Remove any description that may be included following a tab character. - comp = strings.Split(comp, "\t")[0] - } - - // Make sure we only write the first line to the output. - // This is needed if a description contains a linebreak. - // Otherwise the shell scripts will interpret the other lines as new flags - // and could therefore provide a wrong completion. - comp = strings.Split(comp, "\n")[0] - - // Finally trim the completion. This is especially important to get rid - // of a trailing tab when there are no description following it. - // For example, a sub-command without a description should not be completed - // with a tab at the end (or else zsh will show a -- following it - // although there is no description). - comp = strings.TrimSpace(comp) - - // Print each possible completion to stdout for the completion script to consume. - fmt.Fprintln(finalCmd.OutOrStdout(), comp) - } - - // As the last printout, print the completion directive for the completion script to parse. - // The directive integer must be that last character following a single colon (:). - // The completion script expects : - fmt.Fprintf(finalCmd.OutOrStdout(), ":%d\n", directive) - - // Print some helpful info to stderr for the user to understand. - // Output from stderr must be ignored by the completion script. - fmt.Fprintf(finalCmd.ErrOrStderr(), "Completion ended with directive: %s\n", directive.string()) - }, - } - c.AddCommand(completeCmd) - subCmd, _, err := c.Find(args) - if err != nil || subCmd.Name() != ShellCompRequestCmd { - // Only create this special command if it is actually being called. - // This reduces possible side-effects of creating such a command; - // for example, having this command would cause problems to a - // cobra program that only consists of the root command, since this - // command would cause the root command to suddenly have a subcommand. - c.RemoveCommand(completeCmd) - } -} - -func (c *Command) getCompletions(args []string) (*Command, []string, ShellCompDirective, error) { - // The last argument, which is not completely typed by the user, - // should not be part of the list of arguments - toComplete := args[len(args)-1] - trimmedArgs := args[:len(args)-1] - - var finalCmd *Command - var finalArgs []string - var err error - // Find the real command for which completion must be performed - // check if we need to traverse here to parse local flags on parent commands - if c.Root().TraverseChildren { - finalCmd, finalArgs, err = c.Root().Traverse(trimmedArgs) - } else { - // For Root commands that don't specify any value for their Args fields, when we call - // Find(), if those Root commands don't have any sub-commands, they will accept arguments. - // However, because we have added the __complete sub-command in the current code path, the - // call to Find() -> legacyArgs() will return an error if there are any arguments. - // To avoid this, we first remove the __complete command to get back to having no sub-commands. - rootCmd := c.Root() - if len(rootCmd.Commands()) == 1 { - rootCmd.RemoveCommand(c) - } - - finalCmd, finalArgs, err = rootCmd.Find(trimmedArgs) - } - if err != nil { - // Unable to find the real command. E.g., someInvalidCmd - return c, []string{}, ShellCompDirectiveDefault, fmt.Errorf("Unable to find a command for arguments: %v", trimmedArgs) - } - finalCmd.ctx = c.ctx - - // Check if we are doing flag value completion before parsing the flags. - // This is important because if we are completing a flag value, we need to also - // remove the flag name argument from the list of finalArgs or else the parsing - // could fail due to an invalid value (incomplete) for the flag. - flag, finalArgs, toComplete, flagErr := checkIfFlagCompletion(finalCmd, finalArgs, toComplete) - - // Check if interspersed is false or -- was set on a previous arg. - // This works by counting the arguments. Normally -- is not counted as arg but - // if -- was already set or interspersed is false and there is already one arg then - // the extra added -- is counted as arg. - flagCompletion := true - _ = finalCmd.ParseFlags(append(finalArgs, "--")) - newArgCount := finalCmd.Flags().NArg() - - // Parse the flags early so we can check if required flags are set - if err = finalCmd.ParseFlags(finalArgs); err != nil { - return finalCmd, []string{}, ShellCompDirectiveDefault, fmt.Errorf("Error while parsing flags from args %v: %s", finalArgs, err.Error()) - } - - realArgCount := finalCmd.Flags().NArg() - if newArgCount > realArgCount { - // don't do flag completion (see above) - flagCompletion = false - } - // Error while attempting to parse flags - if flagErr != nil { - // If error type is flagCompError and we don't want flagCompletion we should ignore the error - if _, ok := flagErr.(*flagCompError); !(ok && !flagCompletion) { - return finalCmd, []string{}, ShellCompDirectiveDefault, flagErr - } - } - - // We only remove the flags from the arguments if DisableFlagParsing is not set. - // This is important for commands which have requested to do their own flag completion. - if !finalCmd.DisableFlagParsing { - finalArgs = finalCmd.Flags().Args() - } - - if flag != nil && flagCompletion { - // Check if we are completing a flag value subject to annotations - if validExts, present := flag.Annotations[BashCompFilenameExt]; present { - if len(validExts) != 0 { - // File completion filtered by extensions - return finalCmd, validExts, ShellCompDirectiveFilterFileExt, nil - } - - // The annotation requests simple file completion. There is no reason to do - // that since it is the default behavior anyway. Let's ignore this annotation - // in case the program also registered a completion function for this flag. - // Even though it is a mistake on the program's side, let's be nice when we can. - } - - if subDir, present := flag.Annotations[BashCompSubdirsInDir]; present { - if len(subDir) == 1 { - // Directory completion from within a directory - return finalCmd, subDir, ShellCompDirectiveFilterDirs, nil - } - // Directory completion - return finalCmd, []string{}, ShellCompDirectiveFilterDirs, nil - } - } - - var completions []string - var directive ShellCompDirective - - // Note that we want to perform flagname completion even if finalCmd.DisableFlagParsing==true; - // doing this allows for completion of persistant flag names even for commands that disable flag parsing. - // - // When doing completion of a flag name, as soon as an argument starts with - // a '-' we know it is a flag. We cannot use isFlagArg() here as it requires - // the flag name to be complete - if flag == nil && len(toComplete) > 0 && toComplete[0] == '-' && !strings.Contains(toComplete, "=") && flagCompletion { - // First check for required flags - completions = completeRequireFlags(finalCmd, toComplete) - - // If we have not found any required flags, only then can we show regular flags - if len(completions) == 0 { - doCompleteFlags := func(flag *pflag.Flag) { - if !flag.Changed || - strings.Contains(flag.Value.Type(), "Slice") || - strings.Contains(flag.Value.Type(), "Array") { - // If the flag is not already present, or if it can be specified multiple times (Array or Slice) - // we suggest it as a completion - completions = append(completions, getFlagNameCompletions(flag, toComplete)...) - } - } - - // We cannot use finalCmd.Flags() because we may not have called ParsedFlags() for commands - // that have set DisableFlagParsing; it is ParseFlags() that merges the inherited and - // non-inherited flags. - finalCmd.InheritedFlags().VisitAll(func(flag *pflag.Flag) { - doCompleteFlags(flag) - }) - finalCmd.NonInheritedFlags().VisitAll(func(flag *pflag.Flag) { - doCompleteFlags(flag) - }) - } - - directive = ShellCompDirectiveNoFileComp - if len(completions) == 1 && strings.HasSuffix(completions[0], "=") { - // If there is a single completion, the shell usually adds a space - // after the completion. We don't want that if the flag ends with an = - directive = ShellCompDirectiveNoSpace - } - - if !finalCmd.DisableFlagParsing { - // If DisableFlagParsing==false, we have completed the flags as known by Cobra; - // we can return what we found. - // If DisableFlagParsing==true, Cobra may not be aware of all flags, so we - // let the logic continue to see if ValidArgsFunction needs to be called. - return finalCmd, completions, directive, nil - } - } else { - directive = ShellCompDirectiveDefault - if flag == nil { - foundLocalNonPersistentFlag := false - // If TraverseChildren is true on the root command we don't check for - // local flags because we can use a local flag on a parent command - if !finalCmd.Root().TraverseChildren { - // Check if there are any local, non-persistent flags on the command-line - localNonPersistentFlags := finalCmd.LocalNonPersistentFlags() - finalCmd.NonInheritedFlags().VisitAll(func(flag *pflag.Flag) { - if localNonPersistentFlags.Lookup(flag.Name) != nil && flag.Changed { - foundLocalNonPersistentFlag = true - } - }) - } - - // Complete subcommand names, including the help command - if len(finalArgs) == 0 && !foundLocalNonPersistentFlag { - // We only complete sub-commands if: - // - there are no arguments on the command-line and - // - there are no local, non-persistent flags on the command-line or TraverseChildren is true - for _, subCmd := range finalCmd.Commands() { - if subCmd.IsAvailableCommand() || subCmd == finalCmd.helpCommand { - if strings.HasPrefix(subCmd.Name(), toComplete) { - completions = append(completions, fmt.Sprintf("%s\t%s", subCmd.Name(), subCmd.Short)) - } - directive = ShellCompDirectiveNoFileComp - } - } - } - - // Complete required flags even without the '-' prefix - completions = append(completions, completeRequireFlags(finalCmd, toComplete)...) - - // Always complete ValidArgs, even if we are completing a subcommand name. - // This is for commands that have both subcommands and ValidArgs. - if len(finalCmd.ValidArgs) > 0 { - if len(finalArgs) == 0 { - // ValidArgs are only for the first argument - for _, validArg := range finalCmd.ValidArgs { - if strings.HasPrefix(validArg, toComplete) { - completions = append(completions, validArg) - } - } - directive = ShellCompDirectiveNoFileComp - - // If no completions were found within commands or ValidArgs, - // see if there are any ArgAliases that should be completed. - if len(completions) == 0 { - for _, argAlias := range finalCmd.ArgAliases { - if strings.HasPrefix(argAlias, toComplete) { - completions = append(completions, argAlias) - } - } - } - } - - // If there are ValidArgs specified (even if they don't match), we stop completion. - // Only one of ValidArgs or ValidArgsFunction can be used for a single command. - return finalCmd, completions, directive, nil - } - - // Let the logic continue so as to add any ValidArgsFunction completions, - // even if we already found sub-commands. - // This is for commands that have subcommands but also specify a ValidArgsFunction. - } - } - - // Find the completion function for the flag or command - var completionFn func(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective) - if flag != nil && flagCompletion { - flagCompletionMutex.RLock() - completionFn = flagCompletionFunctions[flag] - flagCompletionMutex.RUnlock() - } else { - completionFn = finalCmd.ValidArgsFunction - } - if completionFn != nil { - // Go custom completion defined for this flag or command. - // Call the registered completion function to get the completions. - var comps []string - comps, directive = completionFn(finalCmd, finalArgs, toComplete) - completions = append(completions, comps...) - } - - return finalCmd, completions, directive, nil -} - -func getFlagNameCompletions(flag *pflag.Flag, toComplete string) []string { - if nonCompletableFlag(flag) { - return []string{} - } - - var completions []string - flagName := "--" + flag.Name - if strings.HasPrefix(flagName, toComplete) { - // Flag without the = - completions = append(completions, fmt.Sprintf("%s\t%s", flagName, flag.Usage)) - - // Why suggest both long forms: --flag and --flag= ? - // This forces the user to *always* have to type either an = or a space after the flag name. - // Let's be nice and avoid making users have to do that. - // Since boolean flags and shortname flags don't show the = form, let's go that route and never show it. - // The = form will still work, we just won't suggest it. - // This also makes the list of suggested flags shorter as we avoid all the = forms. - // - // if len(flag.NoOptDefVal) == 0 { - // // Flag requires a value, so it can be suffixed with = - // flagName += "=" - // completions = append(completions, fmt.Sprintf("%s\t%s", flagName, flag.Usage)) - // } - } - - flagName = "-" + flag.Shorthand - if len(flag.Shorthand) > 0 && strings.HasPrefix(flagName, toComplete) { - completions = append(completions, fmt.Sprintf("%s\t%s", flagName, flag.Usage)) - } - - return completions -} - -func completeRequireFlags(finalCmd *Command, toComplete string) []string { - var completions []string - - doCompleteRequiredFlags := func(flag *pflag.Flag) { - if _, present := flag.Annotations[BashCompOneRequiredFlag]; present { - if !flag.Changed { - // If the flag is not already present, we suggest it as a completion - completions = append(completions, getFlagNameCompletions(flag, toComplete)...) - } - } - } - - // We cannot use finalCmd.Flags() because we may not have called ParsedFlags() for commands - // that have set DisableFlagParsing; it is ParseFlags() that merges the inherited and - // non-inherited flags. - finalCmd.InheritedFlags().VisitAll(func(flag *pflag.Flag) { - doCompleteRequiredFlags(flag) - }) - finalCmd.NonInheritedFlags().VisitAll(func(flag *pflag.Flag) { - doCompleteRequiredFlags(flag) - }) - - return completions -} - -func checkIfFlagCompletion(finalCmd *Command, args []string, lastArg string) (*pflag.Flag, []string, string, error) { - if finalCmd.DisableFlagParsing { - // We only do flag completion if we are allowed to parse flags - // This is important for commands which have requested to do their own flag completion. - return nil, args, lastArg, nil - } - - var flagName string - trimmedArgs := args - flagWithEqual := false - orgLastArg := lastArg - - // When doing completion of a flag name, as soon as an argument starts with - // a '-' we know it is a flag. We cannot use isFlagArg() here as that function - // requires the flag name to be complete - if len(lastArg) > 0 && lastArg[0] == '-' { - if index := strings.Index(lastArg, "="); index >= 0 { - // Flag with an = - if strings.HasPrefix(lastArg[:index], "--") { - // Flag has full name - flagName = lastArg[2:index] - } else { - // Flag is shorthand - // We have to get the last shorthand flag name - // e.g. `-asd` => d to provide the correct completion - // https://github.com/spf13/cobra/issues/1257 - flagName = lastArg[index-1 : index] - } - lastArg = lastArg[index+1:] - flagWithEqual = true - } else { - // Normal flag completion - return nil, args, lastArg, nil - } - } - - if len(flagName) == 0 { - if len(args) > 0 { - prevArg := args[len(args)-1] - if isFlagArg(prevArg) { - // Only consider the case where the flag does not contain an =. - // If the flag contains an = it means it has already been fully processed, - // so we don't need to deal with it here. - if index := strings.Index(prevArg, "="); index < 0 { - if strings.HasPrefix(prevArg, "--") { - // Flag has full name - flagName = prevArg[2:] - } else { - // Flag is shorthand - // We have to get the last shorthand flag name - // e.g. `-asd` => d to provide the correct completion - // https://github.com/spf13/cobra/issues/1257 - flagName = prevArg[len(prevArg)-1:] - } - // Remove the uncompleted flag or else there could be an error created - // for an invalid value for that flag - trimmedArgs = args[:len(args)-1] - } - } - } - } - - if len(flagName) == 0 { - // Not doing flag completion - return nil, trimmedArgs, lastArg, nil - } - - flag := findFlag(finalCmd, flagName) - if flag == nil { - // Flag not supported by this command, the interspersed option might be set so return the original args - return nil, args, orgLastArg, &flagCompError{subCommand: finalCmd.Name(), flagName: flagName} - } - - if !flagWithEqual { - if len(flag.NoOptDefVal) != 0 { - // We had assumed dealing with a two-word flag but the flag is a boolean flag. - // In that case, there is no value following it, so we are not really doing flag completion. - // Reset everything to do noun completion. - trimmedArgs = args - flag = nil - } - } - - return flag, trimmedArgs, lastArg, nil -} - -// initDefaultCompletionCmd adds a default 'completion' command to c. -// This function will do nothing if any of the following is true: -// 1- the feature has been explicitly disabled by the program, -// 2- c has no subcommands (to avoid creating one), -// 3- c already has a 'completion' command provided by the program. -func (c *Command) initDefaultCompletionCmd() { - if c.CompletionOptions.DisableDefaultCmd || !c.HasSubCommands() { - return - } - - for _, cmd := range c.commands { - if cmd.Name() == compCmdName || cmd.HasAlias(compCmdName) { - // A completion command is already available - return - } - } - - haveNoDescFlag := !c.CompletionOptions.DisableNoDescFlag && !c.CompletionOptions.DisableDescriptions - - completionCmd := &Command{ - Use: compCmdName, - Short: "Generate the autocompletion script for the specified shell", - Long: fmt.Sprintf(`Generate the autocompletion script for %[1]s for the specified shell. -See each sub-command's help for details on how to use the generated script. -`, c.Root().Name()), - Args: NoArgs, - ValidArgsFunction: NoFileCompletions, - Hidden: c.CompletionOptions.HiddenDefaultCmd, - } - c.AddCommand(completionCmd) - - out := c.OutOrStdout() - noDesc := c.CompletionOptions.DisableDescriptions - shortDesc := "Generate the autocompletion script for %s" - bash := &Command{ - Use: "bash", - Short: fmt.Sprintf(shortDesc, "bash"), - Long: fmt.Sprintf(`Generate the autocompletion script for the bash shell. - -This script depends on the 'bash-completion' package. -If it is not installed already, you can install it via your OS's package manager. - -To load completions in your current shell session: - - source <(%[1]s completion bash) - -To load completions for every new session, execute once: - -#### Linux: - - %[1]s completion bash > /etc/bash_completion.d/%[1]s - -#### macOS: - - %[1]s completion bash > /usr/local/etc/bash_completion.d/%[1]s - -You will need to start a new shell for this setup to take effect. -`, c.Root().Name()), - Args: NoArgs, - DisableFlagsInUseLine: true, - ValidArgsFunction: NoFileCompletions, - RunE: func(cmd *Command, args []string) error { - return cmd.Root().GenBashCompletionV2(out, !noDesc) - }, - } - if haveNoDescFlag { - bash.Flags().BoolVar(&noDesc, compCmdNoDescFlagName, compCmdNoDescFlagDefault, compCmdNoDescFlagDesc) - } - - zsh := &Command{ - Use: "zsh", - Short: fmt.Sprintf(shortDesc, "zsh"), - Long: fmt.Sprintf(`Generate the autocompletion script for the zsh shell. - -If shell completion is not already enabled in your environment you will need -to enable it. You can execute the following once: - - echo "autoload -U compinit; compinit" >> ~/.zshrc - -To load completions for every new session, execute once: - -#### Linux: - - %[1]s completion zsh > "${fpath[1]}/_%[1]s" - -#### macOS: - - %[1]s completion zsh > /usr/local/share/zsh/site-functions/_%[1]s - -You will need to start a new shell for this setup to take effect. -`, c.Root().Name()), - Args: NoArgs, - ValidArgsFunction: NoFileCompletions, - RunE: func(cmd *Command, args []string) error { - if noDesc { - return cmd.Root().GenZshCompletionNoDesc(out) - } - return cmd.Root().GenZshCompletion(out) - }, - } - if haveNoDescFlag { - zsh.Flags().BoolVar(&noDesc, compCmdNoDescFlagName, compCmdNoDescFlagDefault, compCmdNoDescFlagDesc) - } - - fish := &Command{ - Use: "fish", - Short: fmt.Sprintf(shortDesc, "fish"), - Long: fmt.Sprintf(`Generate the autocompletion script for the fish shell. - -To load completions in your current shell session: - - %[1]s completion fish | source - -To load completions for every new session, execute once: - - %[1]s completion fish > ~/.config/fish/completions/%[1]s.fish - -You will need to start a new shell for this setup to take effect. -`, c.Root().Name()), - Args: NoArgs, - ValidArgsFunction: NoFileCompletions, - RunE: func(cmd *Command, args []string) error { - return cmd.Root().GenFishCompletion(out, !noDesc) - }, - } - if haveNoDescFlag { - fish.Flags().BoolVar(&noDesc, compCmdNoDescFlagName, compCmdNoDescFlagDefault, compCmdNoDescFlagDesc) - } - - powershell := &Command{ - Use: "powershell", - Short: fmt.Sprintf(shortDesc, "powershell"), - Long: fmt.Sprintf(`Generate the autocompletion script for powershell. - -To load completions in your current shell session: - - %[1]s completion powershell | Out-String | Invoke-Expression - -To load completions for every new session, add the output of the above command -to your powershell profile. -`, c.Root().Name()), - Args: NoArgs, - ValidArgsFunction: NoFileCompletions, - RunE: func(cmd *Command, args []string) error { - if noDesc { - return cmd.Root().GenPowerShellCompletion(out) - } - return cmd.Root().GenPowerShellCompletionWithDesc(out) - - }, - } - if haveNoDescFlag { - powershell.Flags().BoolVar(&noDesc, compCmdNoDescFlagName, compCmdNoDescFlagDefault, compCmdNoDescFlagDesc) - } - - completionCmd.AddCommand(bash, zsh, fish, powershell) -} - -func findFlag(cmd *Command, name string) *pflag.Flag { - flagSet := cmd.Flags() - if len(name) == 1 { - // First convert the short flag into a long flag - // as the cmd.Flag() search only accepts long flags - if short := flagSet.ShorthandLookup(name); short != nil { - name = short.Name - } else { - set := cmd.InheritedFlags() - if short = set.ShorthandLookup(name); short != nil { - name = short.Name - } else { - return nil - } - } - } - return cmd.Flag(name) -} - -// CompDebug prints the specified string to the same file as where the -// completion script prints its logs. -// Note that completion printouts should never be on stdout as they would -// be wrongly interpreted as actual completion choices by the completion script. -func CompDebug(msg string, printToStdErr bool) { - msg = fmt.Sprintf("[Debug] %s", msg) - - // Such logs are only printed when the user has set the environment - // variable BASH_COMP_DEBUG_FILE to the path of some file to be used. - if path := os.Getenv("BASH_COMP_DEBUG_FILE"); path != "" { - f, err := os.OpenFile(path, - os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) - if err == nil { - defer f.Close() - WriteStringAndCheck(f, msg) - } - } - - if printToStdErr { - // Must print to stderr for this not to be read by the completion script. - fmt.Fprint(os.Stderr, msg) - } -} - -// CompDebugln prints the specified string with a newline at the end -// to the same file as where the completion script prints its logs. -// Such logs are only printed when the user has set the environment -// variable BASH_COMP_DEBUG_FILE to the path of some file to be used. -func CompDebugln(msg string, printToStdErr bool) { - CompDebug(fmt.Sprintf("%s\n", msg), printToStdErr) -} - -// CompError prints the specified completion message to stderr. -func CompError(msg string) { - msg = fmt.Sprintf("[Error] %s", msg) - CompDebug(msg, true) -} - -// CompErrorln prints the specified completion message to stderr with a newline at the end. -func CompErrorln(msg string) { - CompError(fmt.Sprintf("%s\n", msg)) -} diff --git a/vendor/github.com/spf13/cobra/fish_completions.go b/vendor/github.com/spf13/cobra/fish_completions.go deleted file mode 100644 index bb57fd5..0000000 --- a/vendor/github.com/spf13/cobra/fish_completions.go +++ /dev/null @@ -1,219 +0,0 @@ -package cobra - -import ( - "bytes" - "fmt" - "io" - "os" - "strings" -) - -func genFishComp(buf io.StringWriter, name string, includeDesc bool) { - // Variables should not contain a '-' or ':' character - nameForVar := name - nameForVar = strings.Replace(nameForVar, "-", "_", -1) - nameForVar = strings.Replace(nameForVar, ":", "_", -1) - - compCmd := ShellCompRequestCmd - if !includeDesc { - compCmd = ShellCompNoDescRequestCmd - } - WriteStringAndCheck(buf, fmt.Sprintf("# fish completion for %-36s -*- shell-script -*-\n", name)) - WriteStringAndCheck(buf, fmt.Sprintf(` -function __%[1]s_debug - set -l file "$BASH_COMP_DEBUG_FILE" - if test -n "$file" - echo "$argv" >> $file - end -end - -function __%[1]s_perform_completion - __%[1]s_debug "Starting __%[1]s_perform_completion" - - # Extract all args except the last one - set -l args (commandline -opc) - # Extract the last arg and escape it in case it is a space - set -l lastArg (string escape -- (commandline -ct)) - - __%[1]s_debug "args: $args" - __%[1]s_debug "last arg: $lastArg" - - set -l requestComp "$args[1] %[3]s $args[2..-1] $lastArg" - - __%[1]s_debug "Calling $requestComp" - set -l results (eval $requestComp 2> /dev/null) - - # Some programs may output extra empty lines after the directive. - # Let's ignore them or else it will break completion. - # Ref: https://github.com/spf13/cobra/issues/1279 - for line in $results[-1..1] - if test (string trim -- $line) = "" - # Found an empty line, remove it - set results $results[1..-2] - else - # Found non-empty line, we have our proper output - break - end - end - - set -l comps $results[1..-2] - set -l directiveLine $results[-1] - - # For Fish, when completing a flag with an = (e.g., -n=) - # completions must be prefixed with the flag - set -l flagPrefix (string match -r -- '-.*=' "$lastArg") - - __%[1]s_debug "Comps: $comps" - __%[1]s_debug "DirectiveLine: $directiveLine" - __%[1]s_debug "flagPrefix: $flagPrefix" - - for comp in $comps - printf "%%s%%s\n" "$flagPrefix" "$comp" - end - - printf "%%s\n" "$directiveLine" -end - -# This function does two things: -# - Obtain the completions and store them in the global __%[1]s_comp_results -# - Return false if file completion should be performed -function __%[1]s_prepare_completions - __%[1]s_debug "" - __%[1]s_debug "========= starting completion logic ==========" - - # Start fresh - set --erase __%[1]s_comp_results - - set -l results (__%[1]s_perform_completion) - __%[1]s_debug "Completion results: $results" - - if test -z "$results" - __%[1]s_debug "No completion, probably due to a failure" - # Might as well do file completion, in case it helps - return 1 - end - - set -l directive (string sub --start 2 $results[-1]) - set --global __%[1]s_comp_results $results[1..-2] - - __%[1]s_debug "Completions are: $__%[1]s_comp_results" - __%[1]s_debug "Directive is: $directive" - - set -l shellCompDirectiveError %[4]d - set -l shellCompDirectiveNoSpace %[5]d - set -l shellCompDirectiveNoFileComp %[6]d - set -l shellCompDirectiveFilterFileExt %[7]d - set -l shellCompDirectiveFilterDirs %[8]d - - if test -z "$directive" - set directive 0 - end - - set -l compErr (math (math --scale 0 $directive / $shellCompDirectiveError) %% 2) - if test $compErr -eq 1 - __%[1]s_debug "Received error directive: aborting." - # Might as well do file completion, in case it helps - return 1 - end - - set -l filefilter (math (math --scale 0 $directive / $shellCompDirectiveFilterFileExt) %% 2) - set -l dirfilter (math (math --scale 0 $directive / $shellCompDirectiveFilterDirs) %% 2) - if test $filefilter -eq 1; or test $dirfilter -eq 1 - __%[1]s_debug "File extension filtering or directory filtering not supported" - # Do full file completion instead - return 1 - end - - set -l nospace (math (math --scale 0 $directive / $shellCompDirectiveNoSpace) %% 2) - set -l nofiles (math (math --scale 0 $directive / $shellCompDirectiveNoFileComp) %% 2) - - __%[1]s_debug "nospace: $nospace, nofiles: $nofiles" - - # If we want to prevent a space, or if file completion is NOT disabled, - # we need to count the number of valid completions. - # To do so, we will filter on prefix as the completions we have received - # may not already be filtered so as to allow fish to match on different - # criteria than the prefix. - if test $nospace -ne 0; or test $nofiles -eq 0 - set -l prefix (commandline -t | string escape --style=regex) - __%[1]s_debug "prefix: $prefix" - - set -l completions (string match -r -- "^$prefix.*" $__%[1]s_comp_results) - set --global __%[1]s_comp_results $completions - __%[1]s_debug "Filtered completions are: $__%[1]s_comp_results" - - # Important not to quote the variable for count to work - set -l numComps (count $__%[1]s_comp_results) - __%[1]s_debug "numComps: $numComps" - - if test $numComps -eq 1; and test $nospace -ne 0 - # We must first split on \t to get rid of the descriptions to be - # able to check what the actual completion will be. - # We don't need descriptions anyway since there is only a single - # real completion which the shell will expand immediately. - set -l split (string split --max 1 \t $__%[1]s_comp_results[1]) - - # Fish won't add a space if the completion ends with any - # of the following characters: @=/:., - set -l lastChar (string sub -s -1 -- $split) - if not string match -r -q "[@=/:.,]" -- "$lastChar" - # In other cases, to support the "nospace" directive we trick the shell - # by outputting an extra, longer completion. - __%[1]s_debug "Adding second completion to perform nospace directive" - set --global __%[1]s_comp_results $split[1] $split[1]. - __%[1]s_debug "Completions are now: $__%[1]s_comp_results" - end - end - - if test $numComps -eq 0; and test $nofiles -eq 0 - # To be consistent with bash and zsh, we only trigger file - # completion when there are no other completions - __%[1]s_debug "Requesting file completion" - return 1 - end - end - - return 0 -end - -# Since Fish completions are only loaded once the user triggers them, we trigger them ourselves -# so we can properly delete any completions provided by another script. -# Only do this if the program can be found, or else fish may print some errors; besides, -# the existing completions will only be loaded if the program can be found. -if type -q "%[2]s" - # The space after the program name is essential to trigger completion for the program - # and not completion of the program name itself. - # Also, we use '> /dev/null 2>&1' since '&>' is not supported in older versions of fish. - complete --do-complete "%[2]s " > /dev/null 2>&1 -end - -# Remove any pre-existing completions for the program since we will be handling all of them. -complete -c %[2]s -e - -# The call to __%[1]s_prepare_completions will setup __%[1]s_comp_results -# which provides the program's completion choices. -complete -c %[2]s -n '__%[1]s_prepare_completions' -f -a '$__%[1]s_comp_results' - -`, nameForVar, name, compCmd, - ShellCompDirectiveError, ShellCompDirectiveNoSpace, ShellCompDirectiveNoFileComp, - ShellCompDirectiveFilterFileExt, ShellCompDirectiveFilterDirs)) -} - -// GenFishCompletion generates fish completion file and writes to the passed writer. -func (c *Command) GenFishCompletion(w io.Writer, includeDesc bool) error { - buf := new(bytes.Buffer) - genFishComp(buf, c.Name(), includeDesc) - _, err := buf.WriteTo(w) - return err -} - -// GenFishCompletionFile generates fish completion file. -func (c *Command) GenFishCompletionFile(filename string, includeDesc bool) error { - outFile, err := os.Create(filename) - if err != nil { - return err - } - defer outFile.Close() - - return c.GenFishCompletion(outFile, includeDesc) -} diff --git a/vendor/github.com/spf13/cobra/fish_completions.md b/vendor/github.com/spf13/cobra/fish_completions.md deleted file mode 100644 index 19b2ed1..0000000 --- a/vendor/github.com/spf13/cobra/fish_completions.md +++ /dev/null @@ -1,4 +0,0 @@ -## Generating Fish Completions For Your cobra.Command - -Please refer to [Shell Completions](shell_completions.md) for details. - diff --git a/vendor/github.com/spf13/cobra/powershell_completions.go b/vendor/github.com/spf13/cobra/powershell_completions.go deleted file mode 100644 index 62d719f..0000000 --- a/vendor/github.com/spf13/cobra/powershell_completions.go +++ /dev/null @@ -1,285 +0,0 @@ -// The generated scripts require PowerShell v5.0+ (which comes Windows 10, but -// can be downloaded separately for windows 7 or 8.1). - -package cobra - -import ( - "bytes" - "fmt" - "io" - "os" -) - -func genPowerShellComp(buf io.StringWriter, name string, includeDesc bool) { - compCmd := ShellCompRequestCmd - if !includeDesc { - compCmd = ShellCompNoDescRequestCmd - } - WriteStringAndCheck(buf, fmt.Sprintf(`# powershell completion for %-36[1]s -*- shell-script -*- - -function __%[1]s_debug { - if ($env:BASH_COMP_DEBUG_FILE) { - "$args" | Out-File -Append -FilePath "$env:BASH_COMP_DEBUG_FILE" - } -} - -filter __%[1]s_escapeStringWithSpecialChars { -`+" $_ -replace '\\s|#|@|\\$|;|,|''|\\{|\\}|\\(|\\)|\"|`|\\||<|>|&','`$&'"+` -} - -Register-ArgumentCompleter -CommandName '%[1]s' -ScriptBlock { - param( - $WordToComplete, - $CommandAst, - $CursorPosition - ) - - # Get the current command line and convert into a string - $Command = $CommandAst.CommandElements - $Command = "$Command" - - __%[1]s_debug "" - __%[1]s_debug "========= starting completion logic ==========" - __%[1]s_debug "WordToComplete: $WordToComplete Command: $Command CursorPosition: $CursorPosition" - - # The user could have moved the cursor backwards on the command-line. - # We need to trigger completion from the $CursorPosition location, so we need - # to truncate the command-line ($Command) up to the $CursorPosition location. - # Make sure the $Command is longer then the $CursorPosition before we truncate. - # This happens because the $Command does not include the last space. - if ($Command.Length -gt $CursorPosition) { - $Command=$Command.Substring(0,$CursorPosition) - } - __%[1]s_debug "Truncated command: $Command" - - $ShellCompDirectiveError=%[3]d - $ShellCompDirectiveNoSpace=%[4]d - $ShellCompDirectiveNoFileComp=%[5]d - $ShellCompDirectiveFilterFileExt=%[6]d - $ShellCompDirectiveFilterDirs=%[7]d - - # Prepare the command to request completions for the program. - # Split the command at the first space to separate the program and arguments. - $Program,$Arguments = $Command.Split(" ",2) - $RequestComp="$Program %[2]s $Arguments" - __%[1]s_debug "RequestComp: $RequestComp" - - # we cannot use $WordToComplete because it - # has the wrong values if the cursor was moved - # so use the last argument - if ($WordToComplete -ne "" ) { - $WordToComplete = $Arguments.Split(" ")[-1] - } - __%[1]s_debug "New WordToComplete: $WordToComplete" - - - # Check for flag with equal sign - $IsEqualFlag = ($WordToComplete -Like "--*=*" ) - if ( $IsEqualFlag ) { - __%[1]s_debug "Completing equal sign flag" - # Remove the flag part - $Flag,$WordToComplete = $WordToComplete.Split("=",2) - } - - if ( $WordToComplete -eq "" -And ( -Not $IsEqualFlag )) { - # If the last parameter is complete (there is a space following it) - # We add an extra empty parameter so we can indicate this to the go method. - __%[1]s_debug "Adding extra empty parameter" -`+" # We need to use `\"`\" to pass an empty argument a \"\" or '' does not work!!!"+` -`+" $RequestComp=\"$RequestComp\" + ' `\"`\"'"+` - } - - __%[1]s_debug "Calling $RequestComp" - #call the command store the output in $out and redirect stderr and stdout to null - # $Out is an array contains each line per element - Invoke-Expression -OutVariable out "$RequestComp" 2>&1 | Out-Null - - - # get directive from last line - [int]$Directive = $Out[-1].TrimStart(':') - if ($Directive -eq "") { - # There is no directive specified - $Directive = 0 - } - __%[1]s_debug "The completion directive is: $Directive" - - # remove directive (last element) from out - $Out = $Out | Where-Object { $_ -ne $Out[-1] } - __%[1]s_debug "The completions are: $Out" - - if (($Directive -band $ShellCompDirectiveError) -ne 0 ) { - # Error code. No completion. - __%[1]s_debug "Received error from custom completion go code" - return - } - - $Longest = 0 - $Values = $Out | ForEach-Object { - #Split the output in name and description -`+" $Name, $Description = $_.Split(\"`t\",2)"+` - __%[1]s_debug "Name: $Name Description: $Description" - - # Look for the longest completion so that we can format things nicely - if ($Longest -lt $Name.Length) { - $Longest = $Name.Length - } - - # Set the description to a one space string if there is none set. - # This is needed because the CompletionResult does not accept an empty string as argument - if (-Not $Description) { - $Description = " " - } - @{Name="$Name";Description="$Description"} - } - - - $Space = " " - if (($Directive -band $ShellCompDirectiveNoSpace) -ne 0 ) { - # remove the space here - __%[1]s_debug "ShellCompDirectiveNoSpace is called" - $Space = "" - } - - if ((($Directive -band $ShellCompDirectiveFilterFileExt) -ne 0 ) -or - (($Directive -band $ShellCompDirectiveFilterDirs) -ne 0 )) { - __%[1]s_debug "ShellCompDirectiveFilterFileExt ShellCompDirectiveFilterDirs are not supported" - - # return here to prevent the completion of the extensions - return - } - - $Values = $Values | Where-Object { - # filter the result - $_.Name -like "$WordToComplete*" - - # Join the flag back if we have an equal sign flag - if ( $IsEqualFlag ) { - __%[1]s_debug "Join the equal sign flag back to the completion value" - $_.Name = $Flag + "=" + $_.Name - } - } - - if (($Directive -band $ShellCompDirectiveNoFileComp) -ne 0 ) { - __%[1]s_debug "ShellCompDirectiveNoFileComp is called" - - if ($Values.Length -eq 0) { - # Just print an empty string here so the - # shell does not start to complete paths. - # We cannot use CompletionResult here because - # it does not accept an empty string as argument. - "" - return - } - } - - # Get the current mode - $Mode = (Get-PSReadLineKeyHandler | Where-Object {$_.Key -eq "Tab" }).Function - __%[1]s_debug "Mode: $Mode" - - $Values | ForEach-Object { - - # store temporary because switch will overwrite $_ - $comp = $_ - - # PowerShell supports three different completion modes - # - TabCompleteNext (default windows style - on each key press the next option is displayed) - # - Complete (works like bash) - # - MenuComplete (works like zsh) - # You set the mode with Set-PSReadLineKeyHandler -Key Tab -Function - - # CompletionResult Arguments: - # 1) CompletionText text to be used as the auto completion result - # 2) ListItemText text to be displayed in the suggestion list - # 3) ResultType type of completion result - # 4) ToolTip text for the tooltip with details about the object - - switch ($Mode) { - - # bash like - "Complete" { - - if ($Values.Length -eq 1) { - __%[1]s_debug "Only one completion left" - - # insert space after value - [System.Management.Automation.CompletionResult]::new($($comp.Name | __%[1]s_escapeStringWithSpecialChars) + $Space, "$($comp.Name)", 'ParameterValue', "$($comp.Description)") - - } else { - # Add the proper number of spaces to align the descriptions - while($comp.Name.Length -lt $Longest) { - $comp.Name = $comp.Name + " " - } - - # Check for empty description and only add parentheses if needed - if ($($comp.Description) -eq " " ) { - $Description = "" - } else { - $Description = " ($($comp.Description))" - } - - [System.Management.Automation.CompletionResult]::new("$($comp.Name)$Description", "$($comp.Name)$Description", 'ParameterValue', "$($comp.Description)") - } - } - - # zsh like - "MenuComplete" { - # insert space after value - # MenuComplete will automatically show the ToolTip of - # the highlighted value at the bottom of the suggestions. - [System.Management.Automation.CompletionResult]::new($($comp.Name | __%[1]s_escapeStringWithSpecialChars) + $Space, "$($comp.Name)", 'ParameterValue', "$($comp.Description)") - } - - # TabCompleteNext and in case we get something unknown - Default { - # Like MenuComplete but we don't want to add a space here because - # the user need to press space anyway to get the completion. - # Description will not be shown because that's not possible with TabCompleteNext - [System.Management.Automation.CompletionResult]::new($($comp.Name | __%[1]s_escapeStringWithSpecialChars), "$($comp.Name)", 'ParameterValue', "$($comp.Description)") - } - } - - } -} -`, name, compCmd, - ShellCompDirectiveError, ShellCompDirectiveNoSpace, ShellCompDirectiveNoFileComp, - ShellCompDirectiveFilterFileExt, ShellCompDirectiveFilterDirs)) -} - -func (c *Command) genPowerShellCompletion(w io.Writer, includeDesc bool) error { - buf := new(bytes.Buffer) - genPowerShellComp(buf, c.Name(), includeDesc) - _, err := buf.WriteTo(w) - return err -} - -func (c *Command) genPowerShellCompletionFile(filename string, includeDesc bool) error { - outFile, err := os.Create(filename) - if err != nil { - return err - } - defer outFile.Close() - - return c.genPowerShellCompletion(outFile, includeDesc) -} - -// GenPowerShellCompletionFile generates powershell completion file without descriptions. -func (c *Command) GenPowerShellCompletionFile(filename string) error { - return c.genPowerShellCompletionFile(filename, false) -} - -// GenPowerShellCompletion generates powershell completion file without descriptions -// and writes it to the passed writer. -func (c *Command) GenPowerShellCompletion(w io.Writer) error { - return c.genPowerShellCompletion(w, false) -} - -// GenPowerShellCompletionFileWithDesc generates powershell completion file with descriptions. -func (c *Command) GenPowerShellCompletionFileWithDesc(filename string) error { - return c.genPowerShellCompletionFile(filename, true) -} - -// GenPowerShellCompletionWithDesc generates powershell completion file with descriptions -// and writes it to the passed writer. -func (c *Command) GenPowerShellCompletionWithDesc(w io.Writer) error { - return c.genPowerShellCompletion(w, true) -} diff --git a/vendor/github.com/spf13/cobra/powershell_completions.md b/vendor/github.com/spf13/cobra/powershell_completions.md deleted file mode 100644 index c449f1e..0000000 --- a/vendor/github.com/spf13/cobra/powershell_completions.md +++ /dev/null @@ -1,3 +0,0 @@ -# Generating PowerShell Completions For Your Own cobra.Command - -Please refer to [Shell Completions](shell_completions.md#powershell-completions) for details. diff --git a/vendor/github.com/spf13/cobra/projects_using_cobra.md b/vendor/github.com/spf13/cobra/projects_using_cobra.md deleted file mode 100644 index 9674c34..0000000 --- a/vendor/github.com/spf13/cobra/projects_using_cobra.md +++ /dev/null @@ -1,51 +0,0 @@ -## Projects using Cobra - -- [Arduino CLI](https://github.com/arduino/arduino-cli) -- [Bleve](http://www.blevesearch.com/) -- [CockroachDB](http://www.cockroachlabs.com/) -- [Cosmos SDK](https://github.com/cosmos/cosmos-sdk) -- [Datree](https://github.com/datreeio/datree) -- [Delve](https://github.com/derekparker/delve) -- [Docker (distribution)](https://github.com/docker/distribution) -- [Etcd](https://etcd.io/) -- [Gardener](https://github.com/gardener/gardenctl) -- [Giant Swarm's gsctl](https://github.com/giantswarm/gsctl) -- [Git Bump](https://github.com/erdaltsksn/git-bump) -- [Github CLI](https://github.com/cli/cli) -- [GitHub Labeler](https://github.com/erdaltsksn/gh-label) -- [Golangci-lint](https://golangci-lint.run) -- [GopherJS](http://www.gopherjs.org/) -- [GoReleaser](https://goreleaser.com) -- [Helm](https://helm.sh) -- [Hugo](https://gohugo.io) -- [Infracost](https://github.com/infracost/infracost) -- [Istio](https://istio.io) -- [Kool](https://github.com/kool-dev/kool) -- [Kubernetes](http://kubernetes.io/) -- [Linkerd](https://linkerd.io/) -- [Mattermost-server](https://github.com/mattermost/mattermost-server) -- [Mercure](https://mercure.rocks/) -- [Meroxa CLI](https://github.com/meroxa/cli) -- [Metal Stack CLI](https://github.com/metal-stack/metalctl) -- [Moby (former Docker)](https://github.com/moby/moby) -- [Moldy](https://github.com/Moldy-Community/moldy) -- [Multi-gitter](https://github.com/lindell/multi-gitter) -- [Nanobox](https://github.com/nanobox-io/nanobox)/[Nanopack](https://github.com/nanopack) -- [nFPM](https://nfpm.goreleaser.com) -- [OpenShift](https://www.openshift.com/) -- [Ory Hydra](https://github.com/ory/hydra) -- [Ory Kratos](https://github.com/ory/kratos) -- [Pixie](https://github.com/pixie-io/pixie) -- [Pouch](https://github.com/alibaba/pouch) -- [ProjectAtomic (enterprise)](http://www.projectatomic.io/) -- [Prototool](https://github.com/uber/prototool) -- [QRcp](https://github.com/claudiodangelis/qrcp) -- [Random](https://github.com/erdaltsksn/random) -- [Rclone](https://rclone.org/) -- [Scaleway CLI](https://github.com/scaleway/scaleway-cli) -- [Skaffold](https://skaffold.dev/) -- [Tendermint](https://github.com/tendermint/tendermint) -- [Twitch CLI](https://github.com/twitchdev/twitch-cli) -- [UpCloud CLI (`upctl`)](https://github.com/UpCloudLtd/upcloud-cli) -- VMware's [Tanzu Community Edition](https://github.com/vmware-tanzu/community-edition) & [Tanzu Framework](https://github.com/vmware-tanzu/tanzu-framework) -- [Werf](https://werf.io/) diff --git a/vendor/github.com/spf13/cobra/shell_completions.go b/vendor/github.com/spf13/cobra/shell_completions.go deleted file mode 100644 index d99bf91..0000000 --- a/vendor/github.com/spf13/cobra/shell_completions.go +++ /dev/null @@ -1,84 +0,0 @@ -package cobra - -import ( - "github.com/spf13/pflag" -) - -// MarkFlagRequired instructs the various shell completion implementations to -// prioritize the named flag when performing completion, -// and causes your command to report an error if invoked without the flag. -func (c *Command) MarkFlagRequired(name string) error { - return MarkFlagRequired(c.Flags(), name) -} - -// MarkPersistentFlagRequired instructs the various shell completion implementations to -// prioritize the named persistent flag when performing completion, -// and causes your command to report an error if invoked without the flag. -func (c *Command) MarkPersistentFlagRequired(name string) error { - return MarkFlagRequired(c.PersistentFlags(), name) -} - -// MarkFlagRequired instructs the various shell completion implementations to -// prioritize the named flag when performing completion, -// and causes your command to report an error if invoked without the flag. -func MarkFlagRequired(flags *pflag.FlagSet, name string) error { - return flags.SetAnnotation(name, BashCompOneRequiredFlag, []string{"true"}) -} - -// MarkFlagFilename instructs the various shell completion implementations to -// limit completions for the named flag to the specified file extensions. -func (c *Command) MarkFlagFilename(name string, extensions ...string) error { - return MarkFlagFilename(c.Flags(), name, extensions...) -} - -// MarkFlagCustom adds the BashCompCustom annotation to the named flag, if it exists. -// The bash completion script will call the bash function f for the flag. -// -// This will only work for bash completion. -// It is recommended to instead use c.RegisterFlagCompletionFunc(...) which allows -// to register a Go function which will work across all shells. -func (c *Command) MarkFlagCustom(name string, f string) error { - return MarkFlagCustom(c.Flags(), name, f) -} - -// MarkPersistentFlagFilename instructs the various shell completion -// implementations to limit completions for the named persistent flag to the -// specified file extensions. -func (c *Command) MarkPersistentFlagFilename(name string, extensions ...string) error { - return MarkFlagFilename(c.PersistentFlags(), name, extensions...) -} - -// MarkFlagFilename instructs the various shell completion implementations to -// limit completions for the named flag to the specified file extensions. -func MarkFlagFilename(flags *pflag.FlagSet, name string, extensions ...string) error { - return flags.SetAnnotation(name, BashCompFilenameExt, extensions) -} - -// MarkFlagCustom adds the BashCompCustom annotation to the named flag, if it exists. -// The bash completion script will call the bash function f for the flag. -// -// This will only work for bash completion. -// It is recommended to instead use c.RegisterFlagCompletionFunc(...) which allows -// to register a Go function which will work across all shells. -func MarkFlagCustom(flags *pflag.FlagSet, name string, f string) error { - return flags.SetAnnotation(name, BashCompCustom, []string{f}) -} - -// MarkFlagDirname instructs the various shell completion implementations to -// limit completions for the named flag to directory names. -func (c *Command) MarkFlagDirname(name string) error { - return MarkFlagDirname(c.Flags(), name) -} - -// MarkPersistentFlagDirname instructs the various shell completion -// implementations to limit completions for the named persistent flag to -// directory names. -func (c *Command) MarkPersistentFlagDirname(name string) error { - return MarkFlagDirname(c.PersistentFlags(), name) -} - -// MarkFlagDirname instructs the various shell completion implementations to -// limit completions for the named flag to directory names. -func MarkFlagDirname(flags *pflag.FlagSet, name string) error { - return flags.SetAnnotation(name, BashCompSubdirsInDir, []string{}) -} diff --git a/vendor/github.com/spf13/cobra/shell_completions.md b/vendor/github.com/spf13/cobra/shell_completions.md deleted file mode 100644 index 33a4c65..0000000 --- a/vendor/github.com/spf13/cobra/shell_completions.md +++ /dev/null @@ -1,548 +0,0 @@ -# Generating shell completions - -Cobra can generate shell completions for multiple shells. -The currently supported shells are: -- Bash -- Zsh -- fish -- PowerShell - -Cobra will automatically provide your program with a fully functional `completion` command, -similarly to how it provides the `help` command. - -## Creating your own completion command - -If you do not wish to use the default `completion` command, you can choose to -provide your own, which will take precedence over the default one. (This also provides -backwards-compatibility with programs that already have their own `completion` command.) - -If you are using the `cobra-cli` generator, -which can be found at [spf13/cobra-cli](https://github.com/spf13/cobra-cli), -you can create a completion command by running - -```bash -cobra-cli add completion -``` -and then modifying the generated `cmd/completion.go` file to look something like this -(writing the shell script to stdout allows the most flexible use): - -```go -var completionCmd = &cobra.Command{ - Use: "completion [bash|zsh|fish|powershell]", - Short: "Generate completion script", - Long: fmt.Sprintf(`To load completions: - -Bash: - - $ source <(%[1]s completion bash) - - # To load completions for each session, execute once: - # Linux: - $ %[1]s completion bash > /etc/bash_completion.d/%[1]s - # macOS: - $ %[1]s completion bash > /usr/local/etc/bash_completion.d/%[1]s - -Zsh: - - # If shell completion is not already enabled in your environment, - # you will need to enable it. You can execute the following once: - - $ echo "autoload -U compinit; compinit" >> ~/.zshrc - - # To load completions for each session, execute once: - $ %[1]s completion zsh > "${fpath[1]}/_%[1]s" - - # You will need to start a new shell for this setup to take effect. - -fish: - - $ %[1]s completion fish | source - - # To load completions for each session, execute once: - $ %[1]s completion fish > ~/.config/fish/completions/%[1]s.fish - -PowerShell: - - PS> %[1]s completion powershell | Out-String | Invoke-Expression - - # To load completions for every new session, run: - PS> %[1]s completion powershell > %[1]s.ps1 - # and source this file from your PowerShell profile. -`,cmd.Root().Name()), - DisableFlagsInUseLine: true, - ValidArgs: []string{"bash", "zsh", "fish", "powershell"}, - Args: cobra.ExactValidArgs(1), - Run: func(cmd *cobra.Command, args []string) { - switch args[0] { - case "bash": - cmd.Root().GenBashCompletion(os.Stdout) - case "zsh": - cmd.Root().GenZshCompletion(os.Stdout) - case "fish": - cmd.Root().GenFishCompletion(os.Stdout, true) - case "powershell": - cmd.Root().GenPowerShellCompletionWithDesc(os.Stdout) - } - }, -} -``` - -**Note:** The cobra generator may include messages printed to stdout, for example, if the config file is loaded; this will break the auto-completion script so must be removed. - -## Adapting the default completion command - -Cobra provides a few options for the default `completion` command. To configure such options you must set -the `CompletionOptions` field on the *root* command. - -To tell Cobra *not* to provide the default `completion` command: -``` -rootCmd.CompletionOptions.DisableDefaultCmd = true -``` - -To tell Cobra *not* to provide the user with the `--no-descriptions` flag to the completion sub-commands: -``` -rootCmd.CompletionOptions.DisableNoDescFlag = true -``` - -To tell Cobra to completely disable descriptions for completions: -``` -rootCmd.CompletionOptions.DisableDescriptions = true -``` - -# Customizing completions - -The generated completion scripts will automatically handle completing commands and flags. However, you can make your completions much more powerful by providing information to complete your program's nouns and flag values. - -## Completion of nouns - -### Static completion of nouns - -Cobra allows you to provide a pre-defined list of completion choices for your nouns using the `ValidArgs` field. -For example, if you want `kubectl get [tab][tab]` to show a list of valid "nouns" you have to set them. -Some simplified code from `kubectl get` looks like: - -```go -validArgs []string = { "pod", "node", "service", "replicationcontroller" } - -cmd := &cobra.Command{ - Use: "get [(-o|--output=)json|yaml|template|...] (RESOURCE [NAME] | RESOURCE/NAME ...)", - Short: "Display one or many resources", - Long: get_long, - Example: get_example, - Run: func(cmd *cobra.Command, args []string) { - cobra.CheckErr(RunGet(f, out, cmd, args)) - }, - ValidArgs: validArgs, -} -``` - -Notice we put the `ValidArgs` field on the `get` sub-command. Doing so will give results like: - -```bash -$ kubectl get [tab][tab] -node pod replicationcontroller service -``` - -#### Aliases for nouns - -If your nouns have aliases, you can define them alongside `ValidArgs` using `ArgAliases`: - -```go -argAliases []string = { "pods", "nodes", "services", "svc", "replicationcontrollers", "rc" } - -cmd := &cobra.Command{ - ... - ValidArgs: validArgs, - ArgAliases: argAliases -} -``` - -The aliases are not shown to the user on tab completion, but they are accepted as valid nouns by -the completion algorithm if entered manually, e.g. in: - -```bash -$ kubectl get rc [tab][tab] -backend frontend database -``` - -Note that without declaring `rc` as an alias, the completion algorithm would not know to show the list of -replication controllers following `rc`. - -### Dynamic completion of nouns - -In some cases it is not possible to provide a list of completions in advance. Instead, the list of completions must be determined at execution-time. In a similar fashion as for static completions, you can use the `ValidArgsFunction` field to provide a Go function that Cobra will execute when it needs the list of completion choices for the nouns of a command. Note that either `ValidArgs` or `ValidArgsFunction` can be used for a single cobra command, but not both. -Simplified code from `helm status` looks like: - -```go -cmd := &cobra.Command{ - Use: "status RELEASE_NAME", - Short: "Display the status of the named release", - Long: status_long, - RunE: func(cmd *cobra.Command, args []string) { - RunGet(args[0]) - }, - ValidArgsFunction: func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { - if len(args) != 0 { - return nil, cobra.ShellCompDirectiveNoFileComp - } - return getReleasesFromCluster(toComplete), cobra.ShellCompDirectiveNoFileComp - }, -} -``` -Where `getReleasesFromCluster()` is a Go function that obtains the list of current Helm releases running on the Kubernetes cluster. -Notice we put the `ValidArgsFunction` on the `status` sub-command. Let's assume the Helm releases on the cluster are: `harbor`, `notary`, `rook` and `thanos` then this dynamic completion will give results like: - -```bash -$ helm status [tab][tab] -harbor notary rook thanos -``` -You may have noticed the use of `cobra.ShellCompDirective`. These directives are bit fields allowing to control some shell completion behaviors for your particular completion. You can combine them with the bit-or operator such as `cobra.ShellCompDirectiveNoSpace | cobra.ShellCompDirectiveNoFileComp` -```go -// Indicates that the shell will perform its default behavior after completions -// have been provided (this implies none of the other directives). -ShellCompDirectiveDefault - -// Indicates an error occurred and completions should be ignored. -ShellCompDirectiveError - -// Indicates that the shell should not add a space after the completion, -// even if there is a single completion provided. -ShellCompDirectiveNoSpace - -// Indicates that the shell should not provide file completion even when -// no completion is provided. -ShellCompDirectiveNoFileComp - -// Indicates that the returned completions should be used as file extension filters. -// For example, to complete only files of the form *.json or *.yaml: -// return []string{"yaml", "json"}, ShellCompDirectiveFilterFileExt -// For flags, using MarkFlagFilename() and MarkPersistentFlagFilename() -// is a shortcut to using this directive explicitly. -// -ShellCompDirectiveFilterFileExt - -// Indicates that only directory names should be provided in file completion. -// For example: -// return nil, ShellCompDirectiveFilterDirs -// For flags, using MarkFlagDirname() is a shortcut to using this directive explicitly. -// -// To request directory names within another directory, the returned completions -// should specify a single directory name within which to search. For example, -// to complete directories within "themes/": -// return []string{"themes"}, ShellCompDirectiveFilterDirs -// -ShellCompDirectiveFilterDirs -``` - -***Note***: When using the `ValidArgsFunction`, Cobra will call your registered function after having parsed all flags and arguments provided in the command-line. You therefore don't need to do this parsing yourself. For example, when a user calls `helm status --namespace my-rook-ns [tab][tab]`, Cobra will call your registered `ValidArgsFunction` after having parsed the `--namespace` flag, as it would have done when calling the `RunE` function. - -#### Debugging - -Cobra achieves dynamic completion through the use of a hidden command called by the completion script. To debug your Go completion code, you can call this hidden command directly: -```bash -$ helm __complete status har -harbor -:4 -Completion ended with directive: ShellCompDirectiveNoFileComp # This is on stderr -``` -***Important:*** If the noun to complete is empty (when the user has not yet typed any letters of that noun), you must pass an empty parameter to the `__complete` command: -```bash -$ helm __complete status "" -harbor -notary -rook -thanos -:4 -Completion ended with directive: ShellCompDirectiveNoFileComp # This is on stderr -``` -Calling the `__complete` command directly allows you to run the Go debugger to troubleshoot your code. You can also add printouts to your code; Cobra provides the following functions to use for printouts in Go completion code: -```go -// Prints to the completion script debug file (if BASH_COMP_DEBUG_FILE -// is set to a file path) and optionally prints to stderr. -cobra.CompDebug(msg string, printToStdErr bool) { -cobra.CompDebugln(msg string, printToStdErr bool) - -// Prints to the completion script debug file (if BASH_COMP_DEBUG_FILE -// is set to a file path) and to stderr. -cobra.CompError(msg string) -cobra.CompErrorln(msg string) -``` -***Important:*** You should **not** leave traces that print directly to stdout in your completion code as they will be interpreted as completion choices by the completion script. Instead, use the cobra-provided debugging traces functions mentioned above. - -## Completions for flags - -### Mark flags as required - -Most of the time completions will only show sub-commands. But if a flag is required to make a sub-command work, you probably want it to show up when the user types [tab][tab]. You can mark a flag as 'Required' like so: - -```go -cmd.MarkFlagRequired("pod") -cmd.MarkFlagRequired("container") -``` - -and you'll get something like - -```bash -$ kubectl exec [tab][tab] --c --container= -p --pod= -``` - -### Specify dynamic flag completion - -As for nouns, Cobra provides a way of defining dynamic completion of flags. To provide a Go function that Cobra will execute when it needs the list of completion choices for a flag, you must register the function using the `command.RegisterFlagCompletionFunc()` function. - -```go -flagName := "output" -cmd.RegisterFlagCompletionFunc(flagName, func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { - return []string{"json", "table", "yaml"}, cobra.ShellCompDirectiveDefault -}) -``` -Notice that calling `RegisterFlagCompletionFunc()` is done through the `command` with which the flag is associated. In our example this dynamic completion will give results like so: - -```bash -$ helm status --output [tab][tab] -json table yaml -``` - -#### Debugging - -You can also easily debug your Go completion code for flags: -```bash -$ helm __complete status --output "" -json -table -yaml -:4 -Completion ended with directive: ShellCompDirectiveNoFileComp # This is on stderr -``` -***Important:*** You should **not** leave traces that print to stdout in your completion code as they will be interpreted as completion choices by the completion script. Instead, use the cobra-provided debugging traces functions mentioned further above. - -### Specify valid filename extensions for flags that take a filename - -To limit completions of flag values to file names with certain extensions you can either use the different `MarkFlagFilename()` functions or a combination of `RegisterFlagCompletionFunc()` and `ShellCompDirectiveFilterFileExt`, like so: -```go -flagName := "output" -cmd.MarkFlagFilename(flagName, "yaml", "json") -``` -or -```go -flagName := "output" -cmd.RegisterFlagCompletionFunc(flagName, func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { - return []string{"yaml", "json"}, ShellCompDirectiveFilterFileExt}) -``` - -### Limit flag completions to directory names - -To limit completions of flag values to directory names you can either use the `MarkFlagDirname()` functions or a combination of `RegisterFlagCompletionFunc()` and `ShellCompDirectiveFilterDirs`, like so: -```go -flagName := "output" -cmd.MarkFlagDirname(flagName) -``` -or -```go -flagName := "output" -cmd.RegisterFlagCompletionFunc(flagName, func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { - return nil, cobra.ShellCompDirectiveFilterDirs -}) -``` -To limit completions of flag values to directory names *within another directory* you can use a combination of `RegisterFlagCompletionFunc()` and `ShellCompDirectiveFilterDirs` like so: -```go -flagName := "output" -cmd.RegisterFlagCompletionFunc(flagName, func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { - return []string{"themes"}, cobra.ShellCompDirectiveFilterDirs -}) -``` -### Descriptions for completions - -Cobra provides support for completion descriptions. Such descriptions are supported for each shell -(however, for bash, it is only available in the [completion V2 version](#bash-completion-v2)). -For commands and flags, Cobra will provide the descriptions automatically, based on usage information. -For example, using zsh: -``` -$ helm s[tab] -search -- search for a keyword in charts -show -- show information of a chart -status -- displays the status of the named release -``` -while using fish: -``` -$ helm s[tab] -search (search for a keyword in charts) show (show information of a chart) status (displays the status of the named release) -``` - -Cobra allows you to add descriptions to your own completions. Simply add the description text after each completion, following a `\t` separator. This technique applies to completions returned by `ValidArgs`, `ValidArgsFunction` and `RegisterFlagCompletionFunc()`. For example: -```go -ValidArgsFunction: func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { - return []string{"harbor\tAn image registry", "thanos\tLong-term metrics"}, cobra.ShellCompDirectiveNoFileComp -}} -``` -or -```go -ValidArgs: []string{"bash\tCompletions for bash", "zsh\tCompletions for zsh"} -``` -## Bash completions - -### Dependencies - -The bash completion script generated by Cobra requires the `bash_completion` package. You should update the help text of your completion command to show how to install the `bash_completion` package ([Kubectl docs](https://kubernetes.io/docs/tasks/tools/install-kubectl/#enabling-shell-autocompletion)) - -### Aliases - -You can also configure `bash` aliases for your program and they will also support completions. - -```bash -alias aliasname=origcommand -complete -o default -F __start_origcommand aliasname - -# and now when you run `aliasname` completion will make -# suggestions as it did for `origcommand`. - -$ aliasname -completion firstcommand secondcommand -``` -### Bash legacy dynamic completions - -For backward compatibility, Cobra still supports its bash legacy dynamic completion solution. -Please refer to [Bash Completions](bash_completions.md) for details. - -### Bash completion V2 - -Cobra provides two versions for bash completion. The original bash completion (which started it all!) can be used by calling -`GenBashCompletion()` or `GenBashCompletionFile()`. - -A new V2 bash completion version is also available. This version can be used by calling `GenBashCompletionV2()` or -`GenBashCompletionFileV2()`. The V2 version does **not** support the legacy dynamic completion -(see [Bash Completions](bash_completions.md)) but instead works only with the Go dynamic completion -solution described in this document. -Unless your program already uses the legacy dynamic completion solution, it is recommended that you use the bash -completion V2 solution which provides the following extra features: -- Supports completion descriptions (like the other shells) -- Small completion script of less than 300 lines (v1 generates scripts of thousands of lines; `kubectl` for example has a bash v1 completion script of over 13K lines) -- Streamlined user experience thanks to a completion behavior aligned with the other shells - -`Bash` completion V2 supports descriptions for completions. When calling `GenBashCompletionV2()` or `GenBashCompletionFileV2()` -you must provide these functions with a parameter indicating if the completions should be annotated with a description; Cobra -will provide the description automatically based on usage information. You can choose to make this option configurable by -your users. - -``` -# With descriptions -$ helm s[tab][tab] -search (search for a keyword in charts) status (display the status of the named release) -show (show information of a chart) - -# Without descriptions -$ helm s[tab][tab] -search show status -``` -**Note**: Cobra's default `completion` command uses bash completion V2. If for some reason you need to use bash completion V1, you will need to implement your own `completion` command. -## Zsh completions - -Cobra supports native zsh completion generated from the root `cobra.Command`. -The generated completion script should be put somewhere in your `$fpath` and be named -`_`. You will need to start a new shell for the completions to become available. - -Zsh supports descriptions for completions. Cobra will provide the description automatically, -based on usage information. Cobra provides a way to completely disable such descriptions by -using `GenZshCompletionNoDesc()` or `GenZshCompletionFileNoDesc()`. You can choose to make -this a configurable option to your users. -``` -# With descriptions -$ helm s[tab] -search -- search for a keyword in charts -show -- show information of a chart -status -- displays the status of the named release - -# Without descriptions -$ helm s[tab] -search show status -``` -*Note*: Because of backward-compatibility requirements, we were forced to have a different API to disable completion descriptions between `zsh` and `fish`. - -### Limitations - -* Custom completions implemented in Bash scripting (legacy) are not supported and will be ignored for `zsh` (including the use of the `BashCompCustom` flag annotation). - * You should instead use `ValidArgsFunction` and `RegisterFlagCompletionFunc()` which are portable to the different shells (`bash`, `zsh`, `fish`, `powershell`). -* The function `MarkFlagCustom()` is not supported and will be ignored for `zsh`. - * You should instead use `RegisterFlagCompletionFunc()`. - -### Zsh completions standardization - -Cobra 1.1 standardized its zsh completion support to align it with its other shell completions. Although the API was kept backward-compatible, some small changes in behavior were introduced. -Please refer to [Zsh Completions](zsh_completions.md) for details. - -## fish completions - -Cobra supports native fish completions generated from the root `cobra.Command`. You can use the `command.GenFishCompletion()` or `command.GenFishCompletionFile()` functions. You must provide these functions with a parameter indicating if the completions should be annotated with a description; Cobra will provide the description automatically based on usage information. You can choose to make this option configurable by your users. -``` -# With descriptions -$ helm s[tab] -search (search for a keyword in charts) show (show information of a chart) status (displays the status of the named release) - -# Without descriptions -$ helm s[tab] -search show status -``` -*Note*: Because of backward-compatibility requirements, we were forced to have a different API to disable completion descriptions between `zsh` and `fish`. - -### Limitations - -* Custom completions implemented in bash scripting (legacy) are not supported and will be ignored for `fish` (including the use of the `BashCompCustom` flag annotation). - * You should instead use `ValidArgsFunction` and `RegisterFlagCompletionFunc()` which are portable to the different shells (`bash`, `zsh`, `fish`, `powershell`). -* The function `MarkFlagCustom()` is not supported and will be ignored for `fish`. - * You should instead use `RegisterFlagCompletionFunc()`. -* The following flag completion annotations are not supported and will be ignored for `fish`: - * `BashCompFilenameExt` (filtering by file extension) - * `BashCompSubdirsInDir` (filtering by directory) -* The functions corresponding to the above annotations are consequently not supported and will be ignored for `fish`: - * `MarkFlagFilename()` and `MarkPersistentFlagFilename()` (filtering by file extension) - * `MarkFlagDirname()` and `MarkPersistentFlagDirname()` (filtering by directory) -* Similarly, the following completion directives are not supported and will be ignored for `fish`: - * `ShellCompDirectiveFilterFileExt` (filtering by file extension) - * `ShellCompDirectiveFilterDirs` (filtering by directory) - -## PowerShell completions - -Cobra supports native PowerShell completions generated from the root `cobra.Command`. You can use the `command.GenPowerShellCompletion()` or `command.GenPowerShellCompletionFile()` functions. To include descriptions use `command.GenPowerShellCompletionWithDesc()` and `command.GenPowerShellCompletionFileWithDesc()`. Cobra will provide the description automatically based on usage information. You can choose to make this option configurable by your users. - -The script is designed to support all three PowerShell completion modes: - -* TabCompleteNext (default windows style - on each key press the next option is displayed) -* Complete (works like bash) -* MenuComplete (works like zsh) - -You set the mode with `Set-PSReadLineKeyHandler -Key Tab -Function `. Descriptions are only displayed when using the `Complete` or `MenuComplete` mode. - -Users need PowerShell version 5.0 or above, which comes with Windows 10 and can be downloaded separately for Windows 7 or 8.1. They can then write the completions to a file and source this file from their PowerShell profile, which is referenced by the `$Profile` environment variable. See `Get-Help about_Profiles` for more info about PowerShell profiles. - -``` -# With descriptions and Mode 'Complete' -$ helm s[tab] -search (search for a keyword in charts) show (show information of a chart) status (displays the status of the named release) - -# With descriptions and Mode 'MenuComplete' The description of the current selected value will be displayed below the suggestions. -$ helm s[tab] -search show status - -search for a keyword in charts - -# Without descriptions -$ helm s[tab] -search show status -``` - -### Limitations - -* Custom completions implemented in bash scripting (legacy) are not supported and will be ignored for `powershell` (including the use of the `BashCompCustom` flag annotation). - * You should instead use `ValidArgsFunction` and `RegisterFlagCompletionFunc()` which are portable to the different shells (`bash`, `zsh`, `fish`, `powershell`). -* The function `MarkFlagCustom()` is not supported and will be ignored for `powershell`. - * You should instead use `RegisterFlagCompletionFunc()`. -* The following flag completion annotations are not supported and will be ignored for `powershell`: - * `BashCompFilenameExt` (filtering by file extension) - * `BashCompSubdirsInDir` (filtering by directory) -* The functions corresponding to the above annotations are consequently not supported and will be ignored for `powershell`: - * `MarkFlagFilename()` and `MarkPersistentFlagFilename()` (filtering by file extension) - * `MarkFlagDirname()` and `MarkPersistentFlagDirname()` (filtering by directory) -* Similarly, the following completion directives are not supported and will be ignored for `powershell`: - * `ShellCompDirectiveFilterFileExt` (filtering by file extension) - * `ShellCompDirectiveFilterDirs` (filtering by directory) diff --git a/vendor/github.com/spf13/cobra/user_guide.md b/vendor/github.com/spf13/cobra/user_guide.md deleted file mode 100644 index 4a3c2b0..0000000 --- a/vendor/github.com/spf13/cobra/user_guide.md +++ /dev/null @@ -1,638 +0,0 @@ -# User Guide - -While you are welcome to provide your own organization, typically a Cobra-based -application will follow the following organizational structure: - -``` - ▾ appName/ - ▾ cmd/ - add.go - your.go - commands.go - here.go - main.go -``` - -In a Cobra app, typically the main.go file is very bare. It serves one purpose: initializing Cobra. - -```go -package main - -import ( - "{pathToYourApp}/cmd" -) - -func main() { - cmd.Execute() -} -``` - -## Using the Cobra Generator - -Cobra-CLI is its own program that will create your application and add any -commands you want. It's the easiest way to incorporate Cobra into your application. - -For complete details on using the Cobra generator, please refer to [The Cobra-CLI Generator README](https://github.com/spf13/cobra-cli/blob/master/README.md) - -## Using the Cobra Library - -To manually implement Cobra you need to create a bare main.go file and a rootCmd file. -You will optionally provide additional commands as you see fit. - -### Create rootCmd - -Cobra doesn't require any special constructors. Simply create your commands. - -Ideally you place this in app/cmd/root.go: - -```go -var rootCmd = &cobra.Command{ - Use: "hugo", - Short: "Hugo is a very fast static site generator", - Long: `A Fast and Flexible Static Site Generator built with - love by spf13 and friends in Go. - Complete documentation is available at http://hugo.spf13.com`, - Run: func(cmd *cobra.Command, args []string) { - // Do Stuff Here - }, -} - -func Execute() { - if err := rootCmd.Execute(); err != nil { - fmt.Fprintln(os.Stderr, err) - os.Exit(1) - } -} -``` - -You will additionally define flags and handle configuration in your init() function. - -For example cmd/root.go: - -```go -package cmd - -import ( - "fmt" - "os" - - "github.com/spf13/cobra" - "github.com/spf13/viper" -) - -var ( - // Used for flags. - cfgFile string - userLicense string - - rootCmd = &cobra.Command{ - Use: "cobra-cli", - Short: "A generator for Cobra based Applications", - Long: `Cobra is a CLI library for Go that empowers applications. -This application is a tool to generate the needed files -to quickly create a Cobra application.`, - } -) - -// Execute executes the root command. -func Execute() error { - return rootCmd.Execute() -} - -func init() { - cobra.OnInitialize(initConfig) - - rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.cobra.yaml)") - rootCmd.PersistentFlags().StringP("author", "a", "YOUR NAME", "author name for copyright attribution") - rootCmd.PersistentFlags().StringVarP(&userLicense, "license", "l", "", "name of license for the project") - rootCmd.PersistentFlags().Bool("viper", true, "use Viper for configuration") - viper.BindPFlag("author", rootCmd.PersistentFlags().Lookup("author")) - viper.BindPFlag("useViper", rootCmd.PersistentFlags().Lookup("viper")) - viper.SetDefault("author", "NAME HERE ") - viper.SetDefault("license", "apache") - - rootCmd.AddCommand(addCmd) - rootCmd.AddCommand(initCmd) -} - -func initConfig() { - if cfgFile != "" { - // Use config file from the flag. - viper.SetConfigFile(cfgFile) - } else { - // Find home directory. - home, err := os.UserHomeDir() - cobra.CheckErr(err) - - // Search config in home directory with name ".cobra" (without extension). - viper.AddConfigPath(home) - viper.SetConfigType("yaml") - viper.SetConfigName(".cobra") - } - - viper.AutomaticEnv() - - if err := viper.ReadInConfig(); err == nil { - fmt.Println("Using config file:", viper.ConfigFileUsed()) - } -} -``` - -### Create your main.go - -With the root command you need to have your main function execute it. -Execute should be run on the root for clarity, though it can be called on any command. - -In a Cobra app, typically the main.go file is very bare. It serves one purpose: to initialize Cobra. - -```go -package main - -import ( - "{pathToYourApp}/cmd" -) - -func main() { - cmd.Execute() -} -``` - -### Create additional commands - -Additional commands can be defined and typically are each given their own file -inside of the cmd/ directory. - -If you wanted to create a version command you would create cmd/version.go and -populate it with the following: - -```go -package cmd - -import ( - "fmt" - - "github.com/spf13/cobra" -) - -func init() { - rootCmd.AddCommand(versionCmd) -} - -var versionCmd = &cobra.Command{ - Use: "version", - Short: "Print the version number of Hugo", - Long: `All software has versions. This is Hugo's`, - Run: func(cmd *cobra.Command, args []string) { - fmt.Println("Hugo Static Site Generator v0.9 -- HEAD") - }, -} -``` - -### Returning and handling errors - -If you wish to return an error to the caller of a command, `RunE` can be used. - -```go -package cmd - -import ( - "fmt" - - "github.com/spf13/cobra" -) - -func init() { - rootCmd.AddCommand(tryCmd) -} - -var tryCmd = &cobra.Command{ - Use: "try", - Short: "Try and possibly fail at something", - RunE: func(cmd *cobra.Command, args []string) error { - if err := someFunc(); err != nil { - return err - } - return nil - }, -} -``` - -The error can then be caught at the execute function call. - -## Working with Flags - -Flags provide modifiers to control how the action command operates. - -### Assign flags to a command - -Since the flags are defined and used in different locations, we need to -define a variable outside with the correct scope to assign the flag to -work with. - -```go -var Verbose bool -var Source string -``` - -There are two different approaches to assign a flag. - -### Persistent Flags - -A flag can be 'persistent', meaning that this flag will be available to the -command it's assigned to as well as every command under that command. For -global flags, assign a flag as a persistent flag on the root. - -```go -rootCmd.PersistentFlags().BoolVarP(&Verbose, "verbose", "v", false, "verbose output") -``` - -### Local Flags - -A flag can also be assigned locally, which will only apply to that specific command. - -```go -localCmd.Flags().StringVarP(&Source, "source", "s", "", "Source directory to read from") -``` - -### Local Flag on Parent Commands - -By default, Cobra only parses local flags on the target command, and any local flags on -parent commands are ignored. By enabling `Command.TraverseChildren`, Cobra will -parse local flags on each command before executing the target command. - -```go -command := cobra.Command{ - Use: "print [OPTIONS] [COMMANDS]", - TraverseChildren: true, -} -``` - -### Bind Flags with Config - -You can also bind your flags with [viper](https://github.com/spf13/viper): -```go -var author string - -func init() { - rootCmd.PersistentFlags().StringVar(&author, "author", "YOUR NAME", "Author name for copyright attribution") - viper.BindPFlag("author", rootCmd.PersistentFlags().Lookup("author")) -} -``` - -In this example, the persistent flag `author` is bound with `viper`. -**Note**: the variable `author` will not be set to the value from config, -when the `--author` flag is provided by user. - -More in [viper documentation](https://github.com/spf13/viper#working-with-flags). - -### Required flags - -Flags are optional by default. If instead you wish your command to report an error -when a flag has not been set, mark it as required: -```go -rootCmd.Flags().StringVarP(&Region, "region", "r", "", "AWS region (required)") -rootCmd.MarkFlagRequired("region") -``` - -Or, for persistent flags: -```go -rootCmd.PersistentFlags().StringVarP(&Region, "region", "r", "", "AWS region (required)") -rootCmd.MarkPersistentFlagRequired("region") -``` - -## Positional and Custom Arguments - -Validation of positional arguments can be specified using the `Args` field -of `Command`. - -The following validators are built in: - -- `NoArgs` - the command will report an error if there are any positional args. -- `ArbitraryArgs` - the command will accept any args. -- `OnlyValidArgs` - the command will report an error if there are any positional args that are not in the `ValidArgs` field of `Command`. -- `MinimumNArgs(int)` - the command will report an error if there are not at least N positional args. -- `MaximumNArgs(int)` - the command will report an error if there are more than N positional args. -- `ExactArgs(int)` - the command will report an error if there are not exactly N positional args. -- `ExactValidArgs(int)` - the command will report an error if there are not exactly N positional args OR if there are any positional args that are not in the `ValidArgs` field of `Command` -- `RangeArgs(min, max)` - the command will report an error if the number of args is not between the minimum and maximum number of expected args. -- `MatchAll(pargs ...PositionalArgs)` - enables combining existing checks with arbitrary other checks (e.g. you want to check the ExactArgs length along with other qualities). - -An example of setting the custom validator: - -```go -var cmd = &cobra.Command{ - Short: "hello", - Args: func(cmd *cobra.Command, args []string) error { - if len(args) < 1 { - return errors.New("requires a color argument") - } - if myapp.IsValidColor(args[0]) { - return nil - } - return fmt.Errorf("invalid color specified: %s", args[0]) - }, - Run: func(cmd *cobra.Command, args []string) { - fmt.Println("Hello, World!") - }, -} -``` - -## Example - -In the example below, we have defined three commands. Two are at the top level -and one (cmdTimes) is a child of one of the top commands. In this case the root -is not executable, meaning that a subcommand is required. This is accomplished -by not providing a 'Run' for the 'rootCmd'. - -We have only defined one flag for a single command. - -More documentation about flags is available at https://github.com/spf13/pflag - -```go -package main - -import ( - "fmt" - "strings" - - "github.com/spf13/cobra" -) - -func main() { - var echoTimes int - - var cmdPrint = &cobra.Command{ - Use: "print [string to print]", - Short: "Print anything to the screen", - Long: `print is for printing anything back to the screen. -For many years people have printed back to the screen.`, - Args: cobra.MinimumNArgs(1), - Run: func(cmd *cobra.Command, args []string) { - fmt.Println("Print: " + strings.Join(args, " ")) - }, - } - - var cmdEcho = &cobra.Command{ - Use: "echo [string to echo]", - Short: "Echo anything to the screen", - Long: `echo is for echoing anything back. -Echo works a lot like print, except it has a child command.`, - Args: cobra.MinimumNArgs(1), - Run: func(cmd *cobra.Command, args []string) { - fmt.Println("Echo: " + strings.Join(args, " ")) - }, - } - - var cmdTimes = &cobra.Command{ - Use: "times [string to echo]", - Short: "Echo anything to the screen more times", - Long: `echo things multiple times back to the user by providing -a count and a string.`, - Args: cobra.MinimumNArgs(1), - Run: func(cmd *cobra.Command, args []string) { - for i := 0; i < echoTimes; i++ { - fmt.Println("Echo: " + strings.Join(args, " ")) - } - }, - } - - cmdTimes.Flags().IntVarP(&echoTimes, "times", "t", 1, "times to echo the input") - - var rootCmd = &cobra.Command{Use: "app"} - rootCmd.AddCommand(cmdPrint, cmdEcho) - cmdEcho.AddCommand(cmdTimes) - rootCmd.Execute() -} -``` - -For a more complete example of a larger application, please checkout [Hugo](http://gohugo.io/). - -## Help Command - -Cobra automatically adds a help command to your application when you have subcommands. -This will be called when a user runs 'app help'. Additionally, help will also -support all other commands as input. Say, for instance, you have a command called -'create' without any additional configuration; Cobra will work when 'app help -create' is called. Every command will automatically have the '--help' flag added. - -### Example - -The following output is automatically generated by Cobra. Nothing beyond the -command and flag definitions are needed. - - $ cobra help - - Cobra is a CLI library for Go that empowers applications. - This application is a tool to generate the needed files - to quickly create a Cobra application. - - Usage: - cobra [command] - - Available Commands: - add Add a command to a Cobra Application - help Help about any command - init Initialize a Cobra Application - - Flags: - -a, --author string author name for copyright attribution (default "YOUR NAME") - --config string config file (default is $HOME/.cobra.yaml) - -h, --help help for cobra - -l, --license string name of license for the project - --viper use Viper for configuration (default true) - - Use "cobra [command] --help" for more information about a command. - - -Help is just a command like any other. There is no special logic or behavior -around it. In fact, you can provide your own if you want. - -### Defining your own help - -You can provide your own Help command or your own template for the default command to use -with following functions: - -```go -cmd.SetHelpCommand(cmd *Command) -cmd.SetHelpFunc(f func(*Command, []string)) -cmd.SetHelpTemplate(s string) -``` - -The latter two will also apply to any children commands. - -## Usage Message - -When the user provides an invalid flag or invalid command, Cobra responds by -showing the user the 'usage'. - -### Example -You may recognize this from the help above. That's because the default help -embeds the usage as part of its output. - - $ cobra --invalid - Error: unknown flag: --invalid - Usage: - cobra [command] - - Available Commands: - add Add a command to a Cobra Application - help Help about any command - init Initialize a Cobra Application - - Flags: - -a, --author string author name for copyright attribution (default "YOUR NAME") - --config string config file (default is $HOME/.cobra.yaml) - -h, --help help for cobra - -l, --license string name of license for the project - --viper use Viper for configuration (default true) - - Use "cobra [command] --help" for more information about a command. - -### Defining your own usage -You can provide your own usage function or template for Cobra to use. -Like help, the function and template are overridable through public methods: - -```go -cmd.SetUsageFunc(f func(*Command) error) -cmd.SetUsageTemplate(s string) -``` - -## Version Flag - -Cobra adds a top-level '--version' flag if the Version field is set on the root command. -Running an application with the '--version' flag will print the version to stdout using -the version template. The template can be customized using the -`cmd.SetVersionTemplate(s string)` function. - -## PreRun and PostRun Hooks - -It is possible to run functions before or after the main `Run` function of your command. The `PersistentPreRun` and `PreRun` functions will be executed before `Run`. `PersistentPostRun` and `PostRun` will be executed after `Run`. The `Persistent*Run` functions will be inherited by children if they do not declare their own. These functions are run in the following order: - -- `PersistentPreRun` -- `PreRun` -- `Run` -- `PostRun` -- `PersistentPostRun` - -An example of two commands which use all of these features is below. When the subcommand is executed, it will run the root command's `PersistentPreRun` but not the root command's `PersistentPostRun`: - -```go -package main - -import ( - "fmt" - - "github.com/spf13/cobra" -) - -func main() { - - var rootCmd = &cobra.Command{ - Use: "root [sub]", - Short: "My root command", - PersistentPreRun: func(cmd *cobra.Command, args []string) { - fmt.Printf("Inside rootCmd PersistentPreRun with args: %v\n", args) - }, - PreRun: func(cmd *cobra.Command, args []string) { - fmt.Printf("Inside rootCmd PreRun with args: %v\n", args) - }, - Run: func(cmd *cobra.Command, args []string) { - fmt.Printf("Inside rootCmd Run with args: %v\n", args) - }, - PostRun: func(cmd *cobra.Command, args []string) { - fmt.Printf("Inside rootCmd PostRun with args: %v\n", args) - }, - PersistentPostRun: func(cmd *cobra.Command, args []string) { - fmt.Printf("Inside rootCmd PersistentPostRun with args: %v\n", args) - }, - } - - var subCmd = &cobra.Command{ - Use: "sub [no options!]", - Short: "My subcommand", - PreRun: func(cmd *cobra.Command, args []string) { - fmt.Printf("Inside subCmd PreRun with args: %v\n", args) - }, - Run: func(cmd *cobra.Command, args []string) { - fmt.Printf("Inside subCmd Run with args: %v\n", args) - }, - PostRun: func(cmd *cobra.Command, args []string) { - fmt.Printf("Inside subCmd PostRun with args: %v\n", args) - }, - PersistentPostRun: func(cmd *cobra.Command, args []string) { - fmt.Printf("Inside subCmd PersistentPostRun with args: %v\n", args) - }, - } - - rootCmd.AddCommand(subCmd) - - rootCmd.SetArgs([]string{""}) - rootCmd.Execute() - fmt.Println() - rootCmd.SetArgs([]string{"sub", "arg1", "arg2"}) - rootCmd.Execute() -} -``` - -Output: -``` -Inside rootCmd PersistentPreRun with args: [] -Inside rootCmd PreRun with args: [] -Inside rootCmd Run with args: [] -Inside rootCmd PostRun with args: [] -Inside rootCmd PersistentPostRun with args: [] - -Inside rootCmd PersistentPreRun with args: [arg1 arg2] -Inside subCmd PreRun with args: [arg1 arg2] -Inside subCmd Run with args: [arg1 arg2] -Inside subCmd PostRun with args: [arg1 arg2] -Inside subCmd PersistentPostRun with args: [arg1 arg2] -``` - -## Suggestions when "unknown command" happens - -Cobra will print automatic suggestions when "unknown command" errors happen. This allows Cobra to behave similarly to the `git` command when a typo happens. For example: - -``` -$ hugo srever -Error: unknown command "srever" for "hugo" - -Did you mean this? - server - -Run 'hugo --help' for usage. -``` - -Suggestions are automatic based on every subcommand registered and use an implementation of [Levenshtein distance](http://en.wikipedia.org/wiki/Levenshtein_distance). Every registered command that matches a minimum distance of 2 (ignoring case) will be displayed as a suggestion. - -If you need to disable suggestions or tweak the string distance in your command, use: - -```go -command.DisableSuggestions = true -``` - -or - -```go -command.SuggestionsMinimumDistance = 1 -``` - -You can also explicitly set names for which a given command will be suggested using the `SuggestFor` attribute. This allows suggestions for strings that are not close in terms of string distance, but makes sense in your set of commands and for some which you don't want aliases. Example: - -``` -$ kubectl remove -Error: unknown command "remove" for "kubectl" - -Did you mean this? - delete - -Run 'kubectl help' for usage. -``` - -## Generating documentation for your command - -Cobra can generate documentation based on subcommands, flags, etc. Read more about it in the [docs generation documentation](doc/README.md). - -## Generating shell completions - -Cobra can generate a shell-completion file for the following shells: bash, zsh, fish, PowerShell. If you add more information to your commands, these completions can be amazingly powerful and flexible. Read more about it in [Shell Completions](shell_completions.md). diff --git a/vendor/github.com/spf13/cobra/zsh_completions.go b/vendor/github.com/spf13/cobra/zsh_completions.go deleted file mode 100644 index 624adab..0000000 --- a/vendor/github.com/spf13/cobra/zsh_completions.go +++ /dev/null @@ -1,258 +0,0 @@ -package cobra - -import ( - "bytes" - "fmt" - "io" - "os" -) - -// GenZshCompletionFile generates zsh completion file including descriptions. -func (c *Command) GenZshCompletionFile(filename string) error { - return c.genZshCompletionFile(filename, true) -} - -// GenZshCompletion generates zsh completion file including descriptions -// and writes it to the passed writer. -func (c *Command) GenZshCompletion(w io.Writer) error { - return c.genZshCompletion(w, true) -} - -// GenZshCompletionFileNoDesc generates zsh completion file without descriptions. -func (c *Command) GenZshCompletionFileNoDesc(filename string) error { - return c.genZshCompletionFile(filename, false) -} - -// GenZshCompletionNoDesc generates zsh completion file without descriptions -// and writes it to the passed writer. -func (c *Command) GenZshCompletionNoDesc(w io.Writer) error { - return c.genZshCompletion(w, false) -} - -// MarkZshCompPositionalArgumentFile only worked for zsh and its behavior was -// not consistent with Bash completion. It has therefore been disabled. -// Instead, when no other completion is specified, file completion is done by -// default for every argument. One can disable file completion on a per-argument -// basis by using ValidArgsFunction and ShellCompDirectiveNoFileComp. -// To achieve file extension filtering, one can use ValidArgsFunction and -// ShellCompDirectiveFilterFileExt. -// -// Deprecated -func (c *Command) MarkZshCompPositionalArgumentFile(argPosition int, patterns ...string) error { - return nil -} - -// MarkZshCompPositionalArgumentWords only worked for zsh. It has therefore -// been disabled. -// To achieve the same behavior across all shells, one can use -// ValidArgs (for the first argument only) or ValidArgsFunction for -// any argument (can include the first one also). -// -// Deprecated -func (c *Command) MarkZshCompPositionalArgumentWords(argPosition int, words ...string) error { - return nil -} - -func (c *Command) genZshCompletionFile(filename string, includeDesc bool) error { - outFile, err := os.Create(filename) - if err != nil { - return err - } - defer outFile.Close() - - return c.genZshCompletion(outFile, includeDesc) -} - -func (c *Command) genZshCompletion(w io.Writer, includeDesc bool) error { - buf := new(bytes.Buffer) - genZshComp(buf, c.Name(), includeDesc) - _, err := buf.WriteTo(w) - return err -} - -func genZshComp(buf io.StringWriter, name string, includeDesc bool) { - compCmd := ShellCompRequestCmd - if !includeDesc { - compCmd = ShellCompNoDescRequestCmd - } - WriteStringAndCheck(buf, fmt.Sprintf(`#compdef _%[1]s %[1]s - -# zsh completion for %-36[1]s -*- shell-script -*- - -__%[1]s_debug() -{ - local file="$BASH_COMP_DEBUG_FILE" - if [[ -n ${file} ]]; then - echo "$*" >> "${file}" - fi -} - -_%[1]s() -{ - local shellCompDirectiveError=%[3]d - local shellCompDirectiveNoSpace=%[4]d - local shellCompDirectiveNoFileComp=%[5]d - local shellCompDirectiveFilterFileExt=%[6]d - local shellCompDirectiveFilterDirs=%[7]d - - local lastParam lastChar flagPrefix requestComp out directive comp lastComp noSpace - local -a completions - - __%[1]s_debug "\n========= starting completion logic ==========" - __%[1]s_debug "CURRENT: ${CURRENT}, words[*]: ${words[*]}" - - # The user could have moved the cursor backwards on the command-line. - # We need to trigger completion from the $CURRENT location, so we need - # to truncate the command-line ($words) up to the $CURRENT location. - # (We cannot use $CURSOR as its value does not work when a command is an alias.) - words=("${=words[1,CURRENT]}") - __%[1]s_debug "Truncated words[*]: ${words[*]}," - - lastParam=${words[-1]} - lastChar=${lastParam[-1]} - __%[1]s_debug "lastParam: ${lastParam}, lastChar: ${lastChar}" - - # For zsh, when completing a flag with an = (e.g., %[1]s -n=) - # completions must be prefixed with the flag - setopt local_options BASH_REMATCH - if [[ "${lastParam}" =~ '-.*=' ]]; then - # We are dealing with a flag with an = - flagPrefix="-P ${BASH_REMATCH}" - fi - - # Prepare the command to obtain completions - requestComp="${words[1]} %[2]s ${words[2,-1]}" - if [ "${lastChar}" = "" ]; then - # If the last parameter is complete (there is a space following it) - # We add an extra empty parameter so we can indicate this to the go completion code. - __%[1]s_debug "Adding extra empty parameter" - requestComp="${requestComp} \"\"" - fi - - __%[1]s_debug "About to call: eval ${requestComp}" - - # Use eval to handle any environment variables and such - out=$(eval ${requestComp} 2>/dev/null) - __%[1]s_debug "completion output: ${out}" - - # Extract the directive integer following a : from the last line - local lastLine - while IFS='\n' read -r line; do - lastLine=${line} - done < <(printf "%%s\n" "${out[@]}") - __%[1]s_debug "last line: ${lastLine}" - - if [ "${lastLine[1]}" = : ]; then - directive=${lastLine[2,-1]} - # Remove the directive including the : and the newline - local suffix - (( suffix=${#lastLine}+2)) - out=${out[1,-$suffix]} - else - # There is no directive specified. Leave $out as is. - __%[1]s_debug "No directive found. Setting do default" - directive=0 - fi - - __%[1]s_debug "directive: ${directive}" - __%[1]s_debug "completions: ${out}" - __%[1]s_debug "flagPrefix: ${flagPrefix}" - - if [ $((directive & shellCompDirectiveError)) -ne 0 ]; then - __%[1]s_debug "Completion received error. Ignoring completions." - return - fi - - while IFS='\n' read -r comp; do - if [ -n "$comp" ]; then - # If requested, completions are returned with a description. - # The description is preceded by a TAB character. - # For zsh's _describe, we need to use a : instead of a TAB. - # We first need to escape any : as part of the completion itself. - comp=${comp//:/\\:} - - local tab=$(printf '\t') - comp=${comp//$tab/:} - - __%[1]s_debug "Adding completion: ${comp}" - completions+=${comp} - lastComp=$comp - fi - done < <(printf "%%s\n" "${out[@]}") - - if [ $((directive & shellCompDirectiveNoSpace)) -ne 0 ]; then - __%[1]s_debug "Activating nospace." - noSpace="-S ''" - fi - - if [ $((directive & shellCompDirectiveFilterFileExt)) -ne 0 ]; then - # File extension filtering - local filteringCmd - filteringCmd='_files' - for filter in ${completions[@]}; do - if [ ${filter[1]} != '*' ]; then - # zsh requires a glob pattern to do file filtering - filter="\*.$filter" - fi - filteringCmd+=" -g $filter" - done - filteringCmd+=" ${flagPrefix}" - - __%[1]s_debug "File filtering command: $filteringCmd" - _arguments '*:filename:'"$filteringCmd" - elif [ $((directive & shellCompDirectiveFilterDirs)) -ne 0 ]; then - # File completion for directories only - local subdir - subdir="${completions[1]}" - if [ -n "$subdir" ]; then - __%[1]s_debug "Listing directories in $subdir" - pushd "${subdir}" >/dev/null 2>&1 - else - __%[1]s_debug "Listing directories in ." - fi - - local result - _arguments '*:dirname:_files -/'" ${flagPrefix}" - result=$? - if [ -n "$subdir" ]; then - popd >/dev/null 2>&1 - fi - return $result - else - __%[1]s_debug "Calling _describe" - if eval _describe "completions" completions $flagPrefix $noSpace; then - __%[1]s_debug "_describe found some completions" - - # Return the success of having called _describe - return 0 - else - __%[1]s_debug "_describe did not find completions." - __%[1]s_debug "Checking if we should do file completion." - if [ $((directive & shellCompDirectiveNoFileComp)) -ne 0 ]; then - __%[1]s_debug "deactivating file completion" - - # We must return an error code here to let zsh know that there were no - # completions found by _describe; this is what will trigger other - # matching algorithms to attempt to find completions. - # For example zsh can match letters in the middle of words. - return 1 - else - # Perform file completion - __%[1]s_debug "Activating file completion" - - # We must return the result of this command, so it must be the - # last command, or else we must store its result to return it. - _arguments '*:filename:_files'" ${flagPrefix}" - fi - fi - fi -} - -# don't run the completion function when being source-ed or eval-ed -if [ "$funcstack[1]" = "_%[1]s" ]; then - _%[1]s -fi -`, name, compCmd, - ShellCompDirectiveError, ShellCompDirectiveNoSpace, ShellCompDirectiveNoFileComp, - ShellCompDirectiveFilterFileExt, ShellCompDirectiveFilterDirs)) -} diff --git a/vendor/github.com/spf13/cobra/zsh_completions.md b/vendor/github.com/spf13/cobra/zsh_completions.md deleted file mode 100644 index 7cff617..0000000 --- a/vendor/github.com/spf13/cobra/zsh_completions.md +++ /dev/null @@ -1,48 +0,0 @@ -## Generating Zsh Completion For Your cobra.Command - -Please refer to [Shell Completions](shell_completions.md) for details. - -## Zsh completions standardization - -Cobra 1.1 standardized its zsh completion support to align it with its other shell completions. Although the API was kept backwards-compatible, some small changes in behavior were introduced. - -### Deprecation summary - -See further below for more details on these deprecations. - -* `cmd.MarkZshCompPositionalArgumentFile(pos, []string{})` is no longer needed. It is therefore **deprecated** and silently ignored. -* `cmd.MarkZshCompPositionalArgumentFile(pos, glob[])` is **deprecated** and silently ignored. - * Instead use `ValidArgsFunction` with `ShellCompDirectiveFilterFileExt`. -* `cmd.MarkZshCompPositionalArgumentWords()` is **deprecated** and silently ignored. - * Instead use `ValidArgsFunction`. - -### Behavioral changes - -**Noun completion** -|Old behavior|New behavior| -|---|---| -|No file completion by default (opposite of bash)|File completion by default; use `ValidArgsFunction` with `ShellCompDirectiveNoFileComp` to turn off file completion on a per-argument basis| -|Completion of flag names without the `-` prefix having been typed|Flag names are only completed if the user has typed the first `-`| -`cmd.MarkZshCompPositionalArgumentFile(pos, []string{})` used to turn on file completion on a per-argument position basis|File completion for all arguments by default; `cmd.MarkZshCompPositionalArgumentFile()` is **deprecated** and silently ignored| -|`cmd.MarkZshCompPositionalArgumentFile(pos, glob[])` used to turn on file completion **with glob filtering** on a per-argument position basis (zsh-specific)|`cmd.MarkZshCompPositionalArgumentFile()` is **deprecated** and silently ignored; use `ValidArgsFunction` with `ShellCompDirectiveFilterFileExt` for file **extension** filtering (not full glob filtering)| -|`cmd.MarkZshCompPositionalArgumentWords(pos, words[])` used to provide completion choices on a per-argument position basis (zsh-specific)|`cmd.MarkZshCompPositionalArgumentWords()` is **deprecated** and silently ignored; use `ValidArgsFunction` to achieve the same behavior| - -**Flag-value completion** - -|Old behavior|New behavior| -|---|---| -|No file completion by default (opposite of bash)|File completion by default; use `RegisterFlagCompletionFunc()` with `ShellCompDirectiveNoFileComp` to turn off file completion| -|`cmd.MarkFlagFilename(flag, []string{})` and similar used to turn on file completion|File completion by default; `cmd.MarkFlagFilename(flag, []string{})` no longer needed in this context and silently ignored| -|`cmd.MarkFlagFilename(flag, glob[])` used to turn on file completion **with glob filtering** (syntax of `[]string{"*.yaml", "*.yml"}` incompatible with bash)|Will continue to work, however, support for bash syntax is added and should be used instead so as to work for all shells (`[]string{"yaml", "yml"}`)| -|`cmd.MarkFlagDirname(flag)` only completes directories (zsh-specific)|Has been added for all shells| -|Completion of a flag name does not repeat, unless flag is of type `*Array` or `*Slice` (not supported by bash)|Retained for `zsh` and added to `fish`| -|Completion of a flag name does not provide the `=` form (unlike bash)|Retained for `zsh` and added to `fish`| - -**Improvements** - -* Custom completion support (`ValidArgsFunction` and `RegisterFlagCompletionFunc()`) -* File completion by default if no other completions found -* Handling of required flags -* File extension filtering no longer mutually exclusive with bash usage -* Completion of directory names *within* another directory -* Support for `=` form of flags diff --git a/vendor/github.com/src-d/gcfg/LICENSE b/vendor/github.com/src-d/gcfg/LICENSE deleted file mode 100644 index 87a5ced..0000000 --- a/vendor/github.com/src-d/gcfg/LICENSE +++ /dev/null @@ -1,28 +0,0 @@ -Copyright (c) 2012 Péter Surányi. Portions 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/github.com/src-d/gcfg/README b/vendor/github.com/src-d/gcfg/README deleted file mode 100644 index 1ff233a..0000000 --- a/vendor/github.com/src-d/gcfg/README +++ /dev/null @@ -1,4 +0,0 @@ -Gcfg reads INI-style configuration files into Go structs; -supports user-defined types and subsections. - -Package docs: https://godoc.org/gopkg.in/gcfg.v1 diff --git a/vendor/github.com/src-d/gcfg/doc.go b/vendor/github.com/src-d/gcfg/doc.go deleted file mode 100644 index 2edcb41..0000000 --- a/vendor/github.com/src-d/gcfg/doc.go +++ /dev/null @@ -1,145 +0,0 @@ -// Package gcfg reads "INI-style" text-based configuration files with -// "name=value" pairs grouped into sections (gcfg files). -// -// This package is still a work in progress; see the sections below for planned -// changes. -// -// Syntax -// -// The syntax is based on that used by git config: -// http://git-scm.com/docs/git-config#_syntax . -// There are some (planned) differences compared to the git config format: -// - improve data portability: -// - must be encoded in UTF-8 (for now) and must not contain the 0 byte -// - include and "path" type is not supported -// (path type may be implementable as a user-defined type) -// - internationalization -// - section and variable names can contain unicode letters, unicode digits -// (as defined in http://golang.org/ref/spec#Characters ) and hyphens -// (U+002D), starting with a unicode letter -// - disallow potentially ambiguous or misleading definitions: -// - `[sec.sub]` format is not allowed (deprecated in gitconfig) -// - `[sec ""]` is not allowed -// - use `[sec]` for section name "sec" and empty subsection name -// - (planned) within a single file, definitions must be contiguous for each: -// - section: '[secA]' -> '[secB]' -> '[secA]' is an error -// - subsection: '[sec "A"]' -> '[sec "B"]' -> '[sec "A"]' is an error -// - multivalued variable: 'multi=a' -> 'other=x' -> 'multi=b' is an error -// -// Data structure -// -// The functions in this package read values into a user-defined struct. -// Each section corresponds to a struct field in the config struct, and each -// variable in a section corresponds to a data field in the section struct. -// The mapping of each section or variable name to fields is done either based -// on the "gcfg" struct tag or by matching the name of the section or variable, -// ignoring case. In the latter case, hyphens '-' in section and variable names -// correspond to underscores '_' in field names. -// Fields must be exported; to use a section or variable name starting with a -// letter that is neither upper- or lower-case, prefix the field name with 'X'. -// (See https://code.google.com/p/go/issues/detail?id=5763#c4 .) -// -// For sections with subsections, the corresponding field in config must be a -// map, rather than a struct, with string keys and pointer-to-struct values. -// Values for subsection variables are stored in the map with the subsection -// name used as the map key. -// (Note that unlike section and variable names, subsection names are case -// sensitive.) -// When using a map, and there is a section with the same section name but -// without a subsection name, its values are stored with the empty string used -// as the key. -// It is possible to provide default values for subsections in the section -// "default-" (or by setting values in the corresponding struct -// field "Default_"). -// -// The functions in this package panic if config is not a pointer to a struct, -// or when a field is not of a suitable type (either a struct or a map with -// string keys and pointer-to-struct values). -// -// Parsing of values -// -// The section structs in the config struct may contain single-valued or -// multi-valued variables. Variables of unnamed slice type (that is, a type -// starting with `[]`) are treated as multi-value; all others (including named -// slice types) are treated as single-valued variables. -// -// Single-valued variables are handled based on the type as follows. -// Unnamed pointer types (that is, types starting with `*`) are dereferenced, -// and if necessary, a new instance is allocated. -// -// For types implementing the encoding.TextUnmarshaler interface, the -// UnmarshalText method is used to set the value. Implementing this method is -// the recommended way for parsing user-defined types. -// -// For fields of string kind, the value string is assigned to the field, after -// unquoting and unescaping as needed. -// For fields of bool kind, the field is set to true if the value is "true", -// "yes", "on" or "1", and set to false if the value is "false", "no", "off" or -// "0", ignoring case. In addition, single-valued bool fields can be specified -// with a "blank" value (variable name without equals sign and value); in such -// case the value is set to true. -// -// Predefined integer types [u]int(|8|16|32|64) and big.Int are parsed as -// decimal or hexadecimal (if having '0x' prefix). (This is to prevent -// unintuitively handling zero-padded numbers as octal.) Other types having -// [u]int* as the underlying type, such as os.FileMode and uintptr allow -// decimal, hexadecimal, or octal values. -// Parsing mode for integer types can be overridden using the struct tag option -// ",int=mode" where mode is a combination of the 'd', 'h', and 'o' characters -// (each standing for decimal, hexadecimal, and octal, respectively.) -// -// All other types are parsed using fmt.Sscanf with the "%v" verb. -// -// For multi-valued variables, each individual value is parsed as above and -// appended to the slice. If the first value is specified as a "blank" value -// (variable name without equals sign and value), a new slice is allocated; -// that is any values previously set in the slice will be ignored. -// -// The types subpackage for provides helpers for parsing "enum-like" and integer -// types. -// -// Error handling -// -// There are 3 types of errors: -// -// - programmer errors / panics: -// - invalid configuration structure -// - data errors: -// - fatal errors: -// - invalid configuration syntax -// - warnings: -// - data that doesn't belong to any part of the config structure -// -// Programmer errors trigger panics. These are should be fixed by the programmer -// before releasing code that uses gcfg. -// -// Data errors cause gcfg to return a non-nil error value. This includes the -// case when there are extra unknown key-value definitions in the configuration -// data (extra data). -// However, in some occasions it is desirable to be able to proceed in -// situations when the only data error is that of extra data. -// These errors are handled at a different (warning) priority and can be -// filtered out programmatically. To ignore extra data warnings, wrap the -// gcfg.Read*Into invocation into a call to gcfg.FatalOnly. -// -// TODO -// -// The following is a list of changes under consideration: -// - documentation -// - self-contained syntax documentation -// - more practical examples -// - move TODOs to issue tracker (eventually) -// - syntax -// - reconsider valid escape sequences -// (gitconfig doesn't support \r in value, \t in subsection name, etc.) -// - reading / parsing gcfg files -// - define internal representation structure -// - support multiple inputs (readers, strings, files) -// - support declaring encoding (?) -// - support varying fields sets for subsections (?) -// - writing gcfg files -// - error handling -// - make error context accessible programmatically? -// - limit input size? -// -package gcfg // import "github.com/src-d/gcfg" diff --git a/vendor/github.com/src-d/gcfg/errors.go b/vendor/github.com/src-d/gcfg/errors.go deleted file mode 100644 index 853c760..0000000 --- a/vendor/github.com/src-d/gcfg/errors.go +++ /dev/null @@ -1,41 +0,0 @@ -package gcfg - -import ( - "gopkg.in/warnings.v0" -) - -// FatalOnly filters the results of a Read*Into invocation and returns only -// fatal errors. That is, errors (warnings) indicating data for unknown -// sections / variables is ignored. Example invocation: -// -// err := gcfg.FatalOnly(gcfg.ReadFileInto(&cfg, configFile)) -// if err != nil { -// ... -// -func FatalOnly(err error) error { - return warnings.FatalOnly(err) -} - -func isFatal(err error) bool { - _, ok := err.(extraData) - return !ok -} - -type extraData struct { - section string - subsection *string - variable *string -} - -func (e extraData) Error() string { - s := "can't store data at section \"" + e.section + "\"" - if e.subsection != nil { - s += ", subsection \"" + *e.subsection + "\"" - } - if e.variable != nil { - s += ", variable \"" + *e.variable + "\"" - } - return s -} - -var _ error = extraData{} diff --git a/vendor/github.com/src-d/gcfg/go1_0.go b/vendor/github.com/src-d/gcfg/go1_0.go deleted file mode 100644 index 6670210..0000000 --- a/vendor/github.com/src-d/gcfg/go1_0.go +++ /dev/null @@ -1,7 +0,0 @@ -// +build !go1.2 - -package gcfg - -type textUnmarshaler interface { - UnmarshalText(text []byte) error -} diff --git a/vendor/github.com/src-d/gcfg/go1_2.go b/vendor/github.com/src-d/gcfg/go1_2.go deleted file mode 100644 index 6f5843b..0000000 --- a/vendor/github.com/src-d/gcfg/go1_2.go +++ /dev/null @@ -1,9 +0,0 @@ -// +build go1.2 - -package gcfg - -import ( - "encoding" -) - -type textUnmarshaler encoding.TextUnmarshaler diff --git a/vendor/github.com/src-d/gcfg/read.go b/vendor/github.com/src-d/gcfg/read.go deleted file mode 100644 index fff0448..0000000 --- a/vendor/github.com/src-d/gcfg/read.go +++ /dev/null @@ -1,273 +0,0 @@ -package gcfg - -import ( - "fmt" - "io" - "io/ioutil" - "os" - "strings" - - "github.com/src-d/gcfg/scanner" - "github.com/src-d/gcfg/token" - "gopkg.in/warnings.v0" -) - -var unescape = map[rune]rune{'\\': '\\', '"': '"', 'n': '\n', 't': '\t', 'b': '\b'} - -// no error: invalid literals should be caught by scanner -func unquote(s string) string { - u, q, esc := make([]rune, 0, len(s)), false, false - for _, c := range s { - if esc { - uc, ok := unescape[c] - switch { - case ok: - u = append(u, uc) - fallthrough - case !q && c == '\n': - esc = false - continue - } - panic("invalid escape sequence") - } - switch c { - case '"': - q = !q - case '\\': - esc = true - default: - u = append(u, c) - } - } - if q { - panic("missing end quote") - } - if esc { - panic("invalid escape sequence") - } - return string(u) -} - -func read(c *warnings.Collector, callback func(string, string, string, string, bool) error, - fset *token.FileSet, file *token.File, src []byte) error { - // - var s scanner.Scanner - var errs scanner.ErrorList - s.Init(file, src, func(p token.Position, m string) { errs.Add(p, m) }, 0) - sect, sectsub := "", "" - pos, tok, lit := s.Scan() - errfn := func(msg string) error { - return fmt.Errorf("%s: %s", fset.Position(pos), msg) - } - for { - if errs.Len() > 0 { - if err := c.Collect(errs.Err()); err != nil { - return err - } - } - switch tok { - case token.EOF: - return nil - case token.EOL, token.COMMENT: - pos, tok, lit = s.Scan() - case token.LBRACK: - pos, tok, lit = s.Scan() - if errs.Len() > 0 { - if err := c.Collect(errs.Err()); err != nil { - return err - } - } - if tok != token.IDENT { - if err := c.Collect(errfn("expected section name")); err != nil { - return err - } - } - sect, sectsub = lit, "" - pos, tok, lit = s.Scan() - if errs.Len() > 0 { - if err := c.Collect(errs.Err()); err != nil { - return err - } - } - if tok == token.STRING { - sectsub = unquote(lit) - if sectsub == "" { - if err := c.Collect(errfn("empty subsection name")); err != nil { - return err - } - } - pos, tok, lit = s.Scan() - if errs.Len() > 0 { - if err := c.Collect(errs.Err()); err != nil { - return err - } - } - } - if tok != token.RBRACK { - if sectsub == "" { - if err := c.Collect(errfn("expected subsection name or right bracket")); err != nil { - return err - } - } - if err := c.Collect(errfn("expected right bracket")); err != nil { - return err - } - } - pos, tok, lit = s.Scan() - if tok != token.EOL && tok != token.EOF && tok != token.COMMENT { - if err := c.Collect(errfn("expected EOL, EOF, or comment")); err != nil { - return err - } - } - // If a section/subsection header was found, ensure a - // container object is created, even if there are no - // variables further down. - err := c.Collect(callback(sect, sectsub, "", "", true)) - if err != nil { - return err - } - case token.IDENT: - if sect == "" { - if err := c.Collect(errfn("expected section header")); err != nil { - return err - } - } - n := lit - pos, tok, lit = s.Scan() - if errs.Len() > 0 { - return errs.Err() - } - blank, v := tok == token.EOF || tok == token.EOL || tok == token.COMMENT, "" - if !blank { - if tok != token.ASSIGN { - if err := c.Collect(errfn("expected '='")); err != nil { - return err - } - } - pos, tok, lit = s.Scan() - if errs.Len() > 0 { - if err := c.Collect(errs.Err()); err != nil { - return err - } - } - if tok != token.STRING { - if err := c.Collect(errfn("expected value")); err != nil { - return err - } - } - v = unquote(lit) - pos, tok, lit = s.Scan() - if errs.Len() > 0 { - if err := c.Collect(errs.Err()); err != nil { - return err - } - } - if tok != token.EOL && tok != token.EOF && tok != token.COMMENT { - if err := c.Collect(errfn("expected EOL, EOF, or comment")); err != nil { - return err - } - } - } - err := c.Collect(callback(sect, sectsub, n, v, blank)) - if err != nil { - return err - } - default: - if sect == "" { - if err := c.Collect(errfn("expected section header")); err != nil { - return err - } - } - if err := c.Collect(errfn("expected section header or variable declaration")); err != nil { - return err - } - } - } - panic("never reached") -} - -func readInto(config interface{}, fset *token.FileSet, file *token.File, - src []byte) error { - // - c := warnings.NewCollector(isFatal) - firstPassCallback := func(s string, ss string, k string, v string, bv bool) error { - return set(c, config, s, ss, k, v, bv, false) - } - err := read(c, firstPassCallback, fset, file, src) - if err != nil { - return err - } - secondPassCallback := func(s string, ss string, k string, v string, bv bool) error { - return set(c, config, s, ss, k, v, bv, true) - } - err = read(c, secondPassCallback, fset, file, src) - if err != nil { - return err - } - return c.Done() -} - -// ReadWithCallback reads gcfg formatted data from reader and calls -// callback with each section and option found. -// -// Callback is called with section, subsection, option key, option value -// and blank value flag as arguments. -// -// When a section is found, callback is called with nil subsection, option key -// and option value. -// -// When a subsection is found, callback is called with nil option key and -// option value. -// -// If blank value flag is true, it means that the value was not set for an option -// (as opposed to set to empty string). -// -// If callback returns an error, ReadWithCallback terminates with an error too. -func ReadWithCallback(reader io.Reader, callback func(string, string, string, string, bool) error) error { - src, err := ioutil.ReadAll(reader) - if err != nil { - return err - } - - fset := token.NewFileSet() - file := fset.AddFile("", fset.Base(), len(src)) - c := warnings.NewCollector(isFatal) - - return read(c, callback, fset, file, src) -} - -// ReadInto reads gcfg formatted data from reader and sets the values into the -// corresponding fields in config. -func ReadInto(config interface{}, reader io.Reader) error { - src, err := ioutil.ReadAll(reader) - if err != nil { - return err - } - fset := token.NewFileSet() - file := fset.AddFile("", fset.Base(), len(src)) - return readInto(config, fset, file, src) -} - -// ReadStringInto reads gcfg formatted data from str and sets the values into -// the corresponding fields in config. -func ReadStringInto(config interface{}, str string) error { - r := strings.NewReader(str) - return ReadInto(config, r) -} - -// ReadFileInto reads gcfg formatted data from the file filename and sets the -// values into the corresponding fields in config. -func ReadFileInto(config interface{}, filename string) error { - f, err := os.Open(filename) - if err != nil { - return err - } - defer f.Close() - src, err := ioutil.ReadAll(f) - if err != nil { - return err - } - fset := token.NewFileSet() - file := fset.AddFile(filename, fset.Base(), len(src)) - return readInto(config, fset, file, src) -} diff --git a/vendor/github.com/src-d/gcfg/scanner/errors.go b/vendor/github.com/src-d/gcfg/scanner/errors.go deleted file mode 100644 index f3fceca..0000000 --- a/vendor/github.com/src-d/gcfg/scanner/errors.go +++ /dev/null @@ -1,121 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package scanner - -import ( - "fmt" - "io" - "sort" -) - -import ( - "github.com/src-d/gcfg/token" -) - -// In an ErrorList, an error is represented by an *Error. -// The position Pos, if valid, points to the beginning of -// the offending token, and the error condition is described -// by Msg. -// -type Error struct { - Pos token.Position - Msg string -} - -// Error implements the error interface. -func (e Error) Error() string { - if e.Pos.Filename != "" || e.Pos.IsValid() { - // don't print "" - // TODO(gri) reconsider the semantics of Position.IsValid - return e.Pos.String() + ": " + e.Msg - } - return e.Msg -} - -// ErrorList is a list of *Errors. -// The zero value for an ErrorList is an empty ErrorList ready to use. -// -type ErrorList []*Error - -// Add adds an Error with given position and error message to an ErrorList. -func (p *ErrorList) Add(pos token.Position, msg string) { - *p = append(*p, &Error{pos, msg}) -} - -// Reset resets an ErrorList to no errors. -func (p *ErrorList) Reset() { *p = (*p)[0:0] } - -// ErrorList implements the sort Interface. -func (p ErrorList) Len() int { return len(p) } -func (p ErrorList) Swap(i, j int) { p[i], p[j] = p[j], p[i] } - -func (p ErrorList) Less(i, j int) bool { - e := &p[i].Pos - f := &p[j].Pos - if e.Filename < f.Filename { - return true - } - if e.Filename == f.Filename { - return e.Offset < f.Offset - } - return false -} - -// Sort sorts an ErrorList. *Error entries are sorted by position, -// other errors are sorted by error message, and before any *Error -// entry. -// -func (p ErrorList) Sort() { - sort.Sort(p) -} - -// RemoveMultiples sorts an ErrorList and removes all but the first error per line. -func (p *ErrorList) RemoveMultiples() { - sort.Sort(p) - var last token.Position // initial last.Line is != any legal error line - i := 0 - for _, e := range *p { - if e.Pos.Filename != last.Filename || e.Pos.Line != last.Line { - last = e.Pos - (*p)[i] = e - i++ - } - } - (*p) = (*p)[0:i] -} - -// An ErrorList implements the error interface. -func (p ErrorList) Error() string { - switch len(p) { - case 0: - return "no errors" - case 1: - return p[0].Error() - } - return fmt.Sprintf("%s (and %d more errors)", p[0], len(p)-1) -} - -// Err returns an error equivalent to this error list. -// If the list is empty, Err returns nil. -func (p ErrorList) Err() error { - if len(p) == 0 { - return nil - } - return p -} - -// PrintError is a utility function that prints a list of errors to w, -// one error per line, if the err parameter is an ErrorList. Otherwise -// it prints the err string. -// -func PrintError(w io.Writer, err error) { - if list, ok := err.(ErrorList); ok { - for _, e := range list { - fmt.Fprintf(w, "%s\n", e) - } - } else if err != nil { - fmt.Fprintf(w, "%s\n", err) - } -} diff --git a/vendor/github.com/src-d/gcfg/scanner/scanner.go b/vendor/github.com/src-d/gcfg/scanner/scanner.go deleted file mode 100644 index b1eef06..0000000 --- a/vendor/github.com/src-d/gcfg/scanner/scanner.go +++ /dev/null @@ -1,342 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package scanner implements a scanner for gcfg configuration text. -// It takes a []byte as source which can then be tokenized -// through repeated calls to the Scan method. -// -// Note that the API for the scanner package may change to accommodate new -// features or implementation changes in gcfg. -// -package scanner - -import ( - "fmt" - "path/filepath" - "unicode" - "unicode/utf8" -) - -import ( - "github.com/src-d/gcfg/token" -) - -// An ErrorHandler may be provided to Scanner.Init. If a syntax error is -// encountered and a handler was installed, the handler is called with a -// position and an error message. The position points to the beginning of -// the offending token. -// -type ErrorHandler func(pos token.Position, msg string) - -// A Scanner holds the scanner's internal state while processing -// a given text. It can be allocated as part of another data -// structure but must be initialized via Init before use. -// -type Scanner struct { - // immutable state - file *token.File // source file handle - dir string // directory portion of file.Name() - src []byte // source - err ErrorHandler // error reporting; or nil - mode Mode // scanning mode - - // scanning state - ch rune // current character - offset int // character offset - rdOffset int // reading offset (position after current character) - lineOffset int // current line offset - nextVal bool // next token is expected to be a value - - // public state - ok to modify - ErrorCount int // number of errors encountered -} - -// Read the next Unicode char into s.ch. -// s.ch < 0 means end-of-file. -// -func (s *Scanner) next() { - if s.rdOffset < len(s.src) { - s.offset = s.rdOffset - if s.ch == '\n' { - s.lineOffset = s.offset - s.file.AddLine(s.offset) - } - r, w := rune(s.src[s.rdOffset]), 1 - switch { - case r == 0: - s.error(s.offset, "illegal character NUL") - case r >= 0x80: - // not ASCII - r, w = utf8.DecodeRune(s.src[s.rdOffset:]) - if r == utf8.RuneError && w == 1 { - s.error(s.offset, "illegal UTF-8 encoding") - } - } - s.rdOffset += w - s.ch = r - } else { - s.offset = len(s.src) - if s.ch == '\n' { - s.lineOffset = s.offset - s.file.AddLine(s.offset) - } - s.ch = -1 // eof - } -} - -// A mode value is a set of flags (or 0). -// They control scanner behavior. -// -type Mode uint - -const ( - ScanComments Mode = 1 << iota // return comments as COMMENT tokens -) - -// Init prepares the scanner s to tokenize the text src by setting the -// scanner at the beginning of src. The scanner uses the file set file -// for position information and it adds line information for each line. -// It is ok to re-use the same file when re-scanning the same file as -// line information which is already present is ignored. Init causes a -// panic if the file size does not match the src size. -// -// Calls to Scan will invoke the error handler err if they encounter a -// syntax error and err is not nil. Also, for each error encountered, -// the Scanner field ErrorCount is incremented by one. The mode parameter -// determines how comments are handled. -// -// Note that Init may call err if there is an error in the first character -// of the file. -// -func (s *Scanner) Init(file *token.File, src []byte, err ErrorHandler, mode Mode) { - // Explicitly initialize all fields since a scanner may be reused. - if file.Size() != len(src) { - panic(fmt.Sprintf("file size (%d) does not match src len (%d)", file.Size(), len(src))) - } - s.file = file - s.dir, _ = filepath.Split(file.Name()) - s.src = src - s.err = err - s.mode = mode - - s.ch = ' ' - s.offset = 0 - s.rdOffset = 0 - s.lineOffset = 0 - s.ErrorCount = 0 - s.nextVal = false - - s.next() -} - -func (s *Scanner) error(offs int, msg string) { - if s.err != nil { - s.err(s.file.Position(s.file.Pos(offs)), msg) - } - s.ErrorCount++ -} - -func (s *Scanner) scanComment() string { - // initial [;#] already consumed - offs := s.offset - 1 // position of initial [;#] - - for s.ch != '\n' && s.ch >= 0 { - s.next() - } - return string(s.src[offs:s.offset]) -} - -func isLetter(ch rune) bool { - return 'a' <= ch && ch <= 'z' || 'A' <= ch && ch <= 'Z' || ch >= 0x80 && unicode.IsLetter(ch) -} - -func isDigit(ch rune) bool { - return '0' <= ch && ch <= '9' || ch >= 0x80 && unicode.IsDigit(ch) -} - -func (s *Scanner) scanIdentifier() string { - offs := s.offset - for isLetter(s.ch) || isDigit(s.ch) || s.ch == '-' { - s.next() - } - return string(s.src[offs:s.offset]) -} - -func (s *Scanner) scanEscape(val bool) { - offs := s.offset - ch := s.ch - s.next() // always make progress - switch ch { - case '\\', '"': - // ok - case 'n', 't', 'b': - if val { - break // ok - } - fallthrough - default: - s.error(offs, "unknown escape sequence") - } -} - -func (s *Scanner) scanString() string { - // '"' opening already consumed - offs := s.offset - 1 - - for s.ch != '"' { - ch := s.ch - s.next() - if ch == '\n' || ch < 0 { - s.error(offs, "string not terminated") - break - } - if ch == '\\' { - s.scanEscape(false) - } - } - - s.next() - - return string(s.src[offs:s.offset]) -} - -func stripCR(b []byte) []byte { - c := make([]byte, len(b)) - i := 0 - for _, ch := range b { - if ch != '\r' { - c[i] = ch - i++ - } - } - return c[:i] -} - -func (s *Scanner) scanValString() string { - offs := s.offset - - hasCR := false - end := offs - inQuote := false -loop: - for inQuote || s.ch >= 0 && s.ch != '\n' && s.ch != ';' && s.ch != '#' { - ch := s.ch - s.next() - switch { - case inQuote && ch == '\\': - s.scanEscape(true) - case !inQuote && ch == '\\': - if s.ch == '\r' { - hasCR = true - s.next() - } - if s.ch != '\n' { - s.scanEscape(true) - } else { - s.next() - } - case ch == '"': - inQuote = !inQuote - case ch == '\r': - hasCR = true - case ch < 0 || inQuote && ch == '\n': - s.error(offs, "string not terminated") - break loop - } - if inQuote || !isWhiteSpace(ch) { - end = s.offset - } - } - - lit := s.src[offs:end] - if hasCR { - lit = stripCR(lit) - } - - return string(lit) -} - -func isWhiteSpace(ch rune) bool { - return ch == ' ' || ch == '\t' || ch == '\r' -} - -func (s *Scanner) skipWhitespace() { - for isWhiteSpace(s.ch) { - s.next() - } -} - -// Scan scans the next token and returns the token position, the token, -// and its literal string if applicable. The source end is indicated by -// token.EOF. -// -// If the returned token is a literal (token.IDENT, token.STRING) or -// token.COMMENT, the literal string has the corresponding value. -// -// If the returned token is token.ILLEGAL, the literal string is the -// offending character. -// -// In all other cases, Scan returns an empty literal string. -// -// For more tolerant parsing, Scan will return a valid token if -// possible even if a syntax error was encountered. Thus, even -// if the resulting token sequence contains no illegal tokens, -// a client may not assume that no error occurred. Instead it -// must check the scanner's ErrorCount or the number of calls -// of the error handler, if there was one installed. -// -// Scan adds line information to the file added to the file -// set with Init. Token positions are relative to that file -// and thus relative to the file set. -// -func (s *Scanner) Scan() (pos token.Pos, tok token.Token, lit string) { -scanAgain: - s.skipWhitespace() - - // current token start - pos = s.file.Pos(s.offset) - - // determine token value - switch ch := s.ch; { - case s.nextVal: - lit = s.scanValString() - tok = token.STRING - s.nextVal = false - case isLetter(ch): - lit = s.scanIdentifier() - tok = token.IDENT - default: - s.next() // always make progress - switch ch { - case -1: - tok = token.EOF - case '\n': - tok = token.EOL - case '"': - tok = token.STRING - lit = s.scanString() - case '[': - tok = token.LBRACK - case ']': - tok = token.RBRACK - case ';', '#': - // comment - lit = s.scanComment() - if s.mode&ScanComments == 0 { - // skip comment - goto scanAgain - } - tok = token.COMMENT - case '=': - tok = token.ASSIGN - s.nextVal = true - default: - s.error(s.file.Offset(pos), fmt.Sprintf("illegal character %#U", ch)) - tok = token.ILLEGAL - lit = string(ch) - } - } - - return -} diff --git a/vendor/github.com/src-d/gcfg/set.go b/vendor/github.com/src-d/gcfg/set.go deleted file mode 100644 index 771258f..0000000 --- a/vendor/github.com/src-d/gcfg/set.go +++ /dev/null @@ -1,332 +0,0 @@ -package gcfg - -import ( - "bytes" - "encoding/gob" - "fmt" - "math/big" - "reflect" - "strings" - "unicode" - "unicode/utf8" - - "github.com/src-d/gcfg/types" - "gopkg.in/warnings.v0" -) - -type tag struct { - ident string - intMode string -} - -func newTag(ts string) tag { - t := tag{} - s := strings.Split(ts, ",") - t.ident = s[0] - for _, tse := range s[1:] { - if strings.HasPrefix(tse, "int=") { - t.intMode = tse[len("int="):] - } - } - return t -} - -func fieldFold(v reflect.Value, name string) (reflect.Value, tag) { - var n string - r0, _ := utf8.DecodeRuneInString(name) - if unicode.IsLetter(r0) && !unicode.IsLower(r0) && !unicode.IsUpper(r0) { - n = "X" - } - n += strings.Replace(name, "-", "_", -1) - f, ok := v.Type().FieldByNameFunc(func(fieldName string) bool { - if !v.FieldByName(fieldName).CanSet() { - return false - } - f, _ := v.Type().FieldByName(fieldName) - t := newTag(f.Tag.Get("gcfg")) - if t.ident != "" { - return strings.EqualFold(t.ident, name) - } - return strings.EqualFold(n, fieldName) - }) - if !ok { - return reflect.Value{}, tag{} - } - return v.FieldByName(f.Name), newTag(f.Tag.Get("gcfg")) -} - -type setter func(destp interface{}, blank bool, val string, t tag) error - -var errUnsupportedType = fmt.Errorf("unsupported type") -var errBlankUnsupported = fmt.Errorf("blank value not supported for type") - -var setters = []setter{ - typeSetter, textUnmarshalerSetter, kindSetter, scanSetter, -} - -func textUnmarshalerSetter(d interface{}, blank bool, val string, t tag) error { - dtu, ok := d.(textUnmarshaler) - if !ok { - return errUnsupportedType - } - if blank { - return errBlankUnsupported - } - return dtu.UnmarshalText([]byte(val)) -} - -func boolSetter(d interface{}, blank bool, val string, t tag) error { - if blank { - reflect.ValueOf(d).Elem().Set(reflect.ValueOf(true)) - return nil - } - b, err := types.ParseBool(val) - if err == nil { - reflect.ValueOf(d).Elem().Set(reflect.ValueOf(b)) - } - return err -} - -func intMode(mode string) types.IntMode { - var m types.IntMode - if strings.ContainsAny(mode, "dD") { - m |= types.Dec - } - if strings.ContainsAny(mode, "hH") { - m |= types.Hex - } - if strings.ContainsAny(mode, "oO") { - m |= types.Oct - } - return m -} - -var typeModes = map[reflect.Type]types.IntMode{ - reflect.TypeOf(int(0)): types.Dec | types.Hex, - reflect.TypeOf(int8(0)): types.Dec | types.Hex, - reflect.TypeOf(int16(0)): types.Dec | types.Hex, - reflect.TypeOf(int32(0)): types.Dec | types.Hex, - reflect.TypeOf(int64(0)): types.Dec | types.Hex, - reflect.TypeOf(uint(0)): types.Dec | types.Hex, - reflect.TypeOf(uint8(0)): types.Dec | types.Hex, - reflect.TypeOf(uint16(0)): types.Dec | types.Hex, - reflect.TypeOf(uint32(0)): types.Dec | types.Hex, - reflect.TypeOf(uint64(0)): types.Dec | types.Hex, - // use default mode (allow dec/hex/oct) for uintptr type - reflect.TypeOf(big.Int{}): types.Dec | types.Hex, -} - -func intModeDefault(t reflect.Type) types.IntMode { - m, ok := typeModes[t] - if !ok { - m = types.Dec | types.Hex | types.Oct - } - return m -} - -func intSetter(d interface{}, blank bool, val string, t tag) error { - if blank { - return errBlankUnsupported - } - mode := intMode(t.intMode) - if mode == 0 { - mode = intModeDefault(reflect.TypeOf(d).Elem()) - } - return types.ParseInt(d, val, mode) -} - -func stringSetter(d interface{}, blank bool, val string, t tag) error { - if blank { - return errBlankUnsupported - } - dsp, ok := d.(*string) - if !ok { - return errUnsupportedType - } - *dsp = val - return nil -} - -var kindSetters = map[reflect.Kind]setter{ - reflect.String: stringSetter, - reflect.Bool: boolSetter, - reflect.Int: intSetter, - reflect.Int8: intSetter, - reflect.Int16: intSetter, - reflect.Int32: intSetter, - reflect.Int64: intSetter, - reflect.Uint: intSetter, - reflect.Uint8: intSetter, - reflect.Uint16: intSetter, - reflect.Uint32: intSetter, - reflect.Uint64: intSetter, - reflect.Uintptr: intSetter, -} - -var typeSetters = map[reflect.Type]setter{ - reflect.TypeOf(big.Int{}): intSetter, -} - -func typeSetter(d interface{}, blank bool, val string, tt tag) error { - t := reflect.ValueOf(d).Type().Elem() - setter, ok := typeSetters[t] - if !ok { - return errUnsupportedType - } - return setter(d, blank, val, tt) -} - -func kindSetter(d interface{}, blank bool, val string, tt tag) error { - k := reflect.ValueOf(d).Type().Elem().Kind() - setter, ok := kindSetters[k] - if !ok { - return errUnsupportedType - } - return setter(d, blank, val, tt) -} - -func scanSetter(d interface{}, blank bool, val string, tt tag) error { - if blank { - return errBlankUnsupported - } - return types.ScanFully(d, val, 'v') -} - -func newValue(c *warnings.Collector, sect string, vCfg reflect.Value, - vType reflect.Type) (reflect.Value, error) { - // - pv := reflect.New(vType) - dfltName := "default-" + sect - dfltField, _ := fieldFold(vCfg, dfltName) - var err error - if dfltField.IsValid() { - b := bytes.NewBuffer(nil) - ge := gob.NewEncoder(b) - if err = c.Collect(ge.EncodeValue(dfltField)); err != nil { - return pv, err - } - gd := gob.NewDecoder(bytes.NewReader(b.Bytes())) - if err = c.Collect(gd.DecodeValue(pv.Elem())); err != nil { - return pv, err - } - } - return pv, nil -} - -func set(c *warnings.Collector, cfg interface{}, sect, sub, name string, - value string, blankValue bool, subsectPass bool) error { - // - vPCfg := reflect.ValueOf(cfg) - if vPCfg.Kind() != reflect.Ptr || vPCfg.Elem().Kind() != reflect.Struct { - panic(fmt.Errorf("config must be a pointer to a struct")) - } - vCfg := vPCfg.Elem() - vSect, _ := fieldFold(vCfg, sect) - if !vSect.IsValid() { - err := extraData{section: sect} - return c.Collect(err) - } - isSubsect := vSect.Kind() == reflect.Map - if subsectPass != isSubsect { - return nil - } - if isSubsect { - vst := vSect.Type() - if vst.Key().Kind() != reflect.String || - vst.Elem().Kind() != reflect.Ptr || - vst.Elem().Elem().Kind() != reflect.Struct { - panic(fmt.Errorf("map field for section must have string keys and "+ - " pointer-to-struct values: section %q", sect)) - } - if vSect.IsNil() { - vSect.Set(reflect.MakeMap(vst)) - } - k := reflect.ValueOf(sub) - pv := vSect.MapIndex(k) - if !pv.IsValid() { - vType := vSect.Type().Elem().Elem() - var err error - if pv, err = newValue(c, sect, vCfg, vType); err != nil { - return err - } - vSect.SetMapIndex(k, pv) - } - vSect = pv.Elem() - } else if vSect.Kind() != reflect.Struct { - panic(fmt.Errorf("field for section must be a map or a struct: "+ - "section %q", sect)) - } else if sub != "" { - err := extraData{section: sect, subsection: &sub} - return c.Collect(err) - } - // Empty name is a special value, meaning that only the - // section/subsection object is to be created, with no values set. - if name == "" { - return nil - } - vVar, t := fieldFold(vSect, name) - if !vVar.IsValid() { - var err error - if isSubsect { - err = extraData{section: sect, subsection: &sub, variable: &name} - } else { - err = extraData{section: sect, variable: &name} - } - return c.Collect(err) - } - // vVal is either single-valued var, or newly allocated value within multi-valued var - var vVal reflect.Value - // multi-value if unnamed slice type - isMulti := vVar.Type().Name() == "" && vVar.Kind() == reflect.Slice || - vVar.Type().Name() == "" && vVar.Kind() == reflect.Ptr && vVar.Type().Elem().Name() == "" && vVar.Type().Elem().Kind() == reflect.Slice - if isMulti && vVar.Kind() == reflect.Ptr { - if vVar.IsNil() { - vVar.Set(reflect.New(vVar.Type().Elem())) - } - vVar = vVar.Elem() - } - if isMulti && blankValue { - vVar.Set(reflect.Zero(vVar.Type())) - return nil - } - if isMulti { - vVal = reflect.New(vVar.Type().Elem()).Elem() - } else { - vVal = vVar - } - isDeref := vVal.Type().Name() == "" && vVal.Type().Kind() == reflect.Ptr - isNew := isDeref && vVal.IsNil() - // vAddr is address of value to set (dereferenced & allocated as needed) - var vAddr reflect.Value - switch { - case isNew: - vAddr = reflect.New(vVal.Type().Elem()) - case isDeref && !isNew: - vAddr = vVal - default: - vAddr = vVal.Addr() - } - vAddrI := vAddr.Interface() - err, ok := error(nil), false - for _, s := range setters { - err = s(vAddrI, blankValue, value, t) - if err == nil { - ok = true - break - } - if err != errUnsupportedType { - return err - } - } - if !ok { - // in case all setters returned errUnsupportedType - return err - } - if isNew { // set reference if it was dereferenced and newly allocated - vVal.Set(vAddr) - } - if isMulti { // append if multi-valued - vVar.Set(reflect.Append(vVar, vVal)) - } - return nil -} diff --git a/vendor/github.com/src-d/gcfg/token/position.go b/vendor/github.com/src-d/gcfg/token/position.go deleted file mode 100644 index fc45c1e..0000000 --- a/vendor/github.com/src-d/gcfg/token/position.go +++ /dev/null @@ -1,435 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// TODO(gri) consider making this a separate package outside the go directory. - -package token - -import ( - "fmt" - "sort" - "sync" -) - -// ----------------------------------------------------------------------------- -// Positions - -// Position describes an arbitrary source position -// including the file, line, and column location. -// A Position is valid if the line number is > 0. -// -type Position struct { - Filename string // filename, if any - Offset int // offset, starting at 0 - Line int // line number, starting at 1 - Column int // column number, starting at 1 (character count) -} - -// IsValid returns true if the position is valid. -func (pos *Position) IsValid() bool { return pos.Line > 0 } - -// String returns a string in one of several forms: -// -// file:line:column valid position with file name -// line:column valid position without file name -// file invalid position with file name -// - invalid position without file name -// -func (pos Position) String() string { - s := pos.Filename - if pos.IsValid() { - if s != "" { - s += ":" - } - s += fmt.Sprintf("%d:%d", pos.Line, pos.Column) - } - if s == "" { - s = "-" - } - return s -} - -// Pos is a compact encoding of a source position within a file set. -// It can be converted into a Position for a more convenient, but much -// larger, representation. -// -// The Pos value for a given file is a number in the range [base, base+size], -// where base and size are specified when adding the file to the file set via -// AddFile. -// -// To create the Pos value for a specific source offset, first add -// the respective file to the current file set (via FileSet.AddFile) -// and then call File.Pos(offset) for that file. Given a Pos value p -// for a specific file set fset, the corresponding Position value is -// obtained by calling fset.Position(p). -// -// Pos values can be compared directly with the usual comparison operators: -// If two Pos values p and q are in the same file, comparing p and q is -// equivalent to comparing the respective source file offsets. If p and q -// are in different files, p < q is true if the file implied by p was added -// to the respective file set before the file implied by q. -// -type Pos int - -// The zero value for Pos is NoPos; there is no file and line information -// associated with it, and NoPos().IsValid() is false. NoPos is always -// smaller than any other Pos value. The corresponding Position value -// for NoPos is the zero value for Position. -// -const NoPos Pos = 0 - -// IsValid returns true if the position is valid. -func (p Pos) IsValid() bool { - return p != NoPos -} - -// ----------------------------------------------------------------------------- -// File - -// A File is a handle for a file belonging to a FileSet. -// A File has a name, size, and line offset table. -// -type File struct { - set *FileSet - name string // file name as provided to AddFile - base int // Pos value range for this file is [base...base+size] - size int // file size as provided to AddFile - - // lines and infos are protected by set.mutex - lines []int - infos []lineInfo -} - -// Name returns the file name of file f as registered with AddFile. -func (f *File) Name() string { - return f.name -} - -// Base returns the base offset of file f as registered with AddFile. -func (f *File) Base() int { - return f.base -} - -// Size returns the size of file f as registered with AddFile. -func (f *File) Size() int { - return f.size -} - -// LineCount returns the number of lines in file f. -func (f *File) LineCount() int { - f.set.mutex.RLock() - n := len(f.lines) - f.set.mutex.RUnlock() - return n -} - -// AddLine adds the line offset for a new line. -// The line offset must be larger than the offset for the previous line -// and smaller than the file size; otherwise the line offset is ignored. -// -func (f *File) AddLine(offset int) { - f.set.mutex.Lock() - if i := len(f.lines); (i == 0 || f.lines[i-1] < offset) && offset < f.size { - f.lines = append(f.lines, offset) - } - f.set.mutex.Unlock() -} - -// SetLines sets the line offsets for a file and returns true if successful. -// The line offsets are the offsets of the first character of each line; -// for instance for the content "ab\nc\n" the line offsets are {0, 3}. -// An empty file has an empty line offset table. -// Each line offset must be larger than the offset for the previous line -// and smaller than the file size; otherwise SetLines fails and returns -// false. -// -func (f *File) SetLines(lines []int) bool { - // verify validity of lines table - size := f.size - for i, offset := range lines { - if i > 0 && offset <= lines[i-1] || size <= offset { - return false - } - } - - // set lines table - f.set.mutex.Lock() - f.lines = lines - f.set.mutex.Unlock() - return true -} - -// SetLinesForContent sets the line offsets for the given file content. -func (f *File) SetLinesForContent(content []byte) { - var lines []int - line := 0 - for offset, b := range content { - if line >= 0 { - lines = append(lines, line) - } - line = -1 - if b == '\n' { - line = offset + 1 - } - } - - // set lines table - f.set.mutex.Lock() - f.lines = lines - f.set.mutex.Unlock() -} - -// A lineInfo object describes alternative file and line number -// information (such as provided via a //line comment in a .go -// file) for a given file offset. -type lineInfo struct { - // fields are exported to make them accessible to gob - Offset int - Filename string - Line int -} - -// AddLineInfo adds alternative file and line number information for -// a given file offset. The offset must be larger than the offset for -// the previously added alternative line info and smaller than the -// file size; otherwise the information is ignored. -// -// AddLineInfo is typically used to register alternative position -// information for //line filename:line comments in source files. -// -func (f *File) AddLineInfo(offset int, filename string, line int) { - f.set.mutex.Lock() - if i := len(f.infos); i == 0 || f.infos[i-1].Offset < offset && offset < f.size { - f.infos = append(f.infos, lineInfo{offset, filename, line}) - } - f.set.mutex.Unlock() -} - -// Pos returns the Pos value for the given file offset; -// the offset must be <= f.Size(). -// f.Pos(f.Offset(p)) == p. -// -func (f *File) Pos(offset int) Pos { - if offset > f.size { - panic("illegal file offset") - } - return Pos(f.base + offset) -} - -// Offset returns the offset for the given file position p; -// p must be a valid Pos value in that file. -// f.Offset(f.Pos(offset)) == offset. -// -func (f *File) Offset(p Pos) int { - if int(p) < f.base || int(p) > f.base+f.size { - panic("illegal Pos value") - } - return int(p) - f.base -} - -// Line returns the line number for the given file position p; -// p must be a Pos value in that file or NoPos. -// -func (f *File) Line(p Pos) int { - // TODO(gri) this can be implemented much more efficiently - return f.Position(p).Line -} - -func searchLineInfos(a []lineInfo, x int) int { - return sort.Search(len(a), func(i int) bool { return a[i].Offset > x }) - 1 -} - -// info returns the file name, line, and column number for a file offset. -func (f *File) info(offset int) (filename string, line, column int) { - filename = f.name - if i := searchInts(f.lines, offset); i >= 0 { - line, column = i+1, offset-f.lines[i]+1 - } - if len(f.infos) > 0 { - // almost no files have extra line infos - if i := searchLineInfos(f.infos, offset); i >= 0 { - alt := &f.infos[i] - filename = alt.Filename - if i := searchInts(f.lines, alt.Offset); i >= 0 { - line += alt.Line - i - 1 - } - } - } - return -} - -func (f *File) position(p Pos) (pos Position) { - offset := int(p) - f.base - pos.Offset = offset - pos.Filename, pos.Line, pos.Column = f.info(offset) - return -} - -// Position returns the Position value for the given file position p; -// p must be a Pos value in that file or NoPos. -// -func (f *File) Position(p Pos) (pos Position) { - if p != NoPos { - if int(p) < f.base || int(p) > f.base+f.size { - panic("illegal Pos value") - } - pos = f.position(p) - } - return -} - -// ----------------------------------------------------------------------------- -// FileSet - -// A FileSet represents a set of source files. -// Methods of file sets are synchronized; multiple goroutines -// may invoke them concurrently. -// -type FileSet struct { - mutex sync.RWMutex // protects the file set - base int // base offset for the next file - files []*File // list of files in the order added to the set - last *File // cache of last file looked up -} - -// NewFileSet creates a new file set. -func NewFileSet() *FileSet { - s := new(FileSet) - s.base = 1 // 0 == NoPos - return s -} - -// Base returns the minimum base offset that must be provided to -// AddFile when adding the next file. -// -func (s *FileSet) Base() int { - s.mutex.RLock() - b := s.base - s.mutex.RUnlock() - return b - -} - -// AddFile adds a new file with a given filename, base offset, and file size -// to the file set s and returns the file. Multiple files may have the same -// name. The base offset must not be smaller than the FileSet's Base(), and -// size must not be negative. -// -// Adding the file will set the file set's Base() value to base + size + 1 -// as the minimum base value for the next file. The following relationship -// exists between a Pos value p for a given file offset offs: -// -// int(p) = base + offs -// -// with offs in the range [0, size] and thus p in the range [base, base+size]. -// For convenience, File.Pos may be used to create file-specific position -// values from a file offset. -// -func (s *FileSet) AddFile(filename string, base, size int) *File { - s.mutex.Lock() - defer s.mutex.Unlock() - if base < s.base || size < 0 { - panic("illegal base or size") - } - // base >= s.base && size >= 0 - f := &File{s, filename, base, size, []int{0}, nil} - base += size + 1 // +1 because EOF also has a position - if base < 0 { - panic("token.Pos offset overflow (> 2G of source code in file set)") - } - // add the file to the file set - s.base = base - s.files = append(s.files, f) - s.last = f - return f -} - -// Iterate calls f for the files in the file set in the order they were added -// until f returns false. -// -func (s *FileSet) Iterate(f func(*File) bool) { - for i := 0; ; i++ { - var file *File - s.mutex.RLock() - if i < len(s.files) { - file = s.files[i] - } - s.mutex.RUnlock() - if file == nil || !f(file) { - break - } - } -} - -func searchFiles(a []*File, x int) int { - return sort.Search(len(a), func(i int) bool { return a[i].base > x }) - 1 -} - -func (s *FileSet) file(p Pos) *File { - // common case: p is in last file - if f := s.last; f != nil && f.base <= int(p) && int(p) <= f.base+f.size { - return f - } - // p is not in last file - search all files - if i := searchFiles(s.files, int(p)); i >= 0 { - f := s.files[i] - // f.base <= int(p) by definition of searchFiles - if int(p) <= f.base+f.size { - s.last = f - return f - } - } - return nil -} - -// File returns the file that contains the position p. -// If no such file is found (for instance for p == NoPos), -// the result is nil. -// -func (s *FileSet) File(p Pos) (f *File) { - if p != NoPos { - s.mutex.RLock() - f = s.file(p) - s.mutex.RUnlock() - } - return -} - -// Position converts a Pos in the fileset into a general Position. -func (s *FileSet) Position(p Pos) (pos Position) { - if p != NoPos { - s.mutex.RLock() - if f := s.file(p); f != nil { - pos = f.position(p) - } - s.mutex.RUnlock() - } - return -} - -// ----------------------------------------------------------------------------- -// Helper functions - -func searchInts(a []int, x int) int { - // This function body is a manually inlined version of: - // - // return sort.Search(len(a), func(i int) bool { return a[i] > x }) - 1 - // - // With better compiler optimizations, this may not be needed in the - // future, but at the moment this change improves the go/printer - // benchmark performance by ~30%. This has a direct impact on the - // speed of gofmt and thus seems worthwhile (2011-04-29). - // TODO(gri): Remove this when compilers have caught up. - i, j := 0, len(a) - for i < j { - h := i + (j-i)/2 // avoid overflow when computing h - // i ≤ h < j - if a[h] <= x { - i = h + 1 - } else { - j = h - } - } - return i - 1 -} diff --git a/vendor/github.com/src-d/gcfg/token/serialize.go b/vendor/github.com/src-d/gcfg/token/serialize.go deleted file mode 100644 index 4adc8f9..0000000 --- a/vendor/github.com/src-d/gcfg/token/serialize.go +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2011 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 token - -type serializedFile struct { - // fields correspond 1:1 to fields with same (lower-case) name in File - Name string - Base int - Size int - Lines []int - Infos []lineInfo -} - -type serializedFileSet struct { - Base int - Files []serializedFile -} - -// Read calls decode to deserialize a file set into s; s must not be nil. -func (s *FileSet) Read(decode func(interface{}) error) error { - var ss serializedFileSet - if err := decode(&ss); err != nil { - return err - } - - s.mutex.Lock() - s.base = ss.Base - files := make([]*File, len(ss.Files)) - for i := 0; i < len(ss.Files); i++ { - f := &ss.Files[i] - files[i] = &File{s, f.Name, f.Base, f.Size, f.Lines, f.Infos} - } - s.files = files - s.last = nil - s.mutex.Unlock() - - return nil -} - -// Write calls encode to serialize the file set s. -func (s *FileSet) Write(encode func(interface{}) error) error { - var ss serializedFileSet - - s.mutex.Lock() - ss.Base = s.base - files := make([]serializedFile, len(s.files)) - for i, f := range s.files { - files[i] = serializedFile{f.name, f.base, f.size, f.lines, f.infos} - } - ss.Files = files - s.mutex.Unlock() - - return encode(ss) -} diff --git a/vendor/github.com/src-d/gcfg/token/token.go b/vendor/github.com/src-d/gcfg/token/token.go deleted file mode 100644 index b3c7c83..0000000 --- a/vendor/github.com/src-d/gcfg/token/token.go +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package token defines constants representing the lexical tokens of the gcfg -// configuration syntax and basic operations on tokens (printing, predicates). -// -// Note that the API for the token package may change to accommodate new -// features or implementation changes in gcfg. -// -package token - -import "strconv" - -// Token is the set of lexical tokens of the gcfg configuration syntax. -type Token int - -// The list of tokens. -const ( - // Special tokens - ILLEGAL Token = iota - EOF - COMMENT - - literal_beg - // Identifiers and basic type literals - // (these tokens stand for classes of literals) - IDENT // section-name, variable-name - STRING // "subsection-name", variable value - literal_end - - operator_beg - // Operators and delimiters - ASSIGN // = - LBRACK // [ - RBRACK // ] - EOL // \n - operator_end -) - -var tokens = [...]string{ - ILLEGAL: "ILLEGAL", - - EOF: "EOF", - COMMENT: "COMMENT", - - IDENT: "IDENT", - STRING: "STRING", - - ASSIGN: "=", - LBRACK: "[", - RBRACK: "]", - EOL: "\n", -} - -// String returns the string corresponding to the token tok. -// For operators and delimiters, the string is the actual token character -// sequence (e.g., for the token ASSIGN, the string is "="). For all other -// tokens the string corresponds to the token constant name (e.g. for the -// token IDENT, the string is "IDENT"). -// -func (tok Token) String() string { - s := "" - if 0 <= tok && tok < Token(len(tokens)) { - s = tokens[tok] - } - if s == "" { - s = "token(" + strconv.Itoa(int(tok)) + ")" - } - return s -} - -// Predicates - -// IsLiteral returns true for tokens corresponding to identifiers -// and basic type literals; it returns false otherwise. -// -func (tok Token) IsLiteral() bool { return literal_beg < tok && tok < literal_end } - -// IsOperator returns true for tokens corresponding to operators and -// delimiters; it returns false otherwise. -// -func (tok Token) IsOperator() bool { return operator_beg < tok && tok < operator_end } diff --git a/vendor/github.com/src-d/gcfg/types/bool.go b/vendor/github.com/src-d/gcfg/types/bool.go deleted file mode 100644 index 8dcae0d..0000000 --- a/vendor/github.com/src-d/gcfg/types/bool.go +++ /dev/null @@ -1,23 +0,0 @@ -package types - -// BoolValues defines the name and value mappings for ParseBool. -var BoolValues = map[string]interface{}{ - "true": true, "yes": true, "on": true, "1": true, - "false": false, "no": false, "off": false, "0": false, -} - -var boolParser = func() *EnumParser { - ep := &EnumParser{} - ep.AddVals(BoolValues) - return ep -}() - -// ParseBool parses bool values according to the definitions in BoolValues. -// Parsing is case-insensitive. -func ParseBool(s string) (bool, error) { - v, err := boolParser.Parse(s) - if err != nil { - return false, err - } - return v.(bool), nil -} diff --git a/vendor/github.com/src-d/gcfg/types/doc.go b/vendor/github.com/src-d/gcfg/types/doc.go deleted file mode 100644 index 9f9c345..0000000 --- a/vendor/github.com/src-d/gcfg/types/doc.go +++ /dev/null @@ -1,4 +0,0 @@ -// Package types defines helpers for type conversions. -// -// The API for this package is not finalized yet. -package types diff --git a/vendor/github.com/src-d/gcfg/types/enum.go b/vendor/github.com/src-d/gcfg/types/enum.go deleted file mode 100644 index 1a0c7ef..0000000 --- a/vendor/github.com/src-d/gcfg/types/enum.go +++ /dev/null @@ -1,44 +0,0 @@ -package types - -import ( - "fmt" - "reflect" - "strings" -) - -// EnumParser parses "enum" values; i.e. a predefined set of strings to -// predefined values. -type EnumParser struct { - Type string // type name; if not set, use type of first value added - CaseMatch bool // if true, matching of strings is case-sensitive - // PrefixMatch bool - vals map[string]interface{} -} - -// AddVals adds strings and values to an EnumParser. -func (ep *EnumParser) AddVals(vals map[string]interface{}) { - if ep.vals == nil { - ep.vals = make(map[string]interface{}) - } - for k, v := range vals { - if ep.Type == "" { - ep.Type = reflect.TypeOf(v).Name() - } - if !ep.CaseMatch { - k = strings.ToLower(k) - } - ep.vals[k] = v - } -} - -// Parse parses the string and returns the value or an error. -func (ep EnumParser) Parse(s string) (interface{}, error) { - if !ep.CaseMatch { - s = strings.ToLower(s) - } - v, ok := ep.vals[s] - if !ok { - return false, fmt.Errorf("failed to parse %s %#q", ep.Type, s) - } - return v, nil -} diff --git a/vendor/github.com/src-d/gcfg/types/int.go b/vendor/github.com/src-d/gcfg/types/int.go deleted file mode 100644 index af7e75c..0000000 --- a/vendor/github.com/src-d/gcfg/types/int.go +++ /dev/null @@ -1,86 +0,0 @@ -package types - -import ( - "fmt" - "strings" -) - -// An IntMode is a mode for parsing integer values, representing a set of -// accepted bases. -type IntMode uint8 - -// IntMode values for ParseInt; can be combined using binary or. -const ( - Dec IntMode = 1 << iota - Hex - Oct -) - -// String returns a string representation of IntMode; e.g. `IntMode(Dec|Hex)`. -func (m IntMode) String() string { - var modes []string - if m&Dec != 0 { - modes = append(modes, "Dec") - } - if m&Hex != 0 { - modes = append(modes, "Hex") - } - if m&Oct != 0 { - modes = append(modes, "Oct") - } - return "IntMode(" + strings.Join(modes, "|") + ")" -} - -var errIntAmbig = fmt.Errorf("ambiguous integer value; must include '0' prefix") - -func prefix0(val string) bool { - return strings.HasPrefix(val, "0") || strings.HasPrefix(val, "-0") -} - -func prefix0x(val string) bool { - return strings.HasPrefix(val, "0x") || strings.HasPrefix(val, "-0x") -} - -// ParseInt parses val using mode into intptr, which must be a pointer to an -// integer kind type. Non-decimal value require prefix `0` or `0x` in the cases -// when mode permits ambiguity of base; otherwise the prefix can be omitted. -func ParseInt(intptr interface{}, val string, mode IntMode) error { - val = strings.TrimSpace(val) - verb := byte(0) - switch mode { - case Dec: - verb = 'd' - case Dec + Hex: - if prefix0x(val) { - verb = 'v' - } else { - verb = 'd' - } - case Dec + Oct: - if prefix0(val) && !prefix0x(val) { - verb = 'v' - } else { - verb = 'd' - } - case Dec + Hex + Oct: - verb = 'v' - case Hex: - if prefix0x(val) { - verb = 'v' - } else { - verb = 'x' - } - case Oct: - verb = 'o' - case Hex + Oct: - if prefix0(val) { - verb = 'v' - } else { - return errIntAmbig - } - } - if verb == 0 { - panic("unsupported mode") - } - return ScanFully(intptr, val, verb) -} diff --git a/vendor/github.com/src-d/gcfg/types/scan.go b/vendor/github.com/src-d/gcfg/types/scan.go deleted file mode 100644 index db2f6ed..0000000 --- a/vendor/github.com/src-d/gcfg/types/scan.go +++ /dev/null @@ -1,23 +0,0 @@ -package types - -import ( - "fmt" - "io" - "reflect" -) - -// ScanFully uses fmt.Sscanf with verb to fully scan val into ptr. -func ScanFully(ptr interface{}, val string, verb byte) error { - t := reflect.ValueOf(ptr).Elem().Type() - // attempt to read extra bytes to make sure the value is consumed - var b []byte - n, err := fmt.Sscanf(val, "%"+string(verb)+"%s", ptr, &b) - switch { - case n < 1 || n == 1 && err != io.EOF: - return fmt.Errorf("failed to parse %q as %v: %v", val, t, err) - case n > 1: - return fmt.Errorf("failed to parse %q as %v: extra characters %q", val, t, string(b)) - } - // n == 1 && err == io.EOF - return nil -} diff --git a/vendor/github.com/xanzy/ssh-agent/.gitignore b/vendor/github.com/xanzy/ssh-agent/.gitignore deleted file mode 100644 index daf913b..0000000 --- a/vendor/github.com/xanzy/ssh-agent/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# Compiled Object files, Static and Dynamic libs (Shared Objects) -*.o -*.a -*.so - -# Folders -_obj -_test - -# Architecture specific extensions/prefixes -*.[568vq] -[568vq].out - -*.cgo1.go -*.cgo2.c -_cgo_defun.c -_cgo_gotypes.go -_cgo_export.* - -_testmain.go - -*.exe -*.test -*.prof diff --git a/vendor/github.com/xanzy/ssh-agent/LICENSE b/vendor/github.com/xanzy/ssh-agent/LICENSE deleted file mode 100644 index 8f71f43..0000000 --- a/vendor/github.com/xanzy/ssh-agent/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor 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, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright {yyyy} {name of copyright owner} - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - diff --git a/vendor/github.com/xanzy/ssh-agent/README.md b/vendor/github.com/xanzy/ssh-agent/README.md deleted file mode 100644 index d93af40..0000000 --- a/vendor/github.com/xanzy/ssh-agent/README.md +++ /dev/null @@ -1,23 +0,0 @@ -# ssh-agent - -Create a new [agent.Agent](https://godoc.org/golang.org/x/crypto/ssh/agent#Agent) on any type of OS (so including Windows) from any [Go](https://golang.org) application. - -## Limitations - -When compiled for Windows, it will only support [Pageant](http://the.earth.li/~sgtatham/putty/0.66/htmldoc/Chapter9.html#pageant) as the SSH authentication agent. - -## Credits - -Big thanks to [Давид Мзареулян (David Mzareulyan)](https://github.com/davidmz) for creating the [go-pageant](https://github.com/davidmz/go-pageant) package! - -## Issues - -If you have an issue: report it on the [issue tracker](https://github.com/xanzy/ssh-agent/issues) - -## Author - -Sander van Harmelen () - -## License - -The files `pageant_windows.go` and `sshagent_windows.go` have their own license (see file headers). The rest of this package is licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at diff --git a/vendor/github.com/xanzy/ssh-agent/pageant_windows.go b/vendor/github.com/xanzy/ssh-agent/pageant_windows.go deleted file mode 100644 index 6295607..0000000 --- a/vendor/github.com/xanzy/ssh-agent/pageant_windows.go +++ /dev/null @@ -1,146 +0,0 @@ -// -// Copyright (c) 2014 David Mzareulyan -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of this software -// and associated documentation files (the "Software"), to deal in the Software without restriction, -// including without limitation the rights to use, copy, modify, merge, publish, distribute, -// sublicense, and/or sell copies of the Software, and to permit persons to whom the Software -// is furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all copies or substantial -// portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING -// BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -// - -// +build windows - -package sshagent - -// see https://github.com/Yasushi/putty/blob/master/windows/winpgntc.c#L155 -// see https://github.com/paramiko/paramiko/blob/master/paramiko/win_pageant.py - -import ( - "encoding/binary" - "errors" - "fmt" - "sync" - "syscall" - "unsafe" -) - -// Maximum size of message can be sent to pageant -const MaxMessageLen = 8192 - -var ( - ErrPageantNotFound = errors.New("pageant process not found") - ErrSendMessage = errors.New("error sending message") - - ErrMessageTooLong = errors.New("message too long") - ErrInvalidMessageFormat = errors.New("invalid message format") - ErrResponseTooLong = errors.New("response too long") -) - -const ( - agentCopydataID = 0x804e50ba - wmCopydata = 74 -) - -type copyData struct { - dwData uintptr - cbData uint32 - lpData unsafe.Pointer -} - -var ( - lock sync.Mutex - - winFindWindow = winAPI("user32.dll", "FindWindowW") - winGetCurrentThreadID = winAPI("kernel32.dll", "GetCurrentThreadId") - winSendMessage = winAPI("user32.dll", "SendMessageW") -) - -func winAPI(dllName, funcName string) func(...uintptr) (uintptr, uintptr, error) { - proc := syscall.MustLoadDLL(dllName).MustFindProc(funcName) - return func(a ...uintptr) (uintptr, uintptr, error) { return proc.Call(a...) } -} - -// Available returns true if Pageant is running -func Available() bool { return pageantWindow() != 0 } - -// Query sends message msg to Pageant and returns response or error. -// 'msg' is raw agent request with length prefix -// Response is raw agent response with length prefix -func query(msg []byte) ([]byte, error) { - if len(msg) > MaxMessageLen { - return nil, ErrMessageTooLong - } - - msgLen := binary.BigEndian.Uint32(msg[:4]) - if len(msg) != int(msgLen)+4 { - return nil, ErrInvalidMessageFormat - } - - lock.Lock() - defer lock.Unlock() - - paWin := pageantWindow() - - if paWin == 0 { - return nil, ErrPageantNotFound - } - - thID, _, _ := winGetCurrentThreadID() - mapName := fmt.Sprintf("PageantRequest%08x", thID) - pMapName, _ := syscall.UTF16PtrFromString(mapName) - - mmap, err := syscall.CreateFileMapping(syscall.InvalidHandle, nil, syscall.PAGE_READWRITE, 0, MaxMessageLen+4, pMapName) - if err != nil { - return nil, err - } - defer syscall.CloseHandle(mmap) - - ptr, err := syscall.MapViewOfFile(mmap, syscall.FILE_MAP_WRITE, 0, 0, 0) - if err != nil { - return nil, err - } - defer syscall.UnmapViewOfFile(ptr) - - mmSlice := (*(*[MaxMessageLen]byte)(unsafe.Pointer(ptr)))[:] - - copy(mmSlice, msg) - - mapNameBytesZ := append([]byte(mapName), 0) - - cds := copyData{ - dwData: agentCopydataID, - cbData: uint32(len(mapNameBytesZ)), - lpData: unsafe.Pointer(&(mapNameBytesZ[0])), - } - - resp, _, _ := winSendMessage(paWin, wmCopydata, 0, uintptr(unsafe.Pointer(&cds))) - - if resp == 0 { - return nil, ErrSendMessage - } - - respLen := binary.BigEndian.Uint32(mmSlice[:4]) - if respLen > MaxMessageLen-4 { - return nil, ErrResponseTooLong - } - - respData := make([]byte, respLen+4) - copy(respData, mmSlice) - - return respData, nil -} - -func pageantWindow() uintptr { - nameP, _ := syscall.UTF16PtrFromString("Pageant") - h, _, _ := winFindWindow(uintptr(unsafe.Pointer(nameP)), uintptr(unsafe.Pointer(nameP))) - return h -} diff --git a/vendor/github.com/xanzy/ssh-agent/sshagent.go b/vendor/github.com/xanzy/ssh-agent/sshagent.go deleted file mode 100644 index 259fea2..0000000 --- a/vendor/github.com/xanzy/ssh-agent/sshagent.go +++ /dev/null @@ -1,49 +0,0 @@ -// -// Copyright 2015, Sander van Harmelen -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -// +build !windows - -package sshagent - -import ( - "errors" - "fmt" - "net" - "os" - - "golang.org/x/crypto/ssh/agent" -) - -// New returns a new agent.Agent that uses a unix socket -func New() (agent.Agent, net.Conn, error) { - if !Available() { - return nil, nil, errors.New("SSH agent requested but SSH_AUTH_SOCK not-specified") - } - - sshAuthSock := os.Getenv("SSH_AUTH_SOCK") - - conn, err := net.Dial("unix", sshAuthSock) - if err != nil { - return nil, nil, fmt.Errorf("Error connecting to SSH_AUTH_SOCK: %v", err) - } - - return agent.NewClient(conn), conn, nil -} - -// Available returns true is a auth socket is defined -func Available() bool { - return os.Getenv("SSH_AUTH_SOCK") != "" -} diff --git a/vendor/github.com/xanzy/ssh-agent/sshagent_windows.go b/vendor/github.com/xanzy/ssh-agent/sshagent_windows.go deleted file mode 100644 index c46710e..0000000 --- a/vendor/github.com/xanzy/ssh-agent/sshagent_windows.go +++ /dev/null @@ -1,80 +0,0 @@ -// -// Copyright (c) 2014 David Mzareulyan -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of this software -// and associated documentation files (the "Software"), to deal in the Software without restriction, -// including without limitation the rights to use, copy, modify, merge, publish, distribute, -// sublicense, and/or sell copies of the Software, and to permit persons to whom the Software -// is furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all copies or substantial -// portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING -// BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -// - -// +build windows - -package sshagent - -import ( - "errors" - "io" - "net" - "sync" - - "golang.org/x/crypto/ssh/agent" -) - -// New returns a new agent.Agent and the (custom) connection it uses -// to communicate with a running pagent.exe instance (see README.md) -func New() (agent.Agent, net.Conn, error) { - if !Available() { - return nil, nil, errors.New("SSH agent requested but Pageant not running") - } - - return agent.NewClient(&conn{}), nil, nil -} - -type conn struct { - sync.Mutex - buf []byte -} - -func (c *conn) Close() { - c.Lock() - defer c.Unlock() - c.buf = nil -} - -func (c *conn) Write(p []byte) (int, error) { - c.Lock() - defer c.Unlock() - - resp, err := query(p) - if err != nil { - return 0, err - } - - c.buf = append(c.buf, resp...) - - return len(p), nil -} - -func (c *conn) Read(p []byte) (int, error) { - c.Lock() - defer c.Unlock() - - if len(c.buf) == 0 { - return 0, io.EOF - } - - n := copy(p, c.buf) - c.buf = c.buf[n:] - - return n, nil -} diff --git a/vendor/go.opencensus.io/.gitignore b/vendor/go.opencensus.io/.gitignore deleted file mode 100644 index 74a6db4..0000000 --- a/vendor/go.opencensus.io/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -/.idea/ - -# go.opencensus.io/exporter/aws -/exporter/aws/ - -# Exclude vendor, use dep ensure after checkout: -/vendor/github.com/ -/vendor/golang.org/ -/vendor/google.golang.org/ diff --git a/vendor/go.opencensus.io/AUTHORS b/vendor/go.opencensus.io/AUTHORS deleted file mode 100644 index e491a9e..0000000 --- a/vendor/go.opencensus.io/AUTHORS +++ /dev/null @@ -1 +0,0 @@ -Google Inc. diff --git a/vendor/go.opencensus.io/CONTRIBUTING.md b/vendor/go.opencensus.io/CONTRIBUTING.md deleted file mode 100644 index 1ba3962..0000000 --- a/vendor/go.opencensus.io/CONTRIBUTING.md +++ /dev/null @@ -1,63 +0,0 @@ -# How to contribute - -We'd love to accept your patches and contributions to this project. There are -just a few small guidelines you need to follow. - -## Contributor License Agreement - -Contributions to this project must be accompanied by a Contributor License -Agreement. You (or your employer) retain the copyright to your contribution, -this simply gives us permission to use and redistribute your contributions as -part of the project. Head over to to see -your current agreements on file or to sign a new one. - -You generally only need to submit a CLA once, so if you've already submitted one -(even if it was for a different project), you probably don't need to do it -again. - -## Code reviews - -All submissions, including submissions by project members, require review. We -use GitHub pull requests for this purpose. Consult [GitHub Help] for more -information on using pull requests. - -[GitHub Help]: https://help.github.com/articles/about-pull-requests/ - -## Instructions - -Fork the repo, checkout the upstream repo to your GOPATH by: - -``` -$ go get -d go.opencensus.io -``` - -Add your fork as an origin: - -``` -cd $(go env GOPATH)/src/go.opencensus.io -git remote add fork git@github.com:YOUR_GITHUB_USERNAME/opencensus-go.git -``` - -Run tests: - -``` -$ make install-tools # Only first time. -$ make -``` - -Checkout a new branch, make modifications and push the branch to your fork: - -``` -$ git checkout -b feature -# edit files -$ git commit -$ git push fork feature -``` - -Open a pull request against the main opencensus-go repo. - -## General Notes -This project uses Appveyor and Travis for CI. - -The dependencies are managed with `go mod` if you work with the sources under your -`$GOPATH` you need to set the environment variable `GO111MODULE=on`. \ No newline at end of file diff --git a/vendor/go.opencensus.io/LICENSE b/vendor/go.opencensus.io/LICENSE deleted file mode 100644 index 7a4a3ea..0000000 --- a/vendor/go.opencensus.io/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor 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, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. \ No newline at end of file diff --git a/vendor/go.opencensus.io/Makefile b/vendor/go.opencensus.io/Makefile deleted file mode 100644 index b3ce3df..0000000 --- a/vendor/go.opencensus.io/Makefile +++ /dev/null @@ -1,97 +0,0 @@ -# TODO: Fix this on windows. -ALL_SRC := $(shell find . -name '*.go' \ - -not -path './vendor/*' \ - -not -path '*/gen-go/*' \ - -type f | sort) -ALL_PKGS := $(shell go list $(sort $(dir $(ALL_SRC)))) - -GOTEST_OPT?=-v -race -timeout 30s -GOTEST_OPT_WITH_COVERAGE = $(GOTEST_OPT) -coverprofile=coverage.txt -covermode=atomic -GOTEST=go test -GOIMPORTS=goimports -GOLINT=golint -GOVET=go vet -EMBEDMD=embedmd -# TODO decide if we need to change these names. -TRACE_ID_LINT_EXCEPTION="type name will be used as trace.TraceID by other packages" -TRACE_OPTION_LINT_EXCEPTION="type name will be used as trace.TraceOptions by other packages" -README_FILES := $(shell find . -name '*README.md' | sort | tr '\n' ' ') - -.DEFAULT_GOAL := imports-lint-vet-embedmd-test - -.PHONY: imports-lint-vet-embedmd-test -imports-lint-vet-embedmd-test: imports lint vet embedmd test - -# TODO enable test-with-coverage in tavis -.PHONY: travis-ci -travis-ci: imports lint vet embedmd test test-386 - -all-pkgs: - @echo $(ALL_PKGS) | tr ' ' '\n' | sort - -all-srcs: - @echo $(ALL_SRC) | tr ' ' '\n' | sort - -.PHONY: test -test: - $(GOTEST) $(GOTEST_OPT) $(ALL_PKGS) - -.PHONY: test-386 -test-386: - GOARCH=386 $(GOTEST) -v -timeout 30s $(ALL_PKGS) - -.PHONY: test-with-coverage -test-with-coverage: - $(GOTEST) $(GOTEST_OPT_WITH_COVERAGE) $(ALL_PKGS) - -.PHONY: imports -imports: - @IMPORTSOUT=`$(GOIMPORTS) -l $(ALL_SRC) 2>&1`; \ - if [ "$$IMPORTSOUT" ]; then \ - echo "$(GOIMPORTS) FAILED => goimports the following files:\n"; \ - echo "$$IMPORTSOUT\n"; \ - exit 1; \ - else \ - echo "Imports finished successfully"; \ - fi - -.PHONY: lint -lint: - @LINTOUT=`$(GOLINT) $(ALL_PKGS) | grep -v $(TRACE_ID_LINT_EXCEPTION) | grep -v $(TRACE_OPTION_LINT_EXCEPTION) 2>&1`; \ - if [ "$$LINTOUT" ]; then \ - echo "$(GOLINT) FAILED => clean the following lint errors:\n"; \ - echo "$$LINTOUT\n"; \ - exit 1; \ - else \ - echo "Lint finished successfully"; \ - fi - -.PHONY: vet -vet: - # TODO: Understand why go vet downloads "github.com/google/go-cmp v0.2.0" - @VETOUT=`$(GOVET) ./... | grep -v "go: downloading" 2>&1`; \ - if [ "$$VETOUT" ]; then \ - echo "$(GOVET) FAILED => go vet the following files:\n"; \ - echo "$$VETOUT\n"; \ - exit 1; \ - else \ - echo "Vet finished successfully"; \ - fi - -.PHONY: embedmd -embedmd: - @EMBEDMDOUT=`$(EMBEDMD) -d $(README_FILES) 2>&1`; \ - if [ "$$EMBEDMDOUT" ]; then \ - echo "$(EMBEDMD) FAILED => embedmd the following files:\n"; \ - echo "$$EMBEDMDOUT\n"; \ - exit 1; \ - else \ - echo "Embedmd finished successfully"; \ - fi - -.PHONY: install-tools -install-tools: - go get -u golang.org/x/lint/golint - go get -u golang.org/x/tools/cmd/cover - go get -u golang.org/x/tools/cmd/goimports - go get -u github.com/rakyll/embedmd diff --git a/vendor/go.opencensus.io/README.md b/vendor/go.opencensus.io/README.md deleted file mode 100644 index 1d7e837..0000000 --- a/vendor/go.opencensus.io/README.md +++ /dev/null @@ -1,267 +0,0 @@ -# OpenCensus Libraries for Go - -[![Build Status][travis-image]][travis-url] -[![Windows Build Status][appveyor-image]][appveyor-url] -[![GoDoc][godoc-image]][godoc-url] -[![Gitter chat][gitter-image]][gitter-url] - -OpenCensus Go is a Go implementation of OpenCensus, a toolkit for -collecting application performance and behavior monitoring data. -Currently it consists of three major components: tags, stats and tracing. - -#### OpenCensus and OpenTracing have merged to form OpenTelemetry, which serves as the next major version of OpenCensus and OpenTracing. OpenTelemetry will offer backwards compatibility with existing OpenCensus integrations, and we will continue to make security patches to existing OpenCensus libraries for two years. Read more about the merger [here](https://medium.com/opentracing/a-roadmap-to-convergence-b074e5815289). - -## Installation - -``` -$ go get -u go.opencensus.io -``` - -The API of this project is still evolving, see: [Deprecation Policy](#deprecation-policy). -The use of vendoring or a dependency management tool is recommended. - -## Prerequisites - -OpenCensus Go libraries require Go 1.8 or later. - -## Getting Started - -The easiest way to get started using OpenCensus in your application is to use an existing -integration with your RPC framework: - -* [net/http](https://godoc.org/go.opencensus.io/plugin/ochttp) -* [gRPC](https://godoc.org/go.opencensus.io/plugin/ocgrpc) -* [database/sql](https://godoc.org/github.com/opencensus-integrations/ocsql) -* [Go kit](https://godoc.org/github.com/go-kit/kit/tracing/opencensus) -* [Groupcache](https://godoc.org/github.com/orijtech/groupcache) -* [Caddy webserver](https://godoc.org/github.com/orijtech/caddy) -* [MongoDB](https://godoc.org/github.com/orijtech/mongo-go-driver) -* [Redis gomodule/redigo](https://godoc.org/github.com/orijtech/redigo) -* [Redis goredis/redis](https://godoc.org/github.com/orijtech/redis) -* [Memcache](https://godoc.org/github.com/orijtech/gomemcache) - -If you're using a framework not listed here, you could either implement your own middleware for your -framework or use [custom stats](#stats) and [spans](#spans) directly in your application. - -## Exporters - -OpenCensus can export instrumentation data to various backends. -OpenCensus has exporter implementations for the following, users -can implement their own exporters by implementing the exporter interfaces -([stats](https://godoc.org/go.opencensus.io/stats/view#Exporter), -[trace](https://godoc.org/go.opencensus.io/trace#Exporter)): - -* [Prometheus][exporter-prom] for stats -* [OpenZipkin][exporter-zipkin] for traces -* [Stackdriver][exporter-stackdriver] Monitoring for stats and Trace for traces -* [Jaeger][exporter-jaeger] for traces -* [AWS X-Ray][exporter-xray] for traces -* [Datadog][exporter-datadog] for stats and traces -* [Graphite][exporter-graphite] for stats -* [Honeycomb][exporter-honeycomb] for traces -* [New Relic][exporter-newrelic] for stats and traces - -## Overview - -![OpenCensus Overview](https://i.imgur.com/cf4ElHE.jpg) - -In a microservices environment, a user request may go through -multiple services until there is a response. OpenCensus allows -you to instrument your services and collect diagnostics data all -through your services end-to-end. - -## Tags - -Tags represent propagated key-value pairs. They are propagated using `context.Context` -in the same process or can be encoded to be transmitted on the wire. Usually, this will -be handled by an integration plugin, e.g. `ocgrpc.ServerHandler` and `ocgrpc.ClientHandler` -for gRPC. - -Package `tag` allows adding or modifying tags in the current context. - -[embedmd]:# (internal/readme/tags.go new) -```go -ctx, err := tag.New(ctx, - tag.Insert(osKey, "macOS-10.12.5"), - tag.Upsert(userIDKey, "cde36753ed"), -) -if err != nil { - log.Fatal(err) -} -``` - -## Stats - -OpenCensus is a low-overhead framework even if instrumentation is always enabled. -In order to be so, it is optimized to make recording of data points fast -and separate from the data aggregation. - -OpenCensus stats collection happens in two stages: - -* Definition of measures and recording of data points -* Definition of views and aggregation of the recorded data - -### Recording - -Measurements are data points associated with a measure. -Recording implicitly tags the set of Measurements with the tags from the -provided context: - -[embedmd]:# (internal/readme/stats.go record) -```go -stats.Record(ctx, videoSize.M(102478)) -``` - -### Views - -Views are how Measures are aggregated. You can think of them as queries over the -set of recorded data points (measurements). - -Views have two parts: the tags to group by and the aggregation type used. - -Currently three types of aggregations are supported: -* CountAggregation is used to count the number of times a sample was recorded. -* DistributionAggregation is used to provide a histogram of the values of the samples. -* SumAggregation is used to sum up all sample values. - -[embedmd]:# (internal/readme/stats.go aggs) -```go -distAgg := view.Distribution(1<<32, 2<<32, 3<<32) -countAgg := view.Count() -sumAgg := view.Sum() -``` - -Here we create a view with the DistributionAggregation over our measure. - -[embedmd]:# (internal/readme/stats.go view) -```go -if err := view.Register(&view.View{ - Name: "example.com/video_size_distribution", - Description: "distribution of processed video size over time", - Measure: videoSize, - Aggregation: view.Distribution(1<<32, 2<<32, 3<<32), -}); err != nil { - log.Fatalf("Failed to register view: %v", err) -} -``` - -Register begins collecting data for the view. Registered views' data will be -exported via the registered exporters. - -## Traces - -A distributed trace tracks the progression of a single user request as -it is handled by the services and processes that make up an application. -Each step is called a span in the trace. Spans include metadata about the step, -including especially the time spent in the step, called the span’s latency. - -Below you see a trace and several spans underneath it. - -![Traces and spans](https://i.imgur.com/7hZwRVj.png) - -### Spans - -Span is the unit step in a trace. Each span has a name, latency, status and -additional metadata. - -Below we are starting a span for a cache read and ending it -when we are done: - -[embedmd]:# (internal/readme/trace.go startend) -```go -ctx, span := trace.StartSpan(ctx, "cache.Get") -defer span.End() - -// Do work to get from cache. -``` - -### Propagation - -Spans can have parents or can be root spans if they don't have any parents. -The current span is propagated in-process and across the network to allow associating -new child spans with the parent. - -In the same process, `context.Context` is used to propagate spans. -`trace.StartSpan` creates a new span as a root if the current context -doesn't contain a span. Or, it creates a child of the span that is -already in current context. The returned context can be used to keep -propagating the newly created span in the current context. - -[embedmd]:# (internal/readme/trace.go startend) -```go -ctx, span := trace.StartSpan(ctx, "cache.Get") -defer span.End() - -// Do work to get from cache. -``` - -Across the network, OpenCensus provides different propagation -methods for different protocols. - -* gRPC integrations use the OpenCensus' [binary propagation format](https://godoc.org/go.opencensus.io/trace/propagation). -* HTTP integrations use Zipkin's [B3](https://github.com/openzipkin/b3-propagation) - by default but can be configured to use a custom propagation method by setting another - [propagation.HTTPFormat](https://godoc.org/go.opencensus.io/trace/propagation#HTTPFormat). - -## Execution Tracer - -With Go 1.11, OpenCensus Go will support integration with the Go execution tracer. -See [Debugging Latency in Go](https://medium.com/observability/debugging-latency-in-go-1-11-9f97a7910d68) -for an example of their mutual use. - -## Profiles - -OpenCensus tags can be applied as profiler labels -for users who are on Go 1.9 and above. - -[embedmd]:# (internal/readme/tags.go profiler) -```go -ctx, err = tag.New(ctx, - tag.Insert(osKey, "macOS-10.12.5"), - tag.Insert(userIDKey, "fff0989878"), -) -if err != nil { - log.Fatal(err) -} -tag.Do(ctx, func(ctx context.Context) { - // Do work. - // When profiling is on, samples will be - // recorded with the key/values from the tag map. -}) -``` - -A screenshot of the CPU profile from the program above: - -![CPU profile](https://i.imgur.com/jBKjlkw.png) - -## Deprecation Policy - -Before version 1.0.0, the following deprecation policy will be observed: - -No backwards-incompatible changes will be made except for the removal of symbols that have -been marked as *Deprecated* for at least one minor release (e.g. 0.9.0 to 0.10.0). A release -removing the *Deprecated* functionality will be made no sooner than 28 days after the first -release in which the functionality was marked *Deprecated*. - -[travis-image]: https://travis-ci.org/census-instrumentation/opencensus-go.svg?branch=master -[travis-url]: https://travis-ci.org/census-instrumentation/opencensus-go -[appveyor-image]: https://ci.appveyor.com/api/projects/status/vgtt29ps1783ig38?svg=true -[appveyor-url]: https://ci.appveyor.com/project/opencensusgoteam/opencensus-go/branch/master -[godoc-image]: https://godoc.org/go.opencensus.io?status.svg -[godoc-url]: https://godoc.org/go.opencensus.io -[gitter-image]: https://badges.gitter.im/census-instrumentation/lobby.svg -[gitter-url]: https://gitter.im/census-instrumentation/lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge - - -[new-ex]: https://godoc.org/go.opencensus.io/tag#example-NewMap -[new-replace-ex]: https://godoc.org/go.opencensus.io/tag#example-NewMap--Replace - -[exporter-prom]: https://godoc.org/contrib.go.opencensus.io/exporter/prometheus -[exporter-stackdriver]: https://godoc.org/contrib.go.opencensus.io/exporter/stackdriver -[exporter-zipkin]: https://godoc.org/contrib.go.opencensus.io/exporter/zipkin -[exporter-jaeger]: https://godoc.org/contrib.go.opencensus.io/exporter/jaeger -[exporter-xray]: https://github.com/census-ecosystem/opencensus-go-exporter-aws -[exporter-datadog]: https://github.com/DataDog/opencensus-go-exporter-datadog -[exporter-graphite]: https://github.com/census-ecosystem/opencensus-go-exporter-graphite -[exporter-honeycomb]: https://github.com/honeycombio/opencensus-exporter -[exporter-newrelic]: https://github.com/newrelic/newrelic-opencensus-exporter-go diff --git a/vendor/go.opencensus.io/appveyor.yml b/vendor/go.opencensus.io/appveyor.yml deleted file mode 100644 index d08f0ed..0000000 --- a/vendor/go.opencensus.io/appveyor.yml +++ /dev/null @@ -1,24 +0,0 @@ -version: "{build}" - -platform: x64 - -clone_folder: c:\gopath\src\go.opencensus.io - -environment: - GOPATH: 'c:\gopath' - GO111MODULE: 'on' - CGO_ENABLED: '0' # See: https://github.com/appveyor/ci/issues/2613 - -stack: go 1.11 - -before_test: - - go version - - go env - -build: false -deploy: false - -test_script: - - cd %APPVEYOR_BUILD_FOLDER% - - go build -v .\... - - go test -v .\... # No -race because cgo is disabled diff --git a/vendor/go.opencensus.io/internal/internal.go b/vendor/go.opencensus.io/internal/internal.go deleted file mode 100644 index 81dc718..0000000 --- a/vendor/go.opencensus.io/internal/internal.go +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2017, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package internal // import "go.opencensus.io/internal" - -import ( - "fmt" - "time" - - opencensus "go.opencensus.io" -) - -// UserAgent is the user agent to be added to the outgoing -// requests from the exporters. -var UserAgent = fmt.Sprintf("opencensus-go/%s", opencensus.Version()) - -// MonotonicEndTime returns the end time at present -// but offset from start, monotonically. -// -// The monotonic clock is used in subtractions hence -// the duration since start added back to start gives -// end as a monotonic time. -// See https://golang.org/pkg/time/#hdr-Monotonic_Clocks -func MonotonicEndTime(start time.Time) time.Time { - return start.Add(time.Since(start)) -} diff --git a/vendor/go.opencensus.io/internal/sanitize.go b/vendor/go.opencensus.io/internal/sanitize.go deleted file mode 100644 index de8ccf2..0000000 --- a/vendor/go.opencensus.io/internal/sanitize.go +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2017, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package internal - -import ( - "strings" - "unicode" -) - -const labelKeySizeLimit = 100 - -// Sanitize returns a string that is trunacated to 100 characters if it's too -// long, and replaces non-alphanumeric characters to underscores. -func Sanitize(s string) string { - if len(s) == 0 { - return s - } - if len(s) > labelKeySizeLimit { - s = s[:labelKeySizeLimit] - } - s = strings.Map(sanitizeRune, s) - if unicode.IsDigit(rune(s[0])) { - s = "key_" + s - } - if s[0] == '_' { - s = "key" + s - } - return s -} - -// converts anything that is not a letter or digit to an underscore -func sanitizeRune(r rune) rune { - if unicode.IsLetter(r) || unicode.IsDigit(r) { - return r - } - // Everything else turns into an underscore - return '_' -} diff --git a/vendor/go.opencensus.io/internal/tagencoding/tagencoding.go b/vendor/go.opencensus.io/internal/tagencoding/tagencoding.go deleted file mode 100644 index 41b2c3f..0000000 --- a/vendor/go.opencensus.io/internal/tagencoding/tagencoding.go +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright 2017, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -// Package tagencoding contains the tag encoding -// used interally by the stats collector. -package tagencoding // import "go.opencensus.io/internal/tagencoding" - -// Values represent the encoded buffer for the values. -type Values struct { - Buffer []byte - WriteIndex int - ReadIndex int -} - -func (vb *Values) growIfRequired(expected int) { - if len(vb.Buffer)-vb.WriteIndex < expected { - tmp := make([]byte, 2*(len(vb.Buffer)+1)+expected) - copy(tmp, vb.Buffer) - vb.Buffer = tmp - } -} - -// WriteValue is the helper method to encode Values from map[Key][]byte. -func (vb *Values) WriteValue(v []byte) { - length := len(v) & 0xff - vb.growIfRequired(1 + length) - - // writing length of v - vb.Buffer[vb.WriteIndex] = byte(length) - vb.WriteIndex++ - - if length == 0 { - // No value was encoded for this key - return - } - - // writing v - copy(vb.Buffer[vb.WriteIndex:], v[:length]) - vb.WriteIndex += length -} - -// ReadValue is the helper method to decode Values to a map[Key][]byte. -func (vb *Values) ReadValue() []byte { - // read length of v - length := int(vb.Buffer[vb.ReadIndex]) - vb.ReadIndex++ - if length == 0 { - // No value was encoded for this key - return nil - } - - // read value of v - v := make([]byte, length) - endIdx := vb.ReadIndex + length - copy(v, vb.Buffer[vb.ReadIndex:endIdx]) - vb.ReadIndex = endIdx - return v -} - -// Bytes returns a reference to already written bytes in the Buffer. -func (vb *Values) Bytes() []byte { - return vb.Buffer[:vb.WriteIndex] -} diff --git a/vendor/go.opencensus.io/internal/traceinternals.go b/vendor/go.opencensus.io/internal/traceinternals.go deleted file mode 100644 index 073af7b..0000000 --- a/vendor/go.opencensus.io/internal/traceinternals.go +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2017, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package internal - -import ( - "time" -) - -// Trace allows internal access to some trace functionality. -// TODO(#412): remove this -var Trace interface{} - -// LocalSpanStoreEnabled true if the local span store is enabled. -var LocalSpanStoreEnabled bool - -// BucketConfiguration stores the number of samples to store for span buckets -// for successful and failed spans for a particular span name. -type BucketConfiguration struct { - Name string - MaxRequestsSucceeded int - MaxRequestsErrors int -} - -// PerMethodSummary is a summary of the spans stored for a single span name. -type PerMethodSummary struct { - Active int - LatencyBuckets []LatencyBucketSummary - ErrorBuckets []ErrorBucketSummary -} - -// LatencyBucketSummary is a summary of a latency bucket. -type LatencyBucketSummary struct { - MinLatency, MaxLatency time.Duration - Size int -} - -// ErrorBucketSummary is a summary of an error bucket. -type ErrorBucketSummary struct { - ErrorCode int32 - Size int -} diff --git a/vendor/go.opencensus.io/metric/metricdata/doc.go b/vendor/go.opencensus.io/metric/metricdata/doc.go deleted file mode 100644 index 52a7b3b..0000000 --- a/vendor/go.opencensus.io/metric/metricdata/doc.go +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2018, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Package metricdata contains the metrics data model. -// -// This is an EXPERIMENTAL package, and may change in arbitrary ways without -// notice. -package metricdata // import "go.opencensus.io/metric/metricdata" diff --git a/vendor/go.opencensus.io/metric/metricdata/exemplar.go b/vendor/go.opencensus.io/metric/metricdata/exemplar.go deleted file mode 100644 index 12695ce..0000000 --- a/vendor/go.opencensus.io/metric/metricdata/exemplar.go +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2018, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package metricdata - -import ( - "time" -) - -// Exemplars keys. -const ( - AttachmentKeySpanContext = "SpanContext" -) - -// Exemplar is an example data point associated with each bucket of a -// distribution type aggregation. -// -// Their purpose is to provide an example of the kind of thing -// (request, RPC, trace span, etc.) that resulted in that measurement. -type Exemplar struct { - Value float64 // the value that was recorded - Timestamp time.Time // the time the value was recorded - Attachments Attachments // attachments (if any) -} - -// Attachments is a map of extra values associated with a recorded data point. -type Attachments map[string]interface{} diff --git a/vendor/go.opencensus.io/metric/metricdata/label.go b/vendor/go.opencensus.io/metric/metricdata/label.go deleted file mode 100644 index aadae41..0000000 --- a/vendor/go.opencensus.io/metric/metricdata/label.go +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2018, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package metricdata - -// LabelKey represents key of a label. It has optional -// description attribute. -type LabelKey struct { - Key string - Description string -} - -// LabelValue represents the value of a label. -// The zero value represents a missing label value, which may be treated -// differently to an empty string value by some back ends. -type LabelValue struct { - Value string // string value of the label - Present bool // flag that indicated whether a value is present or not -} - -// NewLabelValue creates a new non-nil LabelValue that represents the given string. -func NewLabelValue(val string) LabelValue { - return LabelValue{Value: val, Present: true} -} diff --git a/vendor/go.opencensus.io/metric/metricdata/metric.go b/vendor/go.opencensus.io/metric/metricdata/metric.go deleted file mode 100644 index 8293712..0000000 --- a/vendor/go.opencensus.io/metric/metricdata/metric.go +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2018, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package metricdata - -import ( - "time" - - "go.opencensus.io/resource" -) - -// Descriptor holds metadata about a metric. -type Descriptor struct { - Name string // full name of the metric - Description string // human-readable description - Unit Unit // units for the measure - Type Type // type of measure - LabelKeys []LabelKey // label keys -} - -// Metric represents a quantity measured against a resource with different -// label value combinations. -type Metric struct { - Descriptor Descriptor // metric descriptor - Resource *resource.Resource // resource against which this was measured - TimeSeries []*TimeSeries // one time series for each combination of label values -} - -// TimeSeries is a sequence of points associated with a combination of label -// values. -type TimeSeries struct { - LabelValues []LabelValue // label values, same order as keys in the metric descriptor - Points []Point // points sequence - StartTime time.Time // time we started recording this time series -} diff --git a/vendor/go.opencensus.io/metric/metricdata/point.go b/vendor/go.opencensus.io/metric/metricdata/point.go deleted file mode 100644 index 7fe057b..0000000 --- a/vendor/go.opencensus.io/metric/metricdata/point.go +++ /dev/null @@ -1,193 +0,0 @@ -// Copyright 2018, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package metricdata - -import ( - "time" -) - -// Point is a single data point of a time series. -type Point struct { - // Time is the point in time that this point represents in a time series. - Time time.Time - // Value is the value of this point. Prefer using ReadValue to switching on - // the value type, since new value types might be added. - Value interface{} -} - -//go:generate stringer -type ValueType - -// NewFloat64Point creates a new Point holding a float64 value. -func NewFloat64Point(t time.Time, val float64) Point { - return Point{ - Value: val, - Time: t, - } -} - -// NewInt64Point creates a new Point holding an int64 value. -func NewInt64Point(t time.Time, val int64) Point { - return Point{ - Value: val, - Time: t, - } -} - -// NewDistributionPoint creates a new Point holding a Distribution value. -func NewDistributionPoint(t time.Time, val *Distribution) Point { - return Point{ - Value: val, - Time: t, - } -} - -// NewSummaryPoint creates a new Point holding a Summary value. -func NewSummaryPoint(t time.Time, val *Summary) Point { - return Point{ - Value: val, - Time: t, - } -} - -// ValueVisitor allows reading the value of a point. -type ValueVisitor interface { - VisitFloat64Value(float64) - VisitInt64Value(int64) - VisitDistributionValue(*Distribution) - VisitSummaryValue(*Summary) -} - -// ReadValue accepts a ValueVisitor and calls the appropriate method with the -// value of this point. -// Consumers of Point should use this in preference to switching on the type -// of the value directly, since new value types may be added. -func (p Point) ReadValue(vv ValueVisitor) { - switch v := p.Value.(type) { - case int64: - vv.VisitInt64Value(v) - case float64: - vv.VisitFloat64Value(v) - case *Distribution: - vv.VisitDistributionValue(v) - case *Summary: - vv.VisitSummaryValue(v) - default: - panic("unexpected value type") - } -} - -// Distribution contains summary statistics for a population of values. It -// optionally contains a histogram representing the distribution of those -// values across a set of buckets. -type Distribution struct { - // Count is the number of values in the population. Must be non-negative. This value - // must equal the sum of the values in bucket_counts if a histogram is - // provided. - Count int64 - // Sum is the sum of the values in the population. If count is zero then this field - // must be zero. - Sum float64 - // SumOfSquaredDeviation is the sum of squared deviations from the mean of the values in the - // population. For values x_i this is: - // - // Sum[i=1..n]((x_i - mean)^2) - // - // Knuth, "The Art of Computer Programming", Vol. 2, page 323, 3rd edition - // describes Welford's method for accumulating this sum in one pass. - // - // If count is zero then this field must be zero. - SumOfSquaredDeviation float64 - // BucketOptions describes the bounds of the histogram buckets in this - // distribution. - // - // A Distribution may optionally contain a histogram of the values in the - // population. - // - // If nil, there is no associated histogram. - BucketOptions *BucketOptions - // Bucket If the distribution does not have a histogram, then omit this field. - // If there is a histogram, then the sum of the values in the Bucket counts - // must equal the value in the count field of the distribution. - Buckets []Bucket -} - -// BucketOptions describes the bounds of the histogram buckets in this -// distribution. -type BucketOptions struct { - // Bounds specifies a set of bucket upper bounds. - // This defines len(bounds) + 1 (= N) buckets. The boundaries for bucket - // index i are: - // - // [0, Bounds[i]) for i == 0 - // [Bounds[i-1], Bounds[i]) for 0 < i < N-1 - // [Bounds[i-1], +infinity) for i == N-1 - Bounds []float64 -} - -// Bucket represents a single bucket (value range) in a distribution. -type Bucket struct { - // Count is the number of values in each bucket of the histogram, as described in - // bucket_bounds. - Count int64 - // Exemplar associated with this bucket (if any). - Exemplar *Exemplar -} - -// Summary is a representation of percentiles. -type Summary struct { - // Count is the cumulative count (if available). - Count int64 - // Sum is the cumulative sum of values (if available). - Sum float64 - // HasCountAndSum is true if Count and Sum are available. - HasCountAndSum bool - // Snapshot represents percentiles calculated over an arbitrary time window. - // The values in this struct can be reset at arbitrary unknown times, with - // the requirement that all of them are reset at the same time. - Snapshot Snapshot -} - -// Snapshot represents percentiles over an arbitrary time. -// The values in this struct can be reset at arbitrary unknown times, with -// the requirement that all of them are reset at the same time. -type Snapshot struct { - // Count is the number of values in the snapshot. Optional since some systems don't - // expose this. Set to 0 if not available. - Count int64 - // Sum is the sum of values in the snapshot. Optional since some systems don't - // expose this. If count is 0 then this field must be zero. - Sum float64 - // Percentiles is a map from percentile (range (0-100.0]) to the value of - // the percentile. - Percentiles map[float64]float64 -} - -//go:generate stringer -type Type - -// Type is the overall type of metric, including its value type and whether it -// represents a cumulative total (since the start time) or if it represents a -// gauge value. -type Type int - -// Metric types. -const ( - TypeGaugeInt64 Type = iota - TypeGaugeFloat64 - TypeGaugeDistribution - TypeCumulativeInt64 - TypeCumulativeFloat64 - TypeCumulativeDistribution - TypeSummary -) diff --git a/vendor/go.opencensus.io/metric/metricdata/type_string.go b/vendor/go.opencensus.io/metric/metricdata/type_string.go deleted file mode 100644 index c3f8ec2..0000000 --- a/vendor/go.opencensus.io/metric/metricdata/type_string.go +++ /dev/null @@ -1,16 +0,0 @@ -// Code generated by "stringer -type Type"; DO NOT EDIT. - -package metricdata - -import "strconv" - -const _Type_name = "TypeGaugeInt64TypeGaugeFloat64TypeGaugeDistributionTypeCumulativeInt64TypeCumulativeFloat64TypeCumulativeDistributionTypeSummary" - -var _Type_index = [...]uint8{0, 14, 30, 51, 70, 91, 117, 128} - -func (i Type) String() string { - if i < 0 || i >= Type(len(_Type_index)-1) { - return "Type(" + strconv.FormatInt(int64(i), 10) + ")" - } - return _Type_name[_Type_index[i]:_Type_index[i+1]] -} diff --git a/vendor/go.opencensus.io/metric/metricdata/unit.go b/vendor/go.opencensus.io/metric/metricdata/unit.go deleted file mode 100644 index b483a13..0000000 --- a/vendor/go.opencensus.io/metric/metricdata/unit.go +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2018, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package metricdata - -// Unit is a string encoded according to the case-sensitive abbreviations from the -// Unified Code for Units of Measure: http://unitsofmeasure.org/ucum.html -type Unit string - -// Predefined units. To record against a unit not represented here, create your -// own Unit type constant from a string. -const ( - UnitDimensionless Unit = "1" - UnitBytes Unit = "By" - UnitMilliseconds Unit = "ms" -) diff --git a/vendor/go.opencensus.io/metric/metricproducer/manager.go b/vendor/go.opencensus.io/metric/metricproducer/manager.go deleted file mode 100644 index ca1f390..0000000 --- a/vendor/go.opencensus.io/metric/metricproducer/manager.go +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright 2019, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package metricproducer - -import ( - "sync" -) - -// Manager maintains a list of active producers. Producers can register -// with the manager to allow readers to read all metrics provided by them. -// Readers can retrieve all producers registered with the manager, -// read metrics from the producers and export them. -type Manager struct { - mu sync.RWMutex - producers map[Producer]struct{} -} - -var prodMgr *Manager -var once sync.Once - -// GlobalManager is a single instance of producer manager -// that is used by all producers and all readers. -func GlobalManager() *Manager { - once.Do(func() { - prodMgr = &Manager{} - prodMgr.producers = make(map[Producer]struct{}) - }) - return prodMgr -} - -// AddProducer adds the producer to the Manager if it is not already present. -func (pm *Manager) AddProducer(producer Producer) { - if producer == nil { - return - } - pm.mu.Lock() - defer pm.mu.Unlock() - pm.producers[producer] = struct{}{} -} - -// DeleteProducer deletes the producer from the Manager if it is present. -func (pm *Manager) DeleteProducer(producer Producer) { - if producer == nil { - return - } - pm.mu.Lock() - defer pm.mu.Unlock() - delete(pm.producers, producer) -} - -// GetAll returns a slice of all producer currently registered with -// the Manager. For each call it generates a new slice. The slice -// should not be cached as registration may change at any time. It is -// typically called periodically by exporter to read metrics from -// the producers. -func (pm *Manager) GetAll() []Producer { - pm.mu.Lock() - defer pm.mu.Unlock() - producers := make([]Producer, len(pm.producers)) - i := 0 - for producer := range pm.producers { - producers[i] = producer - i++ - } - return producers -} diff --git a/vendor/go.opencensus.io/metric/metricproducer/producer.go b/vendor/go.opencensus.io/metric/metricproducer/producer.go deleted file mode 100644 index 6cee9ed..0000000 --- a/vendor/go.opencensus.io/metric/metricproducer/producer.go +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2019, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package metricproducer - -import ( - "go.opencensus.io/metric/metricdata" -) - -// Producer is a source of metrics. -type Producer interface { - // Read should return the current values of all metrics supported by this - // metric provider. - // The returned metrics should be unique for each combination of name and - // resource. - Read() []*metricdata.Metric -} diff --git a/vendor/go.opencensus.io/opencensus.go b/vendor/go.opencensus.io/opencensus.go deleted file mode 100644 index e5e4b43..0000000 --- a/vendor/go.opencensus.io/opencensus.go +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2017, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Package opencensus contains Go support for OpenCensus. -package opencensus // import "go.opencensus.io" - -// Version is the current release version of OpenCensus in use. -func Version() string { - return "0.23.0" -} diff --git a/vendor/go.opencensus.io/plugin/ochttp/client.go b/vendor/go.opencensus.io/plugin/ochttp/client.go deleted file mode 100644 index da815b2..0000000 --- a/vendor/go.opencensus.io/plugin/ochttp/client.go +++ /dev/null @@ -1,117 +0,0 @@ -// Copyright 2018, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package ochttp - -import ( - "net/http" - "net/http/httptrace" - - "go.opencensus.io/trace" - "go.opencensus.io/trace/propagation" -) - -// Transport is an http.RoundTripper that instruments all outgoing requests with -// OpenCensus stats and tracing. -// -// The zero value is intended to be a useful default, but for -// now it's recommended that you explicitly set Propagation, since the default -// for this may change. -type Transport struct { - // Base may be set to wrap another http.RoundTripper that does the actual - // requests. By default http.DefaultTransport is used. - // - // If base HTTP roundtripper implements CancelRequest, - // the returned round tripper will be cancelable. - Base http.RoundTripper - - // Propagation defines how traces are propagated. If unspecified, a default - // (currently B3 format) will be used. - Propagation propagation.HTTPFormat - - // StartOptions are applied to the span started by this Transport around each - // request. - // - // StartOptions.SpanKind will always be set to trace.SpanKindClient - // for spans started by this transport. - StartOptions trace.StartOptions - - // GetStartOptions allows to set start options per request. If set, - // StartOptions is going to be ignored. - GetStartOptions func(*http.Request) trace.StartOptions - - // NameFromRequest holds the function to use for generating the span name - // from the information found in the outgoing HTTP Request. By default the - // name equals the URL Path. - FormatSpanName func(*http.Request) string - - // NewClientTrace may be set to a function allowing the current *trace.Span - // to be annotated with HTTP request event information emitted by the - // httptrace package. - NewClientTrace func(*http.Request, *trace.Span) *httptrace.ClientTrace - - // TODO: Implement tag propagation for HTTP. -} - -// RoundTrip implements http.RoundTripper, delegating to Base and recording stats and traces for the request. -func (t *Transport) RoundTrip(req *http.Request) (*http.Response, error) { - rt := t.base() - if isHealthEndpoint(req.URL.Path) { - return rt.RoundTrip(req) - } - // TODO: remove excessive nesting of http.RoundTrippers here. - format := t.Propagation - if format == nil { - format = defaultFormat - } - spanNameFormatter := t.FormatSpanName - if spanNameFormatter == nil { - spanNameFormatter = spanNameFromURL - } - - startOpts := t.StartOptions - if t.GetStartOptions != nil { - startOpts = t.GetStartOptions(req) - } - - rt = &traceTransport{ - base: rt, - format: format, - startOptions: trace.StartOptions{ - Sampler: startOpts.Sampler, - SpanKind: trace.SpanKindClient, - }, - formatSpanName: spanNameFormatter, - newClientTrace: t.NewClientTrace, - } - rt = statsTransport{base: rt} - return rt.RoundTrip(req) -} - -func (t *Transport) base() http.RoundTripper { - if t.Base != nil { - return t.Base - } - return http.DefaultTransport -} - -// CancelRequest cancels an in-flight request by closing its connection. -func (t *Transport) CancelRequest(req *http.Request) { - type canceler interface { - CancelRequest(*http.Request) - } - if cr, ok := t.base().(canceler); ok { - cr.CancelRequest(req) - } -} diff --git a/vendor/go.opencensus.io/plugin/ochttp/client_stats.go b/vendor/go.opencensus.io/plugin/ochttp/client_stats.go deleted file mode 100644 index 17142aa..0000000 --- a/vendor/go.opencensus.io/plugin/ochttp/client_stats.go +++ /dev/null @@ -1,143 +0,0 @@ -// Copyright 2018, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package ochttp - -import ( - "context" - "io" - "net/http" - "strconv" - "sync" - "time" - - "go.opencensus.io/stats" - "go.opencensus.io/tag" -) - -// statsTransport is an http.RoundTripper that collects stats for the outgoing requests. -type statsTransport struct { - base http.RoundTripper -} - -// RoundTrip implements http.RoundTripper, delegating to Base and recording stats for the request. -func (t statsTransport) RoundTrip(req *http.Request) (*http.Response, error) { - ctx, _ := tag.New(req.Context(), - tag.Upsert(KeyClientHost, req.Host), - tag.Upsert(Host, req.Host), - tag.Upsert(KeyClientPath, req.URL.Path), - tag.Upsert(Path, req.URL.Path), - tag.Upsert(KeyClientMethod, req.Method), - tag.Upsert(Method, req.Method)) - req = req.WithContext(ctx) - track := &tracker{ - start: time.Now(), - ctx: ctx, - } - if req.Body == nil { - // TODO: Handle cases where ContentLength is not set. - track.reqSize = -1 - } else if req.ContentLength > 0 { - track.reqSize = req.ContentLength - } - stats.Record(ctx, ClientRequestCount.M(1)) - - // Perform request. - resp, err := t.base.RoundTrip(req) - - if err != nil { - track.statusCode = http.StatusInternalServerError - track.end() - } else { - track.statusCode = resp.StatusCode - if req.Method != "HEAD" { - track.respContentLength = resp.ContentLength - } - if resp.Body == nil { - track.end() - } else { - track.body = resp.Body - resp.Body = wrappedBody(track, resp.Body) - } - } - return resp, err -} - -// CancelRequest cancels an in-flight request by closing its connection. -func (t statsTransport) CancelRequest(req *http.Request) { - type canceler interface { - CancelRequest(*http.Request) - } - if cr, ok := t.base.(canceler); ok { - cr.CancelRequest(req) - } -} - -type tracker struct { - ctx context.Context - respSize int64 - respContentLength int64 - reqSize int64 - start time.Time - body io.ReadCloser - statusCode int - endOnce sync.Once -} - -var _ io.ReadCloser = (*tracker)(nil) - -func (t *tracker) end() { - t.endOnce.Do(func() { - latencyMs := float64(time.Since(t.start)) / float64(time.Millisecond) - respSize := t.respSize - if t.respSize == 0 && t.respContentLength > 0 { - respSize = t.respContentLength - } - m := []stats.Measurement{ - ClientSentBytes.M(t.reqSize), - ClientReceivedBytes.M(respSize), - ClientRoundtripLatency.M(latencyMs), - ClientLatency.M(latencyMs), - ClientResponseBytes.M(t.respSize), - } - if t.reqSize >= 0 { - m = append(m, ClientRequestBytes.M(t.reqSize)) - } - - stats.RecordWithTags(t.ctx, []tag.Mutator{ - tag.Upsert(StatusCode, strconv.Itoa(t.statusCode)), - tag.Upsert(KeyClientStatus, strconv.Itoa(t.statusCode)), - }, m...) - }) -} - -func (t *tracker) Read(b []byte) (int, error) { - n, err := t.body.Read(b) - t.respSize += int64(n) - switch err { - case nil: - return n, nil - case io.EOF: - t.end() - } - return n, err -} - -func (t *tracker) Close() error { - // Invoking endSpan on Close will help catch the cases - // in which a read returned a non-nil error, we set the - // span status but didn't end the span. - t.end() - return t.body.Close() -} diff --git a/vendor/go.opencensus.io/plugin/ochttp/doc.go b/vendor/go.opencensus.io/plugin/ochttp/doc.go deleted file mode 100644 index 10e626b..0000000 --- a/vendor/go.opencensus.io/plugin/ochttp/doc.go +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2018, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Package ochttp provides OpenCensus instrumentation for net/http package. -// -// For server instrumentation, see Handler. For client-side instrumentation, -// see Transport. -package ochttp // import "go.opencensus.io/plugin/ochttp" diff --git a/vendor/go.opencensus.io/plugin/ochttp/propagation/b3/b3.go b/vendor/go.opencensus.io/plugin/ochttp/propagation/b3/b3.go deleted file mode 100644 index 9ad8852..0000000 --- a/vendor/go.opencensus.io/plugin/ochttp/propagation/b3/b3.go +++ /dev/null @@ -1,123 +0,0 @@ -// Copyright 2018, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Package b3 contains a propagation.HTTPFormat implementation -// for B3 propagation. See https://github.com/openzipkin/b3-propagation -// for more details. -package b3 // import "go.opencensus.io/plugin/ochttp/propagation/b3" - -import ( - "encoding/hex" - "net/http" - - "go.opencensus.io/trace" - "go.opencensus.io/trace/propagation" -) - -// B3 headers that OpenCensus understands. -const ( - TraceIDHeader = "X-B3-TraceId" - SpanIDHeader = "X-B3-SpanId" - SampledHeader = "X-B3-Sampled" -) - -// HTTPFormat implements propagation.HTTPFormat to propagate -// traces in HTTP headers in B3 propagation format. -// HTTPFormat skips the X-B3-ParentId and X-B3-Flags headers -// because there are additional fields not represented in the -// OpenCensus span context. Spans created from the incoming -// header will be the direct children of the client-side span. -// Similarly, receiver of the outgoing spans should use client-side -// span created by OpenCensus as the parent. -type HTTPFormat struct{} - -var _ propagation.HTTPFormat = (*HTTPFormat)(nil) - -// SpanContextFromRequest extracts a B3 span context from incoming requests. -func (f *HTTPFormat) SpanContextFromRequest(req *http.Request) (sc trace.SpanContext, ok bool) { - tid, ok := ParseTraceID(req.Header.Get(TraceIDHeader)) - if !ok { - return trace.SpanContext{}, false - } - sid, ok := ParseSpanID(req.Header.Get(SpanIDHeader)) - if !ok { - return trace.SpanContext{}, false - } - sampled, _ := ParseSampled(req.Header.Get(SampledHeader)) - return trace.SpanContext{ - TraceID: tid, - SpanID: sid, - TraceOptions: sampled, - }, true -} - -// ParseTraceID parses the value of the X-B3-TraceId header. -func ParseTraceID(tid string) (trace.TraceID, bool) { - if tid == "" { - return trace.TraceID{}, false - } - b, err := hex.DecodeString(tid) - if err != nil || len(b) > 16 { - return trace.TraceID{}, false - } - var traceID trace.TraceID - if len(b) <= 8 { - // The lower 64-bits. - start := 8 + (8 - len(b)) - copy(traceID[start:], b) - } else { - start := 16 - len(b) - copy(traceID[start:], b) - } - - return traceID, true -} - -// ParseSpanID parses the value of the X-B3-SpanId or X-B3-ParentSpanId headers. -func ParseSpanID(sid string) (spanID trace.SpanID, ok bool) { - if sid == "" { - return trace.SpanID{}, false - } - b, err := hex.DecodeString(sid) - if err != nil || len(b) > 8 { - return trace.SpanID{}, false - } - start := 8 - len(b) - copy(spanID[start:], b) - return spanID, true -} - -// ParseSampled parses the value of the X-B3-Sampled header. -func ParseSampled(sampled string) (trace.TraceOptions, bool) { - switch sampled { - case "true", "1": - return trace.TraceOptions(1), true - default: - return trace.TraceOptions(0), false - } -} - -// SpanContextToRequest modifies the given request to include B3 headers. -func (f *HTTPFormat) SpanContextToRequest(sc trace.SpanContext, req *http.Request) { - req.Header.Set(TraceIDHeader, hex.EncodeToString(sc.TraceID[:])) - req.Header.Set(SpanIDHeader, hex.EncodeToString(sc.SpanID[:])) - - var sampled string - if sc.IsSampled() { - sampled = "1" - } else { - sampled = "0" - } - req.Header.Set(SampledHeader, sampled) -} diff --git a/vendor/go.opencensus.io/plugin/ochttp/route.go b/vendor/go.opencensus.io/plugin/ochttp/route.go deleted file mode 100644 index 5e6a343..0000000 --- a/vendor/go.opencensus.io/plugin/ochttp/route.go +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2018, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package ochttp - -import ( - "context" - "net/http" - - "go.opencensus.io/tag" -) - -// SetRoute sets the http_server_route tag to the given value. -// It's useful when an HTTP framework does not support the http.Handler interface -// and using WithRouteTag is not an option, but provides a way to hook into the request flow. -func SetRoute(ctx context.Context, route string) { - if a, ok := ctx.Value(addedTagsKey{}).(*addedTags); ok { - a.t = append(a.t, tag.Upsert(KeyServerRoute, route)) - } -} - -// WithRouteTag returns an http.Handler that records stats with the -// http_server_route tag set to the given value. -func WithRouteTag(handler http.Handler, route string) http.Handler { - return taggedHandlerFunc(func(w http.ResponseWriter, r *http.Request) []tag.Mutator { - addRoute := []tag.Mutator{tag.Upsert(KeyServerRoute, route)} - ctx, _ := tag.New(r.Context(), addRoute...) - r = r.WithContext(ctx) - handler.ServeHTTP(w, r) - return addRoute - }) -} - -// taggedHandlerFunc is a http.Handler that returns tags describing the -// processing of the request. These tags will be recorded along with the -// measures in this package at the end of the request. -type taggedHandlerFunc func(w http.ResponseWriter, r *http.Request) []tag.Mutator - -func (h taggedHandlerFunc) ServeHTTP(w http.ResponseWriter, r *http.Request) { - tags := h(w, r) - if a, ok := r.Context().Value(addedTagsKey{}).(*addedTags); ok { - a.t = append(a.t, tags...) - } -} - -type addedTagsKey struct{} - -type addedTags struct { - t []tag.Mutator -} diff --git a/vendor/go.opencensus.io/plugin/ochttp/server.go b/vendor/go.opencensus.io/plugin/ochttp/server.go deleted file mode 100644 index c7ea642..0000000 --- a/vendor/go.opencensus.io/plugin/ochttp/server.go +++ /dev/null @@ -1,453 +0,0 @@ -// Copyright 2018, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package ochttp - -import ( - "context" - "io" - "net/http" - "strconv" - "sync" - "time" - - "go.opencensus.io/stats" - "go.opencensus.io/tag" - "go.opencensus.io/trace" - "go.opencensus.io/trace/propagation" -) - -// Handler is an http.Handler wrapper to instrument your HTTP server with -// OpenCensus. It supports both stats and tracing. -// -// Tracing -// -// This handler is aware of the incoming request's span, reading it from request -// headers as configured using the Propagation field. -// The extracted span can be accessed from the incoming request's -// context. -// -// span := trace.FromContext(r.Context()) -// -// The server span will be automatically ended at the end of ServeHTTP. -type Handler struct { - // Propagation defines how traces are propagated. If unspecified, - // B3 propagation will be used. - Propagation propagation.HTTPFormat - - // Handler is the handler used to handle the incoming request. - Handler http.Handler - - // StartOptions are applied to the span started by this Handler around each - // request. - // - // StartOptions.SpanKind will always be set to trace.SpanKindServer - // for spans started by this transport. - StartOptions trace.StartOptions - - // GetStartOptions allows to set start options per request. If set, - // StartOptions is going to be ignored. - GetStartOptions func(*http.Request) trace.StartOptions - - // IsPublicEndpoint should be set to true for publicly accessible HTTP(S) - // servers. If true, any trace metadata set on the incoming request will - // be added as a linked trace instead of being added as a parent of the - // current trace. - IsPublicEndpoint bool - - // FormatSpanName holds the function to use for generating the span name - // from the information found in the incoming HTTP Request. By default the - // name equals the URL Path. - FormatSpanName func(*http.Request) string - - // IsHealthEndpoint holds the function to use for determining if the - // incoming HTTP request should be considered a health check. This is in - // addition to the private isHealthEndpoint func which may also indicate - // tracing should be skipped. - IsHealthEndpoint func(*http.Request) bool -} - -func (h *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) { - var tags addedTags - r, traceEnd := h.startTrace(w, r) - defer traceEnd() - w, statsEnd := h.startStats(w, r) - defer statsEnd(&tags) - handler := h.Handler - if handler == nil { - handler = http.DefaultServeMux - } - r = r.WithContext(context.WithValue(r.Context(), addedTagsKey{}, &tags)) - handler.ServeHTTP(w, r) -} - -func (h *Handler) startTrace(w http.ResponseWriter, r *http.Request) (*http.Request, func()) { - if h.IsHealthEndpoint != nil && h.IsHealthEndpoint(r) || isHealthEndpoint(r.URL.Path) { - return r, func() {} - } - var name string - if h.FormatSpanName == nil { - name = spanNameFromURL(r) - } else { - name = h.FormatSpanName(r) - } - ctx := r.Context() - - startOpts := h.StartOptions - if h.GetStartOptions != nil { - startOpts = h.GetStartOptions(r) - } - - var span *trace.Span - sc, ok := h.extractSpanContext(r) - if ok && !h.IsPublicEndpoint { - ctx, span = trace.StartSpanWithRemoteParent(ctx, name, sc, - trace.WithSampler(startOpts.Sampler), - trace.WithSpanKind(trace.SpanKindServer)) - } else { - ctx, span = trace.StartSpan(ctx, name, - trace.WithSampler(startOpts.Sampler), - trace.WithSpanKind(trace.SpanKindServer), - ) - if ok { - span.AddLink(trace.Link{ - TraceID: sc.TraceID, - SpanID: sc.SpanID, - Type: trace.LinkTypeParent, - Attributes: nil, - }) - } - } - span.AddAttributes(requestAttrs(r)...) - if r.Body == nil { - // TODO: Handle cases where ContentLength is not set. - } else if r.ContentLength > 0 { - span.AddMessageReceiveEvent(0, /* TODO: messageID */ - r.ContentLength, -1) - } - return r.WithContext(ctx), span.End -} - -func (h *Handler) extractSpanContext(r *http.Request) (trace.SpanContext, bool) { - if h.Propagation == nil { - return defaultFormat.SpanContextFromRequest(r) - } - return h.Propagation.SpanContextFromRequest(r) -} - -func (h *Handler) startStats(w http.ResponseWriter, r *http.Request) (http.ResponseWriter, func(tags *addedTags)) { - ctx, _ := tag.New(r.Context(), - tag.Upsert(Host, r.Host), - tag.Upsert(Path, r.URL.Path), - tag.Upsert(Method, r.Method)) - track := &trackingResponseWriter{ - start: time.Now(), - ctx: ctx, - writer: w, - } - if r.Body == nil { - // TODO: Handle cases where ContentLength is not set. - track.reqSize = -1 - } else if r.ContentLength > 0 { - track.reqSize = r.ContentLength - } - stats.Record(ctx, ServerRequestCount.M(1)) - return track.wrappedResponseWriter(), track.end -} - -type trackingResponseWriter struct { - ctx context.Context - reqSize int64 - respSize int64 - start time.Time - statusCode int - statusLine string - endOnce sync.Once - writer http.ResponseWriter -} - -// Compile time assertion for ResponseWriter interface -var _ http.ResponseWriter = (*trackingResponseWriter)(nil) - -func (t *trackingResponseWriter) end(tags *addedTags) { - t.endOnce.Do(func() { - if t.statusCode == 0 { - t.statusCode = 200 - } - - span := trace.FromContext(t.ctx) - span.SetStatus(TraceStatus(t.statusCode, t.statusLine)) - span.AddAttributes(trace.Int64Attribute(StatusCodeAttribute, int64(t.statusCode))) - - m := []stats.Measurement{ - ServerLatency.M(float64(time.Since(t.start)) / float64(time.Millisecond)), - ServerResponseBytes.M(t.respSize), - } - if t.reqSize >= 0 { - m = append(m, ServerRequestBytes.M(t.reqSize)) - } - allTags := make([]tag.Mutator, len(tags.t)+1) - allTags[0] = tag.Upsert(StatusCode, strconv.Itoa(t.statusCode)) - copy(allTags[1:], tags.t) - stats.RecordWithTags(t.ctx, allTags, m...) - }) -} - -func (t *trackingResponseWriter) Header() http.Header { - return t.writer.Header() -} - -func (t *trackingResponseWriter) Write(data []byte) (int, error) { - n, err := t.writer.Write(data) - t.respSize += int64(n) - // Add message event for request bytes sent. - span := trace.FromContext(t.ctx) - span.AddMessageSendEvent(0 /* TODO: messageID */, int64(n), -1) - return n, err -} - -func (t *trackingResponseWriter) WriteHeader(statusCode int) { - t.writer.WriteHeader(statusCode) - t.statusCode = statusCode - t.statusLine = http.StatusText(t.statusCode) -} - -// wrappedResponseWriter returns a wrapped version of the original -// ResponseWriter and only implements the same combination of additional -// interfaces as the original. -// This implementation is based on https://github.com/felixge/httpsnoop. -func (t *trackingResponseWriter) wrappedResponseWriter() http.ResponseWriter { - var ( - hj, i0 = t.writer.(http.Hijacker) - cn, i1 = t.writer.(http.CloseNotifier) - pu, i2 = t.writer.(http.Pusher) - fl, i3 = t.writer.(http.Flusher) - rf, i4 = t.writer.(io.ReaderFrom) - ) - - switch { - case !i0 && !i1 && !i2 && !i3 && !i4: - return struct { - http.ResponseWriter - }{t} - case !i0 && !i1 && !i2 && !i3 && i4: - return struct { - http.ResponseWriter - io.ReaderFrom - }{t, rf} - case !i0 && !i1 && !i2 && i3 && !i4: - return struct { - http.ResponseWriter - http.Flusher - }{t, fl} - case !i0 && !i1 && !i2 && i3 && i4: - return struct { - http.ResponseWriter - http.Flusher - io.ReaderFrom - }{t, fl, rf} - case !i0 && !i1 && i2 && !i3 && !i4: - return struct { - http.ResponseWriter - http.Pusher - }{t, pu} - case !i0 && !i1 && i2 && !i3 && i4: - return struct { - http.ResponseWriter - http.Pusher - io.ReaderFrom - }{t, pu, rf} - case !i0 && !i1 && i2 && i3 && !i4: - return struct { - http.ResponseWriter - http.Pusher - http.Flusher - }{t, pu, fl} - case !i0 && !i1 && i2 && i3 && i4: - return struct { - http.ResponseWriter - http.Pusher - http.Flusher - io.ReaderFrom - }{t, pu, fl, rf} - case !i0 && i1 && !i2 && !i3 && !i4: - return struct { - http.ResponseWriter - http.CloseNotifier - }{t, cn} - case !i0 && i1 && !i2 && !i3 && i4: - return struct { - http.ResponseWriter - http.CloseNotifier - io.ReaderFrom - }{t, cn, rf} - case !i0 && i1 && !i2 && i3 && !i4: - return struct { - http.ResponseWriter - http.CloseNotifier - http.Flusher - }{t, cn, fl} - case !i0 && i1 && !i2 && i3 && i4: - return struct { - http.ResponseWriter - http.CloseNotifier - http.Flusher - io.ReaderFrom - }{t, cn, fl, rf} - case !i0 && i1 && i2 && !i3 && !i4: - return struct { - http.ResponseWriter - http.CloseNotifier - http.Pusher - }{t, cn, pu} - case !i0 && i1 && i2 && !i3 && i4: - return struct { - http.ResponseWriter - http.CloseNotifier - http.Pusher - io.ReaderFrom - }{t, cn, pu, rf} - case !i0 && i1 && i2 && i3 && !i4: - return struct { - http.ResponseWriter - http.CloseNotifier - http.Pusher - http.Flusher - }{t, cn, pu, fl} - case !i0 && i1 && i2 && i3 && i4: - return struct { - http.ResponseWriter - http.CloseNotifier - http.Pusher - http.Flusher - io.ReaderFrom - }{t, cn, pu, fl, rf} - case i0 && !i1 && !i2 && !i3 && !i4: - return struct { - http.ResponseWriter - http.Hijacker - }{t, hj} - case i0 && !i1 && !i2 && !i3 && i4: - return struct { - http.ResponseWriter - http.Hijacker - io.ReaderFrom - }{t, hj, rf} - case i0 && !i1 && !i2 && i3 && !i4: - return struct { - http.ResponseWriter - http.Hijacker - http.Flusher - }{t, hj, fl} - case i0 && !i1 && !i2 && i3 && i4: - return struct { - http.ResponseWriter - http.Hijacker - http.Flusher - io.ReaderFrom - }{t, hj, fl, rf} - case i0 && !i1 && i2 && !i3 && !i4: - return struct { - http.ResponseWriter - http.Hijacker - http.Pusher - }{t, hj, pu} - case i0 && !i1 && i2 && !i3 && i4: - return struct { - http.ResponseWriter - http.Hijacker - http.Pusher - io.ReaderFrom - }{t, hj, pu, rf} - case i0 && !i1 && i2 && i3 && !i4: - return struct { - http.ResponseWriter - http.Hijacker - http.Pusher - http.Flusher - }{t, hj, pu, fl} - case i0 && !i1 && i2 && i3 && i4: - return struct { - http.ResponseWriter - http.Hijacker - http.Pusher - http.Flusher - io.ReaderFrom - }{t, hj, pu, fl, rf} - case i0 && i1 && !i2 && !i3 && !i4: - return struct { - http.ResponseWriter - http.Hijacker - http.CloseNotifier - }{t, hj, cn} - case i0 && i1 && !i2 && !i3 && i4: - return struct { - http.ResponseWriter - http.Hijacker - http.CloseNotifier - io.ReaderFrom - }{t, hj, cn, rf} - case i0 && i1 && !i2 && i3 && !i4: - return struct { - http.ResponseWriter - http.Hijacker - http.CloseNotifier - http.Flusher - }{t, hj, cn, fl} - case i0 && i1 && !i2 && i3 && i4: - return struct { - http.ResponseWriter - http.Hijacker - http.CloseNotifier - http.Flusher - io.ReaderFrom - }{t, hj, cn, fl, rf} - case i0 && i1 && i2 && !i3 && !i4: - return struct { - http.ResponseWriter - http.Hijacker - http.CloseNotifier - http.Pusher - }{t, hj, cn, pu} - case i0 && i1 && i2 && !i3 && i4: - return struct { - http.ResponseWriter - http.Hijacker - http.CloseNotifier - http.Pusher - io.ReaderFrom - }{t, hj, cn, pu, rf} - case i0 && i1 && i2 && i3 && !i4: - return struct { - http.ResponseWriter - http.Hijacker - http.CloseNotifier - http.Pusher - http.Flusher - }{t, hj, cn, pu, fl} - case i0 && i1 && i2 && i3 && i4: - return struct { - http.ResponseWriter - http.Hijacker - http.CloseNotifier - http.Pusher - http.Flusher - io.ReaderFrom - }{t, hj, cn, pu, fl, rf} - default: - return struct { - http.ResponseWriter - }{t} - } -} diff --git a/vendor/go.opencensus.io/plugin/ochttp/span_annotating_client_trace.go b/vendor/go.opencensus.io/plugin/ochttp/span_annotating_client_trace.go deleted file mode 100644 index 05c6c56..0000000 --- a/vendor/go.opencensus.io/plugin/ochttp/span_annotating_client_trace.go +++ /dev/null @@ -1,169 +0,0 @@ -// Copyright 2018, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package ochttp - -import ( - "crypto/tls" - "net/http" - "net/http/httptrace" - "strings" - - "go.opencensus.io/trace" -) - -type spanAnnotator struct { - sp *trace.Span -} - -// TODO: Remove NewSpanAnnotator at the next release. - -// NewSpanAnnotator returns a httptrace.ClientTrace which annotates -// all emitted httptrace events on the provided Span. -// Deprecated: Use NewSpanAnnotatingClientTrace instead -func NewSpanAnnotator(r *http.Request, s *trace.Span) *httptrace.ClientTrace { - return NewSpanAnnotatingClientTrace(r, s) -} - -// NewSpanAnnotatingClientTrace returns a httptrace.ClientTrace which annotates -// all emitted httptrace events on the provided Span. -func NewSpanAnnotatingClientTrace(_ *http.Request, s *trace.Span) *httptrace.ClientTrace { - sa := spanAnnotator{sp: s} - - return &httptrace.ClientTrace{ - GetConn: sa.getConn, - GotConn: sa.gotConn, - PutIdleConn: sa.putIdleConn, - GotFirstResponseByte: sa.gotFirstResponseByte, - Got100Continue: sa.got100Continue, - DNSStart: sa.dnsStart, - DNSDone: sa.dnsDone, - ConnectStart: sa.connectStart, - ConnectDone: sa.connectDone, - TLSHandshakeStart: sa.tlsHandshakeStart, - TLSHandshakeDone: sa.tlsHandshakeDone, - WroteHeaders: sa.wroteHeaders, - Wait100Continue: sa.wait100Continue, - WroteRequest: sa.wroteRequest, - } -} - -func (s spanAnnotator) getConn(hostPort string) { - attrs := []trace.Attribute{ - trace.StringAttribute("httptrace.get_connection.host_port", hostPort), - } - s.sp.Annotate(attrs, "GetConn") -} - -func (s spanAnnotator) gotConn(info httptrace.GotConnInfo) { - attrs := []trace.Attribute{ - trace.BoolAttribute("httptrace.got_connection.reused", info.Reused), - trace.BoolAttribute("httptrace.got_connection.was_idle", info.WasIdle), - } - if info.WasIdle { - attrs = append(attrs, - trace.StringAttribute("httptrace.got_connection.idle_time", info.IdleTime.String())) - } - s.sp.Annotate(attrs, "GotConn") -} - -// PutIdleConn implements a httptrace.ClientTrace hook -func (s spanAnnotator) putIdleConn(err error) { - var attrs []trace.Attribute - if err != nil { - attrs = append(attrs, - trace.StringAttribute("httptrace.put_idle_connection.error", err.Error())) - } - s.sp.Annotate(attrs, "PutIdleConn") -} - -func (s spanAnnotator) gotFirstResponseByte() { - s.sp.Annotate(nil, "GotFirstResponseByte") -} - -func (s spanAnnotator) got100Continue() { - s.sp.Annotate(nil, "Got100Continue") -} - -func (s spanAnnotator) dnsStart(info httptrace.DNSStartInfo) { - attrs := []trace.Attribute{ - trace.StringAttribute("httptrace.dns_start.host", info.Host), - } - s.sp.Annotate(attrs, "DNSStart") -} - -func (s spanAnnotator) dnsDone(info httptrace.DNSDoneInfo) { - var addrs []string - for _, addr := range info.Addrs { - addrs = append(addrs, addr.String()) - } - attrs := []trace.Attribute{ - trace.StringAttribute("httptrace.dns_done.addrs", strings.Join(addrs, " , ")), - } - if info.Err != nil { - attrs = append(attrs, - trace.StringAttribute("httptrace.dns_done.error", info.Err.Error())) - } - s.sp.Annotate(attrs, "DNSDone") -} - -func (s spanAnnotator) connectStart(network, addr string) { - attrs := []trace.Attribute{ - trace.StringAttribute("httptrace.connect_start.network", network), - trace.StringAttribute("httptrace.connect_start.addr", addr), - } - s.sp.Annotate(attrs, "ConnectStart") -} - -func (s spanAnnotator) connectDone(network, addr string, err error) { - attrs := []trace.Attribute{ - trace.StringAttribute("httptrace.connect_done.network", network), - trace.StringAttribute("httptrace.connect_done.addr", addr), - } - if err != nil { - attrs = append(attrs, - trace.StringAttribute("httptrace.connect_done.error", err.Error())) - } - s.sp.Annotate(attrs, "ConnectDone") -} - -func (s spanAnnotator) tlsHandshakeStart() { - s.sp.Annotate(nil, "TLSHandshakeStart") -} - -func (s spanAnnotator) tlsHandshakeDone(_ tls.ConnectionState, err error) { - var attrs []trace.Attribute - if err != nil { - attrs = append(attrs, - trace.StringAttribute("httptrace.tls_handshake_done.error", err.Error())) - } - s.sp.Annotate(attrs, "TLSHandshakeDone") -} - -func (s spanAnnotator) wroteHeaders() { - s.sp.Annotate(nil, "WroteHeaders") -} - -func (s spanAnnotator) wait100Continue() { - s.sp.Annotate(nil, "Wait100Continue") -} - -func (s spanAnnotator) wroteRequest(info httptrace.WroteRequestInfo) { - var attrs []trace.Attribute - if info.Err != nil { - attrs = append(attrs, - trace.StringAttribute("httptrace.wrote_request.error", info.Err.Error())) - } - s.sp.Annotate(attrs, "WroteRequest") -} diff --git a/vendor/go.opencensus.io/plugin/ochttp/stats.go b/vendor/go.opencensus.io/plugin/ochttp/stats.go deleted file mode 100644 index ee37290..0000000 --- a/vendor/go.opencensus.io/plugin/ochttp/stats.go +++ /dev/null @@ -1,292 +0,0 @@ -// Copyright 2018, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package ochttp - -import ( - "go.opencensus.io/stats" - "go.opencensus.io/stats/view" - "go.opencensus.io/tag" -) - -// Deprecated: client HTTP measures. -var ( - // Deprecated: Use a Count aggregation over one of the other client measures to achieve the same effect. - ClientRequestCount = stats.Int64( - "opencensus.io/http/client/request_count", - "Number of HTTP requests started", - stats.UnitDimensionless) - // Deprecated: Use ClientSentBytes. - ClientRequestBytes = stats.Int64( - "opencensus.io/http/client/request_bytes", - "HTTP request body size if set as ContentLength (uncompressed)", - stats.UnitBytes) - // Deprecated: Use ClientReceivedBytes. - ClientResponseBytes = stats.Int64( - "opencensus.io/http/client/response_bytes", - "HTTP response body size (uncompressed)", - stats.UnitBytes) - // Deprecated: Use ClientRoundtripLatency. - ClientLatency = stats.Float64( - "opencensus.io/http/client/latency", - "End-to-end latency", - stats.UnitMilliseconds) -) - -// The following client HTTP measures are supported for use in custom views. -var ( - ClientSentBytes = stats.Int64( - "opencensus.io/http/client/sent_bytes", - "Total bytes sent in request body (not including headers)", - stats.UnitBytes, - ) - ClientReceivedBytes = stats.Int64( - "opencensus.io/http/client/received_bytes", - "Total bytes received in response bodies (not including headers but including error responses with bodies)", - stats.UnitBytes, - ) - ClientRoundtripLatency = stats.Float64( - "opencensus.io/http/client/roundtrip_latency", - "Time between first byte of request headers sent to last byte of response received, or terminal error", - stats.UnitMilliseconds, - ) -) - -// The following server HTTP measures are supported for use in custom views: -var ( - ServerRequestCount = stats.Int64( - "opencensus.io/http/server/request_count", - "Number of HTTP requests started", - stats.UnitDimensionless) - ServerRequestBytes = stats.Int64( - "opencensus.io/http/server/request_bytes", - "HTTP request body size if set as ContentLength (uncompressed)", - stats.UnitBytes) - ServerResponseBytes = stats.Int64( - "opencensus.io/http/server/response_bytes", - "HTTP response body size (uncompressed)", - stats.UnitBytes) - ServerLatency = stats.Float64( - "opencensus.io/http/server/latency", - "End-to-end latency", - stats.UnitMilliseconds) -) - -// The following tags are applied to stats recorded by this package. Host, Path -// and Method are applied to all measures. StatusCode is not applied to -// ClientRequestCount or ServerRequestCount, since it is recorded before the status is known. -var ( - // Host is the value of the HTTP Host header. - // - // The value of this tag can be controlled by the HTTP client, so you need - // to watch out for potentially generating high-cardinality labels in your - // metrics backend if you use this tag in views. - Host = tag.MustNewKey("http.host") - - // StatusCode is the numeric HTTP response status code, - // or "error" if a transport error occurred and no status code was read. - StatusCode = tag.MustNewKey("http.status") - - // Path is the URL path (not including query string) in the request. - // - // The value of this tag can be controlled by the HTTP client, so you need - // to watch out for potentially generating high-cardinality labels in your - // metrics backend if you use this tag in views. - Path = tag.MustNewKey("http.path") - - // Method is the HTTP method of the request, capitalized (GET, POST, etc.). - Method = tag.MustNewKey("http.method") - - // KeyServerRoute is a low cardinality string representing the logical - // handler of the request. This is usually the pattern registered on the a - // ServeMux (or similar string). - KeyServerRoute = tag.MustNewKey("http_server_route") -) - -// Client tag keys. -var ( - // KeyClientMethod is the HTTP method, capitalized (i.e. GET, POST, PUT, DELETE, etc.). - KeyClientMethod = tag.MustNewKey("http_client_method") - // KeyClientPath is the URL path (not including query string). - KeyClientPath = tag.MustNewKey("http_client_path") - // KeyClientStatus is the HTTP status code as an integer (e.g. 200, 404, 500.), or "error" if no response status line was received. - KeyClientStatus = tag.MustNewKey("http_client_status") - // KeyClientHost is the value of the request Host header. - KeyClientHost = tag.MustNewKey("http_client_host") -) - -// Default distributions used by views in this package. -var ( - DefaultSizeDistribution = view.Distribution(1024, 2048, 4096, 16384, 65536, 262144, 1048576, 4194304, 16777216, 67108864, 268435456, 1073741824, 4294967296) - DefaultLatencyDistribution = view.Distribution(1, 2, 3, 4, 5, 6, 8, 10, 13, 16, 20, 25, 30, 40, 50, 65, 80, 100, 130, 160, 200, 250, 300, 400, 500, 650, 800, 1000, 2000, 5000, 10000, 20000, 50000, 100000) -) - -// Package ochttp provides some convenience views for client measures. -// You still need to register these views for data to actually be collected. -var ( - ClientSentBytesDistribution = &view.View{ - Name: "opencensus.io/http/client/sent_bytes", - Measure: ClientSentBytes, - Aggregation: DefaultSizeDistribution, - Description: "Total bytes sent in request body (not including headers), by HTTP method and response status", - TagKeys: []tag.Key{KeyClientMethod, KeyClientStatus}, - } - - ClientReceivedBytesDistribution = &view.View{ - Name: "opencensus.io/http/client/received_bytes", - Measure: ClientReceivedBytes, - Aggregation: DefaultSizeDistribution, - Description: "Total bytes received in response bodies (not including headers but including error responses with bodies), by HTTP method and response status", - TagKeys: []tag.Key{KeyClientMethod, KeyClientStatus}, - } - - ClientRoundtripLatencyDistribution = &view.View{ - Name: "opencensus.io/http/client/roundtrip_latency", - Measure: ClientRoundtripLatency, - Aggregation: DefaultLatencyDistribution, - Description: "End-to-end latency, by HTTP method and response status", - TagKeys: []tag.Key{KeyClientMethod, KeyClientStatus}, - } - - ClientCompletedCount = &view.View{ - Name: "opencensus.io/http/client/completed_count", - Measure: ClientRoundtripLatency, - Aggregation: view.Count(), - Description: "Count of completed requests, by HTTP method and response status", - TagKeys: []tag.Key{KeyClientMethod, KeyClientStatus}, - } -) - -// Deprecated: Old client Views. -var ( - // Deprecated: No direct replacement, but see ClientCompletedCount. - ClientRequestCountView = &view.View{ - Name: "opencensus.io/http/client/request_count", - Description: "Count of HTTP requests started", - Measure: ClientRequestCount, - Aggregation: view.Count(), - } - - // Deprecated: Use ClientSentBytesDistribution. - ClientRequestBytesView = &view.View{ - Name: "opencensus.io/http/client/request_bytes", - Description: "Size distribution of HTTP request body", - Measure: ClientSentBytes, - Aggregation: DefaultSizeDistribution, - } - - // Deprecated: Use ClientReceivedBytesDistribution instead. - ClientResponseBytesView = &view.View{ - Name: "opencensus.io/http/client/response_bytes", - Description: "Size distribution of HTTP response body", - Measure: ClientReceivedBytes, - Aggregation: DefaultSizeDistribution, - } - - // Deprecated: Use ClientRoundtripLatencyDistribution instead. - ClientLatencyView = &view.View{ - Name: "opencensus.io/http/client/latency", - Description: "Latency distribution of HTTP requests", - Measure: ClientRoundtripLatency, - Aggregation: DefaultLatencyDistribution, - } - - // Deprecated: Use ClientCompletedCount instead. - ClientRequestCountByMethod = &view.View{ - Name: "opencensus.io/http/client/request_count_by_method", - Description: "Client request count by HTTP method", - TagKeys: []tag.Key{Method}, - Measure: ClientSentBytes, - Aggregation: view.Count(), - } - - // Deprecated: Use ClientCompletedCount instead. - ClientResponseCountByStatusCode = &view.View{ - Name: "opencensus.io/http/client/response_count_by_status_code", - Description: "Client response count by status code", - TagKeys: []tag.Key{StatusCode}, - Measure: ClientRoundtripLatency, - Aggregation: view.Count(), - } -) - -// Package ochttp provides some convenience views for server measures. -// You still need to register these views for data to actually be collected. -var ( - ServerRequestCountView = &view.View{ - Name: "opencensus.io/http/server/request_count", - Description: "Count of HTTP requests started", - Measure: ServerRequestCount, - Aggregation: view.Count(), - } - - ServerRequestBytesView = &view.View{ - Name: "opencensus.io/http/server/request_bytes", - Description: "Size distribution of HTTP request body", - Measure: ServerRequestBytes, - Aggregation: DefaultSizeDistribution, - } - - ServerResponseBytesView = &view.View{ - Name: "opencensus.io/http/server/response_bytes", - Description: "Size distribution of HTTP response body", - Measure: ServerResponseBytes, - Aggregation: DefaultSizeDistribution, - } - - ServerLatencyView = &view.View{ - Name: "opencensus.io/http/server/latency", - Description: "Latency distribution of HTTP requests", - Measure: ServerLatency, - Aggregation: DefaultLatencyDistribution, - } - - ServerRequestCountByMethod = &view.View{ - Name: "opencensus.io/http/server/request_count_by_method", - Description: "Server request count by HTTP method", - TagKeys: []tag.Key{Method}, - Measure: ServerRequestCount, - Aggregation: view.Count(), - } - - ServerResponseCountByStatusCode = &view.View{ - Name: "opencensus.io/http/server/response_count_by_status_code", - Description: "Server response count by status code", - TagKeys: []tag.Key{StatusCode}, - Measure: ServerLatency, - Aggregation: view.Count(), - } -) - -// DefaultClientViews are the default client views provided by this package. -// Deprecated: No replacement. Register the views you would like individually. -var DefaultClientViews = []*view.View{ - ClientRequestCountView, - ClientRequestBytesView, - ClientResponseBytesView, - ClientLatencyView, - ClientRequestCountByMethod, - ClientResponseCountByStatusCode, -} - -// DefaultServerViews are the default server views provided by this package. -// Deprecated: No replacement. Register the views you would like individually. -var DefaultServerViews = []*view.View{ - ServerRequestCountView, - ServerRequestBytesView, - ServerResponseBytesView, - ServerLatencyView, - ServerRequestCountByMethod, - ServerResponseCountByStatusCode, -} diff --git a/vendor/go.opencensus.io/plugin/ochttp/trace.go b/vendor/go.opencensus.io/plugin/ochttp/trace.go deleted file mode 100644 index ed3a5db..0000000 --- a/vendor/go.opencensus.io/plugin/ochttp/trace.go +++ /dev/null @@ -1,244 +0,0 @@ -// Copyright 2018, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package ochttp - -import ( - "io" - "net/http" - "net/http/httptrace" - - "go.opencensus.io/plugin/ochttp/propagation/b3" - "go.opencensus.io/trace" - "go.opencensus.io/trace/propagation" -) - -// TODO(jbd): Add godoc examples. - -var defaultFormat propagation.HTTPFormat = &b3.HTTPFormat{} - -// Attributes recorded on the span for the requests. -// Only trace exporters will need them. -const ( - HostAttribute = "http.host" - MethodAttribute = "http.method" - PathAttribute = "http.path" - URLAttribute = "http.url" - UserAgentAttribute = "http.user_agent" - StatusCodeAttribute = "http.status_code" -) - -type traceTransport struct { - base http.RoundTripper - startOptions trace.StartOptions - format propagation.HTTPFormat - formatSpanName func(*http.Request) string - newClientTrace func(*http.Request, *trace.Span) *httptrace.ClientTrace -} - -// TODO(jbd): Add message events for request and response size. - -// RoundTrip creates a trace.Span and inserts it into the outgoing request's headers. -// The created span can follow a parent span, if a parent is presented in -// the request's context. -func (t *traceTransport) RoundTrip(req *http.Request) (*http.Response, error) { - name := t.formatSpanName(req) - // TODO(jbd): Discuss whether we want to prefix - // outgoing requests with Sent. - ctx, span := trace.StartSpan(req.Context(), name, - trace.WithSampler(t.startOptions.Sampler), - trace.WithSpanKind(trace.SpanKindClient)) - - if t.newClientTrace != nil { - req = req.WithContext(httptrace.WithClientTrace(ctx, t.newClientTrace(req, span))) - } else { - req = req.WithContext(ctx) - } - - if t.format != nil { - // SpanContextToRequest will modify its Request argument, which is - // contrary to the contract for http.RoundTripper, so we need to - // pass it a copy of the Request. - // However, the Request struct itself was already copied by - // the WithContext calls above and so we just need to copy the header. - header := make(http.Header) - for k, v := range req.Header { - header[k] = v - } - req.Header = header - t.format.SpanContextToRequest(span.SpanContext(), req) - } - - span.AddAttributes(requestAttrs(req)...) - resp, err := t.base.RoundTrip(req) - if err != nil { - span.SetStatus(trace.Status{Code: trace.StatusCodeUnknown, Message: err.Error()}) - span.End() - return resp, err - } - - span.AddAttributes(responseAttrs(resp)...) - span.SetStatus(TraceStatus(resp.StatusCode, resp.Status)) - - // span.End() will be invoked after - // a read from resp.Body returns io.EOF or when - // resp.Body.Close() is invoked. - bt := &bodyTracker{rc: resp.Body, span: span} - resp.Body = wrappedBody(bt, resp.Body) - return resp, err -} - -// bodyTracker wraps a response.Body and invokes -// trace.EndSpan on encountering io.EOF on reading -// the body of the original response. -type bodyTracker struct { - rc io.ReadCloser - span *trace.Span -} - -var _ io.ReadCloser = (*bodyTracker)(nil) - -func (bt *bodyTracker) Read(b []byte) (int, error) { - n, err := bt.rc.Read(b) - - switch err { - case nil: - return n, nil - case io.EOF: - bt.span.End() - default: - // For all other errors, set the span status - bt.span.SetStatus(trace.Status{ - // Code 2 is the error code for Internal server error. - Code: 2, - Message: err.Error(), - }) - } - return n, err -} - -func (bt *bodyTracker) Close() error { - // Invoking endSpan on Close will help catch the cases - // in which a read returned a non-nil error, we set the - // span status but didn't end the span. - bt.span.End() - return bt.rc.Close() -} - -// CancelRequest cancels an in-flight request by closing its connection. -func (t *traceTransport) CancelRequest(req *http.Request) { - type canceler interface { - CancelRequest(*http.Request) - } - if cr, ok := t.base.(canceler); ok { - cr.CancelRequest(req) - } -} - -func spanNameFromURL(req *http.Request) string { - return req.URL.Path -} - -func requestAttrs(r *http.Request) []trace.Attribute { - userAgent := r.UserAgent() - - attrs := make([]trace.Attribute, 0, 5) - attrs = append(attrs, - trace.StringAttribute(PathAttribute, r.URL.Path), - trace.StringAttribute(URLAttribute, r.URL.String()), - trace.StringAttribute(HostAttribute, r.Host), - trace.StringAttribute(MethodAttribute, r.Method), - ) - - if userAgent != "" { - attrs = append(attrs, trace.StringAttribute(UserAgentAttribute, userAgent)) - } - - return attrs -} - -func responseAttrs(resp *http.Response) []trace.Attribute { - return []trace.Attribute{ - trace.Int64Attribute(StatusCodeAttribute, int64(resp.StatusCode)), - } -} - -// TraceStatus is a utility to convert the HTTP status code to a trace.Status that -// represents the outcome as closely as possible. -func TraceStatus(httpStatusCode int, statusLine string) trace.Status { - var code int32 - if httpStatusCode < 200 || httpStatusCode >= 400 { - code = trace.StatusCodeUnknown - } - switch httpStatusCode { - case 499: - code = trace.StatusCodeCancelled - case http.StatusBadRequest: - code = trace.StatusCodeInvalidArgument - case http.StatusUnprocessableEntity: - code = trace.StatusCodeInvalidArgument - case http.StatusGatewayTimeout: - code = trace.StatusCodeDeadlineExceeded - case http.StatusNotFound: - code = trace.StatusCodeNotFound - case http.StatusForbidden: - code = trace.StatusCodePermissionDenied - case http.StatusUnauthorized: // 401 is actually unauthenticated. - code = trace.StatusCodeUnauthenticated - case http.StatusTooManyRequests: - code = trace.StatusCodeResourceExhausted - case http.StatusNotImplemented: - code = trace.StatusCodeUnimplemented - case http.StatusServiceUnavailable: - code = trace.StatusCodeUnavailable - case http.StatusOK: - code = trace.StatusCodeOK - case http.StatusConflict: - code = trace.StatusCodeAlreadyExists - } - - return trace.Status{Code: code, Message: codeToStr[code]} -} - -var codeToStr = map[int32]string{ - trace.StatusCodeOK: `OK`, - trace.StatusCodeCancelled: `CANCELLED`, - trace.StatusCodeUnknown: `UNKNOWN`, - trace.StatusCodeInvalidArgument: `INVALID_ARGUMENT`, - trace.StatusCodeDeadlineExceeded: `DEADLINE_EXCEEDED`, - trace.StatusCodeNotFound: `NOT_FOUND`, - trace.StatusCodeAlreadyExists: `ALREADY_EXISTS`, - trace.StatusCodePermissionDenied: `PERMISSION_DENIED`, - trace.StatusCodeResourceExhausted: `RESOURCE_EXHAUSTED`, - trace.StatusCodeFailedPrecondition: `FAILED_PRECONDITION`, - trace.StatusCodeAborted: `ABORTED`, - trace.StatusCodeOutOfRange: `OUT_OF_RANGE`, - trace.StatusCodeUnimplemented: `UNIMPLEMENTED`, - trace.StatusCodeInternal: `INTERNAL`, - trace.StatusCodeUnavailable: `UNAVAILABLE`, - trace.StatusCodeDataLoss: `DATA_LOSS`, - trace.StatusCodeUnauthenticated: `UNAUTHENTICATED`, -} - -func isHealthEndpoint(path string) bool { - // Health checking is pretty frequent and - // traces collected for health endpoints - // can be extremely noisy and expensive. - // Disable canonical health checking endpoints - // like /healthz and /_ah/health for now. - if path == "/healthz" || path == "/_ah/health" { - return true - } - return false -} diff --git a/vendor/go.opencensus.io/plugin/ochttp/wrapped_body.go b/vendor/go.opencensus.io/plugin/ochttp/wrapped_body.go deleted file mode 100644 index 7d75cae..0000000 --- a/vendor/go.opencensus.io/plugin/ochttp/wrapped_body.go +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2019, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package ochttp - -import ( - "io" -) - -// wrappedBody returns a wrapped version of the original -// Body and only implements the same combination of additional -// interfaces as the original. -func wrappedBody(wrapper io.ReadCloser, body io.ReadCloser) io.ReadCloser { - var ( - wr, i0 = body.(io.Writer) - ) - switch { - case !i0: - return struct { - io.ReadCloser - }{wrapper} - - case i0: - return struct { - io.ReadCloser - io.Writer - }{wrapper, wr} - default: - return struct { - io.ReadCloser - }{wrapper} - } -} diff --git a/vendor/go.opencensus.io/resource/resource.go b/vendor/go.opencensus.io/resource/resource.go deleted file mode 100644 index b1764e1..0000000 --- a/vendor/go.opencensus.io/resource/resource.go +++ /dev/null @@ -1,164 +0,0 @@ -// Copyright 2018, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Package resource provides functionality for resource, which capture -// identifying information about the entities for which signals are exported. -package resource - -import ( - "context" - "fmt" - "os" - "regexp" - "sort" - "strconv" - "strings" -) - -// Environment variables used by FromEnv to decode a resource. -const ( - EnvVarType = "OC_RESOURCE_TYPE" - EnvVarLabels = "OC_RESOURCE_LABELS" -) - -// Resource describes an entity about which identifying information and metadata is exposed. -// For example, a type "k8s.io/container" may hold labels describing the pod name and namespace. -type Resource struct { - Type string - Labels map[string]string -} - -// EncodeLabels encodes a labels map to a string as provided via the OC_RESOURCE_LABELS environment variable. -func EncodeLabels(labels map[string]string) string { - sortedKeys := make([]string, 0, len(labels)) - for k := range labels { - sortedKeys = append(sortedKeys, k) - } - sort.Strings(sortedKeys) - - s := "" - for i, k := range sortedKeys { - if i > 0 { - s += "," - } - s += k + "=" + strconv.Quote(labels[k]) - } - return s -} - -var labelRegex = regexp.MustCompile(`^\s*([[:ascii:]]{1,256}?)=("[[:ascii:]]{0,256}?")\s*,`) - -// DecodeLabels decodes a serialized label map as used in the OC_RESOURCE_LABELS variable. -// A list of labels of the form `="",="",...` is accepted. -// Domain names and paths are accepted as label keys. -// Most users will want to use FromEnv instead. -func DecodeLabels(s string) (map[string]string, error) { - m := map[string]string{} - // Ensure a trailing comma, which allows us to keep the regex simpler - s = strings.TrimRight(strings.TrimSpace(s), ",") + "," - - for len(s) > 0 { - match := labelRegex.FindStringSubmatch(s) - if len(match) == 0 { - return nil, fmt.Errorf("invalid label formatting, remainder: %s", s) - } - v := match[2] - if v == "" { - v = match[3] - } else { - var err error - if v, err = strconv.Unquote(v); err != nil { - return nil, fmt.Errorf("invalid label formatting, remainder: %s, err: %s", s, err) - } - } - m[match[1]] = v - - s = s[len(match[0]):] - } - return m, nil -} - -// FromEnv is a detector that loads resource information from the OC_RESOURCE_TYPE -// and OC_RESOURCE_labelS environment variables. -func FromEnv(context.Context) (*Resource, error) { - res := &Resource{ - Type: strings.TrimSpace(os.Getenv(EnvVarType)), - } - labels := strings.TrimSpace(os.Getenv(EnvVarLabels)) - if labels == "" { - return res, nil - } - var err error - if res.Labels, err = DecodeLabels(labels); err != nil { - return nil, err - } - return res, nil -} - -var _ Detector = FromEnv - -// merge resource information from b into a. In case of a collision, a takes precedence. -func merge(a, b *Resource) *Resource { - if a == nil { - return b - } - if b == nil { - return a - } - res := &Resource{ - Type: a.Type, - Labels: map[string]string{}, - } - if res.Type == "" { - res.Type = b.Type - } - for k, v := range b.Labels { - res.Labels[k] = v - } - // Labels from resource a overwrite labels from resource b. - for k, v := range a.Labels { - res.Labels[k] = v - } - return res -} - -// Detector attempts to detect resource information. -// If the detector cannot find resource information, the returned resource is nil but no -// error is returned. -// An error is only returned on unexpected failures. -type Detector func(context.Context) (*Resource, error) - -// MultiDetector returns a Detector that calls all input detectors in order and -// merges each result with the previous one. In case a type of label key is already set, -// the first set value is takes precedence. -// It returns on the first error that a sub-detector encounters. -func MultiDetector(detectors ...Detector) Detector { - return func(ctx context.Context) (*Resource, error) { - return detectAll(ctx, detectors...) - } -} - -// detectall calls all input detectors sequentially an merges each result with the previous one. -// It returns on the first error that a sub-detector encounters. -func detectAll(ctx context.Context, detectors ...Detector) (*Resource, error) { - var res *Resource - for _, d := range detectors { - r, err := d(ctx) - if err != nil { - return nil, err - } - res = merge(res, r) - } - return res, nil -} diff --git a/vendor/go.opencensus.io/stats/doc.go b/vendor/go.opencensus.io/stats/doc.go deleted file mode 100644 index 00d473e..0000000 --- a/vendor/go.opencensus.io/stats/doc.go +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright 2017, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -/* -Package stats contains support for OpenCensus stats recording. - -OpenCensus allows users to create typed measures, record measurements, -aggregate the collected data, and export the aggregated data. - -Measures - -A measure represents a type of data point to be tracked and recorded. -For example, latency, request Mb/s, and response Mb/s are measures -to collect from a server. - -Measure constructors such as Int64 and Float64 automatically -register the measure by the given name. Each registered measure needs -to be unique by name. Measures also have a description and a unit. - -Libraries can define and export measures. Application authors can then -create views and collect and break down measures by the tags they are -interested in. - -Recording measurements - -Measurement is a data point to be collected for a measure. For example, -for a latency (ms) measure, 100 is a measurement that represents a 100ms -latency event. Measurements are created from measures with -the current context. Tags from the current context are recorded with the -measurements if they are any. - -Recorded measurements are dropped immediately if no views are registered for them. -There is usually no need to conditionally enable and disable -recording to reduce cost. Recording of measurements is cheap. - -Libraries can always record measurements, and applications can later decide -on which measurements they want to collect by registering views. This allows -libraries to turn on the instrumentation by default. - -Exemplars - -For a given recorded measurement, the associated exemplar is a diagnostic map -that gives more information about the measurement. - -When aggregated using a Distribution aggregation, an exemplar is kept for each -bucket in the Distribution. This allows you to easily find an example of a -measurement that fell into each bucket. - -For example, if you also use the OpenCensus trace package and you -record a measurement with a context that contains a sampled trace span, -then the trace span will be added to the exemplar associated with the measurement. - -When exported to a supporting back end, you should be able to easily navigate -to example traces that fell into each bucket in the Distribution. - -*/ -package stats // import "go.opencensus.io/stats" diff --git a/vendor/go.opencensus.io/stats/internal/record.go b/vendor/go.opencensus.io/stats/internal/record.go deleted file mode 100644 index 36935e6..0000000 --- a/vendor/go.opencensus.io/stats/internal/record.go +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2018, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package internal - -import ( - "go.opencensus.io/tag" -) - -// DefaultRecorder will be called for each Record call. -var DefaultRecorder func(tags *tag.Map, measurement interface{}, attachments map[string]interface{}) - -// SubscriptionReporter reports when a view subscribed with a measure. -var SubscriptionReporter func(measure string) diff --git a/vendor/go.opencensus.io/stats/measure.go b/vendor/go.opencensus.io/stats/measure.go deleted file mode 100644 index 1ffd3ce..0000000 --- a/vendor/go.opencensus.io/stats/measure.go +++ /dev/null @@ -1,109 +0,0 @@ -// Copyright 2017, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -package stats - -import ( - "sync" - "sync/atomic" -) - -// Measure represents a single numeric value to be tracked and recorded. -// For example, latency, request bytes, and response bytes could be measures -// to collect from a server. -// -// Measures by themselves have no outside effects. In order to be exported, -// the measure needs to be used in a View. If no Views are defined over a -// measure, there is very little cost in recording it. -type Measure interface { - // Name returns the name of this measure. - // - // Measure names are globally unique (among all libraries linked into your program). - // We recommend prefixing the measure name with a domain name relevant to your - // project or application. - // - // Measure names are never sent over the wire or exported to backends. - // They are only used to create Views. - Name() string - - // Description returns the human-readable description of this measure. - Description() string - - // Unit returns the units for the values this measure takes on. - // - // Units are encoded according to the case-sensitive abbreviations from the - // Unified Code for Units of Measure: http://unitsofmeasure.org/ucum.html - Unit() string -} - -// measureDescriptor is the untyped descriptor associated with each measure. -// Int64Measure and Float64Measure wrap measureDescriptor to provide typed -// recording APIs. -// Two Measures with the same name will have the same measureDescriptor. -type measureDescriptor struct { - subs int32 // access atomically - - name string - description string - unit string -} - -func (m *measureDescriptor) subscribe() { - atomic.StoreInt32(&m.subs, 1) -} - -func (m *measureDescriptor) subscribed() bool { - return atomic.LoadInt32(&m.subs) == 1 -} - -var ( - mu sync.RWMutex - measures = make(map[string]*measureDescriptor) -) - -func registerMeasureHandle(name, desc, unit string) *measureDescriptor { - mu.Lock() - defer mu.Unlock() - - if stored, ok := measures[name]; ok { - return stored - } - m := &measureDescriptor{ - name: name, - description: desc, - unit: unit, - } - measures[name] = m - return m -} - -// Measurement is the numeric value measured when recording stats. Each measure -// provides methods to create measurements of their kind. For example, Int64Measure -// provides M to convert an int64 into a measurement. -type Measurement struct { - v float64 - m Measure - desc *measureDescriptor -} - -// Value returns the value of the Measurement as a float64. -func (m Measurement) Value() float64 { - return m.v -} - -// Measure returns the Measure from which this Measurement was created. -func (m Measurement) Measure() Measure { - return m.m -} diff --git a/vendor/go.opencensus.io/stats/measure_float64.go b/vendor/go.opencensus.io/stats/measure_float64.go deleted file mode 100644 index f02c1ed..0000000 --- a/vendor/go.opencensus.io/stats/measure_float64.go +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2017, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -package stats - -// Float64Measure is a measure for float64 values. -type Float64Measure struct { - desc *measureDescriptor -} - -// M creates a new float64 measurement. -// Use Record to record measurements. -func (m *Float64Measure) M(v float64) Measurement { - return Measurement{ - m: m, - desc: m.desc, - v: v, - } -} - -// Float64 creates a new measure for float64 values. -// -// See the documentation for interface Measure for more guidance on the -// parameters of this function. -func Float64(name, description, unit string) *Float64Measure { - mi := registerMeasureHandle(name, description, unit) - return &Float64Measure{mi} -} - -// Name returns the name of the measure. -func (m *Float64Measure) Name() string { - return m.desc.name -} - -// Description returns the description of the measure. -func (m *Float64Measure) Description() string { - return m.desc.description -} - -// Unit returns the unit of the measure. -func (m *Float64Measure) Unit() string { - return m.desc.unit -} diff --git a/vendor/go.opencensus.io/stats/measure_int64.go b/vendor/go.opencensus.io/stats/measure_int64.go deleted file mode 100644 index d101d79..0000000 --- a/vendor/go.opencensus.io/stats/measure_int64.go +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2017, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -package stats - -// Int64Measure is a measure for int64 values. -type Int64Measure struct { - desc *measureDescriptor -} - -// M creates a new int64 measurement. -// Use Record to record measurements. -func (m *Int64Measure) M(v int64) Measurement { - return Measurement{ - m: m, - desc: m.desc, - v: float64(v), - } -} - -// Int64 creates a new measure for int64 values. -// -// See the documentation for interface Measure for more guidance on the -// parameters of this function. -func Int64(name, description, unit string) *Int64Measure { - mi := registerMeasureHandle(name, description, unit) - return &Int64Measure{mi} -} - -// Name returns the name of the measure. -func (m *Int64Measure) Name() string { - return m.desc.name -} - -// Description returns the description of the measure. -func (m *Int64Measure) Description() string { - return m.desc.description -} - -// Unit returns the unit of the measure. -func (m *Int64Measure) Unit() string { - return m.desc.unit -} diff --git a/vendor/go.opencensus.io/stats/record.go b/vendor/go.opencensus.io/stats/record.go deleted file mode 100644 index 2b97283..0000000 --- a/vendor/go.opencensus.io/stats/record.go +++ /dev/null @@ -1,137 +0,0 @@ -// Copyright 2018, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -package stats - -import ( - "context" - - "go.opencensus.io/metric/metricdata" - "go.opencensus.io/stats/internal" - "go.opencensus.io/tag" -) - -func init() { - internal.SubscriptionReporter = func(measure string) { - mu.Lock() - measures[measure].subscribe() - mu.Unlock() - } -} - -// Recorder provides an interface for exporting measurement information from -// the static Record method by using the WithRecorder option. -type Recorder interface { - // Record records a set of measurements associated with the given tags and attachments. - // The second argument is a `[]Measurement`. - Record(*tag.Map, interface{}, map[string]interface{}) -} - -type recordOptions struct { - attachments metricdata.Attachments - mutators []tag.Mutator - measurements []Measurement - recorder Recorder -} - -// WithAttachments applies provided exemplar attachments. -func WithAttachments(attachments metricdata.Attachments) Options { - return func(ro *recordOptions) { - ro.attachments = attachments - } -} - -// WithTags applies provided tag mutators. -func WithTags(mutators ...tag.Mutator) Options { - return func(ro *recordOptions) { - ro.mutators = mutators - } -} - -// WithMeasurements applies provided measurements. -func WithMeasurements(measurements ...Measurement) Options { - return func(ro *recordOptions) { - ro.measurements = measurements - } -} - -// WithRecorder records the measurements to the specified `Recorder`, rather -// than to the global metrics recorder. -func WithRecorder(meter Recorder) Options { - return func(ro *recordOptions) { - ro.recorder = meter - } -} - -// Options apply changes to recordOptions. -type Options func(*recordOptions) - -func createRecordOption(ros ...Options) *recordOptions { - o := &recordOptions{} - for _, ro := range ros { - ro(o) - } - return o -} - -// Record records one or multiple measurements with the same context at once. -// If there are any tags in the context, measurements will be tagged with them. -func Record(ctx context.Context, ms ...Measurement) { - RecordWithOptions(ctx, WithMeasurements(ms...)) -} - -// RecordWithTags records one or multiple measurements at once. -// -// Measurements will be tagged with the tags in the context mutated by the mutators. -// RecordWithTags is useful if you want to record with tag mutations but don't want -// to propagate the mutations in the context. -func RecordWithTags(ctx context.Context, mutators []tag.Mutator, ms ...Measurement) error { - return RecordWithOptions(ctx, WithTags(mutators...), WithMeasurements(ms...)) -} - -// RecordWithOptions records measurements from the given options (if any) against context -// and tags and attachments in the options (if any). -// If there are any tags in the context, measurements will be tagged with them. -func RecordWithOptions(ctx context.Context, ros ...Options) error { - o := createRecordOption(ros...) - if len(o.measurements) == 0 { - return nil - } - recorder := internal.DefaultRecorder - if o.recorder != nil { - recorder = o.recorder.Record - } - if recorder == nil { - return nil - } - record := false - for _, m := range o.measurements { - if m.desc.subscribed() { - record = true - break - } - } - if !record { - return nil - } - if len(o.mutators) > 0 { - var err error - if ctx, err = tag.New(ctx, o.mutators...); err != nil { - return err - } - } - recorder(tag.FromContext(ctx), o.measurements, o.attachments) - return nil -} diff --git a/vendor/go.opencensus.io/stats/units.go b/vendor/go.opencensus.io/stats/units.go deleted file mode 100644 index 7363996..0000000 --- a/vendor/go.opencensus.io/stats/units.go +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2018, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -package stats - -// Units are encoded according to the case-sensitive abbreviations from the -// Unified Code for Units of Measure: http://unitsofmeasure.org/ucum.html -const ( - UnitNone = "1" // Deprecated: Use UnitDimensionless. - UnitDimensionless = "1" - UnitBytes = "By" - UnitMilliseconds = "ms" - UnitSeconds = "s" -) diff --git a/vendor/go.opencensus.io/stats/view/aggregation.go b/vendor/go.opencensus.io/stats/view/aggregation.go deleted file mode 100644 index 748bd56..0000000 --- a/vendor/go.opencensus.io/stats/view/aggregation.go +++ /dev/null @@ -1,123 +0,0 @@ -// Copyright 2017, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -package view - -import "time" - -// AggType represents the type of aggregation function used on a View. -type AggType int - -// All available aggregation types. -const ( - AggTypeNone AggType = iota // no aggregation; reserved for future use. - AggTypeCount // the count aggregation, see Count. - AggTypeSum // the sum aggregation, see Sum. - AggTypeDistribution // the distribution aggregation, see Distribution. - AggTypeLastValue // the last value aggregation, see LastValue. -) - -func (t AggType) String() string { - return aggTypeName[t] -} - -var aggTypeName = map[AggType]string{ - AggTypeNone: "None", - AggTypeCount: "Count", - AggTypeSum: "Sum", - AggTypeDistribution: "Distribution", - AggTypeLastValue: "LastValue", -} - -// Aggregation represents a data aggregation method. Use one of the functions: -// Count, Sum, or Distribution to construct an Aggregation. -type Aggregation struct { - Type AggType // Type is the AggType of this Aggregation. - Buckets []float64 // Buckets are the bucket endpoints if this Aggregation represents a distribution, see Distribution. - - newData func(time.Time) AggregationData -} - -var ( - aggCount = &Aggregation{ - Type: AggTypeCount, - newData: func(t time.Time) AggregationData { - return &CountData{Start: t} - }, - } - aggSum = &Aggregation{ - Type: AggTypeSum, - newData: func(t time.Time) AggregationData { - return &SumData{Start: t} - }, - } -) - -// Count indicates that data collected and aggregated -// with this method will be turned into a count value. -// For example, total number of accepted requests can be -// aggregated by using Count. -func Count() *Aggregation { - return aggCount -} - -// Sum indicates that data collected and aggregated -// with this method will be summed up. -// For example, accumulated request bytes can be aggregated by using -// Sum. -func Sum() *Aggregation { - return aggSum -} - -// Distribution indicates that the desired aggregation is -// a histogram distribution. -// -// A distribution aggregation may contain a histogram of the values in the -// population. The bucket boundaries for that histogram are described -// by the bounds. This defines len(bounds)+1 buckets. -// -// If len(bounds) >= 2 then the boundaries for bucket index i are: -// -// [-infinity, bounds[i]) for i = 0 -// [bounds[i-1], bounds[i]) for 0 < i < length -// [bounds[i-1], +infinity) for i = length -// -// If len(bounds) is 0 then there is no histogram associated with the -// distribution. There will be a single bucket with boundaries -// (-infinity, +infinity). -// -// If len(bounds) is 1 then there is no finite buckets, and that single -// element is the common boundary of the overflow and underflow buckets. -func Distribution(bounds ...float64) *Aggregation { - agg := &Aggregation{ - Type: AggTypeDistribution, - Buckets: bounds, - } - agg.newData = func(t time.Time) AggregationData { - return newDistributionData(agg, t) - } - return agg -} - -// LastValue only reports the last value recorded using this -// aggregation. All other measurements will be dropped. -func LastValue() *Aggregation { - return &Aggregation{ - Type: AggTypeLastValue, - newData: func(_ time.Time) AggregationData { - return &LastValueData{} - }, - } -} diff --git a/vendor/go.opencensus.io/stats/view/aggregation_data.go b/vendor/go.opencensus.io/stats/view/aggregation_data.go deleted file mode 100644 index d93b520..0000000 --- a/vendor/go.opencensus.io/stats/view/aggregation_data.go +++ /dev/null @@ -1,336 +0,0 @@ -// Copyright 2017, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -package view - -import ( - "math" - "time" - - "go.opencensus.io/metric/metricdata" -) - -// AggregationData represents an aggregated value from a collection. -// They are reported on the view data during exporting. -// Mosts users won't directly access aggregration data. -type AggregationData interface { - isAggregationData() bool - addSample(v float64, attachments map[string]interface{}, t time.Time) - clone() AggregationData - equal(other AggregationData) bool - toPoint(t metricdata.Type, time time.Time) metricdata.Point - StartTime() time.Time -} - -const epsilon = 1e-9 - -// CountData is the aggregated data for the Count aggregation. -// A count aggregation processes data and counts the recordings. -// -// Most users won't directly access count data. -type CountData struct { - Start time.Time - Value int64 -} - -func (a *CountData) isAggregationData() bool { return true } - -func (a *CountData) addSample(_ float64, _ map[string]interface{}, _ time.Time) { - a.Value = a.Value + 1 -} - -func (a *CountData) clone() AggregationData { - return &CountData{Value: a.Value, Start: a.Start} -} - -func (a *CountData) equal(other AggregationData) bool { - a2, ok := other.(*CountData) - if !ok { - return false - } - - return a.Start.Equal(a2.Start) && a.Value == a2.Value -} - -func (a *CountData) toPoint(metricType metricdata.Type, t time.Time) metricdata.Point { - switch metricType { - case metricdata.TypeCumulativeInt64: - return metricdata.NewInt64Point(t, a.Value) - default: - panic("unsupported metricdata.Type") - } -} - -// StartTime returns the start time of the data being aggregated by CountData. -func (a *CountData) StartTime() time.Time { - return a.Start -} - -// SumData is the aggregated data for the Sum aggregation. -// A sum aggregation processes data and sums up the recordings. -// -// Most users won't directly access sum data. -type SumData struct { - Start time.Time - Value float64 -} - -func (a *SumData) isAggregationData() bool { return true } - -func (a *SumData) addSample(v float64, _ map[string]interface{}, _ time.Time) { - a.Value += v -} - -func (a *SumData) clone() AggregationData { - return &SumData{Value: a.Value, Start: a.Start} -} - -func (a *SumData) equal(other AggregationData) bool { - a2, ok := other.(*SumData) - if !ok { - return false - } - return a.Start.Equal(a2.Start) && math.Pow(a.Value-a2.Value, 2) < epsilon -} - -func (a *SumData) toPoint(metricType metricdata.Type, t time.Time) metricdata.Point { - switch metricType { - case metricdata.TypeCumulativeInt64: - return metricdata.NewInt64Point(t, int64(a.Value)) - case metricdata.TypeCumulativeFloat64: - return metricdata.NewFloat64Point(t, a.Value) - default: - panic("unsupported metricdata.Type") - } -} - -// StartTime returns the start time of the data being aggregated by SumData. -func (a *SumData) StartTime() time.Time { - return a.Start -} - -// DistributionData is the aggregated data for the -// Distribution aggregation. -// -// Most users won't directly access distribution data. -// -// For a distribution with N bounds, the associated DistributionData will have -// N+1 buckets. -type DistributionData struct { - Count int64 // number of data points aggregated - Min float64 // minimum value in the distribution - Max float64 // max value in the distribution - Mean float64 // mean of the distribution - SumOfSquaredDev float64 // sum of the squared deviation from the mean - CountPerBucket []int64 // number of occurrences per bucket - // ExemplarsPerBucket is slice the same length as CountPerBucket containing - // an exemplar for the associated bucket, or nil. - ExemplarsPerBucket []*metricdata.Exemplar - bounds []float64 // histogram distribution of the values - Start time.Time -} - -func newDistributionData(agg *Aggregation, t time.Time) *DistributionData { - bucketCount := len(agg.Buckets) + 1 - return &DistributionData{ - CountPerBucket: make([]int64, bucketCount), - ExemplarsPerBucket: make([]*metricdata.Exemplar, bucketCount), - bounds: agg.Buckets, - Min: math.MaxFloat64, - Max: math.SmallestNonzeroFloat64, - Start: t, - } -} - -// Sum returns the sum of all samples collected. -func (a *DistributionData) Sum() float64 { return a.Mean * float64(a.Count) } - -func (a *DistributionData) variance() float64 { - if a.Count <= 1 { - return 0 - } - return a.SumOfSquaredDev / float64(a.Count-1) -} - -func (a *DistributionData) isAggregationData() bool { return true } - -// TODO(songy23): support exemplar attachments. -func (a *DistributionData) addSample(v float64, attachments map[string]interface{}, t time.Time) { - if v < a.Min { - a.Min = v - } - if v > a.Max { - a.Max = v - } - a.Count++ - a.addToBucket(v, attachments, t) - - if a.Count == 1 { - a.Mean = v - return - } - - oldMean := a.Mean - a.Mean = a.Mean + (v-a.Mean)/float64(a.Count) - a.SumOfSquaredDev = a.SumOfSquaredDev + (v-oldMean)*(v-a.Mean) -} - -func (a *DistributionData) addToBucket(v float64, attachments map[string]interface{}, t time.Time) { - var count *int64 - var i int - var b float64 - for i, b = range a.bounds { - if v < b { - count = &a.CountPerBucket[i] - break - } - } - if count == nil { // Last bucket. - i = len(a.bounds) - count = &a.CountPerBucket[i] - } - *count++ - if exemplar := getExemplar(v, attachments, t); exemplar != nil { - a.ExemplarsPerBucket[i] = exemplar - } -} - -func getExemplar(v float64, attachments map[string]interface{}, t time.Time) *metricdata.Exemplar { - if len(attachments) == 0 { - return nil - } - return &metricdata.Exemplar{ - Value: v, - Timestamp: t, - Attachments: attachments, - } -} - -func (a *DistributionData) clone() AggregationData { - c := *a - c.CountPerBucket = append([]int64(nil), a.CountPerBucket...) - c.ExemplarsPerBucket = append([]*metricdata.Exemplar(nil), a.ExemplarsPerBucket...) - return &c -} - -func (a *DistributionData) equal(other AggregationData) bool { - a2, ok := other.(*DistributionData) - if !ok { - return false - } - if a2 == nil { - return false - } - if len(a.CountPerBucket) != len(a2.CountPerBucket) { - return false - } - for i := range a.CountPerBucket { - if a.CountPerBucket[i] != a2.CountPerBucket[i] { - return false - } - } - return a.Start.Equal(a2.Start) && - a.Count == a2.Count && - a.Min == a2.Min && - a.Max == a2.Max && - math.Pow(a.Mean-a2.Mean, 2) < epsilon && math.Pow(a.variance()-a2.variance(), 2) < epsilon -} - -func (a *DistributionData) toPoint(metricType metricdata.Type, t time.Time) metricdata.Point { - switch metricType { - case metricdata.TypeCumulativeDistribution: - buckets := []metricdata.Bucket{} - for i := 0; i < len(a.CountPerBucket); i++ { - buckets = append(buckets, metricdata.Bucket{ - Count: a.CountPerBucket[i], - Exemplar: a.ExemplarsPerBucket[i], - }) - } - bucketOptions := &metricdata.BucketOptions{Bounds: a.bounds} - - val := &metricdata.Distribution{ - Count: a.Count, - Sum: a.Sum(), - SumOfSquaredDeviation: a.SumOfSquaredDev, - BucketOptions: bucketOptions, - Buckets: buckets, - } - return metricdata.NewDistributionPoint(t, val) - - default: - // TODO: [rghetia] when we have a use case for TypeGaugeDistribution. - panic("unsupported metricdata.Type") - } -} - -// StartTime returns the start time of the data being aggregated by DistributionData. -func (a *DistributionData) StartTime() time.Time { - return a.Start -} - -// LastValueData returns the last value recorded for LastValue aggregation. -type LastValueData struct { - Value float64 -} - -func (l *LastValueData) isAggregationData() bool { - return true -} - -func (l *LastValueData) addSample(v float64, _ map[string]interface{}, _ time.Time) { - l.Value = v -} - -func (l *LastValueData) clone() AggregationData { - return &LastValueData{l.Value} -} - -func (l *LastValueData) equal(other AggregationData) bool { - a2, ok := other.(*LastValueData) - if !ok { - return false - } - return l.Value == a2.Value -} - -func (l *LastValueData) toPoint(metricType metricdata.Type, t time.Time) metricdata.Point { - switch metricType { - case metricdata.TypeGaugeInt64: - return metricdata.NewInt64Point(t, int64(l.Value)) - case metricdata.TypeGaugeFloat64: - return metricdata.NewFloat64Point(t, l.Value) - default: - panic("unsupported metricdata.Type") - } -} - -// StartTime returns an empty time value as start time is not recorded when using last value -// aggregation. -func (l *LastValueData) StartTime() time.Time { - return time.Time{} -} - -// ClearStart clears the Start field from data if present. Useful for testing in cases where the -// start time will be nondeterministic. -func ClearStart(data AggregationData) { - switch data := data.(type) { - case *CountData: - data.Start = time.Time{} - case *SumData: - data.Start = time.Time{} - case *DistributionData: - data.Start = time.Time{} - } -} diff --git a/vendor/go.opencensus.io/stats/view/collector.go b/vendor/go.opencensus.io/stats/view/collector.go deleted file mode 100644 index ac22c93..0000000 --- a/vendor/go.opencensus.io/stats/view/collector.go +++ /dev/null @@ -1,86 +0,0 @@ -// Copyright 2017, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -package view - -import ( - "sort" - "time" - - "go.opencensus.io/internal/tagencoding" - "go.opencensus.io/tag" -) - -type collector struct { - // signatures holds the aggregations values for each unique tag signature - // (values for all keys) to its aggregator. - signatures map[string]AggregationData - // Aggregation is the description of the aggregation to perform for this - // view. - a *Aggregation -} - -func (c *collector) addSample(s string, v float64, attachments map[string]interface{}, t time.Time) { - aggregator, ok := c.signatures[s] - if !ok { - aggregator = c.a.newData(t) - c.signatures[s] = aggregator - } - aggregator.addSample(v, attachments, t) -} - -// collectRows returns a snapshot of the collected Row values. -func (c *collector) collectedRows(keys []tag.Key) []*Row { - rows := make([]*Row, 0, len(c.signatures)) - for sig, aggregator := range c.signatures { - tags := decodeTags([]byte(sig), keys) - row := &Row{Tags: tags, Data: aggregator.clone()} - rows = append(rows, row) - } - return rows -} - -func (c *collector) clearRows() { - c.signatures = make(map[string]AggregationData) -} - -// encodeWithKeys encodes the map by using values -// only associated with the keys provided. -func encodeWithKeys(m *tag.Map, keys []tag.Key) []byte { - vb := &tagencoding.Values{ - Buffer: make([]byte, len(keys)), - } - for _, k := range keys { - v, _ := m.Value(k) - vb.WriteValue([]byte(v)) - } - return vb.Bytes() -} - -// decodeTags decodes tags from the buffer and -// orders them by the keys. -func decodeTags(buf []byte, keys []tag.Key) []tag.Tag { - vb := &tagencoding.Values{Buffer: buf} - var tags []tag.Tag - for _, k := range keys { - v := vb.ReadValue() - if v != nil { - tags = append(tags, tag.Tag{Key: k, Value: string(v)}) - } - } - vb.ReadIndex = 0 - sort.Slice(tags, func(i, j int) bool { return tags[i].Key.Name() < tags[j].Key.Name() }) - return tags -} diff --git a/vendor/go.opencensus.io/stats/view/doc.go b/vendor/go.opencensus.io/stats/view/doc.go deleted file mode 100644 index 7bbedfe..0000000 --- a/vendor/go.opencensus.io/stats/view/doc.go +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2017, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -// Package view contains support for collecting and exposing aggregates over stats. -// -// In order to collect measurements, views need to be defined and registered. -// A view allows recorded measurements to be filtered and aggregated. -// -// All recorded measurements can be grouped by a list of tags. -// -// OpenCensus provides several aggregation methods: Count, Distribution and Sum. -// -// Count only counts the number of measurement points recorded. -// Distribution provides statistical summary of the aggregated data by counting -// how many recorded measurements fall into each bucket. -// Sum adds up the measurement values. -// LastValue just keeps track of the most recently recorded measurement value. -// All aggregations are cumulative. -// -// Views can be registered and unregistered at any time during program execution. -// -// Libraries can define views but it is recommended that in most cases registering -// views be left up to applications. -// -// Exporting -// -// Collected and aggregated data can be exported to a metric collection -// backend by registering its exporter. -// -// Multiple exporters can be registered to upload the data to various -// different back ends. -package view // import "go.opencensus.io/stats/view" - -// TODO(acetechnologist): Add a link to the language independent OpenCensus -// spec when it is available. diff --git a/vendor/go.opencensus.io/stats/view/export.go b/vendor/go.opencensus.io/stats/view/export.go deleted file mode 100644 index 73ba11f..0000000 --- a/vendor/go.opencensus.io/stats/view/export.go +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2017, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package view - -// Exporter exports the collected records as view data. -// -// The ExportView method should return quickly; if an -// Exporter takes a significant amount of time to -// process a Data, that work should be done on another goroutine. -// -// It is safe to assume that ExportView will not be called concurrently from -// multiple goroutines. -// -// The Data should not be modified. -type Exporter interface { - ExportView(viewData *Data) -} - -// RegisterExporter registers an exporter. -// Collected data will be reported via all the -// registered exporters. Once you no longer -// want data to be exported, invoke UnregisterExporter -// with the previously registered exporter. -// -// Binaries can register exporters, libraries shouldn't register exporters. -func RegisterExporter(e Exporter) { - defaultWorker.RegisterExporter(e) -} - -// UnregisterExporter unregisters an exporter. -func UnregisterExporter(e Exporter) { - defaultWorker.UnregisterExporter(e) -} diff --git a/vendor/go.opencensus.io/stats/view/view.go b/vendor/go.opencensus.io/stats/view/view.go deleted file mode 100644 index 293b54e..0000000 --- a/vendor/go.opencensus.io/stats/view/view.go +++ /dev/null @@ -1,221 +0,0 @@ -// Copyright 2017, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -package view - -import ( - "bytes" - "errors" - "fmt" - "reflect" - "sort" - "sync/atomic" - "time" - - "go.opencensus.io/metric/metricdata" - "go.opencensus.io/stats" - "go.opencensus.io/tag" -) - -// View allows users to aggregate the recorded stats.Measurements. -// Views need to be passed to the Register function before data will be -// collected and sent to Exporters. -type View struct { - Name string // Name of View. Must be unique. If unset, will default to the name of the Measure. - Description string // Description is a human-readable description for this view. - - // TagKeys are the tag keys describing the grouping of this view. - // A single Row will be produced for each combination of associated tag values. - TagKeys []tag.Key - - // Measure is a stats.Measure to aggregate in this view. - Measure stats.Measure - - // Aggregation is the aggregation function to apply to the set of Measurements. - Aggregation *Aggregation -} - -// WithName returns a copy of the View with a new name. This is useful for -// renaming views to cope with limitations placed on metric names by various -// backends. -func (v *View) WithName(name string) *View { - vNew := *v - vNew.Name = name - return &vNew -} - -// same compares two views and returns true if they represent the same aggregation. -func (v *View) same(other *View) bool { - if v == other { - return true - } - if v == nil { - return false - } - return reflect.DeepEqual(v.Aggregation, other.Aggregation) && - v.Measure.Name() == other.Measure.Name() -} - -// ErrNegativeBucketBounds error returned if histogram contains negative bounds. -// -// Deprecated: this should not be public. -var ErrNegativeBucketBounds = errors.New("negative bucket bounds not supported") - -// canonicalize canonicalizes v by setting explicit -// defaults for Name and Description and sorting the TagKeys -func (v *View) canonicalize() error { - if v.Measure == nil { - return fmt.Errorf("cannot register view %q: measure not set", v.Name) - } - if v.Aggregation == nil { - return fmt.Errorf("cannot register view %q: aggregation not set", v.Name) - } - if v.Name == "" { - v.Name = v.Measure.Name() - } - if v.Description == "" { - v.Description = v.Measure.Description() - } - if err := checkViewName(v.Name); err != nil { - return err - } - sort.Slice(v.TagKeys, func(i, j int) bool { - return v.TagKeys[i].Name() < v.TagKeys[j].Name() - }) - sort.Float64s(v.Aggregation.Buckets) - for _, b := range v.Aggregation.Buckets { - if b < 0 { - return ErrNegativeBucketBounds - } - } - // drop 0 bucket silently. - v.Aggregation.Buckets = dropZeroBounds(v.Aggregation.Buckets...) - - return nil -} - -func dropZeroBounds(bounds ...float64) []float64 { - for i, bound := range bounds { - if bound > 0 { - return bounds[i:] - } - } - return []float64{} -} - -// viewInternal is the internal representation of a View. -type viewInternal struct { - view *View // view is the canonicalized View definition associated with this view. - subscribed uint32 // 1 if someone is subscribed and data need to be exported, use atomic to access - collector *collector - metricDescriptor *metricdata.Descriptor -} - -func newViewInternal(v *View) (*viewInternal, error) { - return &viewInternal{ - view: v, - collector: &collector{make(map[string]AggregationData), v.Aggregation}, - metricDescriptor: viewToMetricDescriptor(v), - }, nil -} - -func (v *viewInternal) subscribe() { - atomic.StoreUint32(&v.subscribed, 1) -} - -func (v *viewInternal) unsubscribe() { - atomic.StoreUint32(&v.subscribed, 0) -} - -// isSubscribed returns true if the view is exporting -// data by subscription. -func (v *viewInternal) isSubscribed() bool { - return atomic.LoadUint32(&v.subscribed) == 1 -} - -func (v *viewInternal) clearRows() { - v.collector.clearRows() -} - -func (v *viewInternal) collectedRows() []*Row { - return v.collector.collectedRows(v.view.TagKeys) -} - -func (v *viewInternal) addSample(m *tag.Map, val float64, attachments map[string]interface{}, t time.Time) { - if !v.isSubscribed() { - return - } - sig := string(encodeWithKeys(m, v.view.TagKeys)) - v.collector.addSample(sig, val, attachments, t) -} - -// A Data is a set of rows about usage of the single measure associated -// with the given view. Each row is specific to a unique set of tags. -type Data struct { - View *View - Start, End time.Time - Rows []*Row -} - -// Row is the collected value for a specific set of key value pairs a.k.a tags. -type Row struct { - Tags []tag.Tag - Data AggregationData -} - -func (r *Row) String() string { - var buffer bytes.Buffer - buffer.WriteString("{ ") - buffer.WriteString("{ ") - for _, t := range r.Tags { - buffer.WriteString(fmt.Sprintf("{%v %v}", t.Key.Name(), t.Value)) - } - buffer.WriteString(" }") - buffer.WriteString(fmt.Sprintf("%v", r.Data)) - buffer.WriteString(" }") - return buffer.String() -} - -// Equal returns true if both rows are equal. Tags are expected to be ordered -// by the key name. Even if both rows have the same tags but the tags appear in -// different orders it will return false. -func (r *Row) Equal(other *Row) bool { - if r == other { - return true - } - return reflect.DeepEqual(r.Tags, other.Tags) && r.Data.equal(other.Data) -} - -const maxNameLength = 255 - -// Returns true if the given string contains only printable characters. -func isPrintable(str string) bool { - for _, r := range str { - if !(r >= ' ' && r <= '~') { - return false - } - } - return true -} - -func checkViewName(name string) error { - if len(name) > maxNameLength { - return fmt.Errorf("view name cannot be larger than %v", maxNameLength) - } - if !isPrintable(name) { - return fmt.Errorf("view name needs to be an ASCII string") - } - return nil -} diff --git a/vendor/go.opencensus.io/stats/view/view_to_metric.go b/vendor/go.opencensus.io/stats/view/view_to_metric.go deleted file mode 100644 index 57d615e..0000000 --- a/vendor/go.opencensus.io/stats/view/view_to_metric.go +++ /dev/null @@ -1,147 +0,0 @@ -// Copyright 2019, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -package view - -import ( - "time" - - "go.opencensus.io/resource" - - "go.opencensus.io/metric/metricdata" - "go.opencensus.io/stats" -) - -func getUnit(unit string) metricdata.Unit { - switch unit { - case "1": - return metricdata.UnitDimensionless - case "ms": - return metricdata.UnitMilliseconds - case "By": - return metricdata.UnitBytes - } - return metricdata.UnitDimensionless -} - -func getType(v *View) metricdata.Type { - m := v.Measure - agg := v.Aggregation - - switch agg.Type { - case AggTypeSum: - switch m.(type) { - case *stats.Int64Measure: - return metricdata.TypeCumulativeInt64 - case *stats.Float64Measure: - return metricdata.TypeCumulativeFloat64 - default: - panic("unexpected measure type") - } - case AggTypeDistribution: - return metricdata.TypeCumulativeDistribution - case AggTypeLastValue: - switch m.(type) { - case *stats.Int64Measure: - return metricdata.TypeGaugeInt64 - case *stats.Float64Measure: - return metricdata.TypeGaugeFloat64 - default: - panic("unexpected measure type") - } - case AggTypeCount: - switch m.(type) { - case *stats.Int64Measure: - return metricdata.TypeCumulativeInt64 - case *stats.Float64Measure: - return metricdata.TypeCumulativeInt64 - default: - panic("unexpected measure type") - } - default: - panic("unexpected aggregation type") - } -} - -func getLabelKeys(v *View) []metricdata.LabelKey { - labelKeys := []metricdata.LabelKey{} - for _, k := range v.TagKeys { - labelKeys = append(labelKeys, metricdata.LabelKey{Key: k.Name()}) - } - return labelKeys -} - -func viewToMetricDescriptor(v *View) *metricdata.Descriptor { - return &metricdata.Descriptor{ - Name: v.Name, - Description: v.Description, - Unit: convertUnit(v), - Type: getType(v), - LabelKeys: getLabelKeys(v), - } -} - -func convertUnit(v *View) metricdata.Unit { - switch v.Aggregation.Type { - case AggTypeCount: - return metricdata.UnitDimensionless - default: - return getUnit(v.Measure.Unit()) - } -} - -func toLabelValues(row *Row, expectedKeys []metricdata.LabelKey) []metricdata.LabelValue { - labelValues := []metricdata.LabelValue{} - tagMap := make(map[string]string) - for _, tag := range row.Tags { - tagMap[tag.Key.Name()] = tag.Value - } - - for _, key := range expectedKeys { - if val, ok := tagMap[key.Key]; ok { - labelValues = append(labelValues, metricdata.NewLabelValue(val)) - } else { - labelValues = append(labelValues, metricdata.LabelValue{}) - } - } - return labelValues -} - -func rowToTimeseries(v *viewInternal, row *Row, now time.Time) *metricdata.TimeSeries { - return &metricdata.TimeSeries{ - Points: []metricdata.Point{row.Data.toPoint(v.metricDescriptor.Type, now)}, - LabelValues: toLabelValues(row, v.metricDescriptor.LabelKeys), - StartTime: row.Data.StartTime(), - } -} - -func viewToMetric(v *viewInternal, r *resource.Resource, now time.Time) *metricdata.Metric { - rows := v.collectedRows() - if len(rows) == 0 { - return nil - } - - ts := []*metricdata.TimeSeries{} - for _, row := range rows { - ts = append(ts, rowToTimeseries(v, row, now)) - } - - m := &metricdata.Metric{ - Descriptor: *v.metricDescriptor, - TimeSeries: ts, - Resource: r, - } - return m -} diff --git a/vendor/go.opencensus.io/stats/view/worker.go b/vendor/go.opencensus.io/stats/view/worker.go deleted file mode 100644 index 6e8d18b..0000000 --- a/vendor/go.opencensus.io/stats/view/worker.go +++ /dev/null @@ -1,405 +0,0 @@ -// Copyright 2017, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -package view - -import ( - "fmt" - "sync" - "time" - - "go.opencensus.io/resource" - - "go.opencensus.io/metric/metricdata" - "go.opencensus.io/metric/metricproducer" - "go.opencensus.io/stats" - "go.opencensus.io/stats/internal" - "go.opencensus.io/tag" -) - -func init() { - defaultWorker = NewMeter().(*worker) - go defaultWorker.start() - internal.DefaultRecorder = record -} - -type measureRef struct { - measure string - views map[*viewInternal]struct{} -} - -type worker struct { - measures map[string]*measureRef - views map[string]*viewInternal - viewStartTimes map[*viewInternal]time.Time - - timer *time.Ticker - c chan command - quit, done chan bool - mu sync.RWMutex - r *resource.Resource - - exportersMu sync.RWMutex - exporters map[Exporter]struct{} -} - -// Meter defines an interface which allows a single process to maintain -// multiple sets of metrics exports (intended for the advanced case where a -// single process wants to report metrics about multiple objects, such as -// multiple databases or HTTP services). -// -// Note that this is an advanced use case, and the static functions in this -// module should cover the common use cases. -type Meter interface { - stats.Recorder - // Find returns a registered view associated with this name. - // If no registered view is found, nil is returned. - Find(name string) *View - // Register begins collecting data for the given views. - // Once a view is registered, it reports data to the registered exporters. - Register(views ...*View) error - // Unregister the given views. Data will not longer be exported for these views - // after Unregister returns. - // It is not necessary to unregister from views you expect to collect for the - // duration of your program execution. - Unregister(views ...*View) - // SetReportingPeriod sets the interval between reporting aggregated views in - // the program. If duration is less than or equal to zero, it enables the - // default behavior. - // - // Note: each exporter makes different promises about what the lowest supported - // duration is. For example, the Stackdriver exporter recommends a value no - // lower than 1 minute. Consult each exporter per your needs. - SetReportingPeriod(time.Duration) - - // RegisterExporter registers an exporter. - // Collected data will be reported via all the - // registered exporters. Once you no longer - // want data to be exported, invoke UnregisterExporter - // with the previously registered exporter. - // - // Binaries can register exporters, libraries shouldn't register exporters. - RegisterExporter(Exporter) - // UnregisterExporter unregisters an exporter. - UnregisterExporter(Exporter) - // SetResource may be used to set the Resource associated with this registry. - // This is intended to be used in cases where a single process exports metrics - // for multiple Resources, typically in a multi-tenant situation. - SetResource(*resource.Resource) - - // Start causes the Meter to start processing Record calls and aggregating - // statistics as well as exporting data. - Start() - // Stop causes the Meter to stop processing calls and terminate data export. - Stop() - - // RetrieveData gets a snapshot of the data collected for the the view registered - // with the given name. It is intended for testing only. - RetrieveData(viewName string) ([]*Row, error) -} - -var _ Meter = (*worker)(nil) - -var defaultWorker *worker - -var defaultReportingDuration = 10 * time.Second - -// Find returns a registered view associated with this name. -// If no registered view is found, nil is returned. -func Find(name string) (v *View) { - return defaultWorker.Find(name) -} - -// Find returns a registered view associated with this name. -// If no registered view is found, nil is returned. -func (w *worker) Find(name string) (v *View) { - req := &getViewByNameReq{ - name: name, - c: make(chan *getViewByNameResp), - } - w.c <- req - resp := <-req.c - return resp.v -} - -// Register begins collecting data for the given views. -// Once a view is registered, it reports data to the registered exporters. -func Register(views ...*View) error { - return defaultWorker.Register(views...) -} - -// Register begins collecting data for the given views. -// Once a view is registered, it reports data to the registered exporters. -func (w *worker) Register(views ...*View) error { - req := ®isterViewReq{ - views: views, - err: make(chan error), - } - w.c <- req - return <-req.err -} - -// Unregister the given views. Data will not longer be exported for these views -// after Unregister returns. -// It is not necessary to unregister from views you expect to collect for the -// duration of your program execution. -func Unregister(views ...*View) { - defaultWorker.Unregister(views...) -} - -// Unregister the given views. Data will not longer be exported for these views -// after Unregister returns. -// It is not necessary to unregister from views you expect to collect for the -// duration of your program execution. -func (w *worker) Unregister(views ...*View) { - names := make([]string, len(views)) - for i := range views { - names[i] = views[i].Name - } - req := &unregisterFromViewReq{ - views: names, - done: make(chan struct{}), - } - w.c <- req - <-req.done -} - -// RetrieveData gets a snapshot of the data collected for the the view registered -// with the given name. It is intended for testing only. -func RetrieveData(viewName string) ([]*Row, error) { - return defaultWorker.RetrieveData(viewName) -} - -// RetrieveData gets a snapshot of the data collected for the the view registered -// with the given name. It is intended for testing only. -func (w *worker) RetrieveData(viewName string) ([]*Row, error) { - req := &retrieveDataReq{ - now: time.Now(), - v: viewName, - c: make(chan *retrieveDataResp), - } - w.c <- req - resp := <-req.c - return resp.rows, resp.err -} - -func record(tags *tag.Map, ms interface{}, attachments map[string]interface{}) { - defaultWorker.Record(tags, ms, attachments) -} - -// Record records a set of measurements ms associated with the given tags and attachments. -func (w *worker) Record(tags *tag.Map, ms interface{}, attachments map[string]interface{}) { - req := &recordReq{ - tm: tags, - ms: ms.([]stats.Measurement), - attachments: attachments, - t: time.Now(), - } - w.c <- req -} - -// SetReportingPeriod sets the interval between reporting aggregated views in -// the program. If duration is less than or equal to zero, it enables the -// default behavior. -// -// Note: each exporter makes different promises about what the lowest supported -// duration is. For example, the Stackdriver exporter recommends a value no -// lower than 1 minute. Consult each exporter per your needs. -func SetReportingPeriod(d time.Duration) { - defaultWorker.SetReportingPeriod(d) -} - -// SetReportingPeriod sets the interval between reporting aggregated views in -// the program. If duration is less than or equal to zero, it enables the -// default behavior. -// -// Note: each exporter makes different promises about what the lowest supported -// duration is. For example, the Stackdriver exporter recommends a value no -// lower than 1 minute. Consult each exporter per your needs. -func (w *worker) SetReportingPeriod(d time.Duration) { - // TODO(acetechnologist): ensure that the duration d is more than a certain - // value. e.g. 1s - req := &setReportingPeriodReq{ - d: d, - c: make(chan bool), - } - w.c <- req - <-req.c // don't return until the timer is set to the new duration. -} - -// NewMeter constructs a Meter instance. You should only need to use this if -// you need to separate out Measurement recordings and View aggregations within -// a single process. -func NewMeter() Meter { - return &worker{ - measures: make(map[string]*measureRef), - views: make(map[string]*viewInternal), - viewStartTimes: make(map[*viewInternal]time.Time), - timer: time.NewTicker(defaultReportingDuration), - c: make(chan command, 1024), - quit: make(chan bool), - done: make(chan bool), - - exporters: make(map[Exporter]struct{}), - } -} - -// SetResource associates all data collected by this Meter with the specified -// resource. This resource is reported when using metricexport.ReadAndExport; -// it is not provided when used with ExportView/RegisterExporter, because that -// interface does not provide a means for reporting the Resource. -func (w *worker) SetResource(r *resource.Resource) { - w.r = r -} - -func (w *worker) Start() { - go w.start() -} - -func (w *worker) start() { - prodMgr := metricproducer.GlobalManager() - prodMgr.AddProducer(w) - - for { - select { - case cmd := <-w.c: - cmd.handleCommand(w) - case <-w.timer.C: - w.reportUsage() - case <-w.quit: - w.timer.Stop() - close(w.c) - w.done <- true - return - } - } -} - -func (w *worker) Stop() { - prodMgr := metricproducer.GlobalManager() - prodMgr.DeleteProducer(w) - - w.quit <- true - <-w.done -} - -func (w *worker) getMeasureRef(name string) *measureRef { - if mr, ok := w.measures[name]; ok { - return mr - } - mr := &measureRef{ - measure: name, - views: make(map[*viewInternal]struct{}), - } - w.measures[name] = mr - return mr -} - -func (w *worker) tryRegisterView(v *View) (*viewInternal, error) { - w.mu.Lock() - defer w.mu.Unlock() - vi, err := newViewInternal(v) - if err != nil { - return nil, err - } - if x, ok := w.views[vi.view.Name]; ok { - if !x.view.same(vi.view) { - return nil, fmt.Errorf("cannot register view %q; a different view with the same name is already registered", v.Name) - } - - // the view is already registered so there is nothing to do and the - // command is considered successful. - return x, nil - } - w.views[vi.view.Name] = vi - w.viewStartTimes[vi] = time.Now() - ref := w.getMeasureRef(vi.view.Measure.Name()) - ref.views[vi] = struct{}{} - return vi, nil -} - -func (w *worker) unregisterView(v *viewInternal) { - w.mu.Lock() - defer w.mu.Unlock() - delete(w.views, v.view.Name) - delete(w.viewStartTimes, v) - if measure := w.measures[v.view.Measure.Name()]; measure != nil { - delete(measure.views, v) - } -} - -func (w *worker) reportView(v *viewInternal) { - if !v.isSubscribed() { - return - } - rows := v.collectedRows() - viewData := &Data{ - View: v.view, - Start: w.viewStartTimes[v], - End: time.Now(), - Rows: rows, - } - w.exportersMu.Lock() - defer w.exportersMu.Unlock() - for e := range w.exporters { - e.ExportView(viewData) - } -} - -func (w *worker) reportUsage() { - w.mu.Lock() - defer w.mu.Unlock() - for _, v := range w.views { - w.reportView(v) - } -} - -func (w *worker) toMetric(v *viewInternal, now time.Time) *metricdata.Metric { - if !v.isSubscribed() { - return nil - } - - return viewToMetric(v, w.r, now) -} - -// Read reads all view data and returns them as metrics. -// It is typically invoked by metric reader to export stats in metric format. -func (w *worker) Read() []*metricdata.Metric { - w.mu.Lock() - defer w.mu.Unlock() - now := time.Now() - metrics := make([]*metricdata.Metric, 0, len(w.views)) - for _, v := range w.views { - metric := w.toMetric(v, now) - if metric != nil { - metrics = append(metrics, metric) - } - } - return metrics -} - -func (w *worker) RegisterExporter(e Exporter) { - w.exportersMu.Lock() - defer w.exportersMu.Unlock() - - w.exporters[e] = struct{}{} -} - -func (w *worker) UnregisterExporter(e Exporter) { - w.exportersMu.Lock() - defer w.exportersMu.Unlock() - - delete(w.exporters, e) -} diff --git a/vendor/go.opencensus.io/stats/view/worker_commands.go b/vendor/go.opencensus.io/stats/view/worker_commands.go deleted file mode 100644 index 9ac4cc0..0000000 --- a/vendor/go.opencensus.io/stats/view/worker_commands.go +++ /dev/null @@ -1,186 +0,0 @@ -// Copyright 2017, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -package view - -import ( - "errors" - "fmt" - "strings" - "time" - - "go.opencensus.io/stats" - "go.opencensus.io/stats/internal" - "go.opencensus.io/tag" -) - -type command interface { - handleCommand(w *worker) -} - -// getViewByNameReq is the command to get a view given its name. -type getViewByNameReq struct { - name string - c chan *getViewByNameResp -} - -type getViewByNameResp struct { - v *View -} - -func (cmd *getViewByNameReq) handleCommand(w *worker) { - v := w.views[cmd.name] - if v == nil { - cmd.c <- &getViewByNameResp{nil} - return - } - cmd.c <- &getViewByNameResp{v.view} -} - -// registerViewReq is the command to register a view. -type registerViewReq struct { - views []*View - err chan error -} - -func (cmd *registerViewReq) handleCommand(w *worker) { - for _, v := range cmd.views { - if err := v.canonicalize(); err != nil { - cmd.err <- err - return - } - } - var errstr []string - for _, view := range cmd.views { - vi, err := w.tryRegisterView(view) - if err != nil { - errstr = append(errstr, fmt.Sprintf("%s: %v", view.Name, err)) - continue - } - internal.SubscriptionReporter(view.Measure.Name()) - vi.subscribe() - } - if len(errstr) > 0 { - cmd.err <- errors.New(strings.Join(errstr, "\n")) - } else { - cmd.err <- nil - } -} - -// unregisterFromViewReq is the command to unregister to a view. Has no -// impact on the data collection for client that are pulling data from the -// library. -type unregisterFromViewReq struct { - views []string - done chan struct{} -} - -func (cmd *unregisterFromViewReq) handleCommand(w *worker) { - for _, name := range cmd.views { - vi, ok := w.views[name] - if !ok { - continue - } - - // Report pending data for this view before removing it. - w.reportView(vi) - - vi.unsubscribe() - if !vi.isSubscribed() { - // this was the last subscription and view is not collecting anymore. - // The collected data can be cleared. - vi.clearRows() - } - w.unregisterView(vi) - } - cmd.done <- struct{}{} -} - -// retrieveDataReq is the command to retrieve data for a view. -type retrieveDataReq struct { - now time.Time - v string - c chan *retrieveDataResp -} - -type retrieveDataResp struct { - rows []*Row - err error -} - -func (cmd *retrieveDataReq) handleCommand(w *worker) { - w.mu.Lock() - defer w.mu.Unlock() - vi, ok := w.views[cmd.v] - if !ok { - cmd.c <- &retrieveDataResp{ - nil, - fmt.Errorf("cannot retrieve data; view %q is not registered", cmd.v), - } - return - } - - if !vi.isSubscribed() { - cmd.c <- &retrieveDataResp{ - nil, - fmt.Errorf("cannot retrieve data; view %q has no subscriptions or collection is not forcibly started", cmd.v), - } - return - } - cmd.c <- &retrieveDataResp{ - vi.collectedRows(), - nil, - } -} - -// recordReq is the command to record data related to multiple measures -// at once. -type recordReq struct { - tm *tag.Map - ms []stats.Measurement - attachments map[string]interface{} - t time.Time -} - -func (cmd *recordReq) handleCommand(w *worker) { - w.mu.Lock() - defer w.mu.Unlock() - for _, m := range cmd.ms { - if (m == stats.Measurement{}) { // not registered - continue - } - ref := w.getMeasureRef(m.Measure().Name()) - for v := range ref.views { - v.addSample(cmd.tm, m.Value(), cmd.attachments, cmd.t) - } - } -} - -// setReportingPeriodReq is the command to modify the duration between -// reporting the collected data to the registered clients. -type setReportingPeriodReq struct { - d time.Duration - c chan bool -} - -func (cmd *setReportingPeriodReq) handleCommand(w *worker) { - w.timer.Stop() - if cmd.d <= 0 { - w.timer = time.NewTicker(defaultReportingDuration) - } else { - w.timer = time.NewTicker(cmd.d) - } - cmd.c <- true -} diff --git a/vendor/go.opencensus.io/tag/context.go b/vendor/go.opencensus.io/tag/context.go deleted file mode 100644 index b27d1b2..0000000 --- a/vendor/go.opencensus.io/tag/context.go +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2017, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -package tag - -import ( - "context" -) - -// FromContext returns the tag map stored in the context. -func FromContext(ctx context.Context) *Map { - // The returned tag map shouldn't be mutated. - ts := ctx.Value(mapCtxKey) - if ts == nil { - return nil - } - return ts.(*Map) -} - -// NewContext creates a new context with the given tag map. -// To propagate a tag map to downstream methods and downstream RPCs, add a tag map -// to the current context. NewContext will return a copy of the current context, -// and put the tag map into the returned one. -// If there is already a tag map in the current context, it will be replaced with m. -func NewContext(ctx context.Context, m *Map) context.Context { - return context.WithValue(ctx, mapCtxKey, m) -} - -type ctxKey struct{} - -var mapCtxKey = ctxKey{} diff --git a/vendor/go.opencensus.io/tag/doc.go b/vendor/go.opencensus.io/tag/doc.go deleted file mode 100644 index da16b74..0000000 --- a/vendor/go.opencensus.io/tag/doc.go +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2017, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -/* -Package tag contains OpenCensus tags. - -Tags are key-value pairs. Tags provide additional cardinality to -the OpenCensus instrumentation data. - -Tags can be propagated on the wire and in the same -process via context.Context. Encode and Decode should be -used to represent tags into their binary propagation form. -*/ -package tag // import "go.opencensus.io/tag" diff --git a/vendor/go.opencensus.io/tag/key.go b/vendor/go.opencensus.io/tag/key.go deleted file mode 100644 index 71ec913..0000000 --- a/vendor/go.opencensus.io/tag/key.go +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2017, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -package tag - -// Key represents a tag key. -type Key struct { - name string -} - -// NewKey creates or retrieves a string key identified by name. -// Calling NewKey more than once with the same name returns the same key. -func NewKey(name string) (Key, error) { - if !checkKeyName(name) { - return Key{}, errInvalidKeyName - } - return Key{name: name}, nil -} - -// MustNewKey returns a key with the given name, and panics if name is an invalid key name. -func MustNewKey(name string) Key { - k, err := NewKey(name) - if err != nil { - panic(err) - } - return k -} - -// Name returns the name of the key. -func (k Key) Name() string { - return k.name -} diff --git a/vendor/go.opencensus.io/tag/map.go b/vendor/go.opencensus.io/tag/map.go deleted file mode 100644 index 0272ef8..0000000 --- a/vendor/go.opencensus.io/tag/map.go +++ /dev/null @@ -1,229 +0,0 @@ -// Copyright 2017, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -package tag - -import ( - "bytes" - "context" - "fmt" - "sort" -) - -// Tag is a key value pair that can be propagated on wire. -type Tag struct { - Key Key - Value string -} - -type tagContent struct { - value string - m metadatas -} - -// Map is a map of tags. Use New to create a context containing -// a new Map. -type Map struct { - m map[Key]tagContent -} - -// Value returns the value for the key if a value for the key exists. -func (m *Map) Value(k Key) (string, bool) { - if m == nil { - return "", false - } - v, ok := m.m[k] - return v.value, ok -} - -func (m *Map) String() string { - if m == nil { - return "nil" - } - keys := make([]Key, 0, len(m.m)) - for k := range m.m { - keys = append(keys, k) - } - sort.Slice(keys, func(i, j int) bool { return keys[i].Name() < keys[j].Name() }) - - var buffer bytes.Buffer - buffer.WriteString("{ ") - for _, k := range keys { - buffer.WriteString(fmt.Sprintf("{%v %v}", k.name, m.m[k])) - } - buffer.WriteString(" }") - return buffer.String() -} - -func (m *Map) insert(k Key, v string, md metadatas) { - if _, ok := m.m[k]; ok { - return - } - m.m[k] = tagContent{value: v, m: md} -} - -func (m *Map) update(k Key, v string, md metadatas) { - if _, ok := m.m[k]; ok { - m.m[k] = tagContent{value: v, m: md} - } -} - -func (m *Map) upsert(k Key, v string, md metadatas) { - m.m[k] = tagContent{value: v, m: md} -} - -func (m *Map) delete(k Key) { - delete(m.m, k) -} - -func newMap() *Map { - return &Map{m: make(map[Key]tagContent)} -} - -// Mutator modifies a tag map. -type Mutator interface { - Mutate(t *Map) (*Map, error) -} - -// Insert returns a mutator that inserts a -// value associated with k. If k already exists in the tag map, -// mutator doesn't update the value. -// Metadata applies metadata to the tag. It is optional. -// Metadatas are applied in the order in which it is provided. -// If more than one metadata updates the same attribute then -// the update from the last metadata prevails. -func Insert(k Key, v string, mds ...Metadata) Mutator { - return &mutator{ - fn: func(m *Map) (*Map, error) { - if !checkValue(v) { - return nil, errInvalidValue - } - m.insert(k, v, createMetadatas(mds...)) - return m, nil - }, - } -} - -// Update returns a mutator that updates the -// value of the tag associated with k with v. If k doesn't -// exists in the tag map, the mutator doesn't insert the value. -// Metadata applies metadata to the tag. It is optional. -// Metadatas are applied in the order in which it is provided. -// If more than one metadata updates the same attribute then -// the update from the last metadata prevails. -func Update(k Key, v string, mds ...Metadata) Mutator { - return &mutator{ - fn: func(m *Map) (*Map, error) { - if !checkValue(v) { - return nil, errInvalidValue - } - m.update(k, v, createMetadatas(mds...)) - return m, nil - }, - } -} - -// Upsert returns a mutator that upserts the -// value of the tag associated with k with v. It inserts the -// value if k doesn't exist already. It mutates the value -// if k already exists. -// Metadata applies metadata to the tag. It is optional. -// Metadatas are applied in the order in which it is provided. -// If more than one metadata updates the same attribute then -// the update from the last metadata prevails. -func Upsert(k Key, v string, mds ...Metadata) Mutator { - return &mutator{ - fn: func(m *Map) (*Map, error) { - if !checkValue(v) { - return nil, errInvalidValue - } - m.upsert(k, v, createMetadatas(mds...)) - return m, nil - }, - } -} - -func createMetadatas(mds ...Metadata) metadatas { - var metas metadatas - if len(mds) > 0 { - for _, md := range mds { - if md != nil { - md(&metas) - } - } - } else { - WithTTL(TTLUnlimitedPropagation)(&metas) - } - return metas - -} - -// Delete returns a mutator that deletes -// the value associated with k. -func Delete(k Key) Mutator { - return &mutator{ - fn: func(m *Map) (*Map, error) { - m.delete(k) - return m, nil - }, - } -} - -// New returns a new context that contains a tag map -// originated from the incoming context and modified -// with the provided mutators. -func New(ctx context.Context, mutator ...Mutator) (context.Context, error) { - m := newMap() - orig := FromContext(ctx) - if orig != nil { - for k, v := range orig.m { - if !checkKeyName(k.Name()) { - return ctx, fmt.Errorf("key:%q: %v", k, errInvalidKeyName) - } - if !checkValue(v.value) { - return ctx, fmt.Errorf("key:%q value:%q: %v", k.Name(), v, errInvalidValue) - } - m.insert(k, v.value, v.m) - } - } - var err error - for _, mod := range mutator { - m, err = mod.Mutate(m) - if err != nil { - return ctx, err - } - } - return NewContext(ctx, m), nil -} - -// Do is similar to pprof.Do: a convenience for installing the tags -// from the context as Go profiler labels. This allows you to -// correlated runtime profiling with stats. -// -// It converts the key/values from the given map to Go profiler labels -// and calls pprof.Do. -// -// Do is going to do nothing if your Go version is below 1.9. -func Do(ctx context.Context, f func(ctx context.Context)) { - do(ctx, f) -} - -type mutator struct { - fn func(t *Map) (*Map, error) -} - -func (m *mutator) Mutate(t *Map) (*Map, error) { - return m.fn(t) -} diff --git a/vendor/go.opencensus.io/tag/map_codec.go b/vendor/go.opencensus.io/tag/map_codec.go deleted file mode 100644 index c242e69..0000000 --- a/vendor/go.opencensus.io/tag/map_codec.go +++ /dev/null @@ -1,239 +0,0 @@ -// Copyright 2017, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -package tag - -import ( - "encoding/binary" - "fmt" -) - -// KeyType defines the types of keys allowed. Currently only keyTypeString is -// supported. -type keyType byte - -const ( - keyTypeString keyType = iota - keyTypeInt64 - keyTypeTrue - keyTypeFalse - - tagsVersionID = byte(0) -) - -type encoderGRPC struct { - buf []byte - writeIdx, readIdx int -} - -// writeKeyString writes the fieldID '0' followed by the key string and value -// string. -func (eg *encoderGRPC) writeTagString(k, v string) { - eg.writeByte(byte(keyTypeString)) - eg.writeStringWithVarintLen(k) - eg.writeStringWithVarintLen(v) -} - -func (eg *encoderGRPC) writeTagUint64(k string, i uint64) { - eg.writeByte(byte(keyTypeInt64)) - eg.writeStringWithVarintLen(k) - eg.writeUint64(i) -} - -func (eg *encoderGRPC) writeTagTrue(k string) { - eg.writeByte(byte(keyTypeTrue)) - eg.writeStringWithVarintLen(k) -} - -func (eg *encoderGRPC) writeTagFalse(k string) { - eg.writeByte(byte(keyTypeFalse)) - eg.writeStringWithVarintLen(k) -} - -func (eg *encoderGRPC) writeBytesWithVarintLen(bytes []byte) { - length := len(bytes) - - eg.growIfRequired(binary.MaxVarintLen64 + length) - eg.writeIdx += binary.PutUvarint(eg.buf[eg.writeIdx:], uint64(length)) - copy(eg.buf[eg.writeIdx:], bytes) - eg.writeIdx += length -} - -func (eg *encoderGRPC) writeStringWithVarintLen(s string) { - length := len(s) - - eg.growIfRequired(binary.MaxVarintLen64 + length) - eg.writeIdx += binary.PutUvarint(eg.buf[eg.writeIdx:], uint64(length)) - copy(eg.buf[eg.writeIdx:], s) - eg.writeIdx += length -} - -func (eg *encoderGRPC) writeByte(v byte) { - eg.growIfRequired(1) - eg.buf[eg.writeIdx] = v - eg.writeIdx++ -} - -func (eg *encoderGRPC) writeUint32(i uint32) { - eg.growIfRequired(4) - binary.LittleEndian.PutUint32(eg.buf[eg.writeIdx:], i) - eg.writeIdx += 4 -} - -func (eg *encoderGRPC) writeUint64(i uint64) { - eg.growIfRequired(8) - binary.LittleEndian.PutUint64(eg.buf[eg.writeIdx:], i) - eg.writeIdx += 8 -} - -func (eg *encoderGRPC) readByte() byte { - b := eg.buf[eg.readIdx] - eg.readIdx++ - return b -} - -func (eg *encoderGRPC) readUint32() uint32 { - i := binary.LittleEndian.Uint32(eg.buf[eg.readIdx:]) - eg.readIdx += 4 - return i -} - -func (eg *encoderGRPC) readUint64() uint64 { - i := binary.LittleEndian.Uint64(eg.buf[eg.readIdx:]) - eg.readIdx += 8 - return i -} - -func (eg *encoderGRPC) readBytesWithVarintLen() ([]byte, error) { - if eg.readEnded() { - return nil, fmt.Errorf("unexpected end while readBytesWithVarintLen '%x' starting at idx '%v'", eg.buf, eg.readIdx) - } - length, valueStart := binary.Uvarint(eg.buf[eg.readIdx:]) - if valueStart <= 0 { - return nil, fmt.Errorf("unexpected end while readBytesWithVarintLen '%x' starting at idx '%v'", eg.buf, eg.readIdx) - } - - valueStart += eg.readIdx - valueEnd := valueStart + int(length) - if valueEnd > len(eg.buf) { - return nil, fmt.Errorf("malformed encoding: length:%v, upper:%v, maxLength:%v", length, valueEnd, len(eg.buf)) - } - - eg.readIdx = valueEnd - return eg.buf[valueStart:valueEnd], nil -} - -func (eg *encoderGRPC) readStringWithVarintLen() (string, error) { - bytes, err := eg.readBytesWithVarintLen() - if err != nil { - return "", err - } - return string(bytes), nil -} - -func (eg *encoderGRPC) growIfRequired(expected int) { - if len(eg.buf)-eg.writeIdx < expected { - tmp := make([]byte, 2*(len(eg.buf)+1)+expected) - copy(tmp, eg.buf) - eg.buf = tmp - } -} - -func (eg *encoderGRPC) readEnded() bool { - return eg.readIdx >= len(eg.buf) -} - -func (eg *encoderGRPC) bytes() []byte { - return eg.buf[:eg.writeIdx] -} - -// Encode encodes the tag map into a []byte. It is useful to propagate -// the tag maps on wire in binary format. -func Encode(m *Map) []byte { - if m == nil { - return nil - } - eg := &encoderGRPC{ - buf: make([]byte, len(m.m)), - } - eg.writeByte(tagsVersionID) - for k, v := range m.m { - if v.m.ttl.ttl == valueTTLUnlimitedPropagation { - eg.writeByte(byte(keyTypeString)) - eg.writeStringWithVarintLen(k.name) - eg.writeBytesWithVarintLen([]byte(v.value)) - } - } - return eg.bytes() -} - -// Decode decodes the given []byte into a tag map. -func Decode(bytes []byte) (*Map, error) { - ts := newMap() - err := DecodeEach(bytes, ts.upsert) - if err != nil { - // no partial failures - return nil, err - } - return ts, nil -} - -// DecodeEach decodes the given serialized tag map, calling handler for each -// tag key and value decoded. -func DecodeEach(bytes []byte, fn func(key Key, val string, md metadatas)) error { - eg := &encoderGRPC{ - buf: bytes, - } - if len(eg.buf) == 0 { - return nil - } - - version := eg.readByte() - if version > tagsVersionID { - return fmt.Errorf("cannot decode: unsupported version: %q; supports only up to: %q", version, tagsVersionID) - } - - for !eg.readEnded() { - typ := keyType(eg.readByte()) - - if typ != keyTypeString { - return fmt.Errorf("cannot decode: invalid key type: %q", typ) - } - - k, err := eg.readBytesWithVarintLen() - if err != nil { - return err - } - - v, err := eg.readBytesWithVarintLen() - if err != nil { - return err - } - - key, err := NewKey(string(k)) - if err != nil { - return err - } - val := string(v) - if !checkValue(val) { - return errInvalidValue - } - fn(key, val, createMetadatas(WithTTL(TTLUnlimitedPropagation))) - if err != nil { - return err - } - } - return nil -} diff --git a/vendor/go.opencensus.io/tag/metadata.go b/vendor/go.opencensus.io/tag/metadata.go deleted file mode 100644 index 6571a58..0000000 --- a/vendor/go.opencensus.io/tag/metadata.go +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2019, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -package tag - -const ( - // valueTTLNoPropagation prevents tag from propagating. - valueTTLNoPropagation = 0 - - // valueTTLUnlimitedPropagation allows tag to propagate without any limits on number of hops. - valueTTLUnlimitedPropagation = -1 -) - -// TTL is metadata that specifies number of hops a tag can propagate. -// Details about TTL metadata is specified at https://github.com/census-instrumentation/opencensus-specs/blob/master/tags/TagMap.md#tagmetadata -type TTL struct { - ttl int -} - -var ( - // TTLUnlimitedPropagation is TTL metadata that allows tag to propagate without any limits on number of hops. - TTLUnlimitedPropagation = TTL{ttl: valueTTLUnlimitedPropagation} - - // TTLNoPropagation is TTL metadata that prevents tag from propagating. - TTLNoPropagation = TTL{ttl: valueTTLNoPropagation} -) - -type metadatas struct { - ttl TTL -} - -// Metadata applies metadatas specified by the function. -type Metadata func(*metadatas) - -// WithTTL applies metadata with provided ttl. -func WithTTL(ttl TTL) Metadata { - return func(m *metadatas) { - m.ttl = ttl - } -} diff --git a/vendor/go.opencensus.io/tag/profile_19.go b/vendor/go.opencensus.io/tag/profile_19.go deleted file mode 100644 index b34d95e..0000000 --- a/vendor/go.opencensus.io/tag/profile_19.go +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2018, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// +build go1.9 - -package tag - -import ( - "context" - "runtime/pprof" -) - -func do(ctx context.Context, f func(ctx context.Context)) { - m := FromContext(ctx) - keyvals := make([]string, 0, 2*len(m.m)) - for k, v := range m.m { - keyvals = append(keyvals, k.Name(), v.value) - } - pprof.Do(ctx, pprof.Labels(keyvals...), f) -} diff --git a/vendor/go.opencensus.io/tag/profile_not19.go b/vendor/go.opencensus.io/tag/profile_not19.go deleted file mode 100644 index 83adbce..0000000 --- a/vendor/go.opencensus.io/tag/profile_not19.go +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2018, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// +build !go1.9 - -package tag - -import "context" - -func do(ctx context.Context, f func(ctx context.Context)) { - f(ctx) -} diff --git a/vendor/go.opencensus.io/tag/validate.go b/vendor/go.opencensus.io/tag/validate.go deleted file mode 100644 index 0939fc6..0000000 --- a/vendor/go.opencensus.io/tag/validate.go +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2017, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package tag - -import "errors" - -const ( - maxKeyLength = 255 - - // valid are restricted to US-ASCII subset (range 0x20 (' ') to 0x7e ('~')). - validKeyValueMin = 32 - validKeyValueMax = 126 -) - -var ( - errInvalidKeyName = errors.New("invalid key name: only ASCII characters accepted; max length must be 255 characters") - errInvalidValue = errors.New("invalid value: only ASCII characters accepted; max length must be 255 characters") -) - -func checkKeyName(name string) bool { - if len(name) == 0 { - return false - } - if len(name) > maxKeyLength { - return false - } - return isASCII(name) -} - -func isASCII(s string) bool { - for _, c := range s { - if (c < validKeyValueMin) || (c > validKeyValueMax) { - return false - } - } - return true -} - -func checkValue(v string) bool { - if len(v) > maxKeyLength { - return false - } - return isASCII(v) -} diff --git a/vendor/go.opencensus.io/trace/basetypes.go b/vendor/go.opencensus.io/trace/basetypes.go deleted file mode 100644 index c8e26ed..0000000 --- a/vendor/go.opencensus.io/trace/basetypes.go +++ /dev/null @@ -1,129 +0,0 @@ -// Copyright 2017, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package trace - -import ( - "fmt" - "time" -) - -type ( - // TraceID is a 16-byte identifier for a set of spans. - TraceID [16]byte - - // SpanID is an 8-byte identifier for a single span. - SpanID [8]byte -) - -func (t TraceID) String() string { - return fmt.Sprintf("%02x", t[:]) -} - -func (s SpanID) String() string { - return fmt.Sprintf("%02x", s[:]) -} - -// Annotation represents a text annotation with a set of attributes and a timestamp. -type Annotation struct { - Time time.Time - Message string - Attributes map[string]interface{} -} - -// Attribute represents a key-value pair on a span, link or annotation. -// Construct with one of: BoolAttribute, Int64Attribute, or StringAttribute. -type Attribute struct { - key string - value interface{} -} - -// Key returns the attribute's key -func (a *Attribute) Key() string { - return a.key -} - -// Value returns the attribute's value -func (a *Attribute) Value() interface{} { - return a.value -} - -// BoolAttribute returns a bool-valued attribute. -func BoolAttribute(key string, value bool) Attribute { - return Attribute{key: key, value: value} -} - -// Int64Attribute returns an int64-valued attribute. -func Int64Attribute(key string, value int64) Attribute { - return Attribute{key: key, value: value} -} - -// Float64Attribute returns a float64-valued attribute. -func Float64Attribute(key string, value float64) Attribute { - return Attribute{key: key, value: value} -} - -// StringAttribute returns a string-valued attribute. -func StringAttribute(key string, value string) Attribute { - return Attribute{key: key, value: value} -} - -// LinkType specifies the relationship between the span that had the link -// added, and the linked span. -type LinkType int32 - -// LinkType values. -const ( - LinkTypeUnspecified LinkType = iota // The relationship of the two spans is unknown. - LinkTypeChild // The linked span is a child of the current span. - LinkTypeParent // The linked span is the parent of the current span. -) - -// Link represents a reference from one span to another span. -type Link struct { - TraceID TraceID - SpanID SpanID - Type LinkType - // Attributes is a set of attributes on the link. - Attributes map[string]interface{} -} - -// MessageEventType specifies the type of message event. -type MessageEventType int32 - -// MessageEventType values. -const ( - MessageEventTypeUnspecified MessageEventType = iota // Unknown event type. - MessageEventTypeSent // Indicates a sent RPC message. - MessageEventTypeRecv // Indicates a received RPC message. -) - -// MessageEvent represents an event describing a message sent or received on the network. -type MessageEvent struct { - Time time.Time - EventType MessageEventType - MessageID int64 - UncompressedByteSize int64 - CompressedByteSize int64 -} - -// Status is the status of a Span. -type Status struct { - // Code is a status code. Zero indicates success. - // - // If Code will be propagated to Google APIs, it ideally should be a value from - // https://github.com/googleapis/googleapis/blob/master/google/rpc/code.proto . - Code int32 - Message string -} diff --git a/vendor/go.opencensus.io/trace/config.go b/vendor/go.opencensus.io/trace/config.go deleted file mode 100644 index 775f827..0000000 --- a/vendor/go.opencensus.io/trace/config.go +++ /dev/null @@ -1,86 +0,0 @@ -// Copyright 2018, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package trace - -import ( - "sync" - - "go.opencensus.io/trace/internal" -) - -// Config represents the global tracing configuration. -type Config struct { - // DefaultSampler is the default sampler used when creating new spans. - DefaultSampler Sampler - - // IDGenerator is for internal use only. - IDGenerator internal.IDGenerator - - // MaxAnnotationEventsPerSpan is max number of annotation events per span - MaxAnnotationEventsPerSpan int - - // MaxMessageEventsPerSpan is max number of message events per span - MaxMessageEventsPerSpan int - - // MaxAnnotationEventsPerSpan is max number of attributes per span - MaxAttributesPerSpan int - - // MaxLinksPerSpan is max number of links per span - MaxLinksPerSpan int -} - -var configWriteMu sync.Mutex - -const ( - // DefaultMaxAnnotationEventsPerSpan is default max number of annotation events per span - DefaultMaxAnnotationEventsPerSpan = 32 - - // DefaultMaxMessageEventsPerSpan is default max number of message events per span - DefaultMaxMessageEventsPerSpan = 128 - - // DefaultMaxAttributesPerSpan is default max number of attributes per span - DefaultMaxAttributesPerSpan = 32 - - // DefaultMaxLinksPerSpan is default max number of links per span - DefaultMaxLinksPerSpan = 32 -) - -// ApplyConfig applies changes to the global tracing configuration. -// -// Fields not provided in the given config are going to be preserved. -func ApplyConfig(cfg Config) { - configWriteMu.Lock() - defer configWriteMu.Unlock() - c := *config.Load().(*Config) - if cfg.DefaultSampler != nil { - c.DefaultSampler = cfg.DefaultSampler - } - if cfg.IDGenerator != nil { - c.IDGenerator = cfg.IDGenerator - } - if cfg.MaxAnnotationEventsPerSpan > 0 { - c.MaxAnnotationEventsPerSpan = cfg.MaxAnnotationEventsPerSpan - } - if cfg.MaxMessageEventsPerSpan > 0 { - c.MaxMessageEventsPerSpan = cfg.MaxMessageEventsPerSpan - } - if cfg.MaxAttributesPerSpan > 0 { - c.MaxAttributesPerSpan = cfg.MaxAttributesPerSpan - } - if cfg.MaxLinksPerSpan > 0 { - c.MaxLinksPerSpan = cfg.MaxLinksPerSpan - } - config.Store(&c) -} diff --git a/vendor/go.opencensus.io/trace/doc.go b/vendor/go.opencensus.io/trace/doc.go deleted file mode 100644 index 04b1ee4..0000000 --- a/vendor/go.opencensus.io/trace/doc.go +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2017, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/* -Package trace contains support for OpenCensus distributed tracing. - -The following assumes a basic familiarity with OpenCensus concepts. -See http://opencensus.io - - -Exporting Traces - -To export collected tracing data, register at least one exporter. You can use -one of the provided exporters or write your own. - - trace.RegisterExporter(exporter) - -By default, traces will be sampled relatively rarely. To change the sampling -frequency for your entire program, call ApplyConfig. Use a ProbabilitySampler -to sample a subset of traces, or use AlwaysSample to collect a trace on every run: - - trace.ApplyConfig(trace.Config{DefaultSampler: trace.AlwaysSample()}) - -Be careful about using trace.AlwaysSample in a production application with -significant traffic: a new trace will be started and exported for every request. - -Adding Spans to a Trace - -A trace consists of a tree of spans. In Go, the current span is carried in a -context.Context. - -It is common to want to capture all the activity of a function call in a span. For -this to work, the function must take a context.Context as a parameter. Add these two -lines to the top of the function: - - ctx, span := trace.StartSpan(ctx, "example.com/Run") - defer span.End() - -StartSpan will create a new top-level span if the context -doesn't contain another span, otherwise it will create a child span. -*/ -package trace // import "go.opencensus.io/trace" diff --git a/vendor/go.opencensus.io/trace/evictedqueue.go b/vendor/go.opencensus.io/trace/evictedqueue.go deleted file mode 100644 index ffc264f..0000000 --- a/vendor/go.opencensus.io/trace/evictedqueue.go +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2019, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package trace - -type evictedQueue struct { - queue []interface{} - capacity int - droppedCount int -} - -func newEvictedQueue(capacity int) *evictedQueue { - eq := &evictedQueue{ - capacity: capacity, - queue: make([]interface{}, 0), - } - - return eq -} - -func (eq *evictedQueue) add(value interface{}) { - if len(eq.queue) == eq.capacity { - eq.queue = eq.queue[1:] - eq.droppedCount++ - } - eq.queue = append(eq.queue, value) -} diff --git a/vendor/go.opencensus.io/trace/export.go b/vendor/go.opencensus.io/trace/export.go deleted file mode 100644 index e0d9a4b..0000000 --- a/vendor/go.opencensus.io/trace/export.go +++ /dev/null @@ -1,97 +0,0 @@ -// Copyright 2017, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package trace - -import ( - "sync" - "sync/atomic" - "time" -) - -// Exporter is a type for functions that receive sampled trace spans. -// -// The ExportSpan method should be safe for concurrent use and should return -// quickly; if an Exporter takes a significant amount of time to process a -// SpanData, that work should be done on another goroutine. -// -// The SpanData should not be modified, but a pointer to it can be kept. -type Exporter interface { - ExportSpan(s *SpanData) -} - -type exportersMap map[Exporter]struct{} - -var ( - exporterMu sync.Mutex - exporters atomic.Value -) - -// RegisterExporter adds to the list of Exporters that will receive sampled -// trace spans. -// -// Binaries can register exporters, libraries shouldn't register exporters. -func RegisterExporter(e Exporter) { - exporterMu.Lock() - new := make(exportersMap) - if old, ok := exporters.Load().(exportersMap); ok { - for k, v := range old { - new[k] = v - } - } - new[e] = struct{}{} - exporters.Store(new) - exporterMu.Unlock() -} - -// UnregisterExporter removes from the list of Exporters the Exporter that was -// registered with the given name. -func UnregisterExporter(e Exporter) { - exporterMu.Lock() - new := make(exportersMap) - if old, ok := exporters.Load().(exportersMap); ok { - for k, v := range old { - new[k] = v - } - } - delete(new, e) - exporters.Store(new) - exporterMu.Unlock() -} - -// SpanData contains all the information collected by a Span. -type SpanData struct { - SpanContext - ParentSpanID SpanID - SpanKind int - Name string - StartTime time.Time - // The wall clock time of EndTime will be adjusted to always be offset - // from StartTime by the duration of the span. - EndTime time.Time - // The values of Attributes each have type string, bool, or int64. - Attributes map[string]interface{} - Annotations []Annotation - MessageEvents []MessageEvent - Status - Links []Link - HasRemoteParent bool - DroppedAttributeCount int - DroppedAnnotationCount int - DroppedMessageEventCount int - DroppedLinkCount int - - // ChildSpanCount holds the number of child span created for this span. - ChildSpanCount int -} diff --git a/vendor/go.opencensus.io/trace/internal/internal.go b/vendor/go.opencensus.io/trace/internal/internal.go deleted file mode 100644 index 7e808d8..0000000 --- a/vendor/go.opencensus.io/trace/internal/internal.go +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2018, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Package internal provides trace internals. -package internal - -// IDGenerator allows custom generators for TraceId and SpanId. -type IDGenerator interface { - NewTraceID() [16]byte - NewSpanID() [8]byte -} diff --git a/vendor/go.opencensus.io/trace/lrumap.go b/vendor/go.opencensus.io/trace/lrumap.go deleted file mode 100644 index 908c249..0000000 --- a/vendor/go.opencensus.io/trace/lrumap.go +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2019, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package trace - -import ( - "github.com/golang/groupcache/lru" -) - -// A simple lru.Cache wrapper that tracks the keys of the current contents and -// the cumulative number of evicted items. -type lruMap struct { - cacheKeys map[lru.Key]bool - cache *lru.Cache - droppedCount int -} - -func newLruMap(size int) *lruMap { - lm := &lruMap{ - cacheKeys: make(map[lru.Key]bool), - cache: lru.New(size), - droppedCount: 0, - } - lm.cache.OnEvicted = func(key lru.Key, value interface{}) { - delete(lm.cacheKeys, key) - lm.droppedCount++ - } - return lm -} - -func (lm lruMap) len() int { - return lm.cache.Len() -} - -func (lm lruMap) keys() []interface{} { - keys := make([]interface{}, len(lm.cacheKeys)) - for k := range lm.cacheKeys { - keys = append(keys, k) - } - return keys -} - -func (lm *lruMap) add(key, value interface{}) { - lm.cacheKeys[lru.Key(key)] = true - lm.cache.Add(lru.Key(key), value) -} - -func (lm *lruMap) get(key interface{}) (interface{}, bool) { - return lm.cache.Get(key) -} diff --git a/vendor/go.opencensus.io/trace/propagation/propagation.go b/vendor/go.opencensus.io/trace/propagation/propagation.go deleted file mode 100644 index 1eb190a..0000000 --- a/vendor/go.opencensus.io/trace/propagation/propagation.go +++ /dev/null @@ -1,108 +0,0 @@ -// Copyright 2017, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Package propagation implements the binary trace context format. -package propagation // import "go.opencensus.io/trace/propagation" - -// TODO: link to external spec document. - -// BinaryFormat format: -// -// Binary value: -// version_id: 1 byte representing the version id. -// -// For version_id = 0: -// -// version_format: -// field_format: -// -// Fields: -// -// TraceId: (field_id = 0, len = 16, default = "0000000000000000") - 16-byte array representing the trace_id. -// SpanId: (field_id = 1, len = 8, default = "00000000") - 8-byte array representing the span_id. -// TraceOptions: (field_id = 2, len = 1, default = "0") - 1-byte array representing the trace_options. -// -// Fields MUST be encoded using the field id order (smaller to higher). -// -// Valid value example: -// -// {0, 0, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 1, 97, -// 98, 99, 100, 101, 102, 103, 104, 2, 1} -// -// version_id = 0; -// trace_id = {64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79} -// span_id = {97, 98, 99, 100, 101, 102, 103, 104}; -// trace_options = {1}; - -import ( - "net/http" - - "go.opencensus.io/trace" -) - -// Binary returns the binary format representation of a SpanContext. -// -// If sc is the zero value, Binary returns nil. -func Binary(sc trace.SpanContext) []byte { - if sc == (trace.SpanContext{}) { - return nil - } - var b [29]byte - copy(b[2:18], sc.TraceID[:]) - b[18] = 1 - copy(b[19:27], sc.SpanID[:]) - b[27] = 2 - b[28] = uint8(sc.TraceOptions) - return b[:] -} - -// FromBinary returns the SpanContext represented by b. -// -// If b has an unsupported version ID or contains no TraceID, FromBinary -// returns with ok==false. -func FromBinary(b []byte) (sc trace.SpanContext, ok bool) { - if len(b) == 0 || b[0] != 0 { - return trace.SpanContext{}, false - } - b = b[1:] - if len(b) >= 17 && b[0] == 0 { - copy(sc.TraceID[:], b[1:17]) - b = b[17:] - } else { - return trace.SpanContext{}, false - } - if len(b) >= 9 && b[0] == 1 { - copy(sc.SpanID[:], b[1:9]) - b = b[9:] - } - if len(b) >= 2 && b[0] == 2 { - sc.TraceOptions = trace.TraceOptions(b[1]) - } - return sc, true -} - -// HTTPFormat implementations propagate span contexts -// in HTTP requests. -// -// SpanContextFromRequest extracts a span context from incoming -// requests. -// -// SpanContextToRequest modifies the given request to include the given -// span context. -type HTTPFormat interface { - SpanContextFromRequest(req *http.Request) (sc trace.SpanContext, ok bool) - SpanContextToRequest(sc trace.SpanContext, req *http.Request) -} - -// TODO(jbd): Find a more representative but short name for HTTPFormat. diff --git a/vendor/go.opencensus.io/trace/sampling.go b/vendor/go.opencensus.io/trace/sampling.go deleted file mode 100644 index 71c10f9..0000000 --- a/vendor/go.opencensus.io/trace/sampling.go +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright 2017, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package trace - -import ( - "encoding/binary" -) - -const defaultSamplingProbability = 1e-4 - -// Sampler decides whether a trace should be sampled and exported. -type Sampler func(SamplingParameters) SamplingDecision - -// SamplingParameters contains the values passed to a Sampler. -type SamplingParameters struct { - ParentContext SpanContext - TraceID TraceID - SpanID SpanID - Name string - HasRemoteParent bool -} - -// SamplingDecision is the value returned by a Sampler. -type SamplingDecision struct { - Sample bool -} - -// ProbabilitySampler returns a Sampler that samples a given fraction of traces. -// -// It also samples spans whose parents are sampled. -func ProbabilitySampler(fraction float64) Sampler { - if !(fraction >= 0) { - fraction = 0 - } else if fraction >= 1 { - return AlwaysSample() - } - - traceIDUpperBound := uint64(fraction * (1 << 63)) - return Sampler(func(p SamplingParameters) SamplingDecision { - if p.ParentContext.IsSampled() { - return SamplingDecision{Sample: true} - } - x := binary.BigEndian.Uint64(p.TraceID[0:8]) >> 1 - return SamplingDecision{Sample: x < traceIDUpperBound} - }) -} - -// AlwaysSample returns a Sampler that samples every trace. -// Be careful about using this sampler in a production application with -// significant traffic: a new trace will be started and exported for every -// request. -func AlwaysSample() Sampler { - return func(p SamplingParameters) SamplingDecision { - return SamplingDecision{Sample: true} - } -} - -// NeverSample returns a Sampler that samples no traces. -func NeverSample() Sampler { - return func(p SamplingParameters) SamplingDecision { - return SamplingDecision{Sample: false} - } -} diff --git a/vendor/go.opencensus.io/trace/spanbucket.go b/vendor/go.opencensus.io/trace/spanbucket.go deleted file mode 100644 index fbabad3..0000000 --- a/vendor/go.opencensus.io/trace/spanbucket.go +++ /dev/null @@ -1,130 +0,0 @@ -// Copyright 2017, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package trace - -import ( - "time" -) - -// samplePeriod is the minimum time between accepting spans in a single bucket. -const samplePeriod = time.Second - -// defaultLatencies contains the default latency bucket bounds. -// TODO: consider defaults, make configurable -var defaultLatencies = [...]time.Duration{ - 10 * time.Microsecond, - 100 * time.Microsecond, - time.Millisecond, - 10 * time.Millisecond, - 100 * time.Millisecond, - time.Second, - 10 * time.Second, - time.Minute, -} - -// bucket is a container for a set of spans for a particular error code or latency range. -type bucket struct { - nextTime time.Time // next time we can accept a span - buffer []*SpanData // circular buffer of spans - nextIndex int // location next SpanData should be placed in buffer - overflow bool // whether the circular buffer has wrapped around -} - -func makeBucket(bufferSize int) bucket { - return bucket{ - buffer: make([]*SpanData, bufferSize), - } -} - -// add adds a span to the bucket, if nextTime has been reached. -func (b *bucket) add(s *SpanData) { - if s.EndTime.Before(b.nextTime) { - return - } - if len(b.buffer) == 0 { - return - } - b.nextTime = s.EndTime.Add(samplePeriod) - b.buffer[b.nextIndex] = s - b.nextIndex++ - if b.nextIndex == len(b.buffer) { - b.nextIndex = 0 - b.overflow = true - } -} - -// size returns the number of spans in the bucket. -func (b *bucket) size() int { - if b.overflow { - return len(b.buffer) - } - return b.nextIndex -} - -// span returns the ith span in the bucket. -func (b *bucket) span(i int) *SpanData { - if !b.overflow { - return b.buffer[i] - } - if i < len(b.buffer)-b.nextIndex { - return b.buffer[b.nextIndex+i] - } - return b.buffer[b.nextIndex+i-len(b.buffer)] -} - -// resize changes the size of the bucket to n, keeping up to n existing spans. -func (b *bucket) resize(n int) { - cur := b.size() - newBuffer := make([]*SpanData, n) - if cur < n { - for i := 0; i < cur; i++ { - newBuffer[i] = b.span(i) - } - b.buffer = newBuffer - b.nextIndex = cur - b.overflow = false - return - } - for i := 0; i < n; i++ { - newBuffer[i] = b.span(i + cur - n) - } - b.buffer = newBuffer - b.nextIndex = 0 - b.overflow = true -} - -// latencyBucket returns the appropriate bucket number for a given latency. -func latencyBucket(latency time.Duration) int { - i := 0 - for i < len(defaultLatencies) && latency >= defaultLatencies[i] { - i++ - } - return i -} - -// latencyBucketBounds returns the lower and upper bounds for a latency bucket -// number. -// -// The lower bound is inclusive, the upper bound is exclusive (except for the -// last bucket.) -func latencyBucketBounds(index int) (lower time.Duration, upper time.Duration) { - if index == 0 { - return 0, defaultLatencies[index] - } - if index == len(defaultLatencies) { - return defaultLatencies[index-1], 1<<63 - 1 - } - return defaultLatencies[index-1], defaultLatencies[index] -} diff --git a/vendor/go.opencensus.io/trace/spanstore.go b/vendor/go.opencensus.io/trace/spanstore.go deleted file mode 100644 index e601f76..0000000 --- a/vendor/go.opencensus.io/trace/spanstore.go +++ /dev/null @@ -1,308 +0,0 @@ -// Copyright 2017, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package trace - -import ( - "sync" - "time" - - "go.opencensus.io/internal" -) - -const ( - maxBucketSize = 100000 - defaultBucketSize = 10 -) - -var ( - ssmu sync.RWMutex // protects spanStores - spanStores = make(map[string]*spanStore) -) - -// This exists purely to avoid exposing internal methods used by z-Pages externally. -type internalOnly struct{} - -func init() { - //TODO(#412): remove - internal.Trace = &internalOnly{} -} - -// ReportActiveSpans returns the active spans for the given name. -func (i internalOnly) ReportActiveSpans(name string) []*SpanData { - s := spanStoreForName(name) - if s == nil { - return nil - } - var out []*SpanData - s.mu.Lock() - defer s.mu.Unlock() - for activeSpan := range s.active { - if s, ok := activeSpan.(*span); ok { - out = append(out, s.makeSpanData()) - } - } - return out -} - -// ReportSpansByError returns a sample of error spans. -// -// If code is nonzero, only spans with that status code are returned. -func (i internalOnly) ReportSpansByError(name string, code int32) []*SpanData { - s := spanStoreForName(name) - if s == nil { - return nil - } - var out []*SpanData - s.mu.Lock() - defer s.mu.Unlock() - if code != 0 { - if b, ok := s.errors[code]; ok { - for _, sd := range b.buffer { - if sd == nil { - break - } - out = append(out, sd) - } - } - } else { - for _, b := range s.errors { - for _, sd := range b.buffer { - if sd == nil { - break - } - out = append(out, sd) - } - } - } - return out -} - -// ConfigureBucketSizes sets the number of spans to keep per latency and error -// bucket for different span names. -func (i internalOnly) ConfigureBucketSizes(bcs []internal.BucketConfiguration) { - for _, bc := range bcs { - latencyBucketSize := bc.MaxRequestsSucceeded - if latencyBucketSize < 0 { - latencyBucketSize = 0 - } - if latencyBucketSize > maxBucketSize { - latencyBucketSize = maxBucketSize - } - errorBucketSize := bc.MaxRequestsErrors - if errorBucketSize < 0 { - errorBucketSize = 0 - } - if errorBucketSize > maxBucketSize { - errorBucketSize = maxBucketSize - } - spanStoreSetSize(bc.Name, latencyBucketSize, errorBucketSize) - } -} - -// ReportSpansPerMethod returns a summary of what spans are being stored for each span name. -func (i internalOnly) ReportSpansPerMethod() map[string]internal.PerMethodSummary { - out := make(map[string]internal.PerMethodSummary) - ssmu.RLock() - defer ssmu.RUnlock() - for name, s := range spanStores { - s.mu.Lock() - p := internal.PerMethodSummary{ - Active: len(s.active), - } - for code, b := range s.errors { - p.ErrorBuckets = append(p.ErrorBuckets, internal.ErrorBucketSummary{ - ErrorCode: code, - Size: b.size(), - }) - } - for i, b := range s.latency { - min, max := latencyBucketBounds(i) - p.LatencyBuckets = append(p.LatencyBuckets, internal.LatencyBucketSummary{ - MinLatency: min, - MaxLatency: max, - Size: b.size(), - }) - } - s.mu.Unlock() - out[name] = p - } - return out -} - -// ReportSpansByLatency returns a sample of successful spans. -// -// minLatency is the minimum latency of spans to be returned. -// maxLatency, if nonzero, is the maximum latency of spans to be returned. -func (i internalOnly) ReportSpansByLatency(name string, minLatency, maxLatency time.Duration) []*SpanData { - s := spanStoreForName(name) - if s == nil { - return nil - } - var out []*SpanData - s.mu.Lock() - defer s.mu.Unlock() - for i, b := range s.latency { - min, max := latencyBucketBounds(i) - if i+1 != len(s.latency) && max <= minLatency { - continue - } - if maxLatency != 0 && maxLatency < min { - continue - } - for _, sd := range b.buffer { - if sd == nil { - break - } - if minLatency != 0 || maxLatency != 0 { - d := sd.EndTime.Sub(sd.StartTime) - if d < minLatency { - continue - } - if maxLatency != 0 && d > maxLatency { - continue - } - } - out = append(out, sd) - } - } - return out -} - -// spanStore keeps track of spans stored for a particular span name. -// -// It contains all active spans; a sample of spans for failed requests, -// categorized by error code; and a sample of spans for successful requests, -// bucketed by latency. -type spanStore struct { - mu sync.Mutex // protects everything below. - active map[SpanInterface]struct{} - errors map[int32]*bucket - latency []bucket - maxSpansPerErrorBucket int -} - -// newSpanStore creates a span store. -func newSpanStore(name string, latencyBucketSize int, errorBucketSize int) *spanStore { - s := &spanStore{ - active: make(map[SpanInterface]struct{}), - latency: make([]bucket, len(defaultLatencies)+1), - maxSpansPerErrorBucket: errorBucketSize, - } - for i := range s.latency { - s.latency[i] = makeBucket(latencyBucketSize) - } - return s -} - -// spanStoreForName returns the spanStore for the given name. -// -// It returns nil if it doesn't exist. -func spanStoreForName(name string) *spanStore { - var s *spanStore - ssmu.RLock() - s, _ = spanStores[name] - ssmu.RUnlock() - return s -} - -// spanStoreForNameCreateIfNew returns the spanStore for the given name. -// -// It creates it if it didn't exist. -func spanStoreForNameCreateIfNew(name string) *spanStore { - ssmu.RLock() - s, ok := spanStores[name] - ssmu.RUnlock() - if ok { - return s - } - ssmu.Lock() - defer ssmu.Unlock() - s, ok = spanStores[name] - if ok { - return s - } - s = newSpanStore(name, defaultBucketSize, defaultBucketSize) - spanStores[name] = s - return s -} - -// spanStoreSetSize resizes the spanStore for the given name. -// -// It creates it if it didn't exist. -func spanStoreSetSize(name string, latencyBucketSize int, errorBucketSize int) { - ssmu.RLock() - s, ok := spanStores[name] - ssmu.RUnlock() - if ok { - s.resize(latencyBucketSize, errorBucketSize) - return - } - ssmu.Lock() - defer ssmu.Unlock() - s, ok = spanStores[name] - if ok { - s.resize(latencyBucketSize, errorBucketSize) - return - } - s = newSpanStore(name, latencyBucketSize, errorBucketSize) - spanStores[name] = s -} - -func (s *spanStore) resize(latencyBucketSize int, errorBucketSize int) { - s.mu.Lock() - for i := range s.latency { - s.latency[i].resize(latencyBucketSize) - } - for _, b := range s.errors { - b.resize(errorBucketSize) - } - s.maxSpansPerErrorBucket = errorBucketSize - s.mu.Unlock() -} - -// add adds a span to the active bucket of the spanStore. -func (s *spanStore) add(span SpanInterface) { - s.mu.Lock() - s.active[span] = struct{}{} - s.mu.Unlock() -} - -// finished removes a span from the active set, and adds a corresponding -// SpanData to a latency or error bucket. -func (s *spanStore) finished(span SpanInterface, sd *SpanData) { - latency := sd.EndTime.Sub(sd.StartTime) - if latency < 0 { - latency = 0 - } - code := sd.Status.Code - - s.mu.Lock() - delete(s.active, span) - if code == 0 { - s.latency[latencyBucket(latency)].add(sd) - } else { - if s.errors == nil { - s.errors = make(map[int32]*bucket) - } - if b := s.errors[code]; b != nil { - b.add(sd) - } else { - b := makeBucket(s.maxSpansPerErrorBucket) - s.errors[code] = &b - b.add(sd) - } - } - s.mu.Unlock() -} diff --git a/vendor/go.opencensus.io/trace/status_codes.go b/vendor/go.opencensus.io/trace/status_codes.go deleted file mode 100644 index ec60eff..0000000 --- a/vendor/go.opencensus.io/trace/status_codes.go +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2018, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package trace - -// Status codes for use with Span.SetStatus. These correspond to the status -// codes used by gRPC defined here: https://github.com/googleapis/googleapis/blob/master/google/rpc/code.proto -const ( - StatusCodeOK = 0 - StatusCodeCancelled = 1 - StatusCodeUnknown = 2 - StatusCodeInvalidArgument = 3 - StatusCodeDeadlineExceeded = 4 - StatusCodeNotFound = 5 - StatusCodeAlreadyExists = 6 - StatusCodePermissionDenied = 7 - StatusCodeResourceExhausted = 8 - StatusCodeFailedPrecondition = 9 - StatusCodeAborted = 10 - StatusCodeOutOfRange = 11 - StatusCodeUnimplemented = 12 - StatusCodeInternal = 13 - StatusCodeUnavailable = 14 - StatusCodeDataLoss = 15 - StatusCodeUnauthenticated = 16 -) diff --git a/vendor/go.opencensus.io/trace/trace.go b/vendor/go.opencensus.io/trace/trace.go deleted file mode 100644 index 861df9d..0000000 --- a/vendor/go.opencensus.io/trace/trace.go +++ /dev/null @@ -1,595 +0,0 @@ -// Copyright 2017, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package trace - -import ( - "context" - crand "crypto/rand" - "encoding/binary" - "fmt" - "math/rand" - "sync" - "sync/atomic" - "time" - - "go.opencensus.io/internal" - "go.opencensus.io/trace/tracestate" -) - -type tracer struct{} - -var _ Tracer = &tracer{} - -// Span represents a span of a trace. It has an associated SpanContext, and -// stores data accumulated while the span is active. -// -// Ideally users should interact with Spans by calling the functions in this -// package that take a Context parameter. -type span struct { - // data contains information recorded about the span. - // - // It will be non-nil if we are exporting the span or recording events for it. - // Otherwise, data is nil, and the Span is simply a carrier for the - // SpanContext, so that the trace ID is propagated. - data *SpanData - mu sync.Mutex // protects the contents of *data (but not the pointer value.) - spanContext SpanContext - - // lruAttributes are capped at configured limit. When the capacity is reached an oldest entry - // is removed to create room for a new entry. - lruAttributes *lruMap - - // annotations are stored in FIFO queue capped by configured limit. - annotations *evictedQueue - - // messageEvents are stored in FIFO queue capped by configured limit. - messageEvents *evictedQueue - - // links are stored in FIFO queue capped by configured limit. - links *evictedQueue - - // spanStore is the spanStore this span belongs to, if any, otherwise it is nil. - *spanStore - endOnce sync.Once - - executionTracerTaskEnd func() // ends the execution tracer span -} - -// IsRecordingEvents returns true if events are being recorded for this span. -// Use this check to avoid computing expensive annotations when they will never -// be used. -func (s *span) IsRecordingEvents() bool { - if s == nil { - return false - } - return s.data != nil -} - -// TraceOptions contains options associated with a trace span. -type TraceOptions uint32 - -// IsSampled returns true if the span will be exported. -func (sc SpanContext) IsSampled() bool { - return sc.TraceOptions.IsSampled() -} - -// setIsSampled sets the TraceOptions bit that determines whether the span will be exported. -func (sc *SpanContext) setIsSampled(sampled bool) { - if sampled { - sc.TraceOptions |= 1 - } else { - sc.TraceOptions &= ^TraceOptions(1) - } -} - -// IsSampled returns true if the span will be exported. -func (t TraceOptions) IsSampled() bool { - return t&1 == 1 -} - -// SpanContext contains the state that must propagate across process boundaries. -// -// SpanContext is not an implementation of context.Context. -// TODO: add reference to external Census docs for SpanContext. -type SpanContext struct { - TraceID TraceID - SpanID SpanID - TraceOptions TraceOptions - Tracestate *tracestate.Tracestate -} - -type contextKey struct{} - -// FromContext returns the Span stored in a context, or nil if there isn't one. -func (t *tracer) FromContext(ctx context.Context) *Span { - s, _ := ctx.Value(contextKey{}).(*Span) - return s -} - -// NewContext returns a new context with the given Span attached. -func (t *tracer) NewContext(parent context.Context, s *Span) context.Context { - return context.WithValue(parent, contextKey{}, s) -} - -// All available span kinds. Span kind must be either one of these values. -const ( - SpanKindUnspecified = iota - SpanKindServer - SpanKindClient -) - -// StartOptions contains options concerning how a span is started. -type StartOptions struct { - // Sampler to consult for this Span. If provided, it is always consulted. - // - // If not provided, then the behavior differs based on whether - // the parent of this Span is remote, local, or there is no parent. - // In the case of a remote parent or no parent, the - // default sampler (see Config) will be consulted. Otherwise, - // when there is a non-remote parent, no new sampling decision will be made: - // we will preserve the sampling of the parent. - Sampler Sampler - - // SpanKind represents the kind of a span. If none is set, - // SpanKindUnspecified is used. - SpanKind int -} - -// StartOption apply changes to StartOptions. -type StartOption func(*StartOptions) - -// WithSpanKind makes new spans to be created with the given kind. -func WithSpanKind(spanKind int) StartOption { - return func(o *StartOptions) { - o.SpanKind = spanKind - } -} - -// WithSampler makes new spans to be be created with a custom sampler. -// Otherwise, the global sampler is used. -func WithSampler(sampler Sampler) StartOption { - return func(o *StartOptions) { - o.Sampler = sampler - } -} - -// StartSpan starts a new child span of the current span in the context. If -// there is no span in the context, creates a new trace and span. -// -// Returned context contains the newly created span. You can use it to -// propagate the returned span in process. -func (t *tracer) StartSpan(ctx context.Context, name string, o ...StartOption) (context.Context, *Span) { - var opts StartOptions - var parent SpanContext - if p := t.FromContext(ctx); p != nil { - if ps, ok := p.internal.(*span); ok { - ps.addChild() - } - parent = p.SpanContext() - } - for _, op := range o { - op(&opts) - } - span := startSpanInternal(name, parent != SpanContext{}, parent, false, opts) - - ctx, end := startExecutionTracerTask(ctx, name) - span.executionTracerTaskEnd = end - extSpan := NewSpan(span) - return t.NewContext(ctx, extSpan), extSpan -} - -// StartSpanWithRemoteParent starts a new child span of the span from the given parent. -// -// If the incoming context contains a parent, it ignores. StartSpanWithRemoteParent is -// preferred for cases where the parent is propagated via an incoming request. -// -// Returned context contains the newly created span. You can use it to -// propagate the returned span in process. -func (t *tracer) StartSpanWithRemoteParent(ctx context.Context, name string, parent SpanContext, o ...StartOption) (context.Context, *Span) { - var opts StartOptions - for _, op := range o { - op(&opts) - } - span := startSpanInternal(name, parent != SpanContext{}, parent, true, opts) - ctx, end := startExecutionTracerTask(ctx, name) - span.executionTracerTaskEnd = end - extSpan := NewSpan(span) - return t.NewContext(ctx, extSpan), extSpan -} - -func startSpanInternal(name string, hasParent bool, parent SpanContext, remoteParent bool, o StartOptions) *span { - s := &span{} - s.spanContext = parent - - cfg := config.Load().(*Config) - if gen, ok := cfg.IDGenerator.(*defaultIDGenerator); ok { - // lazy initialization - gen.init() - } - - if !hasParent { - s.spanContext.TraceID = cfg.IDGenerator.NewTraceID() - } - s.spanContext.SpanID = cfg.IDGenerator.NewSpanID() - sampler := cfg.DefaultSampler - - if !hasParent || remoteParent || o.Sampler != nil { - // If this span is the child of a local span and no Sampler is set in the - // options, keep the parent's TraceOptions. - // - // Otherwise, consult the Sampler in the options if it is non-nil, otherwise - // the default sampler. - if o.Sampler != nil { - sampler = o.Sampler - } - s.spanContext.setIsSampled(sampler(SamplingParameters{ - ParentContext: parent, - TraceID: s.spanContext.TraceID, - SpanID: s.spanContext.SpanID, - Name: name, - HasRemoteParent: remoteParent}).Sample) - } - - if !internal.LocalSpanStoreEnabled && !s.spanContext.IsSampled() { - return s - } - - s.data = &SpanData{ - SpanContext: s.spanContext, - StartTime: time.Now(), - SpanKind: o.SpanKind, - Name: name, - HasRemoteParent: remoteParent, - } - s.lruAttributes = newLruMap(cfg.MaxAttributesPerSpan) - s.annotations = newEvictedQueue(cfg.MaxAnnotationEventsPerSpan) - s.messageEvents = newEvictedQueue(cfg.MaxMessageEventsPerSpan) - s.links = newEvictedQueue(cfg.MaxLinksPerSpan) - - if hasParent { - s.data.ParentSpanID = parent.SpanID - } - if internal.LocalSpanStoreEnabled { - var ss *spanStore - ss = spanStoreForNameCreateIfNew(name) - if ss != nil { - s.spanStore = ss - ss.add(s) - } - } - - return s -} - -// End ends the span. -func (s *span) End() { - if s == nil { - return - } - if s.executionTracerTaskEnd != nil { - s.executionTracerTaskEnd() - } - if !s.IsRecordingEvents() { - return - } - s.endOnce.Do(func() { - exp, _ := exporters.Load().(exportersMap) - mustExport := s.spanContext.IsSampled() && len(exp) > 0 - if s.spanStore != nil || mustExport { - sd := s.makeSpanData() - sd.EndTime = internal.MonotonicEndTime(sd.StartTime) - if s.spanStore != nil { - s.spanStore.finished(s, sd) - } - if mustExport { - for e := range exp { - e.ExportSpan(sd) - } - } - } - }) -} - -// makeSpanData produces a SpanData representing the current state of the Span. -// It requires that s.data is non-nil. -func (s *span) makeSpanData() *SpanData { - var sd SpanData - s.mu.Lock() - sd = *s.data - if s.lruAttributes.len() > 0 { - sd.Attributes = s.lruAttributesToAttributeMap() - sd.DroppedAttributeCount = s.lruAttributes.droppedCount - } - if len(s.annotations.queue) > 0 { - sd.Annotations = s.interfaceArrayToAnnotationArray() - sd.DroppedAnnotationCount = s.annotations.droppedCount - } - if len(s.messageEvents.queue) > 0 { - sd.MessageEvents = s.interfaceArrayToMessageEventArray() - sd.DroppedMessageEventCount = s.messageEvents.droppedCount - } - if len(s.links.queue) > 0 { - sd.Links = s.interfaceArrayToLinksArray() - sd.DroppedLinkCount = s.links.droppedCount - } - s.mu.Unlock() - return &sd -} - -// SpanContext returns the SpanContext of the span. -func (s *span) SpanContext() SpanContext { - if s == nil { - return SpanContext{} - } - return s.spanContext -} - -// SetName sets the name of the span, if it is recording events. -func (s *span) SetName(name string) { - if !s.IsRecordingEvents() { - return - } - s.mu.Lock() - s.data.Name = name - s.mu.Unlock() -} - -// SetStatus sets the status of the span, if it is recording events. -func (s *span) SetStatus(status Status) { - if !s.IsRecordingEvents() { - return - } - s.mu.Lock() - s.data.Status = status - s.mu.Unlock() -} - -func (s *span) interfaceArrayToLinksArray() []Link { - linksArr := make([]Link, 0, len(s.links.queue)) - for _, value := range s.links.queue { - linksArr = append(linksArr, value.(Link)) - } - return linksArr -} - -func (s *span) interfaceArrayToMessageEventArray() []MessageEvent { - messageEventArr := make([]MessageEvent, 0, len(s.messageEvents.queue)) - for _, value := range s.messageEvents.queue { - messageEventArr = append(messageEventArr, value.(MessageEvent)) - } - return messageEventArr -} - -func (s *span) interfaceArrayToAnnotationArray() []Annotation { - annotationArr := make([]Annotation, 0, len(s.annotations.queue)) - for _, value := range s.annotations.queue { - annotationArr = append(annotationArr, value.(Annotation)) - } - return annotationArr -} - -func (s *span) lruAttributesToAttributeMap() map[string]interface{} { - attributes := make(map[string]interface{}, s.lruAttributes.len()) - for _, key := range s.lruAttributes.keys() { - value, ok := s.lruAttributes.get(key) - if ok { - keyStr := key.(string) - attributes[keyStr] = value - } - } - return attributes -} - -func (s *span) copyToCappedAttributes(attributes []Attribute) { - for _, a := range attributes { - s.lruAttributes.add(a.key, a.value) - } -} - -func (s *span) addChild() { - if !s.IsRecordingEvents() { - return - } - s.mu.Lock() - s.data.ChildSpanCount++ - s.mu.Unlock() -} - -// AddAttributes sets attributes in the span. -// -// Existing attributes whose keys appear in the attributes parameter are overwritten. -func (s *span) AddAttributes(attributes ...Attribute) { - if !s.IsRecordingEvents() { - return - } - s.mu.Lock() - s.copyToCappedAttributes(attributes) - s.mu.Unlock() -} - -func (s *span) printStringInternal(attributes []Attribute, str string) { - now := time.Now() - var am map[string]interface{} - if len(attributes) != 0 { - am = make(map[string]interface{}, len(attributes)) - for _, attr := range attributes { - am[attr.key] = attr.value - } - } - s.mu.Lock() - s.annotations.add(Annotation{ - Time: now, - Message: str, - Attributes: am, - }) - s.mu.Unlock() -} - -// Annotate adds an annotation with attributes. -// Attributes can be nil. -func (s *span) Annotate(attributes []Attribute, str string) { - if !s.IsRecordingEvents() { - return - } - s.printStringInternal(attributes, str) -} - -// Annotatef adds an annotation with attributes. -func (s *span) Annotatef(attributes []Attribute, format string, a ...interface{}) { - if !s.IsRecordingEvents() { - return - } - s.printStringInternal(attributes, fmt.Sprintf(format, a...)) -} - -// AddMessageSendEvent adds a message send event to the span. -// -// messageID is an identifier for the message, which is recommended to be -// unique in this span and the same between the send event and the receive -// event (this allows to identify a message between the sender and receiver). -// For example, this could be a sequence id. -func (s *span) AddMessageSendEvent(messageID, uncompressedByteSize, compressedByteSize int64) { - if !s.IsRecordingEvents() { - return - } - now := time.Now() - s.mu.Lock() - s.messageEvents.add(MessageEvent{ - Time: now, - EventType: MessageEventTypeSent, - MessageID: messageID, - UncompressedByteSize: uncompressedByteSize, - CompressedByteSize: compressedByteSize, - }) - s.mu.Unlock() -} - -// AddMessageReceiveEvent adds a message receive event to the span. -// -// messageID is an identifier for the message, which is recommended to be -// unique in this span and the same between the send event and the receive -// event (this allows to identify a message between the sender and receiver). -// For example, this could be a sequence id. -func (s *span) AddMessageReceiveEvent(messageID, uncompressedByteSize, compressedByteSize int64) { - if !s.IsRecordingEvents() { - return - } - now := time.Now() - s.mu.Lock() - s.messageEvents.add(MessageEvent{ - Time: now, - EventType: MessageEventTypeRecv, - MessageID: messageID, - UncompressedByteSize: uncompressedByteSize, - CompressedByteSize: compressedByteSize, - }) - s.mu.Unlock() -} - -// AddLink adds a link to the span. -func (s *span) AddLink(l Link) { - if !s.IsRecordingEvents() { - return - } - s.mu.Lock() - s.links.add(l) - s.mu.Unlock() -} - -func (s *span) String() string { - if s == nil { - return "" - } - if s.data == nil { - return fmt.Sprintf("span %s", s.spanContext.SpanID) - } - s.mu.Lock() - str := fmt.Sprintf("span %s %q", s.spanContext.SpanID, s.data.Name) - s.mu.Unlock() - return str -} - -var config atomic.Value // access atomically - -func init() { - config.Store(&Config{ - DefaultSampler: ProbabilitySampler(defaultSamplingProbability), - IDGenerator: &defaultIDGenerator{}, - MaxAttributesPerSpan: DefaultMaxAttributesPerSpan, - MaxAnnotationEventsPerSpan: DefaultMaxAnnotationEventsPerSpan, - MaxMessageEventsPerSpan: DefaultMaxMessageEventsPerSpan, - MaxLinksPerSpan: DefaultMaxLinksPerSpan, - }) -} - -type defaultIDGenerator struct { - sync.Mutex - - // Please keep these as the first fields - // so that these 8 byte fields will be aligned on addresses - // divisible by 8, on both 32-bit and 64-bit machines when - // performing atomic increments and accesses. - // See: - // * https://github.com/census-instrumentation/opencensus-go/issues/587 - // * https://github.com/census-instrumentation/opencensus-go/issues/865 - // * https://golang.org/pkg/sync/atomic/#pkg-note-BUG - nextSpanID uint64 - spanIDInc uint64 - - traceIDAdd [2]uint64 - traceIDRand *rand.Rand - - initOnce sync.Once -} - -// init initializes the generator on the first call to avoid consuming entropy -// unnecessarily. -func (gen *defaultIDGenerator) init() { - gen.initOnce.Do(func() { - // initialize traceID and spanID generators. - var rngSeed int64 - for _, p := range []interface{}{ - &rngSeed, &gen.traceIDAdd, &gen.nextSpanID, &gen.spanIDInc, - } { - binary.Read(crand.Reader, binary.LittleEndian, p) - } - gen.traceIDRand = rand.New(rand.NewSource(rngSeed)) - gen.spanIDInc |= 1 - }) -} - -// NewSpanID returns a non-zero span ID from a randomly-chosen sequence. -func (gen *defaultIDGenerator) NewSpanID() [8]byte { - var id uint64 - for id == 0 { - id = atomic.AddUint64(&gen.nextSpanID, gen.spanIDInc) - } - var sid [8]byte - binary.LittleEndian.PutUint64(sid[:], id) - return sid -} - -// NewTraceID returns a non-zero trace ID from a randomly-chosen sequence. -// mu should be held while this function is called. -func (gen *defaultIDGenerator) NewTraceID() [16]byte { - var tid [16]byte - // Construct the trace ID from two outputs of traceIDRand, with a constant - // added to each half for additional entropy. - gen.Lock() - binary.LittleEndian.PutUint64(tid[0:8], gen.traceIDRand.Uint64()+gen.traceIDAdd[0]) - binary.LittleEndian.PutUint64(tid[8:16], gen.traceIDRand.Uint64()+gen.traceIDAdd[1]) - gen.Unlock() - return tid -} diff --git a/vendor/go.opencensus.io/trace/trace_api.go b/vendor/go.opencensus.io/trace/trace_api.go deleted file mode 100644 index 9e2c3a9..0000000 --- a/vendor/go.opencensus.io/trace/trace_api.go +++ /dev/null @@ -1,265 +0,0 @@ -// Copyright 2020, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package trace - -import ( - "context" -) - -// DefaultTracer is the tracer used when package-level exported functions are invoked. -var DefaultTracer Tracer = &tracer{} - -// Tracer can start spans and access context functions. -type Tracer interface { - - // StartSpan starts a new child span of the current span in the context. If - // there is no span in the context, creates a new trace and span. - // - // Returned context contains the newly created span. You can use it to - // propagate the returned span in process. - StartSpan(ctx context.Context, name string, o ...StartOption) (context.Context, *Span) - - // StartSpanWithRemoteParent starts a new child span of the span from the given parent. - // - // If the incoming context contains a parent, it ignores. StartSpanWithRemoteParent is - // preferred for cases where the parent is propagated via an incoming request. - // - // Returned context contains the newly created span. You can use it to - // propagate the returned span in process. - StartSpanWithRemoteParent(ctx context.Context, name string, parent SpanContext, o ...StartOption) (context.Context, *Span) - - // FromContext returns the Span stored in a context, or nil if there isn't one. - FromContext(ctx context.Context) *Span - - // NewContext returns a new context with the given Span attached. - NewContext(parent context.Context, s *Span) context.Context -} - -// StartSpan starts a new child span of the current span in the context. If -// there is no span in the context, creates a new trace and span. -// -// Returned context contains the newly created span. You can use it to -// propagate the returned span in process. -func StartSpan(ctx context.Context, name string, o ...StartOption) (context.Context, *Span) { - return DefaultTracer.StartSpan(ctx, name, o...) -} - -// StartSpanWithRemoteParent starts a new child span of the span from the given parent. -// -// If the incoming context contains a parent, it ignores. StartSpanWithRemoteParent is -// preferred for cases where the parent is propagated via an incoming request. -// -// Returned context contains the newly created span. You can use it to -// propagate the returned span in process. -func StartSpanWithRemoteParent(ctx context.Context, name string, parent SpanContext, o ...StartOption) (context.Context, *Span) { - return DefaultTracer.StartSpanWithRemoteParent(ctx, name, parent, o...) -} - -// FromContext returns the Span stored in a context, or a Span that is not -// recording events if there isn't one. -func FromContext(ctx context.Context) *Span { - return DefaultTracer.FromContext(ctx) -} - -// NewContext returns a new context with the given Span attached. -func NewContext(parent context.Context, s *Span) context.Context { - return DefaultTracer.NewContext(parent, s) -} - -// SpanInterface represents a span of a trace. It has an associated SpanContext, and -// stores data accumulated while the span is active. -// -// Ideally users should interact with Spans by calling the functions in this -// package that take a Context parameter. -type SpanInterface interface { - - // IsRecordingEvents returns true if events are being recorded for this span. - // Use this check to avoid computing expensive annotations when they will never - // be used. - IsRecordingEvents() bool - - // End ends the span. - End() - - // SpanContext returns the SpanContext of the span. - SpanContext() SpanContext - - // SetName sets the name of the span, if it is recording events. - SetName(name string) - - // SetStatus sets the status of the span, if it is recording events. - SetStatus(status Status) - - // AddAttributes sets attributes in the span. - // - // Existing attributes whose keys appear in the attributes parameter are overwritten. - AddAttributes(attributes ...Attribute) - - // Annotate adds an annotation with attributes. - // Attributes can be nil. - Annotate(attributes []Attribute, str string) - - // Annotatef adds an annotation with attributes. - Annotatef(attributes []Attribute, format string, a ...interface{}) - - // AddMessageSendEvent adds a message send event to the span. - // - // messageID is an identifier for the message, which is recommended to be - // unique in this span and the same between the send event and the receive - // event (this allows to identify a message between the sender and receiver). - // For example, this could be a sequence id. - AddMessageSendEvent(messageID, uncompressedByteSize, compressedByteSize int64) - - // AddMessageReceiveEvent adds a message receive event to the span. - // - // messageID is an identifier for the message, which is recommended to be - // unique in this span and the same between the send event and the receive - // event (this allows to identify a message between the sender and receiver). - // For example, this could be a sequence id. - AddMessageReceiveEvent(messageID, uncompressedByteSize, compressedByteSize int64) - - // AddLink adds a link to the span. - AddLink(l Link) - - // String prints a string representation of a span. - String() string -} - -// NewSpan is a convenience function for creating a *Span out of a *span -func NewSpan(s SpanInterface) *Span { - return &Span{internal: s} -} - -// Span is a struct wrapper around the SpanInt interface, which allows correctly handling -// nil spans, while also allowing the SpanInterface implementation to be swapped out. -type Span struct { - internal SpanInterface -} - -// Internal returns the underlying implementation of the Span -func (s *Span) Internal() SpanInterface { - return s.internal -} - -// IsRecordingEvents returns true if events are being recorded for this span. -// Use this check to avoid computing expensive annotations when they will never -// be used. -func (s *Span) IsRecordingEvents() bool { - if s == nil { - return false - } - return s.internal.IsRecordingEvents() -} - -// End ends the span. -func (s *Span) End() { - if s == nil { - return - } - s.internal.End() -} - -// SpanContext returns the SpanContext of the span. -func (s *Span) SpanContext() SpanContext { - if s == nil { - return SpanContext{} - } - return s.internal.SpanContext() -} - -// SetName sets the name of the span, if it is recording events. -func (s *Span) SetName(name string) { - if !s.IsRecordingEvents() { - return - } - s.internal.SetName(name) -} - -// SetStatus sets the status of the span, if it is recording events. -func (s *Span) SetStatus(status Status) { - if !s.IsRecordingEvents() { - return - } - s.internal.SetStatus(status) -} - -// AddAttributes sets attributes in the span. -// -// Existing attributes whose keys appear in the attributes parameter are overwritten. -func (s *Span) AddAttributes(attributes ...Attribute) { - if !s.IsRecordingEvents() { - return - } - s.internal.AddAttributes(attributes...) -} - -// Annotate adds an annotation with attributes. -// Attributes can be nil. -func (s *Span) Annotate(attributes []Attribute, str string) { - if !s.IsRecordingEvents() { - return - } - s.internal.Annotate(attributes, str) -} - -// Annotatef adds an annotation with attributes. -func (s *Span) Annotatef(attributes []Attribute, format string, a ...interface{}) { - if !s.IsRecordingEvents() { - return - } - s.internal.Annotatef(attributes, format, a...) -} - -// AddMessageSendEvent adds a message send event to the span. -// -// messageID is an identifier for the message, which is recommended to be -// unique in this span and the same between the send event and the receive -// event (this allows to identify a message between the sender and receiver). -// For example, this could be a sequence id. -func (s *Span) AddMessageSendEvent(messageID, uncompressedByteSize, compressedByteSize int64) { - if !s.IsRecordingEvents() { - return - } - s.internal.AddMessageSendEvent(messageID, uncompressedByteSize, compressedByteSize) -} - -// AddMessageReceiveEvent adds a message receive event to the span. -// -// messageID is an identifier for the message, which is recommended to be -// unique in this span and the same between the send event and the receive -// event (this allows to identify a message between the sender and receiver). -// For example, this could be a sequence id. -func (s *Span) AddMessageReceiveEvent(messageID, uncompressedByteSize, compressedByteSize int64) { - if !s.IsRecordingEvents() { - return - } - s.internal.AddMessageReceiveEvent(messageID, uncompressedByteSize, compressedByteSize) -} - -// AddLink adds a link to the span. -func (s *Span) AddLink(l Link) { - if !s.IsRecordingEvents() { - return - } - s.internal.AddLink(l) -} - -// String prints a string representation of a span. -func (s *Span) String() string { - if s == nil { - return "" - } - return s.internal.String() -} diff --git a/vendor/go.opencensus.io/trace/trace_go11.go b/vendor/go.opencensus.io/trace/trace_go11.go deleted file mode 100644 index b7d8aaf..0000000 --- a/vendor/go.opencensus.io/trace/trace_go11.go +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2018, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// +build go1.11 - -package trace - -import ( - "context" - t "runtime/trace" -) - -func startExecutionTracerTask(ctx context.Context, name string) (context.Context, func()) { - if !t.IsEnabled() { - // Avoid additional overhead if - // runtime/trace is not enabled. - return ctx, func() {} - } - nctx, task := t.NewTask(ctx, name) - return nctx, task.End -} diff --git a/vendor/go.opencensus.io/trace/trace_nongo11.go b/vendor/go.opencensus.io/trace/trace_nongo11.go deleted file mode 100644 index e254198..0000000 --- a/vendor/go.opencensus.io/trace/trace_nongo11.go +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2018, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// +build !go1.11 - -package trace - -import ( - "context" -) - -func startExecutionTracerTask(ctx context.Context, name string) (context.Context, func()) { - return ctx, func() {} -} diff --git a/vendor/go.opencensus.io/trace/tracestate/tracestate.go b/vendor/go.opencensus.io/trace/tracestate/tracestate.go deleted file mode 100644 index 2d6c713..0000000 --- a/vendor/go.opencensus.io/trace/tracestate/tracestate.go +++ /dev/null @@ -1,147 +0,0 @@ -// Copyright 2018, OpenCensus Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Package tracestate implements support for the Tracestate header of the -// W3C TraceContext propagation format. -package tracestate - -import ( - "fmt" - "regexp" -) - -const ( - keyMaxSize = 256 - valueMaxSize = 256 - maxKeyValuePairs = 32 -) - -const ( - keyWithoutVendorFormat = `[a-z][_0-9a-z\-\*\/]{0,255}` - keyWithVendorFormat = `[a-z][_0-9a-z\-\*\/]{0,240}@[a-z][_0-9a-z\-\*\/]{0,13}` - keyFormat = `(` + keyWithoutVendorFormat + `)|(` + keyWithVendorFormat + `)` - valueFormat = `[\x20-\x2b\x2d-\x3c\x3e-\x7e]{0,255}[\x21-\x2b\x2d-\x3c\x3e-\x7e]` -) - -var keyValidationRegExp = regexp.MustCompile(`^(` + keyFormat + `)$`) -var valueValidationRegExp = regexp.MustCompile(`^(` + valueFormat + `)$`) - -// Tracestate represents tracing-system specific context in a list of key-value pairs. Tracestate allows different -// vendors propagate additional information and inter-operate with their legacy Id formats. -type Tracestate struct { - entries []Entry -} - -// Entry represents one key-value pair in a list of key-value pair of Tracestate. -type Entry struct { - // Key is an opaque string up to 256 characters printable. It MUST begin with a lowercase letter, - // and can only contain lowercase letters a-z, digits 0-9, underscores _, dashes -, asterisks *, and - // forward slashes /. - Key string - - // Value is an opaque string up to 256 characters printable ASCII RFC0020 characters (i.e., the - // range 0x20 to 0x7E) except comma , and =. - Value string -} - -// Entries returns a slice of Entry. -func (ts *Tracestate) Entries() []Entry { - if ts == nil { - return nil - } - return ts.entries -} - -func (ts *Tracestate) remove(key string) *Entry { - for index, entry := range ts.entries { - if entry.Key == key { - ts.entries = append(ts.entries[:index], ts.entries[index+1:]...) - return &entry - } - } - return nil -} - -func (ts *Tracestate) add(entries []Entry) error { - for _, entry := range entries { - ts.remove(entry.Key) - } - if len(ts.entries)+len(entries) > maxKeyValuePairs { - return fmt.Errorf("adding %d key-value pairs to current %d pairs exceeds the limit of %d", - len(entries), len(ts.entries), maxKeyValuePairs) - } - ts.entries = append(entries, ts.entries...) - return nil -} - -func isValid(entry Entry) bool { - return keyValidationRegExp.MatchString(entry.Key) && - valueValidationRegExp.MatchString(entry.Value) -} - -func containsDuplicateKey(entries ...Entry) (string, bool) { - keyMap := make(map[string]int) - for _, entry := range entries { - if _, ok := keyMap[entry.Key]; ok { - return entry.Key, true - } - keyMap[entry.Key] = 1 - } - return "", false -} - -func areEntriesValid(entries ...Entry) (*Entry, bool) { - for _, entry := range entries { - if !isValid(entry) { - return &entry, false - } - } - return nil, true -} - -// New creates a Tracestate object from a parent and/or entries (key-value pair). -// Entries from the parent are copied if present. The entries passed to this function -// are inserted in front of those copied from the parent. If an entry copied from the -// parent contains the same key as one of the entry in entries then the entry copied -// from the parent is removed. See add func. -// -// An error is returned with nil Tracestate if -// 1. one or more entry in entries is invalid. -// 2. two or more entries in the input entries have the same key. -// 3. the number of entries combined from the parent and the input entries exceeds maxKeyValuePairs. -// (duplicate entry is counted only once). -func New(parent *Tracestate, entries ...Entry) (*Tracestate, error) { - if parent == nil && len(entries) == 0 { - return nil, nil - } - if entry, ok := areEntriesValid(entries...); !ok { - return nil, fmt.Errorf("key-value pair {%s, %s} is invalid", entry.Key, entry.Value) - } - - if key, duplicate := containsDuplicateKey(entries...); duplicate { - return nil, fmt.Errorf("contains duplicate keys (%s)", key) - } - - tracestate := Tracestate{} - - if parent != nil && len(parent.entries) > 0 { - tracestate.entries = append([]Entry{}, parent.entries...) - } - - err := tracestate.add(entries) - if err != nil { - return nil, err - } - return &tracestate, nil -} diff --git a/vendor/golang.org/x/crypto/AUTHORS b/vendor/golang.org/x/crypto/AUTHORS deleted file mode 100644 index 2b00ddb..0000000 --- a/vendor/golang.org/x/crypto/AUTHORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code refers to The Go Authors for copyright purposes. -# The master list of authors is in the main Go distribution, -# visible at https://tip.golang.org/AUTHORS. diff --git a/vendor/golang.org/x/crypto/CONTRIBUTORS b/vendor/golang.org/x/crypto/CONTRIBUTORS deleted file mode 100644 index 1fbd3e9..0000000 --- a/vendor/golang.org/x/crypto/CONTRIBUTORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code was written by the Go contributors. -# The master list of contributors is in the main Go distribution, -# visible at https://tip.golang.org/CONTRIBUTORS. diff --git a/vendor/golang.org/x/crypto/LICENSE b/vendor/golang.org/x/crypto/LICENSE deleted file mode 100644 index 6a66aea..0000000 --- a/vendor/golang.org/x/crypto/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -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/crypto/PATENTS b/vendor/golang.org/x/crypto/PATENTS deleted file mode 100644 index 7330990..0000000 --- a/vendor/golang.org/x/crypto/PATENTS +++ /dev/null @@ -1,22 +0,0 @@ -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/crypto/blowfish/block.go b/vendor/golang.org/x/crypto/blowfish/block.go deleted file mode 100644 index 9d80f19..0000000 --- a/vendor/golang.org/x/crypto/blowfish/block.go +++ /dev/null @@ -1,159 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package blowfish - -// getNextWord returns the next big-endian uint32 value from the byte slice -// at the given position in a circular manner, updating the position. -func getNextWord(b []byte, pos *int) uint32 { - var w uint32 - j := *pos - for i := 0; i < 4; i++ { - w = w<<8 | uint32(b[j]) - j++ - if j >= len(b) { - j = 0 - } - } - *pos = j - return w -} - -// ExpandKey performs a key expansion on the given *Cipher. Specifically, it -// performs the Blowfish algorithm's key schedule which sets up the *Cipher's -// pi and substitution tables for calls to Encrypt. This is used, primarily, -// by the bcrypt package to reuse the Blowfish key schedule during its -// set up. It's unlikely that you need to use this directly. -func ExpandKey(key []byte, c *Cipher) { - j := 0 - for i := 0; i < 18; i++ { - // Using inlined getNextWord for performance. - var d uint32 - for k := 0; k < 4; k++ { - d = d<<8 | uint32(key[j]) - j++ - if j >= len(key) { - j = 0 - } - } - c.p[i] ^= d - } - - var l, r uint32 - for i := 0; i < 18; i += 2 { - l, r = encryptBlock(l, r, c) - c.p[i], c.p[i+1] = l, r - } - - for i := 0; i < 256; i += 2 { - l, r = encryptBlock(l, r, c) - c.s0[i], c.s0[i+1] = l, r - } - for i := 0; i < 256; i += 2 { - l, r = encryptBlock(l, r, c) - c.s1[i], c.s1[i+1] = l, r - } - for i := 0; i < 256; i += 2 { - l, r = encryptBlock(l, r, c) - c.s2[i], c.s2[i+1] = l, r - } - for i := 0; i < 256; i += 2 { - l, r = encryptBlock(l, r, c) - c.s3[i], c.s3[i+1] = l, r - } -} - -// This is similar to ExpandKey, but folds the salt during the key -// schedule. While ExpandKey is essentially expandKeyWithSalt with an all-zero -// salt passed in, reusing ExpandKey turns out to be a place of inefficiency -// and specializing it here is useful. -func expandKeyWithSalt(key []byte, salt []byte, c *Cipher) { - j := 0 - for i := 0; i < 18; i++ { - c.p[i] ^= getNextWord(key, &j) - } - - j = 0 - var l, r uint32 - for i := 0; i < 18; i += 2 { - l ^= getNextWord(salt, &j) - r ^= getNextWord(salt, &j) - l, r = encryptBlock(l, r, c) - c.p[i], c.p[i+1] = l, r - } - - for i := 0; i < 256; i += 2 { - l ^= getNextWord(salt, &j) - r ^= getNextWord(salt, &j) - l, r = encryptBlock(l, r, c) - c.s0[i], c.s0[i+1] = l, r - } - - for i := 0; i < 256; i += 2 { - l ^= getNextWord(salt, &j) - r ^= getNextWord(salt, &j) - l, r = encryptBlock(l, r, c) - c.s1[i], c.s1[i+1] = l, r - } - - for i := 0; i < 256; i += 2 { - l ^= getNextWord(salt, &j) - r ^= getNextWord(salt, &j) - l, r = encryptBlock(l, r, c) - c.s2[i], c.s2[i+1] = l, r - } - - for i := 0; i < 256; i += 2 { - l ^= getNextWord(salt, &j) - r ^= getNextWord(salt, &j) - l, r = encryptBlock(l, r, c) - c.s3[i], c.s3[i+1] = l, r - } -} - -func encryptBlock(l, r uint32, c *Cipher) (uint32, uint32) { - xl, xr := l, r - xl ^= c.p[0] - xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[1] - xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[2] - xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[3] - xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[4] - xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[5] - xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[6] - xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[7] - xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[8] - xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[9] - xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[10] - xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[11] - xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[12] - xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[13] - xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[14] - xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[15] - xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[16] - xr ^= c.p[17] - return xr, xl -} - -func decryptBlock(l, r uint32, c *Cipher) (uint32, uint32) { - xl, xr := l, r - xl ^= c.p[17] - xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[16] - xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[15] - xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[14] - xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[13] - xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[12] - xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[11] - xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[10] - xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[9] - xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[8] - xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[7] - xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[6] - xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[5] - xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[4] - xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[3] - xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[2] - xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[1] - xr ^= c.p[0] - return xr, xl -} diff --git a/vendor/golang.org/x/crypto/blowfish/cipher.go b/vendor/golang.org/x/crypto/blowfish/cipher.go deleted file mode 100644 index 213bf20..0000000 --- a/vendor/golang.org/x/crypto/blowfish/cipher.go +++ /dev/null @@ -1,99 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package blowfish implements Bruce Schneier's Blowfish encryption algorithm. -// -// Blowfish is a legacy cipher and its short block size makes it vulnerable to -// birthday bound attacks (see https://sweet32.info). It should only be used -// where compatibility with legacy systems, not security, is the goal. -// -// Deprecated: any new system should use AES (from crypto/aes, if necessary in -// an AEAD mode like crypto/cipher.NewGCM) or XChaCha20-Poly1305 (from -// golang.org/x/crypto/chacha20poly1305). -package blowfish // import "golang.org/x/crypto/blowfish" - -// The code is a port of Bruce Schneier's C implementation. -// See https://www.schneier.com/blowfish.html. - -import "strconv" - -// The Blowfish block size in bytes. -const BlockSize = 8 - -// A Cipher is an instance of Blowfish encryption using a particular key. -type Cipher struct { - p [18]uint32 - s0, s1, s2, s3 [256]uint32 -} - -type KeySizeError int - -func (k KeySizeError) Error() string { - return "crypto/blowfish: invalid key size " + strconv.Itoa(int(k)) -} - -// NewCipher creates and returns a Cipher. -// The key argument should be the Blowfish key, from 1 to 56 bytes. -func NewCipher(key []byte) (*Cipher, error) { - var result Cipher - if k := len(key); k < 1 || k > 56 { - return nil, KeySizeError(k) - } - initCipher(&result) - ExpandKey(key, &result) - return &result, nil -} - -// NewSaltedCipher creates a returns a Cipher that folds a salt into its key -// schedule. For most purposes, NewCipher, instead of NewSaltedCipher, is -// sufficient and desirable. For bcrypt compatibility, the key can be over 56 -// bytes. -func NewSaltedCipher(key, salt []byte) (*Cipher, error) { - if len(salt) == 0 { - return NewCipher(key) - } - var result Cipher - if k := len(key); k < 1 { - return nil, KeySizeError(k) - } - initCipher(&result) - expandKeyWithSalt(key, salt, &result) - return &result, nil -} - -// BlockSize returns the Blowfish block size, 8 bytes. -// It is necessary to satisfy the Block interface in the -// package "crypto/cipher". -func (c *Cipher) BlockSize() int { return BlockSize } - -// Encrypt encrypts the 8-byte buffer src using the key k -// and stores the result in dst. -// Note that for amounts of data larger than a block, -// it is not safe to just call Encrypt on successive blocks; -// instead, use an encryption mode like CBC (see crypto/cipher/cbc.go). -func (c *Cipher) Encrypt(dst, src []byte) { - l := uint32(src[0])<<24 | uint32(src[1])<<16 | uint32(src[2])<<8 | uint32(src[3]) - r := uint32(src[4])<<24 | uint32(src[5])<<16 | uint32(src[6])<<8 | uint32(src[7]) - l, r = encryptBlock(l, r, c) - dst[0], dst[1], dst[2], dst[3] = byte(l>>24), byte(l>>16), byte(l>>8), byte(l) - dst[4], dst[5], dst[6], dst[7] = byte(r>>24), byte(r>>16), byte(r>>8), byte(r) -} - -// Decrypt decrypts the 8-byte buffer src using the key k -// and stores the result in dst. -func (c *Cipher) Decrypt(dst, src []byte) { - l := uint32(src[0])<<24 | uint32(src[1])<<16 | uint32(src[2])<<8 | uint32(src[3]) - r := uint32(src[4])<<24 | uint32(src[5])<<16 | uint32(src[6])<<8 | uint32(src[7]) - l, r = decryptBlock(l, r, c) - dst[0], dst[1], dst[2], dst[3] = byte(l>>24), byte(l>>16), byte(l>>8), byte(l) - dst[4], dst[5], dst[6], dst[7] = byte(r>>24), byte(r>>16), byte(r>>8), byte(r) -} - -func initCipher(c *Cipher) { - copy(c.p[0:], p[0:]) - copy(c.s0[0:], s0[0:]) - copy(c.s1[0:], s1[0:]) - copy(c.s2[0:], s2[0:]) - copy(c.s3[0:], s3[0:]) -} diff --git a/vendor/golang.org/x/crypto/blowfish/const.go b/vendor/golang.org/x/crypto/blowfish/const.go deleted file mode 100644 index d040775..0000000 --- a/vendor/golang.org/x/crypto/blowfish/const.go +++ /dev/null @@ -1,199 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// The startup permutation array and substitution boxes. -// They are the hexadecimal digits of PI; see: -// https://www.schneier.com/code/constants.txt. - -package blowfish - -var s0 = [256]uint32{ - 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, 0xb8e1afed, 0x6a267e96, - 0xba7c9045, 0xf12c7f99, 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16, - 0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e, 0x0d95748f, 0x728eb658, - 0x718bcd58, 0x82154aee, 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013, - 0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef, 0x8e79dcb0, 0x603a180e, - 0x6c9e0e8b, 0xb01e8a3e, 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60, - 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440, 0x55ca396a, 0x2aab10b6, - 0xb4cc5c34, 0x1141e8ce, 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a, - 0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e, 0xafd6ba33, 0x6c24cf5c, - 0x7a325381, 0x28958677, 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193, - 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032, 0xef845d5d, 0xe98575b1, - 0xdc262302, 0xeb651b88, 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239, - 0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e, 0x21c66842, 0xf6e96c9a, - 0x670c9c61, 0xabd388f0, 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3, - 0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98, 0xa1f1651d, 0x39af0176, - 0x66ca593e, 0x82430e88, 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe, - 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6, 0x4ed3aa62, 0x363f7706, - 0x1bfedf72, 0x429b023d, 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b, - 0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7, 0xe3fe501a, 0xb6794c3b, - 0x976ce0bd, 0x04c006ba, 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463, - 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f, 0x6dfc511f, 0x9b30952c, - 0xcc814544, 0xaf5ebd09, 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3, - 0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb, 0x5579c0bd, 0x1a60320a, - 0xd6a100c6, 0x402c7279, 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8, - 0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab, 0x323db5fa, 0xfd238760, - 0x53317b48, 0x3e00df82, 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db, - 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573, 0x695b27b0, 0xbbca58c8, - 0xe1ffa35d, 0xb8f011a0, 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b, - 0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790, 0xe1ddf2da, 0xa4cb7e33, - 0x62fb1341, 0xcee4c6e8, 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4, - 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0, 0xd08ed1d0, 0xafc725e0, - 0x8e3c5b2f, 0x8e7594b7, 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c, - 0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad, 0x2f2f2218, 0xbe0e1777, - 0xea752dfe, 0x8b021fa1, 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299, - 0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9, 0x165fa266, 0x80957705, - 0x93cc7314, 0x211a1477, 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf, - 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49, 0x00250e2d, 0x2071b35e, - 0x226800bb, 0x57b8e0af, 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa, - 0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5, 0x83260376, 0x6295cfa9, - 0x11c81968, 0x4e734a41, 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915, - 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400, 0x08ba6fb5, 0x571be91f, - 0xf296ec6b, 0x2a0dd915, 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664, - 0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a, -} - -var s1 = [256]uint32{ - 0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623, 0xad6ea6b0, 0x49a7df7d, - 0x9cee60b8, 0x8fedb266, 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1, - 0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e, 0x3f54989a, 0x5b429d65, - 0x6b8fe4d6, 0x99f73fd6, 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1, - 0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e, 0x09686b3f, 0x3ebaefc9, - 0x3c971814, 0x6b6a70a1, 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737, - 0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8, 0xb03ada37, 0xf0500c0d, - 0xf01c1f04, 0x0200b3ff, 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd, - 0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701, 0x3ae5e581, 0x37c2dadc, - 0xc8b57634, 0x9af3dda7, 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41, - 0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331, 0x4e548b38, 0x4f6db908, - 0x6f420d03, 0xf60a04bf, 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af, - 0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e, 0x5512721f, 0x2e6b7124, - 0x501adde6, 0x9f84cd87, 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c, - 0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2, 0xef1c1847, 0x3215d908, - 0xdd433b37, 0x24c2ba16, 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd, - 0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b, 0x043556f1, 0xd7a3c76b, - 0x3c11183b, 0x5924a509, 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e, - 0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3, 0x771fe71c, 0x4e3d06fa, - 0x2965dcb9, 0x99e71d0f, 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a, - 0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4, 0xf2f74ea7, 0x361d2b3d, - 0x1939260f, 0x19c27960, 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66, - 0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28, 0xc332ddef, 0xbe6c5aa5, - 0x65582185, 0x68ab9802, 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84, - 0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510, 0x13cca830, 0xeb61bd96, - 0x0334fe1e, 0xaa0363cf, 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14, - 0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e, 0x648b1eaf, 0x19bdf0ca, - 0xa02369b9, 0x655abb50, 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7, - 0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8, 0xf837889a, 0x97e32d77, - 0x11ed935f, 0x16681281, 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99, - 0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696, 0xcdb30aeb, 0x532e3054, - 0x8fd948e4, 0x6dbc3128, 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73, - 0x5d4a14d9, 0xe864b7e3, 0x42105d14, 0x203e13e0, 0x45eee2b6, 0xa3aaabea, - 0xdb6c4f15, 0xfacb4fd0, 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105, - 0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250, 0xcf62a1f2, 0x5b8d2646, - 0xfc8883a0, 0xc1c7b6a3, 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285, - 0x095bbf00, 0xad19489d, 0x1462b174, 0x23820e00, 0x58428d2a, 0x0c55f5ea, - 0x1dadf43e, 0x233f7061, 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb, - 0x7cde3759, 0xcbee7460, 0x4085f2a7, 0xce77326e, 0xa6078084, 0x19f8509e, - 0xe8efd855, 0x61d99735, 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc, - 0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9, 0xdb73dbd3, 0x105588cd, - 0x675fda79, 0xe3674340, 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20, - 0x153e21e7, 0x8fb03d4a, 0xe6e39f2b, 0xdb83adf7, -} - -var s2 = [256]uint32{ - 0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934, 0x411520f7, 0x7602d4f7, - 0xbcf46b2e, 0xd4a20068, 0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af, - 0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840, 0x4d95fc1d, 0x96b591af, - 0x70f4ddd3, 0x66a02f45, 0xbfbc09ec, 0x03bd9785, 0x7fac6dd0, 0x31cb8504, - 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a, 0x28507825, 0x530429f4, - 0x0a2c86da, 0xe9b66dfb, 0x68dc1462, 0xd7486900, 0x680ec0a4, 0x27a18dee, - 0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6, 0xaace1e7c, 0xd3375fec, - 0xce78a399, 0x406b2a42, 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b, - 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2, 0x3a6efa74, 0xdd5b4332, - 0x6841e7f7, 0xca7820fb, 0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527, - 0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b, 0x55a867bc, 0xa1159a58, - 0xcca92963, 0x99e1db33, 0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c, - 0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3, 0x95c11548, 0xe4c66d22, - 0x48c1133f, 0xc70f86dc, 0x07f9c9ee, 0x41041f0f, 0x404779a4, 0x5d886e17, - 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564, 0x257b7834, 0x602a9c60, - 0xdff8e8a3, 0x1f636c1b, 0x0e12b4c2, 0x02e1329e, 0xaf664fd1, 0xcad18115, - 0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922, 0x85b2a20e, 0xe6ba0d99, - 0xde720c8c, 0x2da2f728, 0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0, - 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e, 0x0a476341, 0x992eff74, - 0x3a6f6eab, 0xf4f8fd37, 0xa812dc60, 0xa1ebddf8, 0x991be14c, 0xdb6e6b0d, - 0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804, 0xf1290dc7, 0xcc00ffa3, - 0xb5390f92, 0x690fed0b, 0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3, - 0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb, 0x37392eb3, 0xcc115979, - 0x8026e297, 0xf42e312d, 0x6842ada7, 0xc66a2b3b, 0x12754ccc, 0x782ef11c, - 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350, 0x1a6b1018, 0x11caedfa, - 0x3d25bdd8, 0xe2e1c3c9, 0x44421659, 0x0a121386, 0xd90cec6e, 0xd5abea2a, - 0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe, 0x9dbc8057, 0xf0f7c086, - 0x60787bf8, 0x6003604d, 0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc, - 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f, 0x77a057be, 0xbde8ae24, - 0x55464299, 0xbf582e61, 0x4e58f48f, 0xf2ddfda2, 0xf474ef38, 0x8789bdc2, - 0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9, 0x7aeb2661, 0x8b1ddf84, - 0x846a0e79, 0x915f95e2, 0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c, - 0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e, 0xb77f19b6, 0xe0a9dc09, - 0x662d09a1, 0xc4324633, 0xe85a1f02, 0x09f0be8c, 0x4a99a025, 0x1d6efe10, - 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169, 0xdcb7da83, 0x573906fe, - 0xa1e2ce9b, 0x4fcd7f52, 0x50115e01, 0xa70683fa, 0xa002b5c4, 0x0de6d027, - 0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5, 0xf0177a28, 0xc0f586e0, - 0x006058aa, 0x30dc7d62, 0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634, - 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76, 0x6f05e409, 0x4b7c0188, - 0x39720a3d, 0x7c927c24, 0x86e3725f, 0x724d9db9, 0x1ac15bb4, 0xd39eb8fc, - 0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4, 0x1e50ef5e, 0xb161e6f8, - 0xa28514d9, 0x6c51133c, 0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837, - 0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0, -} - -var s3 = [256]uint32{ - 0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b, 0x5cb0679e, 0x4fa33742, - 0xd3822740, 0x99bc9bbe, 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b, - 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4, 0x5748ab2f, 0xbc946e79, - 0xc6a376d2, 0x6549c2c8, 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6, - 0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304, 0xa1fad5f0, 0x6a2d519a, - 0x63ef8ce2, 0x9a86ee22, 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4, - 0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6, 0x2826a2f9, 0xa73a3ae1, - 0x4ba99586, 0xef5562e9, 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59, - 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593, 0xe990fd5a, 0x9e34d797, - 0x2cf0b7d9, 0x022b8b51, 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28, - 0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c, 0xe029ac71, 0xe019a5e6, - 0x47b0acfd, 0xed93fa9b, 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28, - 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c, 0x15056dd4, 0x88f46dba, - 0x03a16125, 0x0564f0bd, 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a, - 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319, 0x7533d928, 0xb155fdf5, - 0x03563482, 0x8aba3cbb, 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f, - 0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991, 0xea7a90c2, 0xfb3e7bce, - 0x5121ce64, 0x774fbe32, 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680, - 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166, 0xb39a460a, 0x6445c0dd, - 0x586cdecf, 0x1c20c8ae, 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb, - 0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5, 0x72eacea8, 0xfa6484bb, - 0x8d6612ae, 0xbf3c6f47, 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370, - 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d, 0x4040cb08, 0x4eb4e2cc, - 0x34d2466a, 0x0115af84, 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048, - 0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8, 0x611560b1, 0xe7933fdc, - 0xbb3a792b, 0x344525bd, 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9, - 0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7, 0x1a908749, 0xd44fbd9a, - 0xd0dadecb, 0xd50ada38, 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f, - 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c, 0xbf97222c, 0x15e6fc2a, - 0x0f91fc71, 0x9b941525, 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1, - 0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442, 0xe0ec6e0e, 0x1698db3b, - 0x4c98a0be, 0x3278e964, 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e, - 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8, 0xdf359f8d, 0x9b992f2e, - 0xe60b6f47, 0x0fe3f11d, 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f, - 0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299, 0xf523f357, 0xa6327623, - 0x93a83531, 0x56cccd02, 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc, - 0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614, 0xe6c6c7bd, 0x327a140a, - 0x45e1d006, 0xc3f27b9a, 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6, - 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b, 0x53113ec0, 0x1640e3d3, - 0x38abbd60, 0x2547adf0, 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060, - 0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e, 0x1948c25c, 0x02fb8a8c, - 0x01c36ae4, 0xd6ebe1f9, 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f, - 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6, -} - -var p = [18]uint32{ - 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, 0xa4093822, 0x299f31d0, - 0x082efa98, 0xec4e6c89, 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c, - 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917, 0x9216d5d9, 0x8979fb1b, -} diff --git a/vendor/golang.org/x/crypto/cast5/cast5.go b/vendor/golang.org/x/crypto/cast5/cast5.go deleted file mode 100644 index ddcbeb6..0000000 --- a/vendor/golang.org/x/crypto/cast5/cast5.go +++ /dev/null @@ -1,533 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package cast5 implements CAST5, as defined in RFC 2144. -// -// CAST5 is a legacy cipher and its short block size makes it vulnerable to -// birthday bound attacks (see https://sweet32.info). It should only be used -// where compatibility with legacy systems, not security, is the goal. -// -// Deprecated: any new system should use AES (from crypto/aes, if necessary in -// an AEAD mode like crypto/cipher.NewGCM) or XChaCha20-Poly1305 (from -// golang.org/x/crypto/chacha20poly1305). -package cast5 // import "golang.org/x/crypto/cast5" - -import "errors" - -const BlockSize = 8 -const KeySize = 16 - -type Cipher struct { - masking [16]uint32 - rotate [16]uint8 -} - -func NewCipher(key []byte) (c *Cipher, err error) { - if len(key) != KeySize { - return nil, errors.New("CAST5: keys must be 16 bytes") - } - - c = new(Cipher) - c.keySchedule(key) - return -} - -func (c *Cipher) BlockSize() int { - return BlockSize -} - -func (c *Cipher) Encrypt(dst, src []byte) { - l := uint32(src[0])<<24 | uint32(src[1])<<16 | uint32(src[2])<<8 | uint32(src[3]) - r := uint32(src[4])<<24 | uint32(src[5])<<16 | uint32(src[6])<<8 | uint32(src[7]) - - l, r = r, l^f1(r, c.masking[0], c.rotate[0]) - l, r = r, l^f2(r, c.masking[1], c.rotate[1]) - l, r = r, l^f3(r, c.masking[2], c.rotate[2]) - l, r = r, l^f1(r, c.masking[3], c.rotate[3]) - - l, r = r, l^f2(r, c.masking[4], c.rotate[4]) - l, r = r, l^f3(r, c.masking[5], c.rotate[5]) - l, r = r, l^f1(r, c.masking[6], c.rotate[6]) - l, r = r, l^f2(r, c.masking[7], c.rotate[7]) - - l, r = r, l^f3(r, c.masking[8], c.rotate[8]) - l, r = r, l^f1(r, c.masking[9], c.rotate[9]) - l, r = r, l^f2(r, c.masking[10], c.rotate[10]) - l, r = r, l^f3(r, c.masking[11], c.rotate[11]) - - l, r = r, l^f1(r, c.masking[12], c.rotate[12]) - l, r = r, l^f2(r, c.masking[13], c.rotate[13]) - l, r = r, l^f3(r, c.masking[14], c.rotate[14]) - l, r = r, l^f1(r, c.masking[15], c.rotate[15]) - - dst[0] = uint8(r >> 24) - dst[1] = uint8(r >> 16) - dst[2] = uint8(r >> 8) - dst[3] = uint8(r) - dst[4] = uint8(l >> 24) - dst[5] = uint8(l >> 16) - dst[6] = uint8(l >> 8) - dst[7] = uint8(l) -} - -func (c *Cipher) Decrypt(dst, src []byte) { - l := uint32(src[0])<<24 | uint32(src[1])<<16 | uint32(src[2])<<8 | uint32(src[3]) - r := uint32(src[4])<<24 | uint32(src[5])<<16 | uint32(src[6])<<8 | uint32(src[7]) - - l, r = r, l^f1(r, c.masking[15], c.rotate[15]) - l, r = r, l^f3(r, c.masking[14], c.rotate[14]) - l, r = r, l^f2(r, c.masking[13], c.rotate[13]) - l, r = r, l^f1(r, c.masking[12], c.rotate[12]) - - l, r = r, l^f3(r, c.masking[11], c.rotate[11]) - l, r = r, l^f2(r, c.masking[10], c.rotate[10]) - l, r = r, l^f1(r, c.masking[9], c.rotate[9]) - l, r = r, l^f3(r, c.masking[8], c.rotate[8]) - - l, r = r, l^f2(r, c.masking[7], c.rotate[7]) - l, r = r, l^f1(r, c.masking[6], c.rotate[6]) - l, r = r, l^f3(r, c.masking[5], c.rotate[5]) - l, r = r, l^f2(r, c.masking[4], c.rotate[4]) - - l, r = r, l^f1(r, c.masking[3], c.rotate[3]) - l, r = r, l^f3(r, c.masking[2], c.rotate[2]) - l, r = r, l^f2(r, c.masking[1], c.rotate[1]) - l, r = r, l^f1(r, c.masking[0], c.rotate[0]) - - dst[0] = uint8(r >> 24) - dst[1] = uint8(r >> 16) - dst[2] = uint8(r >> 8) - dst[3] = uint8(r) - dst[4] = uint8(l >> 24) - dst[5] = uint8(l >> 16) - dst[6] = uint8(l >> 8) - dst[7] = uint8(l) -} - -type keyScheduleA [4][7]uint8 -type keyScheduleB [4][5]uint8 - -// keyScheduleRound contains the magic values for a round of the key schedule. -// The keyScheduleA deals with the lines like: -// z0z1z2z3 = x0x1x2x3 ^ S5[xD] ^ S6[xF] ^ S7[xC] ^ S8[xE] ^ S7[x8] -// Conceptually, both x and z are in the same array, x first. The first -// element describes which word of this array gets written to and the -// second, which word gets read. So, for the line above, it's "4, 0", because -// it's writing to the first word of z, which, being after x, is word 4, and -// reading from the first word of x: word 0. -// -// Next are the indexes into the S-boxes. Now the array is treated as bytes. So -// "xD" is 0xd. The first byte of z is written as "16 + 0", just to be clear -// that it's z that we're indexing. -// -// keyScheduleB deals with lines like: -// K1 = S5[z8] ^ S6[z9] ^ S7[z7] ^ S8[z6] ^ S5[z2] -// "K1" is ignored because key words are always written in order. So the five -// elements are the S-box indexes. They use the same form as in keyScheduleA, -// above. - -type keyScheduleRound struct{} -type keySchedule []keyScheduleRound - -var schedule = []struct { - a keyScheduleA - b keyScheduleB -}{ - { - keyScheduleA{ - {4, 0, 0xd, 0xf, 0xc, 0xe, 0x8}, - {5, 2, 16 + 0, 16 + 2, 16 + 1, 16 + 3, 0xa}, - {6, 3, 16 + 7, 16 + 6, 16 + 5, 16 + 4, 9}, - {7, 1, 16 + 0xa, 16 + 9, 16 + 0xb, 16 + 8, 0xb}, - }, - keyScheduleB{ - {16 + 8, 16 + 9, 16 + 7, 16 + 6, 16 + 2}, - {16 + 0xa, 16 + 0xb, 16 + 5, 16 + 4, 16 + 6}, - {16 + 0xc, 16 + 0xd, 16 + 3, 16 + 2, 16 + 9}, - {16 + 0xe, 16 + 0xf, 16 + 1, 16 + 0, 16 + 0xc}, - }, - }, - { - keyScheduleA{ - {0, 6, 16 + 5, 16 + 7, 16 + 4, 16 + 6, 16 + 0}, - {1, 4, 0, 2, 1, 3, 16 + 2}, - {2, 5, 7, 6, 5, 4, 16 + 1}, - {3, 7, 0xa, 9, 0xb, 8, 16 + 3}, - }, - keyScheduleB{ - {3, 2, 0xc, 0xd, 8}, - {1, 0, 0xe, 0xf, 0xd}, - {7, 6, 8, 9, 3}, - {5, 4, 0xa, 0xb, 7}, - }, - }, - { - keyScheduleA{ - {4, 0, 0xd, 0xf, 0xc, 0xe, 8}, - {5, 2, 16 + 0, 16 + 2, 16 + 1, 16 + 3, 0xa}, - {6, 3, 16 + 7, 16 + 6, 16 + 5, 16 + 4, 9}, - {7, 1, 16 + 0xa, 16 + 9, 16 + 0xb, 16 + 8, 0xb}, - }, - keyScheduleB{ - {16 + 3, 16 + 2, 16 + 0xc, 16 + 0xd, 16 + 9}, - {16 + 1, 16 + 0, 16 + 0xe, 16 + 0xf, 16 + 0xc}, - {16 + 7, 16 + 6, 16 + 8, 16 + 9, 16 + 2}, - {16 + 5, 16 + 4, 16 + 0xa, 16 + 0xb, 16 + 6}, - }, - }, - { - keyScheduleA{ - {0, 6, 16 + 5, 16 + 7, 16 + 4, 16 + 6, 16 + 0}, - {1, 4, 0, 2, 1, 3, 16 + 2}, - {2, 5, 7, 6, 5, 4, 16 + 1}, - {3, 7, 0xa, 9, 0xb, 8, 16 + 3}, - }, - keyScheduleB{ - {8, 9, 7, 6, 3}, - {0xa, 0xb, 5, 4, 7}, - {0xc, 0xd, 3, 2, 8}, - {0xe, 0xf, 1, 0, 0xd}, - }, - }, -} - -func (c *Cipher) keySchedule(in []byte) { - var t [8]uint32 - var k [32]uint32 - - for i := 0; i < 4; i++ { - j := i * 4 - t[i] = uint32(in[j])<<24 | uint32(in[j+1])<<16 | uint32(in[j+2])<<8 | uint32(in[j+3]) - } - - x := []byte{6, 7, 4, 5} - ki := 0 - - for half := 0; half < 2; half++ { - for _, round := range schedule { - for j := 0; j < 4; j++ { - var a [7]uint8 - copy(a[:], round.a[j][:]) - w := t[a[1]] - w ^= sBox[4][(t[a[2]>>2]>>(24-8*(a[2]&3)))&0xff] - w ^= sBox[5][(t[a[3]>>2]>>(24-8*(a[3]&3)))&0xff] - w ^= sBox[6][(t[a[4]>>2]>>(24-8*(a[4]&3)))&0xff] - w ^= sBox[7][(t[a[5]>>2]>>(24-8*(a[5]&3)))&0xff] - w ^= sBox[x[j]][(t[a[6]>>2]>>(24-8*(a[6]&3)))&0xff] - t[a[0]] = w - } - - for j := 0; j < 4; j++ { - var b [5]uint8 - copy(b[:], round.b[j][:]) - w := sBox[4][(t[b[0]>>2]>>(24-8*(b[0]&3)))&0xff] - w ^= sBox[5][(t[b[1]>>2]>>(24-8*(b[1]&3)))&0xff] - w ^= sBox[6][(t[b[2]>>2]>>(24-8*(b[2]&3)))&0xff] - w ^= sBox[7][(t[b[3]>>2]>>(24-8*(b[3]&3)))&0xff] - w ^= sBox[4+j][(t[b[4]>>2]>>(24-8*(b[4]&3)))&0xff] - k[ki] = w - ki++ - } - } - } - - for i := 0; i < 16; i++ { - c.masking[i] = k[i] - c.rotate[i] = uint8(k[16+i] & 0x1f) - } -} - -// These are the three 'f' functions. See RFC 2144, section 2.2. -func f1(d, m uint32, r uint8) uint32 { - t := m + d - I := (t << r) | (t >> (32 - r)) - return ((sBox[0][I>>24] ^ sBox[1][(I>>16)&0xff]) - sBox[2][(I>>8)&0xff]) + sBox[3][I&0xff] -} - -func f2(d, m uint32, r uint8) uint32 { - t := m ^ d - I := (t << r) | (t >> (32 - r)) - return ((sBox[0][I>>24] - sBox[1][(I>>16)&0xff]) + sBox[2][(I>>8)&0xff]) ^ sBox[3][I&0xff] -} - -func f3(d, m uint32, r uint8) uint32 { - t := m - d - I := (t << r) | (t >> (32 - r)) - return ((sBox[0][I>>24] + sBox[1][(I>>16)&0xff]) ^ sBox[2][(I>>8)&0xff]) - sBox[3][I&0xff] -} - -var sBox = [8][256]uint32{ - { - 0x30fb40d4, 0x9fa0ff0b, 0x6beccd2f, 0x3f258c7a, 0x1e213f2f, 0x9c004dd3, 0x6003e540, 0xcf9fc949, - 0xbfd4af27, 0x88bbbdb5, 0xe2034090, 0x98d09675, 0x6e63a0e0, 0x15c361d2, 0xc2e7661d, 0x22d4ff8e, - 0x28683b6f, 0xc07fd059, 0xff2379c8, 0x775f50e2, 0x43c340d3, 0xdf2f8656, 0x887ca41a, 0xa2d2bd2d, - 0xa1c9e0d6, 0x346c4819, 0x61b76d87, 0x22540f2f, 0x2abe32e1, 0xaa54166b, 0x22568e3a, 0xa2d341d0, - 0x66db40c8, 0xa784392f, 0x004dff2f, 0x2db9d2de, 0x97943fac, 0x4a97c1d8, 0x527644b7, 0xb5f437a7, - 0xb82cbaef, 0xd751d159, 0x6ff7f0ed, 0x5a097a1f, 0x827b68d0, 0x90ecf52e, 0x22b0c054, 0xbc8e5935, - 0x4b6d2f7f, 0x50bb64a2, 0xd2664910, 0xbee5812d, 0xb7332290, 0xe93b159f, 0xb48ee411, 0x4bff345d, - 0xfd45c240, 0xad31973f, 0xc4f6d02e, 0x55fc8165, 0xd5b1caad, 0xa1ac2dae, 0xa2d4b76d, 0xc19b0c50, - 0x882240f2, 0x0c6e4f38, 0xa4e4bfd7, 0x4f5ba272, 0x564c1d2f, 0xc59c5319, 0xb949e354, 0xb04669fe, - 0xb1b6ab8a, 0xc71358dd, 0x6385c545, 0x110f935d, 0x57538ad5, 0x6a390493, 0xe63d37e0, 0x2a54f6b3, - 0x3a787d5f, 0x6276a0b5, 0x19a6fcdf, 0x7a42206a, 0x29f9d4d5, 0xf61b1891, 0xbb72275e, 0xaa508167, - 0x38901091, 0xc6b505eb, 0x84c7cb8c, 0x2ad75a0f, 0x874a1427, 0xa2d1936b, 0x2ad286af, 0xaa56d291, - 0xd7894360, 0x425c750d, 0x93b39e26, 0x187184c9, 0x6c00b32d, 0x73e2bb14, 0xa0bebc3c, 0x54623779, - 0x64459eab, 0x3f328b82, 0x7718cf82, 0x59a2cea6, 0x04ee002e, 0x89fe78e6, 0x3fab0950, 0x325ff6c2, - 0x81383f05, 0x6963c5c8, 0x76cb5ad6, 0xd49974c9, 0xca180dcf, 0x380782d5, 0xc7fa5cf6, 0x8ac31511, - 0x35e79e13, 0x47da91d0, 0xf40f9086, 0xa7e2419e, 0x31366241, 0x051ef495, 0xaa573b04, 0x4a805d8d, - 0x548300d0, 0x00322a3c, 0xbf64cddf, 0xba57a68e, 0x75c6372b, 0x50afd341, 0xa7c13275, 0x915a0bf5, - 0x6b54bfab, 0x2b0b1426, 0xab4cc9d7, 0x449ccd82, 0xf7fbf265, 0xab85c5f3, 0x1b55db94, 0xaad4e324, - 0xcfa4bd3f, 0x2deaa3e2, 0x9e204d02, 0xc8bd25ac, 0xeadf55b3, 0xd5bd9e98, 0xe31231b2, 0x2ad5ad6c, - 0x954329de, 0xadbe4528, 0xd8710f69, 0xaa51c90f, 0xaa786bf6, 0x22513f1e, 0xaa51a79b, 0x2ad344cc, - 0x7b5a41f0, 0xd37cfbad, 0x1b069505, 0x41ece491, 0xb4c332e6, 0x032268d4, 0xc9600acc, 0xce387e6d, - 0xbf6bb16c, 0x6a70fb78, 0x0d03d9c9, 0xd4df39de, 0xe01063da, 0x4736f464, 0x5ad328d8, 0xb347cc96, - 0x75bb0fc3, 0x98511bfb, 0x4ffbcc35, 0xb58bcf6a, 0xe11f0abc, 0xbfc5fe4a, 0xa70aec10, 0xac39570a, - 0x3f04442f, 0x6188b153, 0xe0397a2e, 0x5727cb79, 0x9ceb418f, 0x1cacd68d, 0x2ad37c96, 0x0175cb9d, - 0xc69dff09, 0xc75b65f0, 0xd9db40d8, 0xec0e7779, 0x4744ead4, 0xb11c3274, 0xdd24cb9e, 0x7e1c54bd, - 0xf01144f9, 0xd2240eb1, 0x9675b3fd, 0xa3ac3755, 0xd47c27af, 0x51c85f4d, 0x56907596, 0xa5bb15e6, - 0x580304f0, 0xca042cf1, 0x011a37ea, 0x8dbfaadb, 0x35ba3e4a, 0x3526ffa0, 0xc37b4d09, 0xbc306ed9, - 0x98a52666, 0x5648f725, 0xff5e569d, 0x0ced63d0, 0x7c63b2cf, 0x700b45e1, 0xd5ea50f1, 0x85a92872, - 0xaf1fbda7, 0xd4234870, 0xa7870bf3, 0x2d3b4d79, 0x42e04198, 0x0cd0ede7, 0x26470db8, 0xf881814c, - 0x474d6ad7, 0x7c0c5e5c, 0xd1231959, 0x381b7298, 0xf5d2f4db, 0xab838653, 0x6e2f1e23, 0x83719c9e, - 0xbd91e046, 0x9a56456e, 0xdc39200c, 0x20c8c571, 0x962bda1c, 0xe1e696ff, 0xb141ab08, 0x7cca89b9, - 0x1a69e783, 0x02cc4843, 0xa2f7c579, 0x429ef47d, 0x427b169c, 0x5ac9f049, 0xdd8f0f00, 0x5c8165bf, - }, - { - 0x1f201094, 0xef0ba75b, 0x69e3cf7e, 0x393f4380, 0xfe61cf7a, 0xeec5207a, 0x55889c94, 0x72fc0651, - 0xada7ef79, 0x4e1d7235, 0xd55a63ce, 0xde0436ba, 0x99c430ef, 0x5f0c0794, 0x18dcdb7d, 0xa1d6eff3, - 0xa0b52f7b, 0x59e83605, 0xee15b094, 0xe9ffd909, 0xdc440086, 0xef944459, 0xba83ccb3, 0xe0c3cdfb, - 0xd1da4181, 0x3b092ab1, 0xf997f1c1, 0xa5e6cf7b, 0x01420ddb, 0xe4e7ef5b, 0x25a1ff41, 0xe180f806, - 0x1fc41080, 0x179bee7a, 0xd37ac6a9, 0xfe5830a4, 0x98de8b7f, 0x77e83f4e, 0x79929269, 0x24fa9f7b, - 0xe113c85b, 0xacc40083, 0xd7503525, 0xf7ea615f, 0x62143154, 0x0d554b63, 0x5d681121, 0xc866c359, - 0x3d63cf73, 0xcee234c0, 0xd4d87e87, 0x5c672b21, 0x071f6181, 0x39f7627f, 0x361e3084, 0xe4eb573b, - 0x602f64a4, 0xd63acd9c, 0x1bbc4635, 0x9e81032d, 0x2701f50c, 0x99847ab4, 0xa0e3df79, 0xba6cf38c, - 0x10843094, 0x2537a95e, 0xf46f6ffe, 0xa1ff3b1f, 0x208cfb6a, 0x8f458c74, 0xd9e0a227, 0x4ec73a34, - 0xfc884f69, 0x3e4de8df, 0xef0e0088, 0x3559648d, 0x8a45388c, 0x1d804366, 0x721d9bfd, 0xa58684bb, - 0xe8256333, 0x844e8212, 0x128d8098, 0xfed33fb4, 0xce280ae1, 0x27e19ba5, 0xd5a6c252, 0xe49754bd, - 0xc5d655dd, 0xeb667064, 0x77840b4d, 0xa1b6a801, 0x84db26a9, 0xe0b56714, 0x21f043b7, 0xe5d05860, - 0x54f03084, 0x066ff472, 0xa31aa153, 0xdadc4755, 0xb5625dbf, 0x68561be6, 0x83ca6b94, 0x2d6ed23b, - 0xeccf01db, 0xa6d3d0ba, 0xb6803d5c, 0xaf77a709, 0x33b4a34c, 0x397bc8d6, 0x5ee22b95, 0x5f0e5304, - 0x81ed6f61, 0x20e74364, 0xb45e1378, 0xde18639b, 0x881ca122, 0xb96726d1, 0x8049a7e8, 0x22b7da7b, - 0x5e552d25, 0x5272d237, 0x79d2951c, 0xc60d894c, 0x488cb402, 0x1ba4fe5b, 0xa4b09f6b, 0x1ca815cf, - 0xa20c3005, 0x8871df63, 0xb9de2fcb, 0x0cc6c9e9, 0x0beeff53, 0xe3214517, 0xb4542835, 0x9f63293c, - 0xee41e729, 0x6e1d2d7c, 0x50045286, 0x1e6685f3, 0xf33401c6, 0x30a22c95, 0x31a70850, 0x60930f13, - 0x73f98417, 0xa1269859, 0xec645c44, 0x52c877a9, 0xcdff33a6, 0xa02b1741, 0x7cbad9a2, 0x2180036f, - 0x50d99c08, 0xcb3f4861, 0xc26bd765, 0x64a3f6ab, 0x80342676, 0x25a75e7b, 0xe4e6d1fc, 0x20c710e6, - 0xcdf0b680, 0x17844d3b, 0x31eef84d, 0x7e0824e4, 0x2ccb49eb, 0x846a3bae, 0x8ff77888, 0xee5d60f6, - 0x7af75673, 0x2fdd5cdb, 0xa11631c1, 0x30f66f43, 0xb3faec54, 0x157fd7fa, 0xef8579cc, 0xd152de58, - 0xdb2ffd5e, 0x8f32ce19, 0x306af97a, 0x02f03ef8, 0x99319ad5, 0xc242fa0f, 0xa7e3ebb0, 0xc68e4906, - 0xb8da230c, 0x80823028, 0xdcdef3c8, 0xd35fb171, 0x088a1bc8, 0xbec0c560, 0x61a3c9e8, 0xbca8f54d, - 0xc72feffa, 0x22822e99, 0x82c570b4, 0xd8d94e89, 0x8b1c34bc, 0x301e16e6, 0x273be979, 0xb0ffeaa6, - 0x61d9b8c6, 0x00b24869, 0xb7ffce3f, 0x08dc283b, 0x43daf65a, 0xf7e19798, 0x7619b72f, 0x8f1c9ba4, - 0xdc8637a0, 0x16a7d3b1, 0x9fc393b7, 0xa7136eeb, 0xc6bcc63e, 0x1a513742, 0xef6828bc, 0x520365d6, - 0x2d6a77ab, 0x3527ed4b, 0x821fd216, 0x095c6e2e, 0xdb92f2fb, 0x5eea29cb, 0x145892f5, 0x91584f7f, - 0x5483697b, 0x2667a8cc, 0x85196048, 0x8c4bacea, 0x833860d4, 0x0d23e0f9, 0x6c387e8a, 0x0ae6d249, - 0xb284600c, 0xd835731d, 0xdcb1c647, 0xac4c56ea, 0x3ebd81b3, 0x230eabb0, 0x6438bc87, 0xf0b5b1fa, - 0x8f5ea2b3, 0xfc184642, 0x0a036b7a, 0x4fb089bd, 0x649da589, 0xa345415e, 0x5c038323, 0x3e5d3bb9, - 0x43d79572, 0x7e6dd07c, 0x06dfdf1e, 0x6c6cc4ef, 0x7160a539, 0x73bfbe70, 0x83877605, 0x4523ecf1, - }, - { - 0x8defc240, 0x25fa5d9f, 0xeb903dbf, 0xe810c907, 0x47607fff, 0x369fe44b, 0x8c1fc644, 0xaececa90, - 0xbeb1f9bf, 0xeefbcaea, 0xe8cf1950, 0x51df07ae, 0x920e8806, 0xf0ad0548, 0xe13c8d83, 0x927010d5, - 0x11107d9f, 0x07647db9, 0xb2e3e4d4, 0x3d4f285e, 0xb9afa820, 0xfade82e0, 0xa067268b, 0x8272792e, - 0x553fb2c0, 0x489ae22b, 0xd4ef9794, 0x125e3fbc, 0x21fffcee, 0x825b1bfd, 0x9255c5ed, 0x1257a240, - 0x4e1a8302, 0xbae07fff, 0x528246e7, 0x8e57140e, 0x3373f7bf, 0x8c9f8188, 0xa6fc4ee8, 0xc982b5a5, - 0xa8c01db7, 0x579fc264, 0x67094f31, 0xf2bd3f5f, 0x40fff7c1, 0x1fb78dfc, 0x8e6bd2c1, 0x437be59b, - 0x99b03dbf, 0xb5dbc64b, 0x638dc0e6, 0x55819d99, 0xa197c81c, 0x4a012d6e, 0xc5884a28, 0xccc36f71, - 0xb843c213, 0x6c0743f1, 0x8309893c, 0x0feddd5f, 0x2f7fe850, 0xd7c07f7e, 0x02507fbf, 0x5afb9a04, - 0xa747d2d0, 0x1651192e, 0xaf70bf3e, 0x58c31380, 0x5f98302e, 0x727cc3c4, 0x0a0fb402, 0x0f7fef82, - 0x8c96fdad, 0x5d2c2aae, 0x8ee99a49, 0x50da88b8, 0x8427f4a0, 0x1eac5790, 0x796fb449, 0x8252dc15, - 0xefbd7d9b, 0xa672597d, 0xada840d8, 0x45f54504, 0xfa5d7403, 0xe83ec305, 0x4f91751a, 0x925669c2, - 0x23efe941, 0xa903f12e, 0x60270df2, 0x0276e4b6, 0x94fd6574, 0x927985b2, 0x8276dbcb, 0x02778176, - 0xf8af918d, 0x4e48f79e, 0x8f616ddf, 0xe29d840e, 0x842f7d83, 0x340ce5c8, 0x96bbb682, 0x93b4b148, - 0xef303cab, 0x984faf28, 0x779faf9b, 0x92dc560d, 0x224d1e20, 0x8437aa88, 0x7d29dc96, 0x2756d3dc, - 0x8b907cee, 0xb51fd240, 0xe7c07ce3, 0xe566b4a1, 0xc3e9615e, 0x3cf8209d, 0x6094d1e3, 0xcd9ca341, - 0x5c76460e, 0x00ea983b, 0xd4d67881, 0xfd47572c, 0xf76cedd9, 0xbda8229c, 0x127dadaa, 0x438a074e, - 0x1f97c090, 0x081bdb8a, 0x93a07ebe, 0xb938ca15, 0x97b03cff, 0x3dc2c0f8, 0x8d1ab2ec, 0x64380e51, - 0x68cc7bfb, 0xd90f2788, 0x12490181, 0x5de5ffd4, 0xdd7ef86a, 0x76a2e214, 0xb9a40368, 0x925d958f, - 0x4b39fffa, 0xba39aee9, 0xa4ffd30b, 0xfaf7933b, 0x6d498623, 0x193cbcfa, 0x27627545, 0x825cf47a, - 0x61bd8ba0, 0xd11e42d1, 0xcead04f4, 0x127ea392, 0x10428db7, 0x8272a972, 0x9270c4a8, 0x127de50b, - 0x285ba1c8, 0x3c62f44f, 0x35c0eaa5, 0xe805d231, 0x428929fb, 0xb4fcdf82, 0x4fb66a53, 0x0e7dc15b, - 0x1f081fab, 0x108618ae, 0xfcfd086d, 0xf9ff2889, 0x694bcc11, 0x236a5cae, 0x12deca4d, 0x2c3f8cc5, - 0xd2d02dfe, 0xf8ef5896, 0xe4cf52da, 0x95155b67, 0x494a488c, 0xb9b6a80c, 0x5c8f82bc, 0x89d36b45, - 0x3a609437, 0xec00c9a9, 0x44715253, 0x0a874b49, 0xd773bc40, 0x7c34671c, 0x02717ef6, 0x4feb5536, - 0xa2d02fff, 0xd2bf60c4, 0xd43f03c0, 0x50b4ef6d, 0x07478cd1, 0x006e1888, 0xa2e53f55, 0xb9e6d4bc, - 0xa2048016, 0x97573833, 0xd7207d67, 0xde0f8f3d, 0x72f87b33, 0xabcc4f33, 0x7688c55d, 0x7b00a6b0, - 0x947b0001, 0x570075d2, 0xf9bb88f8, 0x8942019e, 0x4264a5ff, 0x856302e0, 0x72dbd92b, 0xee971b69, - 0x6ea22fde, 0x5f08ae2b, 0xaf7a616d, 0xe5c98767, 0xcf1febd2, 0x61efc8c2, 0xf1ac2571, 0xcc8239c2, - 0x67214cb8, 0xb1e583d1, 0xb7dc3e62, 0x7f10bdce, 0xf90a5c38, 0x0ff0443d, 0x606e6dc6, 0x60543a49, - 0x5727c148, 0x2be98a1d, 0x8ab41738, 0x20e1be24, 0xaf96da0f, 0x68458425, 0x99833be5, 0x600d457d, - 0x282f9350, 0x8334b362, 0xd91d1120, 0x2b6d8da0, 0x642b1e31, 0x9c305a00, 0x52bce688, 0x1b03588a, - 0xf7baefd5, 0x4142ed9c, 0xa4315c11, 0x83323ec5, 0xdfef4636, 0xa133c501, 0xe9d3531c, 0xee353783, - }, - { - 0x9db30420, 0x1fb6e9de, 0xa7be7bef, 0xd273a298, 0x4a4f7bdb, 0x64ad8c57, 0x85510443, 0xfa020ed1, - 0x7e287aff, 0xe60fb663, 0x095f35a1, 0x79ebf120, 0xfd059d43, 0x6497b7b1, 0xf3641f63, 0x241e4adf, - 0x28147f5f, 0x4fa2b8cd, 0xc9430040, 0x0cc32220, 0xfdd30b30, 0xc0a5374f, 0x1d2d00d9, 0x24147b15, - 0xee4d111a, 0x0fca5167, 0x71ff904c, 0x2d195ffe, 0x1a05645f, 0x0c13fefe, 0x081b08ca, 0x05170121, - 0x80530100, 0xe83e5efe, 0xac9af4f8, 0x7fe72701, 0xd2b8ee5f, 0x06df4261, 0xbb9e9b8a, 0x7293ea25, - 0xce84ffdf, 0xf5718801, 0x3dd64b04, 0xa26f263b, 0x7ed48400, 0x547eebe6, 0x446d4ca0, 0x6cf3d6f5, - 0x2649abdf, 0xaea0c7f5, 0x36338cc1, 0x503f7e93, 0xd3772061, 0x11b638e1, 0x72500e03, 0xf80eb2bb, - 0xabe0502e, 0xec8d77de, 0x57971e81, 0xe14f6746, 0xc9335400, 0x6920318f, 0x081dbb99, 0xffc304a5, - 0x4d351805, 0x7f3d5ce3, 0xa6c866c6, 0x5d5bcca9, 0xdaec6fea, 0x9f926f91, 0x9f46222f, 0x3991467d, - 0xa5bf6d8e, 0x1143c44f, 0x43958302, 0xd0214eeb, 0x022083b8, 0x3fb6180c, 0x18f8931e, 0x281658e6, - 0x26486e3e, 0x8bd78a70, 0x7477e4c1, 0xb506e07c, 0xf32d0a25, 0x79098b02, 0xe4eabb81, 0x28123b23, - 0x69dead38, 0x1574ca16, 0xdf871b62, 0x211c40b7, 0xa51a9ef9, 0x0014377b, 0x041e8ac8, 0x09114003, - 0xbd59e4d2, 0xe3d156d5, 0x4fe876d5, 0x2f91a340, 0x557be8de, 0x00eae4a7, 0x0ce5c2ec, 0x4db4bba6, - 0xe756bdff, 0xdd3369ac, 0xec17b035, 0x06572327, 0x99afc8b0, 0x56c8c391, 0x6b65811c, 0x5e146119, - 0x6e85cb75, 0xbe07c002, 0xc2325577, 0x893ff4ec, 0x5bbfc92d, 0xd0ec3b25, 0xb7801ab7, 0x8d6d3b24, - 0x20c763ef, 0xc366a5fc, 0x9c382880, 0x0ace3205, 0xaac9548a, 0xeca1d7c7, 0x041afa32, 0x1d16625a, - 0x6701902c, 0x9b757a54, 0x31d477f7, 0x9126b031, 0x36cc6fdb, 0xc70b8b46, 0xd9e66a48, 0x56e55a79, - 0x026a4ceb, 0x52437eff, 0x2f8f76b4, 0x0df980a5, 0x8674cde3, 0xedda04eb, 0x17a9be04, 0x2c18f4df, - 0xb7747f9d, 0xab2af7b4, 0xefc34d20, 0x2e096b7c, 0x1741a254, 0xe5b6a035, 0x213d42f6, 0x2c1c7c26, - 0x61c2f50f, 0x6552daf9, 0xd2c231f8, 0x25130f69, 0xd8167fa2, 0x0418f2c8, 0x001a96a6, 0x0d1526ab, - 0x63315c21, 0x5e0a72ec, 0x49bafefd, 0x187908d9, 0x8d0dbd86, 0x311170a7, 0x3e9b640c, 0xcc3e10d7, - 0xd5cad3b6, 0x0caec388, 0xf73001e1, 0x6c728aff, 0x71eae2a1, 0x1f9af36e, 0xcfcbd12f, 0xc1de8417, - 0xac07be6b, 0xcb44a1d8, 0x8b9b0f56, 0x013988c3, 0xb1c52fca, 0xb4be31cd, 0xd8782806, 0x12a3a4e2, - 0x6f7de532, 0x58fd7eb6, 0xd01ee900, 0x24adffc2, 0xf4990fc5, 0x9711aac5, 0x001d7b95, 0x82e5e7d2, - 0x109873f6, 0x00613096, 0xc32d9521, 0xada121ff, 0x29908415, 0x7fbb977f, 0xaf9eb3db, 0x29c9ed2a, - 0x5ce2a465, 0xa730f32c, 0xd0aa3fe8, 0x8a5cc091, 0xd49e2ce7, 0x0ce454a9, 0xd60acd86, 0x015f1919, - 0x77079103, 0xdea03af6, 0x78a8565e, 0xdee356df, 0x21f05cbe, 0x8b75e387, 0xb3c50651, 0xb8a5c3ef, - 0xd8eeb6d2, 0xe523be77, 0xc2154529, 0x2f69efdf, 0xafe67afb, 0xf470c4b2, 0xf3e0eb5b, 0xd6cc9876, - 0x39e4460c, 0x1fda8538, 0x1987832f, 0xca007367, 0xa99144f8, 0x296b299e, 0x492fc295, 0x9266beab, - 0xb5676e69, 0x9bd3ddda, 0xdf7e052f, 0xdb25701c, 0x1b5e51ee, 0xf65324e6, 0x6afce36c, 0x0316cc04, - 0x8644213e, 0xb7dc59d0, 0x7965291f, 0xccd6fd43, 0x41823979, 0x932bcdf6, 0xb657c34d, 0x4edfd282, - 0x7ae5290c, 0x3cb9536b, 0x851e20fe, 0x9833557e, 0x13ecf0b0, 0xd3ffb372, 0x3f85c5c1, 0x0aef7ed2, - }, - { - 0x7ec90c04, 0x2c6e74b9, 0x9b0e66df, 0xa6337911, 0xb86a7fff, 0x1dd358f5, 0x44dd9d44, 0x1731167f, - 0x08fbf1fa, 0xe7f511cc, 0xd2051b00, 0x735aba00, 0x2ab722d8, 0x386381cb, 0xacf6243a, 0x69befd7a, - 0xe6a2e77f, 0xf0c720cd, 0xc4494816, 0xccf5c180, 0x38851640, 0x15b0a848, 0xe68b18cb, 0x4caadeff, - 0x5f480a01, 0x0412b2aa, 0x259814fc, 0x41d0efe2, 0x4e40b48d, 0x248eb6fb, 0x8dba1cfe, 0x41a99b02, - 0x1a550a04, 0xba8f65cb, 0x7251f4e7, 0x95a51725, 0xc106ecd7, 0x97a5980a, 0xc539b9aa, 0x4d79fe6a, - 0xf2f3f763, 0x68af8040, 0xed0c9e56, 0x11b4958b, 0xe1eb5a88, 0x8709e6b0, 0xd7e07156, 0x4e29fea7, - 0x6366e52d, 0x02d1c000, 0xc4ac8e05, 0x9377f571, 0x0c05372a, 0x578535f2, 0x2261be02, 0xd642a0c9, - 0xdf13a280, 0x74b55bd2, 0x682199c0, 0xd421e5ec, 0x53fb3ce8, 0xc8adedb3, 0x28a87fc9, 0x3d959981, - 0x5c1ff900, 0xfe38d399, 0x0c4eff0b, 0x062407ea, 0xaa2f4fb1, 0x4fb96976, 0x90c79505, 0xb0a8a774, - 0xef55a1ff, 0xe59ca2c2, 0xa6b62d27, 0xe66a4263, 0xdf65001f, 0x0ec50966, 0xdfdd55bc, 0x29de0655, - 0x911e739a, 0x17af8975, 0x32c7911c, 0x89f89468, 0x0d01e980, 0x524755f4, 0x03b63cc9, 0x0cc844b2, - 0xbcf3f0aa, 0x87ac36e9, 0xe53a7426, 0x01b3d82b, 0x1a9e7449, 0x64ee2d7e, 0xcddbb1da, 0x01c94910, - 0xb868bf80, 0x0d26f3fd, 0x9342ede7, 0x04a5c284, 0x636737b6, 0x50f5b616, 0xf24766e3, 0x8eca36c1, - 0x136e05db, 0xfef18391, 0xfb887a37, 0xd6e7f7d4, 0xc7fb7dc9, 0x3063fcdf, 0xb6f589de, 0xec2941da, - 0x26e46695, 0xb7566419, 0xf654efc5, 0xd08d58b7, 0x48925401, 0xc1bacb7f, 0xe5ff550f, 0xb6083049, - 0x5bb5d0e8, 0x87d72e5a, 0xab6a6ee1, 0x223a66ce, 0xc62bf3cd, 0x9e0885f9, 0x68cb3e47, 0x086c010f, - 0xa21de820, 0xd18b69de, 0xf3f65777, 0xfa02c3f6, 0x407edac3, 0xcbb3d550, 0x1793084d, 0xb0d70eba, - 0x0ab378d5, 0xd951fb0c, 0xded7da56, 0x4124bbe4, 0x94ca0b56, 0x0f5755d1, 0xe0e1e56e, 0x6184b5be, - 0x580a249f, 0x94f74bc0, 0xe327888e, 0x9f7b5561, 0xc3dc0280, 0x05687715, 0x646c6bd7, 0x44904db3, - 0x66b4f0a3, 0xc0f1648a, 0x697ed5af, 0x49e92ff6, 0x309e374f, 0x2cb6356a, 0x85808573, 0x4991f840, - 0x76f0ae02, 0x083be84d, 0x28421c9a, 0x44489406, 0x736e4cb8, 0xc1092910, 0x8bc95fc6, 0x7d869cf4, - 0x134f616f, 0x2e77118d, 0xb31b2be1, 0xaa90b472, 0x3ca5d717, 0x7d161bba, 0x9cad9010, 0xaf462ba2, - 0x9fe459d2, 0x45d34559, 0xd9f2da13, 0xdbc65487, 0xf3e4f94e, 0x176d486f, 0x097c13ea, 0x631da5c7, - 0x445f7382, 0x175683f4, 0xcdc66a97, 0x70be0288, 0xb3cdcf72, 0x6e5dd2f3, 0x20936079, 0x459b80a5, - 0xbe60e2db, 0xa9c23101, 0xeba5315c, 0x224e42f2, 0x1c5c1572, 0xf6721b2c, 0x1ad2fff3, 0x8c25404e, - 0x324ed72f, 0x4067b7fd, 0x0523138e, 0x5ca3bc78, 0xdc0fd66e, 0x75922283, 0x784d6b17, 0x58ebb16e, - 0x44094f85, 0x3f481d87, 0xfcfeae7b, 0x77b5ff76, 0x8c2302bf, 0xaaf47556, 0x5f46b02a, 0x2b092801, - 0x3d38f5f7, 0x0ca81f36, 0x52af4a8a, 0x66d5e7c0, 0xdf3b0874, 0x95055110, 0x1b5ad7a8, 0xf61ed5ad, - 0x6cf6e479, 0x20758184, 0xd0cefa65, 0x88f7be58, 0x4a046826, 0x0ff6f8f3, 0xa09c7f70, 0x5346aba0, - 0x5ce96c28, 0xe176eda3, 0x6bac307f, 0x376829d2, 0x85360fa9, 0x17e3fe2a, 0x24b79767, 0xf5a96b20, - 0xd6cd2595, 0x68ff1ebf, 0x7555442c, 0xf19f06be, 0xf9e0659a, 0xeeb9491d, 0x34010718, 0xbb30cab8, - 0xe822fe15, 0x88570983, 0x750e6249, 0xda627e55, 0x5e76ffa8, 0xb1534546, 0x6d47de08, 0xefe9e7d4, - }, - { - 0xf6fa8f9d, 0x2cac6ce1, 0x4ca34867, 0xe2337f7c, 0x95db08e7, 0x016843b4, 0xeced5cbc, 0x325553ac, - 0xbf9f0960, 0xdfa1e2ed, 0x83f0579d, 0x63ed86b9, 0x1ab6a6b8, 0xde5ebe39, 0xf38ff732, 0x8989b138, - 0x33f14961, 0xc01937bd, 0xf506c6da, 0xe4625e7e, 0xa308ea99, 0x4e23e33c, 0x79cbd7cc, 0x48a14367, - 0xa3149619, 0xfec94bd5, 0xa114174a, 0xeaa01866, 0xa084db2d, 0x09a8486f, 0xa888614a, 0x2900af98, - 0x01665991, 0xe1992863, 0xc8f30c60, 0x2e78ef3c, 0xd0d51932, 0xcf0fec14, 0xf7ca07d2, 0xd0a82072, - 0xfd41197e, 0x9305a6b0, 0xe86be3da, 0x74bed3cd, 0x372da53c, 0x4c7f4448, 0xdab5d440, 0x6dba0ec3, - 0x083919a7, 0x9fbaeed9, 0x49dbcfb0, 0x4e670c53, 0x5c3d9c01, 0x64bdb941, 0x2c0e636a, 0xba7dd9cd, - 0xea6f7388, 0xe70bc762, 0x35f29adb, 0x5c4cdd8d, 0xf0d48d8c, 0xb88153e2, 0x08a19866, 0x1ae2eac8, - 0x284caf89, 0xaa928223, 0x9334be53, 0x3b3a21bf, 0x16434be3, 0x9aea3906, 0xefe8c36e, 0xf890cdd9, - 0x80226dae, 0xc340a4a3, 0xdf7e9c09, 0xa694a807, 0x5b7c5ecc, 0x221db3a6, 0x9a69a02f, 0x68818a54, - 0xceb2296f, 0x53c0843a, 0xfe893655, 0x25bfe68a, 0xb4628abc, 0xcf222ebf, 0x25ac6f48, 0xa9a99387, - 0x53bddb65, 0xe76ffbe7, 0xe967fd78, 0x0ba93563, 0x8e342bc1, 0xe8a11be9, 0x4980740d, 0xc8087dfc, - 0x8de4bf99, 0xa11101a0, 0x7fd37975, 0xda5a26c0, 0xe81f994f, 0x9528cd89, 0xfd339fed, 0xb87834bf, - 0x5f04456d, 0x22258698, 0xc9c4c83b, 0x2dc156be, 0x4f628daa, 0x57f55ec5, 0xe2220abe, 0xd2916ebf, - 0x4ec75b95, 0x24f2c3c0, 0x42d15d99, 0xcd0d7fa0, 0x7b6e27ff, 0xa8dc8af0, 0x7345c106, 0xf41e232f, - 0x35162386, 0xe6ea8926, 0x3333b094, 0x157ec6f2, 0x372b74af, 0x692573e4, 0xe9a9d848, 0xf3160289, - 0x3a62ef1d, 0xa787e238, 0xf3a5f676, 0x74364853, 0x20951063, 0x4576698d, 0xb6fad407, 0x592af950, - 0x36f73523, 0x4cfb6e87, 0x7da4cec0, 0x6c152daa, 0xcb0396a8, 0xc50dfe5d, 0xfcd707ab, 0x0921c42f, - 0x89dff0bb, 0x5fe2be78, 0x448f4f33, 0x754613c9, 0x2b05d08d, 0x48b9d585, 0xdc049441, 0xc8098f9b, - 0x7dede786, 0xc39a3373, 0x42410005, 0x6a091751, 0x0ef3c8a6, 0x890072d6, 0x28207682, 0xa9a9f7be, - 0xbf32679d, 0xd45b5b75, 0xb353fd00, 0xcbb0e358, 0x830f220a, 0x1f8fb214, 0xd372cf08, 0xcc3c4a13, - 0x8cf63166, 0x061c87be, 0x88c98f88, 0x6062e397, 0x47cf8e7a, 0xb6c85283, 0x3cc2acfb, 0x3fc06976, - 0x4e8f0252, 0x64d8314d, 0xda3870e3, 0x1e665459, 0xc10908f0, 0x513021a5, 0x6c5b68b7, 0x822f8aa0, - 0x3007cd3e, 0x74719eef, 0xdc872681, 0x073340d4, 0x7e432fd9, 0x0c5ec241, 0x8809286c, 0xf592d891, - 0x08a930f6, 0x957ef305, 0xb7fbffbd, 0xc266e96f, 0x6fe4ac98, 0xb173ecc0, 0xbc60b42a, 0x953498da, - 0xfba1ae12, 0x2d4bd736, 0x0f25faab, 0xa4f3fceb, 0xe2969123, 0x257f0c3d, 0x9348af49, 0x361400bc, - 0xe8816f4a, 0x3814f200, 0xa3f94043, 0x9c7a54c2, 0xbc704f57, 0xda41e7f9, 0xc25ad33a, 0x54f4a084, - 0xb17f5505, 0x59357cbe, 0xedbd15c8, 0x7f97c5ab, 0xba5ac7b5, 0xb6f6deaf, 0x3a479c3a, 0x5302da25, - 0x653d7e6a, 0x54268d49, 0x51a477ea, 0x5017d55b, 0xd7d25d88, 0x44136c76, 0x0404a8c8, 0xb8e5a121, - 0xb81a928a, 0x60ed5869, 0x97c55b96, 0xeaec991b, 0x29935913, 0x01fdb7f1, 0x088e8dfa, 0x9ab6f6f5, - 0x3b4cbf9f, 0x4a5de3ab, 0xe6051d35, 0xa0e1d855, 0xd36b4cf1, 0xf544edeb, 0xb0e93524, 0xbebb8fbd, - 0xa2d762cf, 0x49c92f54, 0x38b5f331, 0x7128a454, 0x48392905, 0xa65b1db8, 0x851c97bd, 0xd675cf2f, - }, - { - 0x85e04019, 0x332bf567, 0x662dbfff, 0xcfc65693, 0x2a8d7f6f, 0xab9bc912, 0xde6008a1, 0x2028da1f, - 0x0227bce7, 0x4d642916, 0x18fac300, 0x50f18b82, 0x2cb2cb11, 0xb232e75c, 0x4b3695f2, 0xb28707de, - 0xa05fbcf6, 0xcd4181e9, 0xe150210c, 0xe24ef1bd, 0xb168c381, 0xfde4e789, 0x5c79b0d8, 0x1e8bfd43, - 0x4d495001, 0x38be4341, 0x913cee1d, 0x92a79c3f, 0x089766be, 0xbaeeadf4, 0x1286becf, 0xb6eacb19, - 0x2660c200, 0x7565bde4, 0x64241f7a, 0x8248dca9, 0xc3b3ad66, 0x28136086, 0x0bd8dfa8, 0x356d1cf2, - 0x107789be, 0xb3b2e9ce, 0x0502aa8f, 0x0bc0351e, 0x166bf52a, 0xeb12ff82, 0xe3486911, 0xd34d7516, - 0x4e7b3aff, 0x5f43671b, 0x9cf6e037, 0x4981ac83, 0x334266ce, 0x8c9341b7, 0xd0d854c0, 0xcb3a6c88, - 0x47bc2829, 0x4725ba37, 0xa66ad22b, 0x7ad61f1e, 0x0c5cbafa, 0x4437f107, 0xb6e79962, 0x42d2d816, - 0x0a961288, 0xe1a5c06e, 0x13749e67, 0x72fc081a, 0xb1d139f7, 0xf9583745, 0xcf19df58, 0xbec3f756, - 0xc06eba30, 0x07211b24, 0x45c28829, 0xc95e317f, 0xbc8ec511, 0x38bc46e9, 0xc6e6fa14, 0xbae8584a, - 0xad4ebc46, 0x468f508b, 0x7829435f, 0xf124183b, 0x821dba9f, 0xaff60ff4, 0xea2c4e6d, 0x16e39264, - 0x92544a8b, 0x009b4fc3, 0xaba68ced, 0x9ac96f78, 0x06a5b79a, 0xb2856e6e, 0x1aec3ca9, 0xbe838688, - 0x0e0804e9, 0x55f1be56, 0xe7e5363b, 0xb3a1f25d, 0xf7debb85, 0x61fe033c, 0x16746233, 0x3c034c28, - 0xda6d0c74, 0x79aac56c, 0x3ce4e1ad, 0x51f0c802, 0x98f8f35a, 0x1626a49f, 0xeed82b29, 0x1d382fe3, - 0x0c4fb99a, 0xbb325778, 0x3ec6d97b, 0x6e77a6a9, 0xcb658b5c, 0xd45230c7, 0x2bd1408b, 0x60c03eb7, - 0xb9068d78, 0xa33754f4, 0xf430c87d, 0xc8a71302, 0xb96d8c32, 0xebd4e7be, 0xbe8b9d2d, 0x7979fb06, - 0xe7225308, 0x8b75cf77, 0x11ef8da4, 0xe083c858, 0x8d6b786f, 0x5a6317a6, 0xfa5cf7a0, 0x5dda0033, - 0xf28ebfb0, 0xf5b9c310, 0xa0eac280, 0x08b9767a, 0xa3d9d2b0, 0x79d34217, 0x021a718d, 0x9ac6336a, - 0x2711fd60, 0x438050e3, 0x069908a8, 0x3d7fedc4, 0x826d2bef, 0x4eeb8476, 0x488dcf25, 0x36c9d566, - 0x28e74e41, 0xc2610aca, 0x3d49a9cf, 0xbae3b9df, 0xb65f8de6, 0x92aeaf64, 0x3ac7d5e6, 0x9ea80509, - 0xf22b017d, 0xa4173f70, 0xdd1e16c3, 0x15e0d7f9, 0x50b1b887, 0x2b9f4fd5, 0x625aba82, 0x6a017962, - 0x2ec01b9c, 0x15488aa9, 0xd716e740, 0x40055a2c, 0x93d29a22, 0xe32dbf9a, 0x058745b9, 0x3453dc1e, - 0xd699296e, 0x496cff6f, 0x1c9f4986, 0xdfe2ed07, 0xb87242d1, 0x19de7eae, 0x053e561a, 0x15ad6f8c, - 0x66626c1c, 0x7154c24c, 0xea082b2a, 0x93eb2939, 0x17dcb0f0, 0x58d4f2ae, 0x9ea294fb, 0x52cf564c, - 0x9883fe66, 0x2ec40581, 0x763953c3, 0x01d6692e, 0xd3a0c108, 0xa1e7160e, 0xe4f2dfa6, 0x693ed285, - 0x74904698, 0x4c2b0edd, 0x4f757656, 0x5d393378, 0xa132234f, 0x3d321c5d, 0xc3f5e194, 0x4b269301, - 0xc79f022f, 0x3c997e7e, 0x5e4f9504, 0x3ffafbbd, 0x76f7ad0e, 0x296693f4, 0x3d1fce6f, 0xc61e45be, - 0xd3b5ab34, 0xf72bf9b7, 0x1b0434c0, 0x4e72b567, 0x5592a33d, 0xb5229301, 0xcfd2a87f, 0x60aeb767, - 0x1814386b, 0x30bcc33d, 0x38a0c07d, 0xfd1606f2, 0xc363519b, 0x589dd390, 0x5479f8e6, 0x1cb8d647, - 0x97fd61a9, 0xea7759f4, 0x2d57539d, 0x569a58cf, 0xe84e63ad, 0x462e1b78, 0x6580f87e, 0xf3817914, - 0x91da55f4, 0x40a230f3, 0xd1988f35, 0xb6e318d2, 0x3ffa50bc, 0x3d40f021, 0xc3c0bdae, 0x4958c24c, - 0x518f36b2, 0x84b1d370, 0x0fedce83, 0x878ddada, 0xf2a279c7, 0x94e01be8, 0x90716f4b, 0x954b8aa3, - }, - { - 0xe216300d, 0xbbddfffc, 0xa7ebdabd, 0x35648095, 0x7789f8b7, 0xe6c1121b, 0x0e241600, 0x052ce8b5, - 0x11a9cfb0, 0xe5952f11, 0xece7990a, 0x9386d174, 0x2a42931c, 0x76e38111, 0xb12def3a, 0x37ddddfc, - 0xde9adeb1, 0x0a0cc32c, 0xbe197029, 0x84a00940, 0xbb243a0f, 0xb4d137cf, 0xb44e79f0, 0x049eedfd, - 0x0b15a15d, 0x480d3168, 0x8bbbde5a, 0x669ded42, 0xc7ece831, 0x3f8f95e7, 0x72df191b, 0x7580330d, - 0x94074251, 0x5c7dcdfa, 0xabbe6d63, 0xaa402164, 0xb301d40a, 0x02e7d1ca, 0x53571dae, 0x7a3182a2, - 0x12a8ddec, 0xfdaa335d, 0x176f43e8, 0x71fb46d4, 0x38129022, 0xce949ad4, 0xb84769ad, 0x965bd862, - 0x82f3d055, 0x66fb9767, 0x15b80b4e, 0x1d5b47a0, 0x4cfde06f, 0xc28ec4b8, 0x57e8726e, 0x647a78fc, - 0x99865d44, 0x608bd593, 0x6c200e03, 0x39dc5ff6, 0x5d0b00a3, 0xae63aff2, 0x7e8bd632, 0x70108c0c, - 0xbbd35049, 0x2998df04, 0x980cf42a, 0x9b6df491, 0x9e7edd53, 0x06918548, 0x58cb7e07, 0x3b74ef2e, - 0x522fffb1, 0xd24708cc, 0x1c7e27cd, 0xa4eb215b, 0x3cf1d2e2, 0x19b47a38, 0x424f7618, 0x35856039, - 0x9d17dee7, 0x27eb35e6, 0xc9aff67b, 0x36baf5b8, 0x09c467cd, 0xc18910b1, 0xe11dbf7b, 0x06cd1af8, - 0x7170c608, 0x2d5e3354, 0xd4de495a, 0x64c6d006, 0xbcc0c62c, 0x3dd00db3, 0x708f8f34, 0x77d51b42, - 0x264f620f, 0x24b8d2bf, 0x15c1b79e, 0x46a52564, 0xf8d7e54e, 0x3e378160, 0x7895cda5, 0x859c15a5, - 0xe6459788, 0xc37bc75f, 0xdb07ba0c, 0x0676a3ab, 0x7f229b1e, 0x31842e7b, 0x24259fd7, 0xf8bef472, - 0x835ffcb8, 0x6df4c1f2, 0x96f5b195, 0xfd0af0fc, 0xb0fe134c, 0xe2506d3d, 0x4f9b12ea, 0xf215f225, - 0xa223736f, 0x9fb4c428, 0x25d04979, 0x34c713f8, 0xc4618187, 0xea7a6e98, 0x7cd16efc, 0x1436876c, - 0xf1544107, 0xbedeee14, 0x56e9af27, 0xa04aa441, 0x3cf7c899, 0x92ecbae6, 0xdd67016d, 0x151682eb, - 0xa842eedf, 0xfdba60b4, 0xf1907b75, 0x20e3030f, 0x24d8c29e, 0xe139673b, 0xefa63fb8, 0x71873054, - 0xb6f2cf3b, 0x9f326442, 0xcb15a4cc, 0xb01a4504, 0xf1e47d8d, 0x844a1be5, 0xbae7dfdc, 0x42cbda70, - 0xcd7dae0a, 0x57e85b7a, 0xd53f5af6, 0x20cf4d8c, 0xcea4d428, 0x79d130a4, 0x3486ebfb, 0x33d3cddc, - 0x77853b53, 0x37effcb5, 0xc5068778, 0xe580b3e6, 0x4e68b8f4, 0xc5c8b37e, 0x0d809ea2, 0x398feb7c, - 0x132a4f94, 0x43b7950e, 0x2fee7d1c, 0x223613bd, 0xdd06caa2, 0x37df932b, 0xc4248289, 0xacf3ebc3, - 0x5715f6b7, 0xef3478dd, 0xf267616f, 0xc148cbe4, 0x9052815e, 0x5e410fab, 0xb48a2465, 0x2eda7fa4, - 0xe87b40e4, 0xe98ea084, 0x5889e9e1, 0xefd390fc, 0xdd07d35b, 0xdb485694, 0x38d7e5b2, 0x57720101, - 0x730edebc, 0x5b643113, 0x94917e4f, 0x503c2fba, 0x646f1282, 0x7523d24a, 0xe0779695, 0xf9c17a8f, - 0x7a5b2121, 0xd187b896, 0x29263a4d, 0xba510cdf, 0x81f47c9f, 0xad1163ed, 0xea7b5965, 0x1a00726e, - 0x11403092, 0x00da6d77, 0x4a0cdd61, 0xad1f4603, 0x605bdfb0, 0x9eedc364, 0x22ebe6a8, 0xcee7d28a, - 0xa0e736a0, 0x5564a6b9, 0x10853209, 0xc7eb8f37, 0x2de705ca, 0x8951570f, 0xdf09822b, 0xbd691a6c, - 0xaa12e4f2, 0x87451c0f, 0xe0f6a27a, 0x3ada4819, 0x4cf1764f, 0x0d771c2b, 0x67cdb156, 0x350d8384, - 0x5938fa0f, 0x42399ef3, 0x36997b07, 0x0e84093d, 0x4aa93e61, 0x8360d87b, 0x1fa98b0c, 0x1149382c, - 0xe97625a5, 0x0614d1b7, 0x0e25244b, 0x0c768347, 0x589e8d82, 0x0d2059d1, 0xa466bb1e, 0xf8da0a82, - 0x04f19130, 0xba6e4ec0, 0x99265164, 0x1ee7230d, 0x50b2ad80, 0xeaee6801, 0x8db2a283, 0xea8bf59e, - }, -} diff --git a/vendor/golang.org/x/crypto/chacha20/chacha_arm64.go b/vendor/golang.org/x/crypto/chacha20/chacha_arm64.go deleted file mode 100644 index 94c71ac..0000000 --- a/vendor/golang.org/x/crypto/chacha20/chacha_arm64.go +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2018 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:build go1.11 && gc && !purego -// +build go1.11,gc,!purego - -package chacha20 - -const bufSize = 256 - -//go:noescape -func xorKeyStreamVX(dst, src []byte, key *[8]uint32, nonce *[3]uint32, counter *uint32) - -func (c *Cipher) xorKeyStreamBlocks(dst, src []byte) { - xorKeyStreamVX(dst, src, &c.key, &c.nonce, &c.counter) -} diff --git a/vendor/golang.org/x/crypto/chacha20/chacha_arm64.s b/vendor/golang.org/x/crypto/chacha20/chacha_arm64.s deleted file mode 100644 index 63cae9e..0000000 --- a/vendor/golang.org/x/crypto/chacha20/chacha_arm64.s +++ /dev/null @@ -1,308 +0,0 @@ -// Copyright 2018 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:build go1.11 && gc && !purego -// +build go1.11,gc,!purego - -#include "textflag.h" - -#define NUM_ROUNDS 10 - -// func xorKeyStreamVX(dst, src []byte, key *[8]uint32, nonce *[3]uint32, counter *uint32) -TEXT ·xorKeyStreamVX(SB), NOSPLIT, $0 - MOVD dst+0(FP), R1 - MOVD src+24(FP), R2 - MOVD src_len+32(FP), R3 - MOVD key+48(FP), R4 - MOVD nonce+56(FP), R6 - MOVD counter+64(FP), R7 - - MOVD $·constants(SB), R10 - MOVD $·incRotMatrix(SB), R11 - - MOVW (R7), R20 - - AND $~255, R3, R13 - ADD R2, R13, R12 // R12 for block end - AND $255, R3, R13 -loop: - MOVD $NUM_ROUNDS, R21 - VLD1 (R11), [V30.S4, V31.S4] - - // load contants - // VLD4R (R10), [V0.S4, V1.S4, V2.S4, V3.S4] - WORD $0x4D60E940 - - // load keys - // VLD4R 16(R4), [V4.S4, V5.S4, V6.S4, V7.S4] - WORD $0x4DFFE884 - // VLD4R 16(R4), [V8.S4, V9.S4, V10.S4, V11.S4] - WORD $0x4DFFE888 - SUB $32, R4 - - // load counter + nonce - // VLD1R (R7), [V12.S4] - WORD $0x4D40C8EC - - // VLD3R (R6), [V13.S4, V14.S4, V15.S4] - WORD $0x4D40E8CD - - // update counter - VADD V30.S4, V12.S4, V12.S4 - -chacha: - // V0..V3 += V4..V7 - // V12..V15 <<<= ((V12..V15 XOR V0..V3), 16) - VADD V0.S4, V4.S4, V0.S4 - VADD V1.S4, V5.S4, V1.S4 - VADD V2.S4, V6.S4, V2.S4 - VADD V3.S4, V7.S4, V3.S4 - VEOR V12.B16, V0.B16, V12.B16 - VEOR V13.B16, V1.B16, V13.B16 - VEOR V14.B16, V2.B16, V14.B16 - VEOR V15.B16, V3.B16, V15.B16 - VREV32 V12.H8, V12.H8 - VREV32 V13.H8, V13.H8 - VREV32 V14.H8, V14.H8 - VREV32 V15.H8, V15.H8 - // V8..V11 += V12..V15 - // V4..V7 <<<= ((V4..V7 XOR V8..V11), 12) - VADD V8.S4, V12.S4, V8.S4 - VADD V9.S4, V13.S4, V9.S4 - VADD V10.S4, V14.S4, V10.S4 - VADD V11.S4, V15.S4, V11.S4 - VEOR V8.B16, V4.B16, V16.B16 - VEOR V9.B16, V5.B16, V17.B16 - VEOR V10.B16, V6.B16, V18.B16 - VEOR V11.B16, V7.B16, V19.B16 - VSHL $12, V16.S4, V4.S4 - VSHL $12, V17.S4, V5.S4 - VSHL $12, V18.S4, V6.S4 - VSHL $12, V19.S4, V7.S4 - VSRI $20, V16.S4, V4.S4 - VSRI $20, V17.S4, V5.S4 - VSRI $20, V18.S4, V6.S4 - VSRI $20, V19.S4, V7.S4 - - // V0..V3 += V4..V7 - // V12..V15 <<<= ((V12..V15 XOR V0..V3), 8) - VADD V0.S4, V4.S4, V0.S4 - VADD V1.S4, V5.S4, V1.S4 - VADD V2.S4, V6.S4, V2.S4 - VADD V3.S4, V7.S4, V3.S4 - VEOR V12.B16, V0.B16, V12.B16 - VEOR V13.B16, V1.B16, V13.B16 - VEOR V14.B16, V2.B16, V14.B16 - VEOR V15.B16, V3.B16, V15.B16 - VTBL V31.B16, [V12.B16], V12.B16 - VTBL V31.B16, [V13.B16], V13.B16 - VTBL V31.B16, [V14.B16], V14.B16 - VTBL V31.B16, [V15.B16], V15.B16 - - // V8..V11 += V12..V15 - // V4..V7 <<<= ((V4..V7 XOR V8..V11), 7) - VADD V12.S4, V8.S4, V8.S4 - VADD V13.S4, V9.S4, V9.S4 - VADD V14.S4, V10.S4, V10.S4 - VADD V15.S4, V11.S4, V11.S4 - VEOR V8.B16, V4.B16, V16.B16 - VEOR V9.B16, V5.B16, V17.B16 - VEOR V10.B16, V6.B16, V18.B16 - VEOR V11.B16, V7.B16, V19.B16 - VSHL $7, V16.S4, V4.S4 - VSHL $7, V17.S4, V5.S4 - VSHL $7, V18.S4, V6.S4 - VSHL $7, V19.S4, V7.S4 - VSRI $25, V16.S4, V4.S4 - VSRI $25, V17.S4, V5.S4 - VSRI $25, V18.S4, V6.S4 - VSRI $25, V19.S4, V7.S4 - - // V0..V3 += V5..V7, V4 - // V15,V12-V14 <<<= ((V15,V12-V14 XOR V0..V3), 16) - VADD V0.S4, V5.S4, V0.S4 - VADD V1.S4, V6.S4, V1.S4 - VADD V2.S4, V7.S4, V2.S4 - VADD V3.S4, V4.S4, V3.S4 - VEOR V15.B16, V0.B16, V15.B16 - VEOR V12.B16, V1.B16, V12.B16 - VEOR V13.B16, V2.B16, V13.B16 - VEOR V14.B16, V3.B16, V14.B16 - VREV32 V12.H8, V12.H8 - VREV32 V13.H8, V13.H8 - VREV32 V14.H8, V14.H8 - VREV32 V15.H8, V15.H8 - - // V10 += V15; V5 <<<= ((V10 XOR V5), 12) - // ... - VADD V15.S4, V10.S4, V10.S4 - VADD V12.S4, V11.S4, V11.S4 - VADD V13.S4, V8.S4, V8.S4 - VADD V14.S4, V9.S4, V9.S4 - VEOR V10.B16, V5.B16, V16.B16 - VEOR V11.B16, V6.B16, V17.B16 - VEOR V8.B16, V7.B16, V18.B16 - VEOR V9.B16, V4.B16, V19.B16 - VSHL $12, V16.S4, V5.S4 - VSHL $12, V17.S4, V6.S4 - VSHL $12, V18.S4, V7.S4 - VSHL $12, V19.S4, V4.S4 - VSRI $20, V16.S4, V5.S4 - VSRI $20, V17.S4, V6.S4 - VSRI $20, V18.S4, V7.S4 - VSRI $20, V19.S4, V4.S4 - - // V0 += V5; V15 <<<= ((V0 XOR V15), 8) - // ... - VADD V5.S4, V0.S4, V0.S4 - VADD V6.S4, V1.S4, V1.S4 - VADD V7.S4, V2.S4, V2.S4 - VADD V4.S4, V3.S4, V3.S4 - VEOR V0.B16, V15.B16, V15.B16 - VEOR V1.B16, V12.B16, V12.B16 - VEOR V2.B16, V13.B16, V13.B16 - VEOR V3.B16, V14.B16, V14.B16 - VTBL V31.B16, [V12.B16], V12.B16 - VTBL V31.B16, [V13.B16], V13.B16 - VTBL V31.B16, [V14.B16], V14.B16 - VTBL V31.B16, [V15.B16], V15.B16 - - // V10 += V15; V5 <<<= ((V10 XOR V5), 7) - // ... - VADD V15.S4, V10.S4, V10.S4 - VADD V12.S4, V11.S4, V11.S4 - VADD V13.S4, V8.S4, V8.S4 - VADD V14.S4, V9.S4, V9.S4 - VEOR V10.B16, V5.B16, V16.B16 - VEOR V11.B16, V6.B16, V17.B16 - VEOR V8.B16, V7.B16, V18.B16 - VEOR V9.B16, V4.B16, V19.B16 - VSHL $7, V16.S4, V5.S4 - VSHL $7, V17.S4, V6.S4 - VSHL $7, V18.S4, V7.S4 - VSHL $7, V19.S4, V4.S4 - VSRI $25, V16.S4, V5.S4 - VSRI $25, V17.S4, V6.S4 - VSRI $25, V18.S4, V7.S4 - VSRI $25, V19.S4, V4.S4 - - SUB $1, R21 - CBNZ R21, chacha - - // VLD4R (R10), [V16.S4, V17.S4, V18.S4, V19.S4] - WORD $0x4D60E950 - - // VLD4R 16(R4), [V20.S4, V21.S4, V22.S4, V23.S4] - WORD $0x4DFFE894 - VADD V30.S4, V12.S4, V12.S4 - VADD V16.S4, V0.S4, V0.S4 - VADD V17.S4, V1.S4, V1.S4 - VADD V18.S4, V2.S4, V2.S4 - VADD V19.S4, V3.S4, V3.S4 - // VLD4R 16(R4), [V24.S4, V25.S4, V26.S4, V27.S4] - WORD $0x4DFFE898 - // restore R4 - SUB $32, R4 - - // load counter + nonce - // VLD1R (R7), [V28.S4] - WORD $0x4D40C8FC - // VLD3R (R6), [V29.S4, V30.S4, V31.S4] - WORD $0x4D40E8DD - - VADD V20.S4, V4.S4, V4.S4 - VADD V21.S4, V5.S4, V5.S4 - VADD V22.S4, V6.S4, V6.S4 - VADD V23.S4, V7.S4, V7.S4 - VADD V24.S4, V8.S4, V8.S4 - VADD V25.S4, V9.S4, V9.S4 - VADD V26.S4, V10.S4, V10.S4 - VADD V27.S4, V11.S4, V11.S4 - VADD V28.S4, V12.S4, V12.S4 - VADD V29.S4, V13.S4, V13.S4 - VADD V30.S4, V14.S4, V14.S4 - VADD V31.S4, V15.S4, V15.S4 - - VZIP1 V1.S4, V0.S4, V16.S4 - VZIP2 V1.S4, V0.S4, V17.S4 - VZIP1 V3.S4, V2.S4, V18.S4 - VZIP2 V3.S4, V2.S4, V19.S4 - VZIP1 V5.S4, V4.S4, V20.S4 - VZIP2 V5.S4, V4.S4, V21.S4 - VZIP1 V7.S4, V6.S4, V22.S4 - VZIP2 V7.S4, V6.S4, V23.S4 - VZIP1 V9.S4, V8.S4, V24.S4 - VZIP2 V9.S4, V8.S4, V25.S4 - VZIP1 V11.S4, V10.S4, V26.S4 - VZIP2 V11.S4, V10.S4, V27.S4 - VZIP1 V13.S4, V12.S4, V28.S4 - VZIP2 V13.S4, V12.S4, V29.S4 - VZIP1 V15.S4, V14.S4, V30.S4 - VZIP2 V15.S4, V14.S4, V31.S4 - VZIP1 V18.D2, V16.D2, V0.D2 - VZIP2 V18.D2, V16.D2, V4.D2 - VZIP1 V19.D2, V17.D2, V8.D2 - VZIP2 V19.D2, V17.D2, V12.D2 - VLD1.P 64(R2), [V16.B16, V17.B16, V18.B16, V19.B16] - - VZIP1 V22.D2, V20.D2, V1.D2 - VZIP2 V22.D2, V20.D2, V5.D2 - VZIP1 V23.D2, V21.D2, V9.D2 - VZIP2 V23.D2, V21.D2, V13.D2 - VLD1.P 64(R2), [V20.B16, V21.B16, V22.B16, V23.B16] - VZIP1 V26.D2, V24.D2, V2.D2 - VZIP2 V26.D2, V24.D2, V6.D2 - VZIP1 V27.D2, V25.D2, V10.D2 - VZIP2 V27.D2, V25.D2, V14.D2 - VLD1.P 64(R2), [V24.B16, V25.B16, V26.B16, V27.B16] - VZIP1 V30.D2, V28.D2, V3.D2 - VZIP2 V30.D2, V28.D2, V7.D2 - VZIP1 V31.D2, V29.D2, V11.D2 - VZIP2 V31.D2, V29.D2, V15.D2 - VLD1.P 64(R2), [V28.B16, V29.B16, V30.B16, V31.B16] - VEOR V0.B16, V16.B16, V16.B16 - VEOR V1.B16, V17.B16, V17.B16 - VEOR V2.B16, V18.B16, V18.B16 - VEOR V3.B16, V19.B16, V19.B16 - VST1.P [V16.B16, V17.B16, V18.B16, V19.B16], 64(R1) - VEOR V4.B16, V20.B16, V20.B16 - VEOR V5.B16, V21.B16, V21.B16 - VEOR V6.B16, V22.B16, V22.B16 - VEOR V7.B16, V23.B16, V23.B16 - VST1.P [V20.B16, V21.B16, V22.B16, V23.B16], 64(R1) - VEOR V8.B16, V24.B16, V24.B16 - VEOR V9.B16, V25.B16, V25.B16 - VEOR V10.B16, V26.B16, V26.B16 - VEOR V11.B16, V27.B16, V27.B16 - VST1.P [V24.B16, V25.B16, V26.B16, V27.B16], 64(R1) - VEOR V12.B16, V28.B16, V28.B16 - VEOR V13.B16, V29.B16, V29.B16 - VEOR V14.B16, V30.B16, V30.B16 - VEOR V15.B16, V31.B16, V31.B16 - VST1.P [V28.B16, V29.B16, V30.B16, V31.B16], 64(R1) - - ADD $4, R20 - MOVW R20, (R7) // update counter - - CMP R2, R12 - BGT loop - - RET - - -DATA ·constants+0x00(SB)/4, $0x61707865 -DATA ·constants+0x04(SB)/4, $0x3320646e -DATA ·constants+0x08(SB)/4, $0x79622d32 -DATA ·constants+0x0c(SB)/4, $0x6b206574 -GLOBL ·constants(SB), NOPTR|RODATA, $32 - -DATA ·incRotMatrix+0x00(SB)/4, $0x00000000 -DATA ·incRotMatrix+0x04(SB)/4, $0x00000001 -DATA ·incRotMatrix+0x08(SB)/4, $0x00000002 -DATA ·incRotMatrix+0x0c(SB)/4, $0x00000003 -DATA ·incRotMatrix+0x10(SB)/4, $0x02010003 -DATA ·incRotMatrix+0x14(SB)/4, $0x06050407 -DATA ·incRotMatrix+0x18(SB)/4, $0x0A09080B -DATA ·incRotMatrix+0x1c(SB)/4, $0x0E0D0C0F -GLOBL ·incRotMatrix(SB), NOPTR|RODATA, $32 diff --git a/vendor/golang.org/x/crypto/chacha20/chacha_generic.go b/vendor/golang.org/x/crypto/chacha20/chacha_generic.go deleted file mode 100644 index a2ecf5c..0000000 --- a/vendor/golang.org/x/crypto/chacha20/chacha_generic.go +++ /dev/null @@ -1,398 +0,0 @@ -// Copyright 2016 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package chacha20 implements the ChaCha20 and XChaCha20 encryption algorithms -// as specified in RFC 8439 and draft-irtf-cfrg-xchacha-01. -package chacha20 - -import ( - "crypto/cipher" - "encoding/binary" - "errors" - "math/bits" - - "golang.org/x/crypto/internal/subtle" -) - -const ( - // KeySize is the size of the key used by this cipher, in bytes. - KeySize = 32 - - // NonceSize is the size of the nonce used with the standard variant of this - // cipher, in bytes. - // - // Note that this is too short to be safely generated at random if the same - // key is reused more than 2³² times. - NonceSize = 12 - - // NonceSizeX is the size of the nonce used with the XChaCha20 variant of - // this cipher, in bytes. - NonceSizeX = 24 -) - -// Cipher is a stateful instance of ChaCha20 or XChaCha20 using a particular key -// and nonce. A *Cipher implements the cipher.Stream interface. -type Cipher struct { - // The ChaCha20 state is 16 words: 4 constant, 8 of key, 1 of counter - // (incremented after each block), and 3 of nonce. - key [8]uint32 - counter uint32 - nonce [3]uint32 - - // The last len bytes of buf are leftover key stream bytes from the previous - // XORKeyStream invocation. The size of buf depends on how many blocks are - // computed at a time by xorKeyStreamBlocks. - buf [bufSize]byte - len int - - // overflow is set when the counter overflowed, no more blocks can be - // generated, and the next XORKeyStream call should panic. - overflow bool - - // The counter-independent results of the first round are cached after they - // are computed the first time. - precompDone bool - p1, p5, p9, p13 uint32 - p2, p6, p10, p14 uint32 - p3, p7, p11, p15 uint32 -} - -var _ cipher.Stream = (*Cipher)(nil) - -// NewUnauthenticatedCipher creates a new ChaCha20 stream cipher with the given -// 32 bytes key and a 12 or 24 bytes nonce. If a nonce of 24 bytes is provided, -// the XChaCha20 construction will be used. It returns an error if key or nonce -// have any other length. -// -// Note that ChaCha20, like all stream ciphers, is not authenticated and allows -// attackers to silently tamper with the plaintext. For this reason, it is more -// appropriate as a building block than as a standalone encryption mechanism. -// Instead, consider using package golang.org/x/crypto/chacha20poly1305. -func NewUnauthenticatedCipher(key, nonce []byte) (*Cipher, error) { - // This function is split into a wrapper so that the Cipher allocation will - // be inlined, and depending on how the caller uses the return value, won't - // escape to the heap. - c := &Cipher{} - return newUnauthenticatedCipher(c, key, nonce) -} - -func newUnauthenticatedCipher(c *Cipher, key, nonce []byte) (*Cipher, error) { - if len(key) != KeySize { - return nil, errors.New("chacha20: wrong key size") - } - if len(nonce) == NonceSizeX { - // XChaCha20 uses the ChaCha20 core to mix 16 bytes of the nonce into a - // derived key, allowing it to operate on a nonce of 24 bytes. See - // draft-irtf-cfrg-xchacha-01, Section 2.3. - key, _ = HChaCha20(key, nonce[0:16]) - cNonce := make([]byte, NonceSize) - copy(cNonce[4:12], nonce[16:24]) - nonce = cNonce - } else if len(nonce) != NonceSize { - return nil, errors.New("chacha20: wrong nonce size") - } - - key, nonce = key[:KeySize], nonce[:NonceSize] // bounds check elimination hint - c.key = [8]uint32{ - binary.LittleEndian.Uint32(key[0:4]), - binary.LittleEndian.Uint32(key[4:8]), - binary.LittleEndian.Uint32(key[8:12]), - binary.LittleEndian.Uint32(key[12:16]), - binary.LittleEndian.Uint32(key[16:20]), - binary.LittleEndian.Uint32(key[20:24]), - binary.LittleEndian.Uint32(key[24:28]), - binary.LittleEndian.Uint32(key[28:32]), - } - c.nonce = [3]uint32{ - binary.LittleEndian.Uint32(nonce[0:4]), - binary.LittleEndian.Uint32(nonce[4:8]), - binary.LittleEndian.Uint32(nonce[8:12]), - } - return c, nil -} - -// The constant first 4 words of the ChaCha20 state. -const ( - j0 uint32 = 0x61707865 // expa - j1 uint32 = 0x3320646e // nd 3 - j2 uint32 = 0x79622d32 // 2-by - j3 uint32 = 0x6b206574 // te k -) - -const blockSize = 64 - -// quarterRound is the core of ChaCha20. It shuffles the bits of 4 state words. -// It's executed 4 times for each of the 20 ChaCha20 rounds, operating on all 16 -// words each round, in columnar or diagonal groups of 4 at a time. -func quarterRound(a, b, c, d uint32) (uint32, uint32, uint32, uint32) { - a += b - d ^= a - d = bits.RotateLeft32(d, 16) - c += d - b ^= c - b = bits.RotateLeft32(b, 12) - a += b - d ^= a - d = bits.RotateLeft32(d, 8) - c += d - b ^= c - b = bits.RotateLeft32(b, 7) - return a, b, c, d -} - -// SetCounter sets the Cipher counter. The next invocation of XORKeyStream will -// behave as if (64 * counter) bytes had been encrypted so far. -// -// To prevent accidental counter reuse, SetCounter panics if counter is less -// than the current value. -// -// Note that the execution time of XORKeyStream is not independent of the -// counter value. -func (s *Cipher) SetCounter(counter uint32) { - // Internally, s may buffer multiple blocks, which complicates this - // implementation slightly. When checking whether the counter has rolled - // back, we must use both s.counter and s.len to determine how many blocks - // we have already output. - outputCounter := s.counter - uint32(s.len)/blockSize - if s.overflow || counter < outputCounter { - panic("chacha20: SetCounter attempted to rollback counter") - } - - // In the general case, we set the new counter value and reset s.len to 0, - // causing the next call to XORKeyStream to refill the buffer. However, if - // we're advancing within the existing buffer, we can save work by simply - // setting s.len. - if counter < s.counter { - s.len = int(s.counter-counter) * blockSize - } else { - s.counter = counter - s.len = 0 - } -} - -// XORKeyStream XORs each byte in the given slice with a byte from the -// cipher's key stream. Dst and src must overlap entirely or not at all. -// -// If len(dst) < len(src), XORKeyStream will panic. It is acceptable -// to pass a dst bigger than src, and in that case, XORKeyStream will -// only update dst[:len(src)] and will not touch the rest of dst. -// -// Multiple calls to XORKeyStream behave as if the concatenation of -// the src buffers was passed in a single run. That is, Cipher -// maintains state and does not reset at each XORKeyStream call. -func (s *Cipher) XORKeyStream(dst, src []byte) { - if len(src) == 0 { - return - } - if len(dst) < len(src) { - panic("chacha20: output smaller than input") - } - dst = dst[:len(src)] - if subtle.InexactOverlap(dst, src) { - panic("chacha20: invalid buffer overlap") - } - - // First, drain any remaining key stream from a previous XORKeyStream. - if s.len != 0 { - keyStream := s.buf[bufSize-s.len:] - if len(src) < len(keyStream) { - keyStream = keyStream[:len(src)] - } - _ = src[len(keyStream)-1] // bounds check elimination hint - for i, b := range keyStream { - dst[i] = src[i] ^ b - } - s.len -= len(keyStream) - dst, src = dst[len(keyStream):], src[len(keyStream):] - } - if len(src) == 0 { - return - } - - // If we'd need to let the counter overflow and keep generating output, - // panic immediately. If instead we'd only reach the last block, remember - // not to generate any more output after the buffer is drained. - numBlocks := (uint64(len(src)) + blockSize - 1) / blockSize - if s.overflow || uint64(s.counter)+numBlocks > 1<<32 { - panic("chacha20: counter overflow") - } else if uint64(s.counter)+numBlocks == 1<<32 { - s.overflow = true - } - - // xorKeyStreamBlocks implementations expect input lengths that are a - // multiple of bufSize. Platform-specific ones process multiple blocks at a - // time, so have bufSizes that are a multiple of blockSize. - - full := len(src) - len(src)%bufSize - if full > 0 { - s.xorKeyStreamBlocks(dst[:full], src[:full]) - } - dst, src = dst[full:], src[full:] - - // If using a multi-block xorKeyStreamBlocks would overflow, use the generic - // one that does one block at a time. - const blocksPerBuf = bufSize / blockSize - if uint64(s.counter)+blocksPerBuf > 1<<32 { - s.buf = [bufSize]byte{} - numBlocks := (len(src) + blockSize - 1) / blockSize - buf := s.buf[bufSize-numBlocks*blockSize:] - copy(buf, src) - s.xorKeyStreamBlocksGeneric(buf, buf) - s.len = len(buf) - copy(dst, buf) - return - } - - // If we have a partial (multi-)block, pad it for xorKeyStreamBlocks, and - // keep the leftover keystream for the next XORKeyStream invocation. - if len(src) > 0 { - s.buf = [bufSize]byte{} - copy(s.buf[:], src) - s.xorKeyStreamBlocks(s.buf[:], s.buf[:]) - s.len = bufSize - copy(dst, s.buf[:]) - } -} - -func (s *Cipher) xorKeyStreamBlocksGeneric(dst, src []byte) { - if len(dst) != len(src) || len(dst)%blockSize != 0 { - panic("chacha20: internal error: wrong dst and/or src length") - } - - // To generate each block of key stream, the initial cipher state - // (represented below) is passed through 20 rounds of shuffling, - // alternatively applying quarterRounds by columns (like 1, 5, 9, 13) - // or by diagonals (like 1, 6, 11, 12). - // - // 0:cccccccc 1:cccccccc 2:cccccccc 3:cccccccc - // 4:kkkkkkkk 5:kkkkkkkk 6:kkkkkkkk 7:kkkkkkkk - // 8:kkkkkkkk 9:kkkkkkkk 10:kkkkkkkk 11:kkkkkkkk - // 12:bbbbbbbb 13:nnnnnnnn 14:nnnnnnnn 15:nnnnnnnn - // - // c=constant k=key b=blockcount n=nonce - var ( - c0, c1, c2, c3 = j0, j1, j2, j3 - c4, c5, c6, c7 = s.key[0], s.key[1], s.key[2], s.key[3] - c8, c9, c10, c11 = s.key[4], s.key[5], s.key[6], s.key[7] - _, c13, c14, c15 = s.counter, s.nonce[0], s.nonce[1], s.nonce[2] - ) - - // Three quarters of the first round don't depend on the counter, so we can - // calculate them here, and reuse them for multiple blocks in the loop, and - // for future XORKeyStream invocations. - if !s.precompDone { - s.p1, s.p5, s.p9, s.p13 = quarterRound(c1, c5, c9, c13) - s.p2, s.p6, s.p10, s.p14 = quarterRound(c2, c6, c10, c14) - s.p3, s.p7, s.p11, s.p15 = quarterRound(c3, c7, c11, c15) - s.precompDone = true - } - - // A condition of len(src) > 0 would be sufficient, but this also - // acts as a bounds check elimination hint. - for len(src) >= 64 && len(dst) >= 64 { - // The remainder of the first column round. - fcr0, fcr4, fcr8, fcr12 := quarterRound(c0, c4, c8, s.counter) - - // The second diagonal round. - x0, x5, x10, x15 := quarterRound(fcr0, s.p5, s.p10, s.p15) - x1, x6, x11, x12 := quarterRound(s.p1, s.p6, s.p11, fcr12) - x2, x7, x8, x13 := quarterRound(s.p2, s.p7, fcr8, s.p13) - x3, x4, x9, x14 := quarterRound(s.p3, fcr4, s.p9, s.p14) - - // The remaining 18 rounds. - for i := 0; i < 9; i++ { - // Column round. - x0, x4, x8, x12 = quarterRound(x0, x4, x8, x12) - x1, x5, x9, x13 = quarterRound(x1, x5, x9, x13) - x2, x6, x10, x14 = quarterRound(x2, x6, x10, x14) - x3, x7, x11, x15 = quarterRound(x3, x7, x11, x15) - - // Diagonal round. - x0, x5, x10, x15 = quarterRound(x0, x5, x10, x15) - x1, x6, x11, x12 = quarterRound(x1, x6, x11, x12) - x2, x7, x8, x13 = quarterRound(x2, x7, x8, x13) - x3, x4, x9, x14 = quarterRound(x3, x4, x9, x14) - } - - // Add back the initial state to generate the key stream, then - // XOR the key stream with the source and write out the result. - addXor(dst[0:4], src[0:4], x0, c0) - addXor(dst[4:8], src[4:8], x1, c1) - addXor(dst[8:12], src[8:12], x2, c2) - addXor(dst[12:16], src[12:16], x3, c3) - addXor(dst[16:20], src[16:20], x4, c4) - addXor(dst[20:24], src[20:24], x5, c5) - addXor(dst[24:28], src[24:28], x6, c6) - addXor(dst[28:32], src[28:32], x7, c7) - addXor(dst[32:36], src[32:36], x8, c8) - addXor(dst[36:40], src[36:40], x9, c9) - addXor(dst[40:44], src[40:44], x10, c10) - addXor(dst[44:48], src[44:48], x11, c11) - addXor(dst[48:52], src[48:52], x12, s.counter) - addXor(dst[52:56], src[52:56], x13, c13) - addXor(dst[56:60], src[56:60], x14, c14) - addXor(dst[60:64], src[60:64], x15, c15) - - s.counter += 1 - - src, dst = src[blockSize:], dst[blockSize:] - } -} - -// HChaCha20 uses the ChaCha20 core to generate a derived key from a 32 bytes -// key and a 16 bytes nonce. It returns an error if key or nonce have any other -// length. It is used as part of the XChaCha20 construction. -func HChaCha20(key, nonce []byte) ([]byte, error) { - // This function is split into a wrapper so that the slice allocation will - // be inlined, and depending on how the caller uses the return value, won't - // escape to the heap. - out := make([]byte, 32) - return hChaCha20(out, key, nonce) -} - -func hChaCha20(out, key, nonce []byte) ([]byte, error) { - if len(key) != KeySize { - return nil, errors.New("chacha20: wrong HChaCha20 key size") - } - if len(nonce) != 16 { - return nil, errors.New("chacha20: wrong HChaCha20 nonce size") - } - - x0, x1, x2, x3 := j0, j1, j2, j3 - x4 := binary.LittleEndian.Uint32(key[0:4]) - x5 := binary.LittleEndian.Uint32(key[4:8]) - x6 := binary.LittleEndian.Uint32(key[8:12]) - x7 := binary.LittleEndian.Uint32(key[12:16]) - x8 := binary.LittleEndian.Uint32(key[16:20]) - x9 := binary.LittleEndian.Uint32(key[20:24]) - x10 := binary.LittleEndian.Uint32(key[24:28]) - x11 := binary.LittleEndian.Uint32(key[28:32]) - x12 := binary.LittleEndian.Uint32(nonce[0:4]) - x13 := binary.LittleEndian.Uint32(nonce[4:8]) - x14 := binary.LittleEndian.Uint32(nonce[8:12]) - x15 := binary.LittleEndian.Uint32(nonce[12:16]) - - for i := 0; i < 10; i++ { - // Diagonal round. - x0, x4, x8, x12 = quarterRound(x0, x4, x8, x12) - x1, x5, x9, x13 = quarterRound(x1, x5, x9, x13) - x2, x6, x10, x14 = quarterRound(x2, x6, x10, x14) - x3, x7, x11, x15 = quarterRound(x3, x7, x11, x15) - - // Column round. - x0, x5, x10, x15 = quarterRound(x0, x5, x10, x15) - x1, x6, x11, x12 = quarterRound(x1, x6, x11, x12) - x2, x7, x8, x13 = quarterRound(x2, x7, x8, x13) - x3, x4, x9, x14 = quarterRound(x3, x4, x9, x14) - } - - _ = out[31] // bounds check elimination hint - binary.LittleEndian.PutUint32(out[0:4], x0) - binary.LittleEndian.PutUint32(out[4:8], x1) - binary.LittleEndian.PutUint32(out[8:12], x2) - binary.LittleEndian.PutUint32(out[12:16], x3) - binary.LittleEndian.PutUint32(out[16:20], x12) - binary.LittleEndian.PutUint32(out[20:24], x13) - binary.LittleEndian.PutUint32(out[24:28], x14) - binary.LittleEndian.PutUint32(out[28:32], x15) - return out, nil -} diff --git a/vendor/golang.org/x/crypto/chacha20/chacha_noasm.go b/vendor/golang.org/x/crypto/chacha20/chacha_noasm.go deleted file mode 100644 index 025b498..0000000 --- a/vendor/golang.org/x/crypto/chacha20/chacha_noasm.go +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2018 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:build (!arm64 && !s390x && !ppc64le) || (arm64 && !go1.11) || !gc || purego -// +build !arm64,!s390x,!ppc64le arm64,!go1.11 !gc purego - -package chacha20 - -const bufSize = blockSize - -func (s *Cipher) xorKeyStreamBlocks(dst, src []byte) { - s.xorKeyStreamBlocksGeneric(dst, src) -} diff --git a/vendor/golang.org/x/crypto/chacha20/chacha_ppc64le.go b/vendor/golang.org/x/crypto/chacha20/chacha_ppc64le.go deleted file mode 100644 index da420b2..0000000 --- a/vendor/golang.org/x/crypto/chacha20/chacha_ppc64le.go +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2019 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:build gc && !purego -// +build gc,!purego - -package chacha20 - -const bufSize = 256 - -//go:noescape -func chaCha20_ctr32_vsx(out, inp *byte, len int, key *[8]uint32, counter *uint32) - -func (c *Cipher) xorKeyStreamBlocks(dst, src []byte) { - chaCha20_ctr32_vsx(&dst[0], &src[0], len(src), &c.key, &c.counter) -} diff --git a/vendor/golang.org/x/crypto/chacha20/chacha_ppc64le.s b/vendor/golang.org/x/crypto/chacha20/chacha_ppc64le.s deleted file mode 100644 index 5c0fed2..0000000 --- a/vendor/golang.org/x/crypto/chacha20/chacha_ppc64le.s +++ /dev/null @@ -1,450 +0,0 @@ -// Copyright 2019 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. - -// Based on CRYPTOGAMS code with the following comment: -// # ==================================================================== -// # Written by Andy Polyakov for the OpenSSL -// # project. The module is, however, dual licensed under OpenSSL and -// # CRYPTOGAMS licenses depending on where you obtain it. For further -// # details see http://www.openssl.org/~appro/cryptogams/. -// # ==================================================================== - -// Code for the perl script that generates the ppc64 assembler -// can be found in the cryptogams repository at the link below. It is based on -// the original from openssl. - -// https://github.com/dot-asm/cryptogams/commit/a60f5b50ed908e91 - -// The differences in this and the original implementation are -// due to the calling conventions and initialization of constants. - -//go:build gc && !purego -// +build gc,!purego - -#include "textflag.h" - -#define OUT R3 -#define INP R4 -#define LEN R5 -#define KEY R6 -#define CNT R7 -#define TMP R15 - -#define CONSTBASE R16 -#define BLOCKS R17 - -DATA consts<>+0x00(SB)/8, $0x3320646e61707865 -DATA consts<>+0x08(SB)/8, $0x6b20657479622d32 -DATA consts<>+0x10(SB)/8, $0x0000000000000001 -DATA consts<>+0x18(SB)/8, $0x0000000000000000 -DATA consts<>+0x20(SB)/8, $0x0000000000000004 -DATA consts<>+0x28(SB)/8, $0x0000000000000000 -DATA consts<>+0x30(SB)/8, $0x0a0b08090e0f0c0d -DATA consts<>+0x38(SB)/8, $0x0203000106070405 -DATA consts<>+0x40(SB)/8, $0x090a0b080d0e0f0c -DATA consts<>+0x48(SB)/8, $0x0102030005060704 -DATA consts<>+0x50(SB)/8, $0x6170786561707865 -DATA consts<>+0x58(SB)/8, $0x6170786561707865 -DATA consts<>+0x60(SB)/8, $0x3320646e3320646e -DATA consts<>+0x68(SB)/8, $0x3320646e3320646e -DATA consts<>+0x70(SB)/8, $0x79622d3279622d32 -DATA consts<>+0x78(SB)/8, $0x79622d3279622d32 -DATA consts<>+0x80(SB)/8, $0x6b2065746b206574 -DATA consts<>+0x88(SB)/8, $0x6b2065746b206574 -DATA consts<>+0x90(SB)/8, $0x0000000100000000 -DATA consts<>+0x98(SB)/8, $0x0000000300000002 -GLOBL consts<>(SB), RODATA, $0xa0 - -//func chaCha20_ctr32_vsx(out, inp *byte, len int, key *[8]uint32, counter *uint32) -TEXT ·chaCha20_ctr32_vsx(SB),NOSPLIT,$64-40 - MOVD out+0(FP), OUT - MOVD inp+8(FP), INP - MOVD len+16(FP), LEN - MOVD key+24(FP), KEY - MOVD counter+32(FP), CNT - - // Addressing for constants - MOVD $consts<>+0x00(SB), CONSTBASE - MOVD $16, R8 - MOVD $32, R9 - MOVD $48, R10 - MOVD $64, R11 - SRD $6, LEN, BLOCKS - // V16 - LXVW4X (CONSTBASE)(R0), VS48 - ADD $80,CONSTBASE - - // Load key into V17,V18 - LXVW4X (KEY)(R0), VS49 - LXVW4X (KEY)(R8), VS50 - - // Load CNT, NONCE into V19 - LXVW4X (CNT)(R0), VS51 - - // Clear V27 - VXOR V27, V27, V27 - - // V28 - LXVW4X (CONSTBASE)(R11), VS60 - - // splat slot from V19 -> V26 - VSPLTW $0, V19, V26 - - VSLDOI $4, V19, V27, V19 - VSLDOI $12, V27, V19, V19 - - VADDUWM V26, V28, V26 - - MOVD $10, R14 - MOVD R14, CTR - -loop_outer_vsx: - // V0, V1, V2, V3 - LXVW4X (R0)(CONSTBASE), VS32 - LXVW4X (R8)(CONSTBASE), VS33 - LXVW4X (R9)(CONSTBASE), VS34 - LXVW4X (R10)(CONSTBASE), VS35 - - // splat values from V17, V18 into V4-V11 - VSPLTW $0, V17, V4 - VSPLTW $1, V17, V5 - VSPLTW $2, V17, V6 - VSPLTW $3, V17, V7 - VSPLTW $0, V18, V8 - VSPLTW $1, V18, V9 - VSPLTW $2, V18, V10 - VSPLTW $3, V18, V11 - - // VOR - VOR V26, V26, V12 - - // splat values from V19 -> V13, V14, V15 - VSPLTW $1, V19, V13 - VSPLTW $2, V19, V14 - VSPLTW $3, V19, V15 - - // splat const values - VSPLTISW $-16, V27 - VSPLTISW $12, V28 - VSPLTISW $8, V29 - VSPLTISW $7, V30 - -loop_vsx: - VADDUWM V0, V4, V0 - VADDUWM V1, V5, V1 - VADDUWM V2, V6, V2 - VADDUWM V3, V7, V3 - - VXOR V12, V0, V12 - VXOR V13, V1, V13 - VXOR V14, V2, V14 - VXOR V15, V3, V15 - - VRLW V12, V27, V12 - VRLW V13, V27, V13 - VRLW V14, V27, V14 - VRLW V15, V27, V15 - - VADDUWM V8, V12, V8 - VADDUWM V9, V13, V9 - VADDUWM V10, V14, V10 - VADDUWM V11, V15, V11 - - VXOR V4, V8, V4 - VXOR V5, V9, V5 - VXOR V6, V10, V6 - VXOR V7, V11, V7 - - VRLW V4, V28, V4 - VRLW V5, V28, V5 - VRLW V6, V28, V6 - VRLW V7, V28, V7 - - VADDUWM V0, V4, V0 - VADDUWM V1, V5, V1 - VADDUWM V2, V6, V2 - VADDUWM V3, V7, V3 - - VXOR V12, V0, V12 - VXOR V13, V1, V13 - VXOR V14, V2, V14 - VXOR V15, V3, V15 - - VRLW V12, V29, V12 - VRLW V13, V29, V13 - VRLW V14, V29, V14 - VRLW V15, V29, V15 - - VADDUWM V8, V12, V8 - VADDUWM V9, V13, V9 - VADDUWM V10, V14, V10 - VADDUWM V11, V15, V11 - - VXOR V4, V8, V4 - VXOR V5, V9, V5 - VXOR V6, V10, V6 - VXOR V7, V11, V7 - - VRLW V4, V30, V4 - VRLW V5, V30, V5 - VRLW V6, V30, V6 - VRLW V7, V30, V7 - - VADDUWM V0, V5, V0 - VADDUWM V1, V6, V1 - VADDUWM V2, V7, V2 - VADDUWM V3, V4, V3 - - VXOR V15, V0, V15 - VXOR V12, V1, V12 - VXOR V13, V2, V13 - VXOR V14, V3, V14 - - VRLW V15, V27, V15 - VRLW V12, V27, V12 - VRLW V13, V27, V13 - VRLW V14, V27, V14 - - VADDUWM V10, V15, V10 - VADDUWM V11, V12, V11 - VADDUWM V8, V13, V8 - VADDUWM V9, V14, V9 - - VXOR V5, V10, V5 - VXOR V6, V11, V6 - VXOR V7, V8, V7 - VXOR V4, V9, V4 - - VRLW V5, V28, V5 - VRLW V6, V28, V6 - VRLW V7, V28, V7 - VRLW V4, V28, V4 - - VADDUWM V0, V5, V0 - VADDUWM V1, V6, V1 - VADDUWM V2, V7, V2 - VADDUWM V3, V4, V3 - - VXOR V15, V0, V15 - VXOR V12, V1, V12 - VXOR V13, V2, V13 - VXOR V14, V3, V14 - - VRLW V15, V29, V15 - VRLW V12, V29, V12 - VRLW V13, V29, V13 - VRLW V14, V29, V14 - - VADDUWM V10, V15, V10 - VADDUWM V11, V12, V11 - VADDUWM V8, V13, V8 - VADDUWM V9, V14, V9 - - VXOR V5, V10, V5 - VXOR V6, V11, V6 - VXOR V7, V8, V7 - VXOR V4, V9, V4 - - VRLW V5, V30, V5 - VRLW V6, V30, V6 - VRLW V7, V30, V7 - VRLW V4, V30, V4 - BC 16, LT, loop_vsx - - VADDUWM V12, V26, V12 - - WORD $0x13600F8C // VMRGEW V0, V1, V27 - WORD $0x13821F8C // VMRGEW V2, V3, V28 - - WORD $0x10000E8C // VMRGOW V0, V1, V0 - WORD $0x10421E8C // VMRGOW V2, V3, V2 - - WORD $0x13A42F8C // VMRGEW V4, V5, V29 - WORD $0x13C63F8C // VMRGEW V6, V7, V30 - - XXPERMDI VS32, VS34, $0, VS33 - XXPERMDI VS32, VS34, $3, VS35 - XXPERMDI VS59, VS60, $0, VS32 - XXPERMDI VS59, VS60, $3, VS34 - - WORD $0x10842E8C // VMRGOW V4, V5, V4 - WORD $0x10C63E8C // VMRGOW V6, V7, V6 - - WORD $0x13684F8C // VMRGEW V8, V9, V27 - WORD $0x138A5F8C // VMRGEW V10, V11, V28 - - XXPERMDI VS36, VS38, $0, VS37 - XXPERMDI VS36, VS38, $3, VS39 - XXPERMDI VS61, VS62, $0, VS36 - XXPERMDI VS61, VS62, $3, VS38 - - WORD $0x11084E8C // VMRGOW V8, V9, V8 - WORD $0x114A5E8C // VMRGOW V10, V11, V10 - - WORD $0x13AC6F8C // VMRGEW V12, V13, V29 - WORD $0x13CE7F8C // VMRGEW V14, V15, V30 - - XXPERMDI VS40, VS42, $0, VS41 - XXPERMDI VS40, VS42, $3, VS43 - XXPERMDI VS59, VS60, $0, VS40 - XXPERMDI VS59, VS60, $3, VS42 - - WORD $0x118C6E8C // VMRGOW V12, V13, V12 - WORD $0x11CE7E8C // VMRGOW V14, V15, V14 - - VSPLTISW $4, V27 - VADDUWM V26, V27, V26 - - XXPERMDI VS44, VS46, $0, VS45 - XXPERMDI VS44, VS46, $3, VS47 - XXPERMDI VS61, VS62, $0, VS44 - XXPERMDI VS61, VS62, $3, VS46 - - VADDUWM V0, V16, V0 - VADDUWM V4, V17, V4 - VADDUWM V8, V18, V8 - VADDUWM V12, V19, V12 - - CMPU LEN, $64 - BLT tail_vsx - - // Bottom of loop - LXVW4X (INP)(R0), VS59 - LXVW4X (INP)(R8), VS60 - LXVW4X (INP)(R9), VS61 - LXVW4X (INP)(R10), VS62 - - VXOR V27, V0, V27 - VXOR V28, V4, V28 - VXOR V29, V8, V29 - VXOR V30, V12, V30 - - STXVW4X VS59, (OUT)(R0) - STXVW4X VS60, (OUT)(R8) - ADD $64, INP - STXVW4X VS61, (OUT)(R9) - ADD $-64, LEN - STXVW4X VS62, (OUT)(R10) - ADD $64, OUT - BEQ done_vsx - - VADDUWM V1, V16, V0 - VADDUWM V5, V17, V4 - VADDUWM V9, V18, V8 - VADDUWM V13, V19, V12 - - CMPU LEN, $64 - BLT tail_vsx - - LXVW4X (INP)(R0), VS59 - LXVW4X (INP)(R8), VS60 - LXVW4X (INP)(R9), VS61 - LXVW4X (INP)(R10), VS62 - VXOR V27, V0, V27 - - VXOR V28, V4, V28 - VXOR V29, V8, V29 - VXOR V30, V12, V30 - - STXVW4X VS59, (OUT)(R0) - STXVW4X VS60, (OUT)(R8) - ADD $64, INP - STXVW4X VS61, (OUT)(R9) - ADD $-64, LEN - STXVW4X VS62, (OUT)(V10) - ADD $64, OUT - BEQ done_vsx - - VADDUWM V2, V16, V0 - VADDUWM V6, V17, V4 - VADDUWM V10, V18, V8 - VADDUWM V14, V19, V12 - - CMPU LEN, $64 - BLT tail_vsx - - LXVW4X (INP)(R0), VS59 - LXVW4X (INP)(R8), VS60 - LXVW4X (INP)(R9), VS61 - LXVW4X (INP)(R10), VS62 - - VXOR V27, V0, V27 - VXOR V28, V4, V28 - VXOR V29, V8, V29 - VXOR V30, V12, V30 - - STXVW4X VS59, (OUT)(R0) - STXVW4X VS60, (OUT)(R8) - ADD $64, INP - STXVW4X VS61, (OUT)(R9) - ADD $-64, LEN - STXVW4X VS62, (OUT)(R10) - ADD $64, OUT - BEQ done_vsx - - VADDUWM V3, V16, V0 - VADDUWM V7, V17, V4 - VADDUWM V11, V18, V8 - VADDUWM V15, V19, V12 - - CMPU LEN, $64 - BLT tail_vsx - - LXVW4X (INP)(R0), VS59 - LXVW4X (INP)(R8), VS60 - LXVW4X (INP)(R9), VS61 - LXVW4X (INP)(R10), VS62 - - VXOR V27, V0, V27 - VXOR V28, V4, V28 - VXOR V29, V8, V29 - VXOR V30, V12, V30 - - STXVW4X VS59, (OUT)(R0) - STXVW4X VS60, (OUT)(R8) - ADD $64, INP - STXVW4X VS61, (OUT)(R9) - ADD $-64, LEN - STXVW4X VS62, (OUT)(R10) - ADD $64, OUT - - MOVD $10, R14 - MOVD R14, CTR - BNE loop_outer_vsx - -done_vsx: - // Increment counter by number of 64 byte blocks - MOVD (CNT), R14 - ADD BLOCKS, R14 - MOVD R14, (CNT) - RET - -tail_vsx: - ADD $32, R1, R11 - MOVD LEN, CTR - - // Save values on stack to copy from - STXVW4X VS32, (R11)(R0) - STXVW4X VS36, (R11)(R8) - STXVW4X VS40, (R11)(R9) - STXVW4X VS44, (R11)(R10) - ADD $-1, R11, R12 - ADD $-1, INP - ADD $-1, OUT - -looptail_vsx: - // Copying the result to OUT - // in bytes. - MOVBZU 1(R12), KEY - MOVBZU 1(INP), TMP - XOR KEY, TMP, KEY - MOVBU KEY, 1(OUT) - BC 16, LT, looptail_vsx - - // Clear the stack values - STXVW4X VS48, (R11)(R0) - STXVW4X VS48, (R11)(R8) - STXVW4X VS48, (R11)(R9) - STXVW4X VS48, (R11)(R10) - BR done_vsx diff --git a/vendor/golang.org/x/crypto/chacha20/chacha_s390x.go b/vendor/golang.org/x/crypto/chacha20/chacha_s390x.go deleted file mode 100644 index 4652247..0000000 --- a/vendor/golang.org/x/crypto/chacha20/chacha_s390x.go +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2018 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:build gc && !purego -// +build gc,!purego - -package chacha20 - -import "golang.org/x/sys/cpu" - -var haveAsm = cpu.S390X.HasVX - -const bufSize = 256 - -// xorKeyStreamVX is an assembly implementation of XORKeyStream. It must only -// be called when the vector facility is available. Implementation in asm_s390x.s. -// -//go:noescape -func xorKeyStreamVX(dst, src []byte, key *[8]uint32, nonce *[3]uint32, counter *uint32) - -func (c *Cipher) xorKeyStreamBlocks(dst, src []byte) { - if cpu.S390X.HasVX { - xorKeyStreamVX(dst, src, &c.key, &c.nonce, &c.counter) - } else { - c.xorKeyStreamBlocksGeneric(dst, src) - } -} diff --git a/vendor/golang.org/x/crypto/chacha20/chacha_s390x.s b/vendor/golang.org/x/crypto/chacha20/chacha_s390x.s deleted file mode 100644 index f3ef5a0..0000000 --- a/vendor/golang.org/x/crypto/chacha20/chacha_s390x.s +++ /dev/null @@ -1,225 +0,0 @@ -// Copyright 2018 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:build gc && !purego -// +build gc,!purego - -#include "go_asm.h" -#include "textflag.h" - -// This is an implementation of the ChaCha20 encryption algorithm as -// specified in RFC 7539. It uses vector instructions to compute -// 4 keystream blocks in parallel (256 bytes) which are then XORed -// with the bytes in the input slice. - -GLOBL ·constants<>(SB), RODATA|NOPTR, $32 -// BSWAP: swap bytes in each 4-byte element -DATA ·constants<>+0x00(SB)/4, $0x03020100 -DATA ·constants<>+0x04(SB)/4, $0x07060504 -DATA ·constants<>+0x08(SB)/4, $0x0b0a0908 -DATA ·constants<>+0x0c(SB)/4, $0x0f0e0d0c -// J0: [j0, j1, j2, j3] -DATA ·constants<>+0x10(SB)/4, $0x61707865 -DATA ·constants<>+0x14(SB)/4, $0x3320646e -DATA ·constants<>+0x18(SB)/4, $0x79622d32 -DATA ·constants<>+0x1c(SB)/4, $0x6b206574 - -#define BSWAP V5 -#define J0 V6 -#define KEY0 V7 -#define KEY1 V8 -#define NONCE V9 -#define CTR V10 -#define M0 V11 -#define M1 V12 -#define M2 V13 -#define M3 V14 -#define INC V15 -#define X0 V16 -#define X1 V17 -#define X2 V18 -#define X3 V19 -#define X4 V20 -#define X5 V21 -#define X6 V22 -#define X7 V23 -#define X8 V24 -#define X9 V25 -#define X10 V26 -#define X11 V27 -#define X12 V28 -#define X13 V29 -#define X14 V30 -#define X15 V31 - -#define NUM_ROUNDS 20 - -#define ROUND4(a0, a1, a2, a3, b0, b1, b2, b3, c0, c1, c2, c3, d0, d1, d2, d3) \ - VAF a1, a0, a0 \ - VAF b1, b0, b0 \ - VAF c1, c0, c0 \ - VAF d1, d0, d0 \ - VX a0, a2, a2 \ - VX b0, b2, b2 \ - VX c0, c2, c2 \ - VX d0, d2, d2 \ - VERLLF $16, a2, a2 \ - VERLLF $16, b2, b2 \ - VERLLF $16, c2, c2 \ - VERLLF $16, d2, d2 \ - VAF a2, a3, a3 \ - VAF b2, b3, b3 \ - VAF c2, c3, c3 \ - VAF d2, d3, d3 \ - VX a3, a1, a1 \ - VX b3, b1, b1 \ - VX c3, c1, c1 \ - VX d3, d1, d1 \ - VERLLF $12, a1, a1 \ - VERLLF $12, b1, b1 \ - VERLLF $12, c1, c1 \ - VERLLF $12, d1, d1 \ - VAF a1, a0, a0 \ - VAF b1, b0, b0 \ - VAF c1, c0, c0 \ - VAF d1, d0, d0 \ - VX a0, a2, a2 \ - VX b0, b2, b2 \ - VX c0, c2, c2 \ - VX d0, d2, d2 \ - VERLLF $8, a2, a2 \ - VERLLF $8, b2, b2 \ - VERLLF $8, c2, c2 \ - VERLLF $8, d2, d2 \ - VAF a2, a3, a3 \ - VAF b2, b3, b3 \ - VAF c2, c3, c3 \ - VAF d2, d3, d3 \ - VX a3, a1, a1 \ - VX b3, b1, b1 \ - VX c3, c1, c1 \ - VX d3, d1, d1 \ - VERLLF $7, a1, a1 \ - VERLLF $7, b1, b1 \ - VERLLF $7, c1, c1 \ - VERLLF $7, d1, d1 - -#define PERMUTE(mask, v0, v1, v2, v3) \ - VPERM v0, v0, mask, v0 \ - VPERM v1, v1, mask, v1 \ - VPERM v2, v2, mask, v2 \ - VPERM v3, v3, mask, v3 - -#define ADDV(x, v0, v1, v2, v3) \ - VAF x, v0, v0 \ - VAF x, v1, v1 \ - VAF x, v2, v2 \ - VAF x, v3, v3 - -#define XORV(off, dst, src, v0, v1, v2, v3) \ - VLM off(src), M0, M3 \ - PERMUTE(BSWAP, v0, v1, v2, v3) \ - VX v0, M0, M0 \ - VX v1, M1, M1 \ - VX v2, M2, M2 \ - VX v3, M3, M3 \ - VSTM M0, M3, off(dst) - -#define SHUFFLE(a, b, c, d, t, u, v, w) \ - VMRHF a, c, t \ // t = {a[0], c[0], a[1], c[1]} - VMRHF b, d, u \ // u = {b[0], d[0], b[1], d[1]} - VMRLF a, c, v \ // v = {a[2], c[2], a[3], c[3]} - VMRLF b, d, w \ // w = {b[2], d[2], b[3], d[3]} - VMRHF t, u, a \ // a = {a[0], b[0], c[0], d[0]} - VMRLF t, u, b \ // b = {a[1], b[1], c[1], d[1]} - VMRHF v, w, c \ // c = {a[2], b[2], c[2], d[2]} - VMRLF v, w, d // d = {a[3], b[3], c[3], d[3]} - -// func xorKeyStreamVX(dst, src []byte, key *[8]uint32, nonce *[3]uint32, counter *uint32) -TEXT ·xorKeyStreamVX(SB), NOSPLIT, $0 - MOVD $·constants<>(SB), R1 - MOVD dst+0(FP), R2 // R2=&dst[0] - LMG src+24(FP), R3, R4 // R3=&src[0] R4=len(src) - MOVD key+48(FP), R5 // R5=key - MOVD nonce+56(FP), R6 // R6=nonce - MOVD counter+64(FP), R7 // R7=counter - - // load BSWAP and J0 - VLM (R1), BSWAP, J0 - - // setup - MOVD $95, R0 - VLM (R5), KEY0, KEY1 - VLL R0, (R6), NONCE - VZERO M0 - VLEIB $7, $32, M0 - VSRLB M0, NONCE, NONCE - - // initialize counter values - VLREPF (R7), CTR - VZERO INC - VLEIF $1, $1, INC - VLEIF $2, $2, INC - VLEIF $3, $3, INC - VAF INC, CTR, CTR - VREPIF $4, INC - -chacha: - VREPF $0, J0, X0 - VREPF $1, J0, X1 - VREPF $2, J0, X2 - VREPF $3, J0, X3 - VREPF $0, KEY0, X4 - VREPF $1, KEY0, X5 - VREPF $2, KEY0, X6 - VREPF $3, KEY0, X7 - VREPF $0, KEY1, X8 - VREPF $1, KEY1, X9 - VREPF $2, KEY1, X10 - VREPF $3, KEY1, X11 - VLR CTR, X12 - VREPF $1, NONCE, X13 - VREPF $2, NONCE, X14 - VREPF $3, NONCE, X15 - - MOVD $(NUM_ROUNDS/2), R1 - -loop: - ROUND4(X0, X4, X12, X8, X1, X5, X13, X9, X2, X6, X14, X10, X3, X7, X15, X11) - ROUND4(X0, X5, X15, X10, X1, X6, X12, X11, X2, X7, X13, X8, X3, X4, X14, X9) - - ADD $-1, R1 - BNE loop - - // decrement length - ADD $-256, R4 - - // rearrange vectors - SHUFFLE(X0, X1, X2, X3, M0, M1, M2, M3) - ADDV(J0, X0, X1, X2, X3) - SHUFFLE(X4, X5, X6, X7, M0, M1, M2, M3) - ADDV(KEY0, X4, X5, X6, X7) - SHUFFLE(X8, X9, X10, X11, M0, M1, M2, M3) - ADDV(KEY1, X8, X9, X10, X11) - VAF CTR, X12, X12 - SHUFFLE(X12, X13, X14, X15, M0, M1, M2, M3) - ADDV(NONCE, X12, X13, X14, X15) - - // increment counters - VAF INC, CTR, CTR - - // xor keystream with plaintext - XORV(0*64, R2, R3, X0, X4, X8, X12) - XORV(1*64, R2, R3, X1, X5, X9, X13) - XORV(2*64, R2, R3, X2, X6, X10, X14) - XORV(3*64, R2, R3, X3, X7, X11, X15) - - // increment pointers - MOVD $256(R2), R2 - MOVD $256(R3), R3 - - CMPBNE R4, $0, chacha - - VSTEF $0, CTR, (R7) - RET diff --git a/vendor/golang.org/x/crypto/chacha20/xor.go b/vendor/golang.org/x/crypto/chacha20/xor.go deleted file mode 100644 index c2d0485..0000000 --- a/vendor/golang.org/x/crypto/chacha20/xor.go +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found src the LICENSE file. - -package chacha20 - -import "runtime" - -// Platforms that have fast unaligned 32-bit little endian accesses. -const unaligned = runtime.GOARCH == "386" || - runtime.GOARCH == "amd64" || - runtime.GOARCH == "arm64" || - runtime.GOARCH == "ppc64le" || - runtime.GOARCH == "s390x" - -// addXor reads a little endian uint32 from src, XORs it with (a + b) and -// places the result in little endian byte order in dst. -func addXor(dst, src []byte, a, b uint32) { - _, _ = src[3], dst[3] // bounds check elimination hint - if unaligned { - // The compiler should optimize this code into - // 32-bit unaligned little endian loads and stores. - // TODO: delete once the compiler does a reliably - // good job with the generic code below. - // See issue #25111 for more details. - v := uint32(src[0]) - v |= uint32(src[1]) << 8 - v |= uint32(src[2]) << 16 - v |= uint32(src[3]) << 24 - v ^= a + b - dst[0] = byte(v) - dst[1] = byte(v >> 8) - dst[2] = byte(v >> 16) - dst[3] = byte(v >> 24) - } else { - a += b - dst[0] = src[0] ^ byte(a) - dst[1] = src[1] ^ byte(a>>8) - dst[2] = src[2] ^ byte(a>>16) - dst[3] = src[3] ^ byte(a>>24) - } -} diff --git a/vendor/golang.org/x/crypto/curve25519/curve25519.go b/vendor/golang.org/x/crypto/curve25519/curve25519.go deleted file mode 100644 index cda3fdd..0000000 --- a/vendor/golang.org/x/crypto/curve25519/curve25519.go +++ /dev/null @@ -1,145 +0,0 @@ -// Copyright 2019 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 curve25519 provides an implementation of the X25519 function, which -// performs scalar multiplication on the elliptic curve known as Curve25519. -// See RFC 7748. -package curve25519 // import "golang.org/x/crypto/curve25519" - -import ( - "crypto/subtle" - "fmt" - - "golang.org/x/crypto/curve25519/internal/field" -) - -// ScalarMult sets dst to the product scalar * point. -// -// Deprecated: when provided a low-order point, ScalarMult will set dst to all -// zeroes, irrespective of the scalar. Instead, use the X25519 function, which -// will return an error. -func ScalarMult(dst, scalar, point *[32]byte) { - var e [32]byte - - copy(e[:], scalar[:]) - e[0] &= 248 - e[31] &= 127 - e[31] |= 64 - - var x1, x2, z2, x3, z3, tmp0, tmp1 field.Element - x1.SetBytes(point[:]) - x2.One() - x3.Set(&x1) - z3.One() - - swap := 0 - for pos := 254; pos >= 0; pos-- { - b := e[pos/8] >> uint(pos&7) - b &= 1 - swap ^= int(b) - x2.Swap(&x3, swap) - z2.Swap(&z3, swap) - swap = int(b) - - tmp0.Subtract(&x3, &z3) - tmp1.Subtract(&x2, &z2) - x2.Add(&x2, &z2) - z2.Add(&x3, &z3) - z3.Multiply(&tmp0, &x2) - z2.Multiply(&z2, &tmp1) - tmp0.Square(&tmp1) - tmp1.Square(&x2) - x3.Add(&z3, &z2) - z2.Subtract(&z3, &z2) - x2.Multiply(&tmp1, &tmp0) - tmp1.Subtract(&tmp1, &tmp0) - z2.Square(&z2) - - z3.Mult32(&tmp1, 121666) - x3.Square(&x3) - tmp0.Add(&tmp0, &z3) - z3.Multiply(&x1, &z2) - z2.Multiply(&tmp1, &tmp0) - } - - x2.Swap(&x3, swap) - z2.Swap(&z3, swap) - - z2.Invert(&z2) - x2.Multiply(&x2, &z2) - copy(dst[:], x2.Bytes()) -} - -// ScalarBaseMult sets dst to the product scalar * base where base is the -// standard generator. -// -// It is recommended to use the X25519 function with Basepoint instead, as -// copying into fixed size arrays can lead to unexpected bugs. -func ScalarBaseMult(dst, scalar *[32]byte) { - ScalarMult(dst, scalar, &basePoint) -} - -const ( - // ScalarSize is the size of the scalar input to X25519. - ScalarSize = 32 - // PointSize is the size of the point input to X25519. - PointSize = 32 -) - -// Basepoint is the canonical Curve25519 generator. -var Basepoint []byte - -var basePoint = [32]byte{9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} - -func init() { Basepoint = basePoint[:] } - -func checkBasepoint() { - if subtle.ConstantTimeCompare(Basepoint, []byte{ - 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }) != 1 { - panic("curve25519: global Basepoint value was modified") - } -} - -// X25519 returns the result of the scalar multiplication (scalar * point), -// according to RFC 7748, Section 5. scalar, point and the return value are -// slices of 32 bytes. -// -// scalar can be generated at random, for example with crypto/rand. point should -// be either Basepoint or the output of another X25519 call. -// -// If point is Basepoint (but not if it's a different slice with the same -// contents) a precomputed implementation might be used for performance. -func X25519(scalar, point []byte) ([]byte, error) { - // Outline the body of function, to let the allocation be inlined in the - // caller, and possibly avoid escaping to the heap. - var dst [32]byte - return x25519(&dst, scalar, point) -} - -func x25519(dst *[32]byte, scalar, point []byte) ([]byte, error) { - var in [32]byte - if l := len(scalar); l != 32 { - return nil, fmt.Errorf("bad scalar length: %d, expected %d", l, 32) - } - if l := len(point); l != 32 { - return nil, fmt.Errorf("bad point length: %d, expected %d", l, 32) - } - copy(in[:], scalar) - if &point[0] == &Basepoint[0] { - checkBasepoint() - ScalarBaseMult(dst, &in) - } else { - var base, zero [32]byte - copy(base[:], point) - ScalarMult(dst, &in, &base) - if subtle.ConstantTimeCompare(dst[:], zero[:]) == 1 { - return nil, fmt.Errorf("bad input point: low order point") - } - } - return dst[:], nil -} diff --git a/vendor/golang.org/x/crypto/curve25519/internal/field/README b/vendor/golang.org/x/crypto/curve25519/internal/field/README deleted file mode 100644 index e25bca7..0000000 --- a/vendor/golang.org/x/crypto/curve25519/internal/field/README +++ /dev/null @@ -1,7 +0,0 @@ -This package is kept in sync with crypto/ed25519/internal/edwards25519/field in -the standard library. - -If there are any changes in the standard library that need to be synced to this -package, run sync.sh. It will not overwrite any local changes made since the -previous sync, so it's ok to land changes in this package first, and then sync -to the standard library later. diff --git a/vendor/golang.org/x/crypto/curve25519/internal/field/fe.go b/vendor/golang.org/x/crypto/curve25519/internal/field/fe.go deleted file mode 100644 index ca841ad..0000000 --- a/vendor/golang.org/x/crypto/curve25519/internal/field/fe.go +++ /dev/null @@ -1,416 +0,0 @@ -// Copyright (c) 2017 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 field implements fast arithmetic modulo 2^255-19. -package field - -import ( - "crypto/subtle" - "encoding/binary" - "math/bits" -) - -// Element represents an element of the field GF(2^255-19). Note that this -// is not a cryptographically secure group, and should only be used to interact -// with edwards25519.Point coordinates. -// -// This type works similarly to math/big.Int, and all arguments and receivers -// are allowed to alias. -// -// The zero value is a valid zero element. -type Element struct { - // An element t represents the integer - // t.l0 + t.l1*2^51 + t.l2*2^102 + t.l3*2^153 + t.l4*2^204 - // - // Between operations, all limbs are expected to be lower than 2^52. - l0 uint64 - l1 uint64 - l2 uint64 - l3 uint64 - l4 uint64 -} - -const maskLow51Bits uint64 = (1 << 51) - 1 - -var feZero = &Element{0, 0, 0, 0, 0} - -// Zero sets v = 0, and returns v. -func (v *Element) Zero() *Element { - *v = *feZero - return v -} - -var feOne = &Element{1, 0, 0, 0, 0} - -// One sets v = 1, and returns v. -func (v *Element) One() *Element { - *v = *feOne - return v -} - -// reduce reduces v modulo 2^255 - 19 and returns it. -func (v *Element) reduce() *Element { - v.carryPropagate() - - // After the light reduction we now have a field element representation - // v < 2^255 + 2^13 * 19, but need v < 2^255 - 19. - - // If v >= 2^255 - 19, then v + 19 >= 2^255, which would overflow 2^255 - 1, - // generating a carry. That is, c will be 0 if v < 2^255 - 19, and 1 otherwise. - c := (v.l0 + 19) >> 51 - c = (v.l1 + c) >> 51 - c = (v.l2 + c) >> 51 - c = (v.l3 + c) >> 51 - c = (v.l4 + c) >> 51 - - // If v < 2^255 - 19 and c = 0, this will be a no-op. Otherwise, it's - // effectively applying the reduction identity to the carry. - v.l0 += 19 * c - - v.l1 += v.l0 >> 51 - v.l0 = v.l0 & maskLow51Bits - v.l2 += v.l1 >> 51 - v.l1 = v.l1 & maskLow51Bits - v.l3 += v.l2 >> 51 - v.l2 = v.l2 & maskLow51Bits - v.l4 += v.l3 >> 51 - v.l3 = v.l3 & maskLow51Bits - // no additional carry - v.l4 = v.l4 & maskLow51Bits - - return v -} - -// Add sets v = a + b, and returns v. -func (v *Element) Add(a, b *Element) *Element { - v.l0 = a.l0 + b.l0 - v.l1 = a.l1 + b.l1 - v.l2 = a.l2 + b.l2 - v.l3 = a.l3 + b.l3 - v.l4 = a.l4 + b.l4 - // Using the generic implementation here is actually faster than the - // assembly. Probably because the body of this function is so simple that - // the compiler can figure out better optimizations by inlining the carry - // propagation. TODO - return v.carryPropagateGeneric() -} - -// Subtract sets v = a - b, and returns v. -func (v *Element) Subtract(a, b *Element) *Element { - // We first add 2 * p, to guarantee the subtraction won't underflow, and - // then subtract b (which can be up to 2^255 + 2^13 * 19). - v.l0 = (a.l0 + 0xFFFFFFFFFFFDA) - b.l0 - v.l1 = (a.l1 + 0xFFFFFFFFFFFFE) - b.l1 - v.l2 = (a.l2 + 0xFFFFFFFFFFFFE) - b.l2 - v.l3 = (a.l3 + 0xFFFFFFFFFFFFE) - b.l3 - v.l4 = (a.l4 + 0xFFFFFFFFFFFFE) - b.l4 - return v.carryPropagate() -} - -// Negate sets v = -a, and returns v. -func (v *Element) Negate(a *Element) *Element { - return v.Subtract(feZero, a) -} - -// Invert sets v = 1/z mod p, and returns v. -// -// If z == 0, Invert returns v = 0. -func (v *Element) Invert(z *Element) *Element { - // Inversion is implemented as exponentiation with exponent p − 2. It uses the - // same sequence of 255 squarings and 11 multiplications as [Curve25519]. - var z2, z9, z11, z2_5_0, z2_10_0, z2_20_0, z2_50_0, z2_100_0, t Element - - z2.Square(z) // 2 - t.Square(&z2) // 4 - t.Square(&t) // 8 - z9.Multiply(&t, z) // 9 - z11.Multiply(&z9, &z2) // 11 - t.Square(&z11) // 22 - z2_5_0.Multiply(&t, &z9) // 31 = 2^5 - 2^0 - - t.Square(&z2_5_0) // 2^6 - 2^1 - for i := 0; i < 4; i++ { - t.Square(&t) // 2^10 - 2^5 - } - z2_10_0.Multiply(&t, &z2_5_0) // 2^10 - 2^0 - - t.Square(&z2_10_0) // 2^11 - 2^1 - for i := 0; i < 9; i++ { - t.Square(&t) // 2^20 - 2^10 - } - z2_20_0.Multiply(&t, &z2_10_0) // 2^20 - 2^0 - - t.Square(&z2_20_0) // 2^21 - 2^1 - for i := 0; i < 19; i++ { - t.Square(&t) // 2^40 - 2^20 - } - t.Multiply(&t, &z2_20_0) // 2^40 - 2^0 - - t.Square(&t) // 2^41 - 2^1 - for i := 0; i < 9; i++ { - t.Square(&t) // 2^50 - 2^10 - } - z2_50_0.Multiply(&t, &z2_10_0) // 2^50 - 2^0 - - t.Square(&z2_50_0) // 2^51 - 2^1 - for i := 0; i < 49; i++ { - t.Square(&t) // 2^100 - 2^50 - } - z2_100_0.Multiply(&t, &z2_50_0) // 2^100 - 2^0 - - t.Square(&z2_100_0) // 2^101 - 2^1 - for i := 0; i < 99; i++ { - t.Square(&t) // 2^200 - 2^100 - } - t.Multiply(&t, &z2_100_0) // 2^200 - 2^0 - - t.Square(&t) // 2^201 - 2^1 - for i := 0; i < 49; i++ { - t.Square(&t) // 2^250 - 2^50 - } - t.Multiply(&t, &z2_50_0) // 2^250 - 2^0 - - t.Square(&t) // 2^251 - 2^1 - t.Square(&t) // 2^252 - 2^2 - t.Square(&t) // 2^253 - 2^3 - t.Square(&t) // 2^254 - 2^4 - t.Square(&t) // 2^255 - 2^5 - - return v.Multiply(&t, &z11) // 2^255 - 21 -} - -// Set sets v = a, and returns v. -func (v *Element) Set(a *Element) *Element { - *v = *a - return v -} - -// SetBytes sets v to x, which must be a 32-byte little-endian encoding. -// -// Consistent with RFC 7748, the most significant bit (the high bit of the -// last byte) is ignored, and non-canonical values (2^255-19 through 2^255-1) -// are accepted. Note that this is laxer than specified by RFC 8032. -func (v *Element) SetBytes(x []byte) *Element { - if len(x) != 32 { - panic("edwards25519: invalid field element input size") - } - - // Bits 0:51 (bytes 0:8, bits 0:64, shift 0, mask 51). - v.l0 = binary.LittleEndian.Uint64(x[0:8]) - v.l0 &= maskLow51Bits - // Bits 51:102 (bytes 6:14, bits 48:112, shift 3, mask 51). - v.l1 = binary.LittleEndian.Uint64(x[6:14]) >> 3 - v.l1 &= maskLow51Bits - // Bits 102:153 (bytes 12:20, bits 96:160, shift 6, mask 51). - v.l2 = binary.LittleEndian.Uint64(x[12:20]) >> 6 - v.l2 &= maskLow51Bits - // Bits 153:204 (bytes 19:27, bits 152:216, shift 1, mask 51). - v.l3 = binary.LittleEndian.Uint64(x[19:27]) >> 1 - v.l3 &= maskLow51Bits - // Bits 204:251 (bytes 24:32, bits 192:256, shift 12, mask 51). - // Note: not bytes 25:33, shift 4, to avoid overread. - v.l4 = binary.LittleEndian.Uint64(x[24:32]) >> 12 - v.l4 &= maskLow51Bits - - return v -} - -// Bytes returns the canonical 32-byte little-endian encoding of v. -func (v *Element) Bytes() []byte { - // This function is outlined to make the allocations inline in the caller - // rather than happen on the heap. - var out [32]byte - return v.bytes(&out) -} - -func (v *Element) bytes(out *[32]byte) []byte { - t := *v - t.reduce() - - var buf [8]byte - for i, l := range [5]uint64{t.l0, t.l1, t.l2, t.l3, t.l4} { - bitsOffset := i * 51 - binary.LittleEndian.PutUint64(buf[:], l<= len(out) { - break - } - out[off] |= bb - } - } - - return out[:] -} - -// Equal returns 1 if v and u are equal, and 0 otherwise. -func (v *Element) Equal(u *Element) int { - sa, sv := u.Bytes(), v.Bytes() - return subtle.ConstantTimeCompare(sa, sv) -} - -// mask64Bits returns 0xffffffff if cond is 1, and 0 otherwise. -func mask64Bits(cond int) uint64 { return ^(uint64(cond) - 1) } - -// Select sets v to a if cond == 1, and to b if cond == 0. -func (v *Element) Select(a, b *Element, cond int) *Element { - m := mask64Bits(cond) - v.l0 = (m & a.l0) | (^m & b.l0) - v.l1 = (m & a.l1) | (^m & b.l1) - v.l2 = (m & a.l2) | (^m & b.l2) - v.l3 = (m & a.l3) | (^m & b.l3) - v.l4 = (m & a.l4) | (^m & b.l4) - return v -} - -// Swap swaps v and u if cond == 1 or leaves them unchanged if cond == 0, and returns v. -func (v *Element) Swap(u *Element, cond int) { - m := mask64Bits(cond) - t := m & (v.l0 ^ u.l0) - v.l0 ^= t - u.l0 ^= t - t = m & (v.l1 ^ u.l1) - v.l1 ^= t - u.l1 ^= t - t = m & (v.l2 ^ u.l2) - v.l2 ^= t - u.l2 ^= t - t = m & (v.l3 ^ u.l3) - v.l3 ^= t - u.l3 ^= t - t = m & (v.l4 ^ u.l4) - v.l4 ^= t - u.l4 ^= t -} - -// IsNegative returns 1 if v is negative, and 0 otherwise. -func (v *Element) IsNegative() int { - return int(v.Bytes()[0] & 1) -} - -// Absolute sets v to |u|, and returns v. -func (v *Element) Absolute(u *Element) *Element { - return v.Select(new(Element).Negate(u), u, u.IsNegative()) -} - -// Multiply sets v = x * y, and returns v. -func (v *Element) Multiply(x, y *Element) *Element { - feMul(v, x, y) - return v -} - -// Square sets v = x * x, and returns v. -func (v *Element) Square(x *Element) *Element { - feSquare(v, x) - return v -} - -// Mult32 sets v = x * y, and returns v. -func (v *Element) Mult32(x *Element, y uint32) *Element { - x0lo, x0hi := mul51(x.l0, y) - x1lo, x1hi := mul51(x.l1, y) - x2lo, x2hi := mul51(x.l2, y) - x3lo, x3hi := mul51(x.l3, y) - x4lo, x4hi := mul51(x.l4, y) - v.l0 = x0lo + 19*x4hi // carried over per the reduction identity - v.l1 = x1lo + x0hi - v.l2 = x2lo + x1hi - v.l3 = x3lo + x2hi - v.l4 = x4lo + x3hi - // The hi portions are going to be only 32 bits, plus any previous excess, - // so we can skip the carry propagation. - return v -} - -// mul51 returns lo + hi * 2⁵¹ = a * b. -func mul51(a uint64, b uint32) (lo uint64, hi uint64) { - mh, ml := bits.Mul64(a, uint64(b)) - lo = ml & maskLow51Bits - hi = (mh << 13) | (ml >> 51) - return -} - -// Pow22523 set v = x^((p-5)/8), and returns v. (p-5)/8 is 2^252-3. -func (v *Element) Pow22523(x *Element) *Element { - var t0, t1, t2 Element - - t0.Square(x) // x^2 - t1.Square(&t0) // x^4 - t1.Square(&t1) // x^8 - t1.Multiply(x, &t1) // x^9 - t0.Multiply(&t0, &t1) // x^11 - t0.Square(&t0) // x^22 - t0.Multiply(&t1, &t0) // x^31 - t1.Square(&t0) // x^62 - for i := 1; i < 5; i++ { // x^992 - t1.Square(&t1) - } - t0.Multiply(&t1, &t0) // x^1023 -> 1023 = 2^10 - 1 - t1.Square(&t0) // 2^11 - 2 - for i := 1; i < 10; i++ { // 2^20 - 2^10 - t1.Square(&t1) - } - t1.Multiply(&t1, &t0) // 2^20 - 1 - t2.Square(&t1) // 2^21 - 2 - for i := 1; i < 20; i++ { // 2^40 - 2^20 - t2.Square(&t2) - } - t1.Multiply(&t2, &t1) // 2^40 - 1 - t1.Square(&t1) // 2^41 - 2 - for i := 1; i < 10; i++ { // 2^50 - 2^10 - t1.Square(&t1) - } - t0.Multiply(&t1, &t0) // 2^50 - 1 - t1.Square(&t0) // 2^51 - 2 - for i := 1; i < 50; i++ { // 2^100 - 2^50 - t1.Square(&t1) - } - t1.Multiply(&t1, &t0) // 2^100 - 1 - t2.Square(&t1) // 2^101 - 2 - for i := 1; i < 100; i++ { // 2^200 - 2^100 - t2.Square(&t2) - } - t1.Multiply(&t2, &t1) // 2^200 - 1 - t1.Square(&t1) // 2^201 - 2 - for i := 1; i < 50; i++ { // 2^250 - 2^50 - t1.Square(&t1) - } - t0.Multiply(&t1, &t0) // 2^250 - 1 - t0.Square(&t0) // 2^251 - 2 - t0.Square(&t0) // 2^252 - 4 - return v.Multiply(&t0, x) // 2^252 - 3 -> x^(2^252-3) -} - -// sqrtM1 is 2^((p-1)/4), which squared is equal to -1 by Euler's Criterion. -var sqrtM1 = &Element{1718705420411056, 234908883556509, - 2233514472574048, 2117202627021982, 765476049583133} - -// SqrtRatio sets r to the non-negative square root of the ratio of u and v. -// -// If u/v is square, SqrtRatio returns r and 1. If u/v is not square, SqrtRatio -// sets r according to Section 4.3 of draft-irtf-cfrg-ristretto255-decaf448-00, -// and returns r and 0. -func (r *Element) SqrtRatio(u, v *Element) (rr *Element, wasSquare int) { - var a, b Element - - // r = (u * v3) * (u * v7)^((p-5)/8) - v2 := a.Square(v) - uv3 := b.Multiply(u, b.Multiply(v2, v)) - uv7 := a.Multiply(uv3, a.Square(v2)) - r.Multiply(uv3, r.Pow22523(uv7)) - - check := a.Multiply(v, a.Square(r)) // check = v * r^2 - - uNeg := b.Negate(u) - correctSignSqrt := check.Equal(u) - flippedSignSqrt := check.Equal(uNeg) - flippedSignSqrtI := check.Equal(uNeg.Multiply(uNeg, sqrtM1)) - - rPrime := b.Multiply(r, sqrtM1) // r_prime = SQRT_M1 * r - // r = CT_SELECT(r_prime IF flipped_sign_sqrt | flipped_sign_sqrt_i ELSE r) - r.Select(rPrime, r, flippedSignSqrt|flippedSignSqrtI) - - r.Absolute(r) // Choose the nonnegative square root. - return r, correctSignSqrt | flippedSignSqrt -} diff --git a/vendor/golang.org/x/crypto/curve25519/internal/field/fe_amd64.go b/vendor/golang.org/x/crypto/curve25519/internal/field/fe_amd64.go deleted file mode 100644 index edcf163..0000000 --- a/vendor/golang.org/x/crypto/curve25519/internal/field/fe_amd64.go +++ /dev/null @@ -1,16 +0,0 @@ -// Code generated by command: go run fe_amd64_asm.go -out ../fe_amd64.s -stubs ../fe_amd64.go -pkg field. DO NOT EDIT. - -//go:build amd64 && gc && !purego -// +build amd64,gc,!purego - -package field - -// feMul sets out = a * b. It works like feMulGeneric. -// -//go:noescape -func feMul(out *Element, a *Element, b *Element) - -// feSquare sets out = a * a. It works like feSquareGeneric. -// -//go:noescape -func feSquare(out *Element, a *Element) diff --git a/vendor/golang.org/x/crypto/curve25519/internal/field/fe_amd64.s b/vendor/golang.org/x/crypto/curve25519/internal/field/fe_amd64.s deleted file mode 100644 index 293f013..0000000 --- a/vendor/golang.org/x/crypto/curve25519/internal/field/fe_amd64.s +++ /dev/null @@ -1,379 +0,0 @@ -// Code generated by command: go run fe_amd64_asm.go -out ../fe_amd64.s -stubs ../fe_amd64.go -pkg field. DO NOT EDIT. - -//go:build amd64 && gc && !purego -// +build amd64,gc,!purego - -#include "textflag.h" - -// func feMul(out *Element, a *Element, b *Element) -TEXT ·feMul(SB), NOSPLIT, $0-24 - MOVQ a+8(FP), CX - MOVQ b+16(FP), BX - - // r0 = a0×b0 - MOVQ (CX), AX - MULQ (BX) - MOVQ AX, DI - MOVQ DX, SI - - // r0 += 19×a1×b4 - MOVQ 8(CX), AX - IMUL3Q $0x13, AX, AX - MULQ 32(BX) - ADDQ AX, DI - ADCQ DX, SI - - // r0 += 19×a2×b3 - MOVQ 16(CX), AX - IMUL3Q $0x13, AX, AX - MULQ 24(BX) - ADDQ AX, DI - ADCQ DX, SI - - // r0 += 19×a3×b2 - MOVQ 24(CX), AX - IMUL3Q $0x13, AX, AX - MULQ 16(BX) - ADDQ AX, DI - ADCQ DX, SI - - // r0 += 19×a4×b1 - MOVQ 32(CX), AX - IMUL3Q $0x13, AX, AX - MULQ 8(BX) - ADDQ AX, DI - ADCQ DX, SI - - // r1 = a0×b1 - MOVQ (CX), AX - MULQ 8(BX) - MOVQ AX, R9 - MOVQ DX, R8 - - // r1 += a1×b0 - MOVQ 8(CX), AX - MULQ (BX) - ADDQ AX, R9 - ADCQ DX, R8 - - // r1 += 19×a2×b4 - MOVQ 16(CX), AX - IMUL3Q $0x13, AX, AX - MULQ 32(BX) - ADDQ AX, R9 - ADCQ DX, R8 - - // r1 += 19×a3×b3 - MOVQ 24(CX), AX - IMUL3Q $0x13, AX, AX - MULQ 24(BX) - ADDQ AX, R9 - ADCQ DX, R8 - - // r1 += 19×a4×b2 - MOVQ 32(CX), AX - IMUL3Q $0x13, AX, AX - MULQ 16(BX) - ADDQ AX, R9 - ADCQ DX, R8 - - // r2 = a0×b2 - MOVQ (CX), AX - MULQ 16(BX) - MOVQ AX, R11 - MOVQ DX, R10 - - // r2 += a1×b1 - MOVQ 8(CX), AX - MULQ 8(BX) - ADDQ AX, R11 - ADCQ DX, R10 - - // r2 += a2×b0 - MOVQ 16(CX), AX - MULQ (BX) - ADDQ AX, R11 - ADCQ DX, R10 - - // r2 += 19×a3×b4 - MOVQ 24(CX), AX - IMUL3Q $0x13, AX, AX - MULQ 32(BX) - ADDQ AX, R11 - ADCQ DX, R10 - - // r2 += 19×a4×b3 - MOVQ 32(CX), AX - IMUL3Q $0x13, AX, AX - MULQ 24(BX) - ADDQ AX, R11 - ADCQ DX, R10 - - // r3 = a0×b3 - MOVQ (CX), AX - MULQ 24(BX) - MOVQ AX, R13 - MOVQ DX, R12 - - // r3 += a1×b2 - MOVQ 8(CX), AX - MULQ 16(BX) - ADDQ AX, R13 - ADCQ DX, R12 - - // r3 += a2×b1 - MOVQ 16(CX), AX - MULQ 8(BX) - ADDQ AX, R13 - ADCQ DX, R12 - - // r3 += a3×b0 - MOVQ 24(CX), AX - MULQ (BX) - ADDQ AX, R13 - ADCQ DX, R12 - - // r3 += 19×a4×b4 - MOVQ 32(CX), AX - IMUL3Q $0x13, AX, AX - MULQ 32(BX) - ADDQ AX, R13 - ADCQ DX, R12 - - // r4 = a0×b4 - MOVQ (CX), AX - MULQ 32(BX) - MOVQ AX, R15 - MOVQ DX, R14 - - // r4 += a1×b3 - MOVQ 8(CX), AX - MULQ 24(BX) - ADDQ AX, R15 - ADCQ DX, R14 - - // r4 += a2×b2 - MOVQ 16(CX), AX - MULQ 16(BX) - ADDQ AX, R15 - ADCQ DX, R14 - - // r4 += a3×b1 - MOVQ 24(CX), AX - MULQ 8(BX) - ADDQ AX, R15 - ADCQ DX, R14 - - // r4 += a4×b0 - MOVQ 32(CX), AX - MULQ (BX) - ADDQ AX, R15 - ADCQ DX, R14 - - // First reduction chain - MOVQ $0x0007ffffffffffff, AX - SHLQ $0x0d, DI, SI - SHLQ $0x0d, R9, R8 - SHLQ $0x0d, R11, R10 - SHLQ $0x0d, R13, R12 - SHLQ $0x0d, R15, R14 - ANDQ AX, DI - IMUL3Q $0x13, R14, R14 - ADDQ R14, DI - ANDQ AX, R9 - ADDQ SI, R9 - ANDQ AX, R11 - ADDQ R8, R11 - ANDQ AX, R13 - ADDQ R10, R13 - ANDQ AX, R15 - ADDQ R12, R15 - - // Second reduction chain (carryPropagate) - MOVQ DI, SI - SHRQ $0x33, SI - MOVQ R9, R8 - SHRQ $0x33, R8 - MOVQ R11, R10 - SHRQ $0x33, R10 - MOVQ R13, R12 - SHRQ $0x33, R12 - MOVQ R15, R14 - SHRQ $0x33, R14 - ANDQ AX, DI - IMUL3Q $0x13, R14, R14 - ADDQ R14, DI - ANDQ AX, R9 - ADDQ SI, R9 - ANDQ AX, R11 - ADDQ R8, R11 - ANDQ AX, R13 - ADDQ R10, R13 - ANDQ AX, R15 - ADDQ R12, R15 - - // Store output - MOVQ out+0(FP), AX - MOVQ DI, (AX) - MOVQ R9, 8(AX) - MOVQ R11, 16(AX) - MOVQ R13, 24(AX) - MOVQ R15, 32(AX) - RET - -// func feSquare(out *Element, a *Element) -TEXT ·feSquare(SB), NOSPLIT, $0-16 - MOVQ a+8(FP), CX - - // r0 = l0×l0 - MOVQ (CX), AX - MULQ (CX) - MOVQ AX, SI - MOVQ DX, BX - - // r0 += 38×l1×l4 - MOVQ 8(CX), AX - IMUL3Q $0x26, AX, AX - MULQ 32(CX) - ADDQ AX, SI - ADCQ DX, BX - - // r0 += 38×l2×l3 - MOVQ 16(CX), AX - IMUL3Q $0x26, AX, AX - MULQ 24(CX) - ADDQ AX, SI - ADCQ DX, BX - - // r1 = 2×l0×l1 - MOVQ (CX), AX - SHLQ $0x01, AX - MULQ 8(CX) - MOVQ AX, R8 - MOVQ DX, DI - - // r1 += 38×l2×l4 - MOVQ 16(CX), AX - IMUL3Q $0x26, AX, AX - MULQ 32(CX) - ADDQ AX, R8 - ADCQ DX, DI - - // r1 += 19×l3×l3 - MOVQ 24(CX), AX - IMUL3Q $0x13, AX, AX - MULQ 24(CX) - ADDQ AX, R8 - ADCQ DX, DI - - // r2 = 2×l0×l2 - MOVQ (CX), AX - SHLQ $0x01, AX - MULQ 16(CX) - MOVQ AX, R10 - MOVQ DX, R9 - - // r2 += l1×l1 - MOVQ 8(CX), AX - MULQ 8(CX) - ADDQ AX, R10 - ADCQ DX, R9 - - // r2 += 38×l3×l4 - MOVQ 24(CX), AX - IMUL3Q $0x26, AX, AX - MULQ 32(CX) - ADDQ AX, R10 - ADCQ DX, R9 - - // r3 = 2×l0×l3 - MOVQ (CX), AX - SHLQ $0x01, AX - MULQ 24(CX) - MOVQ AX, R12 - MOVQ DX, R11 - - // r3 += 2×l1×l2 - MOVQ 8(CX), AX - IMUL3Q $0x02, AX, AX - MULQ 16(CX) - ADDQ AX, R12 - ADCQ DX, R11 - - // r3 += 19×l4×l4 - MOVQ 32(CX), AX - IMUL3Q $0x13, AX, AX - MULQ 32(CX) - ADDQ AX, R12 - ADCQ DX, R11 - - // r4 = 2×l0×l4 - MOVQ (CX), AX - SHLQ $0x01, AX - MULQ 32(CX) - MOVQ AX, R14 - MOVQ DX, R13 - - // r4 += 2×l1×l3 - MOVQ 8(CX), AX - IMUL3Q $0x02, AX, AX - MULQ 24(CX) - ADDQ AX, R14 - ADCQ DX, R13 - - // r4 += l2×l2 - MOVQ 16(CX), AX - MULQ 16(CX) - ADDQ AX, R14 - ADCQ DX, R13 - - // First reduction chain - MOVQ $0x0007ffffffffffff, AX - SHLQ $0x0d, SI, BX - SHLQ $0x0d, R8, DI - SHLQ $0x0d, R10, R9 - SHLQ $0x0d, R12, R11 - SHLQ $0x0d, R14, R13 - ANDQ AX, SI - IMUL3Q $0x13, R13, R13 - ADDQ R13, SI - ANDQ AX, R8 - ADDQ BX, R8 - ANDQ AX, R10 - ADDQ DI, R10 - ANDQ AX, R12 - ADDQ R9, R12 - ANDQ AX, R14 - ADDQ R11, R14 - - // Second reduction chain (carryPropagate) - MOVQ SI, BX - SHRQ $0x33, BX - MOVQ R8, DI - SHRQ $0x33, DI - MOVQ R10, R9 - SHRQ $0x33, R9 - MOVQ R12, R11 - SHRQ $0x33, R11 - MOVQ R14, R13 - SHRQ $0x33, R13 - ANDQ AX, SI - IMUL3Q $0x13, R13, R13 - ADDQ R13, SI - ANDQ AX, R8 - ADDQ BX, R8 - ANDQ AX, R10 - ADDQ DI, R10 - ANDQ AX, R12 - ADDQ R9, R12 - ANDQ AX, R14 - ADDQ R11, R14 - - // Store output - MOVQ out+0(FP), AX - MOVQ SI, (AX) - MOVQ R8, 8(AX) - MOVQ R10, 16(AX) - MOVQ R12, 24(AX) - MOVQ R14, 32(AX) - RET diff --git a/vendor/golang.org/x/crypto/curve25519/internal/field/fe_amd64_noasm.go b/vendor/golang.org/x/crypto/curve25519/internal/field/fe_amd64_noasm.go deleted file mode 100644 index ddb6c9b..0000000 --- a/vendor/golang.org/x/crypto/curve25519/internal/field/fe_amd64_noasm.go +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (c) 2019 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:build !amd64 || !gc || purego -// +build !amd64 !gc purego - -package field - -func feMul(v, x, y *Element) { feMulGeneric(v, x, y) } - -func feSquare(v, x *Element) { feSquareGeneric(v, x) } diff --git a/vendor/golang.org/x/crypto/curve25519/internal/field/fe_arm64.go b/vendor/golang.org/x/crypto/curve25519/internal/field/fe_arm64.go deleted file mode 100644 index af459ef..0000000 --- a/vendor/golang.org/x/crypto/curve25519/internal/field/fe_arm64.go +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright (c) 2020 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:build arm64 && gc && !purego -// +build arm64,gc,!purego - -package field - -//go:noescape -func carryPropagate(v *Element) - -func (v *Element) carryPropagate() *Element { - carryPropagate(v) - return v -} diff --git a/vendor/golang.org/x/crypto/curve25519/internal/field/fe_arm64.s b/vendor/golang.org/x/crypto/curve25519/internal/field/fe_arm64.s deleted file mode 100644 index 5c91e45..0000000 --- a/vendor/golang.org/x/crypto/curve25519/internal/field/fe_arm64.s +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright (c) 2020 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:build arm64 && gc && !purego -// +build arm64,gc,!purego - -#include "textflag.h" - -// carryPropagate works exactly like carryPropagateGeneric and uses the -// same AND, ADD, and LSR+MADD instructions emitted by the compiler, but -// avoids loading R0-R4 twice and uses LDP and STP. -// -// See https://golang.org/issues/43145 for the main compiler issue. -// -// func carryPropagate(v *Element) -TEXT ·carryPropagate(SB),NOFRAME|NOSPLIT,$0-8 - MOVD v+0(FP), R20 - - LDP 0(R20), (R0, R1) - LDP 16(R20), (R2, R3) - MOVD 32(R20), R4 - - AND $0x7ffffffffffff, R0, R10 - AND $0x7ffffffffffff, R1, R11 - AND $0x7ffffffffffff, R2, R12 - AND $0x7ffffffffffff, R3, R13 - AND $0x7ffffffffffff, R4, R14 - - ADD R0>>51, R11, R11 - ADD R1>>51, R12, R12 - ADD R2>>51, R13, R13 - ADD R3>>51, R14, R14 - // R4>>51 * 19 + R10 -> R10 - LSR $51, R4, R21 - MOVD $19, R22 - MADD R22, R10, R21, R10 - - STP (R10, R11), 0(R20) - STP (R12, R13), 16(R20) - MOVD R14, 32(R20) - - RET diff --git a/vendor/golang.org/x/crypto/curve25519/internal/field/fe_arm64_noasm.go b/vendor/golang.org/x/crypto/curve25519/internal/field/fe_arm64_noasm.go deleted file mode 100644 index 234a5b2..0000000 --- a/vendor/golang.org/x/crypto/curve25519/internal/field/fe_arm64_noasm.go +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (c) 2021 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:build !arm64 || !gc || purego -// +build !arm64 !gc purego - -package field - -func (v *Element) carryPropagate() *Element { - return v.carryPropagateGeneric() -} diff --git a/vendor/golang.org/x/crypto/curve25519/internal/field/fe_generic.go b/vendor/golang.org/x/crypto/curve25519/internal/field/fe_generic.go deleted file mode 100644 index 7b5b78c..0000000 --- a/vendor/golang.org/x/crypto/curve25519/internal/field/fe_generic.go +++ /dev/null @@ -1,264 +0,0 @@ -// Copyright (c) 2017 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 field - -import "math/bits" - -// uint128 holds a 128-bit number as two 64-bit limbs, for use with the -// bits.Mul64 and bits.Add64 intrinsics. -type uint128 struct { - lo, hi uint64 -} - -// mul64 returns a * b. -func mul64(a, b uint64) uint128 { - hi, lo := bits.Mul64(a, b) - return uint128{lo, hi} -} - -// addMul64 returns v + a * b. -func addMul64(v uint128, a, b uint64) uint128 { - hi, lo := bits.Mul64(a, b) - lo, c := bits.Add64(lo, v.lo, 0) - hi, _ = bits.Add64(hi, v.hi, c) - return uint128{lo, hi} -} - -// shiftRightBy51 returns a >> 51. a is assumed to be at most 115 bits. -func shiftRightBy51(a uint128) uint64 { - return (a.hi << (64 - 51)) | (a.lo >> 51) -} - -func feMulGeneric(v, a, b *Element) { - a0 := a.l0 - a1 := a.l1 - a2 := a.l2 - a3 := a.l3 - a4 := a.l4 - - b0 := b.l0 - b1 := b.l1 - b2 := b.l2 - b3 := b.l3 - b4 := b.l4 - - // Limb multiplication works like pen-and-paper columnar multiplication, but - // with 51-bit limbs instead of digits. - // - // a4 a3 a2 a1 a0 x - // b4 b3 b2 b1 b0 = - // ------------------------ - // a4b0 a3b0 a2b0 a1b0 a0b0 + - // a4b1 a3b1 a2b1 a1b1 a0b1 + - // a4b2 a3b2 a2b2 a1b2 a0b2 + - // a4b3 a3b3 a2b3 a1b3 a0b3 + - // a4b4 a3b4 a2b4 a1b4 a0b4 = - // ---------------------------------------------- - // r8 r7 r6 r5 r4 r3 r2 r1 r0 - // - // We can then use the reduction identity (a * 2²⁵⁵ + b = a * 19 + b) to - // reduce the limbs that would overflow 255 bits. r5 * 2²⁵⁵ becomes 19 * r5, - // r6 * 2³⁰⁶ becomes 19 * r6 * 2⁵¹, etc. - // - // Reduction can be carried out simultaneously to multiplication. For - // example, we do not compute r5: whenever the result of a multiplication - // belongs to r5, like a1b4, we multiply it by 19 and add the result to r0. - // - // a4b0 a3b0 a2b0 a1b0 a0b0 + - // a3b1 a2b1 a1b1 a0b1 19×a4b1 + - // a2b2 a1b2 a0b2 19×a4b2 19×a3b2 + - // a1b3 a0b3 19×a4b3 19×a3b3 19×a2b3 + - // a0b4 19×a4b4 19×a3b4 19×a2b4 19×a1b4 = - // -------------------------------------- - // r4 r3 r2 r1 r0 - // - // Finally we add up the columns into wide, overlapping limbs. - - a1_19 := a1 * 19 - a2_19 := a2 * 19 - a3_19 := a3 * 19 - a4_19 := a4 * 19 - - // r0 = a0×b0 + 19×(a1×b4 + a2×b3 + a3×b2 + a4×b1) - r0 := mul64(a0, b0) - r0 = addMul64(r0, a1_19, b4) - r0 = addMul64(r0, a2_19, b3) - r0 = addMul64(r0, a3_19, b2) - r0 = addMul64(r0, a4_19, b1) - - // r1 = a0×b1 + a1×b0 + 19×(a2×b4 + a3×b3 + a4×b2) - r1 := mul64(a0, b1) - r1 = addMul64(r1, a1, b0) - r1 = addMul64(r1, a2_19, b4) - r1 = addMul64(r1, a3_19, b3) - r1 = addMul64(r1, a4_19, b2) - - // r2 = a0×b2 + a1×b1 + a2×b0 + 19×(a3×b4 + a4×b3) - r2 := mul64(a0, b2) - r2 = addMul64(r2, a1, b1) - r2 = addMul64(r2, a2, b0) - r2 = addMul64(r2, a3_19, b4) - r2 = addMul64(r2, a4_19, b3) - - // r3 = a0×b3 + a1×b2 + a2×b1 + a3×b0 + 19×a4×b4 - r3 := mul64(a0, b3) - r3 = addMul64(r3, a1, b2) - r3 = addMul64(r3, a2, b1) - r3 = addMul64(r3, a3, b0) - r3 = addMul64(r3, a4_19, b4) - - // r4 = a0×b4 + a1×b3 + a2×b2 + a3×b1 + a4×b0 - r4 := mul64(a0, b4) - r4 = addMul64(r4, a1, b3) - r4 = addMul64(r4, a2, b2) - r4 = addMul64(r4, a3, b1) - r4 = addMul64(r4, a4, b0) - - // After the multiplication, we need to reduce (carry) the five coefficients - // to obtain a result with limbs that are at most slightly larger than 2⁵¹, - // to respect the Element invariant. - // - // Overall, the reduction works the same as carryPropagate, except with - // wider inputs: we take the carry for each coefficient by shifting it right - // by 51, and add it to the limb above it. The top carry is multiplied by 19 - // according to the reduction identity and added to the lowest limb. - // - // The largest coefficient (r0) will be at most 111 bits, which guarantees - // that all carries are at most 111 - 51 = 60 bits, which fits in a uint64. - // - // r0 = a0×b0 + 19×(a1×b4 + a2×b3 + a3×b2 + a4×b1) - // r0 < 2⁵²×2⁵² + 19×(2⁵²×2⁵² + 2⁵²×2⁵² + 2⁵²×2⁵² + 2⁵²×2⁵²) - // r0 < (1 + 19 × 4) × 2⁵² × 2⁵² - // r0 < 2⁷ × 2⁵² × 2⁵² - // r0 < 2¹¹¹ - // - // Moreover, the top coefficient (r4) is at most 107 bits, so c4 is at most - // 56 bits, and c4 * 19 is at most 61 bits, which again fits in a uint64 and - // allows us to easily apply the reduction identity. - // - // r4 = a0×b4 + a1×b3 + a2×b2 + a3×b1 + a4×b0 - // r4 < 5 × 2⁵² × 2⁵² - // r4 < 2¹⁰⁷ - // - - c0 := shiftRightBy51(r0) - c1 := shiftRightBy51(r1) - c2 := shiftRightBy51(r2) - c3 := shiftRightBy51(r3) - c4 := shiftRightBy51(r4) - - rr0 := r0.lo&maskLow51Bits + c4*19 - rr1 := r1.lo&maskLow51Bits + c0 - rr2 := r2.lo&maskLow51Bits + c1 - rr3 := r3.lo&maskLow51Bits + c2 - rr4 := r4.lo&maskLow51Bits + c3 - - // Now all coefficients fit into 64-bit registers but are still too large to - // be passed around as a Element. We therefore do one last carry chain, - // where the carries will be small enough to fit in the wiggle room above 2⁵¹. - *v = Element{rr0, rr1, rr2, rr3, rr4} - v.carryPropagate() -} - -func feSquareGeneric(v, a *Element) { - l0 := a.l0 - l1 := a.l1 - l2 := a.l2 - l3 := a.l3 - l4 := a.l4 - - // Squaring works precisely like multiplication above, but thanks to its - // symmetry we get to group a few terms together. - // - // l4 l3 l2 l1 l0 x - // l4 l3 l2 l1 l0 = - // ------------------------ - // l4l0 l3l0 l2l0 l1l0 l0l0 + - // l4l1 l3l1 l2l1 l1l1 l0l1 + - // l4l2 l3l2 l2l2 l1l2 l0l2 + - // l4l3 l3l3 l2l3 l1l3 l0l3 + - // l4l4 l3l4 l2l4 l1l4 l0l4 = - // ---------------------------------------------- - // r8 r7 r6 r5 r4 r3 r2 r1 r0 - // - // l4l0 l3l0 l2l0 l1l0 l0l0 + - // l3l1 l2l1 l1l1 l0l1 19×l4l1 + - // l2l2 l1l2 l0l2 19×l4l2 19×l3l2 + - // l1l3 l0l3 19×l4l3 19×l3l3 19×l2l3 + - // l0l4 19×l4l4 19×l3l4 19×l2l4 19×l1l4 = - // -------------------------------------- - // r4 r3 r2 r1 r0 - // - // With precomputed 2×, 19×, and 2×19× terms, we can compute each limb with - // only three Mul64 and four Add64, instead of five and eight. - - l0_2 := l0 * 2 - l1_2 := l1 * 2 - - l1_38 := l1 * 38 - l2_38 := l2 * 38 - l3_38 := l3 * 38 - - l3_19 := l3 * 19 - l4_19 := l4 * 19 - - // r0 = l0×l0 + 19×(l1×l4 + l2×l3 + l3×l2 + l4×l1) = l0×l0 + 19×2×(l1×l4 + l2×l3) - r0 := mul64(l0, l0) - r0 = addMul64(r0, l1_38, l4) - r0 = addMul64(r0, l2_38, l3) - - // r1 = l0×l1 + l1×l0 + 19×(l2×l4 + l3×l3 + l4×l2) = 2×l0×l1 + 19×2×l2×l4 + 19×l3×l3 - r1 := mul64(l0_2, l1) - r1 = addMul64(r1, l2_38, l4) - r1 = addMul64(r1, l3_19, l3) - - // r2 = l0×l2 + l1×l1 + l2×l0 + 19×(l3×l4 + l4×l3) = 2×l0×l2 + l1×l1 + 19×2×l3×l4 - r2 := mul64(l0_2, l2) - r2 = addMul64(r2, l1, l1) - r2 = addMul64(r2, l3_38, l4) - - // r3 = l0×l3 + l1×l2 + l2×l1 + l3×l0 + 19×l4×l4 = 2×l0×l3 + 2×l1×l2 + 19×l4×l4 - r3 := mul64(l0_2, l3) - r3 = addMul64(r3, l1_2, l2) - r3 = addMul64(r3, l4_19, l4) - - // r4 = l0×l4 + l1×l3 + l2×l2 + l3×l1 + l4×l0 = 2×l0×l4 + 2×l1×l3 + l2×l2 - r4 := mul64(l0_2, l4) - r4 = addMul64(r4, l1_2, l3) - r4 = addMul64(r4, l2, l2) - - c0 := shiftRightBy51(r0) - c1 := shiftRightBy51(r1) - c2 := shiftRightBy51(r2) - c3 := shiftRightBy51(r3) - c4 := shiftRightBy51(r4) - - rr0 := r0.lo&maskLow51Bits + c4*19 - rr1 := r1.lo&maskLow51Bits + c0 - rr2 := r2.lo&maskLow51Bits + c1 - rr3 := r3.lo&maskLow51Bits + c2 - rr4 := r4.lo&maskLow51Bits + c3 - - *v = Element{rr0, rr1, rr2, rr3, rr4} - v.carryPropagate() -} - -// carryPropagate brings the limbs below 52 bits by applying the reduction -// identity (a * 2²⁵⁵ + b = a * 19 + b) to the l4 carry. TODO inline -func (v *Element) carryPropagateGeneric() *Element { - c0 := v.l0 >> 51 - c1 := v.l1 >> 51 - c2 := v.l2 >> 51 - c3 := v.l3 >> 51 - c4 := v.l4 >> 51 - - v.l0 = v.l0&maskLow51Bits + c4*19 - v.l1 = v.l1&maskLow51Bits + c0 - v.l2 = v.l2&maskLow51Bits + c1 - v.l3 = v.l3&maskLow51Bits + c2 - v.l4 = v.l4&maskLow51Bits + c3 - - return v -} diff --git a/vendor/golang.org/x/crypto/curve25519/internal/field/sync.checkpoint b/vendor/golang.org/x/crypto/curve25519/internal/field/sync.checkpoint deleted file mode 100644 index e3685f9..0000000 --- a/vendor/golang.org/x/crypto/curve25519/internal/field/sync.checkpoint +++ /dev/null @@ -1 +0,0 @@ -b0c49ae9f59d233526f8934262c5bbbe14d4358d diff --git a/vendor/golang.org/x/crypto/curve25519/internal/field/sync.sh b/vendor/golang.org/x/crypto/curve25519/internal/field/sync.sh deleted file mode 100644 index 1ba22a8..0000000 --- a/vendor/golang.org/x/crypto/curve25519/internal/field/sync.sh +++ /dev/null @@ -1,19 +0,0 @@ -#! /bin/bash -set -euo pipefail - -cd "$(git rev-parse --show-toplevel)" - -STD_PATH=src/crypto/ed25519/internal/edwards25519/field -LOCAL_PATH=curve25519/internal/field -LAST_SYNC_REF=$(cat $LOCAL_PATH/sync.checkpoint) - -git fetch https://go.googlesource.com/go master - -if git diff --quiet $LAST_SYNC_REF:$STD_PATH FETCH_HEAD:$STD_PATH; then - echo "No changes." -else - NEW_REF=$(git rev-parse FETCH_HEAD | tee $LOCAL_PATH/sync.checkpoint) - echo "Applying changes from $LAST_SYNC_REF to $NEW_REF..." - git diff $LAST_SYNC_REF:$STD_PATH FETCH_HEAD:$STD_PATH | \ - git apply -3 --directory=$LOCAL_PATH -fi diff --git a/vendor/golang.org/x/crypto/ed25519/ed25519.go b/vendor/golang.org/x/crypto/ed25519/ed25519.go deleted file mode 100644 index a782834..0000000 --- a/vendor/golang.org/x/crypto/ed25519/ed25519.go +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright 2019 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 ed25519 implements the Ed25519 signature algorithm. See -// https://ed25519.cr.yp.to/. -// -// These functions are also compatible with the “Ed25519” function defined in -// RFC 8032. However, unlike RFC 8032's formulation, this package's private key -// representation includes a public key suffix to make multiple signing -// operations with the same key more efficient. This package refers to the RFC -// 8032 private key as the “seed”. -// -// Beginning with Go 1.13, the functionality of this package was moved to the -// standard library as crypto/ed25519. This package only acts as a compatibility -// wrapper. -package ed25519 - -import ( - "crypto/ed25519" - "io" -) - -const ( - // PublicKeySize is the size, in bytes, of public keys as used in this package. - PublicKeySize = 32 - // PrivateKeySize is the size, in bytes, of private keys as used in this package. - PrivateKeySize = 64 - // SignatureSize is the size, in bytes, of signatures generated and verified by this package. - SignatureSize = 64 - // SeedSize is the size, in bytes, of private key seeds. These are the private key representations used by RFC 8032. - SeedSize = 32 -) - -// PublicKey is the type of Ed25519 public keys. -// -// This type is an alias for crypto/ed25519's PublicKey type. -// See the crypto/ed25519 package for the methods on this type. -type PublicKey = ed25519.PublicKey - -// PrivateKey is the type of Ed25519 private keys. It implements crypto.Signer. -// -// This type is an alias for crypto/ed25519's PrivateKey type. -// See the crypto/ed25519 package for the methods on this type. -type PrivateKey = ed25519.PrivateKey - -// GenerateKey generates a public/private key pair using entropy from rand. -// If rand is nil, crypto/rand.Reader will be used. -func GenerateKey(rand io.Reader) (PublicKey, PrivateKey, error) { - return ed25519.GenerateKey(rand) -} - -// NewKeyFromSeed calculates a private key from a seed. It will panic if -// len(seed) is not SeedSize. This function is provided for interoperability -// with RFC 8032. RFC 8032's private keys correspond to seeds in this -// package. -func NewKeyFromSeed(seed []byte) PrivateKey { - return ed25519.NewKeyFromSeed(seed) -} - -// Sign signs the message with privateKey and returns a signature. It will -// panic if len(privateKey) is not PrivateKeySize. -func Sign(privateKey PrivateKey, message []byte) []byte { - return ed25519.Sign(privateKey, message) -} - -// Verify reports whether sig is a valid signature of message by publicKey. It -// will panic if len(publicKey) is not PublicKeySize. -func Verify(publicKey PublicKey, message, sig []byte) bool { - return ed25519.Verify(publicKey, message, sig) -} diff --git a/vendor/golang.org/x/crypto/internal/poly1305/bits_compat.go b/vendor/golang.org/x/crypto/internal/poly1305/bits_compat.go deleted file mode 100644 index 45b5c96..0000000 --- a/vendor/golang.org/x/crypto/internal/poly1305/bits_compat.go +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2019 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:build !go1.13 -// +build !go1.13 - -package poly1305 - -// Generic fallbacks for the math/bits intrinsics, copied from -// src/math/bits/bits.go. They were added in Go 1.12, but Add64 and Sum64 had -// variable time fallbacks until Go 1.13. - -func bitsAdd64(x, y, carry uint64) (sum, carryOut uint64) { - sum = x + y + carry - carryOut = ((x & y) | ((x | y) &^ sum)) >> 63 - return -} - -func bitsSub64(x, y, borrow uint64) (diff, borrowOut uint64) { - diff = x - y - borrow - borrowOut = ((^x & y) | (^(x ^ y) & diff)) >> 63 - return -} - -func bitsMul64(x, y uint64) (hi, lo uint64) { - const mask32 = 1<<32 - 1 - x0 := x & mask32 - x1 := x >> 32 - y0 := y & mask32 - y1 := y >> 32 - w0 := x0 * y0 - t := x1*y0 + w0>>32 - w1 := t & mask32 - w2 := t >> 32 - w1 += x0 * y1 - hi = x1*y1 + w2 + w1>>32 - lo = x * y - return -} diff --git a/vendor/golang.org/x/crypto/internal/poly1305/bits_go1.13.go b/vendor/golang.org/x/crypto/internal/poly1305/bits_go1.13.go deleted file mode 100644 index ed52b34..0000000 --- a/vendor/golang.org/x/crypto/internal/poly1305/bits_go1.13.go +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2019 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:build go1.13 -// +build go1.13 - -package poly1305 - -import "math/bits" - -func bitsAdd64(x, y, carry uint64) (sum, carryOut uint64) { - return bits.Add64(x, y, carry) -} - -func bitsSub64(x, y, borrow uint64) (diff, borrowOut uint64) { - return bits.Sub64(x, y, borrow) -} - -func bitsMul64(x, y uint64) (hi, lo uint64) { - return bits.Mul64(x, y) -} diff --git a/vendor/golang.org/x/crypto/internal/poly1305/mac_noasm.go b/vendor/golang.org/x/crypto/internal/poly1305/mac_noasm.go deleted file mode 100644 index f184b67..0000000 --- a/vendor/golang.org/x/crypto/internal/poly1305/mac_noasm.go +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2018 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:build (!amd64 && !ppc64le && !s390x) || !gc || purego -// +build !amd64,!ppc64le,!s390x !gc purego - -package poly1305 - -type mac struct{ macGeneric } diff --git a/vendor/golang.org/x/crypto/internal/poly1305/poly1305.go b/vendor/golang.org/x/crypto/internal/poly1305/poly1305.go deleted file mode 100644 index 4aaea81..0000000 --- a/vendor/golang.org/x/crypto/internal/poly1305/poly1305.go +++ /dev/null @@ -1,99 +0,0 @@ -// Copyright 2012 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 poly1305 implements Poly1305 one-time message authentication code as -// specified in https://cr.yp.to/mac/poly1305-20050329.pdf. -// -// Poly1305 is a fast, one-time authentication function. It is infeasible for an -// attacker to generate an authenticator for a message without the key. However, a -// key must only be used for a single message. Authenticating two different -// messages with the same key allows an attacker to forge authenticators for other -// messages with the same key. -// -// Poly1305 was originally coupled with AES in order to make Poly1305-AES. AES was -// used with a fixed key in order to generate one-time keys from an nonce. -// However, in this package AES isn't used and the one-time key is specified -// directly. -package poly1305 - -import "crypto/subtle" - -// TagSize is the size, in bytes, of a poly1305 authenticator. -const TagSize = 16 - -// Sum generates an authenticator for msg using a one-time key and puts the -// 16-byte result into out. Authenticating two different messages with the same -// key allows an attacker to forge messages at will. -func Sum(out *[16]byte, m []byte, key *[32]byte) { - h := New(key) - h.Write(m) - h.Sum(out[:0]) -} - -// Verify returns true if mac is a valid authenticator for m with the given key. -func Verify(mac *[16]byte, m []byte, key *[32]byte) bool { - var tmp [16]byte - Sum(&tmp, m, key) - return subtle.ConstantTimeCompare(tmp[:], mac[:]) == 1 -} - -// New returns a new MAC computing an authentication -// tag of all data written to it with the given key. -// This allows writing the message progressively instead -// of passing it as a single slice. Common users should use -// the Sum function instead. -// -// The key must be unique for each message, as authenticating -// two different messages with the same key allows an attacker -// to forge messages at will. -func New(key *[32]byte) *MAC { - m := &MAC{} - initialize(key, &m.macState) - return m -} - -// MAC is an io.Writer computing an authentication tag -// of the data written to it. -// -// MAC cannot be used like common hash.Hash implementations, -// because using a poly1305 key twice breaks its security. -// Therefore writing data to a running MAC after calling -// Sum or Verify causes it to panic. -type MAC struct { - mac // platform-dependent implementation - - finalized bool -} - -// Size returns the number of bytes Sum will return. -func (h *MAC) Size() int { return TagSize } - -// Write adds more data to the running message authentication code. -// It never returns an error. -// -// It must not be called after the first call of Sum or Verify. -func (h *MAC) Write(p []byte) (n int, err error) { - if h.finalized { - panic("poly1305: write to MAC after Sum or Verify") - } - return h.mac.Write(p) -} - -// Sum computes the authenticator of all data written to the -// message authentication code. -func (h *MAC) Sum(b []byte) []byte { - var mac [TagSize]byte - h.mac.Sum(&mac) - h.finalized = true - return append(b, mac[:]...) -} - -// Verify returns whether the authenticator of all data written to -// the message authentication code matches the expected value. -func (h *MAC) Verify(expected []byte) bool { - var mac [TagSize]byte - h.mac.Sum(&mac) - h.finalized = true - return subtle.ConstantTimeCompare(expected, mac[:]) == 1 -} diff --git a/vendor/golang.org/x/crypto/internal/poly1305/sum_amd64.go b/vendor/golang.org/x/crypto/internal/poly1305/sum_amd64.go deleted file mode 100644 index 6d52233..0000000 --- a/vendor/golang.org/x/crypto/internal/poly1305/sum_amd64.go +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2012 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:build gc && !purego -// +build gc,!purego - -package poly1305 - -//go:noescape -func update(state *macState, msg []byte) - -// mac is a wrapper for macGeneric that redirects calls that would have gone to -// updateGeneric to update. -// -// Its Write and Sum methods are otherwise identical to the macGeneric ones, but -// using function pointers would carry a major performance cost. -type mac struct{ macGeneric } - -func (h *mac) Write(p []byte) (int, error) { - nn := len(p) - if h.offset > 0 { - n := copy(h.buffer[h.offset:], p) - if h.offset+n < TagSize { - h.offset += n - return nn, nil - } - p = p[n:] - h.offset = 0 - update(&h.macState, h.buffer[:]) - } - if n := len(p) - (len(p) % TagSize); n > 0 { - update(&h.macState, p[:n]) - p = p[n:] - } - if len(p) > 0 { - h.offset += copy(h.buffer[h.offset:], p) - } - return nn, nil -} - -func (h *mac) Sum(out *[16]byte) { - state := h.macState - if h.offset > 0 { - update(&state, h.buffer[:h.offset]) - } - finalize(out, &state.h, &state.s) -} diff --git a/vendor/golang.org/x/crypto/internal/poly1305/sum_amd64.s b/vendor/golang.org/x/crypto/internal/poly1305/sum_amd64.s deleted file mode 100644 index 1d74f0f..0000000 --- a/vendor/golang.org/x/crypto/internal/poly1305/sum_amd64.s +++ /dev/null @@ -1,109 +0,0 @@ -// Copyright 2012 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:build gc && !purego -// +build gc,!purego - -#include "textflag.h" - -#define POLY1305_ADD(msg, h0, h1, h2) \ - ADDQ 0(msg), h0; \ - ADCQ 8(msg), h1; \ - ADCQ $1, h2; \ - LEAQ 16(msg), msg - -#define POLY1305_MUL(h0, h1, h2, r0, r1, t0, t1, t2, t3) \ - MOVQ r0, AX; \ - MULQ h0; \ - MOVQ AX, t0; \ - MOVQ DX, t1; \ - MOVQ r0, AX; \ - MULQ h1; \ - ADDQ AX, t1; \ - ADCQ $0, DX; \ - MOVQ r0, t2; \ - IMULQ h2, t2; \ - ADDQ DX, t2; \ - \ - MOVQ r1, AX; \ - MULQ h0; \ - ADDQ AX, t1; \ - ADCQ $0, DX; \ - MOVQ DX, h0; \ - MOVQ r1, t3; \ - IMULQ h2, t3; \ - MOVQ r1, AX; \ - MULQ h1; \ - ADDQ AX, t2; \ - ADCQ DX, t3; \ - ADDQ h0, t2; \ - ADCQ $0, t3; \ - \ - MOVQ t0, h0; \ - MOVQ t1, h1; \ - MOVQ t2, h2; \ - ANDQ $3, h2; \ - MOVQ t2, t0; \ - ANDQ $0xFFFFFFFFFFFFFFFC, t0; \ - ADDQ t0, h0; \ - ADCQ t3, h1; \ - ADCQ $0, h2; \ - SHRQ $2, t3, t2; \ - SHRQ $2, t3; \ - ADDQ t2, h0; \ - ADCQ t3, h1; \ - ADCQ $0, h2 - -// func update(state *[7]uint64, msg []byte) -TEXT ·update(SB), $0-32 - MOVQ state+0(FP), DI - MOVQ msg_base+8(FP), SI - MOVQ msg_len+16(FP), R15 - - MOVQ 0(DI), R8 // h0 - MOVQ 8(DI), R9 // h1 - MOVQ 16(DI), R10 // h2 - MOVQ 24(DI), R11 // r0 - MOVQ 32(DI), R12 // r1 - - CMPQ R15, $16 - JB bytes_between_0_and_15 - -loop: - POLY1305_ADD(SI, R8, R9, R10) - -multiply: - POLY1305_MUL(R8, R9, R10, R11, R12, BX, CX, R13, R14) - SUBQ $16, R15 - CMPQ R15, $16 - JAE loop - -bytes_between_0_and_15: - TESTQ R15, R15 - JZ done - MOVQ $1, BX - XORQ CX, CX - XORQ R13, R13 - ADDQ R15, SI - -flush_buffer: - SHLQ $8, BX, CX - SHLQ $8, BX - MOVB -1(SI), R13 - XORQ R13, BX - DECQ SI - DECQ R15 - JNZ flush_buffer - - ADDQ BX, R8 - ADCQ CX, R9 - ADCQ $0, R10 - MOVQ $16, R15 - JMP multiply - -done: - MOVQ R8, 0(DI) - MOVQ R9, 8(DI) - MOVQ R10, 16(DI) - RET diff --git a/vendor/golang.org/x/crypto/internal/poly1305/sum_generic.go b/vendor/golang.org/x/crypto/internal/poly1305/sum_generic.go deleted file mode 100644 index e041da5..0000000 --- a/vendor/golang.org/x/crypto/internal/poly1305/sum_generic.go +++ /dev/null @@ -1,309 +0,0 @@ -// Copyright 2018 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. - -// This file provides the generic implementation of Sum and MAC. Other files -// might provide optimized assembly implementations of some of this code. - -package poly1305 - -import "encoding/binary" - -// Poly1305 [RFC 7539] is a relatively simple algorithm: the authentication tag -// for a 64 bytes message is approximately -// -// s + m[0:16] * r⁴ + m[16:32] * r³ + m[32:48] * r² + m[48:64] * r mod 2¹³⁰ - 5 -// -// for some secret r and s. It can be computed sequentially like -// -// for len(msg) > 0: -// h += read(msg, 16) -// h *= r -// h %= 2¹³⁰ - 5 -// return h + s -// -// All the complexity is about doing performant constant-time math on numbers -// larger than any available numeric type. - -func sumGeneric(out *[TagSize]byte, msg []byte, key *[32]byte) { - h := newMACGeneric(key) - h.Write(msg) - h.Sum(out) -} - -func newMACGeneric(key *[32]byte) macGeneric { - m := macGeneric{} - initialize(key, &m.macState) - return m -} - -// macState holds numbers in saturated 64-bit little-endian limbs. That is, -// the value of [x0, x1, x2] is x[0] + x[1] * 2⁶⁴ + x[2] * 2¹²⁸. -type macState struct { - // h is the main accumulator. It is to be interpreted modulo 2¹³⁰ - 5, but - // can grow larger during and after rounds. It must, however, remain below - // 2 * (2¹³⁰ - 5). - h [3]uint64 - // r and s are the private key components. - r [2]uint64 - s [2]uint64 -} - -type macGeneric struct { - macState - - buffer [TagSize]byte - offset int -} - -// Write splits the incoming message into TagSize chunks, and passes them to -// update. It buffers incomplete chunks. -func (h *macGeneric) Write(p []byte) (int, error) { - nn := len(p) - if h.offset > 0 { - n := copy(h.buffer[h.offset:], p) - if h.offset+n < TagSize { - h.offset += n - return nn, nil - } - p = p[n:] - h.offset = 0 - updateGeneric(&h.macState, h.buffer[:]) - } - if n := len(p) - (len(p) % TagSize); n > 0 { - updateGeneric(&h.macState, p[:n]) - p = p[n:] - } - if len(p) > 0 { - h.offset += copy(h.buffer[h.offset:], p) - } - return nn, nil -} - -// Sum flushes the last incomplete chunk from the buffer, if any, and generates -// the MAC output. It does not modify its state, in order to allow for multiple -// calls to Sum, even if no Write is allowed after Sum. -func (h *macGeneric) Sum(out *[TagSize]byte) { - state := h.macState - if h.offset > 0 { - updateGeneric(&state, h.buffer[:h.offset]) - } - finalize(out, &state.h, &state.s) -} - -// [rMask0, rMask1] is the specified Poly1305 clamping mask in little-endian. It -// clears some bits of the secret coefficient to make it possible to implement -// multiplication more efficiently. -const ( - rMask0 = 0x0FFFFFFC0FFFFFFF - rMask1 = 0x0FFFFFFC0FFFFFFC -) - -// initialize loads the 256-bit key into the two 128-bit secret values r and s. -func initialize(key *[32]byte, m *macState) { - m.r[0] = binary.LittleEndian.Uint64(key[0:8]) & rMask0 - m.r[1] = binary.LittleEndian.Uint64(key[8:16]) & rMask1 - m.s[0] = binary.LittleEndian.Uint64(key[16:24]) - m.s[1] = binary.LittleEndian.Uint64(key[24:32]) -} - -// uint128 holds a 128-bit number as two 64-bit limbs, for use with the -// bits.Mul64 and bits.Add64 intrinsics. -type uint128 struct { - lo, hi uint64 -} - -func mul64(a, b uint64) uint128 { - hi, lo := bitsMul64(a, b) - return uint128{lo, hi} -} - -func add128(a, b uint128) uint128 { - lo, c := bitsAdd64(a.lo, b.lo, 0) - hi, c := bitsAdd64(a.hi, b.hi, c) - if c != 0 { - panic("poly1305: unexpected overflow") - } - return uint128{lo, hi} -} - -func shiftRightBy2(a uint128) uint128 { - a.lo = a.lo>>2 | (a.hi&3)<<62 - a.hi = a.hi >> 2 - return a -} - -// updateGeneric absorbs msg into the state.h accumulator. For each chunk m of -// 128 bits of message, it computes -// -// h₊ = (h + m) * r mod 2¹³⁰ - 5 -// -// If the msg length is not a multiple of TagSize, it assumes the last -// incomplete chunk is the final one. -func updateGeneric(state *macState, msg []byte) { - h0, h1, h2 := state.h[0], state.h[1], state.h[2] - r0, r1 := state.r[0], state.r[1] - - for len(msg) > 0 { - var c uint64 - - // For the first step, h + m, we use a chain of bits.Add64 intrinsics. - // The resulting value of h might exceed 2¹³⁰ - 5, but will be partially - // reduced at the end of the multiplication below. - // - // The spec requires us to set a bit just above the message size, not to - // hide leading zeroes. For full chunks, that's 1 << 128, so we can just - // add 1 to the most significant (2¹²⁸) limb, h2. - if len(msg) >= TagSize { - h0, c = bitsAdd64(h0, binary.LittleEndian.Uint64(msg[0:8]), 0) - h1, c = bitsAdd64(h1, binary.LittleEndian.Uint64(msg[8:16]), c) - h2 += c + 1 - - msg = msg[TagSize:] - } else { - var buf [TagSize]byte - copy(buf[:], msg) - buf[len(msg)] = 1 - - h0, c = bitsAdd64(h0, binary.LittleEndian.Uint64(buf[0:8]), 0) - h1, c = bitsAdd64(h1, binary.LittleEndian.Uint64(buf[8:16]), c) - h2 += c - - msg = nil - } - - // Multiplication of big number limbs is similar to elementary school - // columnar multiplication. Instead of digits, there are 64-bit limbs. - // - // We are multiplying a 3 limbs number, h, by a 2 limbs number, r. - // - // h2 h1 h0 x - // r1 r0 = - // ---------------- - // h2r0 h1r0 h0r0 <-- individual 128-bit products - // + h2r1 h1r1 h0r1 - // ------------------------ - // m3 m2 m1 m0 <-- result in 128-bit overlapping limbs - // ------------------------ - // m3.hi m2.hi m1.hi m0.hi <-- carry propagation - // + m3.lo m2.lo m1.lo m0.lo - // ------------------------------- - // t4 t3 t2 t1 t0 <-- final result in 64-bit limbs - // - // The main difference from pen-and-paper multiplication is that we do - // carry propagation in a separate step, as if we wrote two digit sums - // at first (the 128-bit limbs), and then carried the tens all at once. - - h0r0 := mul64(h0, r0) - h1r0 := mul64(h1, r0) - h2r0 := mul64(h2, r0) - h0r1 := mul64(h0, r1) - h1r1 := mul64(h1, r1) - h2r1 := mul64(h2, r1) - - // Since h2 is known to be at most 7 (5 + 1 + 1), and r0 and r1 have their - // top 4 bits cleared by rMask{0,1}, we know that their product is not going - // to overflow 64 bits, so we can ignore the high part of the products. - // - // This also means that the product doesn't have a fifth limb (t4). - if h2r0.hi != 0 { - panic("poly1305: unexpected overflow") - } - if h2r1.hi != 0 { - panic("poly1305: unexpected overflow") - } - - m0 := h0r0 - m1 := add128(h1r0, h0r1) // These two additions don't overflow thanks again - m2 := add128(h2r0, h1r1) // to the 4 masked bits at the top of r0 and r1. - m3 := h2r1 - - t0 := m0.lo - t1, c := bitsAdd64(m1.lo, m0.hi, 0) - t2, c := bitsAdd64(m2.lo, m1.hi, c) - t3, _ := bitsAdd64(m3.lo, m2.hi, c) - - // Now we have the result as 4 64-bit limbs, and we need to reduce it - // modulo 2¹³⁰ - 5. The special shape of this Crandall prime lets us do - // a cheap partial reduction according to the reduction identity - // - // c * 2¹³⁰ + n = c * 5 + n mod 2¹³⁰ - 5 - // - // because 2¹³⁰ = 5 mod 2¹³⁰ - 5. Partial reduction since the result is - // likely to be larger than 2¹³⁰ - 5, but still small enough to fit the - // assumptions we make about h in the rest of the code. - // - // See also https://speakerdeck.com/gtank/engineering-prime-numbers?slide=23 - - // We split the final result at the 2¹³⁰ mark into h and cc, the carry. - // Note that the carry bits are effectively shifted left by 2, in other - // words, cc = c * 4 for the c in the reduction identity. - h0, h1, h2 = t0, t1, t2&maskLow2Bits - cc := uint128{t2 & maskNotLow2Bits, t3} - - // To add c * 5 to h, we first add cc = c * 4, and then add (cc >> 2) = c. - - h0, c = bitsAdd64(h0, cc.lo, 0) - h1, c = bitsAdd64(h1, cc.hi, c) - h2 += c - - cc = shiftRightBy2(cc) - - h0, c = bitsAdd64(h0, cc.lo, 0) - h1, c = bitsAdd64(h1, cc.hi, c) - h2 += c - - // h2 is at most 3 + 1 + 1 = 5, making the whole of h at most - // - // 5 * 2¹²⁸ + (2¹²⁸ - 1) = 6 * 2¹²⁸ - 1 - } - - state.h[0], state.h[1], state.h[2] = h0, h1, h2 -} - -const ( - maskLow2Bits uint64 = 0x0000000000000003 - maskNotLow2Bits uint64 = ^maskLow2Bits -) - -// select64 returns x if v == 1 and y if v == 0, in constant time. -func select64(v, x, y uint64) uint64 { return ^(v-1)&x | (v-1)&y } - -// [p0, p1, p2] is 2¹³⁰ - 5 in little endian order. -const ( - p0 = 0xFFFFFFFFFFFFFFFB - p1 = 0xFFFFFFFFFFFFFFFF - p2 = 0x0000000000000003 -) - -// finalize completes the modular reduction of h and computes -// -// out = h + s mod 2¹²⁸ -func finalize(out *[TagSize]byte, h *[3]uint64, s *[2]uint64) { - h0, h1, h2 := h[0], h[1], h[2] - - // After the partial reduction in updateGeneric, h might be more than - // 2¹³⁰ - 5, but will be less than 2 * (2¹³⁰ - 5). To complete the reduction - // in constant time, we compute t = h - (2¹³⁰ - 5), and select h as the - // result if the subtraction underflows, and t otherwise. - - hMinusP0, b := bitsSub64(h0, p0, 0) - hMinusP1, b := bitsSub64(h1, p1, b) - _, b = bitsSub64(h2, p2, b) - - // h = h if h < p else h - p - h0 = select64(b, h0, hMinusP0) - h1 = select64(b, h1, hMinusP1) - - // Finally, we compute the last Poly1305 step - // - // tag = h + s mod 2¹²⁸ - // - // by just doing a wide addition with the 128 low bits of h and discarding - // the overflow. - h0, c := bitsAdd64(h0, s[0], 0) - h1, _ = bitsAdd64(h1, s[1], c) - - binary.LittleEndian.PutUint64(out[0:8], h0) - binary.LittleEndian.PutUint64(out[8:16], h1) -} diff --git a/vendor/golang.org/x/crypto/internal/poly1305/sum_ppc64le.go b/vendor/golang.org/x/crypto/internal/poly1305/sum_ppc64le.go deleted file mode 100644 index 4a06994..0000000 --- a/vendor/golang.org/x/crypto/internal/poly1305/sum_ppc64le.go +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2019 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:build gc && !purego -// +build gc,!purego - -package poly1305 - -//go:noescape -func update(state *macState, msg []byte) - -// mac is a wrapper for macGeneric that redirects calls that would have gone to -// updateGeneric to update. -// -// Its Write and Sum methods are otherwise identical to the macGeneric ones, but -// using function pointers would carry a major performance cost. -type mac struct{ macGeneric } - -func (h *mac) Write(p []byte) (int, error) { - nn := len(p) - if h.offset > 0 { - n := copy(h.buffer[h.offset:], p) - if h.offset+n < TagSize { - h.offset += n - return nn, nil - } - p = p[n:] - h.offset = 0 - update(&h.macState, h.buffer[:]) - } - if n := len(p) - (len(p) % TagSize); n > 0 { - update(&h.macState, p[:n]) - p = p[n:] - } - if len(p) > 0 { - h.offset += copy(h.buffer[h.offset:], p) - } - return nn, nil -} - -func (h *mac) Sum(out *[16]byte) { - state := h.macState - if h.offset > 0 { - update(&state, h.buffer[:h.offset]) - } - finalize(out, &state.h, &state.s) -} diff --git a/vendor/golang.org/x/crypto/internal/poly1305/sum_ppc64le.s b/vendor/golang.org/x/crypto/internal/poly1305/sum_ppc64le.s deleted file mode 100644 index 58422aa..0000000 --- a/vendor/golang.org/x/crypto/internal/poly1305/sum_ppc64le.s +++ /dev/null @@ -1,182 +0,0 @@ -// Copyright 2019 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:build gc && !purego -// +build gc,!purego - -#include "textflag.h" - -// This was ported from the amd64 implementation. - -#define POLY1305_ADD(msg, h0, h1, h2, t0, t1, t2) \ - MOVD (msg), t0; \ - MOVD 8(msg), t1; \ - MOVD $1, t2; \ - ADDC t0, h0, h0; \ - ADDE t1, h1, h1; \ - ADDE t2, h2; \ - ADD $16, msg - -#define POLY1305_MUL(h0, h1, h2, r0, r1, t0, t1, t2, t3, t4, t5) \ - MULLD r0, h0, t0; \ - MULLD r0, h1, t4; \ - MULHDU r0, h0, t1; \ - MULHDU r0, h1, t5; \ - ADDC t4, t1, t1; \ - MULLD r0, h2, t2; \ - ADDZE t5; \ - MULHDU r1, h0, t4; \ - MULLD r1, h0, h0; \ - ADD t5, t2, t2; \ - ADDC h0, t1, t1; \ - MULLD h2, r1, t3; \ - ADDZE t4, h0; \ - MULHDU r1, h1, t5; \ - MULLD r1, h1, t4; \ - ADDC t4, t2, t2; \ - ADDE t5, t3, t3; \ - ADDC h0, t2, t2; \ - MOVD $-4, t4; \ - MOVD t0, h0; \ - MOVD t1, h1; \ - ADDZE t3; \ - ANDCC $3, t2, h2; \ - AND t2, t4, t0; \ - ADDC t0, h0, h0; \ - ADDE t3, h1, h1; \ - SLD $62, t3, t4; \ - SRD $2, t2; \ - ADDZE h2; \ - OR t4, t2, t2; \ - SRD $2, t3; \ - ADDC t2, h0, h0; \ - ADDE t3, h1, h1; \ - ADDZE h2 - -DATA ·poly1305Mask<>+0x00(SB)/8, $0x0FFFFFFC0FFFFFFF -DATA ·poly1305Mask<>+0x08(SB)/8, $0x0FFFFFFC0FFFFFFC -GLOBL ·poly1305Mask<>(SB), RODATA, $16 - -// func update(state *[7]uint64, msg []byte) -TEXT ·update(SB), $0-32 - MOVD state+0(FP), R3 - MOVD msg_base+8(FP), R4 - MOVD msg_len+16(FP), R5 - - MOVD 0(R3), R8 // h0 - MOVD 8(R3), R9 // h1 - MOVD 16(R3), R10 // h2 - MOVD 24(R3), R11 // r0 - MOVD 32(R3), R12 // r1 - - CMP R5, $16 - BLT bytes_between_0_and_15 - -loop: - POLY1305_ADD(R4, R8, R9, R10, R20, R21, R22) - -multiply: - POLY1305_MUL(R8, R9, R10, R11, R12, R16, R17, R18, R14, R20, R21) - ADD $-16, R5 - CMP R5, $16 - BGE loop - -bytes_between_0_and_15: - CMP R5, $0 - BEQ done - MOVD $0, R16 // h0 - MOVD $0, R17 // h1 - -flush_buffer: - CMP R5, $8 - BLE just1 - - MOVD $8, R21 - SUB R21, R5, R21 - - // Greater than 8 -- load the rightmost remaining bytes in msg - // and put into R17 (h1) - MOVD (R4)(R21), R17 - MOVD $16, R22 - - // Find the offset to those bytes - SUB R5, R22, R22 - SLD $3, R22 - - // Shift to get only the bytes in msg - SRD R22, R17, R17 - - // Put 1 at high end - MOVD $1, R23 - SLD $3, R21 - SLD R21, R23, R23 - OR R23, R17, R17 - - // Remainder is 8 - MOVD $8, R5 - -just1: - CMP R5, $8 - BLT less8 - - // Exactly 8 - MOVD (R4), R16 - - CMP R17, $0 - - // Check if we've already set R17; if not - // set 1 to indicate end of msg. - BNE carry - MOVD $1, R17 - BR carry - -less8: - MOVD $0, R16 // h0 - MOVD $0, R22 // shift count - CMP R5, $4 - BLT less4 - MOVWZ (R4), R16 - ADD $4, R4 - ADD $-4, R5 - MOVD $32, R22 - -less4: - CMP R5, $2 - BLT less2 - MOVHZ (R4), R21 - SLD R22, R21, R21 - OR R16, R21, R16 - ADD $16, R22 - ADD $-2, R5 - ADD $2, R4 - -less2: - CMP R5, $0 - BEQ insert1 - MOVBZ (R4), R21 - SLD R22, R21, R21 - OR R16, R21, R16 - ADD $8, R22 - -insert1: - // Insert 1 at end of msg - MOVD $1, R21 - SLD R22, R21, R21 - OR R16, R21, R16 - -carry: - // Add new values to h0, h1, h2 - ADDC R16, R8 - ADDE R17, R9 - ADDZE R10, R10 - MOVD $16, R5 - ADD R5, R4 - BR multiply - -done: - // Save h0, h1, h2 in state - MOVD R8, 0(R3) - MOVD R9, 8(R3) - MOVD R10, 16(R3) - RET diff --git a/vendor/golang.org/x/crypto/internal/poly1305/sum_s390x.go b/vendor/golang.org/x/crypto/internal/poly1305/sum_s390x.go deleted file mode 100644 index ec95966..0000000 --- a/vendor/golang.org/x/crypto/internal/poly1305/sum_s390x.go +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright 2018 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:build gc && !purego -// +build gc,!purego - -package poly1305 - -import ( - "golang.org/x/sys/cpu" -) - -// updateVX is an assembly implementation of Poly1305 that uses vector -// instructions. It must only be called if the vector facility (vx) is -// available. -// -//go:noescape -func updateVX(state *macState, msg []byte) - -// mac is a replacement for macGeneric that uses a larger buffer and redirects -// calls that would have gone to updateGeneric to updateVX if the vector -// facility is installed. -// -// A larger buffer is required for good performance because the vector -// implementation has a higher fixed cost per call than the generic -// implementation. -type mac struct { - macState - - buffer [16 * TagSize]byte // size must be a multiple of block size (16) - offset int -} - -func (h *mac) Write(p []byte) (int, error) { - nn := len(p) - if h.offset > 0 { - n := copy(h.buffer[h.offset:], p) - if h.offset+n < len(h.buffer) { - h.offset += n - return nn, nil - } - p = p[n:] - h.offset = 0 - if cpu.S390X.HasVX { - updateVX(&h.macState, h.buffer[:]) - } else { - updateGeneric(&h.macState, h.buffer[:]) - } - } - - tail := len(p) % len(h.buffer) // number of bytes to copy into buffer - body := len(p) - tail // number of bytes to process now - if body > 0 { - if cpu.S390X.HasVX { - updateVX(&h.macState, p[:body]) - } else { - updateGeneric(&h.macState, p[:body]) - } - } - h.offset = copy(h.buffer[:], p[body:]) // copy tail bytes - can be 0 - return nn, nil -} - -func (h *mac) Sum(out *[TagSize]byte) { - state := h.macState - remainder := h.buffer[:h.offset] - - // Use the generic implementation if we have 2 or fewer blocks left - // to sum. The vector implementation has a higher startup time. - if cpu.S390X.HasVX && len(remainder) > 2*TagSize { - updateVX(&state, remainder) - } else if len(remainder) > 0 { - updateGeneric(&state, remainder) - } - finalize(out, &state.h, &state.s) -} diff --git a/vendor/golang.org/x/crypto/internal/poly1305/sum_s390x.s b/vendor/golang.org/x/crypto/internal/poly1305/sum_s390x.s deleted file mode 100644 index aa9e049..0000000 --- a/vendor/golang.org/x/crypto/internal/poly1305/sum_s390x.s +++ /dev/null @@ -1,504 +0,0 @@ -// Copyright 2018 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:build gc && !purego -// +build gc,!purego - -#include "textflag.h" - -// This implementation of Poly1305 uses the vector facility (vx) -// to process up to 2 blocks (32 bytes) per iteration using an -// algorithm based on the one described in: -// -// NEON crypto, Daniel J. Bernstein & Peter Schwabe -// https://cryptojedi.org/papers/neoncrypto-20120320.pdf -// -// This algorithm uses 5 26-bit limbs to represent a 130-bit -// value. These limbs are, for the most part, zero extended and -// placed into 64-bit vector register elements. Each vector -// register is 128-bits wide and so holds 2 of these elements. -// Using 26-bit limbs allows us plenty of headroom to accommodate -// accumulations before and after multiplication without -// overflowing either 32-bits (before multiplication) or 64-bits -// (after multiplication). -// -// In order to parallelise the operations required to calculate -// the sum we use two separate accumulators and then sum those -// in an extra final step. For compatibility with the generic -// implementation we perform this summation at the end of every -// updateVX call. -// -// To use two accumulators we must multiply the message blocks -// by r² rather than r. Only the final message block should be -// multiplied by r. -// -// Example: -// -// We want to calculate the sum (h) for a 64 byte message (m): -// -// h = m[0:16]r⁴ + m[16:32]r³ + m[32:48]r² + m[48:64]r -// -// To do this we split the calculation into the even indices -// and odd indices of the message. These form our SIMD 'lanes': -// -// h = m[ 0:16]r⁴ + m[32:48]r² + <- lane 0 -// m[16:32]r³ + m[48:64]r <- lane 1 -// -// To calculate this iteratively we refactor so that both lanes -// are written in terms of r² and r: -// -// h = (m[ 0:16]r² + m[32:48])r² + <- lane 0 -// (m[16:32]r² + m[48:64])r <- lane 1 -// ^ ^ -// | coefficients for second iteration -// coefficients for first iteration -// -// So in this case we would have two iterations. In the first -// both lanes are multiplied by r². In the second only the -// first lane is multiplied by r² and the second lane is -// instead multiplied by r. This gives use the odd and even -// powers of r that we need from the original equation. -// -// Notation: -// -// h - accumulator -// r - key -// m - message -// -// [a, b] - SIMD register holding two 64-bit values -// [a, b, c, d] - SIMD register holding four 32-bit values -// xᵢ[n] - limb n of variable x with bit width i -// -// Limbs are expressed in little endian order, so for 26-bit -// limbs x₂₆[4] will be the most significant limb and x₂₆[0] -// will be the least significant limb. - -// masking constants -#define MOD24 V0 // [0x0000000000ffffff, 0x0000000000ffffff] - mask low 24-bits -#define MOD26 V1 // [0x0000000003ffffff, 0x0000000003ffffff] - mask low 26-bits - -// expansion constants (see EXPAND macro) -#define EX0 V2 -#define EX1 V3 -#define EX2 V4 - -// key (r², r or 1 depending on context) -#define R_0 V5 -#define R_1 V6 -#define R_2 V7 -#define R_3 V8 -#define R_4 V9 - -// precalculated coefficients (5r², 5r or 0 depending on context) -#define R5_1 V10 -#define R5_2 V11 -#define R5_3 V12 -#define R5_4 V13 - -// message block (m) -#define M_0 V14 -#define M_1 V15 -#define M_2 V16 -#define M_3 V17 -#define M_4 V18 - -// accumulator (h) -#define H_0 V19 -#define H_1 V20 -#define H_2 V21 -#define H_3 V22 -#define H_4 V23 - -// temporary registers (for short-lived values) -#define T_0 V24 -#define T_1 V25 -#define T_2 V26 -#define T_3 V27 -#define T_4 V28 - -GLOBL ·constants<>(SB), RODATA, $0x30 -// EX0 -DATA ·constants<>+0x00(SB)/8, $0x0006050403020100 -DATA ·constants<>+0x08(SB)/8, $0x1016151413121110 -// EX1 -DATA ·constants<>+0x10(SB)/8, $0x060c0b0a09080706 -DATA ·constants<>+0x18(SB)/8, $0x161c1b1a19181716 -// EX2 -DATA ·constants<>+0x20(SB)/8, $0x0d0d0d0d0d0f0e0d -DATA ·constants<>+0x28(SB)/8, $0x1d1d1d1d1d1f1e1d - -// MULTIPLY multiplies each lane of f and g, partially reduced -// modulo 2¹³⁰ - 5. The result, h, consists of partial products -// in each lane that need to be reduced further to produce the -// final result. -// -// h₁₃₀ = (f₁₃₀g₁₃₀) % 2¹³⁰ + (5f₁₃₀g₁₃₀) / 2¹³⁰ -// -// Note that the multiplication by 5 of the high bits is -// achieved by precalculating the multiplication of four of the -// g coefficients by 5. These are g51-g54. -#define MULTIPLY(f0, f1, f2, f3, f4, g0, g1, g2, g3, g4, g51, g52, g53, g54, h0, h1, h2, h3, h4) \ - VMLOF f0, g0, h0 \ - VMLOF f0, g3, h3 \ - VMLOF f0, g1, h1 \ - VMLOF f0, g4, h4 \ - VMLOF f0, g2, h2 \ - VMLOF f1, g54, T_0 \ - VMLOF f1, g2, T_3 \ - VMLOF f1, g0, T_1 \ - VMLOF f1, g3, T_4 \ - VMLOF f1, g1, T_2 \ - VMALOF f2, g53, h0, h0 \ - VMALOF f2, g1, h3, h3 \ - VMALOF f2, g54, h1, h1 \ - VMALOF f2, g2, h4, h4 \ - VMALOF f2, g0, h2, h2 \ - VMALOF f3, g52, T_0, T_0 \ - VMALOF f3, g0, T_3, T_3 \ - VMALOF f3, g53, T_1, T_1 \ - VMALOF f3, g1, T_4, T_4 \ - VMALOF f3, g54, T_2, T_2 \ - VMALOF f4, g51, h0, h0 \ - VMALOF f4, g54, h3, h3 \ - VMALOF f4, g52, h1, h1 \ - VMALOF f4, g0, h4, h4 \ - VMALOF f4, g53, h2, h2 \ - VAG T_0, h0, h0 \ - VAG T_3, h3, h3 \ - VAG T_1, h1, h1 \ - VAG T_4, h4, h4 \ - VAG T_2, h2, h2 - -// REDUCE performs the following carry operations in four -// stages, as specified in Bernstein & Schwabe: -// -// 1: h₂₆[0]->h₂₆[1] h₂₆[3]->h₂₆[4] -// 2: h₂₆[1]->h₂₆[2] h₂₆[4]->h₂₆[0] -// 3: h₂₆[0]->h₂₆[1] h₂₆[2]->h₂₆[3] -// 4: h₂₆[3]->h₂₆[4] -// -// The result is that all of the limbs are limited to 26-bits -// except for h₂₆[1] and h₂₆[4] which are limited to 27-bits. -// -// Note that although each limb is aligned at 26-bit intervals -// they may contain values that exceed 2²⁶ - 1, hence the need -// to carry the excess bits in each limb. -#define REDUCE(h0, h1, h2, h3, h4) \ - VESRLG $26, h0, T_0 \ - VESRLG $26, h3, T_1 \ - VN MOD26, h0, h0 \ - VN MOD26, h3, h3 \ - VAG T_0, h1, h1 \ - VAG T_1, h4, h4 \ - VESRLG $26, h1, T_2 \ - VESRLG $26, h4, T_3 \ - VN MOD26, h1, h1 \ - VN MOD26, h4, h4 \ - VESLG $2, T_3, T_4 \ - VAG T_3, T_4, T_4 \ - VAG T_2, h2, h2 \ - VAG T_4, h0, h0 \ - VESRLG $26, h2, T_0 \ - VESRLG $26, h0, T_1 \ - VN MOD26, h2, h2 \ - VN MOD26, h0, h0 \ - VAG T_0, h3, h3 \ - VAG T_1, h1, h1 \ - VESRLG $26, h3, T_2 \ - VN MOD26, h3, h3 \ - VAG T_2, h4, h4 - -// EXPAND splits the 128-bit little-endian values in0 and in1 -// into 26-bit big-endian limbs and places the results into -// the first and second lane of d₂₆[0:4] respectively. -// -// The EX0, EX1 and EX2 constants are arrays of byte indices -// for permutation. The permutation both reverses the bytes -// in the input and ensures the bytes are copied into the -// destination limb ready to be shifted into their final -// position. -#define EXPAND(in0, in1, d0, d1, d2, d3, d4) \ - VPERM in0, in1, EX0, d0 \ - VPERM in0, in1, EX1, d2 \ - VPERM in0, in1, EX2, d4 \ - VESRLG $26, d0, d1 \ - VESRLG $30, d2, d3 \ - VESRLG $4, d2, d2 \ - VN MOD26, d0, d0 \ // [in0₂₆[0], in1₂₆[0]] - VN MOD26, d3, d3 \ // [in0₂₆[3], in1₂₆[3]] - VN MOD26, d1, d1 \ // [in0₂₆[1], in1₂₆[1]] - VN MOD24, d4, d4 \ // [in0₂₆[4], in1₂₆[4]] - VN MOD26, d2, d2 // [in0₂₆[2], in1₂₆[2]] - -// func updateVX(state *macState, msg []byte) -TEXT ·updateVX(SB), NOSPLIT, $0 - MOVD state+0(FP), R1 - LMG msg+8(FP), R2, R3 // R2=msg_base, R3=msg_len - - // load EX0, EX1 and EX2 - MOVD $·constants<>(SB), R5 - VLM (R5), EX0, EX2 - - // generate masks - VGMG $(64-24), $63, MOD24 // [0x00ffffff, 0x00ffffff] - VGMG $(64-26), $63, MOD26 // [0x03ffffff, 0x03ffffff] - - // load h (accumulator) and r (key) from state - VZERO T_1 // [0, 0] - VL 0(R1), T_0 // [h₆₄[0], h₆₄[1]] - VLEG $0, 16(R1), T_1 // [h₆₄[2], 0] - VL 24(R1), T_2 // [r₆₄[0], r₆₄[1]] - VPDI $0, T_0, T_2, T_3 // [h₆₄[0], r₆₄[0]] - VPDI $5, T_0, T_2, T_4 // [h₆₄[1], r₆₄[1]] - - // unpack h and r into 26-bit limbs - // note: h₆₄[2] may have the low 3 bits set, so h₂₆[4] is a 27-bit value - VN MOD26, T_3, H_0 // [h₂₆[0], r₂₆[0]] - VZERO H_1 // [0, 0] - VZERO H_3 // [0, 0] - VGMG $(64-12-14), $(63-12), T_0 // [0x03fff000, 0x03fff000] - 26-bit mask with low 12 bits masked out - VESLG $24, T_1, T_1 // [h₆₄[2]<<24, 0] - VERIMG $-26&63, T_3, MOD26, H_1 // [h₂₆[1], r₂₆[1]] - VESRLG $+52&63, T_3, H_2 // [h₂₆[2], r₂₆[2]] - low 12 bits only - VERIMG $-14&63, T_4, MOD26, H_3 // [h₂₆[1], r₂₆[1]] - VESRLG $40, T_4, H_4 // [h₂₆[4], r₂₆[4]] - low 24 bits only - VERIMG $+12&63, T_4, T_0, H_2 // [h₂₆[2], r₂₆[2]] - complete - VO T_1, H_4, H_4 // [h₂₆[4], r₂₆[4]] - complete - - // replicate r across all 4 vector elements - VREPF $3, H_0, R_0 // [r₂₆[0], r₂₆[0], r₂₆[0], r₂₆[0]] - VREPF $3, H_1, R_1 // [r₂₆[1], r₂₆[1], r₂₆[1], r₂₆[1]] - VREPF $3, H_2, R_2 // [r₂₆[2], r₂₆[2], r₂₆[2], r₂₆[2]] - VREPF $3, H_3, R_3 // [r₂₆[3], r₂₆[3], r₂₆[3], r₂₆[3]] - VREPF $3, H_4, R_4 // [r₂₆[4], r₂₆[4], r₂₆[4], r₂₆[4]] - - // zero out lane 1 of h - VLEIG $1, $0, H_0 // [h₂₆[0], 0] - VLEIG $1, $0, H_1 // [h₂₆[1], 0] - VLEIG $1, $0, H_2 // [h₂₆[2], 0] - VLEIG $1, $0, H_3 // [h₂₆[3], 0] - VLEIG $1, $0, H_4 // [h₂₆[4], 0] - - // calculate 5r (ignore least significant limb) - VREPIF $5, T_0 - VMLF T_0, R_1, R5_1 // [5r₂₆[1], 5r₂₆[1], 5r₂₆[1], 5r₂₆[1]] - VMLF T_0, R_2, R5_2 // [5r₂₆[2], 5r₂₆[2], 5r₂₆[2], 5r₂₆[2]] - VMLF T_0, R_3, R5_3 // [5r₂₆[3], 5r₂₆[3], 5r₂₆[3], 5r₂₆[3]] - VMLF T_0, R_4, R5_4 // [5r₂₆[4], 5r₂₆[4], 5r₂₆[4], 5r₂₆[4]] - - // skip r² calculation if we are only calculating one block - CMPBLE R3, $16, skip - - // calculate r² - MULTIPLY(R_0, R_1, R_2, R_3, R_4, R_0, R_1, R_2, R_3, R_4, R5_1, R5_2, R5_3, R5_4, M_0, M_1, M_2, M_3, M_4) - REDUCE(M_0, M_1, M_2, M_3, M_4) - VGBM $0x0f0f, T_0 - VERIMG $0, M_0, T_0, R_0 // [r₂₆[0], r²₂₆[0], r₂₆[0], r²₂₆[0]] - VERIMG $0, M_1, T_0, R_1 // [r₂₆[1], r²₂₆[1], r₂₆[1], r²₂₆[1]] - VERIMG $0, M_2, T_0, R_2 // [r₂₆[2], r²₂₆[2], r₂₆[2], r²₂₆[2]] - VERIMG $0, M_3, T_0, R_3 // [r₂₆[3], r²₂₆[3], r₂₆[3], r²₂₆[3]] - VERIMG $0, M_4, T_0, R_4 // [r₂₆[4], r²₂₆[4], r₂₆[4], r²₂₆[4]] - - // calculate 5r² (ignore least significant limb) - VREPIF $5, T_0 - VMLF T_0, R_1, R5_1 // [5r₂₆[1], 5r²₂₆[1], 5r₂₆[1], 5r²₂₆[1]] - VMLF T_0, R_2, R5_2 // [5r₂₆[2], 5r²₂₆[2], 5r₂₆[2], 5r²₂₆[2]] - VMLF T_0, R_3, R5_3 // [5r₂₆[3], 5r²₂₆[3], 5r₂₆[3], 5r²₂₆[3]] - VMLF T_0, R_4, R5_4 // [5r₂₆[4], 5r²₂₆[4], 5r₂₆[4], 5r²₂₆[4]] - -loop: - CMPBLE R3, $32, b2 // 2 or fewer blocks remaining, need to change key coefficients - - // load next 2 blocks from message - VLM (R2), T_0, T_1 - - // update message slice - SUB $32, R3 - MOVD $32(R2), R2 - - // unpack message blocks into 26-bit big-endian limbs - EXPAND(T_0, T_1, M_0, M_1, M_2, M_3, M_4) - - // add 2¹²⁸ to each message block value - VLEIB $4, $1, M_4 - VLEIB $12, $1, M_4 - -multiply: - // accumulate the incoming message - VAG H_0, M_0, M_0 - VAG H_3, M_3, M_3 - VAG H_1, M_1, M_1 - VAG H_4, M_4, M_4 - VAG H_2, M_2, M_2 - - // multiply the accumulator by the key coefficient - MULTIPLY(M_0, M_1, M_2, M_3, M_4, R_0, R_1, R_2, R_3, R_4, R5_1, R5_2, R5_3, R5_4, H_0, H_1, H_2, H_3, H_4) - - // carry and partially reduce the partial products - REDUCE(H_0, H_1, H_2, H_3, H_4) - - CMPBNE R3, $0, loop - -finish: - // sum lane 0 and lane 1 and put the result in lane 1 - VZERO T_0 - VSUMQG H_0, T_0, H_0 - VSUMQG H_3, T_0, H_3 - VSUMQG H_1, T_0, H_1 - VSUMQG H_4, T_0, H_4 - VSUMQG H_2, T_0, H_2 - - // reduce again after summation - // TODO(mundaym): there might be a more efficient way to do this - // now that we only have 1 active lane. For example, we could - // simultaneously pack the values as we reduce them. - REDUCE(H_0, H_1, H_2, H_3, H_4) - - // carry h[1] through to h[4] so that only h[4] can exceed 2²⁶ - 1 - // TODO(mundaym): in testing this final carry was unnecessary. - // Needs a proof before it can be removed though. - VESRLG $26, H_1, T_1 - VN MOD26, H_1, H_1 - VAQ T_1, H_2, H_2 - VESRLG $26, H_2, T_2 - VN MOD26, H_2, H_2 - VAQ T_2, H_3, H_3 - VESRLG $26, H_3, T_3 - VN MOD26, H_3, H_3 - VAQ T_3, H_4, H_4 - - // h is now < 2(2¹³⁰ - 5) - // Pack each lane in h₂₆[0:4] into h₁₂₈[0:1]. - VESLG $26, H_1, H_1 - VESLG $26, H_3, H_3 - VO H_0, H_1, H_0 - VO H_2, H_3, H_2 - VESLG $4, H_2, H_2 - VLEIB $7, $48, H_1 - VSLB H_1, H_2, H_2 - VO H_0, H_2, H_0 - VLEIB $7, $104, H_1 - VSLB H_1, H_4, H_3 - VO H_3, H_0, H_0 - VLEIB $7, $24, H_1 - VSRLB H_1, H_4, H_1 - - // update state - VSTEG $1, H_0, 0(R1) - VSTEG $0, H_0, 8(R1) - VSTEG $1, H_1, 16(R1) - RET - -b2: // 2 or fewer blocks remaining - CMPBLE R3, $16, b1 - - // Load the 2 remaining blocks (17-32 bytes remaining). - MOVD $-17(R3), R0 // index of final byte to load modulo 16 - VL (R2), T_0 // load full 16 byte block - VLL R0, 16(R2), T_1 // load final (possibly partial) block and pad with zeros to 16 bytes - - // The Poly1305 algorithm requires that a 1 bit be appended to - // each message block. If the final block is less than 16 bytes - // long then it is easiest to insert the 1 before the message - // block is split into 26-bit limbs. If, on the other hand, the - // final message block is 16 bytes long then we append the 1 bit - // after expansion as normal. - MOVBZ $1, R0 - MOVD $-16(R3), R3 // index of byte in last block to insert 1 at (could be 16) - CMPBEQ R3, $16, 2(PC) // skip the insertion if the final block is 16 bytes long - VLVGB R3, R0, T_1 // insert 1 into the byte at index R3 - - // Split both blocks into 26-bit limbs in the appropriate lanes. - EXPAND(T_0, T_1, M_0, M_1, M_2, M_3, M_4) - - // Append a 1 byte to the end of the second to last block. - VLEIB $4, $1, M_4 - - // Append a 1 byte to the end of the last block only if it is a - // full 16 byte block. - CMPBNE R3, $16, 2(PC) - VLEIB $12, $1, M_4 - - // Finally, set up the coefficients for the final multiplication. - // We have previously saved r and 5r in the 32-bit even indexes - // of the R_[0-4] and R5_[1-4] coefficient registers. - // - // We want lane 0 to be multiplied by r² so that can be kept the - // same. We want lane 1 to be multiplied by r so we need to move - // the saved r value into the 32-bit odd index in lane 1 by - // rotating the 64-bit lane by 32. - VGBM $0x00ff, T_0 // [0, 0xffffffffffffffff] - mask lane 1 only - VERIMG $32, R_0, T_0, R_0 // [_, r²₂₆[0], _, r₂₆[0]] - VERIMG $32, R_1, T_0, R_1 // [_, r²₂₆[1], _, r₂₆[1]] - VERIMG $32, R_2, T_0, R_2 // [_, r²₂₆[2], _, r₂₆[2]] - VERIMG $32, R_3, T_0, R_3 // [_, r²₂₆[3], _, r₂₆[3]] - VERIMG $32, R_4, T_0, R_4 // [_, r²₂₆[4], _, r₂₆[4]] - VERIMG $32, R5_1, T_0, R5_1 // [_, 5r²₂₆[1], _, 5r₂₆[1]] - VERIMG $32, R5_2, T_0, R5_2 // [_, 5r²₂₆[2], _, 5r₂₆[2]] - VERIMG $32, R5_3, T_0, R5_3 // [_, 5r²₂₆[3], _, 5r₂₆[3]] - VERIMG $32, R5_4, T_0, R5_4 // [_, 5r²₂₆[4], _, 5r₂₆[4]] - - MOVD $0, R3 - BR multiply - -skip: - CMPBEQ R3, $0, finish - -b1: // 1 block remaining - - // Load the final block (1-16 bytes). This will be placed into - // lane 0. - MOVD $-1(R3), R0 - VLL R0, (R2), T_0 // pad to 16 bytes with zeros - - // The Poly1305 algorithm requires that a 1 bit be appended to - // each message block. If the final block is less than 16 bytes - // long then it is easiest to insert the 1 before the message - // block is split into 26-bit limbs. If, on the other hand, the - // final message block is 16 bytes long then we append the 1 bit - // after expansion as normal. - MOVBZ $1, R0 - CMPBEQ R3, $16, 2(PC) - VLVGB R3, R0, T_0 - - // Set the message block in lane 1 to the value 0 so that it - // can be accumulated without affecting the final result. - VZERO T_1 - - // Split the final message block into 26-bit limbs in lane 0. - // Lane 1 will be contain 0. - EXPAND(T_0, T_1, M_0, M_1, M_2, M_3, M_4) - - // Append a 1 byte to the end of the last block only if it is a - // full 16 byte block. - CMPBNE R3, $16, 2(PC) - VLEIB $4, $1, M_4 - - // We have previously saved r and 5r in the 32-bit even indexes - // of the R_[0-4] and R5_[1-4] coefficient registers. - // - // We want lane 0 to be multiplied by r so we need to move the - // saved r value into the 32-bit odd index in lane 0. We want - // lane 1 to be set to the value 1. This makes multiplication - // a no-op. We do this by setting lane 1 in every register to 0 - // and then just setting the 32-bit index 3 in R_0 to 1. - VZERO T_0 - MOVD $0, R0 - MOVD $0x10111213, R12 - VLVGP R12, R0, T_1 // [_, 0x10111213, _, 0x00000000] - VPERM T_0, R_0, T_1, R_0 // [_, r₂₆[0], _, 0] - VPERM T_0, R_1, T_1, R_1 // [_, r₂₆[1], _, 0] - VPERM T_0, R_2, T_1, R_2 // [_, r₂₆[2], _, 0] - VPERM T_0, R_3, T_1, R_3 // [_, r₂₆[3], _, 0] - VPERM T_0, R_4, T_1, R_4 // [_, r₂₆[4], _, 0] - VPERM T_0, R5_1, T_1, R5_1 // [_, 5r₂₆[1], _, 0] - VPERM T_0, R5_2, T_1, R5_2 // [_, 5r₂₆[2], _, 0] - VPERM T_0, R5_3, T_1, R5_3 // [_, 5r₂₆[3], _, 0] - VPERM T_0, R5_4, T_1, R5_4 // [_, 5r₂₆[4], _, 0] - - // Set the value of lane 1 to be 1. - VLEIF $3, $1, R_0 // [_, r₂₆[0], _, 1] - - MOVD $0, R3 - BR multiply diff --git a/vendor/golang.org/x/crypto/internal/subtle/aliasing.go b/vendor/golang.org/x/crypto/internal/subtle/aliasing.go deleted file mode 100644 index 4fad24f..0000000 --- a/vendor/golang.org/x/crypto/internal/subtle/aliasing.go +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2018 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:build !purego -// +build !purego - -// Package subtle implements functions that are often useful in cryptographic -// code but require careful thought to use correctly. -package subtle // import "golang.org/x/crypto/internal/subtle" - -import "unsafe" - -// AnyOverlap reports whether x and y share memory at any (not necessarily -// corresponding) index. The memory beyond the slice length is ignored. -func AnyOverlap(x, y []byte) bool { - return len(x) > 0 && len(y) > 0 && - uintptr(unsafe.Pointer(&x[0])) <= uintptr(unsafe.Pointer(&y[len(y)-1])) && - uintptr(unsafe.Pointer(&y[0])) <= uintptr(unsafe.Pointer(&x[len(x)-1])) -} - -// InexactOverlap reports whether x and y share memory at any non-corresponding -// index. The memory beyond the slice length is ignored. Note that x and y can -// have different lengths and still not have any inexact overlap. -// -// InexactOverlap can be used to implement the requirements of the crypto/cipher -// AEAD, Block, BlockMode and Stream interfaces. -func InexactOverlap(x, y []byte) bool { - if len(x) == 0 || len(y) == 0 || &x[0] == &y[0] { - return false - } - return AnyOverlap(x, y) -} diff --git a/vendor/golang.org/x/crypto/internal/subtle/aliasing_purego.go b/vendor/golang.org/x/crypto/internal/subtle/aliasing_purego.go deleted file mode 100644 index 80ccbed..0000000 --- a/vendor/golang.org/x/crypto/internal/subtle/aliasing_purego.go +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2018 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:build purego -// +build purego - -// Package subtle implements functions that are often useful in cryptographic -// code but require careful thought to use correctly. -package subtle // import "golang.org/x/crypto/internal/subtle" - -// This is the Google App Engine standard variant based on reflect -// because the unsafe package and cgo are disallowed. - -import "reflect" - -// AnyOverlap reports whether x and y share memory at any (not necessarily -// corresponding) index. The memory beyond the slice length is ignored. -func AnyOverlap(x, y []byte) bool { - return len(x) > 0 && len(y) > 0 && - reflect.ValueOf(&x[0]).Pointer() <= reflect.ValueOf(&y[len(y)-1]).Pointer() && - reflect.ValueOf(&y[0]).Pointer() <= reflect.ValueOf(&x[len(x)-1]).Pointer() -} - -// InexactOverlap reports whether x and y share memory at any non-corresponding -// index. The memory beyond the slice length is ignored. Note that x and y can -// have different lengths and still not have any inexact overlap. -// -// InexactOverlap can be used to implement the requirements of the crypto/cipher -// AEAD, Block, BlockMode and Stream interfaces. -func InexactOverlap(x, y []byte) bool { - if len(x) == 0 || len(y) == 0 || &x[0] == &y[0] { - return false - } - return AnyOverlap(x, y) -} diff --git a/vendor/golang.org/x/crypto/openpgp/armor/armor.go b/vendor/golang.org/x/crypto/openpgp/armor/armor.go deleted file mode 100644 index be342ad..0000000 --- a/vendor/golang.org/x/crypto/openpgp/armor/armor.go +++ /dev/null @@ -1,232 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package armor implements OpenPGP ASCII Armor, see RFC 4880. OpenPGP Armor is -// very similar to PEM except that it has an additional CRC checksum. -// -// Deprecated: this package is unmaintained except for security fixes. New -// applications should consider a more focused, modern alternative to OpenPGP -// for their specific task. If you are required to interoperate with OpenPGP -// systems and need a maintained package, consider a community fork. -// See https://golang.org/issue/44226. -package armor // import "golang.org/x/crypto/openpgp/armor" - -import ( - "bufio" - "bytes" - "encoding/base64" - "golang.org/x/crypto/openpgp/errors" - "io" -) - -// A Block represents an OpenPGP armored structure. -// -// The encoded form is: -// -// -----BEGIN Type----- -// Headers -// -// base64-encoded Bytes -// '=' base64 encoded checksum -// -----END Type----- -// -// where Headers is a possibly empty sequence of Key: Value lines. -// -// Since the armored data can be very large, this package presents a streaming -// interface. -type Block struct { - Type string // The type, taken from the preamble (i.e. "PGP SIGNATURE"). - Header map[string]string // Optional headers. - Body io.Reader // A Reader from which the contents can be read - lReader lineReader - oReader openpgpReader -} - -var ArmorCorrupt error = errors.StructuralError("armor invalid") - -const crc24Init = 0xb704ce -const crc24Poly = 0x1864cfb -const crc24Mask = 0xffffff - -// crc24 calculates the OpenPGP checksum as specified in RFC 4880, section 6.1 -func crc24(crc uint32, d []byte) uint32 { - for _, b := range d { - crc ^= uint32(b) << 16 - for i := 0; i < 8; i++ { - crc <<= 1 - if crc&0x1000000 != 0 { - crc ^= crc24Poly - } - } - } - return crc -} - -var armorStart = []byte("-----BEGIN ") -var armorEnd = []byte("-----END ") -var armorEndOfLine = []byte("-----") - -// lineReader wraps a line based reader. It watches for the end of an armor -// block and records the expected CRC value. -type lineReader struct { - in *bufio.Reader - buf []byte - eof bool - crc uint32 - crcSet bool -} - -func (l *lineReader) Read(p []byte) (n int, err error) { - if l.eof { - return 0, io.EOF - } - - if len(l.buf) > 0 { - n = copy(p, l.buf) - l.buf = l.buf[n:] - return - } - - line, isPrefix, err := l.in.ReadLine() - if err != nil { - return - } - if isPrefix { - return 0, ArmorCorrupt - } - - if bytes.HasPrefix(line, armorEnd) { - l.eof = true - return 0, io.EOF - } - - if len(line) == 5 && line[0] == '=' { - // This is the checksum line - var expectedBytes [3]byte - var m int - m, err = base64.StdEncoding.Decode(expectedBytes[0:], line[1:]) - if m != 3 || err != nil { - return - } - l.crc = uint32(expectedBytes[0])<<16 | - uint32(expectedBytes[1])<<8 | - uint32(expectedBytes[2]) - - line, _, err = l.in.ReadLine() - if err != nil && err != io.EOF { - return - } - if !bytes.HasPrefix(line, armorEnd) { - return 0, ArmorCorrupt - } - - l.eof = true - l.crcSet = true - return 0, io.EOF - } - - if len(line) > 96 { - return 0, ArmorCorrupt - } - - n = copy(p, line) - bytesToSave := len(line) - n - if bytesToSave > 0 { - if cap(l.buf) < bytesToSave { - l.buf = make([]byte, 0, bytesToSave) - } - l.buf = l.buf[0:bytesToSave] - copy(l.buf, line[n:]) - } - - return -} - -// openpgpReader passes Read calls to the underlying base64 decoder, but keeps -// a running CRC of the resulting data and checks the CRC against the value -// found by the lineReader at EOF. -type openpgpReader struct { - lReader *lineReader - b64Reader io.Reader - currentCRC uint32 -} - -func (r *openpgpReader) Read(p []byte) (n int, err error) { - n, err = r.b64Reader.Read(p) - r.currentCRC = crc24(r.currentCRC, p[:n]) - - if err == io.EOF && r.lReader.crcSet && r.lReader.crc != uint32(r.currentCRC&crc24Mask) { - return 0, ArmorCorrupt - } - - return -} - -// Decode reads a PGP armored block from the given Reader. It will ignore -// leading garbage. If it doesn't find a block, it will return nil, io.EOF. The -// given Reader is not usable after calling this function: an arbitrary amount -// of data may have been read past the end of the block. -func Decode(in io.Reader) (p *Block, err error) { - r := bufio.NewReaderSize(in, 100) - var line []byte - ignoreNext := false - -TryNextBlock: - p = nil - - // Skip leading garbage - for { - ignoreThis := ignoreNext - line, ignoreNext, err = r.ReadLine() - if err != nil { - return - } - if ignoreNext || ignoreThis { - continue - } - line = bytes.TrimSpace(line) - if len(line) > len(armorStart)+len(armorEndOfLine) && bytes.HasPrefix(line, armorStart) { - break - } - } - - p = new(Block) - p.Type = string(line[len(armorStart) : len(line)-len(armorEndOfLine)]) - p.Header = make(map[string]string) - nextIsContinuation := false - var lastKey string - - // Read headers - for { - isContinuation := nextIsContinuation - line, nextIsContinuation, err = r.ReadLine() - if err != nil { - p = nil - return - } - if isContinuation { - p.Header[lastKey] += string(line) - continue - } - line = bytes.TrimSpace(line) - if len(line) == 0 { - break - } - - i := bytes.Index(line, []byte(": ")) - if i == -1 { - goto TryNextBlock - } - lastKey = string(line[:i]) - p.Header[lastKey] = string(line[i+2:]) - } - - p.lReader.in = r - p.oReader.currentCRC = crc24Init - p.oReader.lReader = &p.lReader - p.oReader.b64Reader = base64.NewDecoder(base64.StdEncoding, &p.lReader) - p.Body = &p.oReader - - return -} diff --git a/vendor/golang.org/x/crypto/openpgp/armor/encode.go b/vendor/golang.org/x/crypto/openpgp/armor/encode.go deleted file mode 100644 index 5b6e16c..0000000 --- a/vendor/golang.org/x/crypto/openpgp/armor/encode.go +++ /dev/null @@ -1,161 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package armor - -import ( - "encoding/base64" - "io" -) - -var armorHeaderSep = []byte(": ") -var blockEnd = []byte("\n=") -var newline = []byte("\n") -var armorEndOfLineOut = []byte("-----\n") - -// writeSlices writes its arguments to the given Writer. -func writeSlices(out io.Writer, slices ...[]byte) (err error) { - for _, s := range slices { - _, err = out.Write(s) - if err != nil { - return err - } - } - return -} - -// lineBreaker breaks data across several lines, all of the same byte length -// (except possibly the last). Lines are broken with a single '\n'. -type lineBreaker struct { - lineLength int - line []byte - used int - out io.Writer - haveWritten bool -} - -func newLineBreaker(out io.Writer, lineLength int) *lineBreaker { - return &lineBreaker{ - lineLength: lineLength, - line: make([]byte, lineLength), - used: 0, - out: out, - } -} - -func (l *lineBreaker) Write(b []byte) (n int, err error) { - n = len(b) - - if n == 0 { - return - } - - if l.used == 0 && l.haveWritten { - _, err = l.out.Write([]byte{'\n'}) - if err != nil { - return - } - } - - if l.used+len(b) < l.lineLength { - l.used += copy(l.line[l.used:], b) - return - } - - l.haveWritten = true - _, err = l.out.Write(l.line[0:l.used]) - if err != nil { - return - } - excess := l.lineLength - l.used - l.used = 0 - - _, err = l.out.Write(b[0:excess]) - if err != nil { - return - } - - _, err = l.Write(b[excess:]) - return -} - -func (l *lineBreaker) Close() (err error) { - if l.used > 0 { - _, err = l.out.Write(l.line[0:l.used]) - if err != nil { - return - } - } - - return -} - -// encoding keeps track of a running CRC24 over the data which has been written -// to it and outputs a OpenPGP checksum when closed, followed by an armor -// trailer. -// -// It's built into a stack of io.Writers: -// -// encoding -> base64 encoder -> lineBreaker -> out -type encoding struct { - out io.Writer - breaker *lineBreaker - b64 io.WriteCloser - crc uint32 - blockType []byte -} - -func (e *encoding) Write(data []byte) (n int, err error) { - e.crc = crc24(e.crc, data) - return e.b64.Write(data) -} - -func (e *encoding) Close() (err error) { - err = e.b64.Close() - if err != nil { - return - } - e.breaker.Close() - - var checksumBytes [3]byte - checksumBytes[0] = byte(e.crc >> 16) - checksumBytes[1] = byte(e.crc >> 8) - checksumBytes[2] = byte(e.crc) - - var b64ChecksumBytes [4]byte - base64.StdEncoding.Encode(b64ChecksumBytes[:], checksumBytes[:]) - - return writeSlices(e.out, blockEnd, b64ChecksumBytes[:], newline, armorEnd, e.blockType, armorEndOfLine) -} - -// Encode returns a WriteCloser which will encode the data written to it in -// OpenPGP armor. -func Encode(out io.Writer, blockType string, headers map[string]string) (w io.WriteCloser, err error) { - bType := []byte(blockType) - err = writeSlices(out, armorStart, bType, armorEndOfLineOut) - if err != nil { - return - } - - for k, v := range headers { - err = writeSlices(out, []byte(k), armorHeaderSep, []byte(v), newline) - if err != nil { - return - } - } - - _, err = out.Write(newline) - if err != nil { - return - } - - e := &encoding{ - out: out, - breaker: newLineBreaker(out, 64), - crc: crc24Init, - blockType: bType, - } - e.b64 = base64.NewEncoder(base64.StdEncoding, e.breaker) - return e, nil -} diff --git a/vendor/golang.org/x/crypto/openpgp/canonical_text.go b/vendor/golang.org/x/crypto/openpgp/canonical_text.go deleted file mode 100644 index e601e38..0000000 --- a/vendor/golang.org/x/crypto/openpgp/canonical_text.go +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright 2011 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 openpgp - -import "hash" - -// NewCanonicalTextHash reformats text written to it into the canonical -// form and then applies the hash h. See RFC 4880, section 5.2.1. -func NewCanonicalTextHash(h hash.Hash) hash.Hash { - return &canonicalTextHash{h, 0} -} - -type canonicalTextHash struct { - h hash.Hash - s int -} - -var newline = []byte{'\r', '\n'} - -func (cth *canonicalTextHash) Write(buf []byte) (int, error) { - start := 0 - - for i, c := range buf { - switch cth.s { - case 0: - if c == '\r' { - cth.s = 1 - } else if c == '\n' { - cth.h.Write(buf[start:i]) - cth.h.Write(newline) - start = i + 1 - } - case 1: - cth.s = 0 - } - } - - cth.h.Write(buf[start:]) - return len(buf), nil -} - -func (cth *canonicalTextHash) Sum(in []byte) []byte { - return cth.h.Sum(in) -} - -func (cth *canonicalTextHash) Reset() { - cth.h.Reset() - cth.s = 0 -} - -func (cth *canonicalTextHash) Size() int { - return cth.h.Size() -} - -func (cth *canonicalTextHash) BlockSize() int { - return cth.h.BlockSize() -} diff --git a/vendor/golang.org/x/crypto/openpgp/elgamal/elgamal.go b/vendor/golang.org/x/crypto/openpgp/elgamal/elgamal.go deleted file mode 100644 index 743b35a..0000000 --- a/vendor/golang.org/x/crypto/openpgp/elgamal/elgamal.go +++ /dev/null @@ -1,130 +0,0 @@ -// Copyright 2011 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 elgamal implements ElGamal encryption, suitable for OpenPGP, -// as specified in "A Public-Key Cryptosystem and a Signature Scheme Based on -// Discrete Logarithms," IEEE Transactions on Information Theory, v. IT-31, -// n. 4, 1985, pp. 469-472. -// -// This form of ElGamal embeds PKCS#1 v1.5 padding, which may make it -// unsuitable for other protocols. RSA should be used in preference in any -// case. -// -// Deprecated: this package was only provided to support ElGamal encryption in -// OpenPGP. The golang.org/x/crypto/openpgp package is now deprecated (see -// https://golang.org/issue/44226), and ElGamal in the OpenPGP ecosystem has -// compatibility and security issues (see https://eprint.iacr.org/2021/923). -// Moreover, this package doesn't protect against side-channel attacks. -package elgamal // import "golang.org/x/crypto/openpgp/elgamal" - -import ( - "crypto/rand" - "crypto/subtle" - "errors" - "io" - "math/big" -) - -// PublicKey represents an ElGamal public key. -type PublicKey struct { - G, P, Y *big.Int -} - -// PrivateKey represents an ElGamal private key. -type PrivateKey struct { - PublicKey - X *big.Int -} - -// Encrypt encrypts the given message to the given public key. The result is a -// pair of integers. Errors can result from reading random, or because msg is -// too large to be encrypted to the public key. -func Encrypt(random io.Reader, pub *PublicKey, msg []byte) (c1, c2 *big.Int, err error) { - pLen := (pub.P.BitLen() + 7) / 8 - if len(msg) > pLen-11 { - err = errors.New("elgamal: message too long") - return - } - - // EM = 0x02 || PS || 0x00 || M - em := make([]byte, pLen-1) - em[0] = 2 - ps, mm := em[1:len(em)-len(msg)-1], em[len(em)-len(msg):] - err = nonZeroRandomBytes(ps, random) - if err != nil { - return - } - em[len(em)-len(msg)-1] = 0 - copy(mm, msg) - - m := new(big.Int).SetBytes(em) - - k, err := rand.Int(random, pub.P) - if err != nil { - return - } - - c1 = new(big.Int).Exp(pub.G, k, pub.P) - s := new(big.Int).Exp(pub.Y, k, pub.P) - c2 = s.Mul(s, m) - c2.Mod(c2, pub.P) - - return -} - -// Decrypt takes two integers, resulting from an ElGamal encryption, and -// returns the plaintext of the message. An error can result only if the -// ciphertext is invalid. Users should keep in mind that this is a padding -// oracle and thus, if exposed to an adaptive chosen ciphertext attack, can -// be used to break the cryptosystem. See “Chosen Ciphertext Attacks -// Against Protocols Based on the RSA Encryption Standard PKCS #1”, Daniel -// Bleichenbacher, Advances in Cryptology (Crypto '98), -func Decrypt(priv *PrivateKey, c1, c2 *big.Int) (msg []byte, err error) { - s := new(big.Int).Exp(c1, priv.X, priv.P) - if s.ModInverse(s, priv.P) == nil { - return nil, errors.New("elgamal: invalid private key") - } - s.Mul(s, c2) - s.Mod(s, priv.P) - em := s.Bytes() - - firstByteIsTwo := subtle.ConstantTimeByteEq(em[0], 2) - - // The remainder of the plaintext must be a string of non-zero random - // octets, followed by a 0, followed by the message. - // lookingForIndex: 1 iff we are still looking for the zero. - // index: the offset of the first zero byte. - var lookingForIndex, index int - lookingForIndex = 1 - - for i := 1; i < len(em); i++ { - equals0 := subtle.ConstantTimeByteEq(em[i], 0) - index = subtle.ConstantTimeSelect(lookingForIndex&equals0, i, index) - lookingForIndex = subtle.ConstantTimeSelect(equals0, 0, lookingForIndex) - } - - if firstByteIsTwo != 1 || lookingForIndex != 0 || index < 9 { - return nil, errors.New("elgamal: decryption error") - } - return em[index+1:], nil -} - -// nonZeroRandomBytes fills the given slice with non-zero random octets. -func nonZeroRandomBytes(s []byte, rand io.Reader) (err error) { - _, err = io.ReadFull(rand, s) - if err != nil { - return - } - - for i := 0; i < len(s); i++ { - for s[i] == 0 { - _, err = io.ReadFull(rand, s[i:i+1]) - if err != nil { - return - } - } - } - - return -} diff --git a/vendor/golang.org/x/crypto/openpgp/errors/errors.go b/vendor/golang.org/x/crypto/openpgp/errors/errors.go deleted file mode 100644 index 1d7a0ea..0000000 --- a/vendor/golang.org/x/crypto/openpgp/errors/errors.go +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package errors contains common error types for the OpenPGP packages. -// -// Deprecated: this package is unmaintained except for security fixes. New -// applications should consider a more focused, modern alternative to OpenPGP -// for their specific task. If you are required to interoperate with OpenPGP -// systems and need a maintained package, consider a community fork. -// See https://golang.org/issue/44226. -package errors // import "golang.org/x/crypto/openpgp/errors" - -import ( - "strconv" -) - -// A StructuralError is returned when OpenPGP data is found to be syntactically -// invalid. -type StructuralError string - -func (s StructuralError) Error() string { - return "openpgp: invalid data: " + string(s) -} - -// UnsupportedError indicates that, although the OpenPGP data is valid, it -// makes use of currently unimplemented features. -type UnsupportedError string - -func (s UnsupportedError) Error() string { - return "openpgp: unsupported feature: " + string(s) -} - -// InvalidArgumentError indicates that the caller is in error and passed an -// incorrect value. -type InvalidArgumentError string - -func (i InvalidArgumentError) Error() string { - return "openpgp: invalid argument: " + string(i) -} - -// SignatureError indicates that a syntactically valid signature failed to -// validate. -type SignatureError string - -func (b SignatureError) Error() string { - return "openpgp: invalid signature: " + string(b) -} - -type keyIncorrectError int - -func (ki keyIncorrectError) Error() string { - return "openpgp: incorrect key" -} - -var ErrKeyIncorrect error = keyIncorrectError(0) - -type unknownIssuerError int - -func (unknownIssuerError) Error() string { - return "openpgp: signature made by unknown entity" -} - -var ErrUnknownIssuer error = unknownIssuerError(0) - -type keyRevokedError int - -func (keyRevokedError) Error() string { - return "openpgp: signature made by revoked key" -} - -var ErrKeyRevoked error = keyRevokedError(0) - -type UnknownPacketTypeError uint8 - -func (upte UnknownPacketTypeError) Error() string { - return "openpgp: unknown packet type: " + strconv.Itoa(int(upte)) -} diff --git a/vendor/golang.org/x/crypto/openpgp/keys.go b/vendor/golang.org/x/crypto/openpgp/keys.go deleted file mode 100644 index faa2fb3..0000000 --- a/vendor/golang.org/x/crypto/openpgp/keys.go +++ /dev/null @@ -1,693 +0,0 @@ -// Copyright 2011 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 openpgp - -import ( - "crypto/rsa" - "io" - "time" - - "golang.org/x/crypto/openpgp/armor" - "golang.org/x/crypto/openpgp/errors" - "golang.org/x/crypto/openpgp/packet" -) - -// PublicKeyType is the armor type for a PGP public key. -var PublicKeyType = "PGP PUBLIC KEY BLOCK" - -// PrivateKeyType is the armor type for a PGP private key. -var PrivateKeyType = "PGP PRIVATE KEY BLOCK" - -// An Entity represents the components of an OpenPGP key: a primary public key -// (which must be a signing key), one or more identities claimed by that key, -// and zero or more subkeys, which may be encryption keys. -type Entity struct { - PrimaryKey *packet.PublicKey - PrivateKey *packet.PrivateKey - Identities map[string]*Identity // indexed by Identity.Name - Revocations []*packet.Signature - Subkeys []Subkey -} - -// An Identity represents an identity claimed by an Entity and zero or more -// assertions by other entities about that claim. -type Identity struct { - Name string // by convention, has the form "Full Name (comment) " - UserId *packet.UserId - SelfSignature *packet.Signature - Signatures []*packet.Signature -} - -// A Subkey is an additional public key in an Entity. Subkeys can be used for -// encryption. -type Subkey struct { - PublicKey *packet.PublicKey - PrivateKey *packet.PrivateKey - Sig *packet.Signature -} - -// A Key identifies a specific public key in an Entity. This is either the -// Entity's primary key or a subkey. -type Key struct { - Entity *Entity - PublicKey *packet.PublicKey - PrivateKey *packet.PrivateKey - SelfSignature *packet.Signature -} - -// A KeyRing provides access to public and private keys. -type KeyRing interface { - // KeysById returns the set of keys that have the given key id. - KeysById(id uint64) []Key - // KeysByIdAndUsage returns the set of keys with the given id - // that also meet the key usage given by requiredUsage. - // The requiredUsage is expressed as the bitwise-OR of - // packet.KeyFlag* values. - KeysByIdUsage(id uint64, requiredUsage byte) []Key - // DecryptionKeys returns all private keys that are valid for - // decryption. - DecryptionKeys() []Key -} - -// primaryIdentity returns the Identity marked as primary or the first identity -// if none are so marked. -func (e *Entity) primaryIdentity() *Identity { - var firstIdentity *Identity - for _, ident := range e.Identities { - if firstIdentity == nil { - firstIdentity = ident - } - if ident.SelfSignature.IsPrimaryId != nil && *ident.SelfSignature.IsPrimaryId { - return ident - } - } - return firstIdentity -} - -// encryptionKey returns the best candidate Key for encrypting a message to the -// given Entity. -func (e *Entity) encryptionKey(now time.Time) (Key, bool) { - candidateSubkey := -1 - - // Iterate the keys to find the newest key - var maxTime time.Time - for i, subkey := range e.Subkeys { - if subkey.Sig.FlagsValid && - subkey.Sig.FlagEncryptCommunications && - subkey.PublicKey.PubKeyAlgo.CanEncrypt() && - !subkey.Sig.KeyExpired(now) && - (maxTime.IsZero() || subkey.Sig.CreationTime.After(maxTime)) { - candidateSubkey = i - maxTime = subkey.Sig.CreationTime - } - } - - if candidateSubkey != -1 { - subkey := e.Subkeys[candidateSubkey] - return Key{e, subkey.PublicKey, subkey.PrivateKey, subkey.Sig}, true - } - - // If we don't have any candidate subkeys for encryption and - // the primary key doesn't have any usage metadata then we - // assume that the primary key is ok. Or, if the primary key is - // marked as ok to encrypt to, then we can obviously use it. - i := e.primaryIdentity() - if !i.SelfSignature.FlagsValid || i.SelfSignature.FlagEncryptCommunications && - e.PrimaryKey.PubKeyAlgo.CanEncrypt() && - !i.SelfSignature.KeyExpired(now) { - return Key{e, e.PrimaryKey, e.PrivateKey, i.SelfSignature}, true - } - - // This Entity appears to be signing only. - return Key{}, false -} - -// signingKey return the best candidate Key for signing a message with this -// Entity. -func (e *Entity) signingKey(now time.Time) (Key, bool) { - candidateSubkey := -1 - - for i, subkey := range e.Subkeys { - if subkey.Sig.FlagsValid && - subkey.Sig.FlagSign && - subkey.PublicKey.PubKeyAlgo.CanSign() && - !subkey.Sig.KeyExpired(now) { - candidateSubkey = i - break - } - } - - if candidateSubkey != -1 { - subkey := e.Subkeys[candidateSubkey] - return Key{e, subkey.PublicKey, subkey.PrivateKey, subkey.Sig}, true - } - - // If we have no candidate subkey then we assume that it's ok to sign - // with the primary key. - i := e.primaryIdentity() - if !i.SelfSignature.FlagsValid || i.SelfSignature.FlagSign && - !i.SelfSignature.KeyExpired(now) { - return Key{e, e.PrimaryKey, e.PrivateKey, i.SelfSignature}, true - } - - return Key{}, false -} - -// An EntityList contains one or more Entities. -type EntityList []*Entity - -// KeysById returns the set of keys that have the given key id. -func (el EntityList) KeysById(id uint64) (keys []Key) { - for _, e := range el { - if e.PrimaryKey.KeyId == id { - var selfSig *packet.Signature - for _, ident := range e.Identities { - if selfSig == nil { - selfSig = ident.SelfSignature - } else if ident.SelfSignature.IsPrimaryId != nil && *ident.SelfSignature.IsPrimaryId { - selfSig = ident.SelfSignature - break - } - } - keys = append(keys, Key{e, e.PrimaryKey, e.PrivateKey, selfSig}) - } - - for _, subKey := range e.Subkeys { - if subKey.PublicKey.KeyId == id { - keys = append(keys, Key{e, subKey.PublicKey, subKey.PrivateKey, subKey.Sig}) - } - } - } - return -} - -// KeysByIdAndUsage returns the set of keys with the given id that also meet -// the key usage given by requiredUsage. The requiredUsage is expressed as -// the bitwise-OR of packet.KeyFlag* values. -func (el EntityList) KeysByIdUsage(id uint64, requiredUsage byte) (keys []Key) { - for _, key := range el.KeysById(id) { - if len(key.Entity.Revocations) > 0 { - continue - } - - if key.SelfSignature.RevocationReason != nil { - continue - } - - if key.SelfSignature.FlagsValid && requiredUsage != 0 { - var usage byte - if key.SelfSignature.FlagCertify { - usage |= packet.KeyFlagCertify - } - if key.SelfSignature.FlagSign { - usage |= packet.KeyFlagSign - } - if key.SelfSignature.FlagEncryptCommunications { - usage |= packet.KeyFlagEncryptCommunications - } - if key.SelfSignature.FlagEncryptStorage { - usage |= packet.KeyFlagEncryptStorage - } - if usage&requiredUsage != requiredUsage { - continue - } - } - - keys = append(keys, key) - } - return -} - -// DecryptionKeys returns all private keys that are valid for decryption. -func (el EntityList) DecryptionKeys() (keys []Key) { - for _, e := range el { - for _, subKey := range e.Subkeys { - if subKey.PrivateKey != nil && (!subKey.Sig.FlagsValid || subKey.Sig.FlagEncryptStorage || subKey.Sig.FlagEncryptCommunications) { - keys = append(keys, Key{e, subKey.PublicKey, subKey.PrivateKey, subKey.Sig}) - } - } - } - return -} - -// ReadArmoredKeyRing reads one or more public/private keys from an armor keyring file. -func ReadArmoredKeyRing(r io.Reader) (EntityList, error) { - block, err := armor.Decode(r) - if err == io.EOF { - return nil, errors.InvalidArgumentError("no armored data found") - } - if err != nil { - return nil, err - } - if block.Type != PublicKeyType && block.Type != PrivateKeyType { - return nil, errors.InvalidArgumentError("expected public or private key block, got: " + block.Type) - } - - return ReadKeyRing(block.Body) -} - -// ReadKeyRing reads one or more public/private keys. Unsupported keys are -// ignored as long as at least a single valid key is found. -func ReadKeyRing(r io.Reader) (el EntityList, err error) { - packets := packet.NewReader(r) - var lastUnsupportedError error - - for { - var e *Entity - e, err = ReadEntity(packets) - if err != nil { - // TODO: warn about skipped unsupported/unreadable keys - if _, ok := err.(errors.UnsupportedError); ok { - lastUnsupportedError = err - err = readToNextPublicKey(packets) - } else if _, ok := err.(errors.StructuralError); ok { - // Skip unreadable, badly-formatted keys - lastUnsupportedError = err - err = readToNextPublicKey(packets) - } - if err == io.EOF { - err = nil - break - } - if err != nil { - el = nil - break - } - } else { - el = append(el, e) - } - } - - if len(el) == 0 && err == nil { - err = lastUnsupportedError - } - return -} - -// readToNextPublicKey reads packets until the start of the entity and leaves -// the first packet of the new entity in the Reader. -func readToNextPublicKey(packets *packet.Reader) (err error) { - var p packet.Packet - for { - p, err = packets.Next() - if err == io.EOF { - return - } else if err != nil { - if _, ok := err.(errors.UnsupportedError); ok { - err = nil - continue - } - return - } - - if pk, ok := p.(*packet.PublicKey); ok && !pk.IsSubkey { - packets.Unread(p) - return - } - } -} - -// ReadEntity reads an entity (public key, identities, subkeys etc) from the -// given Reader. -func ReadEntity(packets *packet.Reader) (*Entity, error) { - e := new(Entity) - e.Identities = make(map[string]*Identity) - - p, err := packets.Next() - if err != nil { - return nil, err - } - - var ok bool - if e.PrimaryKey, ok = p.(*packet.PublicKey); !ok { - if e.PrivateKey, ok = p.(*packet.PrivateKey); !ok { - packets.Unread(p) - return nil, errors.StructuralError("first packet was not a public/private key") - } - e.PrimaryKey = &e.PrivateKey.PublicKey - } - - if !e.PrimaryKey.PubKeyAlgo.CanSign() { - return nil, errors.StructuralError("primary key cannot be used for signatures") - } - - var revocations []*packet.Signature -EachPacket: - for { - p, err := packets.Next() - if err == io.EOF { - break - } else if err != nil { - return nil, err - } - - switch pkt := p.(type) { - case *packet.UserId: - if err := addUserID(e, packets, pkt); err != nil { - return nil, err - } - case *packet.Signature: - if pkt.SigType == packet.SigTypeKeyRevocation { - revocations = append(revocations, pkt) - } else if pkt.SigType == packet.SigTypeDirectSignature { - // TODO: RFC4880 5.2.1 permits signatures - // directly on keys (eg. to bind additional - // revocation keys). - } - // Else, ignoring the signature as it does not follow anything - // we would know to attach it to. - case *packet.PrivateKey: - if pkt.IsSubkey == false { - packets.Unread(p) - break EachPacket - } - err = addSubkey(e, packets, &pkt.PublicKey, pkt) - if err != nil { - return nil, err - } - case *packet.PublicKey: - if pkt.IsSubkey == false { - packets.Unread(p) - break EachPacket - } - err = addSubkey(e, packets, pkt, nil) - if err != nil { - return nil, err - } - default: - // we ignore unknown packets - } - } - - if len(e.Identities) == 0 { - return nil, errors.StructuralError("entity without any identities") - } - - for _, revocation := range revocations { - err = e.PrimaryKey.VerifyRevocationSignature(revocation) - if err == nil { - e.Revocations = append(e.Revocations, revocation) - } else { - // TODO: RFC 4880 5.2.3.15 defines revocation keys. - return nil, errors.StructuralError("revocation signature signed by alternate key") - } - } - - return e, nil -} - -func addUserID(e *Entity, packets *packet.Reader, pkt *packet.UserId) error { - // Make a new Identity object, that we might wind up throwing away. - // We'll only add it if we get a valid self-signature over this - // userID. - identity := new(Identity) - identity.Name = pkt.Id - identity.UserId = pkt - - for { - p, err := packets.Next() - if err == io.EOF { - break - } else if err != nil { - return err - } - - sig, ok := p.(*packet.Signature) - if !ok { - packets.Unread(p) - break - } - - if (sig.SigType == packet.SigTypePositiveCert || sig.SigType == packet.SigTypeGenericCert) && sig.IssuerKeyId != nil && *sig.IssuerKeyId == e.PrimaryKey.KeyId { - if err = e.PrimaryKey.VerifyUserIdSignature(pkt.Id, e.PrimaryKey, sig); err != nil { - return errors.StructuralError("user ID self-signature invalid: " + err.Error()) - } - identity.SelfSignature = sig - e.Identities[pkt.Id] = identity - } else { - identity.Signatures = append(identity.Signatures, sig) - } - } - - return nil -} - -func addSubkey(e *Entity, packets *packet.Reader, pub *packet.PublicKey, priv *packet.PrivateKey) error { - var subKey Subkey - subKey.PublicKey = pub - subKey.PrivateKey = priv - - for { - p, err := packets.Next() - if err == io.EOF { - break - } else if err != nil { - return errors.StructuralError("subkey signature invalid: " + err.Error()) - } - - sig, ok := p.(*packet.Signature) - if !ok { - packets.Unread(p) - break - } - - if sig.SigType != packet.SigTypeSubkeyBinding && sig.SigType != packet.SigTypeSubkeyRevocation { - return errors.StructuralError("subkey signature with wrong type") - } - - if err := e.PrimaryKey.VerifyKeySignature(subKey.PublicKey, sig); err != nil { - return errors.StructuralError("subkey signature invalid: " + err.Error()) - } - - switch sig.SigType { - case packet.SigTypeSubkeyRevocation: - subKey.Sig = sig - case packet.SigTypeSubkeyBinding: - - if shouldReplaceSubkeySig(subKey.Sig, sig) { - subKey.Sig = sig - } - } - } - - if subKey.Sig == nil { - return errors.StructuralError("subkey packet not followed by signature") - } - - e.Subkeys = append(e.Subkeys, subKey) - - return nil -} - -func shouldReplaceSubkeySig(existingSig, potentialNewSig *packet.Signature) bool { - if potentialNewSig == nil { - return false - } - - if existingSig == nil { - return true - } - - if existingSig.SigType == packet.SigTypeSubkeyRevocation { - return false // never override a revocation signature - } - - return potentialNewSig.CreationTime.After(existingSig.CreationTime) -} - -const defaultRSAKeyBits = 2048 - -// NewEntity returns an Entity that contains a fresh RSA/RSA keypair with a -// single identity composed of the given full name, comment and email, any of -// which may be empty but must not contain any of "()<>\x00". -// If config is nil, sensible defaults will be used. -func NewEntity(name, comment, email string, config *packet.Config) (*Entity, error) { - creationTime := config.Now() - - bits := defaultRSAKeyBits - if config != nil && config.RSABits != 0 { - bits = config.RSABits - } - - uid := packet.NewUserId(name, comment, email) - if uid == nil { - return nil, errors.InvalidArgumentError("user id field contained invalid characters") - } - signingPriv, err := rsa.GenerateKey(config.Random(), bits) - if err != nil { - return nil, err - } - encryptingPriv, err := rsa.GenerateKey(config.Random(), bits) - if err != nil { - return nil, err - } - - e := &Entity{ - PrimaryKey: packet.NewRSAPublicKey(creationTime, &signingPriv.PublicKey), - PrivateKey: packet.NewRSAPrivateKey(creationTime, signingPriv), - Identities: make(map[string]*Identity), - } - isPrimaryId := true - e.Identities[uid.Id] = &Identity{ - Name: uid.Id, - UserId: uid, - SelfSignature: &packet.Signature{ - CreationTime: creationTime, - SigType: packet.SigTypePositiveCert, - PubKeyAlgo: packet.PubKeyAlgoRSA, - Hash: config.Hash(), - IsPrimaryId: &isPrimaryId, - FlagsValid: true, - FlagSign: true, - FlagCertify: true, - IssuerKeyId: &e.PrimaryKey.KeyId, - }, - } - err = e.Identities[uid.Id].SelfSignature.SignUserId(uid.Id, e.PrimaryKey, e.PrivateKey, config) - if err != nil { - return nil, err - } - - // If the user passes in a DefaultHash via packet.Config, - // set the PreferredHash for the SelfSignature. - if config != nil && config.DefaultHash != 0 { - e.Identities[uid.Id].SelfSignature.PreferredHash = []uint8{hashToHashId(config.DefaultHash)} - } - - // Likewise for DefaultCipher. - if config != nil && config.DefaultCipher != 0 { - e.Identities[uid.Id].SelfSignature.PreferredSymmetric = []uint8{uint8(config.DefaultCipher)} - } - - e.Subkeys = make([]Subkey, 1) - e.Subkeys[0] = Subkey{ - PublicKey: packet.NewRSAPublicKey(creationTime, &encryptingPriv.PublicKey), - PrivateKey: packet.NewRSAPrivateKey(creationTime, encryptingPriv), - Sig: &packet.Signature{ - CreationTime: creationTime, - SigType: packet.SigTypeSubkeyBinding, - PubKeyAlgo: packet.PubKeyAlgoRSA, - Hash: config.Hash(), - FlagsValid: true, - FlagEncryptStorage: true, - FlagEncryptCommunications: true, - IssuerKeyId: &e.PrimaryKey.KeyId, - }, - } - e.Subkeys[0].PublicKey.IsSubkey = true - e.Subkeys[0].PrivateKey.IsSubkey = true - err = e.Subkeys[0].Sig.SignKey(e.Subkeys[0].PublicKey, e.PrivateKey, config) - if err != nil { - return nil, err - } - return e, nil -} - -// SerializePrivate serializes an Entity, including private key material, but -// excluding signatures from other entities, to the given Writer. -// Identities and subkeys are re-signed in case they changed since NewEntry. -// If config is nil, sensible defaults will be used. -func (e *Entity) SerializePrivate(w io.Writer, config *packet.Config) (err error) { - err = e.PrivateKey.Serialize(w) - if err != nil { - return - } - for _, ident := range e.Identities { - err = ident.UserId.Serialize(w) - if err != nil { - return - } - err = ident.SelfSignature.SignUserId(ident.UserId.Id, e.PrimaryKey, e.PrivateKey, config) - if err != nil { - return - } - err = ident.SelfSignature.Serialize(w) - if err != nil { - return - } - } - for _, subkey := range e.Subkeys { - err = subkey.PrivateKey.Serialize(w) - if err != nil { - return - } - err = subkey.Sig.SignKey(subkey.PublicKey, e.PrivateKey, config) - if err != nil { - return - } - err = subkey.Sig.Serialize(w) - if err != nil { - return - } - } - return nil -} - -// Serialize writes the public part of the given Entity to w, including -// signatures from other entities. No private key material will be output. -func (e *Entity) Serialize(w io.Writer) error { - err := e.PrimaryKey.Serialize(w) - if err != nil { - return err - } - for _, ident := range e.Identities { - err = ident.UserId.Serialize(w) - if err != nil { - return err - } - err = ident.SelfSignature.Serialize(w) - if err != nil { - return err - } - for _, sig := range ident.Signatures { - err = sig.Serialize(w) - if err != nil { - return err - } - } - } - for _, subkey := range e.Subkeys { - err = subkey.PublicKey.Serialize(w) - if err != nil { - return err - } - err = subkey.Sig.Serialize(w) - if err != nil { - return err - } - } - return nil -} - -// SignIdentity adds a signature to e, from signer, attesting that identity is -// associated with e. The provided identity must already be an element of -// e.Identities and the private key of signer must have been decrypted if -// necessary. -// If config is nil, sensible defaults will be used. -func (e *Entity) SignIdentity(identity string, signer *Entity, config *packet.Config) error { - if signer.PrivateKey == nil { - return errors.InvalidArgumentError("signing Entity must have a private key") - } - if signer.PrivateKey.Encrypted { - return errors.InvalidArgumentError("signing Entity's private key must be decrypted") - } - ident, ok := e.Identities[identity] - if !ok { - return errors.InvalidArgumentError("given identity string not found in Entity") - } - - sig := &packet.Signature{ - SigType: packet.SigTypeGenericCert, - PubKeyAlgo: signer.PrivateKey.PubKeyAlgo, - Hash: config.Hash(), - CreationTime: config.Now(), - IssuerKeyId: &signer.PrivateKey.KeyId, - } - if err := sig.SignUserId(identity, e.PrimaryKey, signer.PrivateKey, config); err != nil { - return err - } - ident.Signatures = append(ident.Signatures, sig) - return nil -} diff --git a/vendor/golang.org/x/crypto/openpgp/packet/compressed.go b/vendor/golang.org/x/crypto/openpgp/packet/compressed.go deleted file mode 100644 index e8f0b5c..0000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/compressed.go +++ /dev/null @@ -1,123 +0,0 @@ -// Copyright 2011 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 packet - -import ( - "compress/bzip2" - "compress/flate" - "compress/zlib" - "golang.org/x/crypto/openpgp/errors" - "io" - "strconv" -) - -// Compressed represents a compressed OpenPGP packet. The decompressed contents -// will contain more OpenPGP packets. See RFC 4880, section 5.6. -type Compressed struct { - Body io.Reader -} - -const ( - NoCompression = flate.NoCompression - BestSpeed = flate.BestSpeed - BestCompression = flate.BestCompression - DefaultCompression = flate.DefaultCompression -) - -// CompressionConfig contains compressor configuration settings. -type CompressionConfig struct { - // Level is the compression level to use. It must be set to - // between -1 and 9, with -1 causing the compressor to use the - // default compression level, 0 causing the compressor to use - // no compression and 1 to 9 representing increasing (better, - // slower) compression levels. If Level is less than -1 or - // more then 9, a non-nil error will be returned during - // encryption. See the constants above for convenient common - // settings for Level. - Level int -} - -func (c *Compressed) parse(r io.Reader) error { - var buf [1]byte - _, err := readFull(r, buf[:]) - if err != nil { - return err - } - - switch buf[0] { - case 1: - c.Body = flate.NewReader(r) - case 2: - c.Body, err = zlib.NewReader(r) - case 3: - c.Body = bzip2.NewReader(r) - default: - err = errors.UnsupportedError("unknown compression algorithm: " + strconv.Itoa(int(buf[0]))) - } - - return err -} - -// compressedWriterCloser represents the serialized compression stream -// header and the compressor. Its Close() method ensures that both the -// compressor and serialized stream header are closed. Its Write() -// method writes to the compressor. -type compressedWriteCloser struct { - sh io.Closer // Stream Header - c io.WriteCloser // Compressor -} - -func (cwc compressedWriteCloser) Write(p []byte) (int, error) { - return cwc.c.Write(p) -} - -func (cwc compressedWriteCloser) Close() (err error) { - err = cwc.c.Close() - if err != nil { - return err - } - - return cwc.sh.Close() -} - -// SerializeCompressed serializes a compressed data packet to w and -// returns a WriteCloser to which the literal data packets themselves -// can be written and which MUST be closed on completion. If cc is -// nil, sensible defaults will be used to configure the compression -// algorithm. -func SerializeCompressed(w io.WriteCloser, algo CompressionAlgo, cc *CompressionConfig) (literaldata io.WriteCloser, err error) { - compressed, err := serializeStreamHeader(w, packetTypeCompressed) - if err != nil { - return - } - - _, err = compressed.Write([]byte{uint8(algo)}) - if err != nil { - return - } - - level := DefaultCompression - if cc != nil { - level = cc.Level - } - - var compressor io.WriteCloser - switch algo { - case CompressionZIP: - compressor, err = flate.NewWriter(compressed, level) - case CompressionZLIB: - compressor, err = zlib.NewWriterLevel(compressed, level) - default: - s := strconv.Itoa(int(algo)) - err = errors.UnsupportedError("Unsupported compression algorithm: " + s) - } - if err != nil { - return - } - - literaldata = compressedWriteCloser{compressed, compressor} - - return -} diff --git a/vendor/golang.org/x/crypto/openpgp/packet/config.go b/vendor/golang.org/x/crypto/openpgp/packet/config.go deleted file mode 100644 index c76eecc..0000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/config.go +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright 2012 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 packet - -import ( - "crypto" - "crypto/rand" - "io" - "time" -) - -// Config collects a number of parameters along with sensible defaults. -// A nil *Config is valid and results in all default values. -type Config struct { - // Rand provides the source of entropy. - // If nil, the crypto/rand Reader is used. - Rand io.Reader - // DefaultHash is the default hash function to be used. - // If zero, SHA-256 is used. - DefaultHash crypto.Hash - // DefaultCipher is the cipher to be used. - // If zero, AES-128 is used. - DefaultCipher CipherFunction - // Time returns the current time as the number of seconds since the - // epoch. If Time is nil, time.Now is used. - Time func() time.Time - // DefaultCompressionAlgo is the compression algorithm to be - // applied to the plaintext before encryption. If zero, no - // compression is done. - DefaultCompressionAlgo CompressionAlgo - // CompressionConfig configures the compression settings. - CompressionConfig *CompressionConfig - // S2KCount is only used for symmetric encryption. It - // determines the strength of the passphrase stretching when - // the said passphrase is hashed to produce a key. S2KCount - // should be between 1024 and 65011712, inclusive. If Config - // is nil or S2KCount is 0, the value 65536 used. Not all - // values in the above range can be represented. S2KCount will - // be rounded up to the next representable value if it cannot - // be encoded exactly. When set, it is strongly encrouraged to - // use a value that is at least 65536. See RFC 4880 Section - // 3.7.1.3. - S2KCount int - // RSABits is the number of bits in new RSA keys made with NewEntity. - // If zero, then 2048 bit keys are created. - RSABits int -} - -func (c *Config) Random() io.Reader { - if c == nil || c.Rand == nil { - return rand.Reader - } - return c.Rand -} - -func (c *Config) Hash() crypto.Hash { - if c == nil || uint(c.DefaultHash) == 0 { - return crypto.SHA256 - } - return c.DefaultHash -} - -func (c *Config) Cipher() CipherFunction { - if c == nil || uint8(c.DefaultCipher) == 0 { - return CipherAES128 - } - return c.DefaultCipher -} - -func (c *Config) Now() time.Time { - if c == nil || c.Time == nil { - return time.Now() - } - return c.Time() -} - -func (c *Config) Compression() CompressionAlgo { - if c == nil { - return CompressionNone - } - return c.DefaultCompressionAlgo -} - -func (c *Config) PasswordHashIterations() int { - if c == nil || c.S2KCount == 0 { - return 0 - } - return c.S2KCount -} diff --git a/vendor/golang.org/x/crypto/openpgp/packet/encrypted_key.go b/vendor/golang.org/x/crypto/openpgp/packet/encrypted_key.go deleted file mode 100644 index 6d76397..0000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/encrypted_key.go +++ /dev/null @@ -1,208 +0,0 @@ -// Copyright 2011 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 packet - -import ( - "crypto" - "crypto/rsa" - "encoding/binary" - "io" - "math/big" - "strconv" - - "golang.org/x/crypto/openpgp/elgamal" - "golang.org/x/crypto/openpgp/errors" -) - -const encryptedKeyVersion = 3 - -// EncryptedKey represents a public-key encrypted session key. See RFC 4880, -// section 5.1. -type EncryptedKey struct { - KeyId uint64 - Algo PublicKeyAlgorithm - CipherFunc CipherFunction // only valid after a successful Decrypt - Key []byte // only valid after a successful Decrypt - - encryptedMPI1, encryptedMPI2 parsedMPI -} - -func (e *EncryptedKey) parse(r io.Reader) (err error) { - var buf [10]byte - _, err = readFull(r, buf[:]) - if err != nil { - return - } - if buf[0] != encryptedKeyVersion { - return errors.UnsupportedError("unknown EncryptedKey version " + strconv.Itoa(int(buf[0]))) - } - e.KeyId = binary.BigEndian.Uint64(buf[1:9]) - e.Algo = PublicKeyAlgorithm(buf[9]) - switch e.Algo { - case PubKeyAlgoRSA, PubKeyAlgoRSAEncryptOnly: - e.encryptedMPI1.bytes, e.encryptedMPI1.bitLength, err = readMPI(r) - if err != nil { - return - } - case PubKeyAlgoElGamal: - e.encryptedMPI1.bytes, e.encryptedMPI1.bitLength, err = readMPI(r) - if err != nil { - return - } - e.encryptedMPI2.bytes, e.encryptedMPI2.bitLength, err = readMPI(r) - if err != nil { - return - } - } - _, err = consumeAll(r) - return -} - -func checksumKeyMaterial(key []byte) uint16 { - var checksum uint16 - for _, v := range key { - checksum += uint16(v) - } - return checksum -} - -// Decrypt decrypts an encrypted session key with the given private key. The -// private key must have been decrypted first. -// If config is nil, sensible defaults will be used. -func (e *EncryptedKey) Decrypt(priv *PrivateKey, config *Config) error { - var err error - var b []byte - - // TODO(agl): use session key decryption routines here to avoid - // padding oracle attacks. - switch priv.PubKeyAlgo { - case PubKeyAlgoRSA, PubKeyAlgoRSAEncryptOnly: - // Supports both *rsa.PrivateKey and crypto.Decrypter - k := priv.PrivateKey.(crypto.Decrypter) - b, err = k.Decrypt(config.Random(), padToKeySize(k.Public().(*rsa.PublicKey), e.encryptedMPI1.bytes), nil) - case PubKeyAlgoElGamal: - c1 := new(big.Int).SetBytes(e.encryptedMPI1.bytes) - c2 := new(big.Int).SetBytes(e.encryptedMPI2.bytes) - b, err = elgamal.Decrypt(priv.PrivateKey.(*elgamal.PrivateKey), c1, c2) - default: - err = errors.InvalidArgumentError("cannot decrypted encrypted session key with private key of type " + strconv.Itoa(int(priv.PubKeyAlgo))) - } - - if err != nil { - return err - } - - e.CipherFunc = CipherFunction(b[0]) - e.Key = b[1 : len(b)-2] - expectedChecksum := uint16(b[len(b)-2])<<8 | uint16(b[len(b)-1]) - checksum := checksumKeyMaterial(e.Key) - if checksum != expectedChecksum { - return errors.StructuralError("EncryptedKey checksum incorrect") - } - - return nil -} - -// Serialize writes the encrypted key packet, e, to w. -func (e *EncryptedKey) Serialize(w io.Writer) error { - var mpiLen int - switch e.Algo { - case PubKeyAlgoRSA, PubKeyAlgoRSAEncryptOnly: - mpiLen = 2 + len(e.encryptedMPI1.bytes) - case PubKeyAlgoElGamal: - mpiLen = 2 + len(e.encryptedMPI1.bytes) + 2 + len(e.encryptedMPI2.bytes) - default: - return errors.InvalidArgumentError("don't know how to serialize encrypted key type " + strconv.Itoa(int(e.Algo))) - } - - serializeHeader(w, packetTypeEncryptedKey, 1 /* version */ +8 /* key id */ +1 /* algo */ +mpiLen) - - w.Write([]byte{encryptedKeyVersion}) - binary.Write(w, binary.BigEndian, e.KeyId) - w.Write([]byte{byte(e.Algo)}) - - switch e.Algo { - case PubKeyAlgoRSA, PubKeyAlgoRSAEncryptOnly: - writeMPIs(w, e.encryptedMPI1) - case PubKeyAlgoElGamal: - writeMPIs(w, e.encryptedMPI1, e.encryptedMPI2) - default: - panic("internal error") - } - - return nil -} - -// SerializeEncryptedKey serializes an encrypted key packet to w that contains -// key, encrypted to pub. -// If config is nil, sensible defaults will be used. -func SerializeEncryptedKey(w io.Writer, pub *PublicKey, cipherFunc CipherFunction, key []byte, config *Config) error { - var buf [10]byte - buf[0] = encryptedKeyVersion - binary.BigEndian.PutUint64(buf[1:9], pub.KeyId) - buf[9] = byte(pub.PubKeyAlgo) - - keyBlock := make([]byte, 1 /* cipher type */ +len(key)+2 /* checksum */) - keyBlock[0] = byte(cipherFunc) - copy(keyBlock[1:], key) - checksum := checksumKeyMaterial(key) - keyBlock[1+len(key)] = byte(checksum >> 8) - keyBlock[1+len(key)+1] = byte(checksum) - - switch pub.PubKeyAlgo { - case PubKeyAlgoRSA, PubKeyAlgoRSAEncryptOnly: - return serializeEncryptedKeyRSA(w, config.Random(), buf, pub.PublicKey.(*rsa.PublicKey), keyBlock) - case PubKeyAlgoElGamal: - return serializeEncryptedKeyElGamal(w, config.Random(), buf, pub.PublicKey.(*elgamal.PublicKey), keyBlock) - case PubKeyAlgoDSA, PubKeyAlgoRSASignOnly: - return errors.InvalidArgumentError("cannot encrypt to public key of type " + strconv.Itoa(int(pub.PubKeyAlgo))) - } - - return errors.UnsupportedError("encrypting a key to public key of type " + strconv.Itoa(int(pub.PubKeyAlgo))) -} - -func serializeEncryptedKeyRSA(w io.Writer, rand io.Reader, header [10]byte, pub *rsa.PublicKey, keyBlock []byte) error { - cipherText, err := rsa.EncryptPKCS1v15(rand, pub, keyBlock) - if err != nil { - return errors.InvalidArgumentError("RSA encryption failed: " + err.Error()) - } - - packetLen := 10 /* header length */ + 2 /* mpi size */ + len(cipherText) - - err = serializeHeader(w, packetTypeEncryptedKey, packetLen) - if err != nil { - return err - } - _, err = w.Write(header[:]) - if err != nil { - return err - } - return writeMPI(w, 8*uint16(len(cipherText)), cipherText) -} - -func serializeEncryptedKeyElGamal(w io.Writer, rand io.Reader, header [10]byte, pub *elgamal.PublicKey, keyBlock []byte) error { - c1, c2, err := elgamal.Encrypt(rand, pub, keyBlock) - if err != nil { - return errors.InvalidArgumentError("ElGamal encryption failed: " + err.Error()) - } - - packetLen := 10 /* header length */ - packetLen += 2 /* mpi size */ + (c1.BitLen()+7)/8 - packetLen += 2 /* mpi size */ + (c2.BitLen()+7)/8 - - err = serializeHeader(w, packetTypeEncryptedKey, packetLen) - if err != nil { - return err - } - _, err = w.Write(header[:]) - if err != nil { - return err - } - err = writeBig(w, c1) - if err != nil { - return err - } - return writeBig(w, c2) -} diff --git a/vendor/golang.org/x/crypto/openpgp/packet/literal.go b/vendor/golang.org/x/crypto/openpgp/packet/literal.go deleted file mode 100644 index 1a9ec6e..0000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/literal.go +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright 2011 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 packet - -import ( - "encoding/binary" - "io" -) - -// LiteralData represents an encrypted file. See RFC 4880, section 5.9. -type LiteralData struct { - IsBinary bool - FileName string - Time uint32 // Unix epoch time. Either creation time or modification time. 0 means undefined. - Body io.Reader -} - -// ForEyesOnly returns whether the contents of the LiteralData have been marked -// as especially sensitive. -func (l *LiteralData) ForEyesOnly() bool { - return l.FileName == "_CONSOLE" -} - -func (l *LiteralData) parse(r io.Reader) (err error) { - var buf [256]byte - - _, err = readFull(r, buf[:2]) - if err != nil { - return - } - - l.IsBinary = buf[0] == 'b' - fileNameLen := int(buf[1]) - - _, err = readFull(r, buf[:fileNameLen]) - if err != nil { - return - } - - l.FileName = string(buf[:fileNameLen]) - - _, err = readFull(r, buf[:4]) - if err != nil { - return - } - - l.Time = binary.BigEndian.Uint32(buf[:4]) - l.Body = r - return -} - -// SerializeLiteral serializes a literal data packet to w and returns a -// WriteCloser to which the data itself can be written and which MUST be closed -// on completion. The fileName is truncated to 255 bytes. -func SerializeLiteral(w io.WriteCloser, isBinary bool, fileName string, time uint32) (plaintext io.WriteCloser, err error) { - var buf [4]byte - buf[0] = 't' - if isBinary { - buf[0] = 'b' - } - if len(fileName) > 255 { - fileName = fileName[:255] - } - buf[1] = byte(len(fileName)) - - inner, err := serializeStreamHeader(w, packetTypeLiteralData) - if err != nil { - return - } - - _, err = inner.Write(buf[:2]) - if err != nil { - return - } - _, err = inner.Write([]byte(fileName)) - if err != nil { - return - } - binary.BigEndian.PutUint32(buf[:], time) - _, err = inner.Write(buf[:]) - if err != nil { - return - } - - plaintext = inner - return -} diff --git a/vendor/golang.org/x/crypto/openpgp/packet/ocfb.go b/vendor/golang.org/x/crypto/openpgp/packet/ocfb.go deleted file mode 100644 index ce2a33a..0000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/ocfb.go +++ /dev/null @@ -1,143 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// OpenPGP CFB Mode. http://tools.ietf.org/html/rfc4880#section-13.9 - -package packet - -import ( - "crypto/cipher" -) - -type ocfbEncrypter struct { - b cipher.Block - fre []byte - outUsed int -} - -// An OCFBResyncOption determines if the "resynchronization step" of OCFB is -// performed. -type OCFBResyncOption bool - -const ( - OCFBResync OCFBResyncOption = true - OCFBNoResync OCFBResyncOption = false -) - -// NewOCFBEncrypter returns a cipher.Stream which encrypts data with OpenPGP's -// cipher feedback mode using the given cipher.Block, and an initial amount of -// ciphertext. randData must be random bytes and be the same length as the -// cipher.Block's block size. Resync determines if the "resynchronization step" -// from RFC 4880, 13.9 step 7 is performed. Different parts of OpenPGP vary on -// this point. -func NewOCFBEncrypter(block cipher.Block, randData []byte, resync OCFBResyncOption) (cipher.Stream, []byte) { - blockSize := block.BlockSize() - if len(randData) != blockSize { - return nil, nil - } - - x := &ocfbEncrypter{ - b: block, - fre: make([]byte, blockSize), - outUsed: 0, - } - prefix := make([]byte, blockSize+2) - - block.Encrypt(x.fre, x.fre) - for i := 0; i < blockSize; i++ { - prefix[i] = randData[i] ^ x.fre[i] - } - - block.Encrypt(x.fre, prefix[:blockSize]) - prefix[blockSize] = x.fre[0] ^ randData[blockSize-2] - prefix[blockSize+1] = x.fre[1] ^ randData[blockSize-1] - - if resync { - block.Encrypt(x.fre, prefix[2:]) - } else { - x.fre[0] = prefix[blockSize] - x.fre[1] = prefix[blockSize+1] - x.outUsed = 2 - } - return x, prefix -} - -func (x *ocfbEncrypter) XORKeyStream(dst, src []byte) { - for i := 0; i < len(src); i++ { - if x.outUsed == len(x.fre) { - x.b.Encrypt(x.fre, x.fre) - x.outUsed = 0 - } - - x.fre[x.outUsed] ^= src[i] - dst[i] = x.fre[x.outUsed] - x.outUsed++ - } -} - -type ocfbDecrypter struct { - b cipher.Block - fre []byte - outUsed int -} - -// NewOCFBDecrypter returns a cipher.Stream which decrypts data with OpenPGP's -// cipher feedback mode using the given cipher.Block. Prefix must be the first -// blockSize + 2 bytes of the ciphertext, where blockSize is the cipher.Block's -// block size. If an incorrect key is detected then nil is returned. On -// successful exit, blockSize+2 bytes of decrypted data are written into -// prefix. Resync determines if the "resynchronization step" from RFC 4880, -// 13.9 step 7 is performed. Different parts of OpenPGP vary on this point. -func NewOCFBDecrypter(block cipher.Block, prefix []byte, resync OCFBResyncOption) cipher.Stream { - blockSize := block.BlockSize() - if len(prefix) != blockSize+2 { - return nil - } - - x := &ocfbDecrypter{ - b: block, - fre: make([]byte, blockSize), - outUsed: 0, - } - prefixCopy := make([]byte, len(prefix)) - copy(prefixCopy, prefix) - - block.Encrypt(x.fre, x.fre) - for i := 0; i < blockSize; i++ { - prefixCopy[i] ^= x.fre[i] - } - - block.Encrypt(x.fre, prefix[:blockSize]) - prefixCopy[blockSize] ^= x.fre[0] - prefixCopy[blockSize+1] ^= x.fre[1] - - if prefixCopy[blockSize-2] != prefixCopy[blockSize] || - prefixCopy[blockSize-1] != prefixCopy[blockSize+1] { - return nil - } - - if resync { - block.Encrypt(x.fre, prefix[2:]) - } else { - x.fre[0] = prefix[blockSize] - x.fre[1] = prefix[blockSize+1] - x.outUsed = 2 - } - copy(prefix, prefixCopy) - return x -} - -func (x *ocfbDecrypter) XORKeyStream(dst, src []byte) { - for i := 0; i < len(src); i++ { - if x.outUsed == len(x.fre) { - x.b.Encrypt(x.fre, x.fre) - x.outUsed = 0 - } - - c := src[i] - dst[i] = x.fre[x.outUsed] ^ src[i] - x.fre[x.outUsed] = c - x.outUsed++ - } -} diff --git a/vendor/golang.org/x/crypto/openpgp/packet/one_pass_signature.go b/vendor/golang.org/x/crypto/openpgp/packet/one_pass_signature.go deleted file mode 100644 index 1713503..0000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/one_pass_signature.go +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright 2011 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 packet - -import ( - "crypto" - "encoding/binary" - "golang.org/x/crypto/openpgp/errors" - "golang.org/x/crypto/openpgp/s2k" - "io" - "strconv" -) - -// OnePassSignature represents a one-pass signature packet. See RFC 4880, -// section 5.4. -type OnePassSignature struct { - SigType SignatureType - Hash crypto.Hash - PubKeyAlgo PublicKeyAlgorithm - KeyId uint64 - IsLast bool -} - -const onePassSignatureVersion = 3 - -func (ops *OnePassSignature) parse(r io.Reader) (err error) { - var buf [13]byte - - _, err = readFull(r, buf[:]) - if err != nil { - return - } - if buf[0] != onePassSignatureVersion { - err = errors.UnsupportedError("one-pass-signature packet version " + strconv.Itoa(int(buf[0]))) - } - - var ok bool - ops.Hash, ok = s2k.HashIdToHash(buf[2]) - if !ok { - return errors.UnsupportedError("hash function: " + strconv.Itoa(int(buf[2]))) - } - - ops.SigType = SignatureType(buf[1]) - ops.PubKeyAlgo = PublicKeyAlgorithm(buf[3]) - ops.KeyId = binary.BigEndian.Uint64(buf[4:12]) - ops.IsLast = buf[12] != 0 - return -} - -// Serialize marshals the given OnePassSignature to w. -func (ops *OnePassSignature) Serialize(w io.Writer) error { - var buf [13]byte - buf[0] = onePassSignatureVersion - buf[1] = uint8(ops.SigType) - var ok bool - buf[2], ok = s2k.HashToHashId(ops.Hash) - if !ok { - return errors.UnsupportedError("hash type: " + strconv.Itoa(int(ops.Hash))) - } - buf[3] = uint8(ops.PubKeyAlgo) - binary.BigEndian.PutUint64(buf[4:12], ops.KeyId) - if ops.IsLast { - buf[12] = 1 - } - - if err := serializeHeader(w, packetTypeOnePassSignature, len(buf)); err != nil { - return err - } - _, err := w.Write(buf[:]) - return err -} diff --git a/vendor/golang.org/x/crypto/openpgp/packet/opaque.go b/vendor/golang.org/x/crypto/openpgp/packet/opaque.go deleted file mode 100644 index 456d807..0000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/opaque.go +++ /dev/null @@ -1,162 +0,0 @@ -// Copyright 2012 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 packet - -import ( - "bytes" - "io" - "io/ioutil" - - "golang.org/x/crypto/openpgp/errors" -) - -// OpaquePacket represents an OpenPGP packet as raw, unparsed data. This is -// useful for splitting and storing the original packet contents separately, -// handling unsupported packet types or accessing parts of the packet not yet -// implemented by this package. -type OpaquePacket struct { - // Packet type - Tag uint8 - // Reason why the packet was parsed opaquely - Reason error - // Binary contents of the packet data - Contents []byte -} - -func (op *OpaquePacket) parse(r io.Reader) (err error) { - op.Contents, err = ioutil.ReadAll(r) - return -} - -// Serialize marshals the packet to a writer in its original form, including -// the packet header. -func (op *OpaquePacket) Serialize(w io.Writer) (err error) { - err = serializeHeader(w, packetType(op.Tag), len(op.Contents)) - if err == nil { - _, err = w.Write(op.Contents) - } - return -} - -// Parse attempts to parse the opaque contents into a structure supported by -// this package. If the packet is not known then the result will be another -// OpaquePacket. -func (op *OpaquePacket) Parse() (p Packet, err error) { - hdr := bytes.NewBuffer(nil) - err = serializeHeader(hdr, packetType(op.Tag), len(op.Contents)) - if err != nil { - op.Reason = err - return op, err - } - p, err = Read(io.MultiReader(hdr, bytes.NewBuffer(op.Contents))) - if err != nil { - op.Reason = err - p = op - } - return -} - -// OpaqueReader reads OpaquePackets from an io.Reader. -type OpaqueReader struct { - r io.Reader -} - -func NewOpaqueReader(r io.Reader) *OpaqueReader { - return &OpaqueReader{r: r} -} - -// Read the next OpaquePacket. -func (or *OpaqueReader) Next() (op *OpaquePacket, err error) { - tag, _, contents, err := readHeader(or.r) - if err != nil { - return - } - op = &OpaquePacket{Tag: uint8(tag), Reason: err} - err = op.parse(contents) - if err != nil { - consumeAll(contents) - } - return -} - -// OpaqueSubpacket represents an unparsed OpenPGP subpacket, -// as found in signature and user attribute packets. -type OpaqueSubpacket struct { - SubType uint8 - Contents []byte -} - -// OpaqueSubpackets extracts opaque, unparsed OpenPGP subpackets from -// their byte representation. -func OpaqueSubpackets(contents []byte) (result []*OpaqueSubpacket, err error) { - var ( - subHeaderLen int - subPacket *OpaqueSubpacket - ) - for len(contents) > 0 { - subHeaderLen, subPacket, err = nextSubpacket(contents) - if err != nil { - break - } - result = append(result, subPacket) - contents = contents[subHeaderLen+len(subPacket.Contents):] - } - return -} - -func nextSubpacket(contents []byte) (subHeaderLen int, subPacket *OpaqueSubpacket, err error) { - // RFC 4880, section 5.2.3.1 - var subLen uint32 - if len(contents) < 1 { - goto Truncated - } - subPacket = &OpaqueSubpacket{} - switch { - case contents[0] < 192: - subHeaderLen = 2 // 1 length byte, 1 subtype byte - if len(contents) < subHeaderLen { - goto Truncated - } - subLen = uint32(contents[0]) - contents = contents[1:] - case contents[0] < 255: - subHeaderLen = 3 // 2 length bytes, 1 subtype - if len(contents) < subHeaderLen { - goto Truncated - } - subLen = uint32(contents[0]-192)<<8 + uint32(contents[1]) + 192 - contents = contents[2:] - default: - subHeaderLen = 6 // 5 length bytes, 1 subtype - if len(contents) < subHeaderLen { - goto Truncated - } - subLen = uint32(contents[1])<<24 | - uint32(contents[2])<<16 | - uint32(contents[3])<<8 | - uint32(contents[4]) - contents = contents[5:] - } - if subLen > uint32(len(contents)) || subLen == 0 { - goto Truncated - } - subPacket.SubType = contents[0] - subPacket.Contents = contents[1:subLen] - return -Truncated: - err = errors.StructuralError("subpacket truncated") - return -} - -func (osp *OpaqueSubpacket) Serialize(w io.Writer) (err error) { - buf := make([]byte, 6) - n := serializeSubpacketLength(buf, len(osp.Contents)+1) - buf[n] = osp.SubType - if _, err = w.Write(buf[:n+1]); err != nil { - return - } - _, err = w.Write(osp.Contents) - return -} diff --git a/vendor/golang.org/x/crypto/openpgp/packet/packet.go b/vendor/golang.org/x/crypto/openpgp/packet/packet.go deleted file mode 100644 index 0a19794..0000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/packet.go +++ /dev/null @@ -1,590 +0,0 @@ -// Copyright 2011 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 packet implements parsing and serialization of OpenPGP packets, as -// specified in RFC 4880. -// -// Deprecated: this package is unmaintained except for security fixes. New -// applications should consider a more focused, modern alternative to OpenPGP -// for their specific task. If you are required to interoperate with OpenPGP -// systems and need a maintained package, consider a community fork. -// See https://golang.org/issue/44226. -package packet // import "golang.org/x/crypto/openpgp/packet" - -import ( - "bufio" - "crypto/aes" - "crypto/cipher" - "crypto/des" - "crypto/rsa" - "io" - "math/big" - "math/bits" - - "golang.org/x/crypto/cast5" - "golang.org/x/crypto/openpgp/errors" -) - -// readFull is the same as io.ReadFull except that reading zero bytes returns -// ErrUnexpectedEOF rather than EOF. -func readFull(r io.Reader, buf []byte) (n int, err error) { - n, err = io.ReadFull(r, buf) - if err == io.EOF { - err = io.ErrUnexpectedEOF - } - return -} - -// readLength reads an OpenPGP length from r. See RFC 4880, section 4.2.2. -func readLength(r io.Reader) (length int64, isPartial bool, err error) { - var buf [4]byte - _, err = readFull(r, buf[:1]) - if err != nil { - return - } - switch { - case buf[0] < 192: - length = int64(buf[0]) - case buf[0] < 224: - length = int64(buf[0]-192) << 8 - _, err = readFull(r, buf[0:1]) - if err != nil { - return - } - length += int64(buf[0]) + 192 - case buf[0] < 255: - length = int64(1) << (buf[0] & 0x1f) - isPartial = true - default: - _, err = readFull(r, buf[0:4]) - if err != nil { - return - } - length = int64(buf[0])<<24 | - int64(buf[1])<<16 | - int64(buf[2])<<8 | - int64(buf[3]) - } - return -} - -// partialLengthReader wraps an io.Reader and handles OpenPGP partial lengths. -// The continuation lengths are parsed and removed from the stream and EOF is -// returned at the end of the packet. See RFC 4880, section 4.2.2.4. -type partialLengthReader struct { - r io.Reader - remaining int64 - isPartial bool -} - -func (r *partialLengthReader) Read(p []byte) (n int, err error) { - for r.remaining == 0 { - if !r.isPartial { - return 0, io.EOF - } - r.remaining, r.isPartial, err = readLength(r.r) - if err != nil { - return 0, err - } - } - - toRead := int64(len(p)) - if toRead > r.remaining { - toRead = r.remaining - } - - n, err = r.r.Read(p[:int(toRead)]) - r.remaining -= int64(n) - if n < int(toRead) && err == io.EOF { - err = io.ErrUnexpectedEOF - } - return -} - -// partialLengthWriter writes a stream of data using OpenPGP partial lengths. -// See RFC 4880, section 4.2.2.4. -type partialLengthWriter struct { - w io.WriteCloser - lengthByte [1]byte - sentFirst bool - buf []byte -} - -// RFC 4880 4.2.2.4: the first partial length MUST be at least 512 octets long. -const minFirstPartialWrite = 512 - -func (w *partialLengthWriter) Write(p []byte) (n int, err error) { - off := 0 - if !w.sentFirst { - if len(w.buf) > 0 || len(p) < minFirstPartialWrite { - off = len(w.buf) - w.buf = append(w.buf, p...) - if len(w.buf) < minFirstPartialWrite { - return len(p), nil - } - p = w.buf - w.buf = nil - } - w.sentFirst = true - } - - power := uint8(30) - for len(p) > 0 { - l := 1 << power - if len(p) < l { - power = uint8(bits.Len32(uint32(len(p)))) - 1 - l = 1 << power - } - w.lengthByte[0] = 224 + power - _, err = w.w.Write(w.lengthByte[:]) - if err == nil { - var m int - m, err = w.w.Write(p[:l]) - n += m - } - if err != nil { - if n < off { - return 0, err - } - return n - off, err - } - p = p[l:] - } - return n - off, nil -} - -func (w *partialLengthWriter) Close() error { - if len(w.buf) > 0 { - // In this case we can't send a 512 byte packet. - // Just send what we have. - p := w.buf - w.sentFirst = true - w.buf = nil - if _, err := w.Write(p); err != nil { - return err - } - } - - w.lengthByte[0] = 0 - _, err := w.w.Write(w.lengthByte[:]) - if err != nil { - return err - } - return w.w.Close() -} - -// A spanReader is an io.LimitReader, but it returns ErrUnexpectedEOF if the -// underlying Reader returns EOF before the limit has been reached. -type spanReader struct { - r io.Reader - n int64 -} - -func (l *spanReader) Read(p []byte) (n int, err error) { - if l.n <= 0 { - return 0, io.EOF - } - if int64(len(p)) > l.n { - p = p[0:l.n] - } - n, err = l.r.Read(p) - l.n -= int64(n) - if l.n > 0 && err == io.EOF { - err = io.ErrUnexpectedEOF - } - return -} - -// readHeader parses a packet header and returns an io.Reader which will return -// the contents of the packet. See RFC 4880, section 4.2. -func readHeader(r io.Reader) (tag packetType, length int64, contents io.Reader, err error) { - var buf [4]byte - _, err = io.ReadFull(r, buf[:1]) - if err != nil { - return - } - if buf[0]&0x80 == 0 { - err = errors.StructuralError("tag byte does not have MSB set") - return - } - if buf[0]&0x40 == 0 { - // Old format packet - tag = packetType((buf[0] & 0x3f) >> 2) - lengthType := buf[0] & 3 - if lengthType == 3 { - length = -1 - contents = r - return - } - lengthBytes := 1 << lengthType - _, err = readFull(r, buf[0:lengthBytes]) - if err != nil { - return - } - for i := 0; i < lengthBytes; i++ { - length <<= 8 - length |= int64(buf[i]) - } - contents = &spanReader{r, length} - return - } - - // New format packet - tag = packetType(buf[0] & 0x3f) - length, isPartial, err := readLength(r) - if err != nil { - return - } - if isPartial { - contents = &partialLengthReader{ - remaining: length, - isPartial: true, - r: r, - } - length = -1 - } else { - contents = &spanReader{r, length} - } - return -} - -// serializeHeader writes an OpenPGP packet header to w. See RFC 4880, section -// 4.2. -func serializeHeader(w io.Writer, ptype packetType, length int) (err error) { - var buf [6]byte - var n int - - buf[0] = 0x80 | 0x40 | byte(ptype) - if length < 192 { - buf[1] = byte(length) - n = 2 - } else if length < 8384 { - length -= 192 - buf[1] = 192 + byte(length>>8) - buf[2] = byte(length) - n = 3 - } else { - buf[1] = 255 - buf[2] = byte(length >> 24) - buf[3] = byte(length >> 16) - buf[4] = byte(length >> 8) - buf[5] = byte(length) - n = 6 - } - - _, err = w.Write(buf[:n]) - return -} - -// serializeStreamHeader writes an OpenPGP packet header to w where the -// length of the packet is unknown. It returns a io.WriteCloser which can be -// used to write the contents of the packet. See RFC 4880, section 4.2. -func serializeStreamHeader(w io.WriteCloser, ptype packetType) (out io.WriteCloser, err error) { - var buf [1]byte - buf[0] = 0x80 | 0x40 | byte(ptype) - _, err = w.Write(buf[:]) - if err != nil { - return - } - out = &partialLengthWriter{w: w} - return -} - -// Packet represents an OpenPGP packet. Users are expected to try casting -// instances of this interface to specific packet types. -type Packet interface { - parse(io.Reader) error -} - -// consumeAll reads from the given Reader until error, returning the number of -// bytes read. -func consumeAll(r io.Reader) (n int64, err error) { - var m int - var buf [1024]byte - - for { - m, err = r.Read(buf[:]) - n += int64(m) - if err == io.EOF { - err = nil - return - } - if err != nil { - return - } - } -} - -// packetType represents the numeric ids of the different OpenPGP packet types. See -// http://www.iana.org/assignments/pgp-parameters/pgp-parameters.xhtml#pgp-parameters-2 -type packetType uint8 - -const ( - packetTypeEncryptedKey packetType = 1 - packetTypeSignature packetType = 2 - packetTypeSymmetricKeyEncrypted packetType = 3 - packetTypeOnePassSignature packetType = 4 - packetTypePrivateKey packetType = 5 - packetTypePublicKey packetType = 6 - packetTypePrivateSubkey packetType = 7 - packetTypeCompressed packetType = 8 - packetTypeSymmetricallyEncrypted packetType = 9 - packetTypeLiteralData packetType = 11 - packetTypeUserId packetType = 13 - packetTypePublicSubkey packetType = 14 - packetTypeUserAttribute packetType = 17 - packetTypeSymmetricallyEncryptedMDC packetType = 18 -) - -// peekVersion detects the version of a public key packet about to -// be read. A bufio.Reader at the original position of the io.Reader -// is returned. -func peekVersion(r io.Reader) (bufr *bufio.Reader, ver byte, err error) { - bufr = bufio.NewReader(r) - var verBuf []byte - if verBuf, err = bufr.Peek(1); err != nil { - return - } - ver = verBuf[0] - return -} - -// Read reads a single OpenPGP packet from the given io.Reader. If there is an -// error parsing a packet, the whole packet is consumed from the input. -func Read(r io.Reader) (p Packet, err error) { - tag, _, contents, err := readHeader(r) - if err != nil { - return - } - - switch tag { - case packetTypeEncryptedKey: - p = new(EncryptedKey) - case packetTypeSignature: - var version byte - // Detect signature version - if contents, version, err = peekVersion(contents); err != nil { - return - } - if version < 4 { - p = new(SignatureV3) - } else { - p = new(Signature) - } - case packetTypeSymmetricKeyEncrypted: - p = new(SymmetricKeyEncrypted) - case packetTypeOnePassSignature: - p = new(OnePassSignature) - case packetTypePrivateKey, packetTypePrivateSubkey: - pk := new(PrivateKey) - if tag == packetTypePrivateSubkey { - pk.IsSubkey = true - } - p = pk - case packetTypePublicKey, packetTypePublicSubkey: - var version byte - if contents, version, err = peekVersion(contents); err != nil { - return - } - isSubkey := tag == packetTypePublicSubkey - if version < 4 { - p = &PublicKeyV3{IsSubkey: isSubkey} - } else { - p = &PublicKey{IsSubkey: isSubkey} - } - case packetTypeCompressed: - p = new(Compressed) - case packetTypeSymmetricallyEncrypted: - p = new(SymmetricallyEncrypted) - case packetTypeLiteralData: - p = new(LiteralData) - case packetTypeUserId: - p = new(UserId) - case packetTypeUserAttribute: - p = new(UserAttribute) - case packetTypeSymmetricallyEncryptedMDC: - se := new(SymmetricallyEncrypted) - se.MDC = true - p = se - default: - err = errors.UnknownPacketTypeError(tag) - } - if p != nil { - err = p.parse(contents) - } - if err != nil { - consumeAll(contents) - } - return -} - -// SignatureType represents the different semantic meanings of an OpenPGP -// signature. See RFC 4880, section 5.2.1. -type SignatureType uint8 - -const ( - SigTypeBinary SignatureType = 0 - SigTypeText = 1 - SigTypeGenericCert = 0x10 - SigTypePersonaCert = 0x11 - SigTypeCasualCert = 0x12 - SigTypePositiveCert = 0x13 - SigTypeSubkeyBinding = 0x18 - SigTypePrimaryKeyBinding = 0x19 - SigTypeDirectSignature = 0x1F - SigTypeKeyRevocation = 0x20 - SigTypeSubkeyRevocation = 0x28 -) - -// PublicKeyAlgorithm represents the different public key system specified for -// OpenPGP. See -// http://www.iana.org/assignments/pgp-parameters/pgp-parameters.xhtml#pgp-parameters-12 -type PublicKeyAlgorithm uint8 - -const ( - PubKeyAlgoRSA PublicKeyAlgorithm = 1 - PubKeyAlgoElGamal PublicKeyAlgorithm = 16 - PubKeyAlgoDSA PublicKeyAlgorithm = 17 - // RFC 6637, Section 5. - PubKeyAlgoECDH PublicKeyAlgorithm = 18 - PubKeyAlgoECDSA PublicKeyAlgorithm = 19 - - // Deprecated in RFC 4880, Section 13.5. Use key flags instead. - PubKeyAlgoRSAEncryptOnly PublicKeyAlgorithm = 2 - PubKeyAlgoRSASignOnly PublicKeyAlgorithm = 3 -) - -// CanEncrypt returns true if it's possible to encrypt a message to a public -// key of the given type. -func (pka PublicKeyAlgorithm) CanEncrypt() bool { - switch pka { - case PubKeyAlgoRSA, PubKeyAlgoRSAEncryptOnly, PubKeyAlgoElGamal: - return true - } - return false -} - -// CanSign returns true if it's possible for a public key of the given type to -// sign a message. -func (pka PublicKeyAlgorithm) CanSign() bool { - switch pka { - case PubKeyAlgoRSA, PubKeyAlgoRSASignOnly, PubKeyAlgoDSA, PubKeyAlgoECDSA: - return true - } - return false -} - -// CipherFunction represents the different block ciphers specified for OpenPGP. See -// http://www.iana.org/assignments/pgp-parameters/pgp-parameters.xhtml#pgp-parameters-13 -type CipherFunction uint8 - -const ( - Cipher3DES CipherFunction = 2 - CipherCAST5 CipherFunction = 3 - CipherAES128 CipherFunction = 7 - CipherAES192 CipherFunction = 8 - CipherAES256 CipherFunction = 9 -) - -// KeySize returns the key size, in bytes, of cipher. -func (cipher CipherFunction) KeySize() int { - switch cipher { - case Cipher3DES: - return 24 - case CipherCAST5: - return cast5.KeySize - case CipherAES128: - return 16 - case CipherAES192: - return 24 - case CipherAES256: - return 32 - } - return 0 -} - -// blockSize returns the block size, in bytes, of cipher. -func (cipher CipherFunction) blockSize() int { - switch cipher { - case Cipher3DES: - return des.BlockSize - case CipherCAST5: - return 8 - case CipherAES128, CipherAES192, CipherAES256: - return 16 - } - return 0 -} - -// new returns a fresh instance of the given cipher. -func (cipher CipherFunction) new(key []byte) (block cipher.Block) { - switch cipher { - case Cipher3DES: - block, _ = des.NewTripleDESCipher(key) - case CipherCAST5: - block, _ = cast5.NewCipher(key) - case CipherAES128, CipherAES192, CipherAES256: - block, _ = aes.NewCipher(key) - } - return -} - -// readMPI reads a big integer from r. The bit length returned is the bit -// length that was specified in r. This is preserved so that the integer can be -// reserialized exactly. -func readMPI(r io.Reader) (mpi []byte, bitLength uint16, err error) { - var buf [2]byte - _, err = readFull(r, buf[0:]) - if err != nil { - return - } - bitLength = uint16(buf[0])<<8 | uint16(buf[1]) - numBytes := (int(bitLength) + 7) / 8 - mpi = make([]byte, numBytes) - _, err = readFull(r, mpi) - // According to RFC 4880 3.2. we should check that the MPI has no leading - // zeroes (at least when not an encrypted MPI?), but this implementation - // does generate leading zeroes, so we keep accepting them. - return -} - -// writeMPI serializes a big integer to w. -func writeMPI(w io.Writer, bitLength uint16, mpiBytes []byte) (err error) { - // Note that we can produce leading zeroes, in violation of RFC 4880 3.2. - // Implementations seem to be tolerant of them, and stripping them would - // make it complex to guarantee matching re-serialization. - _, err = w.Write([]byte{byte(bitLength >> 8), byte(bitLength)}) - if err == nil { - _, err = w.Write(mpiBytes) - } - return -} - -// writeBig serializes a *big.Int to w. -func writeBig(w io.Writer, i *big.Int) error { - return writeMPI(w, uint16(i.BitLen()), i.Bytes()) -} - -// padToKeySize left-pads a MPI with zeroes to match the length of the -// specified RSA public. -func padToKeySize(pub *rsa.PublicKey, b []byte) []byte { - k := (pub.N.BitLen() + 7) / 8 - if len(b) >= k { - return b - } - bb := make([]byte, k) - copy(bb[len(bb)-len(b):], b) - return bb -} - -// CompressionAlgo Represents the different compression algorithms -// supported by OpenPGP (except for BZIP2, which is not currently -// supported). See Section 9.3 of RFC 4880. -type CompressionAlgo uint8 - -const ( - CompressionNone CompressionAlgo = 0 - CompressionZIP CompressionAlgo = 1 - CompressionZLIB CompressionAlgo = 2 -) diff --git a/vendor/golang.org/x/crypto/openpgp/packet/private_key.go b/vendor/golang.org/x/crypto/openpgp/packet/private_key.go deleted file mode 100644 index 81abb7c..0000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/private_key.go +++ /dev/null @@ -1,385 +0,0 @@ -// Copyright 2011 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 packet - -import ( - "bytes" - "crypto" - "crypto/cipher" - "crypto/dsa" - "crypto/ecdsa" - "crypto/rsa" - "crypto/sha1" - "io" - "io/ioutil" - "math/big" - "strconv" - "time" - - "golang.org/x/crypto/openpgp/elgamal" - "golang.org/x/crypto/openpgp/errors" - "golang.org/x/crypto/openpgp/s2k" -) - -// PrivateKey represents a possibly encrypted private key. See RFC 4880, -// section 5.5.3. -type PrivateKey struct { - PublicKey - Encrypted bool // if true then the private key is unavailable until Decrypt has been called. - encryptedData []byte - cipher CipherFunction - s2k func(out, in []byte) - PrivateKey interface{} // An *{rsa|dsa|ecdsa}.PrivateKey or crypto.Signer/crypto.Decrypter (Decryptor RSA only). - sha1Checksum bool - iv []byte -} - -func NewRSAPrivateKey(creationTime time.Time, priv *rsa.PrivateKey) *PrivateKey { - pk := new(PrivateKey) - pk.PublicKey = *NewRSAPublicKey(creationTime, &priv.PublicKey) - pk.PrivateKey = priv - return pk -} - -func NewDSAPrivateKey(creationTime time.Time, priv *dsa.PrivateKey) *PrivateKey { - pk := new(PrivateKey) - pk.PublicKey = *NewDSAPublicKey(creationTime, &priv.PublicKey) - pk.PrivateKey = priv - return pk -} - -func NewElGamalPrivateKey(creationTime time.Time, priv *elgamal.PrivateKey) *PrivateKey { - pk := new(PrivateKey) - pk.PublicKey = *NewElGamalPublicKey(creationTime, &priv.PublicKey) - pk.PrivateKey = priv - return pk -} - -func NewECDSAPrivateKey(creationTime time.Time, priv *ecdsa.PrivateKey) *PrivateKey { - pk := new(PrivateKey) - pk.PublicKey = *NewECDSAPublicKey(creationTime, &priv.PublicKey) - pk.PrivateKey = priv - return pk -} - -// NewSignerPrivateKey creates a PrivateKey from a crypto.Signer that -// implements RSA or ECDSA. -func NewSignerPrivateKey(creationTime time.Time, signer crypto.Signer) *PrivateKey { - pk := new(PrivateKey) - // In general, the public Keys should be used as pointers. We still - // type-switch on the values, for backwards-compatibility. - switch pubkey := signer.Public().(type) { - case *rsa.PublicKey: - pk.PublicKey = *NewRSAPublicKey(creationTime, pubkey) - case rsa.PublicKey: - pk.PublicKey = *NewRSAPublicKey(creationTime, &pubkey) - case *ecdsa.PublicKey: - pk.PublicKey = *NewECDSAPublicKey(creationTime, pubkey) - case ecdsa.PublicKey: - pk.PublicKey = *NewECDSAPublicKey(creationTime, &pubkey) - default: - panic("openpgp: unknown crypto.Signer type in NewSignerPrivateKey") - } - pk.PrivateKey = signer - return pk -} - -func (pk *PrivateKey) parse(r io.Reader) (err error) { - err = (&pk.PublicKey).parse(r) - if err != nil { - return - } - var buf [1]byte - _, err = readFull(r, buf[:]) - if err != nil { - return - } - - s2kType := buf[0] - - switch s2kType { - case 0: - pk.s2k = nil - pk.Encrypted = false - case 254, 255: - _, err = readFull(r, buf[:]) - if err != nil { - return - } - pk.cipher = CipherFunction(buf[0]) - pk.Encrypted = true - pk.s2k, err = s2k.Parse(r) - if err != nil { - return - } - if s2kType == 254 { - pk.sha1Checksum = true - } - default: - return errors.UnsupportedError("deprecated s2k function in private key") - } - - if pk.Encrypted { - blockSize := pk.cipher.blockSize() - if blockSize == 0 { - return errors.UnsupportedError("unsupported cipher in private key: " + strconv.Itoa(int(pk.cipher))) - } - pk.iv = make([]byte, blockSize) - _, err = readFull(r, pk.iv) - if err != nil { - return - } - } - - pk.encryptedData, err = ioutil.ReadAll(r) - if err != nil { - return - } - - if !pk.Encrypted { - return pk.parsePrivateKey(pk.encryptedData) - } - - return -} - -func mod64kHash(d []byte) uint16 { - var h uint16 - for _, b := range d { - h += uint16(b) - } - return h -} - -func (pk *PrivateKey) Serialize(w io.Writer) (err error) { - // TODO(agl): support encrypted private keys - buf := bytes.NewBuffer(nil) - err = pk.PublicKey.serializeWithoutHeaders(buf) - if err != nil { - return - } - buf.WriteByte(0 /* no encryption */) - - privateKeyBuf := bytes.NewBuffer(nil) - - switch priv := pk.PrivateKey.(type) { - case *rsa.PrivateKey: - err = serializeRSAPrivateKey(privateKeyBuf, priv) - case *dsa.PrivateKey: - err = serializeDSAPrivateKey(privateKeyBuf, priv) - case *elgamal.PrivateKey: - err = serializeElGamalPrivateKey(privateKeyBuf, priv) - case *ecdsa.PrivateKey: - err = serializeECDSAPrivateKey(privateKeyBuf, priv) - default: - err = errors.InvalidArgumentError("unknown private key type") - } - if err != nil { - return - } - - ptype := packetTypePrivateKey - contents := buf.Bytes() - privateKeyBytes := privateKeyBuf.Bytes() - if pk.IsSubkey { - ptype = packetTypePrivateSubkey - } - err = serializeHeader(w, ptype, len(contents)+len(privateKeyBytes)+2) - if err != nil { - return - } - _, err = w.Write(contents) - if err != nil { - return - } - _, err = w.Write(privateKeyBytes) - if err != nil { - return - } - - checksum := mod64kHash(privateKeyBytes) - var checksumBytes [2]byte - checksumBytes[0] = byte(checksum >> 8) - checksumBytes[1] = byte(checksum) - _, err = w.Write(checksumBytes[:]) - - return -} - -func serializeRSAPrivateKey(w io.Writer, priv *rsa.PrivateKey) error { - err := writeBig(w, priv.D) - if err != nil { - return err - } - err = writeBig(w, priv.Primes[1]) - if err != nil { - return err - } - err = writeBig(w, priv.Primes[0]) - if err != nil { - return err - } - return writeBig(w, priv.Precomputed.Qinv) -} - -func serializeDSAPrivateKey(w io.Writer, priv *dsa.PrivateKey) error { - return writeBig(w, priv.X) -} - -func serializeElGamalPrivateKey(w io.Writer, priv *elgamal.PrivateKey) error { - return writeBig(w, priv.X) -} - -func serializeECDSAPrivateKey(w io.Writer, priv *ecdsa.PrivateKey) error { - return writeBig(w, priv.D) -} - -// Decrypt decrypts an encrypted private key using a passphrase. -func (pk *PrivateKey) Decrypt(passphrase []byte) error { - if !pk.Encrypted { - return nil - } - - key := make([]byte, pk.cipher.KeySize()) - pk.s2k(key, passphrase) - block := pk.cipher.new(key) - cfb := cipher.NewCFBDecrypter(block, pk.iv) - - data := make([]byte, len(pk.encryptedData)) - cfb.XORKeyStream(data, pk.encryptedData) - - if pk.sha1Checksum { - if len(data) < sha1.Size { - return errors.StructuralError("truncated private key data") - } - h := sha1.New() - h.Write(data[:len(data)-sha1.Size]) - sum := h.Sum(nil) - if !bytes.Equal(sum, data[len(data)-sha1.Size:]) { - return errors.StructuralError("private key checksum failure") - } - data = data[:len(data)-sha1.Size] - } else { - if len(data) < 2 { - return errors.StructuralError("truncated private key data") - } - var sum uint16 - for i := 0; i < len(data)-2; i++ { - sum += uint16(data[i]) - } - if data[len(data)-2] != uint8(sum>>8) || - data[len(data)-1] != uint8(sum) { - return errors.StructuralError("private key checksum failure") - } - data = data[:len(data)-2] - } - - return pk.parsePrivateKey(data) -} - -func (pk *PrivateKey) parsePrivateKey(data []byte) (err error) { - switch pk.PublicKey.PubKeyAlgo { - case PubKeyAlgoRSA, PubKeyAlgoRSASignOnly, PubKeyAlgoRSAEncryptOnly: - return pk.parseRSAPrivateKey(data) - case PubKeyAlgoDSA: - return pk.parseDSAPrivateKey(data) - case PubKeyAlgoElGamal: - return pk.parseElGamalPrivateKey(data) - case PubKeyAlgoECDSA: - return pk.parseECDSAPrivateKey(data) - } - panic("impossible") -} - -func (pk *PrivateKey) parseRSAPrivateKey(data []byte) (err error) { - rsaPub := pk.PublicKey.PublicKey.(*rsa.PublicKey) - rsaPriv := new(rsa.PrivateKey) - rsaPriv.PublicKey = *rsaPub - - buf := bytes.NewBuffer(data) - d, _, err := readMPI(buf) - if err != nil { - return - } - p, _, err := readMPI(buf) - if err != nil { - return - } - q, _, err := readMPI(buf) - if err != nil { - return - } - - rsaPriv.D = new(big.Int).SetBytes(d) - rsaPriv.Primes = make([]*big.Int, 2) - rsaPriv.Primes[0] = new(big.Int).SetBytes(p) - rsaPriv.Primes[1] = new(big.Int).SetBytes(q) - if err := rsaPriv.Validate(); err != nil { - return err - } - rsaPriv.Precompute() - pk.PrivateKey = rsaPriv - pk.Encrypted = false - pk.encryptedData = nil - - return nil -} - -func (pk *PrivateKey) parseDSAPrivateKey(data []byte) (err error) { - dsaPub := pk.PublicKey.PublicKey.(*dsa.PublicKey) - dsaPriv := new(dsa.PrivateKey) - dsaPriv.PublicKey = *dsaPub - - buf := bytes.NewBuffer(data) - x, _, err := readMPI(buf) - if err != nil { - return - } - - dsaPriv.X = new(big.Int).SetBytes(x) - pk.PrivateKey = dsaPriv - pk.Encrypted = false - pk.encryptedData = nil - - return nil -} - -func (pk *PrivateKey) parseElGamalPrivateKey(data []byte) (err error) { - pub := pk.PublicKey.PublicKey.(*elgamal.PublicKey) - priv := new(elgamal.PrivateKey) - priv.PublicKey = *pub - - buf := bytes.NewBuffer(data) - x, _, err := readMPI(buf) - if err != nil { - return - } - - priv.X = new(big.Int).SetBytes(x) - pk.PrivateKey = priv - pk.Encrypted = false - pk.encryptedData = nil - - return nil -} - -func (pk *PrivateKey) parseECDSAPrivateKey(data []byte) (err error) { - ecdsaPub := pk.PublicKey.PublicKey.(*ecdsa.PublicKey) - - buf := bytes.NewBuffer(data) - d, _, err := readMPI(buf) - if err != nil { - return - } - - pk.PrivateKey = &ecdsa.PrivateKey{ - PublicKey: *ecdsaPub, - D: new(big.Int).SetBytes(d), - } - pk.Encrypted = false - pk.encryptedData = nil - - return nil -} diff --git a/vendor/golang.org/x/crypto/openpgp/packet/public_key.go b/vendor/golang.org/x/crypto/openpgp/packet/public_key.go deleted file mode 100644 index fcd5f52..0000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/public_key.go +++ /dev/null @@ -1,753 +0,0 @@ -// Copyright 2011 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 packet - -import ( - "bytes" - "crypto" - "crypto/dsa" - "crypto/ecdsa" - "crypto/elliptic" - "crypto/rsa" - "crypto/sha1" - _ "crypto/sha256" - _ "crypto/sha512" - "encoding/binary" - "fmt" - "hash" - "io" - "math/big" - "strconv" - "time" - - "golang.org/x/crypto/openpgp/elgamal" - "golang.org/x/crypto/openpgp/errors" -) - -var ( - // NIST curve P-256 - oidCurveP256 []byte = []byte{0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x07} - // NIST curve P-384 - oidCurveP384 []byte = []byte{0x2B, 0x81, 0x04, 0x00, 0x22} - // NIST curve P-521 - oidCurveP521 []byte = []byte{0x2B, 0x81, 0x04, 0x00, 0x23} -) - -const maxOIDLength = 8 - -// ecdsaKey stores the algorithm-specific fields for ECDSA keys. -// as defined in RFC 6637, Section 9. -type ecdsaKey struct { - // oid contains the OID byte sequence identifying the elliptic curve used - oid []byte - // p contains the elliptic curve point that represents the public key - p parsedMPI -} - -// parseOID reads the OID for the curve as defined in RFC 6637, Section 9. -func parseOID(r io.Reader) (oid []byte, err error) { - buf := make([]byte, maxOIDLength) - if _, err = readFull(r, buf[:1]); err != nil { - return - } - oidLen := buf[0] - if int(oidLen) > len(buf) { - err = errors.UnsupportedError("invalid oid length: " + strconv.Itoa(int(oidLen))) - return - } - oid = buf[:oidLen] - _, err = readFull(r, oid) - return -} - -func (f *ecdsaKey) parse(r io.Reader) (err error) { - if f.oid, err = parseOID(r); err != nil { - return err - } - f.p.bytes, f.p.bitLength, err = readMPI(r) - return -} - -func (f *ecdsaKey) serialize(w io.Writer) (err error) { - buf := make([]byte, maxOIDLength+1) - buf[0] = byte(len(f.oid)) - copy(buf[1:], f.oid) - if _, err = w.Write(buf[:len(f.oid)+1]); err != nil { - return - } - return writeMPIs(w, f.p) -} - -func (f *ecdsaKey) newECDSA() (*ecdsa.PublicKey, error) { - var c elliptic.Curve - if bytes.Equal(f.oid, oidCurveP256) { - c = elliptic.P256() - } else if bytes.Equal(f.oid, oidCurveP384) { - c = elliptic.P384() - } else if bytes.Equal(f.oid, oidCurveP521) { - c = elliptic.P521() - } else { - return nil, errors.UnsupportedError(fmt.Sprintf("unsupported oid: %x", f.oid)) - } - x, y := elliptic.Unmarshal(c, f.p.bytes) - if x == nil { - return nil, errors.UnsupportedError("failed to parse EC point") - } - return &ecdsa.PublicKey{Curve: c, X: x, Y: y}, nil -} - -func (f *ecdsaKey) byteLen() int { - return 1 + len(f.oid) + 2 + len(f.p.bytes) -} - -type kdfHashFunction byte -type kdfAlgorithm byte - -// ecdhKdf stores key derivation function parameters -// used for ECDH encryption. See RFC 6637, Section 9. -type ecdhKdf struct { - KdfHash kdfHashFunction - KdfAlgo kdfAlgorithm -} - -func (f *ecdhKdf) parse(r io.Reader) (err error) { - buf := make([]byte, 1) - if _, err = readFull(r, buf); err != nil { - return - } - kdfLen := int(buf[0]) - if kdfLen < 3 { - return errors.UnsupportedError("Unsupported ECDH KDF length: " + strconv.Itoa(kdfLen)) - } - buf = make([]byte, kdfLen) - if _, err = readFull(r, buf); err != nil { - return - } - reserved := int(buf[0]) - f.KdfHash = kdfHashFunction(buf[1]) - f.KdfAlgo = kdfAlgorithm(buf[2]) - if reserved != 0x01 { - return errors.UnsupportedError("Unsupported KDF reserved field: " + strconv.Itoa(reserved)) - } - return -} - -func (f *ecdhKdf) serialize(w io.Writer) (err error) { - buf := make([]byte, 4) - // See RFC 6637, Section 9, Algorithm-Specific Fields for ECDH keys. - buf[0] = byte(0x03) // Length of the following fields - buf[1] = byte(0x01) // Reserved for future extensions, must be 1 for now - buf[2] = byte(f.KdfHash) - buf[3] = byte(f.KdfAlgo) - _, err = w.Write(buf[:]) - return -} - -func (f *ecdhKdf) byteLen() int { - return 4 -} - -// PublicKey represents an OpenPGP public key. See RFC 4880, section 5.5.2. -type PublicKey struct { - CreationTime time.Time - PubKeyAlgo PublicKeyAlgorithm - PublicKey interface{} // *rsa.PublicKey, *dsa.PublicKey or *ecdsa.PublicKey - Fingerprint [20]byte - KeyId uint64 - IsSubkey bool - - n, e, p, q, g, y parsedMPI - - // RFC 6637 fields - ec *ecdsaKey - ecdh *ecdhKdf -} - -// signingKey provides a convenient abstraction over signature verification -// for v3 and v4 public keys. -type signingKey interface { - SerializeSignaturePrefix(io.Writer) - serializeWithoutHeaders(io.Writer) error -} - -func fromBig(n *big.Int) parsedMPI { - return parsedMPI{ - bytes: n.Bytes(), - bitLength: uint16(n.BitLen()), - } -} - -// NewRSAPublicKey returns a PublicKey that wraps the given rsa.PublicKey. -func NewRSAPublicKey(creationTime time.Time, pub *rsa.PublicKey) *PublicKey { - pk := &PublicKey{ - CreationTime: creationTime, - PubKeyAlgo: PubKeyAlgoRSA, - PublicKey: pub, - n: fromBig(pub.N), - e: fromBig(big.NewInt(int64(pub.E))), - } - - pk.setFingerPrintAndKeyId() - return pk -} - -// NewDSAPublicKey returns a PublicKey that wraps the given dsa.PublicKey. -func NewDSAPublicKey(creationTime time.Time, pub *dsa.PublicKey) *PublicKey { - pk := &PublicKey{ - CreationTime: creationTime, - PubKeyAlgo: PubKeyAlgoDSA, - PublicKey: pub, - p: fromBig(pub.P), - q: fromBig(pub.Q), - g: fromBig(pub.G), - y: fromBig(pub.Y), - } - - pk.setFingerPrintAndKeyId() - return pk -} - -// NewElGamalPublicKey returns a PublicKey that wraps the given elgamal.PublicKey. -func NewElGamalPublicKey(creationTime time.Time, pub *elgamal.PublicKey) *PublicKey { - pk := &PublicKey{ - CreationTime: creationTime, - PubKeyAlgo: PubKeyAlgoElGamal, - PublicKey: pub, - p: fromBig(pub.P), - g: fromBig(pub.G), - y: fromBig(pub.Y), - } - - pk.setFingerPrintAndKeyId() - return pk -} - -func NewECDSAPublicKey(creationTime time.Time, pub *ecdsa.PublicKey) *PublicKey { - pk := &PublicKey{ - CreationTime: creationTime, - PubKeyAlgo: PubKeyAlgoECDSA, - PublicKey: pub, - ec: new(ecdsaKey), - } - - switch pub.Curve { - case elliptic.P256(): - pk.ec.oid = oidCurveP256 - case elliptic.P384(): - pk.ec.oid = oidCurveP384 - case elliptic.P521(): - pk.ec.oid = oidCurveP521 - default: - panic("unknown elliptic curve") - } - - pk.ec.p.bytes = elliptic.Marshal(pub.Curve, pub.X, pub.Y) - - // The bit length is 3 (for the 0x04 specifying an uncompressed key) - // plus two field elements (for x and y), which are rounded up to the - // nearest byte. See https://tools.ietf.org/html/rfc6637#section-6 - fieldBytes := (pub.Curve.Params().BitSize + 7) & ^7 - pk.ec.p.bitLength = uint16(3 + fieldBytes + fieldBytes) - - pk.setFingerPrintAndKeyId() - return pk -} - -func (pk *PublicKey) parse(r io.Reader) (err error) { - // RFC 4880, section 5.5.2 - var buf [6]byte - _, err = readFull(r, buf[:]) - if err != nil { - return - } - if buf[0] != 4 { - return errors.UnsupportedError("public key version") - } - pk.CreationTime = time.Unix(int64(uint32(buf[1])<<24|uint32(buf[2])<<16|uint32(buf[3])<<8|uint32(buf[4])), 0) - pk.PubKeyAlgo = PublicKeyAlgorithm(buf[5]) - switch pk.PubKeyAlgo { - case PubKeyAlgoRSA, PubKeyAlgoRSAEncryptOnly, PubKeyAlgoRSASignOnly: - err = pk.parseRSA(r) - case PubKeyAlgoDSA: - err = pk.parseDSA(r) - case PubKeyAlgoElGamal: - err = pk.parseElGamal(r) - case PubKeyAlgoECDSA: - pk.ec = new(ecdsaKey) - if err = pk.ec.parse(r); err != nil { - return err - } - pk.PublicKey, err = pk.ec.newECDSA() - case PubKeyAlgoECDH: - pk.ec = new(ecdsaKey) - if err = pk.ec.parse(r); err != nil { - return - } - pk.ecdh = new(ecdhKdf) - if err = pk.ecdh.parse(r); err != nil { - return - } - // The ECDH key is stored in an ecdsa.PublicKey for convenience. - pk.PublicKey, err = pk.ec.newECDSA() - default: - err = errors.UnsupportedError("public key type: " + strconv.Itoa(int(pk.PubKeyAlgo))) - } - if err != nil { - return - } - - pk.setFingerPrintAndKeyId() - return -} - -func (pk *PublicKey) setFingerPrintAndKeyId() { - // RFC 4880, section 12.2 - fingerPrint := sha1.New() - pk.SerializeSignaturePrefix(fingerPrint) - pk.serializeWithoutHeaders(fingerPrint) - copy(pk.Fingerprint[:], fingerPrint.Sum(nil)) - pk.KeyId = binary.BigEndian.Uint64(pk.Fingerprint[12:20]) -} - -// parseRSA parses RSA public key material from the given Reader. See RFC 4880, -// section 5.5.2. -func (pk *PublicKey) parseRSA(r io.Reader) (err error) { - pk.n.bytes, pk.n.bitLength, err = readMPI(r) - if err != nil { - return - } - pk.e.bytes, pk.e.bitLength, err = readMPI(r) - if err != nil { - return - } - - if len(pk.e.bytes) > 3 { - err = errors.UnsupportedError("large public exponent") - return - } - rsa := &rsa.PublicKey{ - N: new(big.Int).SetBytes(pk.n.bytes), - E: 0, - } - for i := 0; i < len(pk.e.bytes); i++ { - rsa.E <<= 8 - rsa.E |= int(pk.e.bytes[i]) - } - pk.PublicKey = rsa - return -} - -// parseDSA parses DSA public key material from the given Reader. See RFC 4880, -// section 5.5.2. -func (pk *PublicKey) parseDSA(r io.Reader) (err error) { - pk.p.bytes, pk.p.bitLength, err = readMPI(r) - if err != nil { - return - } - pk.q.bytes, pk.q.bitLength, err = readMPI(r) - if err != nil { - return - } - pk.g.bytes, pk.g.bitLength, err = readMPI(r) - if err != nil { - return - } - pk.y.bytes, pk.y.bitLength, err = readMPI(r) - if err != nil { - return - } - - dsa := new(dsa.PublicKey) - dsa.P = new(big.Int).SetBytes(pk.p.bytes) - dsa.Q = new(big.Int).SetBytes(pk.q.bytes) - dsa.G = new(big.Int).SetBytes(pk.g.bytes) - dsa.Y = new(big.Int).SetBytes(pk.y.bytes) - pk.PublicKey = dsa - return -} - -// parseElGamal parses ElGamal public key material from the given Reader. See -// RFC 4880, section 5.5.2. -func (pk *PublicKey) parseElGamal(r io.Reader) (err error) { - pk.p.bytes, pk.p.bitLength, err = readMPI(r) - if err != nil { - return - } - pk.g.bytes, pk.g.bitLength, err = readMPI(r) - if err != nil { - return - } - pk.y.bytes, pk.y.bitLength, err = readMPI(r) - if err != nil { - return - } - - elgamal := new(elgamal.PublicKey) - elgamal.P = new(big.Int).SetBytes(pk.p.bytes) - elgamal.G = new(big.Int).SetBytes(pk.g.bytes) - elgamal.Y = new(big.Int).SetBytes(pk.y.bytes) - pk.PublicKey = elgamal - return -} - -// SerializeSignaturePrefix writes the prefix for this public key to the given Writer. -// The prefix is used when calculating a signature over this public key. See -// RFC 4880, section 5.2.4. -func (pk *PublicKey) SerializeSignaturePrefix(h io.Writer) { - var pLength uint16 - switch pk.PubKeyAlgo { - case PubKeyAlgoRSA, PubKeyAlgoRSAEncryptOnly, PubKeyAlgoRSASignOnly: - pLength += 2 + uint16(len(pk.n.bytes)) - pLength += 2 + uint16(len(pk.e.bytes)) - case PubKeyAlgoDSA: - pLength += 2 + uint16(len(pk.p.bytes)) - pLength += 2 + uint16(len(pk.q.bytes)) - pLength += 2 + uint16(len(pk.g.bytes)) - pLength += 2 + uint16(len(pk.y.bytes)) - case PubKeyAlgoElGamal: - pLength += 2 + uint16(len(pk.p.bytes)) - pLength += 2 + uint16(len(pk.g.bytes)) - pLength += 2 + uint16(len(pk.y.bytes)) - case PubKeyAlgoECDSA: - pLength += uint16(pk.ec.byteLen()) - case PubKeyAlgoECDH: - pLength += uint16(pk.ec.byteLen()) - pLength += uint16(pk.ecdh.byteLen()) - default: - panic("unknown public key algorithm") - } - pLength += 6 - h.Write([]byte{0x99, byte(pLength >> 8), byte(pLength)}) - return -} - -func (pk *PublicKey) Serialize(w io.Writer) (err error) { - length := 6 // 6 byte header - - switch pk.PubKeyAlgo { - case PubKeyAlgoRSA, PubKeyAlgoRSAEncryptOnly, PubKeyAlgoRSASignOnly: - length += 2 + len(pk.n.bytes) - length += 2 + len(pk.e.bytes) - case PubKeyAlgoDSA: - length += 2 + len(pk.p.bytes) - length += 2 + len(pk.q.bytes) - length += 2 + len(pk.g.bytes) - length += 2 + len(pk.y.bytes) - case PubKeyAlgoElGamal: - length += 2 + len(pk.p.bytes) - length += 2 + len(pk.g.bytes) - length += 2 + len(pk.y.bytes) - case PubKeyAlgoECDSA: - length += pk.ec.byteLen() - case PubKeyAlgoECDH: - length += pk.ec.byteLen() - length += pk.ecdh.byteLen() - default: - panic("unknown public key algorithm") - } - - packetType := packetTypePublicKey - if pk.IsSubkey { - packetType = packetTypePublicSubkey - } - err = serializeHeader(w, packetType, length) - if err != nil { - return - } - return pk.serializeWithoutHeaders(w) -} - -// serializeWithoutHeaders marshals the PublicKey to w in the form of an -// OpenPGP public key packet, not including the packet header. -func (pk *PublicKey) serializeWithoutHeaders(w io.Writer) (err error) { - var buf [6]byte - buf[0] = 4 - t := uint32(pk.CreationTime.Unix()) - buf[1] = byte(t >> 24) - buf[2] = byte(t >> 16) - buf[3] = byte(t >> 8) - buf[4] = byte(t) - buf[5] = byte(pk.PubKeyAlgo) - - _, err = w.Write(buf[:]) - if err != nil { - return - } - - switch pk.PubKeyAlgo { - case PubKeyAlgoRSA, PubKeyAlgoRSAEncryptOnly, PubKeyAlgoRSASignOnly: - return writeMPIs(w, pk.n, pk.e) - case PubKeyAlgoDSA: - return writeMPIs(w, pk.p, pk.q, pk.g, pk.y) - case PubKeyAlgoElGamal: - return writeMPIs(w, pk.p, pk.g, pk.y) - case PubKeyAlgoECDSA: - return pk.ec.serialize(w) - case PubKeyAlgoECDH: - if err = pk.ec.serialize(w); err != nil { - return - } - return pk.ecdh.serialize(w) - } - return errors.InvalidArgumentError("bad public-key algorithm") -} - -// CanSign returns true iff this public key can generate signatures -func (pk *PublicKey) CanSign() bool { - return pk.PubKeyAlgo != PubKeyAlgoRSAEncryptOnly && pk.PubKeyAlgo != PubKeyAlgoElGamal -} - -// VerifySignature returns nil iff sig is a valid signature, made by this -// public key, of the data hashed into signed. signed is mutated by this call. -func (pk *PublicKey) VerifySignature(signed hash.Hash, sig *Signature) (err error) { - if !pk.CanSign() { - return errors.InvalidArgumentError("public key cannot generate signatures") - } - - signed.Write(sig.HashSuffix) - hashBytes := signed.Sum(nil) - - if hashBytes[0] != sig.HashTag[0] || hashBytes[1] != sig.HashTag[1] { - return errors.SignatureError("hash tag doesn't match") - } - - if pk.PubKeyAlgo != sig.PubKeyAlgo { - return errors.InvalidArgumentError("public key and signature use different algorithms") - } - - switch pk.PubKeyAlgo { - case PubKeyAlgoRSA, PubKeyAlgoRSASignOnly: - rsaPublicKey, _ := pk.PublicKey.(*rsa.PublicKey) - err = rsa.VerifyPKCS1v15(rsaPublicKey, sig.Hash, hashBytes, padToKeySize(rsaPublicKey, sig.RSASignature.bytes)) - if err != nil { - return errors.SignatureError("RSA verification failure") - } - return nil - case PubKeyAlgoDSA: - dsaPublicKey, _ := pk.PublicKey.(*dsa.PublicKey) - // Need to truncate hashBytes to match FIPS 186-3 section 4.6. - subgroupSize := (dsaPublicKey.Q.BitLen() + 7) / 8 - if len(hashBytes) > subgroupSize { - hashBytes = hashBytes[:subgroupSize] - } - if !dsa.Verify(dsaPublicKey, hashBytes, new(big.Int).SetBytes(sig.DSASigR.bytes), new(big.Int).SetBytes(sig.DSASigS.bytes)) { - return errors.SignatureError("DSA verification failure") - } - return nil - case PubKeyAlgoECDSA: - ecdsaPublicKey := pk.PublicKey.(*ecdsa.PublicKey) - if !ecdsa.Verify(ecdsaPublicKey, hashBytes, new(big.Int).SetBytes(sig.ECDSASigR.bytes), new(big.Int).SetBytes(sig.ECDSASigS.bytes)) { - return errors.SignatureError("ECDSA verification failure") - } - return nil - default: - return errors.SignatureError("Unsupported public key algorithm used in signature") - } -} - -// VerifySignatureV3 returns nil iff sig is a valid signature, made by this -// public key, of the data hashed into signed. signed is mutated by this call. -func (pk *PublicKey) VerifySignatureV3(signed hash.Hash, sig *SignatureV3) (err error) { - if !pk.CanSign() { - return errors.InvalidArgumentError("public key cannot generate signatures") - } - - suffix := make([]byte, 5) - suffix[0] = byte(sig.SigType) - binary.BigEndian.PutUint32(suffix[1:], uint32(sig.CreationTime.Unix())) - signed.Write(suffix) - hashBytes := signed.Sum(nil) - - if hashBytes[0] != sig.HashTag[0] || hashBytes[1] != sig.HashTag[1] { - return errors.SignatureError("hash tag doesn't match") - } - - if pk.PubKeyAlgo != sig.PubKeyAlgo { - return errors.InvalidArgumentError("public key and signature use different algorithms") - } - - switch pk.PubKeyAlgo { - case PubKeyAlgoRSA, PubKeyAlgoRSASignOnly: - rsaPublicKey := pk.PublicKey.(*rsa.PublicKey) - if err = rsa.VerifyPKCS1v15(rsaPublicKey, sig.Hash, hashBytes, padToKeySize(rsaPublicKey, sig.RSASignature.bytes)); err != nil { - return errors.SignatureError("RSA verification failure") - } - return - case PubKeyAlgoDSA: - dsaPublicKey := pk.PublicKey.(*dsa.PublicKey) - // Need to truncate hashBytes to match FIPS 186-3 section 4.6. - subgroupSize := (dsaPublicKey.Q.BitLen() + 7) / 8 - if len(hashBytes) > subgroupSize { - hashBytes = hashBytes[:subgroupSize] - } - if !dsa.Verify(dsaPublicKey, hashBytes, new(big.Int).SetBytes(sig.DSASigR.bytes), new(big.Int).SetBytes(sig.DSASigS.bytes)) { - return errors.SignatureError("DSA verification failure") - } - return nil - default: - panic("shouldn't happen") - } -} - -// keySignatureHash returns a Hash of the message that needs to be signed for -// pk to assert a subkey relationship to signed. -func keySignatureHash(pk, signed signingKey, hashFunc crypto.Hash) (h hash.Hash, err error) { - if !hashFunc.Available() { - return nil, errors.UnsupportedError("hash function") - } - h = hashFunc.New() - - // RFC 4880, section 5.2.4 - pk.SerializeSignaturePrefix(h) - pk.serializeWithoutHeaders(h) - signed.SerializeSignaturePrefix(h) - signed.serializeWithoutHeaders(h) - return -} - -// VerifyKeySignature returns nil iff sig is a valid signature, made by this -// public key, of signed. -func (pk *PublicKey) VerifyKeySignature(signed *PublicKey, sig *Signature) error { - h, err := keySignatureHash(pk, signed, sig.Hash) - if err != nil { - return err - } - if err = pk.VerifySignature(h, sig); err != nil { - return err - } - - if sig.FlagSign { - // Signing subkeys must be cross-signed. See - // https://www.gnupg.org/faq/subkey-cross-certify.html. - if sig.EmbeddedSignature == nil { - return errors.StructuralError("signing subkey is missing cross-signature") - } - // Verify the cross-signature. This is calculated over the same - // data as the main signature, so we cannot just recursively - // call signed.VerifyKeySignature(...) - if h, err = keySignatureHash(pk, signed, sig.EmbeddedSignature.Hash); err != nil { - return errors.StructuralError("error while hashing for cross-signature: " + err.Error()) - } - if err := signed.VerifySignature(h, sig.EmbeddedSignature); err != nil { - return errors.StructuralError("error while verifying cross-signature: " + err.Error()) - } - } - - return nil -} - -func keyRevocationHash(pk signingKey, hashFunc crypto.Hash) (h hash.Hash, err error) { - if !hashFunc.Available() { - return nil, errors.UnsupportedError("hash function") - } - h = hashFunc.New() - - // RFC 4880, section 5.2.4 - pk.SerializeSignaturePrefix(h) - pk.serializeWithoutHeaders(h) - - return -} - -// VerifyRevocationSignature returns nil iff sig is a valid signature, made by this -// public key. -func (pk *PublicKey) VerifyRevocationSignature(sig *Signature) (err error) { - h, err := keyRevocationHash(pk, sig.Hash) - if err != nil { - return err - } - return pk.VerifySignature(h, sig) -} - -// userIdSignatureHash returns a Hash of the message that needs to be signed -// to assert that pk is a valid key for id. -func userIdSignatureHash(id string, pk *PublicKey, hashFunc crypto.Hash) (h hash.Hash, err error) { - if !hashFunc.Available() { - return nil, errors.UnsupportedError("hash function") - } - h = hashFunc.New() - - // RFC 4880, section 5.2.4 - pk.SerializeSignaturePrefix(h) - pk.serializeWithoutHeaders(h) - - var buf [5]byte - buf[0] = 0xb4 - buf[1] = byte(len(id) >> 24) - buf[2] = byte(len(id) >> 16) - buf[3] = byte(len(id) >> 8) - buf[4] = byte(len(id)) - h.Write(buf[:]) - h.Write([]byte(id)) - - return -} - -// VerifyUserIdSignature returns nil iff sig is a valid signature, made by this -// public key, that id is the identity of pub. -func (pk *PublicKey) VerifyUserIdSignature(id string, pub *PublicKey, sig *Signature) (err error) { - h, err := userIdSignatureHash(id, pub, sig.Hash) - if err != nil { - return err - } - return pk.VerifySignature(h, sig) -} - -// VerifyUserIdSignatureV3 returns nil iff sig is a valid signature, made by this -// public key, that id is the identity of pub. -func (pk *PublicKey) VerifyUserIdSignatureV3(id string, pub *PublicKey, sig *SignatureV3) (err error) { - h, err := userIdSignatureV3Hash(id, pub, sig.Hash) - if err != nil { - return err - } - return pk.VerifySignatureV3(h, sig) -} - -// KeyIdString returns the public key's fingerprint in capital hex -// (e.g. "6C7EE1B8621CC013"). -func (pk *PublicKey) KeyIdString() string { - return fmt.Sprintf("%X", pk.Fingerprint[12:20]) -} - -// KeyIdShortString returns the short form of public key's fingerprint -// in capital hex, as shown by gpg --list-keys (e.g. "621CC013"). -func (pk *PublicKey) KeyIdShortString() string { - return fmt.Sprintf("%X", pk.Fingerprint[16:20]) -} - -// A parsedMPI is used to store the contents of a big integer, along with the -// bit length that was specified in the original input. This allows the MPI to -// be reserialized exactly. -type parsedMPI struct { - bytes []byte - bitLength uint16 -} - -// writeMPIs is a utility function for serializing several big integers to the -// given Writer. -func writeMPIs(w io.Writer, mpis ...parsedMPI) (err error) { - for _, mpi := range mpis { - err = writeMPI(w, mpi.bitLength, mpi.bytes) - if err != nil { - return - } - } - return -} - -// BitLength returns the bit length for the given public key. -func (pk *PublicKey) BitLength() (bitLength uint16, err error) { - switch pk.PubKeyAlgo { - case PubKeyAlgoRSA, PubKeyAlgoRSAEncryptOnly, PubKeyAlgoRSASignOnly: - bitLength = pk.n.bitLength - case PubKeyAlgoDSA: - bitLength = pk.p.bitLength - case PubKeyAlgoElGamal: - bitLength = pk.p.bitLength - default: - err = errors.InvalidArgumentError("bad public-key algorithm") - } - return -} diff --git a/vendor/golang.org/x/crypto/openpgp/packet/public_key_v3.go b/vendor/golang.org/x/crypto/openpgp/packet/public_key_v3.go deleted file mode 100644 index 5daf7b6..0000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/public_key_v3.go +++ /dev/null @@ -1,279 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package packet - -import ( - "crypto" - "crypto/md5" - "crypto/rsa" - "encoding/binary" - "fmt" - "hash" - "io" - "math/big" - "strconv" - "time" - - "golang.org/x/crypto/openpgp/errors" -) - -// PublicKeyV3 represents older, version 3 public keys. These keys are less secure and -// should not be used for signing or encrypting. They are supported here only for -// parsing version 3 key material and validating signatures. -// See RFC 4880, section 5.5.2. -type PublicKeyV3 struct { - CreationTime time.Time - DaysToExpire uint16 - PubKeyAlgo PublicKeyAlgorithm - PublicKey *rsa.PublicKey - Fingerprint [16]byte - KeyId uint64 - IsSubkey bool - - n, e parsedMPI -} - -// newRSAPublicKeyV3 returns a PublicKey that wraps the given rsa.PublicKey. -// Included here for testing purposes only. RFC 4880, section 5.5.2: -// "an implementation MUST NOT generate a V3 key, but MAY accept it." -func newRSAPublicKeyV3(creationTime time.Time, pub *rsa.PublicKey) *PublicKeyV3 { - pk := &PublicKeyV3{ - CreationTime: creationTime, - PublicKey: pub, - n: fromBig(pub.N), - e: fromBig(big.NewInt(int64(pub.E))), - } - - pk.setFingerPrintAndKeyId() - return pk -} - -func (pk *PublicKeyV3) parse(r io.Reader) (err error) { - // RFC 4880, section 5.5.2 - var buf [8]byte - if _, err = readFull(r, buf[:]); err != nil { - return - } - if buf[0] < 2 || buf[0] > 3 { - return errors.UnsupportedError("public key version") - } - pk.CreationTime = time.Unix(int64(uint32(buf[1])<<24|uint32(buf[2])<<16|uint32(buf[3])<<8|uint32(buf[4])), 0) - pk.DaysToExpire = binary.BigEndian.Uint16(buf[5:7]) - pk.PubKeyAlgo = PublicKeyAlgorithm(buf[7]) - switch pk.PubKeyAlgo { - case PubKeyAlgoRSA, PubKeyAlgoRSAEncryptOnly, PubKeyAlgoRSASignOnly: - err = pk.parseRSA(r) - default: - err = errors.UnsupportedError("public key type: " + strconv.Itoa(int(pk.PubKeyAlgo))) - } - if err != nil { - return - } - - pk.setFingerPrintAndKeyId() - return -} - -func (pk *PublicKeyV3) setFingerPrintAndKeyId() { - // RFC 4880, section 12.2 - fingerPrint := md5.New() - fingerPrint.Write(pk.n.bytes) - fingerPrint.Write(pk.e.bytes) - fingerPrint.Sum(pk.Fingerprint[:0]) - pk.KeyId = binary.BigEndian.Uint64(pk.n.bytes[len(pk.n.bytes)-8:]) -} - -// parseRSA parses RSA public key material from the given Reader. See RFC 4880, -// section 5.5.2. -func (pk *PublicKeyV3) parseRSA(r io.Reader) (err error) { - if pk.n.bytes, pk.n.bitLength, err = readMPI(r); err != nil { - return - } - if pk.e.bytes, pk.e.bitLength, err = readMPI(r); err != nil { - return - } - - // RFC 4880 Section 12.2 requires the low 8 bytes of the - // modulus to form the key id. - if len(pk.n.bytes) < 8 { - return errors.StructuralError("v3 public key modulus is too short") - } - if len(pk.e.bytes) > 3 { - err = errors.UnsupportedError("large public exponent") - return - } - rsa := &rsa.PublicKey{N: new(big.Int).SetBytes(pk.n.bytes)} - for i := 0; i < len(pk.e.bytes); i++ { - rsa.E <<= 8 - rsa.E |= int(pk.e.bytes[i]) - } - pk.PublicKey = rsa - return -} - -// SerializeSignaturePrefix writes the prefix for this public key to the given Writer. -// The prefix is used when calculating a signature over this public key. See -// RFC 4880, section 5.2.4. -func (pk *PublicKeyV3) SerializeSignaturePrefix(w io.Writer) { - var pLength uint16 - switch pk.PubKeyAlgo { - case PubKeyAlgoRSA, PubKeyAlgoRSAEncryptOnly, PubKeyAlgoRSASignOnly: - pLength += 2 + uint16(len(pk.n.bytes)) - pLength += 2 + uint16(len(pk.e.bytes)) - default: - panic("unknown public key algorithm") - } - pLength += 6 - w.Write([]byte{0x99, byte(pLength >> 8), byte(pLength)}) - return -} - -func (pk *PublicKeyV3) Serialize(w io.Writer) (err error) { - length := 8 // 8 byte header - - switch pk.PubKeyAlgo { - case PubKeyAlgoRSA, PubKeyAlgoRSAEncryptOnly, PubKeyAlgoRSASignOnly: - length += 2 + len(pk.n.bytes) - length += 2 + len(pk.e.bytes) - default: - panic("unknown public key algorithm") - } - - packetType := packetTypePublicKey - if pk.IsSubkey { - packetType = packetTypePublicSubkey - } - if err = serializeHeader(w, packetType, length); err != nil { - return - } - return pk.serializeWithoutHeaders(w) -} - -// serializeWithoutHeaders marshals the PublicKey to w in the form of an -// OpenPGP public key packet, not including the packet header. -func (pk *PublicKeyV3) serializeWithoutHeaders(w io.Writer) (err error) { - var buf [8]byte - // Version 3 - buf[0] = 3 - // Creation time - t := uint32(pk.CreationTime.Unix()) - buf[1] = byte(t >> 24) - buf[2] = byte(t >> 16) - buf[3] = byte(t >> 8) - buf[4] = byte(t) - // Days to expire - buf[5] = byte(pk.DaysToExpire >> 8) - buf[6] = byte(pk.DaysToExpire) - // Public key algorithm - buf[7] = byte(pk.PubKeyAlgo) - - if _, err = w.Write(buf[:]); err != nil { - return - } - - switch pk.PubKeyAlgo { - case PubKeyAlgoRSA, PubKeyAlgoRSAEncryptOnly, PubKeyAlgoRSASignOnly: - return writeMPIs(w, pk.n, pk.e) - } - return errors.InvalidArgumentError("bad public-key algorithm") -} - -// CanSign returns true iff this public key can generate signatures -func (pk *PublicKeyV3) CanSign() bool { - return pk.PubKeyAlgo != PubKeyAlgoRSAEncryptOnly -} - -// VerifySignatureV3 returns nil iff sig is a valid signature, made by this -// public key, of the data hashed into signed. signed is mutated by this call. -func (pk *PublicKeyV3) VerifySignatureV3(signed hash.Hash, sig *SignatureV3) (err error) { - if !pk.CanSign() { - return errors.InvalidArgumentError("public key cannot generate signatures") - } - - suffix := make([]byte, 5) - suffix[0] = byte(sig.SigType) - binary.BigEndian.PutUint32(suffix[1:], uint32(sig.CreationTime.Unix())) - signed.Write(suffix) - hashBytes := signed.Sum(nil) - - if hashBytes[0] != sig.HashTag[0] || hashBytes[1] != sig.HashTag[1] { - return errors.SignatureError("hash tag doesn't match") - } - - if pk.PubKeyAlgo != sig.PubKeyAlgo { - return errors.InvalidArgumentError("public key and signature use different algorithms") - } - - switch pk.PubKeyAlgo { - case PubKeyAlgoRSA, PubKeyAlgoRSASignOnly: - if err = rsa.VerifyPKCS1v15(pk.PublicKey, sig.Hash, hashBytes, sig.RSASignature.bytes); err != nil { - return errors.SignatureError("RSA verification failure") - } - return - default: - // V3 public keys only support RSA. - panic("shouldn't happen") - } -} - -// VerifyUserIdSignatureV3 returns nil iff sig is a valid signature, made by this -// public key, that id is the identity of pub. -func (pk *PublicKeyV3) VerifyUserIdSignatureV3(id string, pub *PublicKeyV3, sig *SignatureV3) (err error) { - h, err := userIdSignatureV3Hash(id, pk, sig.Hash) - if err != nil { - return err - } - return pk.VerifySignatureV3(h, sig) -} - -// VerifyKeySignatureV3 returns nil iff sig is a valid signature, made by this -// public key, of signed. -func (pk *PublicKeyV3) VerifyKeySignatureV3(signed *PublicKeyV3, sig *SignatureV3) (err error) { - h, err := keySignatureHash(pk, signed, sig.Hash) - if err != nil { - return err - } - return pk.VerifySignatureV3(h, sig) -} - -// userIdSignatureV3Hash returns a Hash of the message that needs to be signed -// to assert that pk is a valid key for id. -func userIdSignatureV3Hash(id string, pk signingKey, hfn crypto.Hash) (h hash.Hash, err error) { - if !hfn.Available() { - return nil, errors.UnsupportedError("hash function") - } - h = hfn.New() - - // RFC 4880, section 5.2.4 - pk.SerializeSignaturePrefix(h) - pk.serializeWithoutHeaders(h) - - h.Write([]byte(id)) - - return -} - -// KeyIdString returns the public key's fingerprint in capital hex -// (e.g. "6C7EE1B8621CC013"). -func (pk *PublicKeyV3) KeyIdString() string { - return fmt.Sprintf("%X", pk.KeyId) -} - -// KeyIdShortString returns the short form of public key's fingerprint -// in capital hex, as shown by gpg --list-keys (e.g. "621CC013"). -func (pk *PublicKeyV3) KeyIdShortString() string { - return fmt.Sprintf("%X", pk.KeyId&0xFFFFFFFF) -} - -// BitLength returns the bit length for the given public key. -func (pk *PublicKeyV3) BitLength() (bitLength uint16, err error) { - switch pk.PubKeyAlgo { - case PubKeyAlgoRSA, PubKeyAlgoRSAEncryptOnly, PubKeyAlgoRSASignOnly: - bitLength = pk.n.bitLength - default: - err = errors.InvalidArgumentError("bad public-key algorithm") - } - return -} diff --git a/vendor/golang.org/x/crypto/openpgp/packet/reader.go b/vendor/golang.org/x/crypto/openpgp/packet/reader.go deleted file mode 100644 index 34bc7c6..0000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/reader.go +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright 2011 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 packet - -import ( - "golang.org/x/crypto/openpgp/errors" - "io" -) - -// Reader reads packets from an io.Reader and allows packets to be 'unread' so -// that they result from the next call to Next. -type Reader struct { - q []Packet - readers []io.Reader -} - -// New io.Readers are pushed when a compressed or encrypted packet is processed -// and recursively treated as a new source of packets. However, a carefully -// crafted packet can trigger an infinite recursive sequence of packets. See -// http://mumble.net/~campbell/misc/pgp-quine -// https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2013-4402 -// This constant limits the number of recursive packets that may be pushed. -const maxReaders = 32 - -// Next returns the most recently unread Packet, or reads another packet from -// the top-most io.Reader. Unknown packet types are skipped. -func (r *Reader) Next() (p Packet, err error) { - if len(r.q) > 0 { - p = r.q[len(r.q)-1] - r.q = r.q[:len(r.q)-1] - return - } - - for len(r.readers) > 0 { - p, err = Read(r.readers[len(r.readers)-1]) - if err == nil { - return - } - if err == io.EOF { - r.readers = r.readers[:len(r.readers)-1] - continue - } - if _, ok := err.(errors.UnknownPacketTypeError); !ok { - return nil, err - } - } - - return nil, io.EOF -} - -// Push causes the Reader to start reading from a new io.Reader. When an EOF -// error is seen from the new io.Reader, it is popped and the Reader continues -// to read from the next most recent io.Reader. Push returns a StructuralError -// if pushing the reader would exceed the maximum recursion level, otherwise it -// returns nil. -func (r *Reader) Push(reader io.Reader) (err error) { - if len(r.readers) >= maxReaders { - return errors.StructuralError("too many layers of packets") - } - r.readers = append(r.readers, reader) - return nil -} - -// Unread causes the given Packet to be returned from the next call to Next. -func (r *Reader) Unread(p Packet) { - r.q = append(r.q, p) -} - -func NewReader(r io.Reader) *Reader { - return &Reader{ - q: nil, - readers: []io.Reader{r}, - } -} diff --git a/vendor/golang.org/x/crypto/openpgp/packet/signature.go b/vendor/golang.org/x/crypto/openpgp/packet/signature.go deleted file mode 100644 index b2a24a5..0000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/signature.go +++ /dev/null @@ -1,731 +0,0 @@ -// Copyright 2011 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 packet - -import ( - "bytes" - "crypto" - "crypto/dsa" - "crypto/ecdsa" - "encoding/asn1" - "encoding/binary" - "hash" - "io" - "math/big" - "strconv" - "time" - - "golang.org/x/crypto/openpgp/errors" - "golang.org/x/crypto/openpgp/s2k" -) - -const ( - // See RFC 4880, section 5.2.3.21 for details. - KeyFlagCertify = 1 << iota - KeyFlagSign - KeyFlagEncryptCommunications - KeyFlagEncryptStorage -) - -// Signature represents a signature. See RFC 4880, section 5.2. -type Signature struct { - SigType SignatureType - PubKeyAlgo PublicKeyAlgorithm - Hash crypto.Hash - - // HashSuffix is extra data that is hashed in after the signed data. - HashSuffix []byte - // HashTag contains the first two bytes of the hash for fast rejection - // of bad signed data. - HashTag [2]byte - CreationTime time.Time - - RSASignature parsedMPI - DSASigR, DSASigS parsedMPI - ECDSASigR, ECDSASigS parsedMPI - - // rawSubpackets contains the unparsed subpackets, in order. - rawSubpackets []outputSubpacket - - // The following are optional so are nil when not included in the - // signature. - - SigLifetimeSecs, KeyLifetimeSecs *uint32 - PreferredSymmetric, PreferredHash, PreferredCompression []uint8 - IssuerKeyId *uint64 - IsPrimaryId *bool - - // FlagsValid is set if any flags were given. See RFC 4880, section - // 5.2.3.21 for details. - FlagsValid bool - FlagCertify, FlagSign, FlagEncryptCommunications, FlagEncryptStorage bool - - // RevocationReason is set if this signature has been revoked. - // See RFC 4880, section 5.2.3.23 for details. - RevocationReason *uint8 - RevocationReasonText string - - // MDC is set if this signature has a feature packet that indicates - // support for MDC subpackets. - MDC bool - - // EmbeddedSignature, if non-nil, is a signature of the parent key, by - // this key. This prevents an attacker from claiming another's signing - // subkey as their own. - EmbeddedSignature *Signature - - outSubpackets []outputSubpacket -} - -func (sig *Signature) parse(r io.Reader) (err error) { - // RFC 4880, section 5.2.3 - var buf [5]byte - _, err = readFull(r, buf[:1]) - if err != nil { - return - } - if buf[0] != 4 { - err = errors.UnsupportedError("signature packet version " + strconv.Itoa(int(buf[0]))) - return - } - - _, err = readFull(r, buf[:5]) - if err != nil { - return - } - sig.SigType = SignatureType(buf[0]) - sig.PubKeyAlgo = PublicKeyAlgorithm(buf[1]) - switch sig.PubKeyAlgo { - case PubKeyAlgoRSA, PubKeyAlgoRSASignOnly, PubKeyAlgoDSA, PubKeyAlgoECDSA: - default: - err = errors.UnsupportedError("public key algorithm " + strconv.Itoa(int(sig.PubKeyAlgo))) - return - } - - var ok bool - sig.Hash, ok = s2k.HashIdToHash(buf[2]) - if !ok { - return errors.UnsupportedError("hash function " + strconv.Itoa(int(buf[2]))) - } - - hashedSubpacketsLength := int(buf[3])<<8 | int(buf[4]) - l := 6 + hashedSubpacketsLength - sig.HashSuffix = make([]byte, l+6) - sig.HashSuffix[0] = 4 - copy(sig.HashSuffix[1:], buf[:5]) - hashedSubpackets := sig.HashSuffix[6:l] - _, err = readFull(r, hashedSubpackets) - if err != nil { - return - } - // See RFC 4880, section 5.2.4 - trailer := sig.HashSuffix[l:] - trailer[0] = 4 - trailer[1] = 0xff - trailer[2] = uint8(l >> 24) - trailer[3] = uint8(l >> 16) - trailer[4] = uint8(l >> 8) - trailer[5] = uint8(l) - - err = parseSignatureSubpackets(sig, hashedSubpackets, true) - if err != nil { - return - } - - _, err = readFull(r, buf[:2]) - if err != nil { - return - } - unhashedSubpacketsLength := int(buf[0])<<8 | int(buf[1]) - unhashedSubpackets := make([]byte, unhashedSubpacketsLength) - _, err = readFull(r, unhashedSubpackets) - if err != nil { - return - } - err = parseSignatureSubpackets(sig, unhashedSubpackets, false) - if err != nil { - return - } - - _, err = readFull(r, sig.HashTag[:2]) - if err != nil { - return - } - - switch sig.PubKeyAlgo { - case PubKeyAlgoRSA, PubKeyAlgoRSASignOnly: - sig.RSASignature.bytes, sig.RSASignature.bitLength, err = readMPI(r) - case PubKeyAlgoDSA: - sig.DSASigR.bytes, sig.DSASigR.bitLength, err = readMPI(r) - if err == nil { - sig.DSASigS.bytes, sig.DSASigS.bitLength, err = readMPI(r) - } - case PubKeyAlgoECDSA: - sig.ECDSASigR.bytes, sig.ECDSASigR.bitLength, err = readMPI(r) - if err == nil { - sig.ECDSASigS.bytes, sig.ECDSASigS.bitLength, err = readMPI(r) - } - default: - panic("unreachable") - } - return -} - -// parseSignatureSubpackets parses subpackets of the main signature packet. See -// RFC 4880, section 5.2.3.1. -func parseSignatureSubpackets(sig *Signature, subpackets []byte, isHashed bool) (err error) { - for len(subpackets) > 0 { - subpackets, err = parseSignatureSubpacket(sig, subpackets, isHashed) - if err != nil { - return - } - } - - if sig.CreationTime.IsZero() { - err = errors.StructuralError("no creation time in signature") - } - - return -} - -type signatureSubpacketType uint8 - -const ( - creationTimeSubpacket signatureSubpacketType = 2 - signatureExpirationSubpacket signatureSubpacketType = 3 - keyExpirationSubpacket signatureSubpacketType = 9 - prefSymmetricAlgosSubpacket signatureSubpacketType = 11 - issuerSubpacket signatureSubpacketType = 16 - prefHashAlgosSubpacket signatureSubpacketType = 21 - prefCompressionSubpacket signatureSubpacketType = 22 - primaryUserIdSubpacket signatureSubpacketType = 25 - keyFlagsSubpacket signatureSubpacketType = 27 - reasonForRevocationSubpacket signatureSubpacketType = 29 - featuresSubpacket signatureSubpacketType = 30 - embeddedSignatureSubpacket signatureSubpacketType = 32 -) - -// parseSignatureSubpacket parses a single subpacket. len(subpacket) is >= 1. -func parseSignatureSubpacket(sig *Signature, subpacket []byte, isHashed bool) (rest []byte, err error) { - // RFC 4880, section 5.2.3.1 - var ( - length uint32 - packetType signatureSubpacketType - isCritical bool - ) - switch { - case subpacket[0] < 192: - length = uint32(subpacket[0]) - subpacket = subpacket[1:] - case subpacket[0] < 255: - if len(subpacket) < 2 { - goto Truncated - } - length = uint32(subpacket[0]-192)<<8 + uint32(subpacket[1]) + 192 - subpacket = subpacket[2:] - default: - if len(subpacket) < 5 { - goto Truncated - } - length = uint32(subpacket[1])<<24 | - uint32(subpacket[2])<<16 | - uint32(subpacket[3])<<8 | - uint32(subpacket[4]) - subpacket = subpacket[5:] - } - if length > uint32(len(subpacket)) { - goto Truncated - } - rest = subpacket[length:] - subpacket = subpacket[:length] - if len(subpacket) == 0 { - err = errors.StructuralError("zero length signature subpacket") - return - } - packetType = signatureSubpacketType(subpacket[0] & 0x7f) - isCritical = subpacket[0]&0x80 == 0x80 - subpacket = subpacket[1:] - sig.rawSubpackets = append(sig.rawSubpackets, outputSubpacket{isHashed, packetType, isCritical, subpacket}) - switch packetType { - case creationTimeSubpacket: - if !isHashed { - err = errors.StructuralError("signature creation time in non-hashed area") - return - } - if len(subpacket) != 4 { - err = errors.StructuralError("signature creation time not four bytes") - return - } - t := binary.BigEndian.Uint32(subpacket) - sig.CreationTime = time.Unix(int64(t), 0) - case signatureExpirationSubpacket: - // Signature expiration time, section 5.2.3.10 - if !isHashed { - return - } - if len(subpacket) != 4 { - err = errors.StructuralError("expiration subpacket with bad length") - return - } - sig.SigLifetimeSecs = new(uint32) - *sig.SigLifetimeSecs = binary.BigEndian.Uint32(subpacket) - case keyExpirationSubpacket: - // Key expiration time, section 5.2.3.6 - if !isHashed { - return - } - if len(subpacket) != 4 { - err = errors.StructuralError("key expiration subpacket with bad length") - return - } - sig.KeyLifetimeSecs = new(uint32) - *sig.KeyLifetimeSecs = binary.BigEndian.Uint32(subpacket) - case prefSymmetricAlgosSubpacket: - // Preferred symmetric algorithms, section 5.2.3.7 - if !isHashed { - return - } - sig.PreferredSymmetric = make([]byte, len(subpacket)) - copy(sig.PreferredSymmetric, subpacket) - case issuerSubpacket: - // Issuer, section 5.2.3.5 - if len(subpacket) != 8 { - err = errors.StructuralError("issuer subpacket with bad length") - return - } - sig.IssuerKeyId = new(uint64) - *sig.IssuerKeyId = binary.BigEndian.Uint64(subpacket) - case prefHashAlgosSubpacket: - // Preferred hash algorithms, section 5.2.3.8 - if !isHashed { - return - } - sig.PreferredHash = make([]byte, len(subpacket)) - copy(sig.PreferredHash, subpacket) - case prefCompressionSubpacket: - // Preferred compression algorithms, section 5.2.3.9 - if !isHashed { - return - } - sig.PreferredCompression = make([]byte, len(subpacket)) - copy(sig.PreferredCompression, subpacket) - case primaryUserIdSubpacket: - // Primary User ID, section 5.2.3.19 - if !isHashed { - return - } - if len(subpacket) != 1 { - err = errors.StructuralError("primary user id subpacket with bad length") - return - } - sig.IsPrimaryId = new(bool) - if subpacket[0] > 0 { - *sig.IsPrimaryId = true - } - case keyFlagsSubpacket: - // Key flags, section 5.2.3.21 - if !isHashed { - return - } - if len(subpacket) == 0 { - err = errors.StructuralError("empty key flags subpacket") - return - } - sig.FlagsValid = true - if subpacket[0]&KeyFlagCertify != 0 { - sig.FlagCertify = true - } - if subpacket[0]&KeyFlagSign != 0 { - sig.FlagSign = true - } - if subpacket[0]&KeyFlagEncryptCommunications != 0 { - sig.FlagEncryptCommunications = true - } - if subpacket[0]&KeyFlagEncryptStorage != 0 { - sig.FlagEncryptStorage = true - } - case reasonForRevocationSubpacket: - // Reason For Revocation, section 5.2.3.23 - if !isHashed { - return - } - if len(subpacket) == 0 { - err = errors.StructuralError("empty revocation reason subpacket") - return - } - sig.RevocationReason = new(uint8) - *sig.RevocationReason = subpacket[0] - sig.RevocationReasonText = string(subpacket[1:]) - case featuresSubpacket: - // Features subpacket, section 5.2.3.24 specifies a very general - // mechanism for OpenPGP implementations to signal support for new - // features. In practice, the subpacket is used exclusively to - // indicate support for MDC-protected encryption. - sig.MDC = len(subpacket) >= 1 && subpacket[0]&1 == 1 - case embeddedSignatureSubpacket: - // Only usage is in signatures that cross-certify - // signing subkeys. section 5.2.3.26 describes the - // format, with its usage described in section 11.1 - if sig.EmbeddedSignature != nil { - err = errors.StructuralError("Cannot have multiple embedded signatures") - return - } - sig.EmbeddedSignature = new(Signature) - // Embedded signatures are required to be v4 signatures see - // section 12.1. However, we only parse v4 signatures in this - // file anyway. - if err := sig.EmbeddedSignature.parse(bytes.NewBuffer(subpacket)); err != nil { - return nil, err - } - if sigType := sig.EmbeddedSignature.SigType; sigType != SigTypePrimaryKeyBinding { - return nil, errors.StructuralError("cross-signature has unexpected type " + strconv.Itoa(int(sigType))) - } - default: - if isCritical { - err = errors.UnsupportedError("unknown critical signature subpacket type " + strconv.Itoa(int(packetType))) - return - } - } - return - -Truncated: - err = errors.StructuralError("signature subpacket truncated") - return -} - -// subpacketLengthLength returns the length, in bytes, of an encoded length value. -func subpacketLengthLength(length int) int { - if length < 192 { - return 1 - } - if length < 16320 { - return 2 - } - return 5 -} - -// serializeSubpacketLength marshals the given length into to. -func serializeSubpacketLength(to []byte, length int) int { - // RFC 4880, Section 4.2.2. - if length < 192 { - to[0] = byte(length) - return 1 - } - if length < 16320 { - length -= 192 - to[0] = byte((length >> 8) + 192) - to[1] = byte(length) - return 2 - } - to[0] = 255 - to[1] = byte(length >> 24) - to[2] = byte(length >> 16) - to[3] = byte(length >> 8) - to[4] = byte(length) - return 5 -} - -// subpacketsLength returns the serialized length, in bytes, of the given -// subpackets. -func subpacketsLength(subpackets []outputSubpacket, hashed bool) (length int) { - for _, subpacket := range subpackets { - if subpacket.hashed == hashed { - length += subpacketLengthLength(len(subpacket.contents) + 1) - length += 1 // type byte - length += len(subpacket.contents) - } - } - return -} - -// serializeSubpackets marshals the given subpackets into to. -func serializeSubpackets(to []byte, subpackets []outputSubpacket, hashed bool) { - for _, subpacket := range subpackets { - if subpacket.hashed == hashed { - n := serializeSubpacketLength(to, len(subpacket.contents)+1) - to[n] = byte(subpacket.subpacketType) - to = to[1+n:] - n = copy(to, subpacket.contents) - to = to[n:] - } - } - return -} - -// KeyExpired returns whether sig is a self-signature of a key that has -// expired. -func (sig *Signature) KeyExpired(currentTime time.Time) bool { - if sig.KeyLifetimeSecs == nil { - return false - } - expiry := sig.CreationTime.Add(time.Duration(*sig.KeyLifetimeSecs) * time.Second) - return currentTime.After(expiry) -} - -// buildHashSuffix constructs the HashSuffix member of sig in preparation for signing. -func (sig *Signature) buildHashSuffix() (err error) { - hashedSubpacketsLen := subpacketsLength(sig.outSubpackets, true) - - var ok bool - l := 6 + hashedSubpacketsLen - sig.HashSuffix = make([]byte, l+6) - sig.HashSuffix[0] = 4 - sig.HashSuffix[1] = uint8(sig.SigType) - sig.HashSuffix[2] = uint8(sig.PubKeyAlgo) - sig.HashSuffix[3], ok = s2k.HashToHashId(sig.Hash) - if !ok { - sig.HashSuffix = nil - return errors.InvalidArgumentError("hash cannot be represented in OpenPGP: " + strconv.Itoa(int(sig.Hash))) - } - sig.HashSuffix[4] = byte(hashedSubpacketsLen >> 8) - sig.HashSuffix[5] = byte(hashedSubpacketsLen) - serializeSubpackets(sig.HashSuffix[6:l], sig.outSubpackets, true) - trailer := sig.HashSuffix[l:] - trailer[0] = 4 - trailer[1] = 0xff - trailer[2] = byte(l >> 24) - trailer[3] = byte(l >> 16) - trailer[4] = byte(l >> 8) - trailer[5] = byte(l) - return -} - -func (sig *Signature) signPrepareHash(h hash.Hash) (digest []byte, err error) { - err = sig.buildHashSuffix() - if err != nil { - return - } - - h.Write(sig.HashSuffix) - digest = h.Sum(nil) - copy(sig.HashTag[:], digest) - return -} - -// Sign signs a message with a private key. The hash, h, must contain -// the hash of the message to be signed and will be mutated by this function. -// On success, the signature is stored in sig. Call Serialize to write it out. -// If config is nil, sensible defaults will be used. -func (sig *Signature) Sign(h hash.Hash, priv *PrivateKey, config *Config) (err error) { - sig.outSubpackets = sig.buildSubpackets() - digest, err := sig.signPrepareHash(h) - if err != nil { - return - } - - switch priv.PubKeyAlgo { - case PubKeyAlgoRSA, PubKeyAlgoRSASignOnly: - // supports both *rsa.PrivateKey and crypto.Signer - sig.RSASignature.bytes, err = priv.PrivateKey.(crypto.Signer).Sign(config.Random(), digest, sig.Hash) - sig.RSASignature.bitLength = uint16(8 * len(sig.RSASignature.bytes)) - case PubKeyAlgoDSA: - dsaPriv := priv.PrivateKey.(*dsa.PrivateKey) - - // Need to truncate hashBytes to match FIPS 186-3 section 4.6. - subgroupSize := (dsaPriv.Q.BitLen() + 7) / 8 - if len(digest) > subgroupSize { - digest = digest[:subgroupSize] - } - r, s, err := dsa.Sign(config.Random(), dsaPriv, digest) - if err == nil { - sig.DSASigR.bytes = r.Bytes() - sig.DSASigR.bitLength = uint16(8 * len(sig.DSASigR.bytes)) - sig.DSASigS.bytes = s.Bytes() - sig.DSASigS.bitLength = uint16(8 * len(sig.DSASigS.bytes)) - } - case PubKeyAlgoECDSA: - var r, s *big.Int - if pk, ok := priv.PrivateKey.(*ecdsa.PrivateKey); ok { - // direct support, avoid asn1 wrapping/unwrapping - r, s, err = ecdsa.Sign(config.Random(), pk, digest) - } else { - var b []byte - b, err = priv.PrivateKey.(crypto.Signer).Sign(config.Random(), digest, sig.Hash) - if err == nil { - r, s, err = unwrapECDSASig(b) - } - } - if err == nil { - sig.ECDSASigR = fromBig(r) - sig.ECDSASigS = fromBig(s) - } - default: - err = errors.UnsupportedError("public key algorithm: " + strconv.Itoa(int(sig.PubKeyAlgo))) - } - - return -} - -// unwrapECDSASig parses the two integer components of an ASN.1-encoded ECDSA -// signature. -func unwrapECDSASig(b []byte) (r, s *big.Int, err error) { - var ecsdaSig struct { - R, S *big.Int - } - _, err = asn1.Unmarshal(b, &ecsdaSig) - if err != nil { - return - } - return ecsdaSig.R, ecsdaSig.S, nil -} - -// SignUserId computes a signature from priv, asserting that pub is a valid -// key for the identity id. On success, the signature is stored in sig. Call -// Serialize to write it out. -// If config is nil, sensible defaults will be used. -func (sig *Signature) SignUserId(id string, pub *PublicKey, priv *PrivateKey, config *Config) error { - h, err := userIdSignatureHash(id, pub, sig.Hash) - if err != nil { - return err - } - return sig.Sign(h, priv, config) -} - -// SignKey computes a signature from priv, asserting that pub is a subkey. On -// success, the signature is stored in sig. Call Serialize to write it out. -// If config is nil, sensible defaults will be used. -func (sig *Signature) SignKey(pub *PublicKey, priv *PrivateKey, config *Config) error { - h, err := keySignatureHash(&priv.PublicKey, pub, sig.Hash) - if err != nil { - return err - } - return sig.Sign(h, priv, config) -} - -// Serialize marshals sig to w. Sign, SignUserId or SignKey must have been -// called first. -func (sig *Signature) Serialize(w io.Writer) (err error) { - if len(sig.outSubpackets) == 0 { - sig.outSubpackets = sig.rawSubpackets - } - if sig.RSASignature.bytes == nil && sig.DSASigR.bytes == nil && sig.ECDSASigR.bytes == nil { - return errors.InvalidArgumentError("Signature: need to call Sign, SignUserId or SignKey before Serialize") - } - - sigLength := 0 - switch sig.PubKeyAlgo { - case PubKeyAlgoRSA, PubKeyAlgoRSASignOnly: - sigLength = 2 + len(sig.RSASignature.bytes) - case PubKeyAlgoDSA: - sigLength = 2 + len(sig.DSASigR.bytes) - sigLength += 2 + len(sig.DSASigS.bytes) - case PubKeyAlgoECDSA: - sigLength = 2 + len(sig.ECDSASigR.bytes) - sigLength += 2 + len(sig.ECDSASigS.bytes) - default: - panic("impossible") - } - - unhashedSubpacketsLen := subpacketsLength(sig.outSubpackets, false) - length := len(sig.HashSuffix) - 6 /* trailer not included */ + - 2 /* length of unhashed subpackets */ + unhashedSubpacketsLen + - 2 /* hash tag */ + sigLength - err = serializeHeader(w, packetTypeSignature, length) - if err != nil { - return - } - - _, err = w.Write(sig.HashSuffix[:len(sig.HashSuffix)-6]) - if err != nil { - return - } - - unhashedSubpackets := make([]byte, 2+unhashedSubpacketsLen) - unhashedSubpackets[0] = byte(unhashedSubpacketsLen >> 8) - unhashedSubpackets[1] = byte(unhashedSubpacketsLen) - serializeSubpackets(unhashedSubpackets[2:], sig.outSubpackets, false) - - _, err = w.Write(unhashedSubpackets) - if err != nil { - return - } - _, err = w.Write(sig.HashTag[:]) - if err != nil { - return - } - - switch sig.PubKeyAlgo { - case PubKeyAlgoRSA, PubKeyAlgoRSASignOnly: - err = writeMPIs(w, sig.RSASignature) - case PubKeyAlgoDSA: - err = writeMPIs(w, sig.DSASigR, sig.DSASigS) - case PubKeyAlgoECDSA: - err = writeMPIs(w, sig.ECDSASigR, sig.ECDSASigS) - default: - panic("impossible") - } - return -} - -// outputSubpacket represents a subpacket to be marshaled. -type outputSubpacket struct { - hashed bool // true if this subpacket is in the hashed area. - subpacketType signatureSubpacketType - isCritical bool - contents []byte -} - -func (sig *Signature) buildSubpackets() (subpackets []outputSubpacket) { - creationTime := make([]byte, 4) - binary.BigEndian.PutUint32(creationTime, uint32(sig.CreationTime.Unix())) - subpackets = append(subpackets, outputSubpacket{true, creationTimeSubpacket, false, creationTime}) - - if sig.IssuerKeyId != nil { - keyId := make([]byte, 8) - binary.BigEndian.PutUint64(keyId, *sig.IssuerKeyId) - subpackets = append(subpackets, outputSubpacket{true, issuerSubpacket, false, keyId}) - } - - if sig.SigLifetimeSecs != nil && *sig.SigLifetimeSecs != 0 { - sigLifetime := make([]byte, 4) - binary.BigEndian.PutUint32(sigLifetime, *sig.SigLifetimeSecs) - subpackets = append(subpackets, outputSubpacket{true, signatureExpirationSubpacket, true, sigLifetime}) - } - - // Key flags may only appear in self-signatures or certification signatures. - - if sig.FlagsValid { - var flags byte - if sig.FlagCertify { - flags |= KeyFlagCertify - } - if sig.FlagSign { - flags |= KeyFlagSign - } - if sig.FlagEncryptCommunications { - flags |= KeyFlagEncryptCommunications - } - if sig.FlagEncryptStorage { - flags |= KeyFlagEncryptStorage - } - subpackets = append(subpackets, outputSubpacket{true, keyFlagsSubpacket, false, []byte{flags}}) - } - - // The following subpackets may only appear in self-signatures - - if sig.KeyLifetimeSecs != nil && *sig.KeyLifetimeSecs != 0 { - keyLifetime := make([]byte, 4) - binary.BigEndian.PutUint32(keyLifetime, *sig.KeyLifetimeSecs) - subpackets = append(subpackets, outputSubpacket{true, keyExpirationSubpacket, true, keyLifetime}) - } - - if sig.IsPrimaryId != nil && *sig.IsPrimaryId { - subpackets = append(subpackets, outputSubpacket{true, primaryUserIdSubpacket, false, []byte{1}}) - } - - if len(sig.PreferredSymmetric) > 0 { - subpackets = append(subpackets, outputSubpacket{true, prefSymmetricAlgosSubpacket, false, sig.PreferredSymmetric}) - } - - if len(sig.PreferredHash) > 0 { - subpackets = append(subpackets, outputSubpacket{true, prefHashAlgosSubpacket, false, sig.PreferredHash}) - } - - if len(sig.PreferredCompression) > 0 { - subpackets = append(subpackets, outputSubpacket{true, prefCompressionSubpacket, false, sig.PreferredCompression}) - } - - return -} diff --git a/vendor/golang.org/x/crypto/openpgp/packet/signature_v3.go b/vendor/golang.org/x/crypto/openpgp/packet/signature_v3.go deleted file mode 100644 index 6edff88..0000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/signature_v3.go +++ /dev/null @@ -1,146 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package packet - -import ( - "crypto" - "encoding/binary" - "fmt" - "io" - "strconv" - "time" - - "golang.org/x/crypto/openpgp/errors" - "golang.org/x/crypto/openpgp/s2k" -) - -// SignatureV3 represents older version 3 signatures. These signatures are less secure -// than version 4 and should not be used to create new signatures. They are included -// here for backwards compatibility to read and validate with older key material. -// See RFC 4880, section 5.2.2. -type SignatureV3 struct { - SigType SignatureType - CreationTime time.Time - IssuerKeyId uint64 - PubKeyAlgo PublicKeyAlgorithm - Hash crypto.Hash - HashTag [2]byte - - RSASignature parsedMPI - DSASigR, DSASigS parsedMPI -} - -func (sig *SignatureV3) parse(r io.Reader) (err error) { - // RFC 4880, section 5.2.2 - var buf [8]byte - if _, err = readFull(r, buf[:1]); err != nil { - return - } - if buf[0] < 2 || buf[0] > 3 { - err = errors.UnsupportedError("signature packet version " + strconv.Itoa(int(buf[0]))) - return - } - if _, err = readFull(r, buf[:1]); err != nil { - return - } - if buf[0] != 5 { - err = errors.UnsupportedError( - "invalid hashed material length " + strconv.Itoa(int(buf[0]))) - return - } - - // Read hashed material: signature type + creation time - if _, err = readFull(r, buf[:5]); err != nil { - return - } - sig.SigType = SignatureType(buf[0]) - t := binary.BigEndian.Uint32(buf[1:5]) - sig.CreationTime = time.Unix(int64(t), 0) - - // Eight-octet Key ID of signer. - if _, err = readFull(r, buf[:8]); err != nil { - return - } - sig.IssuerKeyId = binary.BigEndian.Uint64(buf[:]) - - // Public-key and hash algorithm - if _, err = readFull(r, buf[:2]); err != nil { - return - } - sig.PubKeyAlgo = PublicKeyAlgorithm(buf[0]) - switch sig.PubKeyAlgo { - case PubKeyAlgoRSA, PubKeyAlgoRSASignOnly, PubKeyAlgoDSA: - default: - err = errors.UnsupportedError("public key algorithm " + strconv.Itoa(int(sig.PubKeyAlgo))) - return - } - var ok bool - if sig.Hash, ok = s2k.HashIdToHash(buf[1]); !ok { - return errors.UnsupportedError("hash function " + strconv.Itoa(int(buf[2]))) - } - - // Two-octet field holding left 16 bits of signed hash value. - if _, err = readFull(r, sig.HashTag[:2]); err != nil { - return - } - - switch sig.PubKeyAlgo { - case PubKeyAlgoRSA, PubKeyAlgoRSASignOnly: - sig.RSASignature.bytes, sig.RSASignature.bitLength, err = readMPI(r) - case PubKeyAlgoDSA: - if sig.DSASigR.bytes, sig.DSASigR.bitLength, err = readMPI(r); err != nil { - return - } - sig.DSASigS.bytes, sig.DSASigS.bitLength, err = readMPI(r) - default: - panic("unreachable") - } - return -} - -// Serialize marshals sig to w. Sign, SignUserId or SignKey must have been -// called first. -func (sig *SignatureV3) Serialize(w io.Writer) (err error) { - buf := make([]byte, 8) - - // Write the sig type and creation time - buf[0] = byte(sig.SigType) - binary.BigEndian.PutUint32(buf[1:5], uint32(sig.CreationTime.Unix())) - if _, err = w.Write(buf[:5]); err != nil { - return - } - - // Write the issuer long key ID - binary.BigEndian.PutUint64(buf[:8], sig.IssuerKeyId) - if _, err = w.Write(buf[:8]); err != nil { - return - } - - // Write public key algorithm, hash ID, and hash value - buf[0] = byte(sig.PubKeyAlgo) - hashId, ok := s2k.HashToHashId(sig.Hash) - if !ok { - return errors.UnsupportedError(fmt.Sprintf("hash function %v", sig.Hash)) - } - buf[1] = hashId - copy(buf[2:4], sig.HashTag[:]) - if _, err = w.Write(buf[:4]); err != nil { - return - } - - if sig.RSASignature.bytes == nil && sig.DSASigR.bytes == nil { - return errors.InvalidArgumentError("Signature: need to call Sign, SignUserId or SignKey before Serialize") - } - - switch sig.PubKeyAlgo { - case PubKeyAlgoRSA, PubKeyAlgoRSASignOnly: - err = writeMPIs(w, sig.RSASignature) - case PubKeyAlgoDSA: - err = writeMPIs(w, sig.DSASigR, sig.DSASigS) - default: - panic("impossible") - } - return -} diff --git a/vendor/golang.org/x/crypto/openpgp/packet/symmetric_key_encrypted.go b/vendor/golang.org/x/crypto/openpgp/packet/symmetric_key_encrypted.go deleted file mode 100644 index 744c2d2..0000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/symmetric_key_encrypted.go +++ /dev/null @@ -1,155 +0,0 @@ -// Copyright 2011 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 packet - -import ( - "bytes" - "crypto/cipher" - "io" - "strconv" - - "golang.org/x/crypto/openpgp/errors" - "golang.org/x/crypto/openpgp/s2k" -) - -// This is the largest session key that we'll support. Since no 512-bit cipher -// has even been seriously used, this is comfortably large. -const maxSessionKeySizeInBytes = 64 - -// SymmetricKeyEncrypted represents a passphrase protected session key. See RFC -// 4880, section 5.3. -type SymmetricKeyEncrypted struct { - CipherFunc CipherFunction - s2k func(out, in []byte) - encryptedKey []byte -} - -const symmetricKeyEncryptedVersion = 4 - -func (ske *SymmetricKeyEncrypted) parse(r io.Reader) error { - // RFC 4880, section 5.3. - var buf [2]byte - if _, err := readFull(r, buf[:]); err != nil { - return err - } - if buf[0] != symmetricKeyEncryptedVersion { - return errors.UnsupportedError("SymmetricKeyEncrypted version") - } - ske.CipherFunc = CipherFunction(buf[1]) - - if ske.CipherFunc.KeySize() == 0 { - return errors.UnsupportedError("unknown cipher: " + strconv.Itoa(int(buf[1]))) - } - - var err error - ske.s2k, err = s2k.Parse(r) - if err != nil { - return err - } - - encryptedKey := make([]byte, maxSessionKeySizeInBytes) - // The session key may follow. We just have to try and read to find - // out. If it exists then we limit it to maxSessionKeySizeInBytes. - n, err := readFull(r, encryptedKey) - if err != nil && err != io.ErrUnexpectedEOF { - return err - } - - if n != 0 { - if n == maxSessionKeySizeInBytes { - return errors.UnsupportedError("oversized encrypted session key") - } - ske.encryptedKey = encryptedKey[:n] - } - - return nil -} - -// Decrypt attempts to decrypt an encrypted session key and returns the key and -// the cipher to use when decrypting a subsequent Symmetrically Encrypted Data -// packet. -func (ske *SymmetricKeyEncrypted) Decrypt(passphrase []byte) ([]byte, CipherFunction, error) { - key := make([]byte, ske.CipherFunc.KeySize()) - ske.s2k(key, passphrase) - - if len(ske.encryptedKey) == 0 { - return key, ske.CipherFunc, nil - } - - // the IV is all zeros - iv := make([]byte, ske.CipherFunc.blockSize()) - c := cipher.NewCFBDecrypter(ske.CipherFunc.new(key), iv) - plaintextKey := make([]byte, len(ske.encryptedKey)) - c.XORKeyStream(plaintextKey, ske.encryptedKey) - cipherFunc := CipherFunction(plaintextKey[0]) - if cipherFunc.blockSize() == 0 { - return nil, ske.CipherFunc, errors.UnsupportedError("unknown cipher: " + strconv.Itoa(int(cipherFunc))) - } - plaintextKey = plaintextKey[1:] - if l, cipherKeySize := len(plaintextKey), cipherFunc.KeySize(); l != cipherFunc.KeySize() { - return nil, cipherFunc, errors.StructuralError("length of decrypted key (" + strconv.Itoa(l) + ") " + - "not equal to cipher keysize (" + strconv.Itoa(cipherKeySize) + ")") - } - return plaintextKey, cipherFunc, nil -} - -// SerializeSymmetricKeyEncrypted serializes a symmetric key packet to w. The -// packet contains a random session key, encrypted by a key derived from the -// given passphrase. The session key is returned and must be passed to -// SerializeSymmetricallyEncrypted. -// If config is nil, sensible defaults will be used. -func SerializeSymmetricKeyEncrypted(w io.Writer, passphrase []byte, config *Config) (key []byte, err error) { - cipherFunc := config.Cipher() - keySize := cipherFunc.KeySize() - if keySize == 0 { - return nil, errors.UnsupportedError("unknown cipher: " + strconv.Itoa(int(cipherFunc))) - } - - s2kBuf := new(bytes.Buffer) - keyEncryptingKey := make([]byte, keySize) - // s2k.Serialize salts and stretches the passphrase, and writes the - // resulting key to keyEncryptingKey and the s2k descriptor to s2kBuf. - err = s2k.Serialize(s2kBuf, keyEncryptingKey, config.Random(), passphrase, &s2k.Config{Hash: config.Hash(), S2KCount: config.PasswordHashIterations()}) - if err != nil { - return - } - s2kBytes := s2kBuf.Bytes() - - packetLength := 2 /* header */ + len(s2kBytes) + 1 /* cipher type */ + keySize - err = serializeHeader(w, packetTypeSymmetricKeyEncrypted, packetLength) - if err != nil { - return - } - - var buf [2]byte - buf[0] = symmetricKeyEncryptedVersion - buf[1] = byte(cipherFunc) - _, err = w.Write(buf[:]) - if err != nil { - return - } - _, err = w.Write(s2kBytes) - if err != nil { - return - } - - sessionKey := make([]byte, keySize) - _, err = io.ReadFull(config.Random(), sessionKey) - if err != nil { - return - } - iv := make([]byte, cipherFunc.blockSize()) - c := cipher.NewCFBEncrypter(cipherFunc.new(keyEncryptingKey), iv) - encryptedCipherAndKey := make([]byte, keySize+1) - c.XORKeyStream(encryptedCipherAndKey, buf[1:]) - c.XORKeyStream(encryptedCipherAndKey[1:], sessionKey) - _, err = w.Write(encryptedCipherAndKey) - if err != nil { - return - } - - key = sessionKey - return -} diff --git a/vendor/golang.org/x/crypto/openpgp/packet/symmetrically_encrypted.go b/vendor/golang.org/x/crypto/openpgp/packet/symmetrically_encrypted.go deleted file mode 100644 index 6126030..0000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/symmetrically_encrypted.go +++ /dev/null @@ -1,290 +0,0 @@ -// Copyright 2011 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 packet - -import ( - "crypto/cipher" - "crypto/sha1" - "crypto/subtle" - "golang.org/x/crypto/openpgp/errors" - "hash" - "io" - "strconv" -) - -// SymmetricallyEncrypted represents a symmetrically encrypted byte string. The -// encrypted contents will consist of more OpenPGP packets. See RFC 4880, -// sections 5.7 and 5.13. -type SymmetricallyEncrypted struct { - MDC bool // true iff this is a type 18 packet and thus has an embedded MAC. - contents io.Reader - prefix []byte -} - -const symmetricallyEncryptedVersion = 1 - -func (se *SymmetricallyEncrypted) parse(r io.Reader) error { - if se.MDC { - // See RFC 4880, section 5.13. - var buf [1]byte - _, err := readFull(r, buf[:]) - if err != nil { - return err - } - if buf[0] != symmetricallyEncryptedVersion { - return errors.UnsupportedError("unknown SymmetricallyEncrypted version") - } - } - se.contents = r - return nil -} - -// Decrypt returns a ReadCloser, from which the decrypted contents of the -// packet can be read. An incorrect key can, with high probability, be detected -// immediately and this will result in a KeyIncorrect error being returned. -func (se *SymmetricallyEncrypted) Decrypt(c CipherFunction, key []byte) (io.ReadCloser, error) { - keySize := c.KeySize() - if keySize == 0 { - return nil, errors.UnsupportedError("unknown cipher: " + strconv.Itoa(int(c))) - } - if len(key) != keySize { - return nil, errors.InvalidArgumentError("SymmetricallyEncrypted: incorrect key length") - } - - if se.prefix == nil { - se.prefix = make([]byte, c.blockSize()+2) - _, err := readFull(se.contents, se.prefix) - if err != nil { - return nil, err - } - } else if len(se.prefix) != c.blockSize()+2 { - return nil, errors.InvalidArgumentError("can't try ciphers with different block lengths") - } - - ocfbResync := OCFBResync - if se.MDC { - // MDC packets use a different form of OCFB mode. - ocfbResync = OCFBNoResync - } - - s := NewOCFBDecrypter(c.new(key), se.prefix, ocfbResync) - if s == nil { - return nil, errors.ErrKeyIncorrect - } - - plaintext := cipher.StreamReader{S: s, R: se.contents} - - if se.MDC { - // MDC packets have an embedded hash that we need to check. - h := sha1.New() - h.Write(se.prefix) - return &seMDCReader{in: plaintext, h: h}, nil - } - - // Otherwise, we just need to wrap plaintext so that it's a valid ReadCloser. - return seReader{plaintext}, nil -} - -// seReader wraps an io.Reader with a no-op Close method. -type seReader struct { - in io.Reader -} - -func (ser seReader) Read(buf []byte) (int, error) { - return ser.in.Read(buf) -} - -func (ser seReader) Close() error { - return nil -} - -const mdcTrailerSize = 1 /* tag byte */ + 1 /* length byte */ + sha1.Size - -// An seMDCReader wraps an io.Reader, maintains a running hash and keeps hold -// of the most recent 22 bytes (mdcTrailerSize). Upon EOF, those bytes form an -// MDC packet containing a hash of the previous contents which is checked -// against the running hash. See RFC 4880, section 5.13. -type seMDCReader struct { - in io.Reader - h hash.Hash - trailer [mdcTrailerSize]byte - scratch [mdcTrailerSize]byte - trailerUsed int - error bool - eof bool -} - -func (ser *seMDCReader) Read(buf []byte) (n int, err error) { - if ser.error { - err = io.ErrUnexpectedEOF - return - } - if ser.eof { - err = io.EOF - return - } - - // If we haven't yet filled the trailer buffer then we must do that - // first. - for ser.trailerUsed < mdcTrailerSize { - n, err = ser.in.Read(ser.trailer[ser.trailerUsed:]) - ser.trailerUsed += n - if err == io.EOF { - if ser.trailerUsed != mdcTrailerSize { - n = 0 - err = io.ErrUnexpectedEOF - ser.error = true - return - } - ser.eof = true - n = 0 - return - } - - if err != nil { - n = 0 - return - } - } - - // If it's a short read then we read into a temporary buffer and shift - // the data into the caller's buffer. - if len(buf) <= mdcTrailerSize { - n, err = readFull(ser.in, ser.scratch[:len(buf)]) - copy(buf, ser.trailer[:n]) - ser.h.Write(buf[:n]) - copy(ser.trailer[:], ser.trailer[n:]) - copy(ser.trailer[mdcTrailerSize-n:], ser.scratch[:]) - if n < len(buf) { - ser.eof = true - err = io.EOF - } - return - } - - n, err = ser.in.Read(buf[mdcTrailerSize:]) - copy(buf, ser.trailer[:]) - ser.h.Write(buf[:n]) - copy(ser.trailer[:], buf[n:]) - - if err == io.EOF { - ser.eof = true - } - return -} - -// This is a new-format packet tag byte for a type 19 (MDC) packet. -const mdcPacketTagByte = byte(0x80) | 0x40 | 19 - -func (ser *seMDCReader) Close() error { - if ser.error { - return errors.SignatureError("error during reading") - } - - for !ser.eof { - // We haven't seen EOF so we need to read to the end - var buf [1024]byte - _, err := ser.Read(buf[:]) - if err == io.EOF { - break - } - if err != nil { - return errors.SignatureError("error during reading") - } - } - - if ser.trailer[0] != mdcPacketTagByte || ser.trailer[1] != sha1.Size { - return errors.SignatureError("MDC packet not found") - } - ser.h.Write(ser.trailer[:2]) - - final := ser.h.Sum(nil) - if subtle.ConstantTimeCompare(final, ser.trailer[2:]) != 1 { - return errors.SignatureError("hash mismatch") - } - return nil -} - -// An seMDCWriter writes through to an io.WriteCloser while maintains a running -// hash of the data written. On close, it emits an MDC packet containing the -// running hash. -type seMDCWriter struct { - w io.WriteCloser - h hash.Hash -} - -func (w *seMDCWriter) Write(buf []byte) (n int, err error) { - w.h.Write(buf) - return w.w.Write(buf) -} - -func (w *seMDCWriter) Close() (err error) { - var buf [mdcTrailerSize]byte - - buf[0] = mdcPacketTagByte - buf[1] = sha1.Size - w.h.Write(buf[:2]) - digest := w.h.Sum(nil) - copy(buf[2:], digest) - - _, err = w.w.Write(buf[:]) - if err != nil { - return - } - return w.w.Close() -} - -// noOpCloser is like an ioutil.NopCloser, but for an io.Writer. -type noOpCloser struct { - w io.Writer -} - -func (c noOpCloser) Write(data []byte) (n int, err error) { - return c.w.Write(data) -} - -func (c noOpCloser) Close() error { - return nil -} - -// SerializeSymmetricallyEncrypted serializes a symmetrically encrypted packet -// to w and returns a WriteCloser to which the to-be-encrypted packets can be -// written. -// If config is nil, sensible defaults will be used. -func SerializeSymmetricallyEncrypted(w io.Writer, c CipherFunction, key []byte, config *Config) (contents io.WriteCloser, err error) { - if c.KeySize() != len(key) { - return nil, errors.InvalidArgumentError("SymmetricallyEncrypted.Serialize: bad key length") - } - writeCloser := noOpCloser{w} - ciphertext, err := serializeStreamHeader(writeCloser, packetTypeSymmetricallyEncryptedMDC) - if err != nil { - return - } - - _, err = ciphertext.Write([]byte{symmetricallyEncryptedVersion}) - if err != nil { - return - } - - block := c.new(key) - blockSize := block.BlockSize() - iv := make([]byte, blockSize) - _, err = config.Random().Read(iv) - if err != nil { - return - } - s, prefix := NewOCFBEncrypter(block, iv, OCFBNoResync) - _, err = ciphertext.Write(prefix) - if err != nil { - return - } - plaintext := cipher.StreamWriter{S: s, W: ciphertext} - - h := sha1.New() - h.Write(iv) - h.Write(iv[blockSize-2:]) - contents = &seMDCWriter{w: plaintext, h: h} - return -} diff --git a/vendor/golang.org/x/crypto/openpgp/packet/userattribute.go b/vendor/golang.org/x/crypto/openpgp/packet/userattribute.go deleted file mode 100644 index d19ffbc..0000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/userattribute.go +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package packet - -import ( - "bytes" - "image" - "image/jpeg" - "io" - "io/ioutil" -) - -const UserAttrImageSubpacket = 1 - -// UserAttribute is capable of storing other types of data about a user -// beyond name, email and a text comment. In practice, user attributes are typically used -// to store a signed thumbnail photo JPEG image of the user. -// See RFC 4880, section 5.12. -type UserAttribute struct { - Contents []*OpaqueSubpacket -} - -// NewUserAttributePhoto creates a user attribute packet -// containing the given images. -func NewUserAttributePhoto(photos ...image.Image) (uat *UserAttribute, err error) { - uat = new(UserAttribute) - for _, photo := range photos { - var buf bytes.Buffer - // RFC 4880, Section 5.12.1. - data := []byte{ - 0x10, 0x00, // Little-endian image header length (16 bytes) - 0x01, // Image header version 1 - 0x01, // JPEG - 0, 0, 0, 0, // 12 reserved octets, must be all zero. - 0, 0, 0, 0, - 0, 0, 0, 0} - if _, err = buf.Write(data); err != nil { - return - } - if err = jpeg.Encode(&buf, photo, nil); err != nil { - return - } - uat.Contents = append(uat.Contents, &OpaqueSubpacket{ - SubType: UserAttrImageSubpacket, - Contents: buf.Bytes()}) - } - return -} - -// NewUserAttribute creates a new user attribute packet containing the given subpackets. -func NewUserAttribute(contents ...*OpaqueSubpacket) *UserAttribute { - return &UserAttribute{Contents: contents} -} - -func (uat *UserAttribute) parse(r io.Reader) (err error) { - // RFC 4880, section 5.13 - b, err := ioutil.ReadAll(r) - if err != nil { - return - } - uat.Contents, err = OpaqueSubpackets(b) - return -} - -// Serialize marshals the user attribute to w in the form of an OpenPGP packet, including -// header. -func (uat *UserAttribute) Serialize(w io.Writer) (err error) { - var buf bytes.Buffer - for _, sp := range uat.Contents { - sp.Serialize(&buf) - } - if err = serializeHeader(w, packetTypeUserAttribute, buf.Len()); err != nil { - return err - } - _, err = w.Write(buf.Bytes()) - return -} - -// ImageData returns zero or more byte slices, each containing -// JPEG File Interchange Format (JFIF), for each photo in the -// user attribute packet. -func (uat *UserAttribute) ImageData() (imageData [][]byte) { - for _, sp := range uat.Contents { - if sp.SubType == UserAttrImageSubpacket && len(sp.Contents) > 16 { - imageData = append(imageData, sp.Contents[16:]) - } - } - return -} diff --git a/vendor/golang.org/x/crypto/openpgp/packet/userid.go b/vendor/golang.org/x/crypto/openpgp/packet/userid.go deleted file mode 100644 index d6bea7d..0000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/userid.go +++ /dev/null @@ -1,160 +0,0 @@ -// Copyright 2011 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 packet - -import ( - "io" - "io/ioutil" - "strings" -) - -// UserId contains text that is intended to represent the name and email -// address of the key holder. See RFC 4880, section 5.11. By convention, this -// takes the form "Full Name (Comment) " -type UserId struct { - Id string // By convention, this takes the form "Full Name (Comment) " which is split out in the fields below. - - Name, Comment, Email string -} - -func hasInvalidCharacters(s string) bool { - for _, c := range s { - switch c { - case '(', ')', '<', '>', 0: - return true - } - } - return false -} - -// NewUserId returns a UserId or nil if any of the arguments contain invalid -// characters. The invalid characters are '\x00', '(', ')', '<' and '>' -func NewUserId(name, comment, email string) *UserId { - // RFC 4880 doesn't deal with the structure of userid strings; the - // name, comment and email form is just a convention. However, there's - // no convention about escaping the metacharacters and GPG just refuses - // to create user ids where, say, the name contains a '('. We mirror - // this behaviour. - - if hasInvalidCharacters(name) || hasInvalidCharacters(comment) || hasInvalidCharacters(email) { - return nil - } - - uid := new(UserId) - uid.Name, uid.Comment, uid.Email = name, comment, email - uid.Id = name - if len(comment) > 0 { - if len(uid.Id) > 0 { - uid.Id += " " - } - uid.Id += "(" - uid.Id += comment - uid.Id += ")" - } - if len(email) > 0 { - if len(uid.Id) > 0 { - uid.Id += " " - } - uid.Id += "<" - uid.Id += email - uid.Id += ">" - } - return uid -} - -func (uid *UserId) parse(r io.Reader) (err error) { - // RFC 4880, section 5.11 - b, err := ioutil.ReadAll(r) - if err != nil { - return - } - uid.Id = string(b) - uid.Name, uid.Comment, uid.Email = parseUserId(uid.Id) - return -} - -// Serialize marshals uid to w in the form of an OpenPGP packet, including -// header. -func (uid *UserId) Serialize(w io.Writer) error { - err := serializeHeader(w, packetTypeUserId, len(uid.Id)) - if err != nil { - return err - } - _, err = w.Write([]byte(uid.Id)) - return err -} - -// parseUserId extracts the name, comment and email from a user id string that -// is formatted as "Full Name (Comment) ". -func parseUserId(id string) (name, comment, email string) { - var n, c, e struct { - start, end int - } - var state int - - for offset, rune := range id { - switch state { - case 0: - // Entering name - n.start = offset - state = 1 - fallthrough - case 1: - // In name - if rune == '(' { - state = 2 - n.end = offset - } else if rune == '<' { - state = 5 - n.end = offset - } - case 2: - // Entering comment - c.start = offset - state = 3 - fallthrough - case 3: - // In comment - if rune == ')' { - state = 4 - c.end = offset - } - case 4: - // Between comment and email - if rune == '<' { - state = 5 - } - case 5: - // Entering email - e.start = offset - state = 6 - fallthrough - case 6: - // In email - if rune == '>' { - state = 7 - e.end = offset - } - default: - // After email - } - } - switch state { - case 1: - // ended in the name - n.end = len(id) - case 3: - // ended in comment - c.end = len(id) - case 6: - // ended in email - e.end = len(id) - } - - name = strings.TrimSpace(id[n.start:n.end]) - comment = strings.TrimSpace(id[c.start:c.end]) - email = strings.TrimSpace(id[e.start:e.end]) - return -} diff --git a/vendor/golang.org/x/crypto/openpgp/read.go b/vendor/golang.org/x/crypto/openpgp/read.go deleted file mode 100644 index 48a8931..0000000 --- a/vendor/golang.org/x/crypto/openpgp/read.go +++ /dev/null @@ -1,448 +0,0 @@ -// Copyright 2011 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 openpgp implements high level operations on OpenPGP messages. -// -// Deprecated: this package is unmaintained except for security fixes. New -// applications should consider a more focused, modern alternative to OpenPGP -// for their specific task. If you are required to interoperate with OpenPGP -// systems and need a maintained package, consider a community fork. -// See https://golang.org/issue/44226. -package openpgp // import "golang.org/x/crypto/openpgp" - -import ( - "crypto" - _ "crypto/sha256" - "hash" - "io" - "strconv" - - "golang.org/x/crypto/openpgp/armor" - "golang.org/x/crypto/openpgp/errors" - "golang.org/x/crypto/openpgp/packet" -) - -// SignatureType is the armor type for a PGP signature. -var SignatureType = "PGP SIGNATURE" - -// readArmored reads an armored block with the given type. -func readArmored(r io.Reader, expectedType string) (body io.Reader, err error) { - block, err := armor.Decode(r) - if err != nil { - return - } - - if block.Type != expectedType { - return nil, errors.InvalidArgumentError("expected '" + expectedType + "', got: " + block.Type) - } - - return block.Body, nil -} - -// MessageDetails contains the result of parsing an OpenPGP encrypted and/or -// signed message. -type MessageDetails struct { - IsEncrypted bool // true if the message was encrypted. - EncryptedToKeyIds []uint64 // the list of recipient key ids. - IsSymmetricallyEncrypted bool // true if a passphrase could have decrypted the message. - DecryptedWith Key // the private key used to decrypt the message, if any. - IsSigned bool // true if the message is signed. - SignedByKeyId uint64 // the key id of the signer, if any. - SignedBy *Key // the key of the signer, if available. - LiteralData *packet.LiteralData // the metadata of the contents - UnverifiedBody io.Reader // the contents of the message. - - // If IsSigned is true and SignedBy is non-zero then the signature will - // be verified as UnverifiedBody is read. The signature cannot be - // checked until the whole of UnverifiedBody is read so UnverifiedBody - // must be consumed until EOF before the data can be trusted. Even if a - // message isn't signed (or the signer is unknown) the data may contain - // an authentication code that is only checked once UnverifiedBody has - // been consumed. Once EOF has been seen, the following fields are - // valid. (An authentication code failure is reported as a - // SignatureError error when reading from UnverifiedBody.) - SignatureError error // nil if the signature is good. - Signature *packet.Signature // the signature packet itself, if v4 (default) - SignatureV3 *packet.SignatureV3 // the signature packet if it is a v2 or v3 signature - - decrypted io.ReadCloser -} - -// A PromptFunction is used as a callback by functions that may need to decrypt -// a private key, or prompt for a passphrase. It is called with a list of -// acceptable, encrypted private keys and a boolean that indicates whether a -// passphrase is usable. It should either decrypt a private key or return a -// passphrase to try. If the decrypted private key or given passphrase isn't -// correct, the function will be called again, forever. Any error returned will -// be passed up. -type PromptFunction func(keys []Key, symmetric bool) ([]byte, error) - -// A keyEnvelopePair is used to store a private key with the envelope that -// contains a symmetric key, encrypted with that key. -type keyEnvelopePair struct { - key Key - encryptedKey *packet.EncryptedKey -} - -// ReadMessage parses an OpenPGP message that may be signed and/or encrypted. -// The given KeyRing should contain both public keys (for signature -// verification) and, possibly encrypted, private keys for decrypting. -// If config is nil, sensible defaults will be used. -func ReadMessage(r io.Reader, keyring KeyRing, prompt PromptFunction, config *packet.Config) (md *MessageDetails, err error) { - var p packet.Packet - - var symKeys []*packet.SymmetricKeyEncrypted - var pubKeys []keyEnvelopePair - var se *packet.SymmetricallyEncrypted - - packets := packet.NewReader(r) - md = new(MessageDetails) - md.IsEncrypted = true - - // The message, if encrypted, starts with a number of packets - // containing an encrypted decryption key. The decryption key is either - // encrypted to a public key, or with a passphrase. This loop - // collects these packets. -ParsePackets: - for { - p, err = packets.Next() - if err != nil { - return nil, err - } - switch p := p.(type) { - case *packet.SymmetricKeyEncrypted: - // This packet contains the decryption key encrypted with a passphrase. - md.IsSymmetricallyEncrypted = true - symKeys = append(symKeys, p) - case *packet.EncryptedKey: - // This packet contains the decryption key encrypted to a public key. - md.EncryptedToKeyIds = append(md.EncryptedToKeyIds, p.KeyId) - switch p.Algo { - case packet.PubKeyAlgoRSA, packet.PubKeyAlgoRSAEncryptOnly, packet.PubKeyAlgoElGamal: - break - default: - continue - } - var keys []Key - if p.KeyId == 0 { - keys = keyring.DecryptionKeys() - } else { - keys = keyring.KeysById(p.KeyId) - } - for _, k := range keys { - pubKeys = append(pubKeys, keyEnvelopePair{k, p}) - } - case *packet.SymmetricallyEncrypted: - se = p - break ParsePackets - case *packet.Compressed, *packet.LiteralData, *packet.OnePassSignature: - // This message isn't encrypted. - if len(symKeys) != 0 || len(pubKeys) != 0 { - return nil, errors.StructuralError("key material not followed by encrypted message") - } - packets.Unread(p) - return readSignedMessage(packets, nil, keyring) - } - } - - var candidates []Key - var decrypted io.ReadCloser - - // Now that we have the list of encrypted keys we need to decrypt at - // least one of them or, if we cannot, we need to call the prompt - // function so that it can decrypt a key or give us a passphrase. -FindKey: - for { - // See if any of the keys already have a private key available - candidates = candidates[:0] - candidateFingerprints := make(map[string]bool) - - for _, pk := range pubKeys { - if pk.key.PrivateKey == nil { - continue - } - if !pk.key.PrivateKey.Encrypted { - if len(pk.encryptedKey.Key) == 0 { - pk.encryptedKey.Decrypt(pk.key.PrivateKey, config) - } - if len(pk.encryptedKey.Key) == 0 { - continue - } - decrypted, err = se.Decrypt(pk.encryptedKey.CipherFunc, pk.encryptedKey.Key) - if err != nil && err != errors.ErrKeyIncorrect { - return nil, err - } - if decrypted != nil { - md.DecryptedWith = pk.key - break FindKey - } - } else { - fpr := string(pk.key.PublicKey.Fingerprint[:]) - if v := candidateFingerprints[fpr]; v { - continue - } - candidates = append(candidates, pk.key) - candidateFingerprints[fpr] = true - } - } - - if len(candidates) == 0 && len(symKeys) == 0 { - return nil, errors.ErrKeyIncorrect - } - - if prompt == nil { - return nil, errors.ErrKeyIncorrect - } - - passphrase, err := prompt(candidates, len(symKeys) != 0) - if err != nil { - return nil, err - } - - // Try the symmetric passphrase first - if len(symKeys) != 0 && passphrase != nil { - for _, s := range symKeys { - key, cipherFunc, err := s.Decrypt(passphrase) - if err == nil { - decrypted, err = se.Decrypt(cipherFunc, key) - if err != nil && err != errors.ErrKeyIncorrect { - return nil, err - } - if decrypted != nil { - break FindKey - } - } - - } - } - } - - md.decrypted = decrypted - if err := packets.Push(decrypted); err != nil { - return nil, err - } - return readSignedMessage(packets, md, keyring) -} - -// readSignedMessage reads a possibly signed message if mdin is non-zero then -// that structure is updated and returned. Otherwise a fresh MessageDetails is -// used. -func readSignedMessage(packets *packet.Reader, mdin *MessageDetails, keyring KeyRing) (md *MessageDetails, err error) { - if mdin == nil { - mdin = new(MessageDetails) - } - md = mdin - - var p packet.Packet - var h hash.Hash - var wrappedHash hash.Hash -FindLiteralData: - for { - p, err = packets.Next() - if err != nil { - return nil, err - } - switch p := p.(type) { - case *packet.Compressed: - if err := packets.Push(p.Body); err != nil { - return nil, err - } - case *packet.OnePassSignature: - if !p.IsLast { - return nil, errors.UnsupportedError("nested signatures") - } - - h, wrappedHash, err = hashForSignature(p.Hash, p.SigType) - if err != nil { - md = nil - return - } - - md.IsSigned = true - md.SignedByKeyId = p.KeyId - keys := keyring.KeysByIdUsage(p.KeyId, packet.KeyFlagSign) - if len(keys) > 0 { - md.SignedBy = &keys[0] - } - case *packet.LiteralData: - md.LiteralData = p - break FindLiteralData - } - } - - if md.SignedBy != nil { - md.UnverifiedBody = &signatureCheckReader{packets, h, wrappedHash, md} - } else if md.decrypted != nil { - md.UnverifiedBody = checkReader{md} - } else { - md.UnverifiedBody = md.LiteralData.Body - } - - return md, nil -} - -// hashForSignature returns a pair of hashes that can be used to verify a -// signature. The signature may specify that the contents of the signed message -// should be preprocessed (i.e. to normalize line endings). Thus this function -// returns two hashes. The second should be used to hash the message itself and -// performs any needed preprocessing. -func hashForSignature(hashId crypto.Hash, sigType packet.SignatureType) (hash.Hash, hash.Hash, error) { - if !hashId.Available() { - return nil, nil, errors.UnsupportedError("hash not available: " + strconv.Itoa(int(hashId))) - } - h := hashId.New() - - switch sigType { - case packet.SigTypeBinary: - return h, h, nil - case packet.SigTypeText: - return h, NewCanonicalTextHash(h), nil - } - - return nil, nil, errors.UnsupportedError("unsupported signature type: " + strconv.Itoa(int(sigType))) -} - -// checkReader wraps an io.Reader from a LiteralData packet. When it sees EOF -// it closes the ReadCloser from any SymmetricallyEncrypted packet to trigger -// MDC checks. -type checkReader struct { - md *MessageDetails -} - -func (cr checkReader) Read(buf []byte) (n int, err error) { - n, err = cr.md.LiteralData.Body.Read(buf) - if err == io.EOF { - mdcErr := cr.md.decrypted.Close() - if mdcErr != nil { - err = mdcErr - } - } - return -} - -// signatureCheckReader wraps an io.Reader from a LiteralData packet and hashes -// the data as it is read. When it sees an EOF from the underlying io.Reader -// it parses and checks a trailing Signature packet and triggers any MDC checks. -type signatureCheckReader struct { - packets *packet.Reader - h, wrappedHash hash.Hash - md *MessageDetails -} - -func (scr *signatureCheckReader) Read(buf []byte) (n int, err error) { - n, err = scr.md.LiteralData.Body.Read(buf) - scr.wrappedHash.Write(buf[:n]) - if err == io.EOF { - var p packet.Packet - p, scr.md.SignatureError = scr.packets.Next() - if scr.md.SignatureError != nil { - return - } - - var ok bool - if scr.md.Signature, ok = p.(*packet.Signature); ok { - scr.md.SignatureError = scr.md.SignedBy.PublicKey.VerifySignature(scr.h, scr.md.Signature) - } else if scr.md.SignatureV3, ok = p.(*packet.SignatureV3); ok { - scr.md.SignatureError = scr.md.SignedBy.PublicKey.VerifySignatureV3(scr.h, scr.md.SignatureV3) - } else { - scr.md.SignatureError = errors.StructuralError("LiteralData not followed by Signature") - return - } - - // The SymmetricallyEncrypted packet, if any, might have an - // unsigned hash of its own. In order to check this we need to - // close that Reader. - if scr.md.decrypted != nil { - mdcErr := scr.md.decrypted.Close() - if mdcErr != nil { - err = mdcErr - } - } - } - return -} - -// CheckDetachedSignature takes a signed file and a detached signature and -// returns the signer if the signature is valid. If the signer isn't known, -// ErrUnknownIssuer is returned. -func CheckDetachedSignature(keyring KeyRing, signed, signature io.Reader) (signer *Entity, err error) { - var issuerKeyId uint64 - var hashFunc crypto.Hash - var sigType packet.SignatureType - var keys []Key - var p packet.Packet - - packets := packet.NewReader(signature) - for { - p, err = packets.Next() - if err == io.EOF { - return nil, errors.ErrUnknownIssuer - } - if err != nil { - return nil, err - } - - switch sig := p.(type) { - case *packet.Signature: - if sig.IssuerKeyId == nil { - return nil, errors.StructuralError("signature doesn't have an issuer") - } - issuerKeyId = *sig.IssuerKeyId - hashFunc = sig.Hash - sigType = sig.SigType - case *packet.SignatureV3: - issuerKeyId = sig.IssuerKeyId - hashFunc = sig.Hash - sigType = sig.SigType - default: - return nil, errors.StructuralError("non signature packet found") - } - - keys = keyring.KeysByIdUsage(issuerKeyId, packet.KeyFlagSign) - if len(keys) > 0 { - break - } - } - - if len(keys) == 0 { - panic("unreachable") - } - - h, wrappedHash, err := hashForSignature(hashFunc, sigType) - if err != nil { - return nil, err - } - - if _, err := io.Copy(wrappedHash, signed); err != nil && err != io.EOF { - return nil, err - } - - for _, key := range keys { - switch sig := p.(type) { - case *packet.Signature: - err = key.PublicKey.VerifySignature(h, sig) - case *packet.SignatureV3: - err = key.PublicKey.VerifySignatureV3(h, sig) - default: - panic("unreachable") - } - - if err == nil { - return key.Entity, nil - } - } - - return nil, err -} - -// CheckArmoredDetachedSignature performs the same actions as -// CheckDetachedSignature but expects the signature to be armored. -func CheckArmoredDetachedSignature(keyring KeyRing, signed, signature io.Reader) (signer *Entity, err error) { - body, err := readArmored(signature, SignatureType) - if err != nil { - return - } - - return CheckDetachedSignature(keyring, signed, body) -} diff --git a/vendor/golang.org/x/crypto/openpgp/s2k/s2k.go b/vendor/golang.org/x/crypto/openpgp/s2k/s2k.go deleted file mode 100644 index 9de0495..0000000 --- a/vendor/golang.org/x/crypto/openpgp/s2k/s2k.go +++ /dev/null @@ -1,279 +0,0 @@ -// Copyright 2011 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 s2k implements the various OpenPGP string-to-key transforms as -// specified in RFC 4800 section 3.7.1. -// -// Deprecated: this package is unmaintained except for security fixes. New -// applications should consider a more focused, modern alternative to OpenPGP -// for their specific task. If you are required to interoperate with OpenPGP -// systems and need a maintained package, consider a community fork. -// See https://golang.org/issue/44226. -package s2k // import "golang.org/x/crypto/openpgp/s2k" - -import ( - "crypto" - "hash" - "io" - "strconv" - - "golang.org/x/crypto/openpgp/errors" -) - -// Config collects configuration parameters for s2k key-stretching -// transformatioms. A nil *Config is valid and results in all default -// values. Currently, Config is used only by the Serialize function in -// this package. -type Config struct { - // Hash is the default hash function to be used. If - // nil, SHA1 is used. - Hash crypto.Hash - // S2KCount is only used for symmetric encryption. It - // determines the strength of the passphrase stretching when - // the said passphrase is hashed to produce a key. S2KCount - // should be between 1024 and 65011712, inclusive. If Config - // is nil or S2KCount is 0, the value 65536 used. Not all - // values in the above range can be represented. S2KCount will - // be rounded up to the next representable value if it cannot - // be encoded exactly. When set, it is strongly encrouraged to - // use a value that is at least 65536. See RFC 4880 Section - // 3.7.1.3. - S2KCount int -} - -func (c *Config) hash() crypto.Hash { - if c == nil || uint(c.Hash) == 0 { - // SHA1 is the historical default in this package. - return crypto.SHA1 - } - - return c.Hash -} - -func (c *Config) encodedCount() uint8 { - if c == nil || c.S2KCount == 0 { - return 96 // The common case. Correspoding to 65536 - } - - i := c.S2KCount - switch { - // Behave like GPG. Should we make 65536 the lowest value used? - case i < 1024: - i = 1024 - case i > 65011712: - i = 65011712 - } - - return encodeCount(i) -} - -// encodeCount converts an iterative "count" in the range 1024 to -// 65011712, inclusive, to an encoded count. The return value is the -// octet that is actually stored in the GPG file. encodeCount panics -// if i is not in the above range (encodedCount above takes care to -// pass i in the correct range). See RFC 4880 Section 3.7.7.1. -func encodeCount(i int) uint8 { - if i < 1024 || i > 65011712 { - panic("count arg i outside the required range") - } - - for encoded := 0; encoded < 256; encoded++ { - count := decodeCount(uint8(encoded)) - if count >= i { - return uint8(encoded) - } - } - - return 255 -} - -// decodeCount returns the s2k mode 3 iterative "count" corresponding to -// the encoded octet c. -func decodeCount(c uint8) int { - return (16 + int(c&15)) << (uint32(c>>4) + 6) -} - -// Simple writes to out the result of computing the Simple S2K function (RFC -// 4880, section 3.7.1.1) using the given hash and input passphrase. -func Simple(out []byte, h hash.Hash, in []byte) { - Salted(out, h, in, nil) -} - -var zero [1]byte - -// Salted writes to out the result of computing the Salted S2K function (RFC -// 4880, section 3.7.1.2) using the given hash, input passphrase and salt. -func Salted(out []byte, h hash.Hash, in []byte, salt []byte) { - done := 0 - var digest []byte - - for i := 0; done < len(out); i++ { - h.Reset() - for j := 0; j < i; j++ { - h.Write(zero[:]) - } - h.Write(salt) - h.Write(in) - digest = h.Sum(digest[:0]) - n := copy(out[done:], digest) - done += n - } -} - -// Iterated writes to out the result of computing the Iterated and Salted S2K -// function (RFC 4880, section 3.7.1.3) using the given hash, input passphrase, -// salt and iteration count. -func Iterated(out []byte, h hash.Hash, in []byte, salt []byte, count int) { - combined := make([]byte, len(in)+len(salt)) - copy(combined, salt) - copy(combined[len(salt):], in) - - if count < len(combined) { - count = len(combined) - } - - done := 0 - var digest []byte - for i := 0; done < len(out); i++ { - h.Reset() - for j := 0; j < i; j++ { - h.Write(zero[:]) - } - written := 0 - for written < count { - if written+len(combined) > count { - todo := count - written - h.Write(combined[:todo]) - written = count - } else { - h.Write(combined) - written += len(combined) - } - } - digest = h.Sum(digest[:0]) - n := copy(out[done:], digest) - done += n - } -} - -// Parse reads a binary specification for a string-to-key transformation from r -// and returns a function which performs that transform. -func Parse(r io.Reader) (f func(out, in []byte), err error) { - var buf [9]byte - - _, err = io.ReadFull(r, buf[:2]) - if err != nil { - return - } - - hash, ok := HashIdToHash(buf[1]) - if !ok { - return nil, errors.UnsupportedError("hash for S2K function: " + strconv.Itoa(int(buf[1]))) - } - if !hash.Available() { - return nil, errors.UnsupportedError("hash not available: " + strconv.Itoa(int(hash))) - } - h := hash.New() - - switch buf[0] { - case 0: - f := func(out, in []byte) { - Simple(out, h, in) - } - return f, nil - case 1: - _, err = io.ReadFull(r, buf[:8]) - if err != nil { - return - } - f := func(out, in []byte) { - Salted(out, h, in, buf[:8]) - } - return f, nil - case 3: - _, err = io.ReadFull(r, buf[:9]) - if err != nil { - return - } - count := decodeCount(buf[8]) - f := func(out, in []byte) { - Iterated(out, h, in, buf[:8], count) - } - return f, nil - } - - return nil, errors.UnsupportedError("S2K function") -} - -// Serialize salts and stretches the given passphrase and writes the -// resulting key into key. It also serializes an S2K descriptor to -// w. The key stretching can be configured with c, which may be -// nil. In that case, sensible defaults will be used. -func Serialize(w io.Writer, key []byte, rand io.Reader, passphrase []byte, c *Config) error { - var buf [11]byte - buf[0] = 3 /* iterated and salted */ - buf[1], _ = HashToHashId(c.hash()) - salt := buf[2:10] - if _, err := io.ReadFull(rand, salt); err != nil { - return err - } - encodedCount := c.encodedCount() - count := decodeCount(encodedCount) - buf[10] = encodedCount - if _, err := w.Write(buf[:]); err != nil { - return err - } - - Iterated(key, c.hash().New(), passphrase, salt, count) - return nil -} - -// hashToHashIdMapping contains pairs relating OpenPGP's hash identifier with -// Go's crypto.Hash type. See RFC 4880, section 9.4. -var hashToHashIdMapping = []struct { - id byte - hash crypto.Hash - name string -}{ - {1, crypto.MD5, "MD5"}, - {2, crypto.SHA1, "SHA1"}, - {3, crypto.RIPEMD160, "RIPEMD160"}, - {8, crypto.SHA256, "SHA256"}, - {9, crypto.SHA384, "SHA384"}, - {10, crypto.SHA512, "SHA512"}, - {11, crypto.SHA224, "SHA224"}, -} - -// HashIdToHash returns a crypto.Hash which corresponds to the given OpenPGP -// hash id. -func HashIdToHash(id byte) (h crypto.Hash, ok bool) { - for _, m := range hashToHashIdMapping { - if m.id == id { - return m.hash, true - } - } - return 0, false -} - -// HashIdToString returns the name of the hash function corresponding to the -// given OpenPGP hash id. -func HashIdToString(id byte) (name string, ok bool) { - for _, m := range hashToHashIdMapping { - if m.id == id { - return m.name, true - } - } - - return "", false -} - -// HashIdToHash returns an OpenPGP hash id which corresponds the given Hash. -func HashToHashId(h crypto.Hash) (id byte, ok bool) { - for _, m := range hashToHashIdMapping { - if m.hash == h { - return m.id, true - } - } - return 0, false -} diff --git a/vendor/golang.org/x/crypto/openpgp/write.go b/vendor/golang.org/x/crypto/openpgp/write.go deleted file mode 100644 index 4ee7178..0000000 --- a/vendor/golang.org/x/crypto/openpgp/write.go +++ /dev/null @@ -1,418 +0,0 @@ -// Copyright 2011 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 openpgp - -import ( - "crypto" - "hash" - "io" - "strconv" - "time" - - "golang.org/x/crypto/openpgp/armor" - "golang.org/x/crypto/openpgp/errors" - "golang.org/x/crypto/openpgp/packet" - "golang.org/x/crypto/openpgp/s2k" -) - -// DetachSign signs message with the private key from signer (which must -// already have been decrypted) and writes the signature to w. -// If config is nil, sensible defaults will be used. -func DetachSign(w io.Writer, signer *Entity, message io.Reader, config *packet.Config) error { - return detachSign(w, signer, message, packet.SigTypeBinary, config) -} - -// ArmoredDetachSign signs message with the private key from signer (which -// must already have been decrypted) and writes an armored signature to w. -// If config is nil, sensible defaults will be used. -func ArmoredDetachSign(w io.Writer, signer *Entity, message io.Reader, config *packet.Config) (err error) { - return armoredDetachSign(w, signer, message, packet.SigTypeBinary, config) -} - -// DetachSignText signs message (after canonicalising the line endings) with -// the private key from signer (which must already have been decrypted) and -// writes the signature to w. -// If config is nil, sensible defaults will be used. -func DetachSignText(w io.Writer, signer *Entity, message io.Reader, config *packet.Config) error { - return detachSign(w, signer, message, packet.SigTypeText, config) -} - -// ArmoredDetachSignText signs message (after canonicalising the line endings) -// with the private key from signer (which must already have been decrypted) -// and writes an armored signature to w. -// If config is nil, sensible defaults will be used. -func ArmoredDetachSignText(w io.Writer, signer *Entity, message io.Reader, config *packet.Config) error { - return armoredDetachSign(w, signer, message, packet.SigTypeText, config) -} - -func armoredDetachSign(w io.Writer, signer *Entity, message io.Reader, sigType packet.SignatureType, config *packet.Config) (err error) { - out, err := armor.Encode(w, SignatureType, nil) - if err != nil { - return - } - err = detachSign(out, signer, message, sigType, config) - if err != nil { - return - } - return out.Close() -} - -func detachSign(w io.Writer, signer *Entity, message io.Reader, sigType packet.SignatureType, config *packet.Config) (err error) { - if signer.PrivateKey == nil { - return errors.InvalidArgumentError("signing key doesn't have a private key") - } - if signer.PrivateKey.Encrypted { - return errors.InvalidArgumentError("signing key is encrypted") - } - - sig := new(packet.Signature) - sig.SigType = sigType - sig.PubKeyAlgo = signer.PrivateKey.PubKeyAlgo - sig.Hash = config.Hash() - sig.CreationTime = config.Now() - sig.IssuerKeyId = &signer.PrivateKey.KeyId - - h, wrappedHash, err := hashForSignature(sig.Hash, sig.SigType) - if err != nil { - return - } - io.Copy(wrappedHash, message) - - err = sig.Sign(h, signer.PrivateKey, config) - if err != nil { - return - } - - return sig.Serialize(w) -} - -// FileHints contains metadata about encrypted files. This metadata is, itself, -// encrypted. -type FileHints struct { - // IsBinary can be set to hint that the contents are binary data. - IsBinary bool - // FileName hints at the name of the file that should be written. It's - // truncated to 255 bytes if longer. It may be empty to suggest that the - // file should not be written to disk. It may be equal to "_CONSOLE" to - // suggest the data should not be written to disk. - FileName string - // ModTime contains the modification time of the file, or the zero time if not applicable. - ModTime time.Time -} - -// SymmetricallyEncrypt acts like gpg -c: it encrypts a file with a passphrase. -// The resulting WriteCloser must be closed after the contents of the file have -// been written. -// If config is nil, sensible defaults will be used. -func SymmetricallyEncrypt(ciphertext io.Writer, passphrase []byte, hints *FileHints, config *packet.Config) (plaintext io.WriteCloser, err error) { - if hints == nil { - hints = &FileHints{} - } - - key, err := packet.SerializeSymmetricKeyEncrypted(ciphertext, passphrase, config) - if err != nil { - return - } - w, err := packet.SerializeSymmetricallyEncrypted(ciphertext, config.Cipher(), key, config) - if err != nil { - return - } - - literaldata := w - if algo := config.Compression(); algo != packet.CompressionNone { - var compConfig *packet.CompressionConfig - if config != nil { - compConfig = config.CompressionConfig - } - literaldata, err = packet.SerializeCompressed(w, algo, compConfig) - if err != nil { - return - } - } - - var epochSeconds uint32 - if !hints.ModTime.IsZero() { - epochSeconds = uint32(hints.ModTime.Unix()) - } - return packet.SerializeLiteral(literaldata, hints.IsBinary, hints.FileName, epochSeconds) -} - -// intersectPreferences mutates and returns a prefix of a that contains only -// the values in the intersection of a and b. The order of a is preserved. -func intersectPreferences(a []uint8, b []uint8) (intersection []uint8) { - var j int - for _, v := range a { - for _, v2 := range b { - if v == v2 { - a[j] = v - j++ - break - } - } - } - - return a[:j] -} - -func hashToHashId(h crypto.Hash) uint8 { - v, ok := s2k.HashToHashId(h) - if !ok { - panic("tried to convert unknown hash") - } - return v -} - -// writeAndSign writes the data as a payload package and, optionally, signs -// it. hints contains optional information, that is also encrypted, -// that aids the recipients in processing the message. The resulting -// WriteCloser must be closed after the contents of the file have been -// written. If config is nil, sensible defaults will be used. -func writeAndSign(payload io.WriteCloser, candidateHashes []uint8, signed *Entity, hints *FileHints, config *packet.Config) (plaintext io.WriteCloser, err error) { - var signer *packet.PrivateKey - if signed != nil { - signKey, ok := signed.signingKey(config.Now()) - if !ok { - return nil, errors.InvalidArgumentError("no valid signing keys") - } - signer = signKey.PrivateKey - if signer == nil { - return nil, errors.InvalidArgumentError("no private key in signing key") - } - if signer.Encrypted { - return nil, errors.InvalidArgumentError("signing key must be decrypted") - } - } - - var hash crypto.Hash - for _, hashId := range candidateHashes { - if h, ok := s2k.HashIdToHash(hashId); ok && h.Available() { - hash = h - break - } - } - - // If the hash specified by config is a candidate, we'll use that. - if configuredHash := config.Hash(); configuredHash.Available() { - for _, hashId := range candidateHashes { - if h, ok := s2k.HashIdToHash(hashId); ok && h == configuredHash { - hash = h - break - } - } - } - - if hash == 0 { - hashId := candidateHashes[0] - name, ok := s2k.HashIdToString(hashId) - if !ok { - name = "#" + strconv.Itoa(int(hashId)) - } - return nil, errors.InvalidArgumentError("cannot encrypt because no candidate hash functions are compiled in. (Wanted " + name + " in this case.)") - } - - if signer != nil { - ops := &packet.OnePassSignature{ - SigType: packet.SigTypeBinary, - Hash: hash, - PubKeyAlgo: signer.PubKeyAlgo, - KeyId: signer.KeyId, - IsLast: true, - } - if err := ops.Serialize(payload); err != nil { - return nil, err - } - } - - if hints == nil { - hints = &FileHints{} - } - - w := payload - if signer != nil { - // If we need to write a signature packet after the literal - // data then we need to stop literalData from closing - // encryptedData. - w = noOpCloser{w} - - } - var epochSeconds uint32 - if !hints.ModTime.IsZero() { - epochSeconds = uint32(hints.ModTime.Unix()) - } - literalData, err := packet.SerializeLiteral(w, hints.IsBinary, hints.FileName, epochSeconds) - if err != nil { - return nil, err - } - - if signer != nil { - return signatureWriter{payload, literalData, hash, hash.New(), signer, config}, nil - } - return literalData, nil -} - -// Encrypt encrypts a message to a number of recipients and, optionally, signs -// it. hints contains optional information, that is also encrypted, that aids -// the recipients in processing the message. The resulting WriteCloser must -// be closed after the contents of the file have been written. -// If config is nil, sensible defaults will be used. -func Encrypt(ciphertext io.Writer, to []*Entity, signed *Entity, hints *FileHints, config *packet.Config) (plaintext io.WriteCloser, err error) { - if len(to) == 0 { - return nil, errors.InvalidArgumentError("no encryption recipient provided") - } - - // These are the possible ciphers that we'll use for the message. - candidateCiphers := []uint8{ - uint8(packet.CipherAES128), - uint8(packet.CipherAES256), - uint8(packet.CipherCAST5), - } - // These are the possible hash functions that we'll use for the signature. - candidateHashes := []uint8{ - hashToHashId(crypto.SHA256), - hashToHashId(crypto.SHA384), - hashToHashId(crypto.SHA512), - hashToHashId(crypto.SHA1), - hashToHashId(crypto.RIPEMD160), - } - // In the event that a recipient doesn't specify any supported ciphers - // or hash functions, these are the ones that we assume that every - // implementation supports. - defaultCiphers := candidateCiphers[len(candidateCiphers)-1:] - defaultHashes := candidateHashes[len(candidateHashes)-1:] - - encryptKeys := make([]Key, len(to)) - for i := range to { - var ok bool - encryptKeys[i], ok = to[i].encryptionKey(config.Now()) - if !ok { - return nil, errors.InvalidArgumentError("cannot encrypt a message to key id " + strconv.FormatUint(to[i].PrimaryKey.KeyId, 16) + " because it has no encryption keys") - } - - sig := to[i].primaryIdentity().SelfSignature - - preferredSymmetric := sig.PreferredSymmetric - if len(preferredSymmetric) == 0 { - preferredSymmetric = defaultCiphers - } - preferredHashes := sig.PreferredHash - if len(preferredHashes) == 0 { - preferredHashes = defaultHashes - } - candidateCiphers = intersectPreferences(candidateCiphers, preferredSymmetric) - candidateHashes = intersectPreferences(candidateHashes, preferredHashes) - } - - if len(candidateCiphers) == 0 || len(candidateHashes) == 0 { - return nil, errors.InvalidArgumentError("cannot encrypt because recipient set shares no common algorithms") - } - - cipher := packet.CipherFunction(candidateCiphers[0]) - // If the cipher specified by config is a candidate, we'll use that. - configuredCipher := config.Cipher() - for _, c := range candidateCiphers { - cipherFunc := packet.CipherFunction(c) - if cipherFunc == configuredCipher { - cipher = cipherFunc - break - } - } - - symKey := make([]byte, cipher.KeySize()) - if _, err := io.ReadFull(config.Random(), symKey); err != nil { - return nil, err - } - - for _, key := range encryptKeys { - if err := packet.SerializeEncryptedKey(ciphertext, key.PublicKey, cipher, symKey, config); err != nil { - return nil, err - } - } - - payload, err := packet.SerializeSymmetricallyEncrypted(ciphertext, cipher, symKey, config) - if err != nil { - return - } - - return writeAndSign(payload, candidateHashes, signed, hints, config) -} - -// Sign signs a message. The resulting WriteCloser must be closed after the -// contents of the file have been written. hints contains optional information -// that aids the recipients in processing the message. -// If config is nil, sensible defaults will be used. -func Sign(output io.Writer, signed *Entity, hints *FileHints, config *packet.Config) (input io.WriteCloser, err error) { - if signed == nil { - return nil, errors.InvalidArgumentError("no signer provided") - } - - // These are the possible hash functions that we'll use for the signature. - candidateHashes := []uint8{ - hashToHashId(crypto.SHA256), - hashToHashId(crypto.SHA384), - hashToHashId(crypto.SHA512), - hashToHashId(crypto.SHA1), - hashToHashId(crypto.RIPEMD160), - } - defaultHashes := candidateHashes[len(candidateHashes)-1:] - preferredHashes := signed.primaryIdentity().SelfSignature.PreferredHash - if len(preferredHashes) == 0 { - preferredHashes = defaultHashes - } - candidateHashes = intersectPreferences(candidateHashes, preferredHashes) - return writeAndSign(noOpCloser{output}, candidateHashes, signed, hints, config) -} - -// signatureWriter hashes the contents of a message while passing it along to -// literalData. When closed, it closes literalData, writes a signature packet -// to encryptedData and then also closes encryptedData. -type signatureWriter struct { - encryptedData io.WriteCloser - literalData io.WriteCloser - hashType crypto.Hash - h hash.Hash - signer *packet.PrivateKey - config *packet.Config -} - -func (s signatureWriter) Write(data []byte) (int, error) { - s.h.Write(data) - return s.literalData.Write(data) -} - -func (s signatureWriter) Close() error { - sig := &packet.Signature{ - SigType: packet.SigTypeBinary, - PubKeyAlgo: s.signer.PubKeyAlgo, - Hash: s.hashType, - CreationTime: s.config.Now(), - IssuerKeyId: &s.signer.KeyId, - } - - if err := sig.Sign(s.h, s.signer, s.config); err != nil { - return err - } - if err := s.literalData.Close(); err != nil { - return err - } - if err := sig.Serialize(s.encryptedData); err != nil { - return err - } - return s.encryptedData.Close() -} - -// noOpCloser is like an ioutil.NopCloser, but for an io.Writer. -// TODO: we have two of these in OpenPGP packages alone. This probably needs -// to be promoted somewhere more common. -type noOpCloser struct { - w io.Writer -} - -func (c noOpCloser) Write(data []byte) (n int, err error) { - return c.w.Write(data) -} - -func (c noOpCloser) Close() error { - return nil -} diff --git a/vendor/golang.org/x/crypto/ssh/agent/client.go b/vendor/golang.org/x/crypto/ssh/agent/client.go deleted file mode 100644 index 3c4d18a..0000000 --- a/vendor/golang.org/x/crypto/ssh/agent/client.go +++ /dev/null @@ -1,847 +0,0 @@ -// Copyright 2012 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 agent implements the ssh-agent protocol, and provides both -// a client and a server. The client can talk to a standard ssh-agent -// that uses UNIX sockets, and one could implement an alternative -// ssh-agent process using the sample server. -// -// References: -// -// [PROTOCOL.agent]: https://tools.ietf.org/html/draft-miller-ssh-agent-00 -package agent // import "golang.org/x/crypto/ssh/agent" - -import ( - "bytes" - "crypto/dsa" - "crypto/ecdsa" - "crypto/elliptic" - "crypto/rsa" - "encoding/base64" - "encoding/binary" - "errors" - "fmt" - "io" - "math/big" - "sync" - - "golang.org/x/crypto/ed25519" - "golang.org/x/crypto/ssh" -) - -// SignatureFlags represent additional flags that can be passed to the signature -// requests an defined in [PROTOCOL.agent] section 4.5.1. -type SignatureFlags uint32 - -// SignatureFlag values as defined in [PROTOCOL.agent] section 5.3. -const ( - SignatureFlagReserved SignatureFlags = 1 << iota - SignatureFlagRsaSha256 - SignatureFlagRsaSha512 -) - -// Agent represents the capabilities of an ssh-agent. -type Agent interface { - // List returns the identities known to the agent. - List() ([]*Key, error) - - // Sign has the agent sign the data using a protocol 2 key as defined - // in [PROTOCOL.agent] section 2.6.2. - Sign(key ssh.PublicKey, data []byte) (*ssh.Signature, error) - - // Add adds a private key to the agent. - Add(key AddedKey) error - - // Remove removes all identities with the given public key. - Remove(key ssh.PublicKey) error - - // RemoveAll removes all identities. - RemoveAll() error - - // Lock locks the agent. Sign and Remove will fail, and List will empty an empty list. - Lock(passphrase []byte) error - - // Unlock undoes the effect of Lock - Unlock(passphrase []byte) error - - // Signers returns signers for all the known keys. - Signers() ([]ssh.Signer, error) -} - -type ExtendedAgent interface { - Agent - - // SignWithFlags signs like Sign, but allows for additional flags to be sent/received - SignWithFlags(key ssh.PublicKey, data []byte, flags SignatureFlags) (*ssh.Signature, error) - - // Extension processes a custom extension request. Standard-compliant agents are not - // required to support any extensions, but this method allows agents to implement - // vendor-specific methods or add experimental features. See [PROTOCOL.agent] section 4.7. - // If agent extensions are unsupported entirely this method MUST return an - // ErrExtensionUnsupported error. Similarly, if just the specific extensionType in - // the request is unsupported by the agent then ErrExtensionUnsupported MUST be - // returned. - // - // In the case of success, since [PROTOCOL.agent] section 4.7 specifies that the contents - // of the response are unspecified (including the type of the message), the complete - // response will be returned as a []byte slice, including the "type" byte of the message. - Extension(extensionType string, contents []byte) ([]byte, error) -} - -// ConstraintExtension describes an optional constraint defined by users. -type ConstraintExtension struct { - // ExtensionName consist of a UTF-8 string suffixed by the - // implementation domain following the naming scheme defined - // in Section 4.2 of [RFC4251], e.g. "foo@example.com". - ExtensionName string - // ExtensionDetails contains the actual content of the extended - // constraint. - ExtensionDetails []byte -} - -// AddedKey describes an SSH key to be added to an Agent. -type AddedKey struct { - // PrivateKey must be a *rsa.PrivateKey, *dsa.PrivateKey, - // ed25519.PrivateKey or *ecdsa.PrivateKey, which will be inserted into the - // agent. - PrivateKey interface{} - // Certificate, if not nil, is communicated to the agent and will be - // stored with the key. - Certificate *ssh.Certificate - // Comment is an optional, free-form string. - Comment string - // LifetimeSecs, if not zero, is the number of seconds that the - // agent will store the key for. - LifetimeSecs uint32 - // ConfirmBeforeUse, if true, requests that the agent confirm with the - // user before each use of this key. - ConfirmBeforeUse bool - // ConstraintExtensions are the experimental or private-use constraints - // defined by users. - ConstraintExtensions []ConstraintExtension -} - -// See [PROTOCOL.agent], section 3. -const ( - agentRequestV1Identities = 1 - agentRemoveAllV1Identities = 9 - - // 3.2 Requests from client to agent for protocol 2 key operations - agentAddIdentity = 17 - agentRemoveIdentity = 18 - agentRemoveAllIdentities = 19 - agentAddIDConstrained = 25 - - // 3.3 Key-type independent requests from client to agent - agentAddSmartcardKey = 20 - agentRemoveSmartcardKey = 21 - agentLock = 22 - agentUnlock = 23 - agentAddSmartcardKeyConstrained = 26 - - // 3.7 Key constraint identifiers - agentConstrainLifetime = 1 - agentConstrainConfirm = 2 - agentConstrainExtension = 3 -) - -// maxAgentResponseBytes is the maximum agent reply size that is accepted. This -// is a sanity check, not a limit in the spec. -const maxAgentResponseBytes = 16 << 20 - -// Agent messages: -// These structures mirror the wire format of the corresponding ssh agent -// messages found in [PROTOCOL.agent]. - -// 3.4 Generic replies from agent to client -const agentFailure = 5 - -type failureAgentMsg struct{} - -const agentSuccess = 6 - -type successAgentMsg struct{} - -// See [PROTOCOL.agent], section 2.5.2. -const agentRequestIdentities = 11 - -type requestIdentitiesAgentMsg struct{} - -// See [PROTOCOL.agent], section 2.5.2. -const agentIdentitiesAnswer = 12 - -type identitiesAnswerAgentMsg struct { - NumKeys uint32 `sshtype:"12"` - Keys []byte `ssh:"rest"` -} - -// See [PROTOCOL.agent], section 2.6.2. -const agentSignRequest = 13 - -type signRequestAgentMsg struct { - KeyBlob []byte `sshtype:"13"` - Data []byte - Flags uint32 -} - -// See [PROTOCOL.agent], section 2.6.2. - -// 3.6 Replies from agent to client for protocol 2 key operations -const agentSignResponse = 14 - -type signResponseAgentMsg struct { - SigBlob []byte `sshtype:"14"` -} - -type publicKey struct { - Format string - Rest []byte `ssh:"rest"` -} - -// 3.7 Key constraint identifiers -type constrainLifetimeAgentMsg struct { - LifetimeSecs uint32 `sshtype:"1"` -} - -type constrainExtensionAgentMsg struct { - ExtensionName string `sshtype:"3"` - ExtensionDetails []byte - - // Rest is a field used for parsing, not part of message - Rest []byte `ssh:"rest"` -} - -// See [PROTOCOL.agent], section 4.7 -const agentExtension = 27 -const agentExtensionFailure = 28 - -// ErrExtensionUnsupported indicates that an extension defined in -// [PROTOCOL.agent] section 4.7 is unsupported by the agent. Specifically this -// error indicates that the agent returned a standard SSH_AGENT_FAILURE message -// as the result of a SSH_AGENTC_EXTENSION request. Note that the protocol -// specification (and therefore this error) does not distinguish between a -// specific extension being unsupported and extensions being unsupported entirely. -var ErrExtensionUnsupported = errors.New("agent: extension unsupported") - -type extensionAgentMsg struct { - ExtensionType string `sshtype:"27"` - Contents []byte -} - -// Key represents a protocol 2 public key as defined in -// [PROTOCOL.agent], section 2.5.2. -type Key struct { - Format string - Blob []byte - Comment string -} - -func clientErr(err error) error { - return fmt.Errorf("agent: client error: %v", err) -} - -// String returns the storage form of an agent key with the format, base64 -// encoded serialized key, and the comment if it is not empty. -func (k *Key) String() string { - s := string(k.Format) + " " + base64.StdEncoding.EncodeToString(k.Blob) - - if k.Comment != "" { - s += " " + k.Comment - } - - return s -} - -// Type returns the public key type. -func (k *Key) Type() string { - return k.Format -} - -// Marshal returns key blob to satisfy the ssh.PublicKey interface. -func (k *Key) Marshal() []byte { - return k.Blob -} - -// Verify satisfies the ssh.PublicKey interface. -func (k *Key) Verify(data []byte, sig *ssh.Signature) error { - pubKey, err := ssh.ParsePublicKey(k.Blob) - if err != nil { - return fmt.Errorf("agent: bad public key: %v", err) - } - return pubKey.Verify(data, sig) -} - -type wireKey struct { - Format string - Rest []byte `ssh:"rest"` -} - -func parseKey(in []byte) (out *Key, rest []byte, err error) { - var record struct { - Blob []byte - Comment string - Rest []byte `ssh:"rest"` - } - - if err := ssh.Unmarshal(in, &record); err != nil { - return nil, nil, err - } - - var wk wireKey - if err := ssh.Unmarshal(record.Blob, &wk); err != nil { - return nil, nil, err - } - - return &Key{ - Format: wk.Format, - Blob: record.Blob, - Comment: record.Comment, - }, record.Rest, nil -} - -// client is a client for an ssh-agent process. -type client struct { - // conn is typically a *net.UnixConn - conn io.ReadWriter - // mu is used to prevent concurrent access to the agent - mu sync.Mutex -} - -// NewClient returns an Agent that talks to an ssh-agent process over -// the given connection. -func NewClient(rw io.ReadWriter) ExtendedAgent { - return &client{conn: rw} -} - -// call sends an RPC to the agent. On success, the reply is -// unmarshaled into reply and replyType is set to the first byte of -// the reply, which contains the type of the message. -func (c *client) call(req []byte) (reply interface{}, err error) { - buf, err := c.callRaw(req) - if err != nil { - return nil, err - } - reply, err = unmarshal(buf) - if err != nil { - return nil, clientErr(err) - } - return reply, nil -} - -// callRaw sends an RPC to the agent. On success, the raw -// bytes of the response are returned; no unmarshalling is -// performed on the response. -func (c *client) callRaw(req []byte) (reply []byte, err error) { - c.mu.Lock() - defer c.mu.Unlock() - - msg := make([]byte, 4+len(req)) - binary.BigEndian.PutUint32(msg, uint32(len(req))) - copy(msg[4:], req) - if _, err = c.conn.Write(msg); err != nil { - return nil, clientErr(err) - } - - var respSizeBuf [4]byte - if _, err = io.ReadFull(c.conn, respSizeBuf[:]); err != nil { - return nil, clientErr(err) - } - respSize := binary.BigEndian.Uint32(respSizeBuf[:]) - if respSize > maxAgentResponseBytes { - return nil, clientErr(errors.New("response too large")) - } - - buf := make([]byte, respSize) - if _, err = io.ReadFull(c.conn, buf); err != nil { - return nil, clientErr(err) - } - return buf, nil -} - -func (c *client) simpleCall(req []byte) error { - resp, err := c.call(req) - if err != nil { - return err - } - if _, ok := resp.(*successAgentMsg); ok { - return nil - } - return errors.New("agent: failure") -} - -func (c *client) RemoveAll() error { - return c.simpleCall([]byte{agentRemoveAllIdentities}) -} - -func (c *client) Remove(key ssh.PublicKey) error { - req := ssh.Marshal(&agentRemoveIdentityMsg{ - KeyBlob: key.Marshal(), - }) - return c.simpleCall(req) -} - -func (c *client) Lock(passphrase []byte) error { - req := ssh.Marshal(&agentLockMsg{ - Passphrase: passphrase, - }) - return c.simpleCall(req) -} - -func (c *client) Unlock(passphrase []byte) error { - req := ssh.Marshal(&agentUnlockMsg{ - Passphrase: passphrase, - }) - return c.simpleCall(req) -} - -// List returns the identities known to the agent. -func (c *client) List() ([]*Key, error) { - // see [PROTOCOL.agent] section 2.5.2. - req := []byte{agentRequestIdentities} - - msg, err := c.call(req) - if err != nil { - return nil, err - } - - switch msg := msg.(type) { - case *identitiesAnswerAgentMsg: - if msg.NumKeys > maxAgentResponseBytes/8 { - return nil, errors.New("agent: too many keys in agent reply") - } - keys := make([]*Key, msg.NumKeys) - data := msg.Keys - for i := uint32(0); i < msg.NumKeys; i++ { - var key *Key - var err error - if key, data, err = parseKey(data); err != nil { - return nil, err - } - keys[i] = key - } - return keys, nil - case *failureAgentMsg: - return nil, errors.New("agent: failed to list keys") - } - panic("unreachable") -} - -// Sign has the agent sign the data using a protocol 2 key as defined -// in [PROTOCOL.agent] section 2.6.2. -func (c *client) Sign(key ssh.PublicKey, data []byte) (*ssh.Signature, error) { - return c.SignWithFlags(key, data, 0) -} - -func (c *client) SignWithFlags(key ssh.PublicKey, data []byte, flags SignatureFlags) (*ssh.Signature, error) { - req := ssh.Marshal(signRequestAgentMsg{ - KeyBlob: key.Marshal(), - Data: data, - Flags: uint32(flags), - }) - - msg, err := c.call(req) - if err != nil { - return nil, err - } - - switch msg := msg.(type) { - case *signResponseAgentMsg: - var sig ssh.Signature - if err := ssh.Unmarshal(msg.SigBlob, &sig); err != nil { - return nil, err - } - - return &sig, nil - case *failureAgentMsg: - return nil, errors.New("agent: failed to sign challenge") - } - panic("unreachable") -} - -// unmarshal parses an agent message in packet, returning the parsed -// form and the message type of packet. -func unmarshal(packet []byte) (interface{}, error) { - if len(packet) < 1 { - return nil, errors.New("agent: empty packet") - } - var msg interface{} - switch packet[0] { - case agentFailure: - return new(failureAgentMsg), nil - case agentSuccess: - return new(successAgentMsg), nil - case agentIdentitiesAnswer: - msg = new(identitiesAnswerAgentMsg) - case agentSignResponse: - msg = new(signResponseAgentMsg) - case agentV1IdentitiesAnswer: - msg = new(agentV1IdentityMsg) - default: - return nil, fmt.Errorf("agent: unknown type tag %d", packet[0]) - } - if err := ssh.Unmarshal(packet, msg); err != nil { - return nil, err - } - return msg, nil -} - -type rsaKeyMsg struct { - Type string `sshtype:"17|25"` - N *big.Int - E *big.Int - D *big.Int - Iqmp *big.Int // IQMP = Inverse Q Mod P - P *big.Int - Q *big.Int - Comments string - Constraints []byte `ssh:"rest"` -} - -type dsaKeyMsg struct { - Type string `sshtype:"17|25"` - P *big.Int - Q *big.Int - G *big.Int - Y *big.Int - X *big.Int - Comments string - Constraints []byte `ssh:"rest"` -} - -type ecdsaKeyMsg struct { - Type string `sshtype:"17|25"` - Curve string - KeyBytes []byte - D *big.Int - Comments string - Constraints []byte `ssh:"rest"` -} - -type ed25519KeyMsg struct { - Type string `sshtype:"17|25"` - Pub []byte - Priv []byte - Comments string - Constraints []byte `ssh:"rest"` -} - -// Insert adds a private key to the agent. -func (c *client) insertKey(s interface{}, comment string, constraints []byte) error { - var req []byte - switch k := s.(type) { - case *rsa.PrivateKey: - if len(k.Primes) != 2 { - return fmt.Errorf("agent: unsupported RSA key with %d primes", len(k.Primes)) - } - k.Precompute() - req = ssh.Marshal(rsaKeyMsg{ - Type: ssh.KeyAlgoRSA, - N: k.N, - E: big.NewInt(int64(k.E)), - D: k.D, - Iqmp: k.Precomputed.Qinv, - P: k.Primes[0], - Q: k.Primes[1], - Comments: comment, - Constraints: constraints, - }) - case *dsa.PrivateKey: - req = ssh.Marshal(dsaKeyMsg{ - Type: ssh.KeyAlgoDSA, - P: k.P, - Q: k.Q, - G: k.G, - Y: k.Y, - X: k.X, - Comments: comment, - Constraints: constraints, - }) - case *ecdsa.PrivateKey: - nistID := fmt.Sprintf("nistp%d", k.Params().BitSize) - req = ssh.Marshal(ecdsaKeyMsg{ - Type: "ecdsa-sha2-" + nistID, - Curve: nistID, - KeyBytes: elliptic.Marshal(k.Curve, k.X, k.Y), - D: k.D, - Comments: comment, - Constraints: constraints, - }) - case ed25519.PrivateKey: - req = ssh.Marshal(ed25519KeyMsg{ - Type: ssh.KeyAlgoED25519, - Pub: []byte(k)[32:], - Priv: []byte(k), - Comments: comment, - Constraints: constraints, - }) - // This function originally supported only *ed25519.PrivateKey, however the - // general idiom is to pass ed25519.PrivateKey by value, not by pointer. - // We still support the pointer variant for backwards compatibility. - case *ed25519.PrivateKey: - req = ssh.Marshal(ed25519KeyMsg{ - Type: ssh.KeyAlgoED25519, - Pub: []byte(*k)[32:], - Priv: []byte(*k), - Comments: comment, - Constraints: constraints, - }) - default: - return fmt.Errorf("agent: unsupported key type %T", s) - } - - // if constraints are present then the message type needs to be changed. - if len(constraints) != 0 { - req[0] = agentAddIDConstrained - } - - resp, err := c.call(req) - if err != nil { - return err - } - if _, ok := resp.(*successAgentMsg); ok { - return nil - } - return errors.New("agent: failure") -} - -type rsaCertMsg struct { - Type string `sshtype:"17|25"` - CertBytes []byte - D *big.Int - Iqmp *big.Int // IQMP = Inverse Q Mod P - P *big.Int - Q *big.Int - Comments string - Constraints []byte `ssh:"rest"` -} - -type dsaCertMsg struct { - Type string `sshtype:"17|25"` - CertBytes []byte - X *big.Int - Comments string - Constraints []byte `ssh:"rest"` -} - -type ecdsaCertMsg struct { - Type string `sshtype:"17|25"` - CertBytes []byte - D *big.Int - Comments string - Constraints []byte `ssh:"rest"` -} - -type ed25519CertMsg struct { - Type string `sshtype:"17|25"` - CertBytes []byte - Pub []byte - Priv []byte - Comments string - Constraints []byte `ssh:"rest"` -} - -// Add adds a private key to the agent. If a certificate is given, -// that certificate is added instead as public key. -func (c *client) Add(key AddedKey) error { - var constraints []byte - - if secs := key.LifetimeSecs; secs != 0 { - constraints = append(constraints, ssh.Marshal(constrainLifetimeAgentMsg{secs})...) - } - - if key.ConfirmBeforeUse { - constraints = append(constraints, agentConstrainConfirm) - } - - cert := key.Certificate - if cert == nil { - return c.insertKey(key.PrivateKey, key.Comment, constraints) - } - return c.insertCert(key.PrivateKey, cert, key.Comment, constraints) -} - -func (c *client) insertCert(s interface{}, cert *ssh.Certificate, comment string, constraints []byte) error { - var req []byte - switch k := s.(type) { - case *rsa.PrivateKey: - if len(k.Primes) != 2 { - return fmt.Errorf("agent: unsupported RSA key with %d primes", len(k.Primes)) - } - k.Precompute() - req = ssh.Marshal(rsaCertMsg{ - Type: cert.Type(), - CertBytes: cert.Marshal(), - D: k.D, - Iqmp: k.Precomputed.Qinv, - P: k.Primes[0], - Q: k.Primes[1], - Comments: comment, - Constraints: constraints, - }) - case *dsa.PrivateKey: - req = ssh.Marshal(dsaCertMsg{ - Type: cert.Type(), - CertBytes: cert.Marshal(), - X: k.X, - Comments: comment, - Constraints: constraints, - }) - case *ecdsa.PrivateKey: - req = ssh.Marshal(ecdsaCertMsg{ - Type: cert.Type(), - CertBytes: cert.Marshal(), - D: k.D, - Comments: comment, - Constraints: constraints, - }) - case ed25519.PrivateKey: - req = ssh.Marshal(ed25519CertMsg{ - Type: cert.Type(), - CertBytes: cert.Marshal(), - Pub: []byte(k)[32:], - Priv: []byte(k), - Comments: comment, - Constraints: constraints, - }) - // This function originally supported only *ed25519.PrivateKey, however the - // general idiom is to pass ed25519.PrivateKey by value, not by pointer. - // We still support the pointer variant for backwards compatibility. - case *ed25519.PrivateKey: - req = ssh.Marshal(ed25519CertMsg{ - Type: cert.Type(), - CertBytes: cert.Marshal(), - Pub: []byte(*k)[32:], - Priv: []byte(*k), - Comments: comment, - Constraints: constraints, - }) - default: - return fmt.Errorf("agent: unsupported key type %T", s) - } - - // if constraints are present then the message type needs to be changed. - if len(constraints) != 0 { - req[0] = agentAddIDConstrained - } - - signer, err := ssh.NewSignerFromKey(s) - if err != nil { - return err - } - if bytes.Compare(cert.Key.Marshal(), signer.PublicKey().Marshal()) != 0 { - return errors.New("agent: signer and cert have different public key") - } - - resp, err := c.call(req) - if err != nil { - return err - } - if _, ok := resp.(*successAgentMsg); ok { - return nil - } - return errors.New("agent: failure") -} - -// Signers provides a callback for client authentication. -func (c *client) Signers() ([]ssh.Signer, error) { - keys, err := c.List() - if err != nil { - return nil, err - } - - var result []ssh.Signer - for _, k := range keys { - result = append(result, &agentKeyringSigner{c, k}) - } - return result, nil -} - -type agentKeyringSigner struct { - agent *client - pub ssh.PublicKey -} - -func (s *agentKeyringSigner) PublicKey() ssh.PublicKey { - return s.pub -} - -func (s *agentKeyringSigner) Sign(rand io.Reader, data []byte) (*ssh.Signature, error) { - // The agent has its own entropy source, so the rand argument is ignored. - return s.agent.Sign(s.pub, data) -} - -func (s *agentKeyringSigner) SignWithAlgorithm(rand io.Reader, data []byte, algorithm string) (*ssh.Signature, error) { - if algorithm == "" || algorithm == underlyingAlgo(s.pub.Type()) { - return s.Sign(rand, data) - } - - var flags SignatureFlags - switch algorithm { - case ssh.KeyAlgoRSASHA256: - flags = SignatureFlagRsaSha256 - case ssh.KeyAlgoRSASHA512: - flags = SignatureFlagRsaSha512 - default: - return nil, fmt.Errorf("agent: unsupported algorithm %q", algorithm) - } - - return s.agent.SignWithFlags(s.pub, data, flags) -} - -var _ ssh.AlgorithmSigner = &agentKeyringSigner{} - -// certKeyAlgoNames is a mapping from known certificate algorithm names to the -// corresponding public key signature algorithm. -// -// This map must be kept in sync with the one in certs.go. -var certKeyAlgoNames = map[string]string{ - ssh.CertAlgoRSAv01: ssh.KeyAlgoRSA, - ssh.CertAlgoRSASHA256v01: ssh.KeyAlgoRSASHA256, - ssh.CertAlgoRSASHA512v01: ssh.KeyAlgoRSASHA512, - ssh.CertAlgoDSAv01: ssh.KeyAlgoDSA, - ssh.CertAlgoECDSA256v01: ssh.KeyAlgoECDSA256, - ssh.CertAlgoECDSA384v01: ssh.KeyAlgoECDSA384, - ssh.CertAlgoECDSA521v01: ssh.KeyAlgoECDSA521, - ssh.CertAlgoSKECDSA256v01: ssh.KeyAlgoSKECDSA256, - ssh.CertAlgoED25519v01: ssh.KeyAlgoED25519, - ssh.CertAlgoSKED25519v01: ssh.KeyAlgoSKED25519, -} - -// underlyingAlgo returns the signature algorithm associated with algo (which is -// an advertised or negotiated public key or host key algorithm). These are -// usually the same, except for certificate algorithms. -func underlyingAlgo(algo string) string { - if a, ok := certKeyAlgoNames[algo]; ok { - return a - } - return algo -} - -// Calls an extension method. It is up to the agent implementation as to whether or not -// any particular extension is supported and may always return an error. Because the -// type of the response is up to the implementation, this returns the bytes of the -// response and does not attempt any type of unmarshalling. -func (c *client) Extension(extensionType string, contents []byte) ([]byte, error) { - req := ssh.Marshal(extensionAgentMsg{ - ExtensionType: extensionType, - Contents: contents, - }) - buf, err := c.callRaw(req) - if err != nil { - return nil, err - } - if len(buf) == 0 { - return nil, errors.New("agent: failure; empty response") - } - // [PROTOCOL.agent] section 4.7 indicates that an SSH_AGENT_FAILURE message - // represents an agent that does not support the extension - if buf[0] == agentFailure { - return nil, ErrExtensionUnsupported - } - if buf[0] == agentExtensionFailure { - return nil, errors.New("agent: generic extension failure") - } - - return buf, nil -} diff --git a/vendor/golang.org/x/crypto/ssh/agent/forward.go b/vendor/golang.org/x/crypto/ssh/agent/forward.go deleted file mode 100644 index fd24ba9..0000000 --- a/vendor/golang.org/x/crypto/ssh/agent/forward.go +++ /dev/null @@ -1,103 +0,0 @@ -// 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 agent - -import ( - "errors" - "io" - "net" - "sync" - - "golang.org/x/crypto/ssh" -) - -// RequestAgentForwarding sets up agent forwarding for the session. -// ForwardToAgent or ForwardToRemote should be called to route -// the authentication requests. -func RequestAgentForwarding(session *ssh.Session) error { - ok, err := session.SendRequest("auth-agent-req@openssh.com", true, nil) - if err != nil { - return err - } - if !ok { - return errors.New("forwarding request denied") - } - return nil -} - -// ForwardToAgent routes authentication requests to the given keyring. -func ForwardToAgent(client *ssh.Client, keyring Agent) error { - channels := client.HandleChannelOpen(channelType) - if channels == nil { - return errors.New("agent: already have handler for " + channelType) - } - - go func() { - for ch := range channels { - channel, reqs, err := ch.Accept() - if err != nil { - continue - } - go ssh.DiscardRequests(reqs) - go func() { - ServeAgent(keyring, channel) - channel.Close() - }() - } - }() - return nil -} - -const channelType = "auth-agent@openssh.com" - -// ForwardToRemote routes authentication requests to the ssh-agent -// process serving on the given unix socket. -func ForwardToRemote(client *ssh.Client, addr string) error { - channels := client.HandleChannelOpen(channelType) - if channels == nil { - return errors.New("agent: already have handler for " + channelType) - } - conn, err := net.Dial("unix", addr) - if err != nil { - return err - } - conn.Close() - - go func() { - for ch := range channels { - channel, reqs, err := ch.Accept() - if err != nil { - continue - } - go ssh.DiscardRequests(reqs) - go forwardUnixSocket(channel, addr) - } - }() - return nil -} - -func forwardUnixSocket(channel ssh.Channel, addr string) { - conn, err := net.Dial("unix", addr) - if err != nil { - return - } - - var wg sync.WaitGroup - wg.Add(2) - go func() { - io.Copy(conn, channel) - conn.(*net.UnixConn).CloseWrite() - wg.Done() - }() - go func() { - io.Copy(channel, conn) - channel.CloseWrite() - wg.Done() - }() - - wg.Wait() - conn.Close() - channel.Close() -} diff --git a/vendor/golang.org/x/crypto/ssh/agent/keyring.go b/vendor/golang.org/x/crypto/ssh/agent/keyring.go deleted file mode 100644 index 21bfa87..0000000 --- a/vendor/golang.org/x/crypto/ssh/agent/keyring.go +++ /dev/null @@ -1,241 +0,0 @@ -// 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 agent - -import ( - "bytes" - "crypto/rand" - "crypto/subtle" - "errors" - "fmt" - "sync" - "time" - - "golang.org/x/crypto/ssh" -) - -type privKey struct { - signer ssh.Signer - comment string - expire *time.Time -} - -type keyring struct { - mu sync.Mutex - keys []privKey - - locked bool - passphrase []byte -} - -var errLocked = errors.New("agent: locked") - -// NewKeyring returns an Agent that holds keys in memory. It is safe -// for concurrent use by multiple goroutines. -func NewKeyring() Agent { - return &keyring{} -} - -// RemoveAll removes all identities. -func (r *keyring) RemoveAll() error { - r.mu.Lock() - defer r.mu.Unlock() - if r.locked { - return errLocked - } - - r.keys = nil - return nil -} - -// removeLocked does the actual key removal. The caller must already be holding the -// keyring mutex. -func (r *keyring) removeLocked(want []byte) error { - found := false - for i := 0; i < len(r.keys); { - if bytes.Equal(r.keys[i].signer.PublicKey().Marshal(), want) { - found = true - r.keys[i] = r.keys[len(r.keys)-1] - r.keys = r.keys[:len(r.keys)-1] - continue - } else { - i++ - } - } - - if !found { - return errors.New("agent: key not found") - } - return nil -} - -// Remove removes all identities with the given public key. -func (r *keyring) Remove(key ssh.PublicKey) error { - r.mu.Lock() - defer r.mu.Unlock() - if r.locked { - return errLocked - } - - return r.removeLocked(key.Marshal()) -} - -// Lock locks the agent. Sign and Remove will fail, and List will return an empty list. -func (r *keyring) Lock(passphrase []byte) error { - r.mu.Lock() - defer r.mu.Unlock() - if r.locked { - return errLocked - } - - r.locked = true - r.passphrase = passphrase - return nil -} - -// Unlock undoes the effect of Lock -func (r *keyring) Unlock(passphrase []byte) error { - r.mu.Lock() - defer r.mu.Unlock() - if !r.locked { - return errors.New("agent: not locked") - } - if 1 != subtle.ConstantTimeCompare(passphrase, r.passphrase) { - return fmt.Errorf("agent: incorrect passphrase") - } - - r.locked = false - r.passphrase = nil - return nil -} - -// expireKeysLocked removes expired keys from the keyring. If a key was added -// with a lifetimesecs contraint and seconds >= lifetimesecs seconds have -// elapsed, it is removed. The caller *must* be holding the keyring mutex. -func (r *keyring) expireKeysLocked() { - for _, k := range r.keys { - if k.expire != nil && time.Now().After(*k.expire) { - r.removeLocked(k.signer.PublicKey().Marshal()) - } - } -} - -// List returns the identities known to the agent. -func (r *keyring) List() ([]*Key, error) { - r.mu.Lock() - defer r.mu.Unlock() - if r.locked { - // section 2.7: locked agents return empty. - return nil, nil - } - - r.expireKeysLocked() - var ids []*Key - for _, k := range r.keys { - pub := k.signer.PublicKey() - ids = append(ids, &Key{ - Format: pub.Type(), - Blob: pub.Marshal(), - Comment: k.comment}) - } - return ids, nil -} - -// Insert adds a private key to the keyring. If a certificate -// is given, that certificate is added as public key. Note that -// any constraints given are ignored. -func (r *keyring) Add(key AddedKey) error { - r.mu.Lock() - defer r.mu.Unlock() - if r.locked { - return errLocked - } - signer, err := ssh.NewSignerFromKey(key.PrivateKey) - - if err != nil { - return err - } - - if cert := key.Certificate; cert != nil { - signer, err = ssh.NewCertSigner(cert, signer) - if err != nil { - return err - } - } - - p := privKey{ - signer: signer, - comment: key.Comment, - } - - if key.LifetimeSecs > 0 { - t := time.Now().Add(time.Duration(key.LifetimeSecs) * time.Second) - p.expire = &t - } - - r.keys = append(r.keys, p) - - return nil -} - -// Sign returns a signature for the data. -func (r *keyring) Sign(key ssh.PublicKey, data []byte) (*ssh.Signature, error) { - return r.SignWithFlags(key, data, 0) -} - -func (r *keyring) SignWithFlags(key ssh.PublicKey, data []byte, flags SignatureFlags) (*ssh.Signature, error) { - r.mu.Lock() - defer r.mu.Unlock() - if r.locked { - return nil, errLocked - } - - r.expireKeysLocked() - wanted := key.Marshal() - for _, k := range r.keys { - if bytes.Equal(k.signer.PublicKey().Marshal(), wanted) { - if flags == 0 { - return k.signer.Sign(rand.Reader, data) - } else { - if algorithmSigner, ok := k.signer.(ssh.AlgorithmSigner); !ok { - return nil, fmt.Errorf("agent: signature does not support non-default signature algorithm: %T", k.signer) - } else { - var algorithm string - switch flags { - case SignatureFlagRsaSha256: - algorithm = ssh.KeyAlgoRSASHA256 - case SignatureFlagRsaSha512: - algorithm = ssh.KeyAlgoRSASHA512 - default: - return nil, fmt.Errorf("agent: unsupported signature flags: %d", flags) - } - return algorithmSigner.SignWithAlgorithm(rand.Reader, data, algorithm) - } - } - } - } - return nil, errors.New("not found") -} - -// Signers returns signers for all the known keys. -func (r *keyring) Signers() ([]ssh.Signer, error) { - r.mu.Lock() - defer r.mu.Unlock() - if r.locked { - return nil, errLocked - } - - r.expireKeysLocked() - s := make([]ssh.Signer, 0, len(r.keys)) - for _, k := range r.keys { - s = append(s, k.signer) - } - return s, nil -} - -// The keyring does not support any extensions -func (r *keyring) Extension(extensionType string, contents []byte) ([]byte, error) { - return nil, ErrExtensionUnsupported -} diff --git a/vendor/golang.org/x/crypto/ssh/agent/server.go b/vendor/golang.org/x/crypto/ssh/agent/server.go deleted file mode 100644 index 6e7a1e0..0000000 --- a/vendor/golang.org/x/crypto/ssh/agent/server.go +++ /dev/null @@ -1,570 +0,0 @@ -// Copyright 2012 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 agent - -import ( - "crypto/dsa" - "crypto/ecdsa" - "crypto/elliptic" - "crypto/rsa" - "encoding/binary" - "errors" - "fmt" - "io" - "log" - "math/big" - - "golang.org/x/crypto/ed25519" - "golang.org/x/crypto/ssh" -) - -// Server wraps an Agent and uses it to implement the agent side of -// the SSH-agent, wire protocol. -type server struct { - agent Agent -} - -func (s *server) processRequestBytes(reqData []byte) []byte { - rep, err := s.processRequest(reqData) - if err != nil { - if err != errLocked { - // TODO(hanwen): provide better logging interface? - log.Printf("agent %d: %v", reqData[0], err) - } - return []byte{agentFailure} - } - - if err == nil && rep == nil { - return []byte{agentSuccess} - } - - return ssh.Marshal(rep) -} - -func marshalKey(k *Key) []byte { - var record struct { - Blob []byte - Comment string - } - record.Blob = k.Marshal() - record.Comment = k.Comment - - return ssh.Marshal(&record) -} - -// See [PROTOCOL.agent], section 2.5.1. -const agentV1IdentitiesAnswer = 2 - -type agentV1IdentityMsg struct { - Numkeys uint32 `sshtype:"2"` -} - -type agentRemoveIdentityMsg struct { - KeyBlob []byte `sshtype:"18"` -} - -type agentLockMsg struct { - Passphrase []byte `sshtype:"22"` -} - -type agentUnlockMsg struct { - Passphrase []byte `sshtype:"23"` -} - -func (s *server) processRequest(data []byte) (interface{}, error) { - switch data[0] { - case agentRequestV1Identities: - return &agentV1IdentityMsg{0}, nil - - case agentRemoveAllV1Identities: - return nil, nil - - case agentRemoveIdentity: - var req agentRemoveIdentityMsg - if err := ssh.Unmarshal(data, &req); err != nil { - return nil, err - } - - var wk wireKey - if err := ssh.Unmarshal(req.KeyBlob, &wk); err != nil { - return nil, err - } - - return nil, s.agent.Remove(&Key{Format: wk.Format, Blob: req.KeyBlob}) - - case agentRemoveAllIdentities: - return nil, s.agent.RemoveAll() - - case agentLock: - var req agentLockMsg - if err := ssh.Unmarshal(data, &req); err != nil { - return nil, err - } - - return nil, s.agent.Lock(req.Passphrase) - - case agentUnlock: - var req agentUnlockMsg - if err := ssh.Unmarshal(data, &req); err != nil { - return nil, err - } - return nil, s.agent.Unlock(req.Passphrase) - - case agentSignRequest: - var req signRequestAgentMsg - if err := ssh.Unmarshal(data, &req); err != nil { - return nil, err - } - - var wk wireKey - if err := ssh.Unmarshal(req.KeyBlob, &wk); err != nil { - return nil, err - } - - k := &Key{ - Format: wk.Format, - Blob: req.KeyBlob, - } - - var sig *ssh.Signature - var err error - if extendedAgent, ok := s.agent.(ExtendedAgent); ok { - sig, err = extendedAgent.SignWithFlags(k, req.Data, SignatureFlags(req.Flags)) - } else { - sig, err = s.agent.Sign(k, req.Data) - } - - if err != nil { - return nil, err - } - return &signResponseAgentMsg{SigBlob: ssh.Marshal(sig)}, nil - - case agentRequestIdentities: - keys, err := s.agent.List() - if err != nil { - return nil, err - } - - rep := identitiesAnswerAgentMsg{ - NumKeys: uint32(len(keys)), - } - for _, k := range keys { - rep.Keys = append(rep.Keys, marshalKey(k)...) - } - return rep, nil - - case agentAddIDConstrained, agentAddIdentity: - return nil, s.insertIdentity(data) - - case agentExtension: - // Return a stub object where the whole contents of the response gets marshaled. - var responseStub struct { - Rest []byte `ssh:"rest"` - } - - if extendedAgent, ok := s.agent.(ExtendedAgent); !ok { - // If this agent doesn't implement extensions, [PROTOCOL.agent] section 4.7 - // requires that we return a standard SSH_AGENT_FAILURE message. - responseStub.Rest = []byte{agentFailure} - } else { - var req extensionAgentMsg - if err := ssh.Unmarshal(data, &req); err != nil { - return nil, err - } - res, err := extendedAgent.Extension(req.ExtensionType, req.Contents) - if err != nil { - // If agent extensions are unsupported, return a standard SSH_AGENT_FAILURE - // message as required by [PROTOCOL.agent] section 4.7. - if err == ErrExtensionUnsupported { - responseStub.Rest = []byte{agentFailure} - } else { - // As the result of any other error processing an extension request, - // [PROTOCOL.agent] section 4.7 requires that we return a - // SSH_AGENT_EXTENSION_FAILURE code. - responseStub.Rest = []byte{agentExtensionFailure} - } - } else { - if len(res) == 0 { - return nil, nil - } - responseStub.Rest = res - } - } - - return responseStub, nil - } - - return nil, fmt.Errorf("unknown opcode %d", data[0]) -} - -func parseConstraints(constraints []byte) (lifetimeSecs uint32, confirmBeforeUse bool, extensions []ConstraintExtension, err error) { - for len(constraints) != 0 { - switch constraints[0] { - case agentConstrainLifetime: - lifetimeSecs = binary.BigEndian.Uint32(constraints[1:5]) - constraints = constraints[5:] - case agentConstrainConfirm: - confirmBeforeUse = true - constraints = constraints[1:] - case agentConstrainExtension: - var msg constrainExtensionAgentMsg - if err = ssh.Unmarshal(constraints, &msg); err != nil { - return 0, false, nil, err - } - extensions = append(extensions, ConstraintExtension{ - ExtensionName: msg.ExtensionName, - ExtensionDetails: msg.ExtensionDetails, - }) - constraints = msg.Rest - default: - return 0, false, nil, fmt.Errorf("unknown constraint type: %d", constraints[0]) - } - } - return -} - -func setConstraints(key *AddedKey, constraintBytes []byte) error { - lifetimeSecs, confirmBeforeUse, constraintExtensions, err := parseConstraints(constraintBytes) - if err != nil { - return err - } - - key.LifetimeSecs = lifetimeSecs - key.ConfirmBeforeUse = confirmBeforeUse - key.ConstraintExtensions = constraintExtensions - return nil -} - -func parseRSAKey(req []byte) (*AddedKey, error) { - var k rsaKeyMsg - if err := ssh.Unmarshal(req, &k); err != nil { - return nil, err - } - if k.E.BitLen() > 30 { - return nil, errors.New("agent: RSA public exponent too large") - } - priv := &rsa.PrivateKey{ - PublicKey: rsa.PublicKey{ - E: int(k.E.Int64()), - N: k.N, - }, - D: k.D, - Primes: []*big.Int{k.P, k.Q}, - } - priv.Precompute() - - addedKey := &AddedKey{PrivateKey: priv, Comment: k.Comments} - if err := setConstraints(addedKey, k.Constraints); err != nil { - return nil, err - } - return addedKey, nil -} - -func parseEd25519Key(req []byte) (*AddedKey, error) { - var k ed25519KeyMsg - if err := ssh.Unmarshal(req, &k); err != nil { - return nil, err - } - priv := ed25519.PrivateKey(k.Priv) - - addedKey := &AddedKey{PrivateKey: &priv, Comment: k.Comments} - if err := setConstraints(addedKey, k.Constraints); err != nil { - return nil, err - } - return addedKey, nil -} - -func parseDSAKey(req []byte) (*AddedKey, error) { - var k dsaKeyMsg - if err := ssh.Unmarshal(req, &k); err != nil { - return nil, err - } - priv := &dsa.PrivateKey{ - PublicKey: dsa.PublicKey{ - Parameters: dsa.Parameters{ - P: k.P, - Q: k.Q, - G: k.G, - }, - Y: k.Y, - }, - X: k.X, - } - - addedKey := &AddedKey{PrivateKey: priv, Comment: k.Comments} - if err := setConstraints(addedKey, k.Constraints); err != nil { - return nil, err - } - return addedKey, nil -} - -func unmarshalECDSA(curveName string, keyBytes []byte, privScalar *big.Int) (priv *ecdsa.PrivateKey, err error) { - priv = &ecdsa.PrivateKey{ - D: privScalar, - } - - switch curveName { - case "nistp256": - priv.Curve = elliptic.P256() - case "nistp384": - priv.Curve = elliptic.P384() - case "nistp521": - priv.Curve = elliptic.P521() - default: - return nil, fmt.Errorf("agent: unknown curve %q", curveName) - } - - priv.X, priv.Y = elliptic.Unmarshal(priv.Curve, keyBytes) - if priv.X == nil || priv.Y == nil { - return nil, errors.New("agent: point not on curve") - } - - return priv, nil -} - -func parseEd25519Cert(req []byte) (*AddedKey, error) { - var k ed25519CertMsg - if err := ssh.Unmarshal(req, &k); err != nil { - return nil, err - } - pubKey, err := ssh.ParsePublicKey(k.CertBytes) - if err != nil { - return nil, err - } - priv := ed25519.PrivateKey(k.Priv) - cert, ok := pubKey.(*ssh.Certificate) - if !ok { - return nil, errors.New("agent: bad ED25519 certificate") - } - - addedKey := &AddedKey{PrivateKey: &priv, Certificate: cert, Comment: k.Comments} - if err := setConstraints(addedKey, k.Constraints); err != nil { - return nil, err - } - return addedKey, nil -} - -func parseECDSAKey(req []byte) (*AddedKey, error) { - var k ecdsaKeyMsg - if err := ssh.Unmarshal(req, &k); err != nil { - return nil, err - } - - priv, err := unmarshalECDSA(k.Curve, k.KeyBytes, k.D) - if err != nil { - return nil, err - } - - addedKey := &AddedKey{PrivateKey: priv, Comment: k.Comments} - if err := setConstraints(addedKey, k.Constraints); err != nil { - return nil, err - } - return addedKey, nil -} - -func parseRSACert(req []byte) (*AddedKey, error) { - var k rsaCertMsg - if err := ssh.Unmarshal(req, &k); err != nil { - return nil, err - } - - pubKey, err := ssh.ParsePublicKey(k.CertBytes) - if err != nil { - return nil, err - } - - cert, ok := pubKey.(*ssh.Certificate) - if !ok { - return nil, errors.New("agent: bad RSA certificate") - } - - // An RSA publickey as marshaled by rsaPublicKey.Marshal() in keys.go - var rsaPub struct { - Name string - E *big.Int - N *big.Int - } - if err := ssh.Unmarshal(cert.Key.Marshal(), &rsaPub); err != nil { - return nil, fmt.Errorf("agent: Unmarshal failed to parse public key: %v", err) - } - - if rsaPub.E.BitLen() > 30 { - return nil, errors.New("agent: RSA public exponent too large") - } - - priv := rsa.PrivateKey{ - PublicKey: rsa.PublicKey{ - E: int(rsaPub.E.Int64()), - N: rsaPub.N, - }, - D: k.D, - Primes: []*big.Int{k.Q, k.P}, - } - priv.Precompute() - - addedKey := &AddedKey{PrivateKey: &priv, Certificate: cert, Comment: k.Comments} - if err := setConstraints(addedKey, k.Constraints); err != nil { - return nil, err - } - return addedKey, nil -} - -func parseDSACert(req []byte) (*AddedKey, error) { - var k dsaCertMsg - if err := ssh.Unmarshal(req, &k); err != nil { - return nil, err - } - pubKey, err := ssh.ParsePublicKey(k.CertBytes) - if err != nil { - return nil, err - } - cert, ok := pubKey.(*ssh.Certificate) - if !ok { - return nil, errors.New("agent: bad DSA certificate") - } - - // A DSA publickey as marshaled by dsaPublicKey.Marshal() in keys.go - var w struct { - Name string - P, Q, G, Y *big.Int - } - if err := ssh.Unmarshal(cert.Key.Marshal(), &w); err != nil { - return nil, fmt.Errorf("agent: Unmarshal failed to parse public key: %v", err) - } - - priv := &dsa.PrivateKey{ - PublicKey: dsa.PublicKey{ - Parameters: dsa.Parameters{ - P: w.P, - Q: w.Q, - G: w.G, - }, - Y: w.Y, - }, - X: k.X, - } - - addedKey := &AddedKey{PrivateKey: priv, Certificate: cert, Comment: k.Comments} - if err := setConstraints(addedKey, k.Constraints); err != nil { - return nil, err - } - return addedKey, nil -} - -func parseECDSACert(req []byte) (*AddedKey, error) { - var k ecdsaCertMsg - if err := ssh.Unmarshal(req, &k); err != nil { - return nil, err - } - - pubKey, err := ssh.ParsePublicKey(k.CertBytes) - if err != nil { - return nil, err - } - cert, ok := pubKey.(*ssh.Certificate) - if !ok { - return nil, errors.New("agent: bad ECDSA certificate") - } - - // An ECDSA publickey as marshaled by ecdsaPublicKey.Marshal() in keys.go - var ecdsaPub struct { - Name string - ID string - Key []byte - } - if err := ssh.Unmarshal(cert.Key.Marshal(), &ecdsaPub); err != nil { - return nil, err - } - - priv, err := unmarshalECDSA(ecdsaPub.ID, ecdsaPub.Key, k.D) - if err != nil { - return nil, err - } - - addedKey := &AddedKey{PrivateKey: priv, Certificate: cert, Comment: k.Comments} - if err := setConstraints(addedKey, k.Constraints); err != nil { - return nil, err - } - return addedKey, nil -} - -func (s *server) insertIdentity(req []byte) error { - var record struct { - Type string `sshtype:"17|25"` - Rest []byte `ssh:"rest"` - } - - if err := ssh.Unmarshal(req, &record); err != nil { - return err - } - - var addedKey *AddedKey - var err error - - switch record.Type { - case ssh.KeyAlgoRSA: - addedKey, err = parseRSAKey(req) - case ssh.KeyAlgoDSA: - addedKey, err = parseDSAKey(req) - case ssh.KeyAlgoECDSA256, ssh.KeyAlgoECDSA384, ssh.KeyAlgoECDSA521: - addedKey, err = parseECDSAKey(req) - case ssh.KeyAlgoED25519: - addedKey, err = parseEd25519Key(req) - case ssh.CertAlgoRSAv01: - addedKey, err = parseRSACert(req) - case ssh.CertAlgoDSAv01: - addedKey, err = parseDSACert(req) - case ssh.CertAlgoECDSA256v01, ssh.CertAlgoECDSA384v01, ssh.CertAlgoECDSA521v01: - addedKey, err = parseECDSACert(req) - case ssh.CertAlgoED25519v01: - addedKey, err = parseEd25519Cert(req) - default: - return fmt.Errorf("agent: not implemented: %q", record.Type) - } - - if err != nil { - return err - } - return s.agent.Add(*addedKey) -} - -// ServeAgent serves the agent protocol on the given connection. It -// returns when an I/O error occurs. -func ServeAgent(agent Agent, c io.ReadWriter) error { - s := &server{agent} - - var length [4]byte - for { - if _, err := io.ReadFull(c, length[:]); err != nil { - return err - } - l := binary.BigEndian.Uint32(length[:]) - if l == 0 { - return fmt.Errorf("agent: request size is 0") - } - if l > maxAgentResponseBytes { - // We also cap requests. - return fmt.Errorf("agent: request too large: %d", l) - } - - req := make([]byte, l) - if _, err := io.ReadFull(c, req); err != nil { - return err - } - - repData := s.processRequestBytes(req) - if len(repData) > maxAgentResponseBytes { - return fmt.Errorf("agent: reply too large: %d bytes", len(repData)) - } - - binary.BigEndian.PutUint32(length[:], uint32(len(repData))) - if _, err := c.Write(length[:]); err != nil { - return err - } - if _, err := c.Write(repData); err != nil { - return err - } - } -} diff --git a/vendor/golang.org/x/crypto/ssh/buffer.go b/vendor/golang.org/x/crypto/ssh/buffer.go deleted file mode 100644 index 1ab07d0..0000000 --- a/vendor/golang.org/x/crypto/ssh/buffer.go +++ /dev/null @@ -1,97 +0,0 @@ -// Copyright 2012 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 ssh - -import ( - "io" - "sync" -) - -// buffer provides a linked list buffer for data exchange -// between producer and consumer. Theoretically the buffer is -// of unlimited capacity as it does no allocation of its own. -type buffer struct { - // protects concurrent access to head, tail and closed - *sync.Cond - - head *element // the buffer that will be read first - tail *element // the buffer that will be read last - - closed bool -} - -// An element represents a single link in a linked list. -type element struct { - buf []byte - next *element -} - -// newBuffer returns an empty buffer that is not closed. -func newBuffer() *buffer { - e := new(element) - b := &buffer{ - Cond: newCond(), - head: e, - tail: e, - } - return b -} - -// write makes buf available for Read to receive. -// buf must not be modified after the call to write. -func (b *buffer) write(buf []byte) { - b.Cond.L.Lock() - e := &element{buf: buf} - b.tail.next = e - b.tail = e - b.Cond.Signal() - b.Cond.L.Unlock() -} - -// eof closes the buffer. Reads from the buffer once all -// the data has been consumed will receive io.EOF. -func (b *buffer) eof() { - b.Cond.L.Lock() - b.closed = true - b.Cond.Signal() - b.Cond.L.Unlock() -} - -// Read reads data from the internal buffer in buf. Reads will block -// if no data is available, or until the buffer is closed. -func (b *buffer) Read(buf []byte) (n int, err error) { - b.Cond.L.Lock() - defer b.Cond.L.Unlock() - - for len(buf) > 0 { - // if there is data in b.head, copy it - if len(b.head.buf) > 0 { - r := copy(buf, b.head.buf) - buf, b.head.buf = buf[r:], b.head.buf[r:] - n += r - continue - } - // if there is a next buffer, make it the head - if len(b.head.buf) == 0 && b.head != b.tail { - b.head = b.head.next - continue - } - - // if at least one byte has been copied, return - if n > 0 { - break - } - - // if nothing was read, and there is nothing outstanding - // check to see if the buffer is closed. - if b.closed { - err = io.EOF - break - } - // out of buffers, wait for producer - b.Cond.Wait() - } - return -} diff --git a/vendor/golang.org/x/crypto/ssh/certs.go b/vendor/golang.org/x/crypto/ssh/certs.go deleted file mode 100644 index 4600c20..0000000 --- a/vendor/golang.org/x/crypto/ssh/certs.go +++ /dev/null @@ -1,589 +0,0 @@ -// Copyright 2012 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 ssh - -import ( - "bytes" - "errors" - "fmt" - "io" - "net" - "sort" - "time" -) - -// Certificate algorithm names from [PROTOCOL.certkeys]. These values can appear -// in Certificate.Type, PublicKey.Type, and ClientConfig.HostKeyAlgorithms. -// Unlike key algorithm names, these are not passed to AlgorithmSigner and don't -// appear in the Signature.Format field. -const ( - CertAlgoRSAv01 = "ssh-rsa-cert-v01@openssh.com" - CertAlgoDSAv01 = "ssh-dss-cert-v01@openssh.com" - CertAlgoECDSA256v01 = "ecdsa-sha2-nistp256-cert-v01@openssh.com" - CertAlgoECDSA384v01 = "ecdsa-sha2-nistp384-cert-v01@openssh.com" - CertAlgoECDSA521v01 = "ecdsa-sha2-nistp521-cert-v01@openssh.com" - CertAlgoSKECDSA256v01 = "sk-ecdsa-sha2-nistp256-cert-v01@openssh.com" - CertAlgoED25519v01 = "ssh-ed25519-cert-v01@openssh.com" - CertAlgoSKED25519v01 = "sk-ssh-ed25519-cert-v01@openssh.com" - - // CertAlgoRSASHA256v01 and CertAlgoRSASHA512v01 can't appear as a - // Certificate.Type (or PublicKey.Type), but only in - // ClientConfig.HostKeyAlgorithms. - CertAlgoRSASHA256v01 = "rsa-sha2-256-cert-v01@openssh.com" - CertAlgoRSASHA512v01 = "rsa-sha2-512-cert-v01@openssh.com" -) - -const ( - // Deprecated: use CertAlgoRSAv01. - CertSigAlgoRSAv01 = CertAlgoRSAv01 - // Deprecated: use CertAlgoRSASHA256v01. - CertSigAlgoRSASHA2256v01 = CertAlgoRSASHA256v01 - // Deprecated: use CertAlgoRSASHA512v01. - CertSigAlgoRSASHA2512v01 = CertAlgoRSASHA512v01 -) - -// Certificate types distinguish between host and user -// certificates. The values can be set in the CertType field of -// Certificate. -const ( - UserCert = 1 - HostCert = 2 -) - -// Signature represents a cryptographic signature. -type Signature struct { - Format string - Blob []byte - Rest []byte `ssh:"rest"` -} - -// CertTimeInfinity can be used for OpenSSHCertV01.ValidBefore to indicate that -// a certificate does not expire. -const CertTimeInfinity = 1<<64 - 1 - -// An Certificate represents an OpenSSH certificate as defined in -// [PROTOCOL.certkeys]?rev=1.8. The Certificate type implements the -// PublicKey interface, so it can be unmarshaled using -// ParsePublicKey. -type Certificate struct { - Nonce []byte - Key PublicKey - Serial uint64 - CertType uint32 - KeyId string - ValidPrincipals []string - ValidAfter uint64 - ValidBefore uint64 - Permissions - Reserved []byte - SignatureKey PublicKey - Signature *Signature -} - -// genericCertData holds the key-independent part of the certificate data. -// Overall, certificates contain an nonce, public key fields and -// key-independent fields. -type genericCertData struct { - Serial uint64 - CertType uint32 - KeyId string - ValidPrincipals []byte - ValidAfter uint64 - ValidBefore uint64 - CriticalOptions []byte - Extensions []byte - Reserved []byte - SignatureKey []byte - Signature []byte -} - -func marshalStringList(namelist []string) []byte { - var to []byte - for _, name := range namelist { - s := struct{ N string }{name} - to = append(to, Marshal(&s)...) - } - return to -} - -type optionsTuple struct { - Key string - Value []byte -} - -type optionsTupleValue struct { - Value string -} - -// serialize a map of critical options or extensions -// issue #10569 - per [PROTOCOL.certkeys] and SSH implementation, -// we need two length prefixes for a non-empty string value -func marshalTuples(tups map[string]string) []byte { - keys := make([]string, 0, len(tups)) - for key := range tups { - keys = append(keys, key) - } - sort.Strings(keys) - - var ret []byte - for _, key := range keys { - s := optionsTuple{Key: key} - if value := tups[key]; len(value) > 0 { - s.Value = Marshal(&optionsTupleValue{value}) - } - ret = append(ret, Marshal(&s)...) - } - return ret -} - -// issue #10569 - per [PROTOCOL.certkeys] and SSH implementation, -// we need two length prefixes for a non-empty option value -func parseTuples(in []byte) (map[string]string, error) { - tups := map[string]string{} - var lastKey string - var haveLastKey bool - - for len(in) > 0 { - var key, val, extra []byte - var ok bool - - if key, in, ok = parseString(in); !ok { - return nil, errShortRead - } - keyStr := string(key) - // according to [PROTOCOL.certkeys], the names must be in - // lexical order. - if haveLastKey && keyStr <= lastKey { - return nil, fmt.Errorf("ssh: certificate options are not in lexical order") - } - lastKey, haveLastKey = keyStr, true - // the next field is a data field, which if non-empty has a string embedded - if val, in, ok = parseString(in); !ok { - return nil, errShortRead - } - if len(val) > 0 { - val, extra, ok = parseString(val) - if !ok { - return nil, errShortRead - } - if len(extra) > 0 { - return nil, fmt.Errorf("ssh: unexpected trailing data after certificate option value") - } - tups[keyStr] = string(val) - } else { - tups[keyStr] = "" - } - } - return tups, nil -} - -func parseCert(in []byte, privAlgo string) (*Certificate, error) { - nonce, rest, ok := parseString(in) - if !ok { - return nil, errShortRead - } - - key, rest, err := parsePubKey(rest, privAlgo) - if err != nil { - return nil, err - } - - var g genericCertData - if err := Unmarshal(rest, &g); err != nil { - return nil, err - } - - c := &Certificate{ - Nonce: nonce, - Key: key, - Serial: g.Serial, - CertType: g.CertType, - KeyId: g.KeyId, - ValidAfter: g.ValidAfter, - ValidBefore: g.ValidBefore, - } - - for principals := g.ValidPrincipals; len(principals) > 0; { - principal, rest, ok := parseString(principals) - if !ok { - return nil, errShortRead - } - c.ValidPrincipals = append(c.ValidPrincipals, string(principal)) - principals = rest - } - - c.CriticalOptions, err = parseTuples(g.CriticalOptions) - if err != nil { - return nil, err - } - c.Extensions, err = parseTuples(g.Extensions) - if err != nil { - return nil, err - } - c.Reserved = g.Reserved - k, err := ParsePublicKey(g.SignatureKey) - if err != nil { - return nil, err - } - - c.SignatureKey = k - c.Signature, rest, ok = parseSignatureBody(g.Signature) - if !ok || len(rest) > 0 { - return nil, errors.New("ssh: signature parse error") - } - - return c, nil -} - -type openSSHCertSigner struct { - pub *Certificate - signer Signer -} - -type algorithmOpenSSHCertSigner struct { - *openSSHCertSigner - algorithmSigner AlgorithmSigner -} - -// NewCertSigner returns a Signer that signs with the given Certificate, whose -// private key is held by signer. It returns an error if the public key in cert -// doesn't match the key used by signer. -func NewCertSigner(cert *Certificate, signer Signer) (Signer, error) { - if bytes.Compare(cert.Key.Marshal(), signer.PublicKey().Marshal()) != 0 { - return nil, errors.New("ssh: signer and cert have different public key") - } - - if algorithmSigner, ok := signer.(AlgorithmSigner); ok { - return &algorithmOpenSSHCertSigner{ - &openSSHCertSigner{cert, signer}, algorithmSigner}, nil - } else { - return &openSSHCertSigner{cert, signer}, nil - } -} - -func (s *openSSHCertSigner) Sign(rand io.Reader, data []byte) (*Signature, error) { - return s.signer.Sign(rand, data) -} - -func (s *openSSHCertSigner) PublicKey() PublicKey { - return s.pub -} - -func (s *algorithmOpenSSHCertSigner) SignWithAlgorithm(rand io.Reader, data []byte, algorithm string) (*Signature, error) { - return s.algorithmSigner.SignWithAlgorithm(rand, data, algorithm) -} - -const sourceAddressCriticalOption = "source-address" - -// CertChecker does the work of verifying a certificate. Its methods -// can be plugged into ClientConfig.HostKeyCallback and -// ServerConfig.PublicKeyCallback. For the CertChecker to work, -// minimally, the IsAuthority callback should be set. -type CertChecker struct { - // SupportedCriticalOptions lists the CriticalOptions that the - // server application layer understands. These are only used - // for user certificates. - SupportedCriticalOptions []string - - // IsUserAuthority should return true if the key is recognized as an - // authority for the given user certificate. This allows for - // certificates to be signed by other certificates. This must be set - // if this CertChecker will be checking user certificates. - IsUserAuthority func(auth PublicKey) bool - - // IsHostAuthority should report whether the key is recognized as - // an authority for this host. This allows for certificates to be - // signed by other keys, and for those other keys to only be valid - // signers for particular hostnames. This must be set if this - // CertChecker will be checking host certificates. - IsHostAuthority func(auth PublicKey, address string) bool - - // Clock is used for verifying time stamps. If nil, time.Now - // is used. - Clock func() time.Time - - // UserKeyFallback is called when CertChecker.Authenticate encounters a - // public key that is not a certificate. It must implement validation - // of user keys or else, if nil, all such keys are rejected. - UserKeyFallback func(conn ConnMetadata, key PublicKey) (*Permissions, error) - - // HostKeyFallback is called when CertChecker.CheckHostKey encounters a - // public key that is not a certificate. It must implement host key - // validation or else, if nil, all such keys are rejected. - HostKeyFallback HostKeyCallback - - // IsRevoked is called for each certificate so that revocation checking - // can be implemented. It should return true if the given certificate - // is revoked and false otherwise. If nil, no certificates are - // considered to have been revoked. - IsRevoked func(cert *Certificate) bool -} - -// CheckHostKey checks a host key certificate. This method can be -// plugged into ClientConfig.HostKeyCallback. -func (c *CertChecker) CheckHostKey(addr string, remote net.Addr, key PublicKey) error { - cert, ok := key.(*Certificate) - if !ok { - if c.HostKeyFallback != nil { - return c.HostKeyFallback(addr, remote, key) - } - return errors.New("ssh: non-certificate host key") - } - if cert.CertType != HostCert { - return fmt.Errorf("ssh: certificate presented as a host key has type %d", cert.CertType) - } - if !c.IsHostAuthority(cert.SignatureKey, addr) { - return fmt.Errorf("ssh: no authorities for hostname: %v", addr) - } - - hostname, _, err := net.SplitHostPort(addr) - if err != nil { - return err - } - - // Pass hostname only as principal for host certificates (consistent with OpenSSH) - return c.CheckCert(hostname, cert) -} - -// Authenticate checks a user certificate. Authenticate can be used as -// a value for ServerConfig.PublicKeyCallback. -func (c *CertChecker) Authenticate(conn ConnMetadata, pubKey PublicKey) (*Permissions, error) { - cert, ok := pubKey.(*Certificate) - if !ok { - if c.UserKeyFallback != nil { - return c.UserKeyFallback(conn, pubKey) - } - return nil, errors.New("ssh: normal key pairs not accepted") - } - - if cert.CertType != UserCert { - return nil, fmt.Errorf("ssh: cert has type %d", cert.CertType) - } - if !c.IsUserAuthority(cert.SignatureKey) { - return nil, fmt.Errorf("ssh: certificate signed by unrecognized authority") - } - - if err := c.CheckCert(conn.User(), cert); err != nil { - return nil, err - } - - return &cert.Permissions, nil -} - -// CheckCert checks CriticalOptions, ValidPrincipals, revocation, timestamp and -// the signature of the certificate. -func (c *CertChecker) CheckCert(principal string, cert *Certificate) error { - if c.IsRevoked != nil && c.IsRevoked(cert) { - return fmt.Errorf("ssh: certificate serial %d revoked", cert.Serial) - } - - for opt := range cert.CriticalOptions { - // sourceAddressCriticalOption will be enforced by - // serverAuthenticate - if opt == sourceAddressCriticalOption { - continue - } - - found := false - for _, supp := range c.SupportedCriticalOptions { - if supp == opt { - found = true - break - } - } - if !found { - return fmt.Errorf("ssh: unsupported critical option %q in certificate", opt) - } - } - - if len(cert.ValidPrincipals) > 0 { - // By default, certs are valid for all users/hosts. - found := false - for _, p := range cert.ValidPrincipals { - if p == principal { - found = true - break - } - } - if !found { - return fmt.Errorf("ssh: principal %q not in the set of valid principals for given certificate: %q", principal, cert.ValidPrincipals) - } - } - - clock := c.Clock - if clock == nil { - clock = time.Now - } - - unixNow := clock().Unix() - if after := int64(cert.ValidAfter); after < 0 || unixNow < int64(cert.ValidAfter) { - return fmt.Errorf("ssh: cert is not yet valid") - } - if before := int64(cert.ValidBefore); cert.ValidBefore != uint64(CertTimeInfinity) && (unixNow >= before || before < 0) { - return fmt.Errorf("ssh: cert has expired") - } - if err := cert.SignatureKey.Verify(cert.bytesForSigning(), cert.Signature); err != nil { - return fmt.Errorf("ssh: certificate signature does not verify") - } - - return nil -} - -// SignCert signs the certificate with an authority, setting the Nonce, -// SignatureKey, and Signature fields. -func (c *Certificate) SignCert(rand io.Reader, authority Signer) error { - c.Nonce = make([]byte, 32) - if _, err := io.ReadFull(rand, c.Nonce); err != nil { - return err - } - c.SignatureKey = authority.PublicKey() - - // Default to KeyAlgoRSASHA512 for ssh-rsa signers. - if v, ok := authority.(AlgorithmSigner); ok && v.PublicKey().Type() == KeyAlgoRSA { - sig, err := v.SignWithAlgorithm(rand, c.bytesForSigning(), KeyAlgoRSASHA512) - if err != nil { - return err - } - c.Signature = sig - return nil - } - - sig, err := authority.Sign(rand, c.bytesForSigning()) - if err != nil { - return err - } - c.Signature = sig - return nil -} - -// certKeyAlgoNames is a mapping from known certificate algorithm names to the -// corresponding public key signature algorithm. -// -// This map must be kept in sync with the one in agent/client.go. -var certKeyAlgoNames = map[string]string{ - CertAlgoRSAv01: KeyAlgoRSA, - CertAlgoRSASHA256v01: KeyAlgoRSASHA256, - CertAlgoRSASHA512v01: KeyAlgoRSASHA512, - CertAlgoDSAv01: KeyAlgoDSA, - CertAlgoECDSA256v01: KeyAlgoECDSA256, - CertAlgoECDSA384v01: KeyAlgoECDSA384, - CertAlgoECDSA521v01: KeyAlgoECDSA521, - CertAlgoSKECDSA256v01: KeyAlgoSKECDSA256, - CertAlgoED25519v01: KeyAlgoED25519, - CertAlgoSKED25519v01: KeyAlgoSKED25519, -} - -// underlyingAlgo returns the signature algorithm associated with algo (which is -// an advertised or negotiated public key or host key algorithm). These are -// usually the same, except for certificate algorithms. -func underlyingAlgo(algo string) string { - if a, ok := certKeyAlgoNames[algo]; ok { - return a - } - return algo -} - -// certificateAlgo returns the certificate algorithms that uses the provided -// underlying signature algorithm. -func certificateAlgo(algo string) (certAlgo string, ok bool) { - for certName, algoName := range certKeyAlgoNames { - if algoName == algo { - return certName, true - } - } - return "", false -} - -func (cert *Certificate) bytesForSigning() []byte { - c2 := *cert - c2.Signature = nil - out := c2.Marshal() - // Drop trailing signature length. - return out[:len(out)-4] -} - -// Marshal serializes c into OpenSSH's wire format. It is part of the -// PublicKey interface. -func (c *Certificate) Marshal() []byte { - generic := genericCertData{ - Serial: c.Serial, - CertType: c.CertType, - KeyId: c.KeyId, - ValidPrincipals: marshalStringList(c.ValidPrincipals), - ValidAfter: uint64(c.ValidAfter), - ValidBefore: uint64(c.ValidBefore), - CriticalOptions: marshalTuples(c.CriticalOptions), - Extensions: marshalTuples(c.Extensions), - Reserved: c.Reserved, - SignatureKey: c.SignatureKey.Marshal(), - } - if c.Signature != nil { - generic.Signature = Marshal(c.Signature) - } - genericBytes := Marshal(&generic) - keyBytes := c.Key.Marshal() - _, keyBytes, _ = parseString(keyBytes) - prefix := Marshal(&struct { - Name string - Nonce []byte - Key []byte `ssh:"rest"` - }{c.Type(), c.Nonce, keyBytes}) - - result := make([]byte, 0, len(prefix)+len(genericBytes)) - result = append(result, prefix...) - result = append(result, genericBytes...) - return result -} - -// Type returns the certificate algorithm name. It is part of the PublicKey interface. -func (c *Certificate) Type() string { - certName, ok := certificateAlgo(c.Key.Type()) - if !ok { - panic("unknown certificate type for key type " + c.Key.Type()) - } - return certName -} - -// Verify verifies a signature against the certificate's public -// key. It is part of the PublicKey interface. -func (c *Certificate) Verify(data []byte, sig *Signature) error { - return c.Key.Verify(data, sig) -} - -func parseSignatureBody(in []byte) (out *Signature, rest []byte, ok bool) { - format, in, ok := parseString(in) - if !ok { - return - } - - out = &Signature{ - Format: string(format), - } - - if out.Blob, in, ok = parseString(in); !ok { - return - } - - switch out.Format { - case KeyAlgoSKECDSA256, CertAlgoSKECDSA256v01, KeyAlgoSKED25519, CertAlgoSKED25519v01: - out.Rest = in - return out, nil, ok - } - - return out, in, ok -} - -func parseSignature(in []byte) (out *Signature, rest []byte, ok bool) { - sigBytes, rest, ok := parseString(in) - if !ok { - return - } - - out, trailing, ok := parseSignatureBody(sigBytes) - if !ok || len(trailing) > 0 { - return nil, nil, false - } - return -} diff --git a/vendor/golang.org/x/crypto/ssh/channel.go b/vendor/golang.org/x/crypto/ssh/channel.go deleted file mode 100644 index c0834c0..0000000 --- a/vendor/golang.org/x/crypto/ssh/channel.go +++ /dev/null @@ -1,633 +0,0 @@ -// Copyright 2011 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 ssh - -import ( - "encoding/binary" - "errors" - "fmt" - "io" - "log" - "sync" -) - -const ( - minPacketLength = 9 - // channelMaxPacket contains the maximum number of bytes that will be - // sent in a single packet. As per RFC 4253, section 6.1, 32k is also - // the minimum. - channelMaxPacket = 1 << 15 - // We follow OpenSSH here. - channelWindowSize = 64 * channelMaxPacket -) - -// NewChannel represents an incoming request to a channel. It must either be -// accepted for use by calling Accept, or rejected by calling Reject. -type NewChannel interface { - // Accept accepts the channel creation request. It returns the Channel - // and a Go channel containing SSH requests. The Go channel must be - // serviced otherwise the Channel will hang. - Accept() (Channel, <-chan *Request, error) - - // Reject rejects the channel creation request. After calling - // this, no other methods on the Channel may be called. - Reject(reason RejectionReason, message string) error - - // ChannelType returns the type of the channel, as supplied by the - // client. - ChannelType() string - - // ExtraData returns the arbitrary payload for this channel, as supplied - // by the client. This data is specific to the channel type. - ExtraData() []byte -} - -// A Channel is an ordered, reliable, flow-controlled, duplex stream -// that is multiplexed over an SSH connection. -type Channel interface { - // Read reads up to len(data) bytes from the channel. - Read(data []byte) (int, error) - - // Write writes len(data) bytes to the channel. - Write(data []byte) (int, error) - - // Close signals end of channel use. No data may be sent after this - // call. - Close() error - - // CloseWrite signals the end of sending in-band - // data. Requests may still be sent, and the other side may - // still send data - CloseWrite() error - - // SendRequest sends a channel request. If wantReply is true, - // it will wait for a reply and return the result as a - // boolean, otherwise the return value will be false. Channel - // requests are out-of-band messages so they may be sent even - // if the data stream is closed or blocked by flow control. - // If the channel is closed before a reply is returned, io.EOF - // is returned. - SendRequest(name string, wantReply bool, payload []byte) (bool, error) - - // Stderr returns an io.ReadWriter that writes to this channel - // with the extended data type set to stderr. Stderr may - // safely be read and written from a different goroutine than - // Read and Write respectively. - Stderr() io.ReadWriter -} - -// Request is a request sent outside of the normal stream of -// data. Requests can either be specific to an SSH channel, or they -// can be global. -type Request struct { - Type string - WantReply bool - Payload []byte - - ch *channel - mux *mux -} - -// Reply sends a response to a request. It must be called for all requests -// where WantReply is true and is a no-op otherwise. The payload argument is -// ignored for replies to channel-specific requests. -func (r *Request) Reply(ok bool, payload []byte) error { - if !r.WantReply { - return nil - } - - if r.ch == nil { - return r.mux.ackRequest(ok, payload) - } - - return r.ch.ackRequest(ok) -} - -// RejectionReason is an enumeration used when rejecting channel creation -// requests. See RFC 4254, section 5.1. -type RejectionReason uint32 - -const ( - Prohibited RejectionReason = iota + 1 - ConnectionFailed - UnknownChannelType - ResourceShortage -) - -// String converts the rejection reason to human readable form. -func (r RejectionReason) String() string { - switch r { - case Prohibited: - return "administratively prohibited" - case ConnectionFailed: - return "connect failed" - case UnknownChannelType: - return "unknown channel type" - case ResourceShortage: - return "resource shortage" - } - return fmt.Sprintf("unknown reason %d", int(r)) -} - -func min(a uint32, b int) uint32 { - if a < uint32(b) { - return a - } - return uint32(b) -} - -type channelDirection uint8 - -const ( - channelInbound channelDirection = iota - channelOutbound -) - -// channel is an implementation of the Channel interface that works -// with the mux class. -type channel struct { - // R/O after creation - chanType string - extraData []byte - localId, remoteId uint32 - - // maxIncomingPayload and maxRemotePayload are the maximum - // payload sizes of normal and extended data packets for - // receiving and sending, respectively. The wire packet will - // be 9 or 13 bytes larger (excluding encryption overhead). - maxIncomingPayload uint32 - maxRemotePayload uint32 - - mux *mux - - // decided is set to true if an accept or reject message has been sent - // (for outbound channels) or received (for inbound channels). - decided bool - - // direction contains either channelOutbound, for channels created - // locally, or channelInbound, for channels created by the peer. - direction channelDirection - - // Pending internal channel messages. - msg chan interface{} - - // Since requests have no ID, there can be only one request - // with WantReply=true outstanding. This lock is held by a - // goroutine that has such an outgoing request pending. - sentRequestMu sync.Mutex - - incomingRequests chan *Request - - sentEOF bool - - // thread-safe data - remoteWin window - pending *buffer - extPending *buffer - - // windowMu protects myWindow, the flow-control window. - windowMu sync.Mutex - myWindow uint32 - - // writeMu serializes calls to mux.conn.writePacket() and - // protects sentClose and packetPool. This mutex must be - // different from windowMu, as writePacket can block if there - // is a key exchange pending. - writeMu sync.Mutex - sentClose bool - - // packetPool has a buffer for each extended channel ID to - // save allocations during writes. - packetPool map[uint32][]byte -} - -// writePacket sends a packet. If the packet is a channel close, it updates -// sentClose. This method takes the lock c.writeMu. -func (ch *channel) writePacket(packet []byte) error { - ch.writeMu.Lock() - if ch.sentClose { - ch.writeMu.Unlock() - return io.EOF - } - ch.sentClose = (packet[0] == msgChannelClose) - err := ch.mux.conn.writePacket(packet) - ch.writeMu.Unlock() - return err -} - -func (ch *channel) sendMessage(msg interface{}) error { - if debugMux { - log.Printf("send(%d): %#v", ch.mux.chanList.offset, msg) - } - - p := Marshal(msg) - binary.BigEndian.PutUint32(p[1:], ch.remoteId) - return ch.writePacket(p) -} - -// WriteExtended writes data to a specific extended stream. These streams are -// used, for example, for stderr. -func (ch *channel) WriteExtended(data []byte, extendedCode uint32) (n int, err error) { - if ch.sentEOF { - return 0, io.EOF - } - // 1 byte message type, 4 bytes remoteId, 4 bytes data length - opCode := byte(msgChannelData) - headerLength := uint32(9) - if extendedCode > 0 { - headerLength += 4 - opCode = msgChannelExtendedData - } - - ch.writeMu.Lock() - packet := ch.packetPool[extendedCode] - // We don't remove the buffer from packetPool, so - // WriteExtended calls from different goroutines will be - // flagged as errors by the race detector. - ch.writeMu.Unlock() - - for len(data) > 0 { - space := min(ch.maxRemotePayload, len(data)) - if space, err = ch.remoteWin.reserve(space); err != nil { - return n, err - } - if want := headerLength + space; uint32(cap(packet)) < want { - packet = make([]byte, want) - } else { - packet = packet[:want] - } - - todo := data[:space] - - packet[0] = opCode - binary.BigEndian.PutUint32(packet[1:], ch.remoteId) - if extendedCode > 0 { - binary.BigEndian.PutUint32(packet[5:], uint32(extendedCode)) - } - binary.BigEndian.PutUint32(packet[headerLength-4:], uint32(len(todo))) - copy(packet[headerLength:], todo) - if err = ch.writePacket(packet); err != nil { - return n, err - } - - n += len(todo) - data = data[len(todo):] - } - - ch.writeMu.Lock() - ch.packetPool[extendedCode] = packet - ch.writeMu.Unlock() - - return n, err -} - -func (ch *channel) handleData(packet []byte) error { - headerLen := 9 - isExtendedData := packet[0] == msgChannelExtendedData - if isExtendedData { - headerLen = 13 - } - if len(packet) < headerLen { - // malformed data packet - return parseError(packet[0]) - } - - var extended uint32 - if isExtendedData { - extended = binary.BigEndian.Uint32(packet[5:]) - } - - length := binary.BigEndian.Uint32(packet[headerLen-4 : headerLen]) - if length == 0 { - return nil - } - if length > ch.maxIncomingPayload { - // TODO(hanwen): should send Disconnect? - return errors.New("ssh: incoming packet exceeds maximum payload size") - } - - data := packet[headerLen:] - if length != uint32(len(data)) { - return errors.New("ssh: wrong packet length") - } - - ch.windowMu.Lock() - if ch.myWindow < length { - ch.windowMu.Unlock() - // TODO(hanwen): should send Disconnect with reason? - return errors.New("ssh: remote side wrote too much") - } - ch.myWindow -= length - ch.windowMu.Unlock() - - if extended == 1 { - ch.extPending.write(data) - } else if extended > 0 { - // discard other extended data. - } else { - ch.pending.write(data) - } - return nil -} - -func (c *channel) adjustWindow(n uint32) error { - c.windowMu.Lock() - // Since myWindow is managed on our side, and can never exceed - // the initial window setting, we don't worry about overflow. - c.myWindow += uint32(n) - c.windowMu.Unlock() - return c.sendMessage(windowAdjustMsg{ - AdditionalBytes: uint32(n), - }) -} - -func (c *channel) ReadExtended(data []byte, extended uint32) (n int, err error) { - switch extended { - case 1: - n, err = c.extPending.Read(data) - case 0: - n, err = c.pending.Read(data) - default: - return 0, fmt.Errorf("ssh: extended code %d unimplemented", extended) - } - - if n > 0 { - err = c.adjustWindow(uint32(n)) - // sendWindowAdjust can return io.EOF if the remote - // peer has closed the connection, however we want to - // defer forwarding io.EOF to the caller of Read until - // the buffer has been drained. - if n > 0 && err == io.EOF { - err = nil - } - } - - return n, err -} - -func (c *channel) close() { - c.pending.eof() - c.extPending.eof() - close(c.msg) - close(c.incomingRequests) - c.writeMu.Lock() - // This is not necessary for a normal channel teardown, but if - // there was another error, it is. - c.sentClose = true - c.writeMu.Unlock() - // Unblock writers. - c.remoteWin.close() -} - -// responseMessageReceived is called when a success or failure message is -// received on a channel to check that such a message is reasonable for the -// given channel. -func (ch *channel) responseMessageReceived() error { - if ch.direction == channelInbound { - return errors.New("ssh: channel response message received on inbound channel") - } - if ch.decided { - return errors.New("ssh: duplicate response received for channel") - } - ch.decided = true - return nil -} - -func (ch *channel) handlePacket(packet []byte) error { - switch packet[0] { - case msgChannelData, msgChannelExtendedData: - return ch.handleData(packet) - case msgChannelClose: - ch.sendMessage(channelCloseMsg{PeersID: ch.remoteId}) - ch.mux.chanList.remove(ch.localId) - ch.close() - return nil - case msgChannelEOF: - // RFC 4254 is mute on how EOF affects dataExt messages but - // it is logical to signal EOF at the same time. - ch.extPending.eof() - ch.pending.eof() - return nil - } - - decoded, err := decode(packet) - if err != nil { - return err - } - - switch msg := decoded.(type) { - case *channelOpenFailureMsg: - if err := ch.responseMessageReceived(); err != nil { - return err - } - ch.mux.chanList.remove(msg.PeersID) - ch.msg <- msg - case *channelOpenConfirmMsg: - if err := ch.responseMessageReceived(); err != nil { - return err - } - if msg.MaxPacketSize < minPacketLength || msg.MaxPacketSize > 1<<31 { - return fmt.Errorf("ssh: invalid MaxPacketSize %d from peer", msg.MaxPacketSize) - } - ch.remoteId = msg.MyID - ch.maxRemotePayload = msg.MaxPacketSize - ch.remoteWin.add(msg.MyWindow) - ch.msg <- msg - case *windowAdjustMsg: - if !ch.remoteWin.add(msg.AdditionalBytes) { - return fmt.Errorf("ssh: invalid window update for %d bytes", msg.AdditionalBytes) - } - case *channelRequestMsg: - req := Request{ - Type: msg.Request, - WantReply: msg.WantReply, - Payload: msg.RequestSpecificData, - ch: ch, - } - - ch.incomingRequests <- &req - default: - ch.msg <- msg - } - return nil -} - -func (m *mux) newChannel(chanType string, direction channelDirection, extraData []byte) *channel { - ch := &channel{ - remoteWin: window{Cond: newCond()}, - myWindow: channelWindowSize, - pending: newBuffer(), - extPending: newBuffer(), - direction: direction, - incomingRequests: make(chan *Request, chanSize), - msg: make(chan interface{}, chanSize), - chanType: chanType, - extraData: extraData, - mux: m, - packetPool: make(map[uint32][]byte), - } - ch.localId = m.chanList.add(ch) - return ch -} - -var errUndecided = errors.New("ssh: must Accept or Reject channel") -var errDecidedAlready = errors.New("ssh: can call Accept or Reject only once") - -type extChannel struct { - code uint32 - ch *channel -} - -func (e *extChannel) Write(data []byte) (n int, err error) { - return e.ch.WriteExtended(data, e.code) -} - -func (e *extChannel) Read(data []byte) (n int, err error) { - return e.ch.ReadExtended(data, e.code) -} - -func (ch *channel) Accept() (Channel, <-chan *Request, error) { - if ch.decided { - return nil, nil, errDecidedAlready - } - ch.maxIncomingPayload = channelMaxPacket - confirm := channelOpenConfirmMsg{ - PeersID: ch.remoteId, - MyID: ch.localId, - MyWindow: ch.myWindow, - MaxPacketSize: ch.maxIncomingPayload, - } - ch.decided = true - if err := ch.sendMessage(confirm); err != nil { - return nil, nil, err - } - - return ch, ch.incomingRequests, nil -} - -func (ch *channel) Reject(reason RejectionReason, message string) error { - if ch.decided { - return errDecidedAlready - } - reject := channelOpenFailureMsg{ - PeersID: ch.remoteId, - Reason: reason, - Message: message, - Language: "en", - } - ch.decided = true - return ch.sendMessage(reject) -} - -func (ch *channel) Read(data []byte) (int, error) { - if !ch.decided { - return 0, errUndecided - } - return ch.ReadExtended(data, 0) -} - -func (ch *channel) Write(data []byte) (int, error) { - if !ch.decided { - return 0, errUndecided - } - return ch.WriteExtended(data, 0) -} - -func (ch *channel) CloseWrite() error { - if !ch.decided { - return errUndecided - } - ch.sentEOF = true - return ch.sendMessage(channelEOFMsg{ - PeersID: ch.remoteId}) -} - -func (ch *channel) Close() error { - if !ch.decided { - return errUndecided - } - - return ch.sendMessage(channelCloseMsg{ - PeersID: ch.remoteId}) -} - -// Extended returns an io.ReadWriter that sends and receives data on the given, -// SSH extended stream. Such streams are used, for example, for stderr. -func (ch *channel) Extended(code uint32) io.ReadWriter { - if !ch.decided { - return nil - } - return &extChannel{code, ch} -} - -func (ch *channel) Stderr() io.ReadWriter { - return ch.Extended(1) -} - -func (ch *channel) SendRequest(name string, wantReply bool, payload []byte) (bool, error) { - if !ch.decided { - return false, errUndecided - } - - if wantReply { - ch.sentRequestMu.Lock() - defer ch.sentRequestMu.Unlock() - } - - msg := channelRequestMsg{ - PeersID: ch.remoteId, - Request: name, - WantReply: wantReply, - RequestSpecificData: payload, - } - - if err := ch.sendMessage(msg); err != nil { - return false, err - } - - if wantReply { - m, ok := (<-ch.msg) - if !ok { - return false, io.EOF - } - switch m.(type) { - case *channelRequestFailureMsg: - return false, nil - case *channelRequestSuccessMsg: - return true, nil - default: - return false, fmt.Errorf("ssh: unexpected response to channel request: %#v", m) - } - } - - return false, nil -} - -// ackRequest either sends an ack or nack to the channel request. -func (ch *channel) ackRequest(ok bool) error { - if !ch.decided { - return errUndecided - } - - var msg interface{} - if !ok { - msg = channelRequestFailureMsg{ - PeersID: ch.remoteId, - } - } else { - msg = channelRequestSuccessMsg{ - PeersID: ch.remoteId, - } - } - return ch.sendMessage(msg) -} - -func (ch *channel) ChannelType() string { - return ch.chanType -} - -func (ch *channel) ExtraData() []byte { - return ch.extraData -} diff --git a/vendor/golang.org/x/crypto/ssh/cipher.go b/vendor/golang.org/x/crypto/ssh/cipher.go deleted file mode 100644 index 770e8a6..0000000 --- a/vendor/golang.org/x/crypto/ssh/cipher.go +++ /dev/null @@ -1,789 +0,0 @@ -// Copyright 2011 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 ssh - -import ( - "crypto/aes" - "crypto/cipher" - "crypto/des" - "crypto/rc4" - "crypto/subtle" - "encoding/binary" - "errors" - "fmt" - "hash" - "io" - "io/ioutil" - - "golang.org/x/crypto/chacha20" - "golang.org/x/crypto/internal/poly1305" -) - -const ( - packetSizeMultiple = 16 // TODO(huin) this should be determined by the cipher. - - // RFC 4253 section 6.1 defines a minimum packet size of 32768 that implementations - // MUST be able to process (plus a few more kilobytes for padding and mac). The RFC - // indicates implementations SHOULD be able to handle larger packet sizes, but then - // waffles on about reasonable limits. - // - // OpenSSH caps their maxPacket at 256kB so we choose to do - // the same. maxPacket is also used to ensure that uint32 - // length fields do not overflow, so it should remain well - // below 4G. - maxPacket = 256 * 1024 -) - -// noneCipher implements cipher.Stream and provides no encryption. It is used -// by the transport before the first key-exchange. -type noneCipher struct{} - -func (c noneCipher) XORKeyStream(dst, src []byte) { - copy(dst, src) -} - -func newAESCTR(key, iv []byte) (cipher.Stream, error) { - c, err := aes.NewCipher(key) - if err != nil { - return nil, err - } - return cipher.NewCTR(c, iv), nil -} - -func newRC4(key, iv []byte) (cipher.Stream, error) { - return rc4.NewCipher(key) -} - -type cipherMode struct { - keySize int - ivSize int - create func(key, iv []byte, macKey []byte, algs directionAlgorithms) (packetCipher, error) -} - -func streamCipherMode(skip int, createFunc func(key, iv []byte) (cipher.Stream, error)) func(key, iv []byte, macKey []byte, algs directionAlgorithms) (packetCipher, error) { - return func(key, iv, macKey []byte, algs directionAlgorithms) (packetCipher, error) { - stream, err := createFunc(key, iv) - if err != nil { - return nil, err - } - - var streamDump []byte - if skip > 0 { - streamDump = make([]byte, 512) - } - - for remainingToDump := skip; remainingToDump > 0; { - dumpThisTime := remainingToDump - if dumpThisTime > len(streamDump) { - dumpThisTime = len(streamDump) - } - stream.XORKeyStream(streamDump[:dumpThisTime], streamDump[:dumpThisTime]) - remainingToDump -= dumpThisTime - } - - mac := macModes[algs.MAC].new(macKey) - return &streamPacketCipher{ - mac: mac, - etm: macModes[algs.MAC].etm, - macResult: make([]byte, mac.Size()), - cipher: stream, - }, nil - } -} - -// cipherModes documents properties of supported ciphers. Ciphers not included -// are not supported and will not be negotiated, even if explicitly requested in -// ClientConfig.Crypto.Ciphers. -var cipherModes = map[string]*cipherMode{ - // Ciphers from RFC4344, which introduced many CTR-based ciphers. Algorithms - // are defined in the order specified in the RFC. - "aes128-ctr": {16, aes.BlockSize, streamCipherMode(0, newAESCTR)}, - "aes192-ctr": {24, aes.BlockSize, streamCipherMode(0, newAESCTR)}, - "aes256-ctr": {32, aes.BlockSize, streamCipherMode(0, newAESCTR)}, - - // Ciphers from RFC4345, which introduces security-improved arcfour ciphers. - // They are defined in the order specified in the RFC. - "arcfour128": {16, 0, streamCipherMode(1536, newRC4)}, - "arcfour256": {32, 0, streamCipherMode(1536, newRC4)}, - - // Cipher defined in RFC 4253, which describes SSH Transport Layer Protocol. - // Note that this cipher is not safe, as stated in RFC 4253: "Arcfour (and - // RC4) has problems with weak keys, and should be used with caution." - // RFC4345 introduces improved versions of Arcfour. - "arcfour": {16, 0, streamCipherMode(0, newRC4)}, - - // AEAD ciphers - gcmCipherID: {16, 12, newGCMCipher}, - chacha20Poly1305ID: {64, 0, newChaCha20Cipher}, - - // CBC mode is insecure and so is not included in the default config. - // (See https://www.ieee-security.org/TC/SP2013/papers/4977a526.pdf). If absolutely - // needed, it's possible to specify a custom Config to enable it. - // You should expect that an active attacker can recover plaintext if - // you do. - aes128cbcID: {16, aes.BlockSize, newAESCBCCipher}, - - // 3des-cbc is insecure and is not included in the default - // config. - tripledescbcID: {24, des.BlockSize, newTripleDESCBCCipher}, -} - -// prefixLen is the length of the packet prefix that contains the packet length -// and number of padding bytes. -const prefixLen = 5 - -// streamPacketCipher is a packetCipher using a stream cipher. -type streamPacketCipher struct { - mac hash.Hash - cipher cipher.Stream - etm bool - - // The following members are to avoid per-packet allocations. - prefix [prefixLen]byte - seqNumBytes [4]byte - padding [2 * packetSizeMultiple]byte - packetData []byte - macResult []byte -} - -// readCipherPacket reads and decrypt a single packet from the reader argument. -func (s *streamPacketCipher) readCipherPacket(seqNum uint32, r io.Reader) ([]byte, error) { - if _, err := io.ReadFull(r, s.prefix[:]); err != nil { - return nil, err - } - - var encryptedPaddingLength [1]byte - if s.mac != nil && s.etm { - copy(encryptedPaddingLength[:], s.prefix[4:5]) - s.cipher.XORKeyStream(s.prefix[4:5], s.prefix[4:5]) - } else { - s.cipher.XORKeyStream(s.prefix[:], s.prefix[:]) - } - - length := binary.BigEndian.Uint32(s.prefix[0:4]) - paddingLength := uint32(s.prefix[4]) - - var macSize uint32 - if s.mac != nil { - s.mac.Reset() - binary.BigEndian.PutUint32(s.seqNumBytes[:], seqNum) - s.mac.Write(s.seqNumBytes[:]) - if s.etm { - s.mac.Write(s.prefix[:4]) - s.mac.Write(encryptedPaddingLength[:]) - } else { - s.mac.Write(s.prefix[:]) - } - macSize = uint32(s.mac.Size()) - } - - if length <= paddingLength+1 { - return nil, errors.New("ssh: invalid packet length, packet too small") - } - - if length > maxPacket { - return nil, errors.New("ssh: invalid packet length, packet too large") - } - - // the maxPacket check above ensures that length-1+macSize - // does not overflow. - if uint32(cap(s.packetData)) < length-1+macSize { - s.packetData = make([]byte, length-1+macSize) - } else { - s.packetData = s.packetData[:length-1+macSize] - } - - if _, err := io.ReadFull(r, s.packetData); err != nil { - return nil, err - } - mac := s.packetData[length-1:] - data := s.packetData[:length-1] - - if s.mac != nil && s.etm { - s.mac.Write(data) - } - - s.cipher.XORKeyStream(data, data) - - if s.mac != nil { - if !s.etm { - s.mac.Write(data) - } - s.macResult = s.mac.Sum(s.macResult[:0]) - if subtle.ConstantTimeCompare(s.macResult, mac) != 1 { - return nil, errors.New("ssh: MAC failure") - } - } - - return s.packetData[:length-paddingLength-1], nil -} - -// writeCipherPacket encrypts and sends a packet of data to the writer argument -func (s *streamPacketCipher) writeCipherPacket(seqNum uint32, w io.Writer, rand io.Reader, packet []byte) error { - if len(packet) > maxPacket { - return errors.New("ssh: packet too large") - } - - aadlen := 0 - if s.mac != nil && s.etm { - // packet length is not encrypted for EtM modes - aadlen = 4 - } - - paddingLength := packetSizeMultiple - (prefixLen+len(packet)-aadlen)%packetSizeMultiple - if paddingLength < 4 { - paddingLength += packetSizeMultiple - } - - length := len(packet) + 1 + paddingLength - binary.BigEndian.PutUint32(s.prefix[:], uint32(length)) - s.prefix[4] = byte(paddingLength) - padding := s.padding[:paddingLength] - if _, err := io.ReadFull(rand, padding); err != nil { - return err - } - - if s.mac != nil { - s.mac.Reset() - binary.BigEndian.PutUint32(s.seqNumBytes[:], seqNum) - s.mac.Write(s.seqNumBytes[:]) - - if s.etm { - // For EtM algorithms, the packet length must stay unencrypted, - // but the following data (padding length) must be encrypted - s.cipher.XORKeyStream(s.prefix[4:5], s.prefix[4:5]) - } - - s.mac.Write(s.prefix[:]) - - if !s.etm { - // For non-EtM algorithms, the algorithm is applied on unencrypted data - s.mac.Write(packet) - s.mac.Write(padding) - } - } - - if !(s.mac != nil && s.etm) { - // For EtM algorithms, the padding length has already been encrypted - // and the packet length must remain unencrypted - s.cipher.XORKeyStream(s.prefix[:], s.prefix[:]) - } - - s.cipher.XORKeyStream(packet, packet) - s.cipher.XORKeyStream(padding, padding) - - if s.mac != nil && s.etm { - // For EtM algorithms, packet and padding must be encrypted - s.mac.Write(packet) - s.mac.Write(padding) - } - - if _, err := w.Write(s.prefix[:]); err != nil { - return err - } - if _, err := w.Write(packet); err != nil { - return err - } - if _, err := w.Write(padding); err != nil { - return err - } - - if s.mac != nil { - s.macResult = s.mac.Sum(s.macResult[:0]) - if _, err := w.Write(s.macResult); err != nil { - return err - } - } - - return nil -} - -type gcmCipher struct { - aead cipher.AEAD - prefix [4]byte - iv []byte - buf []byte -} - -func newGCMCipher(key, iv, unusedMacKey []byte, unusedAlgs directionAlgorithms) (packetCipher, error) { - c, err := aes.NewCipher(key) - if err != nil { - return nil, err - } - - aead, err := cipher.NewGCM(c) - if err != nil { - return nil, err - } - - return &gcmCipher{ - aead: aead, - iv: iv, - }, nil -} - -const gcmTagSize = 16 - -func (c *gcmCipher) writeCipherPacket(seqNum uint32, w io.Writer, rand io.Reader, packet []byte) error { - // Pad out to multiple of 16 bytes. This is different from the - // stream cipher because that encrypts the length too. - padding := byte(packetSizeMultiple - (1+len(packet))%packetSizeMultiple) - if padding < 4 { - padding += packetSizeMultiple - } - - length := uint32(len(packet) + int(padding) + 1) - binary.BigEndian.PutUint32(c.prefix[:], length) - if _, err := w.Write(c.prefix[:]); err != nil { - return err - } - - if cap(c.buf) < int(length) { - c.buf = make([]byte, length) - } else { - c.buf = c.buf[:length] - } - - c.buf[0] = padding - copy(c.buf[1:], packet) - if _, err := io.ReadFull(rand, c.buf[1+len(packet):]); err != nil { - return err - } - c.buf = c.aead.Seal(c.buf[:0], c.iv, c.buf, c.prefix[:]) - if _, err := w.Write(c.buf); err != nil { - return err - } - c.incIV() - - return nil -} - -func (c *gcmCipher) incIV() { - for i := 4 + 7; i >= 4; i-- { - c.iv[i]++ - if c.iv[i] != 0 { - break - } - } -} - -func (c *gcmCipher) readCipherPacket(seqNum uint32, r io.Reader) ([]byte, error) { - if _, err := io.ReadFull(r, c.prefix[:]); err != nil { - return nil, err - } - length := binary.BigEndian.Uint32(c.prefix[:]) - if length > maxPacket { - return nil, errors.New("ssh: max packet length exceeded") - } - - if cap(c.buf) < int(length+gcmTagSize) { - c.buf = make([]byte, length+gcmTagSize) - } else { - c.buf = c.buf[:length+gcmTagSize] - } - - if _, err := io.ReadFull(r, c.buf); err != nil { - return nil, err - } - - plain, err := c.aead.Open(c.buf[:0], c.iv, c.buf, c.prefix[:]) - if err != nil { - return nil, err - } - c.incIV() - - if len(plain) == 0 { - return nil, errors.New("ssh: empty packet") - } - - padding := plain[0] - if padding < 4 { - // padding is a byte, so it automatically satisfies - // the maximum size, which is 255. - return nil, fmt.Errorf("ssh: illegal padding %d", padding) - } - - if int(padding+1) >= len(plain) { - return nil, fmt.Errorf("ssh: padding %d too large", padding) - } - plain = plain[1 : length-uint32(padding)] - return plain, nil -} - -// cbcCipher implements aes128-cbc cipher defined in RFC 4253 section 6.1 -type cbcCipher struct { - mac hash.Hash - macSize uint32 - decrypter cipher.BlockMode - encrypter cipher.BlockMode - - // The following members are to avoid per-packet allocations. - seqNumBytes [4]byte - packetData []byte - macResult []byte - - // Amount of data we should still read to hide which - // verification error triggered. - oracleCamouflage uint32 -} - -func newCBCCipher(c cipher.Block, key, iv, macKey []byte, algs directionAlgorithms) (packetCipher, error) { - cbc := &cbcCipher{ - mac: macModes[algs.MAC].new(macKey), - decrypter: cipher.NewCBCDecrypter(c, iv), - encrypter: cipher.NewCBCEncrypter(c, iv), - packetData: make([]byte, 1024), - } - if cbc.mac != nil { - cbc.macSize = uint32(cbc.mac.Size()) - } - - return cbc, nil -} - -func newAESCBCCipher(key, iv, macKey []byte, algs directionAlgorithms) (packetCipher, error) { - c, err := aes.NewCipher(key) - if err != nil { - return nil, err - } - - cbc, err := newCBCCipher(c, key, iv, macKey, algs) - if err != nil { - return nil, err - } - - return cbc, nil -} - -func newTripleDESCBCCipher(key, iv, macKey []byte, algs directionAlgorithms) (packetCipher, error) { - c, err := des.NewTripleDESCipher(key) - if err != nil { - return nil, err - } - - cbc, err := newCBCCipher(c, key, iv, macKey, algs) - if err != nil { - return nil, err - } - - return cbc, nil -} - -func maxUInt32(a, b int) uint32 { - if a > b { - return uint32(a) - } - return uint32(b) -} - -const ( - cbcMinPacketSizeMultiple = 8 - cbcMinPacketSize = 16 - cbcMinPaddingSize = 4 -) - -// cbcError represents a verification error that may leak information. -type cbcError string - -func (e cbcError) Error() string { return string(e) } - -func (c *cbcCipher) readCipherPacket(seqNum uint32, r io.Reader) ([]byte, error) { - p, err := c.readCipherPacketLeaky(seqNum, r) - if err != nil { - if _, ok := err.(cbcError); ok { - // Verification error: read a fixed amount of - // data, to make distinguishing between - // failing MAC and failing length check more - // difficult. - io.CopyN(ioutil.Discard, r, int64(c.oracleCamouflage)) - } - } - return p, err -} - -func (c *cbcCipher) readCipherPacketLeaky(seqNum uint32, r io.Reader) ([]byte, error) { - blockSize := c.decrypter.BlockSize() - - // Read the header, which will include some of the subsequent data in the - // case of block ciphers - this is copied back to the payload later. - // How many bytes of payload/padding will be read with this first read. - firstBlockLength := uint32((prefixLen + blockSize - 1) / blockSize * blockSize) - firstBlock := c.packetData[:firstBlockLength] - if _, err := io.ReadFull(r, firstBlock); err != nil { - return nil, err - } - - c.oracleCamouflage = maxPacket + 4 + c.macSize - firstBlockLength - - c.decrypter.CryptBlocks(firstBlock, firstBlock) - length := binary.BigEndian.Uint32(firstBlock[:4]) - if length > maxPacket { - return nil, cbcError("ssh: packet too large") - } - if length+4 < maxUInt32(cbcMinPacketSize, blockSize) { - // The minimum size of a packet is 16 (or the cipher block size, whichever - // is larger) bytes. - return nil, cbcError("ssh: packet too small") - } - // The length of the packet (including the length field but not the MAC) must - // be a multiple of the block size or 8, whichever is larger. - if (length+4)%maxUInt32(cbcMinPacketSizeMultiple, blockSize) != 0 { - return nil, cbcError("ssh: invalid packet length multiple") - } - - paddingLength := uint32(firstBlock[4]) - if paddingLength < cbcMinPaddingSize || length <= paddingLength+1 { - return nil, cbcError("ssh: invalid packet length") - } - - // Positions within the c.packetData buffer: - macStart := 4 + length - paddingStart := macStart - paddingLength - - // Entire packet size, starting before length, ending at end of mac. - entirePacketSize := macStart + c.macSize - - // Ensure c.packetData is large enough for the entire packet data. - if uint32(cap(c.packetData)) < entirePacketSize { - // Still need to upsize and copy, but this should be rare at runtime, only - // on upsizing the packetData buffer. - c.packetData = make([]byte, entirePacketSize) - copy(c.packetData, firstBlock) - } else { - c.packetData = c.packetData[:entirePacketSize] - } - - n, err := io.ReadFull(r, c.packetData[firstBlockLength:]) - if err != nil { - return nil, err - } - c.oracleCamouflage -= uint32(n) - - remainingCrypted := c.packetData[firstBlockLength:macStart] - c.decrypter.CryptBlocks(remainingCrypted, remainingCrypted) - - mac := c.packetData[macStart:] - if c.mac != nil { - c.mac.Reset() - binary.BigEndian.PutUint32(c.seqNumBytes[:], seqNum) - c.mac.Write(c.seqNumBytes[:]) - c.mac.Write(c.packetData[:macStart]) - c.macResult = c.mac.Sum(c.macResult[:0]) - if subtle.ConstantTimeCompare(c.macResult, mac) != 1 { - return nil, cbcError("ssh: MAC failure") - } - } - - return c.packetData[prefixLen:paddingStart], nil -} - -func (c *cbcCipher) writeCipherPacket(seqNum uint32, w io.Writer, rand io.Reader, packet []byte) error { - effectiveBlockSize := maxUInt32(cbcMinPacketSizeMultiple, c.encrypter.BlockSize()) - - // Length of encrypted portion of the packet (header, payload, padding). - // Enforce minimum padding and packet size. - encLength := maxUInt32(prefixLen+len(packet)+cbcMinPaddingSize, cbcMinPaddingSize) - // Enforce block size. - encLength = (encLength + effectiveBlockSize - 1) / effectiveBlockSize * effectiveBlockSize - - length := encLength - 4 - paddingLength := int(length) - (1 + len(packet)) - - // Overall buffer contains: header, payload, padding, mac. - // Space for the MAC is reserved in the capacity but not the slice length. - bufferSize := encLength + c.macSize - if uint32(cap(c.packetData)) < bufferSize { - c.packetData = make([]byte, encLength, bufferSize) - } else { - c.packetData = c.packetData[:encLength] - } - - p := c.packetData - - // Packet header. - binary.BigEndian.PutUint32(p, length) - p = p[4:] - p[0] = byte(paddingLength) - - // Payload. - p = p[1:] - copy(p, packet) - - // Padding. - p = p[len(packet):] - if _, err := io.ReadFull(rand, p); err != nil { - return err - } - - if c.mac != nil { - c.mac.Reset() - binary.BigEndian.PutUint32(c.seqNumBytes[:], seqNum) - c.mac.Write(c.seqNumBytes[:]) - c.mac.Write(c.packetData) - // The MAC is now appended into the capacity reserved for it earlier. - c.packetData = c.mac.Sum(c.packetData) - } - - c.encrypter.CryptBlocks(c.packetData[:encLength], c.packetData[:encLength]) - - if _, err := w.Write(c.packetData); err != nil { - return err - } - - return nil -} - -const chacha20Poly1305ID = "chacha20-poly1305@openssh.com" - -// chacha20Poly1305Cipher implements the chacha20-poly1305@openssh.com -// AEAD, which is described here: -// -// https://tools.ietf.org/html/draft-josefsson-ssh-chacha20-poly1305-openssh-00 -// -// the methods here also implement padding, which RFC4253 Section 6 -// also requires of stream ciphers. -type chacha20Poly1305Cipher struct { - lengthKey [32]byte - contentKey [32]byte - buf []byte -} - -func newChaCha20Cipher(key, unusedIV, unusedMACKey []byte, unusedAlgs directionAlgorithms) (packetCipher, error) { - if len(key) != 64 { - panic(len(key)) - } - - c := &chacha20Poly1305Cipher{ - buf: make([]byte, 256), - } - - copy(c.contentKey[:], key[:32]) - copy(c.lengthKey[:], key[32:]) - return c, nil -} - -func (c *chacha20Poly1305Cipher) readCipherPacket(seqNum uint32, r io.Reader) ([]byte, error) { - nonce := make([]byte, 12) - binary.BigEndian.PutUint32(nonce[8:], seqNum) - s, err := chacha20.NewUnauthenticatedCipher(c.contentKey[:], nonce) - if err != nil { - return nil, err - } - var polyKey, discardBuf [32]byte - s.XORKeyStream(polyKey[:], polyKey[:]) - s.XORKeyStream(discardBuf[:], discardBuf[:]) // skip the next 32 bytes - - encryptedLength := c.buf[:4] - if _, err := io.ReadFull(r, encryptedLength); err != nil { - return nil, err - } - - var lenBytes [4]byte - ls, err := chacha20.NewUnauthenticatedCipher(c.lengthKey[:], nonce) - if err != nil { - return nil, err - } - ls.XORKeyStream(lenBytes[:], encryptedLength) - - length := binary.BigEndian.Uint32(lenBytes[:]) - if length > maxPacket { - return nil, errors.New("ssh: invalid packet length, packet too large") - } - - contentEnd := 4 + length - packetEnd := contentEnd + poly1305.TagSize - if uint32(cap(c.buf)) < packetEnd { - c.buf = make([]byte, packetEnd) - copy(c.buf[:], encryptedLength) - } else { - c.buf = c.buf[:packetEnd] - } - - if _, err := io.ReadFull(r, c.buf[4:packetEnd]); err != nil { - return nil, err - } - - var mac [poly1305.TagSize]byte - copy(mac[:], c.buf[contentEnd:packetEnd]) - if !poly1305.Verify(&mac, c.buf[:contentEnd], &polyKey) { - return nil, errors.New("ssh: MAC failure") - } - - plain := c.buf[4:contentEnd] - s.XORKeyStream(plain, plain) - - if len(plain) == 0 { - return nil, errors.New("ssh: empty packet") - } - - padding := plain[0] - if padding < 4 { - // padding is a byte, so it automatically satisfies - // the maximum size, which is 255. - return nil, fmt.Errorf("ssh: illegal padding %d", padding) - } - - if int(padding)+1 >= len(plain) { - return nil, fmt.Errorf("ssh: padding %d too large", padding) - } - - plain = plain[1 : len(plain)-int(padding)] - - return plain, nil -} - -func (c *chacha20Poly1305Cipher) writeCipherPacket(seqNum uint32, w io.Writer, rand io.Reader, payload []byte) error { - nonce := make([]byte, 12) - binary.BigEndian.PutUint32(nonce[8:], seqNum) - s, err := chacha20.NewUnauthenticatedCipher(c.contentKey[:], nonce) - if err != nil { - return err - } - var polyKey, discardBuf [32]byte - s.XORKeyStream(polyKey[:], polyKey[:]) - s.XORKeyStream(discardBuf[:], discardBuf[:]) // skip the next 32 bytes - - // There is no blocksize, so fall back to multiple of 8 byte - // padding, as described in RFC 4253, Sec 6. - const packetSizeMultiple = 8 - - padding := packetSizeMultiple - (1+len(payload))%packetSizeMultiple - if padding < 4 { - padding += packetSizeMultiple - } - - // size (4 bytes), padding (1), payload, padding, tag. - totalLength := 4 + 1 + len(payload) + padding + poly1305.TagSize - if cap(c.buf) < totalLength { - c.buf = make([]byte, totalLength) - } else { - c.buf = c.buf[:totalLength] - } - - binary.BigEndian.PutUint32(c.buf, uint32(1+len(payload)+padding)) - ls, err := chacha20.NewUnauthenticatedCipher(c.lengthKey[:], nonce) - if err != nil { - return err - } - ls.XORKeyStream(c.buf, c.buf[:4]) - c.buf[4] = byte(padding) - copy(c.buf[5:], payload) - packetEnd := 5 + len(payload) + padding - if _, err := io.ReadFull(rand, c.buf[5+len(payload):packetEnd]); err != nil { - return err - } - - s.XORKeyStream(c.buf[4:], c.buf[4:packetEnd]) - - var mac [poly1305.TagSize]byte - poly1305.Sum(&mac, c.buf[:packetEnd], &polyKey) - - copy(c.buf[packetEnd:], mac[:]) - - if _, err := w.Write(c.buf); err != nil { - return err - } - return nil -} diff --git a/vendor/golang.org/x/crypto/ssh/client.go b/vendor/golang.org/x/crypto/ssh/client.go deleted file mode 100644 index bdc356c..0000000 --- a/vendor/golang.org/x/crypto/ssh/client.go +++ /dev/null @@ -1,282 +0,0 @@ -// Copyright 2011 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 ssh - -import ( - "bytes" - "errors" - "fmt" - "net" - "os" - "sync" - "time" -) - -// Client implements a traditional SSH client that supports shells, -// subprocesses, TCP port/streamlocal forwarding and tunneled dialing. -type Client struct { - Conn - - handleForwardsOnce sync.Once // guards calling (*Client).handleForwards - - forwards forwardList // forwarded tcpip connections from the remote side - mu sync.Mutex - channelHandlers map[string]chan NewChannel -} - -// HandleChannelOpen returns a channel on which NewChannel requests -// for the given type are sent. If the type already is being handled, -// nil is returned. The channel is closed when the connection is closed. -func (c *Client) HandleChannelOpen(channelType string) <-chan NewChannel { - c.mu.Lock() - defer c.mu.Unlock() - if c.channelHandlers == nil { - // The SSH channel has been closed. - c := make(chan NewChannel) - close(c) - return c - } - - ch := c.channelHandlers[channelType] - if ch != nil { - return nil - } - - ch = make(chan NewChannel, chanSize) - c.channelHandlers[channelType] = ch - return ch -} - -// NewClient creates a Client on top of the given connection. -func NewClient(c Conn, chans <-chan NewChannel, reqs <-chan *Request) *Client { - conn := &Client{ - Conn: c, - channelHandlers: make(map[string]chan NewChannel, 1), - } - - go conn.handleGlobalRequests(reqs) - go conn.handleChannelOpens(chans) - go func() { - conn.Wait() - conn.forwards.closeAll() - }() - return conn -} - -// NewClientConn establishes an authenticated SSH connection using c -// as the underlying transport. The Request and NewChannel channels -// must be serviced or the connection will hang. -func NewClientConn(c net.Conn, addr string, config *ClientConfig) (Conn, <-chan NewChannel, <-chan *Request, error) { - fullConf := *config - fullConf.SetDefaults() - if fullConf.HostKeyCallback == nil { - c.Close() - return nil, nil, nil, errors.New("ssh: must specify HostKeyCallback") - } - - conn := &connection{ - sshConn: sshConn{conn: c, user: fullConf.User}, - } - - if err := conn.clientHandshake(addr, &fullConf); err != nil { - c.Close() - return nil, nil, nil, fmt.Errorf("ssh: handshake failed: %v", err) - } - conn.mux = newMux(conn.transport) - return conn, conn.mux.incomingChannels, conn.mux.incomingRequests, nil -} - -// clientHandshake performs the client side key exchange. See RFC 4253 Section -// 7. -func (c *connection) clientHandshake(dialAddress string, config *ClientConfig) error { - if config.ClientVersion != "" { - c.clientVersion = []byte(config.ClientVersion) - } else { - c.clientVersion = []byte(packageVersion) - } - var err error - c.serverVersion, err = exchangeVersions(c.sshConn.conn, c.clientVersion) - if err != nil { - return err - } - - c.transport = newClientTransport( - newTransport(c.sshConn.conn, config.Rand, true /* is client */), - c.clientVersion, c.serverVersion, config, dialAddress, c.sshConn.RemoteAddr()) - if err := c.transport.waitSession(); err != nil { - return err - } - - c.sessionID = c.transport.getSessionID() - return c.clientAuthenticate(config) -} - -// verifyHostKeySignature verifies the host key obtained in the key exchange. -// algo is the negotiated algorithm, and may be a certificate type. -func verifyHostKeySignature(hostKey PublicKey, algo string, result *kexResult) error { - sig, rest, ok := parseSignatureBody(result.Signature) - if len(rest) > 0 || !ok { - return errors.New("ssh: signature parse error") - } - - if a := underlyingAlgo(algo); sig.Format != a { - return fmt.Errorf("ssh: invalid signature algorithm %q, expected %q", sig.Format, a) - } - - return hostKey.Verify(result.H, sig) -} - -// NewSession opens a new Session for this client. (A session is a remote -// execution of a program.) -func (c *Client) NewSession() (*Session, error) { - ch, in, err := c.OpenChannel("session", nil) - if err != nil { - return nil, err - } - return newSession(ch, in) -} - -func (c *Client) handleGlobalRequests(incoming <-chan *Request) { - for r := range incoming { - // This handles keepalive messages and matches - // the behaviour of OpenSSH. - r.Reply(false, nil) - } -} - -// handleChannelOpens channel open messages from the remote side. -func (c *Client) handleChannelOpens(in <-chan NewChannel) { - for ch := range in { - c.mu.Lock() - handler := c.channelHandlers[ch.ChannelType()] - c.mu.Unlock() - - if handler != nil { - handler <- ch - } else { - ch.Reject(UnknownChannelType, fmt.Sprintf("unknown channel type: %v", ch.ChannelType())) - } - } - - c.mu.Lock() - for _, ch := range c.channelHandlers { - close(ch) - } - c.channelHandlers = nil - c.mu.Unlock() -} - -// Dial starts a client connection to the given SSH server. It is a -// convenience function that connects to the given network address, -// initiates the SSH handshake, and then sets up a Client. For access -// to incoming channels and requests, use net.Dial with NewClientConn -// instead. -func Dial(network, addr string, config *ClientConfig) (*Client, error) { - conn, err := net.DialTimeout(network, addr, config.Timeout) - if err != nil { - return nil, err - } - c, chans, reqs, err := NewClientConn(conn, addr, config) - if err != nil { - return nil, err - } - return NewClient(c, chans, reqs), nil -} - -// HostKeyCallback is the function type used for verifying server -// keys. A HostKeyCallback must return nil if the host key is OK, or -// an error to reject it. It receives the hostname as passed to Dial -// or NewClientConn. The remote address is the RemoteAddr of the -// net.Conn underlying the SSH connection. -type HostKeyCallback func(hostname string, remote net.Addr, key PublicKey) error - -// BannerCallback is the function type used for treat the banner sent by -// the server. A BannerCallback receives the message sent by the remote server. -type BannerCallback func(message string) error - -// A ClientConfig structure is used to configure a Client. It must not be -// modified after having been passed to an SSH function. -type ClientConfig struct { - // Config contains configuration that is shared between clients and - // servers. - Config - - // User contains the username to authenticate as. - User string - - // Auth contains possible authentication methods to use with the - // server. Only the first instance of a particular RFC 4252 method will - // be used during authentication. - Auth []AuthMethod - - // HostKeyCallback is called during the cryptographic - // handshake to validate the server's host key. The client - // configuration must supply this callback for the connection - // to succeed. The functions InsecureIgnoreHostKey or - // FixedHostKey can be used for simplistic host key checks. - HostKeyCallback HostKeyCallback - - // BannerCallback is called during the SSH dance to display a custom - // server's message. The client configuration can supply this callback to - // handle it as wished. The function BannerDisplayStderr can be used for - // simplistic display on Stderr. - BannerCallback BannerCallback - - // ClientVersion contains the version identification string that will - // be used for the connection. If empty, a reasonable default is used. - ClientVersion string - - // HostKeyAlgorithms lists the public key algorithms that the client will - // accept from the server for host key authentication, in order of - // preference. If empty, a reasonable default is used. Any - // string returned from a PublicKey.Type method may be used, or - // any of the CertAlgo and KeyAlgo constants. - HostKeyAlgorithms []string - - // Timeout is the maximum amount of time for the TCP connection to establish. - // - // A Timeout of zero means no timeout. - Timeout time.Duration -} - -// InsecureIgnoreHostKey returns a function that can be used for -// ClientConfig.HostKeyCallback to accept any host key. It should -// not be used for production code. -func InsecureIgnoreHostKey() HostKeyCallback { - return func(hostname string, remote net.Addr, key PublicKey) error { - return nil - } -} - -type fixedHostKey struct { - key PublicKey -} - -func (f *fixedHostKey) check(hostname string, remote net.Addr, key PublicKey) error { - if f.key == nil { - return fmt.Errorf("ssh: required host key was nil") - } - if !bytes.Equal(key.Marshal(), f.key.Marshal()) { - return fmt.Errorf("ssh: host key mismatch") - } - return nil -} - -// FixedHostKey returns a function for use in -// ClientConfig.HostKeyCallback to accept only a specific host key. -func FixedHostKey(key PublicKey) HostKeyCallback { - hk := &fixedHostKey{key} - return hk.check -} - -// BannerDisplayStderr returns a function that can be used for -// ClientConfig.BannerCallback to display banners on os.Stderr. -func BannerDisplayStderr() BannerCallback { - return func(banner string) error { - _, err := os.Stderr.WriteString(banner) - - return err - } -} diff --git a/vendor/golang.org/x/crypto/ssh/client_auth.go b/vendor/golang.org/x/crypto/ssh/client_auth.go deleted file mode 100644 index 409b5ea..0000000 --- a/vendor/golang.org/x/crypto/ssh/client_auth.go +++ /dev/null @@ -1,725 +0,0 @@ -// Copyright 2011 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 ssh - -import ( - "bytes" - "errors" - "fmt" - "io" - "strings" -) - -type authResult int - -const ( - authFailure authResult = iota - authPartialSuccess - authSuccess -) - -// clientAuthenticate authenticates with the remote server. See RFC 4252. -func (c *connection) clientAuthenticate(config *ClientConfig) error { - // initiate user auth session - if err := c.transport.writePacket(Marshal(&serviceRequestMsg{serviceUserAuth})); err != nil { - return err - } - packet, err := c.transport.readPacket() - if err != nil { - return err - } - // The server may choose to send a SSH_MSG_EXT_INFO at this point (if we - // advertised willingness to receive one, which we always do) or not. See - // RFC 8308, Section 2.4. - extensions := make(map[string][]byte) - if len(packet) > 0 && packet[0] == msgExtInfo { - var extInfo extInfoMsg - if err := Unmarshal(packet, &extInfo); err != nil { - return err - } - payload := extInfo.Payload - for i := uint32(0); i < extInfo.NumExtensions; i++ { - name, rest, ok := parseString(payload) - if !ok { - return parseError(msgExtInfo) - } - value, rest, ok := parseString(rest) - if !ok { - return parseError(msgExtInfo) - } - extensions[string(name)] = value - payload = rest - } - packet, err = c.transport.readPacket() - if err != nil { - return err - } - } - var serviceAccept serviceAcceptMsg - if err := Unmarshal(packet, &serviceAccept); err != nil { - return err - } - - // during the authentication phase the client first attempts the "none" method - // then any untried methods suggested by the server. - var tried []string - var lastMethods []string - - sessionID := c.transport.getSessionID() - for auth := AuthMethod(new(noneAuth)); auth != nil; { - ok, methods, err := auth.auth(sessionID, config.User, c.transport, config.Rand, extensions) - if err != nil { - return err - } - if ok == authSuccess { - // success - return nil - } else if ok == authFailure { - if m := auth.method(); !contains(tried, m) { - tried = append(tried, m) - } - } - if methods == nil { - methods = lastMethods - } - lastMethods = methods - - auth = nil - - findNext: - for _, a := range config.Auth { - candidateMethod := a.method() - if contains(tried, candidateMethod) { - continue - } - for _, meth := range methods { - if meth == candidateMethod { - auth = a - break findNext - } - } - } - } - return fmt.Errorf("ssh: unable to authenticate, attempted methods %v, no supported methods remain", tried) -} - -func contains(list []string, e string) bool { - for _, s := range list { - if s == e { - return true - } - } - return false -} - -// An AuthMethod represents an instance of an RFC 4252 authentication method. -type AuthMethod interface { - // auth authenticates user over transport t. - // Returns true if authentication is successful. - // If authentication is not successful, a []string of alternative - // method names is returned. If the slice is nil, it will be ignored - // and the previous set of possible methods will be reused. - auth(session []byte, user string, p packetConn, rand io.Reader, extensions map[string][]byte) (authResult, []string, error) - - // method returns the RFC 4252 method name. - method() string -} - -// "none" authentication, RFC 4252 section 5.2. -type noneAuth int - -func (n *noneAuth) auth(session []byte, user string, c packetConn, rand io.Reader, _ map[string][]byte) (authResult, []string, error) { - if err := c.writePacket(Marshal(&userAuthRequestMsg{ - User: user, - Service: serviceSSH, - Method: "none", - })); err != nil { - return authFailure, nil, err - } - - return handleAuthResponse(c) -} - -func (n *noneAuth) method() string { - return "none" -} - -// passwordCallback is an AuthMethod that fetches the password through -// a function call, e.g. by prompting the user. -type passwordCallback func() (password string, err error) - -func (cb passwordCallback) auth(session []byte, user string, c packetConn, rand io.Reader, _ map[string][]byte) (authResult, []string, error) { - type passwordAuthMsg struct { - User string `sshtype:"50"` - Service string - Method string - Reply bool - Password string - } - - pw, err := cb() - // REVIEW NOTE: is there a need to support skipping a password attempt? - // The program may only find out that the user doesn't have a password - // when prompting. - if err != nil { - return authFailure, nil, err - } - - if err := c.writePacket(Marshal(&passwordAuthMsg{ - User: user, - Service: serviceSSH, - Method: cb.method(), - Reply: false, - Password: pw, - })); err != nil { - return authFailure, nil, err - } - - return handleAuthResponse(c) -} - -func (cb passwordCallback) method() string { - return "password" -} - -// Password returns an AuthMethod using the given password. -func Password(secret string) AuthMethod { - return passwordCallback(func() (string, error) { return secret, nil }) -} - -// PasswordCallback returns an AuthMethod that uses a callback for -// fetching a password. -func PasswordCallback(prompt func() (secret string, err error)) AuthMethod { - return passwordCallback(prompt) -} - -type publickeyAuthMsg struct { - User string `sshtype:"50"` - Service string - Method string - // HasSig indicates to the receiver packet that the auth request is signed and - // should be used for authentication of the request. - HasSig bool - Algoname string - PubKey []byte - // Sig is tagged with "rest" so Marshal will exclude it during - // validateKey - Sig []byte `ssh:"rest"` -} - -// publicKeyCallback is an AuthMethod that uses a set of key -// pairs for authentication. -type publicKeyCallback func() ([]Signer, error) - -func (cb publicKeyCallback) method() string { - return "publickey" -} - -func pickSignatureAlgorithm(signer Signer, extensions map[string][]byte) (as AlgorithmSigner, algo string) { - keyFormat := signer.PublicKey().Type() - - // Like in sendKexInit, if the public key implements AlgorithmSigner we - // assume it supports all algorithms, otherwise only the key format one. - as, ok := signer.(AlgorithmSigner) - if !ok { - return algorithmSignerWrapper{signer}, keyFormat - } - - extPayload, ok := extensions["server-sig-algs"] - if !ok { - // If there is no "server-sig-algs" extension, fall back to the key - // format algorithm. - return as, keyFormat - } - - // The server-sig-algs extension only carries underlying signature - // algorithm, but we are trying to select a protocol-level public key - // algorithm, which might be a certificate type. Extend the list of server - // supported algorithms to include the corresponding certificate algorithms. - serverAlgos := strings.Split(string(extPayload), ",") - for _, algo := range serverAlgos { - if certAlgo, ok := certificateAlgo(algo); ok { - serverAlgos = append(serverAlgos, certAlgo) - } - } - - keyAlgos := algorithmsForKeyFormat(keyFormat) - algo, err := findCommon("public key signature algorithm", keyAlgos, serverAlgos) - if err != nil { - // If there is no overlap, try the key anyway with the key format - // algorithm, to support servers that fail to list all supported - // algorithms. - return as, keyFormat - } - return as, algo -} - -func (cb publicKeyCallback) auth(session []byte, user string, c packetConn, rand io.Reader, extensions map[string][]byte) (authResult, []string, error) { - // Authentication is performed by sending an enquiry to test if a key is - // acceptable to the remote. If the key is acceptable, the client will - // attempt to authenticate with the valid key. If not the client will repeat - // the process with the remaining keys. - - signers, err := cb() - if err != nil { - return authFailure, nil, err - } - var methods []string - for _, signer := range signers { - pub := signer.PublicKey() - as, algo := pickSignatureAlgorithm(signer, extensions) - - ok, err := validateKey(pub, algo, user, c) - if err != nil { - return authFailure, nil, err - } - if !ok { - continue - } - - pubKey := pub.Marshal() - data := buildDataSignedForAuth(session, userAuthRequestMsg{ - User: user, - Service: serviceSSH, - Method: cb.method(), - }, algo, pubKey) - sign, err := as.SignWithAlgorithm(rand, data, underlyingAlgo(algo)) - if err != nil { - return authFailure, nil, err - } - - // manually wrap the serialized signature in a string - s := Marshal(sign) - sig := make([]byte, stringLength(len(s))) - marshalString(sig, s) - msg := publickeyAuthMsg{ - User: user, - Service: serviceSSH, - Method: cb.method(), - HasSig: true, - Algoname: algo, - PubKey: pubKey, - Sig: sig, - } - p := Marshal(&msg) - if err := c.writePacket(p); err != nil { - return authFailure, nil, err - } - var success authResult - success, methods, err = handleAuthResponse(c) - if err != nil { - return authFailure, nil, err - } - - // If authentication succeeds or the list of available methods does not - // contain the "publickey" method, do not attempt to authenticate with any - // other keys. According to RFC 4252 Section 7, the latter can occur when - // additional authentication methods are required. - if success == authSuccess || !containsMethod(methods, cb.method()) { - return success, methods, err - } - } - - return authFailure, methods, nil -} - -func containsMethod(methods []string, method string) bool { - for _, m := range methods { - if m == method { - return true - } - } - - return false -} - -// validateKey validates the key provided is acceptable to the server. -func validateKey(key PublicKey, algo string, user string, c packetConn) (bool, error) { - pubKey := key.Marshal() - msg := publickeyAuthMsg{ - User: user, - Service: serviceSSH, - Method: "publickey", - HasSig: false, - Algoname: algo, - PubKey: pubKey, - } - if err := c.writePacket(Marshal(&msg)); err != nil { - return false, err - } - - return confirmKeyAck(key, algo, c) -} - -func confirmKeyAck(key PublicKey, algo string, c packetConn) (bool, error) { - pubKey := key.Marshal() - - for { - packet, err := c.readPacket() - if err != nil { - return false, err - } - switch packet[0] { - case msgUserAuthBanner: - if err := handleBannerResponse(c, packet); err != nil { - return false, err - } - case msgUserAuthPubKeyOk: - var msg userAuthPubKeyOkMsg - if err := Unmarshal(packet, &msg); err != nil { - return false, err - } - if msg.Algo != algo || !bytes.Equal(msg.PubKey, pubKey) { - return false, nil - } - return true, nil - case msgUserAuthFailure: - return false, nil - default: - return false, unexpectedMessageError(msgUserAuthPubKeyOk, packet[0]) - } - } -} - -// PublicKeys returns an AuthMethod that uses the given key -// pairs. -func PublicKeys(signers ...Signer) AuthMethod { - return publicKeyCallback(func() ([]Signer, error) { return signers, nil }) -} - -// PublicKeysCallback returns an AuthMethod that runs the given -// function to obtain a list of key pairs. -func PublicKeysCallback(getSigners func() (signers []Signer, err error)) AuthMethod { - return publicKeyCallback(getSigners) -} - -// handleAuthResponse returns whether the preceding authentication request succeeded -// along with a list of remaining authentication methods to try next and -// an error if an unexpected response was received. -func handleAuthResponse(c packetConn) (authResult, []string, error) { - gotMsgExtInfo := false - for { - packet, err := c.readPacket() - if err != nil { - return authFailure, nil, err - } - - switch packet[0] { - case msgUserAuthBanner: - if err := handleBannerResponse(c, packet); err != nil { - return authFailure, nil, err - } - case msgExtInfo: - // Ignore post-authentication RFC 8308 extensions, once. - if gotMsgExtInfo { - return authFailure, nil, unexpectedMessageError(msgUserAuthSuccess, packet[0]) - } - gotMsgExtInfo = true - case msgUserAuthFailure: - var msg userAuthFailureMsg - if err := Unmarshal(packet, &msg); err != nil { - return authFailure, nil, err - } - if msg.PartialSuccess { - return authPartialSuccess, msg.Methods, nil - } - return authFailure, msg.Methods, nil - case msgUserAuthSuccess: - return authSuccess, nil, nil - default: - return authFailure, nil, unexpectedMessageError(msgUserAuthSuccess, packet[0]) - } - } -} - -func handleBannerResponse(c packetConn, packet []byte) error { - var msg userAuthBannerMsg - if err := Unmarshal(packet, &msg); err != nil { - return err - } - - transport, ok := c.(*handshakeTransport) - if !ok { - return nil - } - - if transport.bannerCallback != nil { - return transport.bannerCallback(msg.Message) - } - - return nil -} - -// KeyboardInteractiveChallenge should print questions, optionally -// disabling echoing (e.g. for passwords), and return all the answers. -// Challenge may be called multiple times in a single session. After -// successful authentication, the server may send a challenge with no -// questions, for which the name and instruction messages should be -// printed. RFC 4256 section 3.3 details how the UI should behave for -// both CLI and GUI environments. -type KeyboardInteractiveChallenge func(name, instruction string, questions []string, echos []bool) (answers []string, err error) - -// KeyboardInteractive returns an AuthMethod using a prompt/response -// sequence controlled by the server. -func KeyboardInteractive(challenge KeyboardInteractiveChallenge) AuthMethod { - return challenge -} - -func (cb KeyboardInteractiveChallenge) method() string { - return "keyboard-interactive" -} - -func (cb KeyboardInteractiveChallenge) auth(session []byte, user string, c packetConn, rand io.Reader, _ map[string][]byte) (authResult, []string, error) { - type initiateMsg struct { - User string `sshtype:"50"` - Service string - Method string - Language string - Submethods string - } - - if err := c.writePacket(Marshal(&initiateMsg{ - User: user, - Service: serviceSSH, - Method: "keyboard-interactive", - })); err != nil { - return authFailure, nil, err - } - - gotMsgExtInfo := false - for { - packet, err := c.readPacket() - if err != nil { - return authFailure, nil, err - } - - // like handleAuthResponse, but with less options. - switch packet[0] { - case msgUserAuthBanner: - if err := handleBannerResponse(c, packet); err != nil { - return authFailure, nil, err - } - continue - case msgExtInfo: - // Ignore post-authentication RFC 8308 extensions, once. - if gotMsgExtInfo { - return authFailure, nil, unexpectedMessageError(msgUserAuthInfoRequest, packet[0]) - } - gotMsgExtInfo = true - continue - case msgUserAuthInfoRequest: - // OK - case msgUserAuthFailure: - var msg userAuthFailureMsg - if err := Unmarshal(packet, &msg); err != nil { - return authFailure, nil, err - } - if msg.PartialSuccess { - return authPartialSuccess, msg.Methods, nil - } - return authFailure, msg.Methods, nil - case msgUserAuthSuccess: - return authSuccess, nil, nil - default: - return authFailure, nil, unexpectedMessageError(msgUserAuthInfoRequest, packet[0]) - } - - var msg userAuthInfoRequestMsg - if err := Unmarshal(packet, &msg); err != nil { - return authFailure, nil, err - } - - // Manually unpack the prompt/echo pairs. - rest := msg.Prompts - var prompts []string - var echos []bool - for i := 0; i < int(msg.NumPrompts); i++ { - prompt, r, ok := parseString(rest) - if !ok || len(r) == 0 { - return authFailure, nil, errors.New("ssh: prompt format error") - } - prompts = append(prompts, string(prompt)) - echos = append(echos, r[0] != 0) - rest = r[1:] - } - - if len(rest) != 0 { - return authFailure, nil, errors.New("ssh: extra data following keyboard-interactive pairs") - } - - answers, err := cb(msg.Name, msg.Instruction, prompts, echos) - if err != nil { - return authFailure, nil, err - } - - if len(answers) != len(prompts) { - return authFailure, nil, fmt.Errorf("ssh: incorrect number of answers from keyboard-interactive callback %d (expected %d)", len(answers), len(prompts)) - } - responseLength := 1 + 4 - for _, a := range answers { - responseLength += stringLength(len(a)) - } - serialized := make([]byte, responseLength) - p := serialized - p[0] = msgUserAuthInfoResponse - p = p[1:] - p = marshalUint32(p, uint32(len(answers))) - for _, a := range answers { - p = marshalString(p, []byte(a)) - } - - if err := c.writePacket(serialized); err != nil { - return authFailure, nil, err - } - } -} - -type retryableAuthMethod struct { - authMethod AuthMethod - maxTries int -} - -func (r *retryableAuthMethod) auth(session []byte, user string, c packetConn, rand io.Reader, extensions map[string][]byte) (ok authResult, methods []string, err error) { - for i := 0; r.maxTries <= 0 || i < r.maxTries; i++ { - ok, methods, err = r.authMethod.auth(session, user, c, rand, extensions) - if ok != authFailure || err != nil { // either success, partial success or error terminate - return ok, methods, err - } - } - return ok, methods, err -} - -func (r *retryableAuthMethod) method() string { - return r.authMethod.method() -} - -// RetryableAuthMethod is a decorator for other auth methods enabling them to -// be retried up to maxTries before considering that AuthMethod itself failed. -// If maxTries is <= 0, will retry indefinitely -// -// This is useful for interactive clients using challenge/response type -// authentication (e.g. Keyboard-Interactive, Password, etc) where the user -// could mistype their response resulting in the server issuing a -// SSH_MSG_USERAUTH_FAILURE (rfc4252 #8 [password] and rfc4256 #3.4 -// [keyboard-interactive]); Without this decorator, the non-retryable -// AuthMethod would be removed from future consideration, and never tried again -// (and so the user would never be able to retry their entry). -func RetryableAuthMethod(auth AuthMethod, maxTries int) AuthMethod { - return &retryableAuthMethod{authMethod: auth, maxTries: maxTries} -} - -// GSSAPIWithMICAuthMethod is an AuthMethod with "gssapi-with-mic" authentication. -// See RFC 4462 section 3 -// gssAPIClient is implementation of the GSSAPIClient interface, see the definition of the interface for details. -// target is the server host you want to log in to. -func GSSAPIWithMICAuthMethod(gssAPIClient GSSAPIClient, target string) AuthMethod { - if gssAPIClient == nil { - panic("gss-api client must be not nil with enable gssapi-with-mic") - } - return &gssAPIWithMICCallback{gssAPIClient: gssAPIClient, target: target} -} - -type gssAPIWithMICCallback struct { - gssAPIClient GSSAPIClient - target string -} - -func (g *gssAPIWithMICCallback) auth(session []byte, user string, c packetConn, rand io.Reader, _ map[string][]byte) (authResult, []string, error) { - m := &userAuthRequestMsg{ - User: user, - Service: serviceSSH, - Method: g.method(), - } - // The GSS-API authentication method is initiated when the client sends an SSH_MSG_USERAUTH_REQUEST. - // See RFC 4462 section 3.2. - m.Payload = appendU32(m.Payload, 1) - m.Payload = appendString(m.Payload, string(krb5OID)) - if err := c.writePacket(Marshal(m)); err != nil { - return authFailure, nil, err - } - // The server responds to the SSH_MSG_USERAUTH_REQUEST with either an - // SSH_MSG_USERAUTH_FAILURE if none of the mechanisms are supported or - // with an SSH_MSG_USERAUTH_GSSAPI_RESPONSE. - // See RFC 4462 section 3.3. - // OpenSSH supports Kerberos V5 mechanism only for GSS-API authentication,so I don't want to check - // selected mech if it is valid. - packet, err := c.readPacket() - if err != nil { - return authFailure, nil, err - } - userAuthGSSAPIResp := &userAuthGSSAPIResponse{} - if err := Unmarshal(packet, userAuthGSSAPIResp); err != nil { - return authFailure, nil, err - } - // Start the loop into the exchange token. - // See RFC 4462 section 3.4. - var token []byte - defer g.gssAPIClient.DeleteSecContext() - for { - // Initiates the establishment of a security context between the application and a remote peer. - nextToken, needContinue, err := g.gssAPIClient.InitSecContext("host@"+g.target, token, false) - if err != nil { - return authFailure, nil, err - } - if len(nextToken) > 0 { - if err := c.writePacket(Marshal(&userAuthGSSAPIToken{ - Token: nextToken, - })); err != nil { - return authFailure, nil, err - } - } - if !needContinue { - break - } - packet, err = c.readPacket() - if err != nil { - return authFailure, nil, err - } - switch packet[0] { - case msgUserAuthFailure: - var msg userAuthFailureMsg - if err := Unmarshal(packet, &msg); err != nil { - return authFailure, nil, err - } - if msg.PartialSuccess { - return authPartialSuccess, msg.Methods, nil - } - return authFailure, msg.Methods, nil - case msgUserAuthGSSAPIError: - userAuthGSSAPIErrorResp := &userAuthGSSAPIError{} - if err := Unmarshal(packet, userAuthGSSAPIErrorResp); err != nil { - return authFailure, nil, err - } - return authFailure, nil, fmt.Errorf("GSS-API Error:\n"+ - "Major Status: %d\n"+ - "Minor Status: %d\n"+ - "Error Message: %s\n", userAuthGSSAPIErrorResp.MajorStatus, userAuthGSSAPIErrorResp.MinorStatus, - userAuthGSSAPIErrorResp.Message) - case msgUserAuthGSSAPIToken: - userAuthGSSAPITokenReq := &userAuthGSSAPIToken{} - if err := Unmarshal(packet, userAuthGSSAPITokenReq); err != nil { - return authFailure, nil, err - } - token = userAuthGSSAPITokenReq.Token - } - } - // Binding Encryption Keys. - // See RFC 4462 section 3.5. - micField := buildMIC(string(session), user, "ssh-connection", "gssapi-with-mic") - micToken, err := g.gssAPIClient.GetMIC(micField) - if err != nil { - return authFailure, nil, err - } - if err := c.writePacket(Marshal(&userAuthGSSAPIMIC{ - MIC: micToken, - })); err != nil { - return authFailure, nil, err - } - return handleAuthResponse(c) -} - -func (g *gssAPIWithMICCallback) method() string { - return "gssapi-with-mic" -} diff --git a/vendor/golang.org/x/crypto/ssh/common.go b/vendor/golang.org/x/crypto/ssh/common.go deleted file mode 100644 index 2a47a61..0000000 --- a/vendor/golang.org/x/crypto/ssh/common.go +++ /dev/null @@ -1,430 +0,0 @@ -// Copyright 2011 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 ssh - -import ( - "crypto" - "crypto/rand" - "fmt" - "io" - "math" - "sync" - - _ "crypto/sha1" - _ "crypto/sha256" - _ "crypto/sha512" -) - -// These are string constants in the SSH protocol. -const ( - compressionNone = "none" - serviceUserAuth = "ssh-userauth" - serviceSSH = "ssh-connection" -) - -// supportedCiphers lists ciphers we support but might not recommend. -var supportedCiphers = []string{ - "aes128-ctr", "aes192-ctr", "aes256-ctr", - "aes128-gcm@openssh.com", - chacha20Poly1305ID, - "arcfour256", "arcfour128", "arcfour", - aes128cbcID, - tripledescbcID, -} - -// preferredCiphers specifies the default preference for ciphers. -var preferredCiphers = []string{ - "aes128-gcm@openssh.com", - chacha20Poly1305ID, - "aes128-ctr", "aes192-ctr", "aes256-ctr", -} - -// supportedKexAlgos specifies the supported key-exchange algorithms in -// preference order. -var supportedKexAlgos = []string{ - kexAlgoCurve25519SHA256, kexAlgoCurve25519SHA256LibSSH, - // P384 and P521 are not constant-time yet, but since we don't - // reuse ephemeral keys, using them for ECDH should be OK. - kexAlgoECDH256, kexAlgoECDH384, kexAlgoECDH521, - kexAlgoDH14SHA256, kexAlgoDH14SHA1, kexAlgoDH1SHA1, -} - -// serverForbiddenKexAlgos contains key exchange algorithms, that are forbidden -// for the server half. -var serverForbiddenKexAlgos = map[string]struct{}{ - kexAlgoDHGEXSHA1: {}, // server half implementation is only minimal to satisfy the automated tests - kexAlgoDHGEXSHA256: {}, // server half implementation is only minimal to satisfy the automated tests -} - -// preferredKexAlgos specifies the default preference for key-exchange algorithms -// in preference order. -var preferredKexAlgos = []string{ - kexAlgoCurve25519SHA256, kexAlgoCurve25519SHA256LibSSH, - kexAlgoECDH256, kexAlgoECDH384, kexAlgoECDH521, - kexAlgoDH14SHA256, kexAlgoDH14SHA1, -} - -// supportedHostKeyAlgos specifies the supported host-key algorithms (i.e. methods -// of authenticating servers) in preference order. -var supportedHostKeyAlgos = []string{ - CertAlgoRSASHA512v01, CertAlgoRSASHA256v01, - CertAlgoRSAv01, CertAlgoDSAv01, CertAlgoECDSA256v01, - CertAlgoECDSA384v01, CertAlgoECDSA521v01, CertAlgoED25519v01, - - KeyAlgoECDSA256, KeyAlgoECDSA384, KeyAlgoECDSA521, - KeyAlgoRSASHA512, KeyAlgoRSASHA256, - KeyAlgoRSA, KeyAlgoDSA, - - KeyAlgoED25519, -} - -// supportedMACs specifies a default set of MAC algorithms in preference order. -// This is based on RFC 4253, section 6.4, but with hmac-md5 variants removed -// because they have reached the end of their useful life. -var supportedMACs = []string{ - "hmac-sha2-256-etm@openssh.com", "hmac-sha2-256", "hmac-sha1", "hmac-sha1-96", -} - -var supportedCompressions = []string{compressionNone} - -// hashFuncs keeps the mapping of supported signature algorithms to their -// respective hashes needed for signing and verification. -var hashFuncs = map[string]crypto.Hash{ - KeyAlgoRSA: crypto.SHA1, - KeyAlgoRSASHA256: crypto.SHA256, - KeyAlgoRSASHA512: crypto.SHA512, - KeyAlgoDSA: crypto.SHA1, - KeyAlgoECDSA256: crypto.SHA256, - KeyAlgoECDSA384: crypto.SHA384, - KeyAlgoECDSA521: crypto.SHA512, - // KeyAlgoED25519 doesn't pre-hash. - KeyAlgoSKECDSA256: crypto.SHA256, - KeyAlgoSKED25519: crypto.SHA256, -} - -// algorithmsForKeyFormat returns the supported signature algorithms for a given -// public key format (PublicKey.Type), in order of preference. See RFC 8332, -// Section 2. See also the note in sendKexInit on backwards compatibility. -func algorithmsForKeyFormat(keyFormat string) []string { - switch keyFormat { - case KeyAlgoRSA: - return []string{KeyAlgoRSASHA256, KeyAlgoRSASHA512, KeyAlgoRSA} - case CertAlgoRSAv01: - return []string{CertAlgoRSASHA256v01, CertAlgoRSASHA512v01, CertAlgoRSAv01} - default: - return []string{keyFormat} - } -} - -// unexpectedMessageError results when the SSH message that we received didn't -// match what we wanted. -func unexpectedMessageError(expected, got uint8) error { - return fmt.Errorf("ssh: unexpected message type %d (expected %d)", got, expected) -} - -// parseError results from a malformed SSH message. -func parseError(tag uint8) error { - return fmt.Errorf("ssh: parse error in message type %d", tag) -} - -func findCommon(what string, client []string, server []string) (common string, err error) { - for _, c := range client { - for _, s := range server { - if c == s { - return c, nil - } - } - } - return "", fmt.Errorf("ssh: no common algorithm for %s; client offered: %v, server offered: %v", what, client, server) -} - -// directionAlgorithms records algorithm choices in one direction (either read or write) -type directionAlgorithms struct { - Cipher string - MAC string - Compression string -} - -// rekeyBytes returns a rekeying intervals in bytes. -func (a *directionAlgorithms) rekeyBytes() int64 { - // According to RFC4344 block ciphers should rekey after - // 2^(BLOCKSIZE/4) blocks. For all AES flavors BLOCKSIZE is - // 128. - switch a.Cipher { - case "aes128-ctr", "aes192-ctr", "aes256-ctr", gcmCipherID, aes128cbcID: - return 16 * (1 << 32) - - } - - // For others, stick with RFC4253 recommendation to rekey after 1 Gb of data. - return 1 << 30 -} - -var aeadCiphers = map[string]bool{ - gcmCipherID: true, - chacha20Poly1305ID: true, -} - -type algorithms struct { - kex string - hostKey string - w directionAlgorithms - r directionAlgorithms -} - -func findAgreedAlgorithms(isClient bool, clientKexInit, serverKexInit *kexInitMsg) (algs *algorithms, err error) { - result := &algorithms{} - - result.kex, err = findCommon("key exchange", clientKexInit.KexAlgos, serverKexInit.KexAlgos) - if err != nil { - return - } - - result.hostKey, err = findCommon("host key", clientKexInit.ServerHostKeyAlgos, serverKexInit.ServerHostKeyAlgos) - if err != nil { - return - } - - stoc, ctos := &result.w, &result.r - if isClient { - ctos, stoc = stoc, ctos - } - - ctos.Cipher, err = findCommon("client to server cipher", clientKexInit.CiphersClientServer, serverKexInit.CiphersClientServer) - if err != nil { - return - } - - stoc.Cipher, err = findCommon("server to client cipher", clientKexInit.CiphersServerClient, serverKexInit.CiphersServerClient) - if err != nil { - return - } - - if !aeadCiphers[ctos.Cipher] { - ctos.MAC, err = findCommon("client to server MAC", clientKexInit.MACsClientServer, serverKexInit.MACsClientServer) - if err != nil { - return - } - } - - if !aeadCiphers[stoc.Cipher] { - stoc.MAC, err = findCommon("server to client MAC", clientKexInit.MACsServerClient, serverKexInit.MACsServerClient) - if err != nil { - return - } - } - - ctos.Compression, err = findCommon("client to server compression", clientKexInit.CompressionClientServer, serverKexInit.CompressionClientServer) - if err != nil { - return - } - - stoc.Compression, err = findCommon("server to client compression", clientKexInit.CompressionServerClient, serverKexInit.CompressionServerClient) - if err != nil { - return - } - - return result, nil -} - -// If rekeythreshold is too small, we can't make any progress sending -// stuff. -const minRekeyThreshold uint64 = 256 - -// Config contains configuration data common to both ServerConfig and -// ClientConfig. -type Config struct { - // Rand provides the source of entropy for cryptographic - // primitives. If Rand is nil, the cryptographic random reader - // in package crypto/rand will be used. - Rand io.Reader - - // The maximum number of bytes sent or received after which a - // new key is negotiated. It must be at least 256. If - // unspecified, a size suitable for the chosen cipher is used. - RekeyThreshold uint64 - - // The allowed key exchanges algorithms. If unspecified then a - // default set of algorithms is used. - KeyExchanges []string - - // The allowed cipher algorithms. If unspecified then a sensible - // default is used. - Ciphers []string - - // The allowed MAC algorithms. If unspecified then a sensible default - // is used. - MACs []string -} - -// SetDefaults sets sensible values for unset fields in config. This is -// exported for testing: Configs passed to SSH functions are copied and have -// default values set automatically. -func (c *Config) SetDefaults() { - if c.Rand == nil { - c.Rand = rand.Reader - } - if c.Ciphers == nil { - c.Ciphers = preferredCiphers - } - var ciphers []string - for _, c := range c.Ciphers { - if cipherModes[c] != nil { - // reject the cipher if we have no cipherModes definition - ciphers = append(ciphers, c) - } - } - c.Ciphers = ciphers - - if c.KeyExchanges == nil { - c.KeyExchanges = preferredKexAlgos - } - - if c.MACs == nil { - c.MACs = supportedMACs - } - - if c.RekeyThreshold == 0 { - // cipher specific default - } else if c.RekeyThreshold < minRekeyThreshold { - c.RekeyThreshold = minRekeyThreshold - } else if c.RekeyThreshold >= math.MaxInt64 { - // Avoid weirdness if somebody uses -1 as a threshold. - c.RekeyThreshold = math.MaxInt64 - } -} - -// buildDataSignedForAuth returns the data that is signed in order to prove -// possession of a private key. See RFC 4252, section 7. algo is the advertised -// algorithm, and may be a certificate type. -func buildDataSignedForAuth(sessionID []byte, req userAuthRequestMsg, algo string, pubKey []byte) []byte { - data := struct { - Session []byte - Type byte - User string - Service string - Method string - Sign bool - Algo string - PubKey []byte - }{ - sessionID, - msgUserAuthRequest, - req.User, - req.Service, - req.Method, - true, - algo, - pubKey, - } - return Marshal(data) -} - -func appendU16(buf []byte, n uint16) []byte { - return append(buf, byte(n>>8), byte(n)) -} - -func appendU32(buf []byte, n uint32) []byte { - return append(buf, byte(n>>24), byte(n>>16), byte(n>>8), byte(n)) -} - -func appendU64(buf []byte, n uint64) []byte { - return append(buf, - byte(n>>56), byte(n>>48), byte(n>>40), byte(n>>32), - byte(n>>24), byte(n>>16), byte(n>>8), byte(n)) -} - -func appendInt(buf []byte, n int) []byte { - return appendU32(buf, uint32(n)) -} - -func appendString(buf []byte, s string) []byte { - buf = appendU32(buf, uint32(len(s))) - buf = append(buf, s...) - return buf -} - -func appendBool(buf []byte, b bool) []byte { - if b { - return append(buf, 1) - } - return append(buf, 0) -} - -// newCond is a helper to hide the fact that there is no usable zero -// value for sync.Cond. -func newCond() *sync.Cond { return sync.NewCond(new(sync.Mutex)) } - -// window represents the buffer available to clients -// wishing to write to a channel. -type window struct { - *sync.Cond - win uint32 // RFC 4254 5.2 says the window size can grow to 2^32-1 - writeWaiters int - closed bool -} - -// add adds win to the amount of window available -// for consumers. -func (w *window) add(win uint32) bool { - // a zero sized window adjust is a noop. - if win == 0 { - return true - } - w.L.Lock() - if w.win+win < win { - w.L.Unlock() - return false - } - w.win += win - // It is unusual that multiple goroutines would be attempting to reserve - // window space, but not guaranteed. Use broadcast to notify all waiters - // that additional window is available. - w.Broadcast() - w.L.Unlock() - return true -} - -// close sets the window to closed, so all reservations fail -// immediately. -func (w *window) close() { - w.L.Lock() - w.closed = true - w.Broadcast() - w.L.Unlock() -} - -// reserve reserves win from the available window capacity. -// If no capacity remains, reserve will block. reserve may -// return less than requested. -func (w *window) reserve(win uint32) (uint32, error) { - var err error - w.L.Lock() - w.writeWaiters++ - w.Broadcast() - for w.win == 0 && !w.closed { - w.Wait() - } - w.writeWaiters-- - if w.win < win { - win = w.win - } - w.win -= win - if w.closed { - err = io.EOF - } - w.L.Unlock() - return win, err -} - -// waitWriterBlocked waits until some goroutine is blocked for further -// writes. It is used in tests only. -func (w *window) waitWriterBlocked() { - w.Cond.L.Lock() - for w.writeWaiters == 0 { - w.Cond.Wait() - } - w.Cond.L.Unlock() -} diff --git a/vendor/golang.org/x/crypto/ssh/connection.go b/vendor/golang.org/x/crypto/ssh/connection.go deleted file mode 100644 index fd6b068..0000000 --- a/vendor/golang.org/x/crypto/ssh/connection.go +++ /dev/null @@ -1,143 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ssh - -import ( - "fmt" - "net" -) - -// OpenChannelError is returned if the other side rejects an -// OpenChannel request. -type OpenChannelError struct { - Reason RejectionReason - Message string -} - -func (e *OpenChannelError) Error() string { - return fmt.Sprintf("ssh: rejected: %s (%s)", e.Reason, e.Message) -} - -// ConnMetadata holds metadata for the connection. -type ConnMetadata interface { - // User returns the user ID for this connection. - User() string - - // SessionID returns the session hash, also denoted by H. - SessionID() []byte - - // ClientVersion returns the client's version string as hashed - // into the session ID. - ClientVersion() []byte - - // ServerVersion returns the server's version string as hashed - // into the session ID. - ServerVersion() []byte - - // RemoteAddr returns the remote address for this connection. - RemoteAddr() net.Addr - - // LocalAddr returns the local address for this connection. - LocalAddr() net.Addr -} - -// Conn represents an SSH connection for both server and client roles. -// Conn is the basis for implementing an application layer, such -// as ClientConn, which implements the traditional shell access for -// clients. -type Conn interface { - ConnMetadata - - // SendRequest sends a global request, and returns the - // reply. If wantReply is true, it returns the response status - // and payload. See also RFC4254, section 4. - SendRequest(name string, wantReply bool, payload []byte) (bool, []byte, error) - - // OpenChannel tries to open an channel. If the request is - // rejected, it returns *OpenChannelError. On success it returns - // the SSH Channel and a Go channel for incoming, out-of-band - // requests. The Go channel must be serviced, or the - // connection will hang. - OpenChannel(name string, data []byte) (Channel, <-chan *Request, error) - - // Close closes the underlying network connection - Close() error - - // Wait blocks until the connection has shut down, and returns the - // error causing the shutdown. - Wait() error - - // TODO(hanwen): consider exposing: - // RequestKeyChange - // Disconnect -} - -// DiscardRequests consumes and rejects all requests from the -// passed-in channel. -func DiscardRequests(in <-chan *Request) { - for req := range in { - if req.WantReply { - req.Reply(false, nil) - } - } -} - -// A connection represents an incoming connection. -type connection struct { - transport *handshakeTransport - sshConn - - // The connection protocol. - *mux -} - -func (c *connection) Close() error { - return c.sshConn.conn.Close() -} - -// sshconn provides net.Conn metadata, but disallows direct reads and -// writes. -type sshConn struct { - conn net.Conn - - user string - sessionID []byte - clientVersion []byte - serverVersion []byte -} - -func dup(src []byte) []byte { - dst := make([]byte, len(src)) - copy(dst, src) - return dst -} - -func (c *sshConn) User() string { - return c.user -} - -func (c *sshConn) RemoteAddr() net.Addr { - return c.conn.RemoteAddr() -} - -func (c *sshConn) Close() error { - return c.conn.Close() -} - -func (c *sshConn) LocalAddr() net.Addr { - return c.conn.LocalAddr() -} - -func (c *sshConn) SessionID() []byte { - return dup(c.sessionID) -} - -func (c *sshConn) ClientVersion() []byte { - return dup(c.clientVersion) -} - -func (c *sshConn) ServerVersion() []byte { - return dup(c.serverVersion) -} diff --git a/vendor/golang.org/x/crypto/ssh/doc.go b/vendor/golang.org/x/crypto/ssh/doc.go deleted file mode 100644 index f6bff60..0000000 --- a/vendor/golang.org/x/crypto/ssh/doc.go +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2011 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 ssh implements an SSH client and server. - -SSH is a transport security protocol, an authentication protocol and a -family of application protocols. The most typical application level -protocol is a remote shell and this is specifically implemented. However, -the multiplexed nature of SSH is exposed to users that wish to support -others. - -References: - - [PROTOCOL.certkeys]: http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/ssh/PROTOCOL.certkeys?rev=HEAD - [SSH-PARAMETERS]: http://www.iana.org/assignments/ssh-parameters/ssh-parameters.xml#ssh-parameters-1 - -This package does not fall under the stability promise of the Go language itself, -so its API may be changed when pressing needs arise. -*/ -package ssh // import "golang.org/x/crypto/ssh" diff --git a/vendor/golang.org/x/crypto/ssh/handshake.go b/vendor/golang.org/x/crypto/ssh/handshake.go deleted file mode 100644 index 653dc4d..0000000 --- a/vendor/golang.org/x/crypto/ssh/handshake.go +++ /dev/null @@ -1,704 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ssh - -import ( - "crypto/rand" - "errors" - "fmt" - "io" - "log" - "net" - "sync" -) - -// debugHandshake, if set, prints messages sent and received. Key -// exchange messages are printed as if DH were used, so the debug -// messages are wrong when using ECDH. -const debugHandshake = false - -// chanSize sets the amount of buffering SSH connections. This is -// primarily for testing: setting chanSize=0 uncovers deadlocks more -// quickly. -const chanSize = 16 - -// keyingTransport is a packet based transport that supports key -// changes. It need not be thread-safe. It should pass through -// msgNewKeys in both directions. -type keyingTransport interface { - packetConn - - // prepareKeyChange sets up a key change. The key change for a - // direction will be effected if a msgNewKeys message is sent - // or received. - prepareKeyChange(*algorithms, *kexResult) error -} - -// handshakeTransport implements rekeying on top of a keyingTransport -// and offers a thread-safe writePacket() interface. -type handshakeTransport struct { - conn keyingTransport - config *Config - - serverVersion []byte - clientVersion []byte - - // hostKeys is non-empty if we are the server. In that case, - // it contains all host keys that can be used to sign the - // connection. - hostKeys []Signer - - // hostKeyAlgorithms is non-empty if we are the client. In that case, - // we accept these key types from the server as host key. - hostKeyAlgorithms []string - - // On read error, incoming is closed, and readError is set. - incoming chan []byte - readError error - - mu sync.Mutex - writeError error - sentInitPacket []byte - sentInitMsg *kexInitMsg - pendingPackets [][]byte // Used when a key exchange is in progress. - - // If the read loop wants to schedule a kex, it pings this - // channel, and the write loop will send out a kex - // message. - requestKex chan struct{} - - // If the other side requests or confirms a kex, its kexInit - // packet is sent here for the write loop to find it. - startKex chan *pendingKex - - // data for host key checking - hostKeyCallback HostKeyCallback - dialAddress string - remoteAddr net.Addr - - // bannerCallback is non-empty if we are the client and it has been set in - // ClientConfig. In that case it is called during the user authentication - // dance to handle a custom server's message. - bannerCallback BannerCallback - - // Algorithms agreed in the last key exchange. - algorithms *algorithms - - readPacketsLeft uint32 - readBytesLeft int64 - - writePacketsLeft uint32 - writeBytesLeft int64 - - // The session ID or nil if first kex did not complete yet. - sessionID []byte -} - -type pendingKex struct { - otherInit []byte - done chan error -} - -func newHandshakeTransport(conn keyingTransport, config *Config, clientVersion, serverVersion []byte) *handshakeTransport { - t := &handshakeTransport{ - conn: conn, - serverVersion: serverVersion, - clientVersion: clientVersion, - incoming: make(chan []byte, chanSize), - requestKex: make(chan struct{}, 1), - startKex: make(chan *pendingKex, 1), - - config: config, - } - t.resetReadThresholds() - t.resetWriteThresholds() - - // We always start with a mandatory key exchange. - t.requestKex <- struct{}{} - return t -} - -func newClientTransport(conn keyingTransport, clientVersion, serverVersion []byte, config *ClientConfig, dialAddr string, addr net.Addr) *handshakeTransport { - t := newHandshakeTransport(conn, &config.Config, clientVersion, serverVersion) - t.dialAddress = dialAddr - t.remoteAddr = addr - t.hostKeyCallback = config.HostKeyCallback - t.bannerCallback = config.BannerCallback - if config.HostKeyAlgorithms != nil { - t.hostKeyAlgorithms = config.HostKeyAlgorithms - } else { - t.hostKeyAlgorithms = supportedHostKeyAlgos - } - go t.readLoop() - go t.kexLoop() - return t -} - -func newServerTransport(conn keyingTransport, clientVersion, serverVersion []byte, config *ServerConfig) *handshakeTransport { - t := newHandshakeTransport(conn, &config.Config, clientVersion, serverVersion) - t.hostKeys = config.hostKeys - go t.readLoop() - go t.kexLoop() - return t -} - -func (t *handshakeTransport) getSessionID() []byte { - return t.sessionID -} - -// waitSession waits for the session to be established. This should be -// the first thing to call after instantiating handshakeTransport. -func (t *handshakeTransport) waitSession() error { - p, err := t.readPacket() - if err != nil { - return err - } - if p[0] != msgNewKeys { - return fmt.Errorf("ssh: first packet should be msgNewKeys") - } - - return nil -} - -func (t *handshakeTransport) id() string { - if len(t.hostKeys) > 0 { - return "server" - } - return "client" -} - -func (t *handshakeTransport) printPacket(p []byte, write bool) { - action := "got" - if write { - action = "sent" - } - - if p[0] == msgChannelData || p[0] == msgChannelExtendedData { - log.Printf("%s %s data (packet %d bytes)", t.id(), action, len(p)) - } else { - msg, err := decode(p) - log.Printf("%s %s %T %v (%v)", t.id(), action, msg, msg, err) - } -} - -func (t *handshakeTransport) readPacket() ([]byte, error) { - p, ok := <-t.incoming - if !ok { - return nil, t.readError - } - return p, nil -} - -func (t *handshakeTransport) readLoop() { - first := true - for { - p, err := t.readOnePacket(first) - first = false - if err != nil { - t.readError = err - close(t.incoming) - break - } - if p[0] == msgIgnore || p[0] == msgDebug { - continue - } - t.incoming <- p - } - - // Stop writers too. - t.recordWriteError(t.readError) - - // Unblock the writer should it wait for this. - close(t.startKex) - - // Don't close t.requestKex; it's also written to from writePacket. -} - -func (t *handshakeTransport) pushPacket(p []byte) error { - if debugHandshake { - t.printPacket(p, true) - } - return t.conn.writePacket(p) -} - -func (t *handshakeTransport) getWriteError() error { - t.mu.Lock() - defer t.mu.Unlock() - return t.writeError -} - -func (t *handshakeTransport) recordWriteError(err error) { - t.mu.Lock() - defer t.mu.Unlock() - if t.writeError == nil && err != nil { - t.writeError = err - } -} - -func (t *handshakeTransport) requestKeyExchange() { - select { - case t.requestKex <- struct{}{}: - default: - // something already requested a kex, so do nothing. - } -} - -func (t *handshakeTransport) resetWriteThresholds() { - t.writePacketsLeft = packetRekeyThreshold - if t.config.RekeyThreshold > 0 { - t.writeBytesLeft = int64(t.config.RekeyThreshold) - } else if t.algorithms != nil { - t.writeBytesLeft = t.algorithms.w.rekeyBytes() - } else { - t.writeBytesLeft = 1 << 30 - } -} - -func (t *handshakeTransport) kexLoop() { - -write: - for t.getWriteError() == nil { - var request *pendingKex - var sent bool - - for request == nil || !sent { - var ok bool - select { - case request, ok = <-t.startKex: - if !ok { - break write - } - case <-t.requestKex: - break - } - - if !sent { - if err := t.sendKexInit(); err != nil { - t.recordWriteError(err) - break - } - sent = true - } - } - - if err := t.getWriteError(); err != nil { - if request != nil { - request.done <- err - } - break - } - - // We're not servicing t.requestKex, but that is OK: - // we never block on sending to t.requestKex. - - // We're not servicing t.startKex, but the remote end - // has just sent us a kexInitMsg, so it can't send - // another key change request, until we close the done - // channel on the pendingKex request. - - err := t.enterKeyExchange(request.otherInit) - - t.mu.Lock() - t.writeError = err - t.sentInitPacket = nil - t.sentInitMsg = nil - - t.resetWriteThresholds() - - // we have completed the key exchange. Since the - // reader is still blocked, it is safe to clear out - // the requestKex channel. This avoids the situation - // where: 1) we consumed our own request for the - // initial kex, and 2) the kex from the remote side - // caused another send on the requestKex channel, - clear: - for { - select { - case <-t.requestKex: - // - default: - break clear - } - } - - request.done <- t.writeError - - // kex finished. Push packets that we received while - // the kex was in progress. Don't look at t.startKex - // and don't increment writtenSinceKex: if we trigger - // another kex while we are still busy with the last - // one, things will become very confusing. - for _, p := range t.pendingPackets { - t.writeError = t.pushPacket(p) - if t.writeError != nil { - break - } - } - t.pendingPackets = t.pendingPackets[:0] - t.mu.Unlock() - } - - // drain startKex channel. We don't service t.requestKex - // because nobody does blocking sends there. - go func() { - for init := range t.startKex { - init.done <- t.writeError - } - }() - - // Unblock reader. - t.conn.Close() -} - -// The protocol uses uint32 for packet counters, so we can't let them -// reach 1<<32. We will actually read and write more packets than -// this, though: the other side may send more packets, and after we -// hit this limit on writing we will send a few more packets for the -// key exchange itself. -const packetRekeyThreshold = (1 << 31) - -func (t *handshakeTransport) resetReadThresholds() { - t.readPacketsLeft = packetRekeyThreshold - if t.config.RekeyThreshold > 0 { - t.readBytesLeft = int64(t.config.RekeyThreshold) - } else if t.algorithms != nil { - t.readBytesLeft = t.algorithms.r.rekeyBytes() - } else { - t.readBytesLeft = 1 << 30 - } -} - -func (t *handshakeTransport) readOnePacket(first bool) ([]byte, error) { - p, err := t.conn.readPacket() - if err != nil { - return nil, err - } - - if t.readPacketsLeft > 0 { - t.readPacketsLeft-- - } else { - t.requestKeyExchange() - } - - if t.readBytesLeft > 0 { - t.readBytesLeft -= int64(len(p)) - } else { - t.requestKeyExchange() - } - - if debugHandshake { - t.printPacket(p, false) - } - - if first && p[0] != msgKexInit { - return nil, fmt.Errorf("ssh: first packet should be msgKexInit") - } - - if p[0] != msgKexInit { - return p, nil - } - - firstKex := t.sessionID == nil - - kex := pendingKex{ - done: make(chan error, 1), - otherInit: p, - } - t.startKex <- &kex - err = <-kex.done - - if debugHandshake { - log.Printf("%s exited key exchange (first %v), err %v", t.id(), firstKex, err) - } - - if err != nil { - return nil, err - } - - t.resetReadThresholds() - - // By default, a key exchange is hidden from higher layers by - // translating it into msgIgnore. - successPacket := []byte{msgIgnore} - if firstKex { - // sendKexInit() for the first kex waits for - // msgNewKeys so the authentication process is - // guaranteed to happen over an encrypted transport. - successPacket = []byte{msgNewKeys} - } - - return successPacket, nil -} - -// sendKexInit sends a key change message. -func (t *handshakeTransport) sendKexInit() error { - t.mu.Lock() - defer t.mu.Unlock() - if t.sentInitMsg != nil { - // kexInits may be sent either in response to the other side, - // or because our side wants to initiate a key change, so we - // may have already sent a kexInit. In that case, don't send a - // second kexInit. - return nil - } - - msg := &kexInitMsg{ - KexAlgos: t.config.KeyExchanges, - CiphersClientServer: t.config.Ciphers, - CiphersServerClient: t.config.Ciphers, - MACsClientServer: t.config.MACs, - MACsServerClient: t.config.MACs, - CompressionClientServer: supportedCompressions, - CompressionServerClient: supportedCompressions, - } - io.ReadFull(rand.Reader, msg.Cookie[:]) - - isServer := len(t.hostKeys) > 0 - if isServer { - for _, k := range t.hostKeys { - // If k is an AlgorithmSigner, presume it supports all signature algorithms - // associated with the key format. (Ideally AlgorithmSigner would have a - // method to advertise supported algorithms, but it doesn't. This means that - // adding support for a new algorithm is a breaking change, as we will - // immediately negotiate it even if existing implementations don't support - // it. If that ever happens, we'll have to figure something out.) - // If k is not an AlgorithmSigner, we can only assume it only supports the - // algorithms that matches the key format. (This means that Sign can't pick - // a different default.) - keyFormat := k.PublicKey().Type() - if _, ok := k.(AlgorithmSigner); ok { - msg.ServerHostKeyAlgos = append(msg.ServerHostKeyAlgos, algorithmsForKeyFormat(keyFormat)...) - } else { - msg.ServerHostKeyAlgos = append(msg.ServerHostKeyAlgos, keyFormat) - } - } - } else { - msg.ServerHostKeyAlgos = t.hostKeyAlgorithms - - // As a client we opt in to receiving SSH_MSG_EXT_INFO so we know what - // algorithms the server supports for public key authentication. See RFC - // 8308, Section 2.1. - if firstKeyExchange := t.sessionID == nil; firstKeyExchange { - msg.KexAlgos = make([]string, 0, len(t.config.KeyExchanges)+1) - msg.KexAlgos = append(msg.KexAlgos, t.config.KeyExchanges...) - msg.KexAlgos = append(msg.KexAlgos, "ext-info-c") - } - } - - packet := Marshal(msg) - - // writePacket destroys the contents, so save a copy. - packetCopy := make([]byte, len(packet)) - copy(packetCopy, packet) - - if err := t.pushPacket(packetCopy); err != nil { - return err - } - - t.sentInitMsg = msg - t.sentInitPacket = packet - - return nil -} - -func (t *handshakeTransport) writePacket(p []byte) error { - switch p[0] { - case msgKexInit: - return errors.New("ssh: only handshakeTransport can send kexInit") - case msgNewKeys: - return errors.New("ssh: only handshakeTransport can send newKeys") - } - - t.mu.Lock() - defer t.mu.Unlock() - if t.writeError != nil { - return t.writeError - } - - if t.sentInitMsg != nil { - // Copy the packet so the writer can reuse the buffer. - cp := make([]byte, len(p)) - copy(cp, p) - t.pendingPackets = append(t.pendingPackets, cp) - return nil - } - - if t.writeBytesLeft > 0 { - t.writeBytesLeft -= int64(len(p)) - } else { - t.requestKeyExchange() - } - - if t.writePacketsLeft > 0 { - t.writePacketsLeft-- - } else { - t.requestKeyExchange() - } - - if err := t.pushPacket(p); err != nil { - t.writeError = err - } - - return nil -} - -func (t *handshakeTransport) Close() error { - return t.conn.Close() -} - -func (t *handshakeTransport) enterKeyExchange(otherInitPacket []byte) error { - if debugHandshake { - log.Printf("%s entered key exchange", t.id()) - } - - otherInit := &kexInitMsg{} - if err := Unmarshal(otherInitPacket, otherInit); err != nil { - return err - } - - magics := handshakeMagics{ - clientVersion: t.clientVersion, - serverVersion: t.serverVersion, - clientKexInit: otherInitPacket, - serverKexInit: t.sentInitPacket, - } - - clientInit := otherInit - serverInit := t.sentInitMsg - isClient := len(t.hostKeys) == 0 - if isClient { - clientInit, serverInit = serverInit, clientInit - - magics.clientKexInit = t.sentInitPacket - magics.serverKexInit = otherInitPacket - } - - var err error - t.algorithms, err = findAgreedAlgorithms(isClient, clientInit, serverInit) - if err != nil { - return err - } - - // We don't send FirstKexFollows, but we handle receiving it. - // - // RFC 4253 section 7 defines the kex and the agreement method for - // first_kex_packet_follows. It states that the guessed packet - // should be ignored if the "kex algorithm and/or the host - // key algorithm is guessed wrong (server and client have - // different preferred algorithm), or if any of the other - // algorithms cannot be agreed upon". The other algorithms have - // already been checked above so the kex algorithm and host key - // algorithm are checked here. - if otherInit.FirstKexFollows && (clientInit.KexAlgos[0] != serverInit.KexAlgos[0] || clientInit.ServerHostKeyAlgos[0] != serverInit.ServerHostKeyAlgos[0]) { - // other side sent a kex message for the wrong algorithm, - // which we have to ignore. - if _, err := t.conn.readPacket(); err != nil { - return err - } - } - - kex, ok := kexAlgoMap[t.algorithms.kex] - if !ok { - return fmt.Errorf("ssh: unexpected key exchange algorithm %v", t.algorithms.kex) - } - - var result *kexResult - if len(t.hostKeys) > 0 { - result, err = t.server(kex, &magics) - } else { - result, err = t.client(kex, &magics) - } - - if err != nil { - return err - } - - if t.sessionID == nil { - t.sessionID = result.H - } - result.SessionID = t.sessionID - - if err := t.conn.prepareKeyChange(t.algorithms, result); err != nil { - return err - } - if err = t.conn.writePacket([]byte{msgNewKeys}); err != nil { - return err - } - if packet, err := t.conn.readPacket(); err != nil { - return err - } else if packet[0] != msgNewKeys { - return unexpectedMessageError(msgNewKeys, packet[0]) - } - - return nil -} - -// algorithmSignerWrapper is an AlgorithmSigner that only supports the default -// key format algorithm. -// -// This is technically a violation of the AlgorithmSigner interface, but it -// should be unreachable given where we use this. Anyway, at least it returns an -// error instead of panicing or producing an incorrect signature. -type algorithmSignerWrapper struct { - Signer -} - -func (a algorithmSignerWrapper) SignWithAlgorithm(rand io.Reader, data []byte, algorithm string) (*Signature, error) { - if algorithm != underlyingAlgo(a.PublicKey().Type()) { - return nil, errors.New("ssh: internal error: algorithmSignerWrapper invoked with non-default algorithm") - } - return a.Sign(rand, data) -} - -func pickHostKey(hostKeys []Signer, algo string) AlgorithmSigner { - for _, k := range hostKeys { - if algo == k.PublicKey().Type() { - return algorithmSignerWrapper{k} - } - k, ok := k.(AlgorithmSigner) - if !ok { - continue - } - for _, a := range algorithmsForKeyFormat(k.PublicKey().Type()) { - if algo == a { - return k - } - } - } - return nil -} - -func (t *handshakeTransport) server(kex kexAlgorithm, magics *handshakeMagics) (*kexResult, error) { - hostKey := pickHostKey(t.hostKeys, t.algorithms.hostKey) - if hostKey == nil { - return nil, errors.New("ssh: internal error: negotiated unsupported signature type") - } - - r, err := kex.Server(t.conn, t.config.Rand, magics, hostKey, t.algorithms.hostKey) - return r, err -} - -func (t *handshakeTransport) client(kex kexAlgorithm, magics *handshakeMagics) (*kexResult, error) { - result, err := kex.Client(t.conn, t.config.Rand, magics) - if err != nil { - return nil, err - } - - hostKey, err := ParsePublicKey(result.HostKey) - if err != nil { - return nil, err - } - - if err := verifyHostKeySignature(hostKey, t.algorithms.hostKey, result); err != nil { - return nil, err - } - - err = t.hostKeyCallback(t.dialAddress, t.remoteAddr, hostKey) - if err != nil { - return nil, err - } - - return result, nil -} diff --git a/vendor/golang.org/x/crypto/ssh/internal/bcrypt_pbkdf/bcrypt_pbkdf.go b/vendor/golang.org/x/crypto/ssh/internal/bcrypt_pbkdf/bcrypt_pbkdf.go deleted file mode 100644 index af81d26..0000000 --- a/vendor/golang.org/x/crypto/ssh/internal/bcrypt_pbkdf/bcrypt_pbkdf.go +++ /dev/null @@ -1,93 +0,0 @@ -// 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 bcrypt_pbkdf implements bcrypt_pbkdf(3) from OpenBSD. -// -// See https://flak.tedunangst.com/post/bcrypt-pbkdf and -// https://cvsweb.openbsd.org/cgi-bin/cvsweb/src/lib/libutil/bcrypt_pbkdf.c. -package bcrypt_pbkdf - -import ( - "crypto/sha512" - "errors" - "golang.org/x/crypto/blowfish" -) - -const blockSize = 32 - -// Key derives a key from the password, salt and rounds count, returning a -// []byte of length keyLen that can be used as cryptographic key. -func Key(password, salt []byte, rounds, keyLen int) ([]byte, error) { - if rounds < 1 { - return nil, errors.New("bcrypt_pbkdf: number of rounds is too small") - } - if len(password) == 0 { - return nil, errors.New("bcrypt_pbkdf: empty password") - } - if len(salt) == 0 || len(salt) > 1<<20 { - return nil, errors.New("bcrypt_pbkdf: bad salt length") - } - if keyLen > 1024 { - return nil, errors.New("bcrypt_pbkdf: keyLen is too large") - } - - numBlocks := (keyLen + blockSize - 1) / blockSize - key := make([]byte, numBlocks*blockSize) - - h := sha512.New() - h.Write(password) - shapass := h.Sum(nil) - - shasalt := make([]byte, 0, sha512.Size) - cnt, tmp := make([]byte, 4), make([]byte, blockSize) - for block := 1; block <= numBlocks; block++ { - h.Reset() - h.Write(salt) - cnt[0] = byte(block >> 24) - cnt[1] = byte(block >> 16) - cnt[2] = byte(block >> 8) - cnt[3] = byte(block) - h.Write(cnt) - bcryptHash(tmp, shapass, h.Sum(shasalt)) - - out := make([]byte, blockSize) - copy(out, tmp) - for i := 2; i <= rounds; i++ { - h.Reset() - h.Write(tmp) - bcryptHash(tmp, shapass, h.Sum(shasalt)) - for j := 0; j < len(out); j++ { - out[j] ^= tmp[j] - } - } - - for i, v := range out { - key[i*numBlocks+(block-1)] = v - } - } - return key[:keyLen], nil -} - -var magic = []byte("OxychromaticBlowfishSwatDynamite") - -func bcryptHash(out, shapass, shasalt []byte) { - c, err := blowfish.NewSaltedCipher(shapass, shasalt) - if err != nil { - panic(err) - } - for i := 0; i < 64; i++ { - blowfish.ExpandKey(shasalt, c) - blowfish.ExpandKey(shapass, c) - } - copy(out, magic) - for i := 0; i < 32; i += 8 { - for j := 0; j < 64; j++ { - c.Encrypt(out[i:i+8], out[i:i+8]) - } - } - // Swap bytes due to different endianness. - for i := 0; i < 32; i += 4 { - out[i+3], out[i+2], out[i+1], out[i] = out[i], out[i+1], out[i+2], out[i+3] - } -} diff --git a/vendor/golang.org/x/crypto/ssh/kex.go b/vendor/golang.org/x/crypto/ssh/kex.go deleted file mode 100644 index 927a90c..0000000 --- a/vendor/golang.org/x/crypto/ssh/kex.go +++ /dev/null @@ -1,774 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ssh - -import ( - "crypto" - "crypto/ecdsa" - "crypto/elliptic" - "crypto/rand" - "crypto/subtle" - "encoding/binary" - "errors" - "fmt" - "io" - "math/big" - - "golang.org/x/crypto/curve25519" -) - -const ( - kexAlgoDH1SHA1 = "diffie-hellman-group1-sha1" - kexAlgoDH14SHA1 = "diffie-hellman-group14-sha1" - kexAlgoDH14SHA256 = "diffie-hellman-group14-sha256" - kexAlgoECDH256 = "ecdh-sha2-nistp256" - kexAlgoECDH384 = "ecdh-sha2-nistp384" - kexAlgoECDH521 = "ecdh-sha2-nistp521" - kexAlgoCurve25519SHA256LibSSH = "curve25519-sha256@libssh.org" - kexAlgoCurve25519SHA256 = "curve25519-sha256" - - // For the following kex only the client half contains a production - // ready implementation. The server half only consists of a minimal - // implementation to satisfy the automated tests. - kexAlgoDHGEXSHA1 = "diffie-hellman-group-exchange-sha1" - kexAlgoDHGEXSHA256 = "diffie-hellman-group-exchange-sha256" -) - -// kexResult captures the outcome of a key exchange. -type kexResult struct { - // Session hash. See also RFC 4253, section 8. - H []byte - - // Shared secret. See also RFC 4253, section 8. - K []byte - - // Host key as hashed into H. - HostKey []byte - - // Signature of H. - Signature []byte - - // A cryptographic hash function that matches the security - // level of the key exchange algorithm. It is used for - // calculating H, and for deriving keys from H and K. - Hash crypto.Hash - - // The session ID, which is the first H computed. This is used - // to derive key material inside the transport. - SessionID []byte -} - -// handshakeMagics contains data that is always included in the -// session hash. -type handshakeMagics struct { - clientVersion, serverVersion []byte - clientKexInit, serverKexInit []byte -} - -func (m *handshakeMagics) write(w io.Writer) { - writeString(w, m.clientVersion) - writeString(w, m.serverVersion) - writeString(w, m.clientKexInit) - writeString(w, m.serverKexInit) -} - -// kexAlgorithm abstracts different key exchange algorithms. -type kexAlgorithm interface { - // Server runs server-side key agreement, signing the result - // with a hostkey. algo is the negotiated algorithm, and may - // be a certificate type. - Server(p packetConn, rand io.Reader, magics *handshakeMagics, s AlgorithmSigner, algo string) (*kexResult, error) - - // Client runs the client-side key agreement. Caller is - // responsible for verifying the host key signature. - Client(p packetConn, rand io.Reader, magics *handshakeMagics) (*kexResult, error) -} - -// dhGroup is a multiplicative group suitable for implementing Diffie-Hellman key agreement. -type dhGroup struct { - g, p, pMinus1 *big.Int - hashFunc crypto.Hash -} - -func (group *dhGroup) diffieHellman(theirPublic, myPrivate *big.Int) (*big.Int, error) { - if theirPublic.Cmp(bigOne) <= 0 || theirPublic.Cmp(group.pMinus1) >= 0 { - return nil, errors.New("ssh: DH parameter out of bounds") - } - return new(big.Int).Exp(theirPublic, myPrivate, group.p), nil -} - -func (group *dhGroup) Client(c packetConn, randSource io.Reader, magics *handshakeMagics) (*kexResult, error) { - var x *big.Int - for { - var err error - if x, err = rand.Int(randSource, group.pMinus1); err != nil { - return nil, err - } - if x.Sign() > 0 { - break - } - } - - X := new(big.Int).Exp(group.g, x, group.p) - kexDHInit := kexDHInitMsg{ - X: X, - } - if err := c.writePacket(Marshal(&kexDHInit)); err != nil { - return nil, err - } - - packet, err := c.readPacket() - if err != nil { - return nil, err - } - - var kexDHReply kexDHReplyMsg - if err = Unmarshal(packet, &kexDHReply); err != nil { - return nil, err - } - - ki, err := group.diffieHellman(kexDHReply.Y, x) - if err != nil { - return nil, err - } - - h := group.hashFunc.New() - magics.write(h) - writeString(h, kexDHReply.HostKey) - writeInt(h, X) - writeInt(h, kexDHReply.Y) - K := make([]byte, intLength(ki)) - marshalInt(K, ki) - h.Write(K) - - return &kexResult{ - H: h.Sum(nil), - K: K, - HostKey: kexDHReply.HostKey, - Signature: kexDHReply.Signature, - Hash: group.hashFunc, - }, nil -} - -func (group *dhGroup) Server(c packetConn, randSource io.Reader, magics *handshakeMagics, priv AlgorithmSigner, algo string) (result *kexResult, err error) { - packet, err := c.readPacket() - if err != nil { - return - } - var kexDHInit kexDHInitMsg - if err = Unmarshal(packet, &kexDHInit); err != nil { - return - } - - var y *big.Int - for { - if y, err = rand.Int(randSource, group.pMinus1); err != nil { - return - } - if y.Sign() > 0 { - break - } - } - - Y := new(big.Int).Exp(group.g, y, group.p) - ki, err := group.diffieHellman(kexDHInit.X, y) - if err != nil { - return nil, err - } - - hostKeyBytes := priv.PublicKey().Marshal() - - h := group.hashFunc.New() - magics.write(h) - writeString(h, hostKeyBytes) - writeInt(h, kexDHInit.X) - writeInt(h, Y) - - K := make([]byte, intLength(ki)) - marshalInt(K, ki) - h.Write(K) - - H := h.Sum(nil) - - // H is already a hash, but the hostkey signing will apply its - // own key-specific hash algorithm. - sig, err := signAndMarshal(priv, randSource, H, algo) - if err != nil { - return nil, err - } - - kexDHReply := kexDHReplyMsg{ - HostKey: hostKeyBytes, - Y: Y, - Signature: sig, - } - packet = Marshal(&kexDHReply) - - err = c.writePacket(packet) - return &kexResult{ - H: H, - K: K, - HostKey: hostKeyBytes, - Signature: sig, - Hash: group.hashFunc, - }, err -} - -// ecdh performs Elliptic Curve Diffie-Hellman key exchange as -// described in RFC 5656, section 4. -type ecdh struct { - curve elliptic.Curve -} - -func (kex *ecdh) Client(c packetConn, rand io.Reader, magics *handshakeMagics) (*kexResult, error) { - ephKey, err := ecdsa.GenerateKey(kex.curve, rand) - if err != nil { - return nil, err - } - - kexInit := kexECDHInitMsg{ - ClientPubKey: elliptic.Marshal(kex.curve, ephKey.PublicKey.X, ephKey.PublicKey.Y), - } - - serialized := Marshal(&kexInit) - if err := c.writePacket(serialized); err != nil { - return nil, err - } - - packet, err := c.readPacket() - if err != nil { - return nil, err - } - - var reply kexECDHReplyMsg - if err = Unmarshal(packet, &reply); err != nil { - return nil, err - } - - x, y, err := unmarshalECKey(kex.curve, reply.EphemeralPubKey) - if err != nil { - return nil, err - } - - // generate shared secret - secret, _ := kex.curve.ScalarMult(x, y, ephKey.D.Bytes()) - - h := ecHash(kex.curve).New() - magics.write(h) - writeString(h, reply.HostKey) - writeString(h, kexInit.ClientPubKey) - writeString(h, reply.EphemeralPubKey) - K := make([]byte, intLength(secret)) - marshalInt(K, secret) - h.Write(K) - - return &kexResult{ - H: h.Sum(nil), - K: K, - HostKey: reply.HostKey, - Signature: reply.Signature, - Hash: ecHash(kex.curve), - }, nil -} - -// unmarshalECKey parses and checks an EC key. -func unmarshalECKey(curve elliptic.Curve, pubkey []byte) (x, y *big.Int, err error) { - x, y = elliptic.Unmarshal(curve, pubkey) - if x == nil { - return nil, nil, errors.New("ssh: elliptic.Unmarshal failure") - } - if !validateECPublicKey(curve, x, y) { - return nil, nil, errors.New("ssh: public key not on curve") - } - return x, y, nil -} - -// validateECPublicKey checks that the point is a valid public key for -// the given curve. See [SEC1], 3.2.2 -func validateECPublicKey(curve elliptic.Curve, x, y *big.Int) bool { - if x.Sign() == 0 && y.Sign() == 0 { - return false - } - - if x.Cmp(curve.Params().P) >= 0 { - return false - } - - if y.Cmp(curve.Params().P) >= 0 { - return false - } - - if !curve.IsOnCurve(x, y) { - return false - } - - // We don't check if N * PubKey == 0, since - // - // - the NIST curves have cofactor = 1, so this is implicit. - // (We don't foresee an implementation that supports non NIST - // curves) - // - // - for ephemeral keys, we don't need to worry about small - // subgroup attacks. - return true -} - -func (kex *ecdh) Server(c packetConn, rand io.Reader, magics *handshakeMagics, priv AlgorithmSigner, algo string) (result *kexResult, err error) { - packet, err := c.readPacket() - if err != nil { - return nil, err - } - - var kexECDHInit kexECDHInitMsg - if err = Unmarshal(packet, &kexECDHInit); err != nil { - return nil, err - } - - clientX, clientY, err := unmarshalECKey(kex.curve, kexECDHInit.ClientPubKey) - if err != nil { - return nil, err - } - - // We could cache this key across multiple users/multiple - // connection attempts, but the benefit is small. OpenSSH - // generates a new key for each incoming connection. - ephKey, err := ecdsa.GenerateKey(kex.curve, rand) - if err != nil { - return nil, err - } - - hostKeyBytes := priv.PublicKey().Marshal() - - serializedEphKey := elliptic.Marshal(kex.curve, ephKey.PublicKey.X, ephKey.PublicKey.Y) - - // generate shared secret - secret, _ := kex.curve.ScalarMult(clientX, clientY, ephKey.D.Bytes()) - - h := ecHash(kex.curve).New() - magics.write(h) - writeString(h, hostKeyBytes) - writeString(h, kexECDHInit.ClientPubKey) - writeString(h, serializedEphKey) - - K := make([]byte, intLength(secret)) - marshalInt(K, secret) - h.Write(K) - - H := h.Sum(nil) - - // H is already a hash, but the hostkey signing will apply its - // own key-specific hash algorithm. - sig, err := signAndMarshal(priv, rand, H, algo) - if err != nil { - return nil, err - } - - reply := kexECDHReplyMsg{ - EphemeralPubKey: serializedEphKey, - HostKey: hostKeyBytes, - Signature: sig, - } - - serialized := Marshal(&reply) - if err := c.writePacket(serialized); err != nil { - return nil, err - } - - return &kexResult{ - H: H, - K: K, - HostKey: reply.HostKey, - Signature: sig, - Hash: ecHash(kex.curve), - }, nil -} - -// ecHash returns the hash to match the given elliptic curve, see RFC -// 5656, section 6.2.1 -func ecHash(curve elliptic.Curve) crypto.Hash { - bitSize := curve.Params().BitSize - switch { - case bitSize <= 256: - return crypto.SHA256 - case bitSize <= 384: - return crypto.SHA384 - } - return crypto.SHA512 -} - -var kexAlgoMap = map[string]kexAlgorithm{} - -func init() { - // This is the group called diffie-hellman-group1-sha1 in - // RFC 4253 and Oakley Group 2 in RFC 2409. - p, _ := new(big.Int).SetString("FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE65381FFFFFFFFFFFFFFFF", 16) - kexAlgoMap[kexAlgoDH1SHA1] = &dhGroup{ - g: new(big.Int).SetInt64(2), - p: p, - pMinus1: new(big.Int).Sub(p, bigOne), - hashFunc: crypto.SHA1, - } - - // This are the groups called diffie-hellman-group14-sha1 and - // diffie-hellman-group14-sha256 in RFC 4253 and RFC 8268, - // and Oakley Group 14 in RFC 3526. - p, _ = new(big.Int).SetString("FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AACAA68FFFFFFFFFFFFFFFF", 16) - group14 := &dhGroup{ - g: new(big.Int).SetInt64(2), - p: p, - pMinus1: new(big.Int).Sub(p, bigOne), - } - - kexAlgoMap[kexAlgoDH14SHA1] = &dhGroup{ - g: group14.g, p: group14.p, pMinus1: group14.pMinus1, - hashFunc: crypto.SHA1, - } - kexAlgoMap[kexAlgoDH14SHA256] = &dhGroup{ - g: group14.g, p: group14.p, pMinus1: group14.pMinus1, - hashFunc: crypto.SHA256, - } - - kexAlgoMap[kexAlgoECDH521] = &ecdh{elliptic.P521()} - kexAlgoMap[kexAlgoECDH384] = &ecdh{elliptic.P384()} - kexAlgoMap[kexAlgoECDH256] = &ecdh{elliptic.P256()} - kexAlgoMap[kexAlgoCurve25519SHA256] = &curve25519sha256{} - kexAlgoMap[kexAlgoCurve25519SHA256LibSSH] = &curve25519sha256{} - kexAlgoMap[kexAlgoDHGEXSHA1] = &dhGEXSHA{hashFunc: crypto.SHA1} - kexAlgoMap[kexAlgoDHGEXSHA256] = &dhGEXSHA{hashFunc: crypto.SHA256} -} - -// curve25519sha256 implements the curve25519-sha256 (formerly known as -// curve25519-sha256@libssh.org) key exchange method, as described in RFC 8731. -type curve25519sha256 struct{} - -type curve25519KeyPair struct { - priv [32]byte - pub [32]byte -} - -func (kp *curve25519KeyPair) generate(rand io.Reader) error { - if _, err := io.ReadFull(rand, kp.priv[:]); err != nil { - return err - } - curve25519.ScalarBaseMult(&kp.pub, &kp.priv) - return nil -} - -// curve25519Zeros is just an array of 32 zero bytes so that we have something -// convenient to compare against in order to reject curve25519 points with the -// wrong order. -var curve25519Zeros [32]byte - -func (kex *curve25519sha256) Client(c packetConn, rand io.Reader, magics *handshakeMagics) (*kexResult, error) { - var kp curve25519KeyPair - if err := kp.generate(rand); err != nil { - return nil, err - } - if err := c.writePacket(Marshal(&kexECDHInitMsg{kp.pub[:]})); err != nil { - return nil, err - } - - packet, err := c.readPacket() - if err != nil { - return nil, err - } - - var reply kexECDHReplyMsg - if err = Unmarshal(packet, &reply); err != nil { - return nil, err - } - if len(reply.EphemeralPubKey) != 32 { - return nil, errors.New("ssh: peer's curve25519 public value has wrong length") - } - - var servPub, secret [32]byte - copy(servPub[:], reply.EphemeralPubKey) - curve25519.ScalarMult(&secret, &kp.priv, &servPub) - if subtle.ConstantTimeCompare(secret[:], curve25519Zeros[:]) == 1 { - return nil, errors.New("ssh: peer's curve25519 public value has wrong order") - } - - h := crypto.SHA256.New() - magics.write(h) - writeString(h, reply.HostKey) - writeString(h, kp.pub[:]) - writeString(h, reply.EphemeralPubKey) - - ki := new(big.Int).SetBytes(secret[:]) - K := make([]byte, intLength(ki)) - marshalInt(K, ki) - h.Write(K) - - return &kexResult{ - H: h.Sum(nil), - K: K, - HostKey: reply.HostKey, - Signature: reply.Signature, - Hash: crypto.SHA256, - }, nil -} - -func (kex *curve25519sha256) Server(c packetConn, rand io.Reader, magics *handshakeMagics, priv AlgorithmSigner, algo string) (result *kexResult, err error) { - packet, err := c.readPacket() - if err != nil { - return - } - var kexInit kexECDHInitMsg - if err = Unmarshal(packet, &kexInit); err != nil { - return - } - - if len(kexInit.ClientPubKey) != 32 { - return nil, errors.New("ssh: peer's curve25519 public value has wrong length") - } - - var kp curve25519KeyPair - if err := kp.generate(rand); err != nil { - return nil, err - } - - var clientPub, secret [32]byte - copy(clientPub[:], kexInit.ClientPubKey) - curve25519.ScalarMult(&secret, &kp.priv, &clientPub) - if subtle.ConstantTimeCompare(secret[:], curve25519Zeros[:]) == 1 { - return nil, errors.New("ssh: peer's curve25519 public value has wrong order") - } - - hostKeyBytes := priv.PublicKey().Marshal() - - h := crypto.SHA256.New() - magics.write(h) - writeString(h, hostKeyBytes) - writeString(h, kexInit.ClientPubKey) - writeString(h, kp.pub[:]) - - ki := new(big.Int).SetBytes(secret[:]) - K := make([]byte, intLength(ki)) - marshalInt(K, ki) - h.Write(K) - - H := h.Sum(nil) - - sig, err := signAndMarshal(priv, rand, H, algo) - if err != nil { - return nil, err - } - - reply := kexECDHReplyMsg{ - EphemeralPubKey: kp.pub[:], - HostKey: hostKeyBytes, - Signature: sig, - } - if err := c.writePacket(Marshal(&reply)); err != nil { - return nil, err - } - return &kexResult{ - H: H, - K: K, - HostKey: hostKeyBytes, - Signature: sig, - Hash: crypto.SHA256, - }, nil -} - -// dhGEXSHA implements the diffie-hellman-group-exchange-sha1 and -// diffie-hellman-group-exchange-sha256 key agreement protocols, -// as described in RFC 4419 -type dhGEXSHA struct { - hashFunc crypto.Hash -} - -const ( - dhGroupExchangeMinimumBits = 2048 - dhGroupExchangePreferredBits = 2048 - dhGroupExchangeMaximumBits = 8192 -) - -func (gex *dhGEXSHA) Client(c packetConn, randSource io.Reader, magics *handshakeMagics) (*kexResult, error) { - // Send GexRequest - kexDHGexRequest := kexDHGexRequestMsg{ - MinBits: dhGroupExchangeMinimumBits, - PreferedBits: dhGroupExchangePreferredBits, - MaxBits: dhGroupExchangeMaximumBits, - } - if err := c.writePacket(Marshal(&kexDHGexRequest)); err != nil { - return nil, err - } - - // Receive GexGroup - packet, err := c.readPacket() - if err != nil { - return nil, err - } - - var msg kexDHGexGroupMsg - if err = Unmarshal(packet, &msg); err != nil { - return nil, err - } - - // reject if p's bit length < dhGroupExchangeMinimumBits or > dhGroupExchangeMaximumBits - if msg.P.BitLen() < dhGroupExchangeMinimumBits || msg.P.BitLen() > dhGroupExchangeMaximumBits { - return nil, fmt.Errorf("ssh: server-generated gex p is out of range (%d bits)", msg.P.BitLen()) - } - - // Check if g is safe by verifying that 1 < g < p-1 - pMinusOne := new(big.Int).Sub(msg.P, bigOne) - if msg.G.Cmp(bigOne) <= 0 || msg.G.Cmp(pMinusOne) >= 0 { - return nil, fmt.Errorf("ssh: server provided gex g is not safe") - } - - // Send GexInit - pHalf := new(big.Int).Rsh(msg.P, 1) - x, err := rand.Int(randSource, pHalf) - if err != nil { - return nil, err - } - X := new(big.Int).Exp(msg.G, x, msg.P) - kexDHGexInit := kexDHGexInitMsg{ - X: X, - } - if err := c.writePacket(Marshal(&kexDHGexInit)); err != nil { - return nil, err - } - - // Receive GexReply - packet, err = c.readPacket() - if err != nil { - return nil, err - } - - var kexDHGexReply kexDHGexReplyMsg - if err = Unmarshal(packet, &kexDHGexReply); err != nil { - return nil, err - } - - if kexDHGexReply.Y.Cmp(bigOne) <= 0 || kexDHGexReply.Y.Cmp(pMinusOne) >= 0 { - return nil, errors.New("ssh: DH parameter out of bounds") - } - kInt := new(big.Int).Exp(kexDHGexReply.Y, x, msg.P) - - // Check if k is safe by verifying that k > 1 and k < p - 1 - if kInt.Cmp(bigOne) <= 0 || kInt.Cmp(pMinusOne) >= 0 { - return nil, fmt.Errorf("ssh: derived k is not safe") - } - - h := gex.hashFunc.New() - magics.write(h) - writeString(h, kexDHGexReply.HostKey) - binary.Write(h, binary.BigEndian, uint32(dhGroupExchangeMinimumBits)) - binary.Write(h, binary.BigEndian, uint32(dhGroupExchangePreferredBits)) - binary.Write(h, binary.BigEndian, uint32(dhGroupExchangeMaximumBits)) - writeInt(h, msg.P) - writeInt(h, msg.G) - writeInt(h, X) - writeInt(h, kexDHGexReply.Y) - K := make([]byte, intLength(kInt)) - marshalInt(K, kInt) - h.Write(K) - - return &kexResult{ - H: h.Sum(nil), - K: K, - HostKey: kexDHGexReply.HostKey, - Signature: kexDHGexReply.Signature, - Hash: gex.hashFunc, - }, nil -} - -// Server half implementation of the Diffie Hellman Key Exchange with SHA1 and SHA256. -// -// This is a minimal implementation to satisfy the automated tests. -func (gex dhGEXSHA) Server(c packetConn, randSource io.Reader, magics *handshakeMagics, priv AlgorithmSigner, algo string) (result *kexResult, err error) { - // Receive GexRequest - packet, err := c.readPacket() - if err != nil { - return - } - var kexDHGexRequest kexDHGexRequestMsg - if err = Unmarshal(packet, &kexDHGexRequest); err != nil { - return - } - - // Send GexGroup - // This is the group called diffie-hellman-group14-sha1 in RFC - // 4253 and Oakley Group 14 in RFC 3526. - p, _ := new(big.Int).SetString("FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AACAA68FFFFFFFFFFFFFFFF", 16) - g := big.NewInt(2) - - msg := &kexDHGexGroupMsg{ - P: p, - G: g, - } - if err := c.writePacket(Marshal(msg)); err != nil { - return nil, err - } - - // Receive GexInit - packet, err = c.readPacket() - if err != nil { - return - } - var kexDHGexInit kexDHGexInitMsg - if err = Unmarshal(packet, &kexDHGexInit); err != nil { - return - } - - pHalf := new(big.Int).Rsh(p, 1) - - y, err := rand.Int(randSource, pHalf) - if err != nil { - return - } - Y := new(big.Int).Exp(g, y, p) - - pMinusOne := new(big.Int).Sub(p, bigOne) - if kexDHGexInit.X.Cmp(bigOne) <= 0 || kexDHGexInit.X.Cmp(pMinusOne) >= 0 { - return nil, errors.New("ssh: DH parameter out of bounds") - } - kInt := new(big.Int).Exp(kexDHGexInit.X, y, p) - - hostKeyBytes := priv.PublicKey().Marshal() - - h := gex.hashFunc.New() - magics.write(h) - writeString(h, hostKeyBytes) - binary.Write(h, binary.BigEndian, uint32(dhGroupExchangeMinimumBits)) - binary.Write(h, binary.BigEndian, uint32(dhGroupExchangePreferredBits)) - binary.Write(h, binary.BigEndian, uint32(dhGroupExchangeMaximumBits)) - writeInt(h, p) - writeInt(h, g) - writeInt(h, kexDHGexInit.X) - writeInt(h, Y) - - K := make([]byte, intLength(kInt)) - marshalInt(K, kInt) - h.Write(K) - - H := h.Sum(nil) - - // H is already a hash, but the hostkey signing will apply its - // own key-specific hash algorithm. - sig, err := signAndMarshal(priv, randSource, H, algo) - if err != nil { - return nil, err - } - - kexDHGexReply := kexDHGexReplyMsg{ - HostKey: hostKeyBytes, - Y: Y, - Signature: sig, - } - packet = Marshal(&kexDHGexReply) - - err = c.writePacket(packet) - - return &kexResult{ - H: H, - K: K, - HostKey: hostKeyBytes, - Signature: sig, - Hash: gex.hashFunc, - }, err -} diff --git a/vendor/golang.org/x/crypto/ssh/keys.go b/vendor/golang.org/x/crypto/ssh/keys.go deleted file mode 100644 index 1c7de1a..0000000 --- a/vendor/golang.org/x/crypto/ssh/keys.go +++ /dev/null @@ -1,1447 +0,0 @@ -// Copyright 2012 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 ssh - -import ( - "bytes" - "crypto" - "crypto/aes" - "crypto/cipher" - "crypto/dsa" - "crypto/ecdsa" - "crypto/elliptic" - "crypto/md5" - "crypto/rsa" - "crypto/sha256" - "crypto/x509" - "encoding/asn1" - "encoding/base64" - "encoding/hex" - "encoding/pem" - "errors" - "fmt" - "io" - "math/big" - "strings" - - "golang.org/x/crypto/ed25519" - "golang.org/x/crypto/ssh/internal/bcrypt_pbkdf" -) - -// Public key algorithms names. These values can appear in PublicKey.Type, -// ClientConfig.HostKeyAlgorithms, Signature.Format, or as AlgorithmSigner -// arguments. -const ( - KeyAlgoRSA = "ssh-rsa" - KeyAlgoDSA = "ssh-dss" - KeyAlgoECDSA256 = "ecdsa-sha2-nistp256" - KeyAlgoSKECDSA256 = "sk-ecdsa-sha2-nistp256@openssh.com" - KeyAlgoECDSA384 = "ecdsa-sha2-nistp384" - KeyAlgoECDSA521 = "ecdsa-sha2-nistp521" - KeyAlgoED25519 = "ssh-ed25519" - KeyAlgoSKED25519 = "sk-ssh-ed25519@openssh.com" - - // KeyAlgoRSASHA256 and KeyAlgoRSASHA512 are only public key algorithms, not - // public key formats, so they can't appear as a PublicKey.Type. The - // corresponding PublicKey.Type is KeyAlgoRSA. See RFC 8332, Section 2. - KeyAlgoRSASHA256 = "rsa-sha2-256" - KeyAlgoRSASHA512 = "rsa-sha2-512" -) - -const ( - // Deprecated: use KeyAlgoRSA. - SigAlgoRSA = KeyAlgoRSA - // Deprecated: use KeyAlgoRSASHA256. - SigAlgoRSASHA2256 = KeyAlgoRSASHA256 - // Deprecated: use KeyAlgoRSASHA512. - SigAlgoRSASHA2512 = KeyAlgoRSASHA512 -) - -// parsePubKey parses a public key of the given algorithm. -// Use ParsePublicKey for keys with prepended algorithm. -func parsePubKey(in []byte, algo string) (pubKey PublicKey, rest []byte, err error) { - switch algo { - case KeyAlgoRSA: - return parseRSA(in) - case KeyAlgoDSA: - return parseDSA(in) - case KeyAlgoECDSA256, KeyAlgoECDSA384, KeyAlgoECDSA521: - return parseECDSA(in) - case KeyAlgoSKECDSA256: - return parseSKECDSA(in) - case KeyAlgoED25519: - return parseED25519(in) - case KeyAlgoSKED25519: - return parseSKEd25519(in) - case CertAlgoRSAv01, CertAlgoDSAv01, CertAlgoECDSA256v01, CertAlgoECDSA384v01, CertAlgoECDSA521v01, CertAlgoSKECDSA256v01, CertAlgoED25519v01, CertAlgoSKED25519v01: - cert, err := parseCert(in, certKeyAlgoNames[algo]) - if err != nil { - return nil, nil, err - } - return cert, nil, nil - } - return nil, nil, fmt.Errorf("ssh: unknown key algorithm: %v", algo) -} - -// parseAuthorizedKey parses a public key in OpenSSH authorized_keys format -// (see sshd(8) manual page) once the options and key type fields have been -// removed. -func parseAuthorizedKey(in []byte) (out PublicKey, comment string, err error) { - in = bytes.TrimSpace(in) - - i := bytes.IndexAny(in, " \t") - if i == -1 { - i = len(in) - } - base64Key := in[:i] - - key := make([]byte, base64.StdEncoding.DecodedLen(len(base64Key))) - n, err := base64.StdEncoding.Decode(key, base64Key) - if err != nil { - return nil, "", err - } - key = key[:n] - out, err = ParsePublicKey(key) - if err != nil { - return nil, "", err - } - comment = string(bytes.TrimSpace(in[i:])) - return out, comment, nil -} - -// ParseKnownHosts parses an entry in the format of the known_hosts file. -// -// The known_hosts format is documented in the sshd(8) manual page. This -// function will parse a single entry from in. On successful return, marker -// will contain the optional marker value (i.e. "cert-authority" or "revoked") -// or else be empty, hosts will contain the hosts that this entry matches, -// pubKey will contain the public key and comment will contain any trailing -// comment at the end of the line. See the sshd(8) manual page for the various -// forms that a host string can take. -// -// The unparsed remainder of the input will be returned in rest. This function -// can be called repeatedly to parse multiple entries. -// -// If no entries were found in the input then err will be io.EOF. Otherwise a -// non-nil err value indicates a parse error. -func ParseKnownHosts(in []byte) (marker string, hosts []string, pubKey PublicKey, comment string, rest []byte, err error) { - for len(in) > 0 { - end := bytes.IndexByte(in, '\n') - if end != -1 { - rest = in[end+1:] - in = in[:end] - } else { - rest = nil - } - - end = bytes.IndexByte(in, '\r') - if end != -1 { - in = in[:end] - } - - in = bytes.TrimSpace(in) - if len(in) == 0 || in[0] == '#' { - in = rest - continue - } - - i := bytes.IndexAny(in, " \t") - if i == -1 { - in = rest - continue - } - - // Strip out the beginning of the known_host key. - // This is either an optional marker or a (set of) hostname(s). - keyFields := bytes.Fields(in) - if len(keyFields) < 3 || len(keyFields) > 5 { - return "", nil, nil, "", nil, errors.New("ssh: invalid entry in known_hosts data") - } - - // keyFields[0] is either "@cert-authority", "@revoked" or a comma separated - // list of hosts - marker := "" - if keyFields[0][0] == '@' { - marker = string(keyFields[0][1:]) - keyFields = keyFields[1:] - } - - hosts := string(keyFields[0]) - // keyFields[1] contains the key type (e.g. “ssh-rsa”). - // However, that information is duplicated inside the - // base64-encoded key and so is ignored here. - - key := bytes.Join(keyFields[2:], []byte(" ")) - if pubKey, comment, err = parseAuthorizedKey(key); err != nil { - return "", nil, nil, "", nil, err - } - - return marker, strings.Split(hosts, ","), pubKey, comment, rest, nil - } - - return "", nil, nil, "", nil, io.EOF -} - -// ParseAuthorizedKeys parses a public key from an authorized_keys -// file used in OpenSSH according to the sshd(8) manual page. -func ParseAuthorizedKey(in []byte) (out PublicKey, comment string, options []string, rest []byte, err error) { - for len(in) > 0 { - end := bytes.IndexByte(in, '\n') - if end != -1 { - rest = in[end+1:] - in = in[:end] - } else { - rest = nil - } - - end = bytes.IndexByte(in, '\r') - if end != -1 { - in = in[:end] - } - - in = bytes.TrimSpace(in) - if len(in) == 0 || in[0] == '#' { - in = rest - continue - } - - i := bytes.IndexAny(in, " \t") - if i == -1 { - in = rest - continue - } - - if out, comment, err = parseAuthorizedKey(in[i:]); err == nil { - return out, comment, options, rest, nil - } - - // No key type recognised. Maybe there's an options field at - // the beginning. - var b byte - inQuote := false - var candidateOptions []string - optionStart := 0 - for i, b = range in { - isEnd := !inQuote && (b == ' ' || b == '\t') - if (b == ',' && !inQuote) || isEnd { - if i-optionStart > 0 { - candidateOptions = append(candidateOptions, string(in[optionStart:i])) - } - optionStart = i + 1 - } - if isEnd { - break - } - if b == '"' && (i == 0 || (i > 0 && in[i-1] != '\\')) { - inQuote = !inQuote - } - } - for i < len(in) && (in[i] == ' ' || in[i] == '\t') { - i++ - } - if i == len(in) { - // Invalid line: unmatched quote - in = rest - continue - } - - in = in[i:] - i = bytes.IndexAny(in, " \t") - if i == -1 { - in = rest - continue - } - - if out, comment, err = parseAuthorizedKey(in[i:]); err == nil { - options = candidateOptions - return out, comment, options, rest, nil - } - - in = rest - continue - } - - return nil, "", nil, nil, errors.New("ssh: no key found") -} - -// ParsePublicKey parses an SSH public key formatted for use in -// the SSH wire protocol according to RFC 4253, section 6.6. -func ParsePublicKey(in []byte) (out PublicKey, err error) { - algo, in, ok := parseString(in) - if !ok { - return nil, errShortRead - } - var rest []byte - out, rest, err = parsePubKey(in, string(algo)) - if len(rest) > 0 { - return nil, errors.New("ssh: trailing junk in public key") - } - - return out, err -} - -// MarshalAuthorizedKey serializes key for inclusion in an OpenSSH -// authorized_keys file. The return value ends with newline. -func MarshalAuthorizedKey(key PublicKey) []byte { - b := &bytes.Buffer{} - b.WriteString(key.Type()) - b.WriteByte(' ') - e := base64.NewEncoder(base64.StdEncoding, b) - e.Write(key.Marshal()) - e.Close() - b.WriteByte('\n') - return b.Bytes() -} - -// PublicKey represents a public key using an unspecified algorithm. -// -// Some PublicKeys provided by this package also implement CryptoPublicKey. -type PublicKey interface { - // Type returns the key format name, e.g. "ssh-rsa". - Type() string - - // Marshal returns the serialized key data in SSH wire format, with the name - // prefix. To unmarshal the returned data, use the ParsePublicKey function. - Marshal() []byte - - // Verify that sig is a signature on the given data using this key. This - // method will hash the data appropriately first. sig.Format is allowed to - // be any signature algorithm compatible with the key type, the caller - // should check if it has more stringent requirements. - Verify(data []byte, sig *Signature) error -} - -// CryptoPublicKey, if implemented by a PublicKey, -// returns the underlying crypto.PublicKey form of the key. -type CryptoPublicKey interface { - CryptoPublicKey() crypto.PublicKey -} - -// A Signer can create signatures that verify against a public key. -// -// Some Signers provided by this package also implement AlgorithmSigner. -type Signer interface { - // PublicKey returns the associated PublicKey. - PublicKey() PublicKey - - // Sign returns a signature for the given data. This method will hash the - // data appropriately first. The signature algorithm is expected to match - // the key format returned by the PublicKey.Type method (and not to be any - // alternative algorithm supported by the key format). - Sign(rand io.Reader, data []byte) (*Signature, error) -} - -// An AlgorithmSigner is a Signer that also supports specifying an algorithm to -// use for signing. -// -// An AlgorithmSigner can't advertise the algorithms it supports, so it should -// be prepared to be invoked with every algorithm supported by the public key -// format. -type AlgorithmSigner interface { - Signer - - // SignWithAlgorithm is like Signer.Sign, but allows specifying a desired - // signing algorithm. Callers may pass an empty string for the algorithm in - // which case the AlgorithmSigner will use a default algorithm. This default - // doesn't currently control any behavior in this package. - SignWithAlgorithm(rand io.Reader, data []byte, algorithm string) (*Signature, error) -} - -type rsaPublicKey rsa.PublicKey - -func (r *rsaPublicKey) Type() string { - return "ssh-rsa" -} - -// parseRSA parses an RSA key according to RFC 4253, section 6.6. -func parseRSA(in []byte) (out PublicKey, rest []byte, err error) { - var w struct { - E *big.Int - N *big.Int - Rest []byte `ssh:"rest"` - } - if err := Unmarshal(in, &w); err != nil { - return nil, nil, err - } - - if w.E.BitLen() > 24 { - return nil, nil, errors.New("ssh: exponent too large") - } - e := w.E.Int64() - if e < 3 || e&1 == 0 { - return nil, nil, errors.New("ssh: incorrect exponent") - } - - var key rsa.PublicKey - key.E = int(e) - key.N = w.N - return (*rsaPublicKey)(&key), w.Rest, nil -} - -func (r *rsaPublicKey) Marshal() []byte { - e := new(big.Int).SetInt64(int64(r.E)) - // RSA publickey struct layout should match the struct used by - // parseRSACert in the x/crypto/ssh/agent package. - wirekey := struct { - Name string - E *big.Int - N *big.Int - }{ - KeyAlgoRSA, - e, - r.N, - } - return Marshal(&wirekey) -} - -func (r *rsaPublicKey) Verify(data []byte, sig *Signature) error { - supportedAlgos := algorithmsForKeyFormat(r.Type()) - if !contains(supportedAlgos, sig.Format) { - return fmt.Errorf("ssh: signature type %s for key type %s", sig.Format, r.Type()) - } - hash := hashFuncs[sig.Format] - h := hash.New() - h.Write(data) - digest := h.Sum(nil) - return rsa.VerifyPKCS1v15((*rsa.PublicKey)(r), hash, digest, sig.Blob) -} - -func (r *rsaPublicKey) CryptoPublicKey() crypto.PublicKey { - return (*rsa.PublicKey)(r) -} - -type dsaPublicKey dsa.PublicKey - -func (k *dsaPublicKey) Type() string { - return "ssh-dss" -} - -func checkDSAParams(param *dsa.Parameters) error { - // SSH specifies FIPS 186-2, which only provided a single size - // (1024 bits) DSA key. FIPS 186-3 allows for larger key - // sizes, which would confuse SSH. - if l := param.P.BitLen(); l != 1024 { - return fmt.Errorf("ssh: unsupported DSA key size %d", l) - } - - return nil -} - -// parseDSA parses an DSA key according to RFC 4253, section 6.6. -func parseDSA(in []byte) (out PublicKey, rest []byte, err error) { - var w struct { - P, Q, G, Y *big.Int - Rest []byte `ssh:"rest"` - } - if err := Unmarshal(in, &w); err != nil { - return nil, nil, err - } - - param := dsa.Parameters{ - P: w.P, - Q: w.Q, - G: w.G, - } - if err := checkDSAParams(¶m); err != nil { - return nil, nil, err - } - - key := &dsaPublicKey{ - Parameters: param, - Y: w.Y, - } - return key, w.Rest, nil -} - -func (k *dsaPublicKey) Marshal() []byte { - // DSA publickey struct layout should match the struct used by - // parseDSACert in the x/crypto/ssh/agent package. - w := struct { - Name string - P, Q, G, Y *big.Int - }{ - k.Type(), - k.P, - k.Q, - k.G, - k.Y, - } - - return Marshal(&w) -} - -func (k *dsaPublicKey) Verify(data []byte, sig *Signature) error { - if sig.Format != k.Type() { - return fmt.Errorf("ssh: signature type %s for key type %s", sig.Format, k.Type()) - } - h := hashFuncs[sig.Format].New() - h.Write(data) - digest := h.Sum(nil) - - // Per RFC 4253, section 6.6, - // The value for 'dss_signature_blob' is encoded as a string containing - // r, followed by s (which are 160-bit integers, without lengths or - // padding, unsigned, and in network byte order). - // For DSS purposes, sig.Blob should be exactly 40 bytes in length. - if len(sig.Blob) != 40 { - return errors.New("ssh: DSA signature parse error") - } - r := new(big.Int).SetBytes(sig.Blob[:20]) - s := new(big.Int).SetBytes(sig.Blob[20:]) - if dsa.Verify((*dsa.PublicKey)(k), digest, r, s) { - return nil - } - return errors.New("ssh: signature did not verify") -} - -func (k *dsaPublicKey) CryptoPublicKey() crypto.PublicKey { - return (*dsa.PublicKey)(k) -} - -type dsaPrivateKey struct { - *dsa.PrivateKey -} - -func (k *dsaPrivateKey) PublicKey() PublicKey { - return (*dsaPublicKey)(&k.PrivateKey.PublicKey) -} - -func (k *dsaPrivateKey) Sign(rand io.Reader, data []byte) (*Signature, error) { - return k.SignWithAlgorithm(rand, data, k.PublicKey().Type()) -} - -func (k *dsaPrivateKey) SignWithAlgorithm(rand io.Reader, data []byte, algorithm string) (*Signature, error) { - if algorithm != "" && algorithm != k.PublicKey().Type() { - return nil, fmt.Errorf("ssh: unsupported signature algorithm %s", algorithm) - } - - h := hashFuncs[k.PublicKey().Type()].New() - h.Write(data) - digest := h.Sum(nil) - r, s, err := dsa.Sign(rand, k.PrivateKey, digest) - if err != nil { - return nil, err - } - - sig := make([]byte, 40) - rb := r.Bytes() - sb := s.Bytes() - - copy(sig[20-len(rb):20], rb) - copy(sig[40-len(sb):], sb) - - return &Signature{ - Format: k.PublicKey().Type(), - Blob: sig, - }, nil -} - -type ecdsaPublicKey ecdsa.PublicKey - -func (k *ecdsaPublicKey) Type() string { - return "ecdsa-sha2-" + k.nistID() -} - -func (k *ecdsaPublicKey) nistID() string { - switch k.Params().BitSize { - case 256: - return "nistp256" - case 384: - return "nistp384" - case 521: - return "nistp521" - } - panic("ssh: unsupported ecdsa key size") -} - -type ed25519PublicKey ed25519.PublicKey - -func (k ed25519PublicKey) Type() string { - return KeyAlgoED25519 -} - -func parseED25519(in []byte) (out PublicKey, rest []byte, err error) { - var w struct { - KeyBytes []byte - Rest []byte `ssh:"rest"` - } - - if err := Unmarshal(in, &w); err != nil { - return nil, nil, err - } - - if l := len(w.KeyBytes); l != ed25519.PublicKeySize { - return nil, nil, fmt.Errorf("invalid size %d for Ed25519 public key", l) - } - - return ed25519PublicKey(w.KeyBytes), w.Rest, nil -} - -func (k ed25519PublicKey) Marshal() []byte { - w := struct { - Name string - KeyBytes []byte - }{ - KeyAlgoED25519, - []byte(k), - } - return Marshal(&w) -} - -func (k ed25519PublicKey) Verify(b []byte, sig *Signature) error { - if sig.Format != k.Type() { - return fmt.Errorf("ssh: signature type %s for key type %s", sig.Format, k.Type()) - } - if l := len(k); l != ed25519.PublicKeySize { - return fmt.Errorf("ssh: invalid size %d for Ed25519 public key", l) - } - - if ok := ed25519.Verify(ed25519.PublicKey(k), b, sig.Blob); !ok { - return errors.New("ssh: signature did not verify") - } - - return nil -} - -func (k ed25519PublicKey) CryptoPublicKey() crypto.PublicKey { - return ed25519.PublicKey(k) -} - -func supportedEllipticCurve(curve elliptic.Curve) bool { - return curve == elliptic.P256() || curve == elliptic.P384() || curve == elliptic.P521() -} - -// parseECDSA parses an ECDSA key according to RFC 5656, section 3.1. -func parseECDSA(in []byte) (out PublicKey, rest []byte, err error) { - var w struct { - Curve string - KeyBytes []byte - Rest []byte `ssh:"rest"` - } - - if err := Unmarshal(in, &w); err != nil { - return nil, nil, err - } - - key := new(ecdsa.PublicKey) - - switch w.Curve { - case "nistp256": - key.Curve = elliptic.P256() - case "nistp384": - key.Curve = elliptic.P384() - case "nistp521": - key.Curve = elliptic.P521() - default: - return nil, nil, errors.New("ssh: unsupported curve") - } - - key.X, key.Y = elliptic.Unmarshal(key.Curve, w.KeyBytes) - if key.X == nil || key.Y == nil { - return nil, nil, errors.New("ssh: invalid curve point") - } - return (*ecdsaPublicKey)(key), w.Rest, nil -} - -func (k *ecdsaPublicKey) Marshal() []byte { - // See RFC 5656, section 3.1. - keyBytes := elliptic.Marshal(k.Curve, k.X, k.Y) - // ECDSA publickey struct layout should match the struct used by - // parseECDSACert in the x/crypto/ssh/agent package. - w := struct { - Name string - ID string - Key []byte - }{ - k.Type(), - k.nistID(), - keyBytes, - } - - return Marshal(&w) -} - -func (k *ecdsaPublicKey) Verify(data []byte, sig *Signature) error { - if sig.Format != k.Type() { - return fmt.Errorf("ssh: signature type %s for key type %s", sig.Format, k.Type()) - } - - h := hashFuncs[sig.Format].New() - h.Write(data) - digest := h.Sum(nil) - - // Per RFC 5656, section 3.1.2, - // The ecdsa_signature_blob value has the following specific encoding: - // mpint r - // mpint s - var ecSig struct { - R *big.Int - S *big.Int - } - - if err := Unmarshal(sig.Blob, &ecSig); err != nil { - return err - } - - if ecdsa.Verify((*ecdsa.PublicKey)(k), digest, ecSig.R, ecSig.S) { - return nil - } - return errors.New("ssh: signature did not verify") -} - -func (k *ecdsaPublicKey) CryptoPublicKey() crypto.PublicKey { - return (*ecdsa.PublicKey)(k) -} - -// skFields holds the additional fields present in U2F/FIDO2 signatures. -// See openssh/PROTOCOL.u2f 'SSH U2F Signatures' for details. -type skFields struct { - // Flags contains U2F/FIDO2 flags such as 'user present' - Flags byte - // Counter is a monotonic signature counter which can be - // used to detect concurrent use of a private key, should - // it be extracted from hardware. - Counter uint32 -} - -type skECDSAPublicKey struct { - // application is a URL-like string, typically "ssh:" for SSH. - // see openssh/PROTOCOL.u2f for details. - application string - ecdsa.PublicKey -} - -func (k *skECDSAPublicKey) Type() string { - return KeyAlgoSKECDSA256 -} - -func (k *skECDSAPublicKey) nistID() string { - return "nistp256" -} - -func parseSKECDSA(in []byte) (out PublicKey, rest []byte, err error) { - var w struct { - Curve string - KeyBytes []byte - Application string - Rest []byte `ssh:"rest"` - } - - if err := Unmarshal(in, &w); err != nil { - return nil, nil, err - } - - key := new(skECDSAPublicKey) - key.application = w.Application - - if w.Curve != "nistp256" { - return nil, nil, errors.New("ssh: unsupported curve") - } - key.Curve = elliptic.P256() - - key.X, key.Y = elliptic.Unmarshal(key.Curve, w.KeyBytes) - if key.X == nil || key.Y == nil { - return nil, nil, errors.New("ssh: invalid curve point") - } - - return key, w.Rest, nil -} - -func (k *skECDSAPublicKey) Marshal() []byte { - // See RFC 5656, section 3.1. - keyBytes := elliptic.Marshal(k.Curve, k.X, k.Y) - w := struct { - Name string - ID string - Key []byte - Application string - }{ - k.Type(), - k.nistID(), - keyBytes, - k.application, - } - - return Marshal(&w) -} - -func (k *skECDSAPublicKey) Verify(data []byte, sig *Signature) error { - if sig.Format != k.Type() { - return fmt.Errorf("ssh: signature type %s for key type %s", sig.Format, k.Type()) - } - - h := hashFuncs[sig.Format].New() - h.Write([]byte(k.application)) - appDigest := h.Sum(nil) - - h.Reset() - h.Write(data) - dataDigest := h.Sum(nil) - - var ecSig struct { - R *big.Int - S *big.Int - } - if err := Unmarshal(sig.Blob, &ecSig); err != nil { - return err - } - - var skf skFields - if err := Unmarshal(sig.Rest, &skf); err != nil { - return err - } - - blob := struct { - ApplicationDigest []byte `ssh:"rest"` - Flags byte - Counter uint32 - MessageDigest []byte `ssh:"rest"` - }{ - appDigest, - skf.Flags, - skf.Counter, - dataDigest, - } - - original := Marshal(blob) - - h.Reset() - h.Write(original) - digest := h.Sum(nil) - - if ecdsa.Verify((*ecdsa.PublicKey)(&k.PublicKey), digest, ecSig.R, ecSig.S) { - return nil - } - return errors.New("ssh: signature did not verify") -} - -type skEd25519PublicKey struct { - // application is a URL-like string, typically "ssh:" for SSH. - // see openssh/PROTOCOL.u2f for details. - application string - ed25519.PublicKey -} - -func (k *skEd25519PublicKey) Type() string { - return KeyAlgoSKED25519 -} - -func parseSKEd25519(in []byte) (out PublicKey, rest []byte, err error) { - var w struct { - KeyBytes []byte - Application string - Rest []byte `ssh:"rest"` - } - - if err := Unmarshal(in, &w); err != nil { - return nil, nil, err - } - - if l := len(w.KeyBytes); l != ed25519.PublicKeySize { - return nil, nil, fmt.Errorf("invalid size %d for Ed25519 public key", l) - } - - key := new(skEd25519PublicKey) - key.application = w.Application - key.PublicKey = ed25519.PublicKey(w.KeyBytes) - - return key, w.Rest, nil -} - -func (k *skEd25519PublicKey) Marshal() []byte { - w := struct { - Name string - KeyBytes []byte - Application string - }{ - KeyAlgoSKED25519, - []byte(k.PublicKey), - k.application, - } - return Marshal(&w) -} - -func (k *skEd25519PublicKey) Verify(data []byte, sig *Signature) error { - if sig.Format != k.Type() { - return fmt.Errorf("ssh: signature type %s for key type %s", sig.Format, k.Type()) - } - if l := len(k.PublicKey); l != ed25519.PublicKeySize { - return fmt.Errorf("invalid size %d for Ed25519 public key", l) - } - - h := hashFuncs[sig.Format].New() - h.Write([]byte(k.application)) - appDigest := h.Sum(nil) - - h.Reset() - h.Write(data) - dataDigest := h.Sum(nil) - - var edSig struct { - Signature []byte `ssh:"rest"` - } - - if err := Unmarshal(sig.Blob, &edSig); err != nil { - return err - } - - var skf skFields - if err := Unmarshal(sig.Rest, &skf); err != nil { - return err - } - - blob := struct { - ApplicationDigest []byte `ssh:"rest"` - Flags byte - Counter uint32 - MessageDigest []byte `ssh:"rest"` - }{ - appDigest, - skf.Flags, - skf.Counter, - dataDigest, - } - - original := Marshal(blob) - - if ok := ed25519.Verify(k.PublicKey, original, edSig.Signature); !ok { - return errors.New("ssh: signature did not verify") - } - - return nil -} - -// NewSignerFromKey takes an *rsa.PrivateKey, *dsa.PrivateKey, -// *ecdsa.PrivateKey or any other crypto.Signer and returns a -// corresponding Signer instance. ECDSA keys must use P-256, P-384 or -// P-521. DSA keys must use parameter size L1024N160. -func NewSignerFromKey(key interface{}) (Signer, error) { - switch key := key.(type) { - case crypto.Signer: - return NewSignerFromSigner(key) - case *dsa.PrivateKey: - return newDSAPrivateKey(key) - default: - return nil, fmt.Errorf("ssh: unsupported key type %T", key) - } -} - -func newDSAPrivateKey(key *dsa.PrivateKey) (Signer, error) { - if err := checkDSAParams(&key.PublicKey.Parameters); err != nil { - return nil, err - } - - return &dsaPrivateKey{key}, nil -} - -type wrappedSigner struct { - signer crypto.Signer - pubKey PublicKey -} - -// NewSignerFromSigner takes any crypto.Signer implementation and -// returns a corresponding Signer interface. This can be used, for -// example, with keys kept in hardware modules. -func NewSignerFromSigner(signer crypto.Signer) (Signer, error) { - pubKey, err := NewPublicKey(signer.Public()) - if err != nil { - return nil, err - } - - return &wrappedSigner{signer, pubKey}, nil -} - -func (s *wrappedSigner) PublicKey() PublicKey { - return s.pubKey -} - -func (s *wrappedSigner) Sign(rand io.Reader, data []byte) (*Signature, error) { - return s.SignWithAlgorithm(rand, data, s.pubKey.Type()) -} - -func (s *wrappedSigner) SignWithAlgorithm(rand io.Reader, data []byte, algorithm string) (*Signature, error) { - if algorithm == "" { - algorithm = s.pubKey.Type() - } - - supportedAlgos := algorithmsForKeyFormat(s.pubKey.Type()) - if !contains(supportedAlgos, algorithm) { - return nil, fmt.Errorf("ssh: unsupported signature algorithm %q for key format %q", algorithm, s.pubKey.Type()) - } - - hashFunc := hashFuncs[algorithm] - var digest []byte - if hashFunc != 0 { - h := hashFunc.New() - h.Write(data) - digest = h.Sum(nil) - } else { - digest = data - } - - signature, err := s.signer.Sign(rand, digest, hashFunc) - if err != nil { - return nil, err - } - - // crypto.Signer.Sign is expected to return an ASN.1-encoded signature - // for ECDSA and DSA, but that's not the encoding expected by SSH, so - // re-encode. - switch s.pubKey.(type) { - case *ecdsaPublicKey, *dsaPublicKey: - type asn1Signature struct { - R, S *big.Int - } - asn1Sig := new(asn1Signature) - _, err := asn1.Unmarshal(signature, asn1Sig) - if err != nil { - return nil, err - } - - switch s.pubKey.(type) { - case *ecdsaPublicKey: - signature = Marshal(asn1Sig) - - case *dsaPublicKey: - signature = make([]byte, 40) - r := asn1Sig.R.Bytes() - s := asn1Sig.S.Bytes() - copy(signature[20-len(r):20], r) - copy(signature[40-len(s):40], s) - } - } - - return &Signature{ - Format: algorithm, - Blob: signature, - }, nil -} - -// NewPublicKey takes an *rsa.PublicKey, *dsa.PublicKey, *ecdsa.PublicKey, -// or ed25519.PublicKey returns a corresponding PublicKey instance. -// ECDSA keys must use P-256, P-384 or P-521. -func NewPublicKey(key interface{}) (PublicKey, error) { - switch key := key.(type) { - case *rsa.PublicKey: - return (*rsaPublicKey)(key), nil - case *ecdsa.PublicKey: - if !supportedEllipticCurve(key.Curve) { - return nil, errors.New("ssh: only P-256, P-384 and P-521 EC keys are supported") - } - return (*ecdsaPublicKey)(key), nil - case *dsa.PublicKey: - return (*dsaPublicKey)(key), nil - case ed25519.PublicKey: - if l := len(key); l != ed25519.PublicKeySize { - return nil, fmt.Errorf("ssh: invalid size %d for Ed25519 public key", l) - } - return ed25519PublicKey(key), nil - default: - return nil, fmt.Errorf("ssh: unsupported key type %T", key) - } -} - -// ParsePrivateKey returns a Signer from a PEM encoded private key. It supports -// the same keys as ParseRawPrivateKey. If the private key is encrypted, it -// will return a PassphraseMissingError. -func ParsePrivateKey(pemBytes []byte) (Signer, error) { - key, err := ParseRawPrivateKey(pemBytes) - if err != nil { - return nil, err - } - - return NewSignerFromKey(key) -} - -// ParsePrivateKeyWithPassphrase returns a Signer from a PEM encoded private -// key and passphrase. It supports the same keys as -// ParseRawPrivateKeyWithPassphrase. -func ParsePrivateKeyWithPassphrase(pemBytes, passphrase []byte) (Signer, error) { - key, err := ParseRawPrivateKeyWithPassphrase(pemBytes, passphrase) - if err != nil { - return nil, err - } - - return NewSignerFromKey(key) -} - -// encryptedBlock tells whether a private key is -// encrypted by examining its Proc-Type header -// for a mention of ENCRYPTED -// according to RFC 1421 Section 4.6.1.1. -func encryptedBlock(block *pem.Block) bool { - return strings.Contains(block.Headers["Proc-Type"], "ENCRYPTED") -} - -// A PassphraseMissingError indicates that parsing this private key requires a -// passphrase. Use ParsePrivateKeyWithPassphrase. -type PassphraseMissingError struct { - // PublicKey will be set if the private key format includes an unencrypted - // public key along with the encrypted private key. - PublicKey PublicKey -} - -func (*PassphraseMissingError) Error() string { - return "ssh: this private key is passphrase protected" -} - -// ParseRawPrivateKey returns a private key from a PEM encoded private key. It -// supports RSA (PKCS#1), PKCS#8, DSA (OpenSSL), and ECDSA private keys. If the -// private key is encrypted, it will return a PassphraseMissingError. -func ParseRawPrivateKey(pemBytes []byte) (interface{}, error) { - block, _ := pem.Decode(pemBytes) - if block == nil { - return nil, errors.New("ssh: no key found") - } - - if encryptedBlock(block) { - return nil, &PassphraseMissingError{} - } - - switch block.Type { - case "RSA PRIVATE KEY": - return x509.ParsePKCS1PrivateKey(block.Bytes) - // RFC5208 - https://tools.ietf.org/html/rfc5208 - case "PRIVATE KEY": - return x509.ParsePKCS8PrivateKey(block.Bytes) - case "EC PRIVATE KEY": - return x509.ParseECPrivateKey(block.Bytes) - case "DSA PRIVATE KEY": - return ParseDSAPrivateKey(block.Bytes) - case "OPENSSH PRIVATE KEY": - return parseOpenSSHPrivateKey(block.Bytes, unencryptedOpenSSHKey) - default: - return nil, fmt.Errorf("ssh: unsupported key type %q", block.Type) - } -} - -// ParseRawPrivateKeyWithPassphrase returns a private key decrypted with -// passphrase from a PEM encoded private key. If the passphrase is wrong, it -// will return x509.IncorrectPasswordError. -func ParseRawPrivateKeyWithPassphrase(pemBytes, passphrase []byte) (interface{}, error) { - block, _ := pem.Decode(pemBytes) - if block == nil { - return nil, errors.New("ssh: no key found") - } - - if block.Type == "OPENSSH PRIVATE KEY" { - return parseOpenSSHPrivateKey(block.Bytes, passphraseProtectedOpenSSHKey(passphrase)) - } - - if !encryptedBlock(block) || !x509.IsEncryptedPEMBlock(block) { - return nil, errors.New("ssh: not an encrypted key") - } - - buf, err := x509.DecryptPEMBlock(block, passphrase) - if err != nil { - if err == x509.IncorrectPasswordError { - return nil, err - } - return nil, fmt.Errorf("ssh: cannot decode encrypted private keys: %v", err) - } - - switch block.Type { - case "RSA PRIVATE KEY": - return x509.ParsePKCS1PrivateKey(buf) - case "EC PRIVATE KEY": - return x509.ParseECPrivateKey(buf) - case "DSA PRIVATE KEY": - return ParseDSAPrivateKey(buf) - default: - return nil, fmt.Errorf("ssh: unsupported key type %q", block.Type) - } -} - -// ParseDSAPrivateKey returns a DSA private key from its ASN.1 DER encoding, as -// specified by the OpenSSL DSA man page. -func ParseDSAPrivateKey(der []byte) (*dsa.PrivateKey, error) { - var k struct { - Version int - P *big.Int - Q *big.Int - G *big.Int - Pub *big.Int - Priv *big.Int - } - rest, err := asn1.Unmarshal(der, &k) - if err != nil { - return nil, errors.New("ssh: failed to parse DSA key: " + err.Error()) - } - if len(rest) > 0 { - return nil, errors.New("ssh: garbage after DSA key") - } - - return &dsa.PrivateKey{ - PublicKey: dsa.PublicKey{ - Parameters: dsa.Parameters{ - P: k.P, - Q: k.Q, - G: k.G, - }, - Y: k.Pub, - }, - X: k.Priv, - }, nil -} - -func unencryptedOpenSSHKey(cipherName, kdfName, kdfOpts string, privKeyBlock []byte) ([]byte, error) { - if kdfName != "none" || cipherName != "none" { - return nil, &PassphraseMissingError{} - } - if kdfOpts != "" { - return nil, errors.New("ssh: invalid openssh private key") - } - return privKeyBlock, nil -} - -func passphraseProtectedOpenSSHKey(passphrase []byte) openSSHDecryptFunc { - return func(cipherName, kdfName, kdfOpts string, privKeyBlock []byte) ([]byte, error) { - if kdfName == "none" || cipherName == "none" { - return nil, errors.New("ssh: key is not password protected") - } - if kdfName != "bcrypt" { - return nil, fmt.Errorf("ssh: unknown KDF %q, only supports %q", kdfName, "bcrypt") - } - - var opts struct { - Salt string - Rounds uint32 - } - if err := Unmarshal([]byte(kdfOpts), &opts); err != nil { - return nil, err - } - - k, err := bcrypt_pbkdf.Key(passphrase, []byte(opts.Salt), int(opts.Rounds), 32+16) - if err != nil { - return nil, err - } - key, iv := k[:32], k[32:] - - c, err := aes.NewCipher(key) - if err != nil { - return nil, err - } - switch cipherName { - case "aes256-ctr": - ctr := cipher.NewCTR(c, iv) - ctr.XORKeyStream(privKeyBlock, privKeyBlock) - case "aes256-cbc": - if len(privKeyBlock)%c.BlockSize() != 0 { - return nil, fmt.Errorf("ssh: invalid encrypted private key length, not a multiple of the block size") - } - cbc := cipher.NewCBCDecrypter(c, iv) - cbc.CryptBlocks(privKeyBlock, privKeyBlock) - default: - return nil, fmt.Errorf("ssh: unknown cipher %q, only supports %q or %q", cipherName, "aes256-ctr", "aes256-cbc") - } - - return privKeyBlock, nil - } -} - -type openSSHDecryptFunc func(CipherName, KdfName, KdfOpts string, PrivKeyBlock []byte) ([]byte, error) - -// parseOpenSSHPrivateKey parses an OpenSSH private key, using the decrypt -// function to unwrap the encrypted portion. unencryptedOpenSSHKey can be used -// as the decrypt function to parse an unencrypted private key. See -// https://github.com/openssh/openssh-portable/blob/master/PROTOCOL.key. -func parseOpenSSHPrivateKey(key []byte, decrypt openSSHDecryptFunc) (crypto.PrivateKey, error) { - const magic = "openssh-key-v1\x00" - if len(key) < len(magic) || string(key[:len(magic)]) != magic { - return nil, errors.New("ssh: invalid openssh private key format") - } - remaining := key[len(magic):] - - var w struct { - CipherName string - KdfName string - KdfOpts string - NumKeys uint32 - PubKey []byte - PrivKeyBlock []byte - } - - if err := Unmarshal(remaining, &w); err != nil { - return nil, err - } - if w.NumKeys != 1 { - // We only support single key files, and so does OpenSSH. - // https://github.com/openssh/openssh-portable/blob/4103a3ec7/sshkey.c#L4171 - return nil, errors.New("ssh: multi-key files are not supported") - } - - privKeyBlock, err := decrypt(w.CipherName, w.KdfName, w.KdfOpts, w.PrivKeyBlock) - if err != nil { - if err, ok := err.(*PassphraseMissingError); ok { - pub, errPub := ParsePublicKey(w.PubKey) - if errPub != nil { - return nil, fmt.Errorf("ssh: failed to parse embedded public key: %v", errPub) - } - err.PublicKey = pub - } - return nil, err - } - - pk1 := struct { - Check1 uint32 - Check2 uint32 - Keytype string - Rest []byte `ssh:"rest"` - }{} - - if err := Unmarshal(privKeyBlock, &pk1); err != nil || pk1.Check1 != pk1.Check2 { - if w.CipherName != "none" { - return nil, x509.IncorrectPasswordError - } - return nil, errors.New("ssh: malformed OpenSSH key") - } - - switch pk1.Keytype { - case KeyAlgoRSA: - // https://github.com/openssh/openssh-portable/blob/master/sshkey.c#L2760-L2773 - key := struct { - N *big.Int - E *big.Int - D *big.Int - Iqmp *big.Int - P *big.Int - Q *big.Int - Comment string - Pad []byte `ssh:"rest"` - }{} - - if err := Unmarshal(pk1.Rest, &key); err != nil { - return nil, err - } - - if err := checkOpenSSHKeyPadding(key.Pad); err != nil { - return nil, err - } - - pk := &rsa.PrivateKey{ - PublicKey: rsa.PublicKey{ - N: key.N, - E: int(key.E.Int64()), - }, - D: key.D, - Primes: []*big.Int{key.P, key.Q}, - } - - if err := pk.Validate(); err != nil { - return nil, err - } - - pk.Precompute() - - return pk, nil - case KeyAlgoED25519: - key := struct { - Pub []byte - Priv []byte - Comment string - Pad []byte `ssh:"rest"` - }{} - - if err := Unmarshal(pk1.Rest, &key); err != nil { - return nil, err - } - - if len(key.Priv) != ed25519.PrivateKeySize { - return nil, errors.New("ssh: private key unexpected length") - } - - if err := checkOpenSSHKeyPadding(key.Pad); err != nil { - return nil, err - } - - pk := ed25519.PrivateKey(make([]byte, ed25519.PrivateKeySize)) - copy(pk, key.Priv) - return &pk, nil - case KeyAlgoECDSA256, KeyAlgoECDSA384, KeyAlgoECDSA521: - key := struct { - Curve string - Pub []byte - D *big.Int - Comment string - Pad []byte `ssh:"rest"` - }{} - - if err := Unmarshal(pk1.Rest, &key); err != nil { - return nil, err - } - - if err := checkOpenSSHKeyPadding(key.Pad); err != nil { - return nil, err - } - - var curve elliptic.Curve - switch key.Curve { - case "nistp256": - curve = elliptic.P256() - case "nistp384": - curve = elliptic.P384() - case "nistp521": - curve = elliptic.P521() - default: - return nil, errors.New("ssh: unhandled elliptic curve: " + key.Curve) - } - - X, Y := elliptic.Unmarshal(curve, key.Pub) - if X == nil || Y == nil { - return nil, errors.New("ssh: failed to unmarshal public key") - } - - if key.D.Cmp(curve.Params().N) >= 0 { - return nil, errors.New("ssh: scalar is out of range") - } - - x, y := curve.ScalarBaseMult(key.D.Bytes()) - if x.Cmp(X) != 0 || y.Cmp(Y) != 0 { - return nil, errors.New("ssh: public key does not match private key") - } - - return &ecdsa.PrivateKey{ - PublicKey: ecdsa.PublicKey{ - Curve: curve, - X: X, - Y: Y, - }, - D: key.D, - }, nil - default: - return nil, errors.New("ssh: unhandled key type") - } -} - -func checkOpenSSHKeyPadding(pad []byte) error { - for i, b := range pad { - if int(b) != i+1 { - return errors.New("ssh: padding not as expected") - } - } - return nil -} - -// FingerprintLegacyMD5 returns the user presentation of the key's -// fingerprint as described by RFC 4716 section 4. -func FingerprintLegacyMD5(pubKey PublicKey) string { - md5sum := md5.Sum(pubKey.Marshal()) - hexarray := make([]string, len(md5sum)) - for i, c := range md5sum { - hexarray[i] = hex.EncodeToString([]byte{c}) - } - return strings.Join(hexarray, ":") -} - -// FingerprintSHA256 returns the user presentation of the key's -// fingerprint as unpadded base64 encoded sha256 hash. -// This format was introduced from OpenSSH 6.8. -// https://www.openssh.com/txt/release-6.8 -// https://tools.ietf.org/html/rfc4648#section-3.2 (unpadded base64 encoding) -func FingerprintSHA256(pubKey PublicKey) string { - sha256sum := sha256.Sum256(pubKey.Marshal()) - hash := base64.RawStdEncoding.EncodeToString(sha256sum[:]) - return "SHA256:" + hash -} diff --git a/vendor/golang.org/x/crypto/ssh/knownhosts/knownhosts.go b/vendor/golang.org/x/crypto/ssh/knownhosts/knownhosts.go deleted file mode 100644 index 260cfe5..0000000 --- a/vendor/golang.org/x/crypto/ssh/knownhosts/knownhosts.go +++ /dev/null @@ -1,540 +0,0 @@ -// Copyright 2017 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 knownhosts implements a parser for the OpenSSH known_hosts -// host key database, and provides utility functions for writing -// OpenSSH compliant known_hosts files. -package knownhosts - -import ( - "bufio" - "bytes" - "crypto/hmac" - "crypto/rand" - "crypto/sha1" - "encoding/base64" - "errors" - "fmt" - "io" - "net" - "os" - "strings" - - "golang.org/x/crypto/ssh" -) - -// See the sshd manpage -// (http://man.openbsd.org/sshd#SSH_KNOWN_HOSTS_FILE_FORMAT) for -// background. - -type addr struct{ host, port string } - -func (a *addr) String() string { - h := a.host - if strings.Contains(h, ":") { - h = "[" + h + "]" - } - return h + ":" + a.port -} - -type matcher interface { - match(addr) bool -} - -type hostPattern struct { - negate bool - addr addr -} - -func (p *hostPattern) String() string { - n := "" - if p.negate { - n = "!" - } - - return n + p.addr.String() -} - -type hostPatterns []hostPattern - -func (ps hostPatterns) match(a addr) bool { - matched := false - for _, p := range ps { - if !p.match(a) { - continue - } - if p.negate { - return false - } - matched = true - } - return matched -} - -// See -// https://android.googlesource.com/platform/external/openssh/+/ab28f5495c85297e7a597c1ba62e996416da7c7e/addrmatch.c -// The matching of * has no regard for separators, unlike filesystem globs -func wildcardMatch(pat []byte, str []byte) bool { - for { - if len(pat) == 0 { - return len(str) == 0 - } - if len(str) == 0 { - return false - } - - if pat[0] == '*' { - if len(pat) == 1 { - return true - } - - for j := range str { - if wildcardMatch(pat[1:], str[j:]) { - return true - } - } - return false - } - - if pat[0] == '?' || pat[0] == str[0] { - pat = pat[1:] - str = str[1:] - } else { - return false - } - } -} - -func (p *hostPattern) match(a addr) bool { - return wildcardMatch([]byte(p.addr.host), []byte(a.host)) && p.addr.port == a.port -} - -type keyDBLine struct { - cert bool - matcher matcher - knownKey KnownKey -} - -func serialize(k ssh.PublicKey) string { - return k.Type() + " " + base64.StdEncoding.EncodeToString(k.Marshal()) -} - -func (l *keyDBLine) match(a addr) bool { - return l.matcher.match(a) -} - -type hostKeyDB struct { - // Serialized version of revoked keys - revoked map[string]*KnownKey - lines []keyDBLine -} - -func newHostKeyDB() *hostKeyDB { - db := &hostKeyDB{ - revoked: make(map[string]*KnownKey), - } - - return db -} - -func keyEq(a, b ssh.PublicKey) bool { - return bytes.Equal(a.Marshal(), b.Marshal()) -} - -// IsAuthorityForHost can be used as a callback in ssh.CertChecker -func (db *hostKeyDB) IsHostAuthority(remote ssh.PublicKey, address string) bool { - h, p, err := net.SplitHostPort(address) - if err != nil { - return false - } - a := addr{host: h, port: p} - - for _, l := range db.lines { - if l.cert && keyEq(l.knownKey.Key, remote) && l.match(a) { - return true - } - } - return false -} - -// IsRevoked can be used as a callback in ssh.CertChecker -func (db *hostKeyDB) IsRevoked(key *ssh.Certificate) bool { - _, ok := db.revoked[string(key.Marshal())] - return ok -} - -const markerCert = "@cert-authority" -const markerRevoked = "@revoked" - -func nextWord(line []byte) (string, []byte) { - i := bytes.IndexAny(line, "\t ") - if i == -1 { - return string(line), nil - } - - return string(line[:i]), bytes.TrimSpace(line[i:]) -} - -func parseLine(line []byte) (marker, host string, key ssh.PublicKey, err error) { - if w, next := nextWord(line); w == markerCert || w == markerRevoked { - marker = w - line = next - } - - host, line = nextWord(line) - if len(line) == 0 { - return "", "", nil, errors.New("knownhosts: missing host pattern") - } - - // ignore the keytype as it's in the key blob anyway. - _, line = nextWord(line) - if len(line) == 0 { - return "", "", nil, errors.New("knownhosts: missing key type pattern") - } - - keyBlob, _ := nextWord(line) - - keyBytes, err := base64.StdEncoding.DecodeString(keyBlob) - if err != nil { - return "", "", nil, err - } - key, err = ssh.ParsePublicKey(keyBytes) - if err != nil { - return "", "", nil, err - } - - return marker, host, key, nil -} - -func (db *hostKeyDB) parseLine(line []byte, filename string, linenum int) error { - marker, pattern, key, err := parseLine(line) - if err != nil { - return err - } - - if marker == markerRevoked { - db.revoked[string(key.Marshal())] = &KnownKey{ - Key: key, - Filename: filename, - Line: linenum, - } - - return nil - } - - entry := keyDBLine{ - cert: marker == markerCert, - knownKey: KnownKey{ - Filename: filename, - Line: linenum, - Key: key, - }, - } - - if pattern[0] == '|' { - entry.matcher, err = newHashedHost(pattern) - } else { - entry.matcher, err = newHostnameMatcher(pattern) - } - - if err != nil { - return err - } - - db.lines = append(db.lines, entry) - return nil -} - -func newHostnameMatcher(pattern string) (matcher, error) { - var hps hostPatterns - for _, p := range strings.Split(pattern, ",") { - if len(p) == 0 { - continue - } - - var a addr - var negate bool - if p[0] == '!' { - negate = true - p = p[1:] - } - - if len(p) == 0 { - return nil, errors.New("knownhosts: negation without following hostname") - } - - var err error - if p[0] == '[' { - a.host, a.port, err = net.SplitHostPort(p) - if err != nil { - return nil, err - } - } else { - a.host, a.port, err = net.SplitHostPort(p) - if err != nil { - a.host = p - a.port = "22" - } - } - hps = append(hps, hostPattern{ - negate: negate, - addr: a, - }) - } - return hps, nil -} - -// KnownKey represents a key declared in a known_hosts file. -type KnownKey struct { - Key ssh.PublicKey - Filename string - Line int -} - -func (k *KnownKey) String() string { - return fmt.Sprintf("%s:%d: %s", k.Filename, k.Line, serialize(k.Key)) -} - -// KeyError is returned if we did not find the key in the host key -// database, or there was a mismatch. Typically, in batch -// applications, this should be interpreted as failure. Interactive -// applications can offer an interactive prompt to the user. -type KeyError struct { - // Want holds the accepted host keys. For each key algorithm, - // there can be one hostkey. If Want is empty, the host is - // unknown. If Want is non-empty, there was a mismatch, which - // can signify a MITM attack. - Want []KnownKey -} - -func (u *KeyError) Error() string { - if len(u.Want) == 0 { - return "knownhosts: key is unknown" - } - return "knownhosts: key mismatch" -} - -// RevokedError is returned if we found a key that was revoked. -type RevokedError struct { - Revoked KnownKey -} - -func (r *RevokedError) Error() string { - return "knownhosts: key is revoked" -} - -// check checks a key against the host database. This should not be -// used for verifying certificates. -func (db *hostKeyDB) check(address string, remote net.Addr, remoteKey ssh.PublicKey) error { - if revoked := db.revoked[string(remoteKey.Marshal())]; revoked != nil { - return &RevokedError{Revoked: *revoked} - } - - host, port, err := net.SplitHostPort(remote.String()) - if err != nil { - return fmt.Errorf("knownhosts: SplitHostPort(%s): %v", remote, err) - } - - hostToCheck := addr{host, port} - if address != "" { - // Give preference to the hostname if available. - host, port, err := net.SplitHostPort(address) - if err != nil { - return fmt.Errorf("knownhosts: SplitHostPort(%s): %v", address, err) - } - - hostToCheck = addr{host, port} - } - - return db.checkAddr(hostToCheck, remoteKey) -} - -// checkAddr checks if we can find the given public key for the -// given address. If we only find an entry for the IP address, -// or only the hostname, then this still succeeds. -func (db *hostKeyDB) checkAddr(a addr, remoteKey ssh.PublicKey) error { - // TODO(hanwen): are these the right semantics? What if there - // is just a key for the IP address, but not for the - // hostname? - - // Algorithm => key. - knownKeys := map[string]KnownKey{} - for _, l := range db.lines { - if l.match(a) { - typ := l.knownKey.Key.Type() - if _, ok := knownKeys[typ]; !ok { - knownKeys[typ] = l.knownKey - } - } - } - - keyErr := &KeyError{} - for _, v := range knownKeys { - keyErr.Want = append(keyErr.Want, v) - } - - // Unknown remote host. - if len(knownKeys) == 0 { - return keyErr - } - - // If the remote host starts using a different, unknown key type, we - // also interpret that as a mismatch. - if known, ok := knownKeys[remoteKey.Type()]; !ok || !keyEq(known.Key, remoteKey) { - return keyErr - } - - return nil -} - -// The Read function parses file contents. -func (db *hostKeyDB) Read(r io.Reader, filename string) error { - scanner := bufio.NewScanner(r) - - lineNum := 0 - for scanner.Scan() { - lineNum++ - line := scanner.Bytes() - line = bytes.TrimSpace(line) - if len(line) == 0 || line[0] == '#' { - continue - } - - if err := db.parseLine(line, filename, lineNum); err != nil { - return fmt.Errorf("knownhosts: %s:%d: %v", filename, lineNum, err) - } - } - return scanner.Err() -} - -// New creates a host key callback from the given OpenSSH host key -// files. The returned callback is for use in -// ssh.ClientConfig.HostKeyCallback. By preference, the key check -// operates on the hostname if available, i.e. if a server changes its -// IP address, the host key check will still succeed, even though a -// record of the new IP address is not available. -func New(files ...string) (ssh.HostKeyCallback, error) { - db := newHostKeyDB() - for _, fn := range files { - f, err := os.Open(fn) - if err != nil { - return nil, err - } - defer f.Close() - if err := db.Read(f, fn); err != nil { - return nil, err - } - } - - var certChecker ssh.CertChecker - certChecker.IsHostAuthority = db.IsHostAuthority - certChecker.IsRevoked = db.IsRevoked - certChecker.HostKeyFallback = db.check - - return certChecker.CheckHostKey, nil -} - -// Normalize normalizes an address into the form used in known_hosts -func Normalize(address string) string { - host, port, err := net.SplitHostPort(address) - if err != nil { - host = address - port = "22" - } - entry := host - if port != "22" { - entry = "[" + entry + "]:" + port - } else if strings.Contains(host, ":") && !strings.HasPrefix(host, "[") { - entry = "[" + entry + "]" - } - return entry -} - -// Line returns a line to add append to the known_hosts files. -func Line(addresses []string, key ssh.PublicKey) string { - var trimmed []string - for _, a := range addresses { - trimmed = append(trimmed, Normalize(a)) - } - - return strings.Join(trimmed, ",") + " " + serialize(key) -} - -// HashHostname hashes the given hostname. The hostname is not -// normalized before hashing. -func HashHostname(hostname string) string { - // TODO(hanwen): check if we can safely normalize this always. - salt := make([]byte, sha1.Size) - - _, err := rand.Read(salt) - if err != nil { - panic(fmt.Sprintf("crypto/rand failure %v", err)) - } - - hash := hashHost(hostname, salt) - return encodeHash(sha1HashType, salt, hash) -} - -func decodeHash(encoded string) (hashType string, salt, hash []byte, err error) { - if len(encoded) == 0 || encoded[0] != '|' { - err = errors.New("knownhosts: hashed host must start with '|'") - return - } - components := strings.Split(encoded, "|") - if len(components) != 4 { - err = fmt.Errorf("knownhosts: got %d components, want 3", len(components)) - return - } - - hashType = components[1] - if salt, err = base64.StdEncoding.DecodeString(components[2]); err != nil { - return - } - if hash, err = base64.StdEncoding.DecodeString(components[3]); err != nil { - return - } - return -} - -func encodeHash(typ string, salt []byte, hash []byte) string { - return strings.Join([]string{"", - typ, - base64.StdEncoding.EncodeToString(salt), - base64.StdEncoding.EncodeToString(hash), - }, "|") -} - -// See https://android.googlesource.com/platform/external/openssh/+/ab28f5495c85297e7a597c1ba62e996416da7c7e/hostfile.c#120 -func hashHost(hostname string, salt []byte) []byte { - mac := hmac.New(sha1.New, salt) - mac.Write([]byte(hostname)) - return mac.Sum(nil) -} - -type hashedHost struct { - salt []byte - hash []byte -} - -const sha1HashType = "1" - -func newHashedHost(encoded string) (*hashedHost, error) { - typ, salt, hash, err := decodeHash(encoded) - if err != nil { - return nil, err - } - - // The type field seems for future algorithm agility, but it's - // actually hardcoded in openssh currently, see - // https://android.googlesource.com/platform/external/openssh/+/ab28f5495c85297e7a597c1ba62e996416da7c7e/hostfile.c#120 - if typ != sha1HashType { - return nil, fmt.Errorf("knownhosts: got hash type %s, must be '1'", typ) - } - - return &hashedHost{salt: salt, hash: hash}, nil -} - -func (h *hashedHost) match(a addr) bool { - return bytes.Equal(hashHost(Normalize(a.String()), h.salt), h.hash) -} diff --git a/vendor/golang.org/x/crypto/ssh/mac.go b/vendor/golang.org/x/crypto/ssh/mac.go deleted file mode 100644 index c07a062..0000000 --- a/vendor/golang.org/x/crypto/ssh/mac.go +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2012 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 ssh - -// Message authentication support - -import ( - "crypto/hmac" - "crypto/sha1" - "crypto/sha256" - "hash" -) - -type macMode struct { - keySize int - etm bool - new func(key []byte) hash.Hash -} - -// truncatingMAC wraps around a hash.Hash and truncates the output digest to -// a given size. -type truncatingMAC struct { - length int - hmac hash.Hash -} - -func (t truncatingMAC) Write(data []byte) (int, error) { - return t.hmac.Write(data) -} - -func (t truncatingMAC) Sum(in []byte) []byte { - out := t.hmac.Sum(in) - return out[:len(in)+t.length] -} - -func (t truncatingMAC) Reset() { - t.hmac.Reset() -} - -func (t truncatingMAC) Size() int { - return t.length -} - -func (t truncatingMAC) BlockSize() int { return t.hmac.BlockSize() } - -var macModes = map[string]*macMode{ - "hmac-sha2-256-etm@openssh.com": {32, true, func(key []byte) hash.Hash { - return hmac.New(sha256.New, key) - }}, - "hmac-sha2-256": {32, false, func(key []byte) hash.Hash { - return hmac.New(sha256.New, key) - }}, - "hmac-sha1": {20, false, func(key []byte) hash.Hash { - return hmac.New(sha1.New, key) - }}, - "hmac-sha1-96": {20, false, func(key []byte) hash.Hash { - return truncatingMAC{12, hmac.New(sha1.New, key)} - }}, -} diff --git a/vendor/golang.org/x/crypto/ssh/messages.go b/vendor/golang.org/x/crypto/ssh/messages.go deleted file mode 100644 index 19bc67c..0000000 --- a/vendor/golang.org/x/crypto/ssh/messages.go +++ /dev/null @@ -1,877 +0,0 @@ -// Copyright 2011 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 ssh - -import ( - "bytes" - "encoding/binary" - "errors" - "fmt" - "io" - "math/big" - "reflect" - "strconv" - "strings" -) - -// These are SSH message type numbers. They are scattered around several -// documents but many were taken from [SSH-PARAMETERS]. -const ( - msgIgnore = 2 - msgUnimplemented = 3 - msgDebug = 4 - msgNewKeys = 21 -) - -// SSH messages: -// -// These structures mirror the wire format of the corresponding SSH messages. -// They are marshaled using reflection with the marshal and unmarshal functions -// in this file. The only wrinkle is that a final member of type []byte with a -// ssh tag of "rest" receives the remainder of a packet when unmarshaling. - -// See RFC 4253, section 11.1. -const msgDisconnect = 1 - -// disconnectMsg is the message that signals a disconnect. It is also -// the error type returned from mux.Wait() -type disconnectMsg struct { - Reason uint32 `sshtype:"1"` - Message string - Language string -} - -func (d *disconnectMsg) Error() string { - return fmt.Sprintf("ssh: disconnect, reason %d: %s", d.Reason, d.Message) -} - -// See RFC 4253, section 7.1. -const msgKexInit = 20 - -type kexInitMsg struct { - Cookie [16]byte `sshtype:"20"` - KexAlgos []string - ServerHostKeyAlgos []string - CiphersClientServer []string - CiphersServerClient []string - MACsClientServer []string - MACsServerClient []string - CompressionClientServer []string - CompressionServerClient []string - LanguagesClientServer []string - LanguagesServerClient []string - FirstKexFollows bool - Reserved uint32 -} - -// See RFC 4253, section 8. - -// Diffie-Helman -const msgKexDHInit = 30 - -type kexDHInitMsg struct { - X *big.Int `sshtype:"30"` -} - -const msgKexECDHInit = 30 - -type kexECDHInitMsg struct { - ClientPubKey []byte `sshtype:"30"` -} - -const msgKexECDHReply = 31 - -type kexECDHReplyMsg struct { - HostKey []byte `sshtype:"31"` - EphemeralPubKey []byte - Signature []byte -} - -const msgKexDHReply = 31 - -type kexDHReplyMsg struct { - HostKey []byte `sshtype:"31"` - Y *big.Int - Signature []byte -} - -// See RFC 4419, section 5. -const msgKexDHGexGroup = 31 - -type kexDHGexGroupMsg struct { - P *big.Int `sshtype:"31"` - G *big.Int -} - -const msgKexDHGexInit = 32 - -type kexDHGexInitMsg struct { - X *big.Int `sshtype:"32"` -} - -const msgKexDHGexReply = 33 - -type kexDHGexReplyMsg struct { - HostKey []byte `sshtype:"33"` - Y *big.Int - Signature []byte -} - -const msgKexDHGexRequest = 34 - -type kexDHGexRequestMsg struct { - MinBits uint32 `sshtype:"34"` - PreferedBits uint32 - MaxBits uint32 -} - -// See RFC 4253, section 10. -const msgServiceRequest = 5 - -type serviceRequestMsg struct { - Service string `sshtype:"5"` -} - -// See RFC 4253, section 10. -const msgServiceAccept = 6 - -type serviceAcceptMsg struct { - Service string `sshtype:"6"` -} - -// See RFC 8308, section 2.3 -const msgExtInfo = 7 - -type extInfoMsg struct { - NumExtensions uint32 `sshtype:"7"` - Payload []byte `ssh:"rest"` -} - -// See RFC 4252, section 5. -const msgUserAuthRequest = 50 - -type userAuthRequestMsg struct { - User string `sshtype:"50"` - Service string - Method string - Payload []byte `ssh:"rest"` -} - -// Used for debug printouts of packets. -type userAuthSuccessMsg struct { -} - -// See RFC 4252, section 5.1 -const msgUserAuthFailure = 51 - -type userAuthFailureMsg struct { - Methods []string `sshtype:"51"` - PartialSuccess bool -} - -// See RFC 4252, section 5.1 -const msgUserAuthSuccess = 52 - -// See RFC 4252, section 5.4 -const msgUserAuthBanner = 53 - -type userAuthBannerMsg struct { - Message string `sshtype:"53"` - // unused, but required to allow message parsing - Language string -} - -// See RFC 4256, section 3.2 -const msgUserAuthInfoRequest = 60 -const msgUserAuthInfoResponse = 61 - -type userAuthInfoRequestMsg struct { - Name string `sshtype:"60"` - Instruction string - Language string - NumPrompts uint32 - Prompts []byte `ssh:"rest"` -} - -// See RFC 4254, section 5.1. -const msgChannelOpen = 90 - -type channelOpenMsg struct { - ChanType string `sshtype:"90"` - PeersID uint32 - PeersWindow uint32 - MaxPacketSize uint32 - TypeSpecificData []byte `ssh:"rest"` -} - -const msgChannelExtendedData = 95 -const msgChannelData = 94 - -// Used for debug print outs of packets. -type channelDataMsg struct { - PeersID uint32 `sshtype:"94"` - Length uint32 - Rest []byte `ssh:"rest"` -} - -// See RFC 4254, section 5.1. -const msgChannelOpenConfirm = 91 - -type channelOpenConfirmMsg struct { - PeersID uint32 `sshtype:"91"` - MyID uint32 - MyWindow uint32 - MaxPacketSize uint32 - TypeSpecificData []byte `ssh:"rest"` -} - -// See RFC 4254, section 5.1. -const msgChannelOpenFailure = 92 - -type channelOpenFailureMsg struct { - PeersID uint32 `sshtype:"92"` - Reason RejectionReason - Message string - Language string -} - -const msgChannelRequest = 98 - -type channelRequestMsg struct { - PeersID uint32 `sshtype:"98"` - Request string - WantReply bool - RequestSpecificData []byte `ssh:"rest"` -} - -// See RFC 4254, section 5.4. -const msgChannelSuccess = 99 - -type channelRequestSuccessMsg struct { - PeersID uint32 `sshtype:"99"` -} - -// See RFC 4254, section 5.4. -const msgChannelFailure = 100 - -type channelRequestFailureMsg struct { - PeersID uint32 `sshtype:"100"` -} - -// See RFC 4254, section 5.3 -const msgChannelClose = 97 - -type channelCloseMsg struct { - PeersID uint32 `sshtype:"97"` -} - -// See RFC 4254, section 5.3 -const msgChannelEOF = 96 - -type channelEOFMsg struct { - PeersID uint32 `sshtype:"96"` -} - -// See RFC 4254, section 4 -const msgGlobalRequest = 80 - -type globalRequestMsg struct { - Type string `sshtype:"80"` - WantReply bool - Data []byte `ssh:"rest"` -} - -// See RFC 4254, section 4 -const msgRequestSuccess = 81 - -type globalRequestSuccessMsg struct { - Data []byte `ssh:"rest" sshtype:"81"` -} - -// See RFC 4254, section 4 -const msgRequestFailure = 82 - -type globalRequestFailureMsg struct { - Data []byte `ssh:"rest" sshtype:"82"` -} - -// See RFC 4254, section 5.2 -const msgChannelWindowAdjust = 93 - -type windowAdjustMsg struct { - PeersID uint32 `sshtype:"93"` - AdditionalBytes uint32 -} - -// See RFC 4252, section 7 -const msgUserAuthPubKeyOk = 60 - -type userAuthPubKeyOkMsg struct { - Algo string `sshtype:"60"` - PubKey []byte -} - -// See RFC 4462, section 3 -const msgUserAuthGSSAPIResponse = 60 - -type userAuthGSSAPIResponse struct { - SupportMech []byte `sshtype:"60"` -} - -const msgUserAuthGSSAPIToken = 61 - -type userAuthGSSAPIToken struct { - Token []byte `sshtype:"61"` -} - -const msgUserAuthGSSAPIMIC = 66 - -type userAuthGSSAPIMIC struct { - MIC []byte `sshtype:"66"` -} - -// See RFC 4462, section 3.9 -const msgUserAuthGSSAPIErrTok = 64 - -type userAuthGSSAPIErrTok struct { - ErrorToken []byte `sshtype:"64"` -} - -// See RFC 4462, section 3.8 -const msgUserAuthGSSAPIError = 65 - -type userAuthGSSAPIError struct { - MajorStatus uint32 `sshtype:"65"` - MinorStatus uint32 - Message string - LanguageTag string -} - -// typeTags returns the possible type bytes for the given reflect.Type, which -// should be a struct. The possible values are separated by a '|' character. -func typeTags(structType reflect.Type) (tags []byte) { - tagStr := structType.Field(0).Tag.Get("sshtype") - - for _, tag := range strings.Split(tagStr, "|") { - i, err := strconv.Atoi(tag) - if err == nil { - tags = append(tags, byte(i)) - } - } - - return tags -} - -func fieldError(t reflect.Type, field int, problem string) error { - if problem != "" { - problem = ": " + problem - } - return fmt.Errorf("ssh: unmarshal error for field %s of type %s%s", t.Field(field).Name, t.Name(), problem) -} - -var errShortRead = errors.New("ssh: short read") - -// Unmarshal parses data in SSH wire format into a structure. The out -// argument should be a pointer to struct. If the first member of the -// struct has the "sshtype" tag set to a '|'-separated set of numbers -// in decimal, the packet must start with one of those numbers. In -// case of error, Unmarshal returns a ParseError or -// UnexpectedMessageError. -func Unmarshal(data []byte, out interface{}) error { - v := reflect.ValueOf(out).Elem() - structType := v.Type() - expectedTypes := typeTags(structType) - - var expectedType byte - if len(expectedTypes) > 0 { - expectedType = expectedTypes[0] - } - - if len(data) == 0 { - return parseError(expectedType) - } - - if len(expectedTypes) > 0 { - goodType := false - for _, e := range expectedTypes { - if e > 0 && data[0] == e { - goodType = true - break - } - } - if !goodType { - return fmt.Errorf("ssh: unexpected message type %d (expected one of %v)", data[0], expectedTypes) - } - data = data[1:] - } - - var ok bool - for i := 0; i < v.NumField(); i++ { - field := v.Field(i) - t := field.Type() - switch t.Kind() { - case reflect.Bool: - if len(data) < 1 { - return errShortRead - } - field.SetBool(data[0] != 0) - data = data[1:] - case reflect.Array: - if t.Elem().Kind() != reflect.Uint8 { - return fieldError(structType, i, "array of unsupported type") - } - if len(data) < t.Len() { - return errShortRead - } - for j, n := 0, t.Len(); j < n; j++ { - field.Index(j).Set(reflect.ValueOf(data[j])) - } - data = data[t.Len():] - case reflect.Uint64: - var u64 uint64 - if u64, data, ok = parseUint64(data); !ok { - return errShortRead - } - field.SetUint(u64) - case reflect.Uint32: - var u32 uint32 - if u32, data, ok = parseUint32(data); !ok { - return errShortRead - } - field.SetUint(uint64(u32)) - case reflect.Uint8: - if len(data) < 1 { - return errShortRead - } - field.SetUint(uint64(data[0])) - data = data[1:] - case reflect.String: - var s []byte - if s, data, ok = parseString(data); !ok { - return fieldError(structType, i, "") - } - field.SetString(string(s)) - case reflect.Slice: - switch t.Elem().Kind() { - case reflect.Uint8: - if structType.Field(i).Tag.Get("ssh") == "rest" { - field.Set(reflect.ValueOf(data)) - data = nil - } else { - var s []byte - if s, data, ok = parseString(data); !ok { - return errShortRead - } - field.Set(reflect.ValueOf(s)) - } - case reflect.String: - var nl []string - if nl, data, ok = parseNameList(data); !ok { - return errShortRead - } - field.Set(reflect.ValueOf(nl)) - default: - return fieldError(structType, i, "slice of unsupported type") - } - case reflect.Ptr: - if t == bigIntType { - var n *big.Int - if n, data, ok = parseInt(data); !ok { - return errShortRead - } - field.Set(reflect.ValueOf(n)) - } else { - return fieldError(structType, i, "pointer to unsupported type") - } - default: - return fieldError(structType, i, fmt.Sprintf("unsupported type: %v", t)) - } - } - - if len(data) != 0 { - return parseError(expectedType) - } - - return nil -} - -// Marshal serializes the message in msg to SSH wire format. The msg -// argument should be a struct or pointer to struct. If the first -// member has the "sshtype" tag set to a number in decimal, that -// number is prepended to the result. If the last of member has the -// "ssh" tag set to "rest", its contents are appended to the output. -func Marshal(msg interface{}) []byte { - out := make([]byte, 0, 64) - return marshalStruct(out, msg) -} - -func marshalStruct(out []byte, msg interface{}) []byte { - v := reflect.Indirect(reflect.ValueOf(msg)) - msgTypes := typeTags(v.Type()) - if len(msgTypes) > 0 { - out = append(out, msgTypes[0]) - } - - for i, n := 0, v.NumField(); i < n; i++ { - field := v.Field(i) - switch t := field.Type(); t.Kind() { - case reflect.Bool: - var v uint8 - if field.Bool() { - v = 1 - } - out = append(out, v) - case reflect.Array: - if t.Elem().Kind() != reflect.Uint8 { - panic(fmt.Sprintf("array of non-uint8 in field %d: %T", i, field.Interface())) - } - for j, l := 0, t.Len(); j < l; j++ { - out = append(out, uint8(field.Index(j).Uint())) - } - case reflect.Uint32: - out = appendU32(out, uint32(field.Uint())) - case reflect.Uint64: - out = appendU64(out, uint64(field.Uint())) - case reflect.Uint8: - out = append(out, uint8(field.Uint())) - case reflect.String: - s := field.String() - out = appendInt(out, len(s)) - out = append(out, s...) - case reflect.Slice: - switch t.Elem().Kind() { - case reflect.Uint8: - if v.Type().Field(i).Tag.Get("ssh") != "rest" { - out = appendInt(out, field.Len()) - } - out = append(out, field.Bytes()...) - case reflect.String: - offset := len(out) - out = appendU32(out, 0) - if n := field.Len(); n > 0 { - for j := 0; j < n; j++ { - f := field.Index(j) - if j != 0 { - out = append(out, ',') - } - out = append(out, f.String()...) - } - // overwrite length value - binary.BigEndian.PutUint32(out[offset:], uint32(len(out)-offset-4)) - } - default: - panic(fmt.Sprintf("slice of unknown type in field %d: %T", i, field.Interface())) - } - case reflect.Ptr: - if t == bigIntType { - var n *big.Int - nValue := reflect.ValueOf(&n) - nValue.Elem().Set(field) - needed := intLength(n) - oldLength := len(out) - - if cap(out)-len(out) < needed { - newOut := make([]byte, len(out), 2*(len(out)+needed)) - copy(newOut, out) - out = newOut - } - out = out[:oldLength+needed] - marshalInt(out[oldLength:], n) - } else { - panic(fmt.Sprintf("pointer to unknown type in field %d: %T", i, field.Interface())) - } - } - } - - return out -} - -var bigOne = big.NewInt(1) - -func parseString(in []byte) (out, rest []byte, ok bool) { - if len(in) < 4 { - return - } - length := binary.BigEndian.Uint32(in) - in = in[4:] - if uint32(len(in)) < length { - return - } - out = in[:length] - rest = in[length:] - ok = true - return -} - -var ( - comma = []byte{','} - emptyNameList = []string{} -) - -func parseNameList(in []byte) (out []string, rest []byte, ok bool) { - contents, rest, ok := parseString(in) - if !ok { - return - } - if len(contents) == 0 { - out = emptyNameList - return - } - parts := bytes.Split(contents, comma) - out = make([]string, len(parts)) - for i, part := range parts { - out[i] = string(part) - } - return -} - -func parseInt(in []byte) (out *big.Int, rest []byte, ok bool) { - contents, rest, ok := parseString(in) - if !ok { - return - } - out = new(big.Int) - - if len(contents) > 0 && contents[0]&0x80 == 0x80 { - // This is a negative number - notBytes := make([]byte, len(contents)) - for i := range notBytes { - notBytes[i] = ^contents[i] - } - out.SetBytes(notBytes) - out.Add(out, bigOne) - out.Neg(out) - } else { - // Positive number - out.SetBytes(contents) - } - ok = true - return -} - -func parseUint32(in []byte) (uint32, []byte, bool) { - if len(in) < 4 { - return 0, nil, false - } - return binary.BigEndian.Uint32(in), in[4:], true -} - -func parseUint64(in []byte) (uint64, []byte, bool) { - if len(in) < 8 { - return 0, nil, false - } - return binary.BigEndian.Uint64(in), in[8:], true -} - -func intLength(n *big.Int) int { - length := 4 /* length bytes */ - if n.Sign() < 0 { - nMinus1 := new(big.Int).Neg(n) - nMinus1.Sub(nMinus1, bigOne) - bitLen := nMinus1.BitLen() - if bitLen%8 == 0 { - // The number will need 0xff padding - length++ - } - length += (bitLen + 7) / 8 - } else if n.Sign() == 0 { - // A zero is the zero length string - } else { - bitLen := n.BitLen() - if bitLen%8 == 0 { - // The number will need 0x00 padding - length++ - } - length += (bitLen + 7) / 8 - } - - return length -} - -func marshalUint32(to []byte, n uint32) []byte { - binary.BigEndian.PutUint32(to, n) - return to[4:] -} - -func marshalUint64(to []byte, n uint64) []byte { - binary.BigEndian.PutUint64(to, n) - return to[8:] -} - -func marshalInt(to []byte, n *big.Int) []byte { - lengthBytes := to - to = to[4:] - length := 0 - - if n.Sign() < 0 { - // A negative number has to be converted to two's-complement - // form. So we'll subtract 1 and invert. If the - // most-significant-bit isn't set then we'll need to pad the - // beginning with 0xff in order to keep the number negative. - nMinus1 := new(big.Int).Neg(n) - nMinus1.Sub(nMinus1, bigOne) - bytes := nMinus1.Bytes() - for i := range bytes { - bytes[i] ^= 0xff - } - if len(bytes) == 0 || bytes[0]&0x80 == 0 { - to[0] = 0xff - to = to[1:] - length++ - } - nBytes := copy(to, bytes) - to = to[nBytes:] - length += nBytes - } else if n.Sign() == 0 { - // A zero is the zero length string - } else { - bytes := n.Bytes() - if len(bytes) > 0 && bytes[0]&0x80 != 0 { - // We'll have to pad this with a 0x00 in order to - // stop it looking like a negative number. - to[0] = 0 - to = to[1:] - length++ - } - nBytes := copy(to, bytes) - to = to[nBytes:] - length += nBytes - } - - lengthBytes[0] = byte(length >> 24) - lengthBytes[1] = byte(length >> 16) - lengthBytes[2] = byte(length >> 8) - lengthBytes[3] = byte(length) - return to -} - -func writeInt(w io.Writer, n *big.Int) { - length := intLength(n) - buf := make([]byte, length) - marshalInt(buf, n) - w.Write(buf) -} - -func writeString(w io.Writer, s []byte) { - var lengthBytes [4]byte - lengthBytes[0] = byte(len(s) >> 24) - lengthBytes[1] = byte(len(s) >> 16) - lengthBytes[2] = byte(len(s) >> 8) - lengthBytes[3] = byte(len(s)) - w.Write(lengthBytes[:]) - w.Write(s) -} - -func stringLength(n int) int { - return 4 + n -} - -func marshalString(to []byte, s []byte) []byte { - to[0] = byte(len(s) >> 24) - to[1] = byte(len(s) >> 16) - to[2] = byte(len(s) >> 8) - to[3] = byte(len(s)) - to = to[4:] - copy(to, s) - return to[len(s):] -} - -var bigIntType = reflect.TypeOf((*big.Int)(nil)) - -// Decode a packet into its corresponding message. -func decode(packet []byte) (interface{}, error) { - var msg interface{} - switch packet[0] { - case msgDisconnect: - msg = new(disconnectMsg) - case msgServiceRequest: - msg = new(serviceRequestMsg) - case msgServiceAccept: - msg = new(serviceAcceptMsg) - case msgExtInfo: - msg = new(extInfoMsg) - case msgKexInit: - msg = new(kexInitMsg) - case msgKexDHInit: - msg = new(kexDHInitMsg) - case msgKexDHReply: - msg = new(kexDHReplyMsg) - case msgUserAuthRequest: - msg = new(userAuthRequestMsg) - case msgUserAuthSuccess: - return new(userAuthSuccessMsg), nil - case msgUserAuthFailure: - msg = new(userAuthFailureMsg) - case msgUserAuthPubKeyOk: - msg = new(userAuthPubKeyOkMsg) - case msgGlobalRequest: - msg = new(globalRequestMsg) - case msgRequestSuccess: - msg = new(globalRequestSuccessMsg) - case msgRequestFailure: - msg = new(globalRequestFailureMsg) - case msgChannelOpen: - msg = new(channelOpenMsg) - case msgChannelData: - msg = new(channelDataMsg) - case msgChannelOpenConfirm: - msg = new(channelOpenConfirmMsg) - case msgChannelOpenFailure: - msg = new(channelOpenFailureMsg) - case msgChannelWindowAdjust: - msg = new(windowAdjustMsg) - case msgChannelEOF: - msg = new(channelEOFMsg) - case msgChannelClose: - msg = new(channelCloseMsg) - case msgChannelRequest: - msg = new(channelRequestMsg) - case msgChannelSuccess: - msg = new(channelRequestSuccessMsg) - case msgChannelFailure: - msg = new(channelRequestFailureMsg) - case msgUserAuthGSSAPIToken: - msg = new(userAuthGSSAPIToken) - case msgUserAuthGSSAPIMIC: - msg = new(userAuthGSSAPIMIC) - case msgUserAuthGSSAPIErrTok: - msg = new(userAuthGSSAPIErrTok) - case msgUserAuthGSSAPIError: - msg = new(userAuthGSSAPIError) - default: - return nil, unexpectedMessageError(0, packet[0]) - } - if err := Unmarshal(packet, msg); err != nil { - return nil, err - } - return msg, nil -} - -var packetTypeNames = map[byte]string{ - msgDisconnect: "disconnectMsg", - msgServiceRequest: "serviceRequestMsg", - msgServiceAccept: "serviceAcceptMsg", - msgExtInfo: "extInfoMsg", - msgKexInit: "kexInitMsg", - msgKexDHInit: "kexDHInitMsg", - msgKexDHReply: "kexDHReplyMsg", - msgUserAuthRequest: "userAuthRequestMsg", - msgUserAuthSuccess: "userAuthSuccessMsg", - msgUserAuthFailure: "userAuthFailureMsg", - msgUserAuthPubKeyOk: "userAuthPubKeyOkMsg", - msgGlobalRequest: "globalRequestMsg", - msgRequestSuccess: "globalRequestSuccessMsg", - msgRequestFailure: "globalRequestFailureMsg", - msgChannelOpen: "channelOpenMsg", - msgChannelData: "channelDataMsg", - msgChannelOpenConfirm: "channelOpenConfirmMsg", - msgChannelOpenFailure: "channelOpenFailureMsg", - msgChannelWindowAdjust: "windowAdjustMsg", - msgChannelEOF: "channelEOFMsg", - msgChannelClose: "channelCloseMsg", - msgChannelRequest: "channelRequestMsg", - msgChannelSuccess: "channelRequestSuccessMsg", - msgChannelFailure: "channelRequestFailureMsg", -} diff --git a/vendor/golang.org/x/crypto/ssh/mux.go b/vendor/golang.org/x/crypto/ssh/mux.go deleted file mode 100644 index 9654c01..0000000 --- a/vendor/golang.org/x/crypto/ssh/mux.go +++ /dev/null @@ -1,351 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ssh - -import ( - "encoding/binary" - "fmt" - "io" - "log" - "sync" - "sync/atomic" -) - -// debugMux, if set, causes messages in the connection protocol to be -// logged. -const debugMux = false - -// chanList is a thread safe channel list. -type chanList struct { - // protects concurrent access to chans - sync.Mutex - - // chans are indexed by the local id of the channel, which the - // other side should send in the PeersId field. - chans []*channel - - // This is a debugging aid: it offsets all IDs by this - // amount. This helps distinguish otherwise identical - // server/client muxes - offset uint32 -} - -// Assigns a channel ID to the given channel. -func (c *chanList) add(ch *channel) uint32 { - c.Lock() - defer c.Unlock() - for i := range c.chans { - if c.chans[i] == nil { - c.chans[i] = ch - return uint32(i) + c.offset - } - } - c.chans = append(c.chans, ch) - return uint32(len(c.chans)-1) + c.offset -} - -// getChan returns the channel for the given ID. -func (c *chanList) getChan(id uint32) *channel { - id -= c.offset - - c.Lock() - defer c.Unlock() - if id < uint32(len(c.chans)) { - return c.chans[id] - } - return nil -} - -func (c *chanList) remove(id uint32) { - id -= c.offset - c.Lock() - if id < uint32(len(c.chans)) { - c.chans[id] = nil - } - c.Unlock() -} - -// dropAll forgets all channels it knows, returning them in a slice. -func (c *chanList) dropAll() []*channel { - c.Lock() - defer c.Unlock() - var r []*channel - - for _, ch := range c.chans { - if ch == nil { - continue - } - r = append(r, ch) - } - c.chans = nil - return r -} - -// mux represents the state for the SSH connection protocol, which -// multiplexes many channels onto a single packet transport. -type mux struct { - conn packetConn - chanList chanList - - incomingChannels chan NewChannel - - globalSentMu sync.Mutex - globalResponses chan interface{} - incomingRequests chan *Request - - errCond *sync.Cond - err error -} - -// When debugging, each new chanList instantiation has a different -// offset. -var globalOff uint32 - -func (m *mux) Wait() error { - m.errCond.L.Lock() - defer m.errCond.L.Unlock() - for m.err == nil { - m.errCond.Wait() - } - return m.err -} - -// newMux returns a mux that runs over the given connection. -func newMux(p packetConn) *mux { - m := &mux{ - conn: p, - incomingChannels: make(chan NewChannel, chanSize), - globalResponses: make(chan interface{}, 1), - incomingRequests: make(chan *Request, chanSize), - errCond: newCond(), - } - if debugMux { - m.chanList.offset = atomic.AddUint32(&globalOff, 1) - } - - go m.loop() - return m -} - -func (m *mux) sendMessage(msg interface{}) error { - p := Marshal(msg) - if debugMux { - log.Printf("send global(%d): %#v", m.chanList.offset, msg) - } - return m.conn.writePacket(p) -} - -func (m *mux) SendRequest(name string, wantReply bool, payload []byte) (bool, []byte, error) { - if wantReply { - m.globalSentMu.Lock() - defer m.globalSentMu.Unlock() - } - - if err := m.sendMessage(globalRequestMsg{ - Type: name, - WantReply: wantReply, - Data: payload, - }); err != nil { - return false, nil, err - } - - if !wantReply { - return false, nil, nil - } - - msg, ok := <-m.globalResponses - if !ok { - return false, nil, io.EOF - } - switch msg := msg.(type) { - case *globalRequestFailureMsg: - return false, msg.Data, nil - case *globalRequestSuccessMsg: - return true, msg.Data, nil - default: - return false, nil, fmt.Errorf("ssh: unexpected response to request: %#v", msg) - } -} - -// ackRequest must be called after processing a global request that -// has WantReply set. -func (m *mux) ackRequest(ok bool, data []byte) error { - if ok { - return m.sendMessage(globalRequestSuccessMsg{Data: data}) - } - return m.sendMessage(globalRequestFailureMsg{Data: data}) -} - -func (m *mux) Close() error { - return m.conn.Close() -} - -// loop runs the connection machine. It will process packets until an -// error is encountered. To synchronize on loop exit, use mux.Wait. -func (m *mux) loop() { - var err error - for err == nil { - err = m.onePacket() - } - - for _, ch := range m.chanList.dropAll() { - ch.close() - } - - close(m.incomingChannels) - close(m.incomingRequests) - close(m.globalResponses) - - m.conn.Close() - - m.errCond.L.Lock() - m.err = err - m.errCond.Broadcast() - m.errCond.L.Unlock() - - if debugMux { - log.Println("loop exit", err) - } -} - -// onePacket reads and processes one packet. -func (m *mux) onePacket() error { - packet, err := m.conn.readPacket() - if err != nil { - return err - } - - if debugMux { - if packet[0] == msgChannelData || packet[0] == msgChannelExtendedData { - log.Printf("decoding(%d): data packet - %d bytes", m.chanList.offset, len(packet)) - } else { - p, _ := decode(packet) - log.Printf("decoding(%d): %d %#v - %d bytes", m.chanList.offset, packet[0], p, len(packet)) - } - } - - switch packet[0] { - case msgChannelOpen: - return m.handleChannelOpen(packet) - case msgGlobalRequest, msgRequestSuccess, msgRequestFailure: - return m.handleGlobalPacket(packet) - } - - // assume a channel packet. - if len(packet) < 5 { - return parseError(packet[0]) - } - id := binary.BigEndian.Uint32(packet[1:]) - ch := m.chanList.getChan(id) - if ch == nil { - return m.handleUnknownChannelPacket(id, packet) - } - - return ch.handlePacket(packet) -} - -func (m *mux) handleGlobalPacket(packet []byte) error { - msg, err := decode(packet) - if err != nil { - return err - } - - switch msg := msg.(type) { - case *globalRequestMsg: - m.incomingRequests <- &Request{ - Type: msg.Type, - WantReply: msg.WantReply, - Payload: msg.Data, - mux: m, - } - case *globalRequestSuccessMsg, *globalRequestFailureMsg: - m.globalResponses <- msg - default: - panic(fmt.Sprintf("not a global message %#v", msg)) - } - - return nil -} - -// handleChannelOpen schedules a channel to be Accept()ed. -func (m *mux) handleChannelOpen(packet []byte) error { - var msg channelOpenMsg - if err := Unmarshal(packet, &msg); err != nil { - return err - } - - if msg.MaxPacketSize < minPacketLength || msg.MaxPacketSize > 1<<31 { - failMsg := channelOpenFailureMsg{ - PeersID: msg.PeersID, - Reason: ConnectionFailed, - Message: "invalid request", - Language: "en_US.UTF-8", - } - return m.sendMessage(failMsg) - } - - c := m.newChannel(msg.ChanType, channelInbound, msg.TypeSpecificData) - c.remoteId = msg.PeersID - c.maxRemotePayload = msg.MaxPacketSize - c.remoteWin.add(msg.PeersWindow) - m.incomingChannels <- c - return nil -} - -func (m *mux) OpenChannel(chanType string, extra []byte) (Channel, <-chan *Request, error) { - ch, err := m.openChannel(chanType, extra) - if err != nil { - return nil, nil, err - } - - return ch, ch.incomingRequests, nil -} - -func (m *mux) openChannel(chanType string, extra []byte) (*channel, error) { - ch := m.newChannel(chanType, channelOutbound, extra) - - ch.maxIncomingPayload = channelMaxPacket - - open := channelOpenMsg{ - ChanType: chanType, - PeersWindow: ch.myWindow, - MaxPacketSize: ch.maxIncomingPayload, - TypeSpecificData: extra, - PeersID: ch.localId, - } - if err := m.sendMessage(open); err != nil { - return nil, err - } - - switch msg := (<-ch.msg).(type) { - case *channelOpenConfirmMsg: - return ch, nil - case *channelOpenFailureMsg: - return nil, &OpenChannelError{msg.Reason, msg.Message} - default: - return nil, fmt.Errorf("ssh: unexpected packet in response to channel open: %T", msg) - } -} - -func (m *mux) handleUnknownChannelPacket(id uint32, packet []byte) error { - msg, err := decode(packet) - if err != nil { - return err - } - - switch msg := msg.(type) { - // RFC 4254 section 5.4 says unrecognized channel requests should - // receive a failure response. - case *channelRequestMsg: - if msg.WantReply { - return m.sendMessage(channelRequestFailureMsg{ - PeersID: msg.PeersID, - }) - } - return nil - default: - return fmt.Errorf("ssh: invalid channel %d", id) - } -} diff --git a/vendor/golang.org/x/crypto/ssh/server.go b/vendor/golang.org/x/crypto/ssh/server.go deleted file mode 100644 index 70045bd..0000000 --- a/vendor/golang.org/x/crypto/ssh/server.go +++ /dev/null @@ -1,752 +0,0 @@ -// Copyright 2011 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 ssh - -import ( - "bytes" - "errors" - "fmt" - "io" - "net" - "strings" -) - -// The Permissions type holds fine-grained permissions that are -// specific to a user or a specific authentication method for a user. -// The Permissions value for a successful authentication attempt is -// available in ServerConn, so it can be used to pass information from -// the user-authentication phase to the application layer. -type Permissions struct { - // CriticalOptions indicate restrictions to the default - // permissions, and are typically used in conjunction with - // user certificates. The standard for SSH certificates - // defines "force-command" (only allow the given command to - // execute) and "source-address" (only allow connections from - // the given address). The SSH package currently only enforces - // the "source-address" critical option. It is up to server - // implementations to enforce other critical options, such as - // "force-command", by checking them after the SSH handshake - // is successful. In general, SSH servers should reject - // connections that specify critical options that are unknown - // or not supported. - CriticalOptions map[string]string - - // Extensions are extra functionality that the server may - // offer on authenticated connections. Lack of support for an - // extension does not preclude authenticating a user. Common - // extensions are "permit-agent-forwarding", - // "permit-X11-forwarding". The Go SSH library currently does - // not act on any extension, and it is up to server - // implementations to honor them. Extensions can be used to - // pass data from the authentication callbacks to the server - // application layer. - Extensions map[string]string -} - -type GSSAPIWithMICConfig struct { - // AllowLogin, must be set, is called when gssapi-with-mic - // authentication is selected (RFC 4462 section 3). The srcName is from the - // results of the GSS-API authentication. The format is username@DOMAIN. - // GSSAPI just guarantees to the server who the user is, but not if they can log in, and with what permissions. - // This callback is called after the user identity is established with GSSAPI to decide if the user can login with - // which permissions. If the user is allowed to login, it should return a nil error. - AllowLogin func(conn ConnMetadata, srcName string) (*Permissions, error) - - // Server must be set. It's the implementation - // of the GSSAPIServer interface. See GSSAPIServer interface for details. - Server GSSAPIServer -} - -// ServerConfig holds server specific configuration data. -type ServerConfig struct { - // Config contains configuration shared between client and server. - Config - - hostKeys []Signer - - // NoClientAuth is true if clients are allowed to connect without - // authenticating. - NoClientAuth bool - - // MaxAuthTries specifies the maximum number of authentication attempts - // permitted per connection. If set to a negative number, the number of - // attempts are unlimited. If set to zero, the number of attempts are limited - // to 6. - MaxAuthTries int - - // PasswordCallback, if non-nil, is called when a user - // attempts to authenticate using a password. - PasswordCallback func(conn ConnMetadata, password []byte) (*Permissions, error) - - // PublicKeyCallback, if non-nil, is called when a client - // offers a public key for authentication. It must return a nil error - // if the given public key can be used to authenticate the - // given user. For example, see CertChecker.Authenticate. A - // call to this function does not guarantee that the key - // offered is in fact used to authenticate. To record any data - // depending on the public key, store it inside a - // Permissions.Extensions entry. - PublicKeyCallback func(conn ConnMetadata, key PublicKey) (*Permissions, error) - - // KeyboardInteractiveCallback, if non-nil, is called when - // keyboard-interactive authentication is selected (RFC - // 4256). The client object's Challenge function should be - // used to query the user. The callback may offer multiple - // Challenge rounds. To avoid information leaks, the client - // should be presented a challenge even if the user is - // unknown. - KeyboardInteractiveCallback func(conn ConnMetadata, client KeyboardInteractiveChallenge) (*Permissions, error) - - // AuthLogCallback, if non-nil, is called to log all authentication - // attempts. - AuthLogCallback func(conn ConnMetadata, method string, err error) - - // ServerVersion is the version identification string to announce in - // the public handshake. - // If empty, a reasonable default is used. - // Note that RFC 4253 section 4.2 requires that this string start with - // "SSH-2.0-". - ServerVersion string - - // BannerCallback, if present, is called and the return string is sent to - // the client after key exchange completed but before authentication. - BannerCallback func(conn ConnMetadata) string - - // GSSAPIWithMICConfig includes gssapi server and callback, which if both non-nil, is used - // when gssapi-with-mic authentication is selected (RFC 4462 section 3). - GSSAPIWithMICConfig *GSSAPIWithMICConfig -} - -// AddHostKey adds a private key as a host key. If an existing host -// key exists with the same public key format, it is replaced. Each server -// config must have at least one host key. -func (s *ServerConfig) AddHostKey(key Signer) { - for i, k := range s.hostKeys { - if k.PublicKey().Type() == key.PublicKey().Type() { - s.hostKeys[i] = key - return - } - } - - s.hostKeys = append(s.hostKeys, key) -} - -// cachedPubKey contains the results of querying whether a public key is -// acceptable for a user. -type cachedPubKey struct { - user string - pubKeyData []byte - result error - perms *Permissions -} - -const maxCachedPubKeys = 16 - -// pubKeyCache caches tests for public keys. Since SSH clients -// will query whether a public key is acceptable before attempting to -// authenticate with it, we end up with duplicate queries for public -// key validity. The cache only applies to a single ServerConn. -type pubKeyCache struct { - keys []cachedPubKey -} - -// get returns the result for a given user/algo/key tuple. -func (c *pubKeyCache) get(user string, pubKeyData []byte) (cachedPubKey, bool) { - for _, k := range c.keys { - if k.user == user && bytes.Equal(k.pubKeyData, pubKeyData) { - return k, true - } - } - return cachedPubKey{}, false -} - -// add adds the given tuple to the cache. -func (c *pubKeyCache) add(candidate cachedPubKey) { - if len(c.keys) < maxCachedPubKeys { - c.keys = append(c.keys, candidate) - } -} - -// ServerConn is an authenticated SSH connection, as seen from the -// server -type ServerConn struct { - Conn - - // If the succeeding authentication callback returned a - // non-nil Permissions pointer, it is stored here. - Permissions *Permissions -} - -// NewServerConn starts a new SSH server with c as the underlying -// transport. It starts with a handshake and, if the handshake is -// unsuccessful, it closes the connection and returns an error. The -// Request and NewChannel channels must be serviced, or the connection -// will hang. -// -// The returned error may be of type *ServerAuthError for -// authentication errors. -func NewServerConn(c net.Conn, config *ServerConfig) (*ServerConn, <-chan NewChannel, <-chan *Request, error) { - fullConf := *config - fullConf.SetDefaults() - if fullConf.MaxAuthTries == 0 { - fullConf.MaxAuthTries = 6 - } - // Check if the config contains any unsupported key exchanges - for _, kex := range fullConf.KeyExchanges { - if _, ok := serverForbiddenKexAlgos[kex]; ok { - return nil, nil, nil, fmt.Errorf("ssh: unsupported key exchange %s for server", kex) - } - } - - s := &connection{ - sshConn: sshConn{conn: c}, - } - perms, err := s.serverHandshake(&fullConf) - if err != nil { - c.Close() - return nil, nil, nil, err - } - return &ServerConn{s, perms}, s.mux.incomingChannels, s.mux.incomingRequests, nil -} - -// signAndMarshal signs the data with the appropriate algorithm, -// and serializes the result in SSH wire format. algo is the negotiate -// algorithm and may be a certificate type. -func signAndMarshal(k AlgorithmSigner, rand io.Reader, data []byte, algo string) ([]byte, error) { - sig, err := k.SignWithAlgorithm(rand, data, underlyingAlgo(algo)) - if err != nil { - return nil, err - } - - return Marshal(sig), nil -} - -// handshake performs key exchange and user authentication. -func (s *connection) serverHandshake(config *ServerConfig) (*Permissions, error) { - if len(config.hostKeys) == 0 { - return nil, errors.New("ssh: server has no host keys") - } - - if !config.NoClientAuth && config.PasswordCallback == nil && config.PublicKeyCallback == nil && - config.KeyboardInteractiveCallback == nil && (config.GSSAPIWithMICConfig == nil || - config.GSSAPIWithMICConfig.AllowLogin == nil || config.GSSAPIWithMICConfig.Server == nil) { - return nil, errors.New("ssh: no authentication methods configured but NoClientAuth is also false") - } - - if config.ServerVersion != "" { - s.serverVersion = []byte(config.ServerVersion) - } else { - s.serverVersion = []byte(packageVersion) - } - var err error - s.clientVersion, err = exchangeVersions(s.sshConn.conn, s.serverVersion) - if err != nil { - return nil, err - } - - tr := newTransport(s.sshConn.conn, config.Rand, false /* not client */) - s.transport = newServerTransport(tr, s.clientVersion, s.serverVersion, config) - - if err := s.transport.waitSession(); err != nil { - return nil, err - } - - // We just did the key change, so the session ID is established. - s.sessionID = s.transport.getSessionID() - - var packet []byte - if packet, err = s.transport.readPacket(); err != nil { - return nil, err - } - - var serviceRequest serviceRequestMsg - if err = Unmarshal(packet, &serviceRequest); err != nil { - return nil, err - } - if serviceRequest.Service != serviceUserAuth { - return nil, errors.New("ssh: requested service '" + serviceRequest.Service + "' before authenticating") - } - serviceAccept := serviceAcceptMsg{ - Service: serviceUserAuth, - } - if err := s.transport.writePacket(Marshal(&serviceAccept)); err != nil { - return nil, err - } - - perms, err := s.serverAuthenticate(config) - if err != nil { - return nil, err - } - s.mux = newMux(s.transport) - return perms, err -} - -func isAcceptableAlgo(algo string) bool { - switch algo { - case KeyAlgoRSA, KeyAlgoRSASHA256, KeyAlgoRSASHA512, KeyAlgoDSA, KeyAlgoECDSA256, KeyAlgoECDSA384, KeyAlgoECDSA521, KeyAlgoSKECDSA256, KeyAlgoED25519, KeyAlgoSKED25519, - CertAlgoRSAv01, CertAlgoDSAv01, CertAlgoECDSA256v01, CertAlgoECDSA384v01, CertAlgoECDSA521v01, CertAlgoSKECDSA256v01, CertAlgoED25519v01, CertAlgoSKED25519v01: - return true - } - return false -} - -func checkSourceAddress(addr net.Addr, sourceAddrs string) error { - if addr == nil { - return errors.New("ssh: no address known for client, but source-address match required") - } - - tcpAddr, ok := addr.(*net.TCPAddr) - if !ok { - return fmt.Errorf("ssh: remote address %v is not an TCP address when checking source-address match", addr) - } - - for _, sourceAddr := range strings.Split(sourceAddrs, ",") { - if allowedIP := net.ParseIP(sourceAddr); allowedIP != nil { - if allowedIP.Equal(tcpAddr.IP) { - return nil - } - } else { - _, ipNet, err := net.ParseCIDR(sourceAddr) - if err != nil { - return fmt.Errorf("ssh: error parsing source-address restriction %q: %v", sourceAddr, err) - } - - if ipNet.Contains(tcpAddr.IP) { - return nil - } - } - } - - return fmt.Errorf("ssh: remote address %v is not allowed because of source-address restriction", addr) -} - -func gssExchangeToken(gssapiConfig *GSSAPIWithMICConfig, firstToken []byte, s *connection, - sessionID []byte, userAuthReq userAuthRequestMsg) (authErr error, perms *Permissions, err error) { - gssAPIServer := gssapiConfig.Server - defer gssAPIServer.DeleteSecContext() - var srcName string - for { - var ( - outToken []byte - needContinue bool - ) - outToken, srcName, needContinue, err = gssAPIServer.AcceptSecContext(firstToken) - if err != nil { - return err, nil, nil - } - if len(outToken) != 0 { - if err := s.transport.writePacket(Marshal(&userAuthGSSAPIToken{ - Token: outToken, - })); err != nil { - return nil, nil, err - } - } - if !needContinue { - break - } - packet, err := s.transport.readPacket() - if err != nil { - return nil, nil, err - } - userAuthGSSAPITokenReq := &userAuthGSSAPIToken{} - if err := Unmarshal(packet, userAuthGSSAPITokenReq); err != nil { - return nil, nil, err - } - } - packet, err := s.transport.readPacket() - if err != nil { - return nil, nil, err - } - userAuthGSSAPIMICReq := &userAuthGSSAPIMIC{} - if err := Unmarshal(packet, userAuthGSSAPIMICReq); err != nil { - return nil, nil, err - } - mic := buildMIC(string(sessionID), userAuthReq.User, userAuthReq.Service, userAuthReq.Method) - if err := gssAPIServer.VerifyMIC(mic, userAuthGSSAPIMICReq.MIC); err != nil { - return err, nil, nil - } - perms, authErr = gssapiConfig.AllowLogin(s, srcName) - return authErr, perms, nil -} - -// ServerAuthError represents server authentication errors and is -// sometimes returned by NewServerConn. It appends any authentication -// errors that may occur, and is returned if all of the authentication -// methods provided by the user failed to authenticate. -type ServerAuthError struct { - // Errors contains authentication errors returned by the authentication - // callback methods. The first entry is typically ErrNoAuth. - Errors []error -} - -func (l ServerAuthError) Error() string { - var errs []string - for _, err := range l.Errors { - errs = append(errs, err.Error()) - } - return "[" + strings.Join(errs, ", ") + "]" -} - -// ErrNoAuth is the error value returned if no -// authentication method has been passed yet. This happens as a normal -// part of the authentication loop, since the client first tries -// 'none' authentication to discover available methods. -// It is returned in ServerAuthError.Errors from NewServerConn. -var ErrNoAuth = errors.New("ssh: no auth passed yet") - -func (s *connection) serverAuthenticate(config *ServerConfig) (*Permissions, error) { - sessionID := s.transport.getSessionID() - var cache pubKeyCache - var perms *Permissions - - authFailures := 0 - var authErrs []error - var displayedBanner bool - -userAuthLoop: - for { - if authFailures >= config.MaxAuthTries && config.MaxAuthTries > 0 { - discMsg := &disconnectMsg{ - Reason: 2, - Message: "too many authentication failures", - } - - if err := s.transport.writePacket(Marshal(discMsg)); err != nil { - return nil, err - } - - return nil, discMsg - } - - var userAuthReq userAuthRequestMsg - if packet, err := s.transport.readPacket(); err != nil { - if err == io.EOF { - return nil, &ServerAuthError{Errors: authErrs} - } - return nil, err - } else if err = Unmarshal(packet, &userAuthReq); err != nil { - return nil, err - } - - if userAuthReq.Service != serviceSSH { - return nil, errors.New("ssh: client attempted to negotiate for unknown service: " + userAuthReq.Service) - } - - s.user = userAuthReq.User - - if !displayedBanner && config.BannerCallback != nil { - displayedBanner = true - msg := config.BannerCallback(s) - if msg != "" { - bannerMsg := &userAuthBannerMsg{ - Message: msg, - } - if err := s.transport.writePacket(Marshal(bannerMsg)); err != nil { - return nil, err - } - } - } - - perms = nil - authErr := ErrNoAuth - - switch userAuthReq.Method { - case "none": - if config.NoClientAuth { - authErr = nil - } - - // allow initial attempt of 'none' without penalty - if authFailures == 0 { - authFailures-- - } - case "password": - if config.PasswordCallback == nil { - authErr = errors.New("ssh: password auth not configured") - break - } - payload := userAuthReq.Payload - if len(payload) < 1 || payload[0] != 0 { - return nil, parseError(msgUserAuthRequest) - } - payload = payload[1:] - password, payload, ok := parseString(payload) - if !ok || len(payload) > 0 { - return nil, parseError(msgUserAuthRequest) - } - - perms, authErr = config.PasswordCallback(s, password) - case "keyboard-interactive": - if config.KeyboardInteractiveCallback == nil { - authErr = errors.New("ssh: keyboard-interactive auth not configured") - break - } - - prompter := &sshClientKeyboardInteractive{s} - perms, authErr = config.KeyboardInteractiveCallback(s, prompter.Challenge) - case "publickey": - if config.PublicKeyCallback == nil { - authErr = errors.New("ssh: publickey auth not configured") - break - } - payload := userAuthReq.Payload - if len(payload) < 1 { - return nil, parseError(msgUserAuthRequest) - } - isQuery := payload[0] == 0 - payload = payload[1:] - algoBytes, payload, ok := parseString(payload) - if !ok { - return nil, parseError(msgUserAuthRequest) - } - algo := string(algoBytes) - if !isAcceptableAlgo(algo) { - authErr = fmt.Errorf("ssh: algorithm %q not accepted", algo) - break - } - - pubKeyData, payload, ok := parseString(payload) - if !ok { - return nil, parseError(msgUserAuthRequest) - } - - pubKey, err := ParsePublicKey(pubKeyData) - if err != nil { - return nil, err - } - - candidate, ok := cache.get(s.user, pubKeyData) - if !ok { - candidate.user = s.user - candidate.pubKeyData = pubKeyData - candidate.perms, candidate.result = config.PublicKeyCallback(s, pubKey) - if candidate.result == nil && candidate.perms != nil && candidate.perms.CriticalOptions != nil && candidate.perms.CriticalOptions[sourceAddressCriticalOption] != "" { - candidate.result = checkSourceAddress( - s.RemoteAddr(), - candidate.perms.CriticalOptions[sourceAddressCriticalOption]) - } - cache.add(candidate) - } - - if isQuery { - // The client can query if the given public key - // would be okay. - - if len(payload) > 0 { - return nil, parseError(msgUserAuthRequest) - } - - if candidate.result == nil { - okMsg := userAuthPubKeyOkMsg{ - Algo: algo, - PubKey: pubKeyData, - } - if err = s.transport.writePacket(Marshal(&okMsg)); err != nil { - return nil, err - } - continue userAuthLoop - } - authErr = candidate.result - } else { - sig, payload, ok := parseSignature(payload) - if !ok || len(payload) > 0 { - return nil, parseError(msgUserAuthRequest) - } - - // Ensure the public key algo and signature algo - // are supported. Compare the private key - // algorithm name that corresponds to algo with - // sig.Format. This is usually the same, but - // for certs, the names differ. - if !isAcceptableAlgo(sig.Format) { - authErr = fmt.Errorf("ssh: algorithm %q not accepted", sig.Format) - break - } - if underlyingAlgo(algo) != sig.Format { - authErr = fmt.Errorf("ssh: signature %q not compatible with selected algorithm %q", sig.Format, algo) - break - } - - signedData := buildDataSignedForAuth(sessionID, userAuthReq, algo, pubKeyData) - - if err := pubKey.Verify(signedData, sig); err != nil { - return nil, err - } - - authErr = candidate.result - perms = candidate.perms - } - case "gssapi-with-mic": - if config.GSSAPIWithMICConfig == nil { - authErr = errors.New("ssh: gssapi-with-mic auth not configured") - break - } - gssapiConfig := config.GSSAPIWithMICConfig - userAuthRequestGSSAPI, err := parseGSSAPIPayload(userAuthReq.Payload) - if err != nil { - return nil, parseError(msgUserAuthRequest) - } - // OpenSSH supports Kerberos V5 mechanism only for GSS-API authentication. - if userAuthRequestGSSAPI.N == 0 { - authErr = fmt.Errorf("ssh: Mechanism negotiation is not supported") - break - } - var i uint32 - present := false - for i = 0; i < userAuthRequestGSSAPI.N; i++ { - if userAuthRequestGSSAPI.OIDS[i].Equal(krb5Mesh) { - present = true - break - } - } - if !present { - authErr = fmt.Errorf("ssh: GSSAPI authentication must use the Kerberos V5 mechanism") - break - } - // Initial server response, see RFC 4462 section 3.3. - if err := s.transport.writePacket(Marshal(&userAuthGSSAPIResponse{ - SupportMech: krb5OID, - })); err != nil { - return nil, err - } - // Exchange token, see RFC 4462 section 3.4. - packet, err := s.transport.readPacket() - if err != nil { - return nil, err - } - userAuthGSSAPITokenReq := &userAuthGSSAPIToken{} - if err := Unmarshal(packet, userAuthGSSAPITokenReq); err != nil { - return nil, err - } - authErr, perms, err = gssExchangeToken(gssapiConfig, userAuthGSSAPITokenReq.Token, s, sessionID, - userAuthReq) - if err != nil { - return nil, err - } - default: - authErr = fmt.Errorf("ssh: unknown method %q", userAuthReq.Method) - } - - authErrs = append(authErrs, authErr) - - if config.AuthLogCallback != nil { - config.AuthLogCallback(s, userAuthReq.Method, authErr) - } - - if authErr == nil { - break userAuthLoop - } - - authFailures++ - if config.MaxAuthTries > 0 && authFailures >= config.MaxAuthTries { - // If we have hit the max attempts, don't bother sending the - // final SSH_MSG_USERAUTH_FAILURE message, since there are - // no more authentication methods which can be attempted, - // and this message may cause the client to re-attempt - // authentication while we send the disconnect message. - // Continue, and trigger the disconnect at the start of - // the loop. - // - // The SSH specification is somewhat confusing about this, - // RFC 4252 Section 5.1 requires each authentication failure - // be responded to with a respective SSH_MSG_USERAUTH_FAILURE - // message, but Section 4 says the server should disconnect - // after some number of attempts, but it isn't explicit which - // message should take precedence (i.e. should there be a failure - // message than a disconnect message, or if we are going to - // disconnect, should we only send that message.) - // - // Either way, OpenSSH disconnects immediately after the last - // failed authnetication attempt, and given they are typically - // considered the golden implementation it seems reasonable - // to match that behavior. - continue - } - - var failureMsg userAuthFailureMsg - if config.PasswordCallback != nil { - failureMsg.Methods = append(failureMsg.Methods, "password") - } - if config.PublicKeyCallback != nil { - failureMsg.Methods = append(failureMsg.Methods, "publickey") - } - if config.KeyboardInteractiveCallback != nil { - failureMsg.Methods = append(failureMsg.Methods, "keyboard-interactive") - } - if config.GSSAPIWithMICConfig != nil && config.GSSAPIWithMICConfig.Server != nil && - config.GSSAPIWithMICConfig.AllowLogin != nil { - failureMsg.Methods = append(failureMsg.Methods, "gssapi-with-mic") - } - - if len(failureMsg.Methods) == 0 { - return nil, errors.New("ssh: no authentication methods configured but NoClientAuth is also false") - } - - if err := s.transport.writePacket(Marshal(&failureMsg)); err != nil { - return nil, err - } - } - - if err := s.transport.writePacket([]byte{msgUserAuthSuccess}); err != nil { - return nil, err - } - return perms, nil -} - -// sshClientKeyboardInteractive implements a ClientKeyboardInteractive by -// asking the client on the other side of a ServerConn. -type sshClientKeyboardInteractive struct { - *connection -} - -func (c *sshClientKeyboardInteractive) Challenge(name, instruction string, questions []string, echos []bool) (answers []string, err error) { - if len(questions) != len(echos) { - return nil, errors.New("ssh: echos and questions must have equal length") - } - - var prompts []byte - for i := range questions { - prompts = appendString(prompts, questions[i]) - prompts = appendBool(prompts, echos[i]) - } - - if err := c.transport.writePacket(Marshal(&userAuthInfoRequestMsg{ - Name: name, - Instruction: instruction, - NumPrompts: uint32(len(questions)), - Prompts: prompts, - })); err != nil { - return nil, err - } - - packet, err := c.transport.readPacket() - if err != nil { - return nil, err - } - if packet[0] != msgUserAuthInfoResponse { - return nil, unexpectedMessageError(msgUserAuthInfoResponse, packet[0]) - } - packet = packet[1:] - - n, packet, ok := parseUint32(packet) - if !ok || int(n) != len(questions) { - return nil, parseError(msgUserAuthInfoResponse) - } - - for i := uint32(0); i < n; i++ { - ans, rest, ok := parseString(packet) - if !ok { - return nil, parseError(msgUserAuthInfoResponse) - } - - answers = append(answers, string(ans)) - packet = rest - } - if len(packet) != 0 { - return nil, errors.New("ssh: junk at end of message") - } - - return answers, nil -} diff --git a/vendor/golang.org/x/crypto/ssh/session.go b/vendor/golang.org/x/crypto/ssh/session.go deleted file mode 100644 index eca31a2..0000000 --- a/vendor/golang.org/x/crypto/ssh/session.go +++ /dev/null @@ -1,648 +0,0 @@ -// Copyright 2011 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 ssh - -// Session implements an interactive session described in -// "RFC 4254, section 6". - -import ( - "bytes" - "encoding/binary" - "errors" - "fmt" - "io" - "io/ioutil" - "sync" -) - -type Signal string - -// POSIX signals as listed in RFC 4254 Section 6.10. -const ( - SIGABRT Signal = "ABRT" - SIGALRM Signal = "ALRM" - SIGFPE Signal = "FPE" - SIGHUP Signal = "HUP" - SIGILL Signal = "ILL" - SIGINT Signal = "INT" - SIGKILL Signal = "KILL" - SIGPIPE Signal = "PIPE" - SIGQUIT Signal = "QUIT" - SIGSEGV Signal = "SEGV" - SIGTERM Signal = "TERM" - SIGUSR1 Signal = "USR1" - SIGUSR2 Signal = "USR2" -) - -var signals = map[Signal]int{ - SIGABRT: 6, - SIGALRM: 14, - SIGFPE: 8, - SIGHUP: 1, - SIGILL: 4, - SIGINT: 2, - SIGKILL: 9, - SIGPIPE: 13, - SIGQUIT: 3, - SIGSEGV: 11, - SIGTERM: 15, -} - -type TerminalModes map[uint8]uint32 - -// POSIX terminal mode flags as listed in RFC 4254 Section 8. -const ( - tty_OP_END = 0 - VINTR = 1 - VQUIT = 2 - VERASE = 3 - VKILL = 4 - VEOF = 5 - VEOL = 6 - VEOL2 = 7 - VSTART = 8 - VSTOP = 9 - VSUSP = 10 - VDSUSP = 11 - VREPRINT = 12 - VWERASE = 13 - VLNEXT = 14 - VFLUSH = 15 - VSWTCH = 16 - VSTATUS = 17 - VDISCARD = 18 - IGNPAR = 30 - PARMRK = 31 - INPCK = 32 - ISTRIP = 33 - INLCR = 34 - IGNCR = 35 - ICRNL = 36 - IUCLC = 37 - IXON = 38 - IXANY = 39 - IXOFF = 40 - IMAXBEL = 41 - IUTF8 = 42 // RFC 8160 - ISIG = 50 - ICANON = 51 - XCASE = 52 - ECHO = 53 - ECHOE = 54 - ECHOK = 55 - ECHONL = 56 - NOFLSH = 57 - TOSTOP = 58 - IEXTEN = 59 - ECHOCTL = 60 - ECHOKE = 61 - PENDIN = 62 - OPOST = 70 - OLCUC = 71 - ONLCR = 72 - OCRNL = 73 - ONOCR = 74 - ONLRET = 75 - CS7 = 90 - CS8 = 91 - PARENB = 92 - PARODD = 93 - TTY_OP_ISPEED = 128 - TTY_OP_OSPEED = 129 -) - -// A Session represents a connection to a remote command or shell. -type Session struct { - // Stdin specifies the remote process's standard input. - // If Stdin is nil, the remote process reads from an empty - // bytes.Buffer. - Stdin io.Reader - - // Stdout and Stderr specify the remote process's standard - // output and error. - // - // If either is nil, Run connects the corresponding file - // descriptor to an instance of ioutil.Discard. There is a - // fixed amount of buffering that is shared for the two streams. - // If either blocks it may eventually cause the remote - // command to block. - Stdout io.Writer - Stderr io.Writer - - ch Channel // the channel backing this session - started bool // true once Start, Run or Shell is invoked. - copyFuncs []func() error - errors chan error // one send per copyFunc - - // true if pipe method is active - stdinpipe, stdoutpipe, stderrpipe bool - - // stdinPipeWriter is non-nil if StdinPipe has not been called - // and Stdin was specified by the user; it is the write end of - // a pipe connecting Session.Stdin to the stdin channel. - stdinPipeWriter io.WriteCloser - - exitStatus chan error -} - -// SendRequest sends an out-of-band channel request on the SSH channel -// underlying the session. -func (s *Session) SendRequest(name string, wantReply bool, payload []byte) (bool, error) { - return s.ch.SendRequest(name, wantReply, payload) -} - -func (s *Session) Close() error { - return s.ch.Close() -} - -// RFC 4254 Section 6.4. -type setenvRequest struct { - Name string - Value string -} - -// Setenv sets an environment variable that will be applied to any -// command executed by Shell or Run. -func (s *Session) Setenv(name, value string) error { - msg := setenvRequest{ - Name: name, - Value: value, - } - ok, err := s.ch.SendRequest("env", true, Marshal(&msg)) - if err == nil && !ok { - err = errors.New("ssh: setenv failed") - } - return err -} - -// RFC 4254 Section 6.2. -type ptyRequestMsg struct { - Term string - Columns uint32 - Rows uint32 - Width uint32 - Height uint32 - Modelist string -} - -// RequestPty requests the association of a pty with the session on the remote host. -func (s *Session) RequestPty(term string, h, w int, termmodes TerminalModes) error { - var tm []byte - for k, v := range termmodes { - kv := struct { - Key byte - Val uint32 - }{k, v} - - tm = append(tm, Marshal(&kv)...) - } - tm = append(tm, tty_OP_END) - req := ptyRequestMsg{ - Term: term, - Columns: uint32(w), - Rows: uint32(h), - Width: uint32(w * 8), - Height: uint32(h * 8), - Modelist: string(tm), - } - ok, err := s.ch.SendRequest("pty-req", true, Marshal(&req)) - if err == nil && !ok { - err = errors.New("ssh: pty-req failed") - } - return err -} - -// RFC 4254 Section 6.5. -type subsystemRequestMsg struct { - Subsystem string -} - -// RequestSubsystem requests the association of a subsystem with the session on the remote host. -// A subsystem is a predefined command that runs in the background when the ssh session is initiated -func (s *Session) RequestSubsystem(subsystem string) error { - msg := subsystemRequestMsg{ - Subsystem: subsystem, - } - ok, err := s.ch.SendRequest("subsystem", true, Marshal(&msg)) - if err == nil && !ok { - err = errors.New("ssh: subsystem request failed") - } - return err -} - -// RFC 4254 Section 6.7. -type ptyWindowChangeMsg struct { - Columns uint32 - Rows uint32 - Width uint32 - Height uint32 -} - -// WindowChange informs the remote host about a terminal window dimension change to h rows and w columns. -func (s *Session) WindowChange(h, w int) error { - req := ptyWindowChangeMsg{ - Columns: uint32(w), - Rows: uint32(h), - Width: uint32(w * 8), - Height: uint32(h * 8), - } - _, err := s.ch.SendRequest("window-change", false, Marshal(&req)) - return err -} - -// RFC 4254 Section 6.9. -type signalMsg struct { - Signal string -} - -// Signal sends the given signal to the remote process. -// sig is one of the SIG* constants. -func (s *Session) Signal(sig Signal) error { - msg := signalMsg{ - Signal: string(sig), - } - - _, err := s.ch.SendRequest("signal", false, Marshal(&msg)) - return err -} - -// RFC 4254 Section 6.5. -type execMsg struct { - Command string -} - -// Start runs cmd on the remote host. Typically, the remote -// server passes cmd to the shell for interpretation. -// A Session only accepts one call to Run, Start or Shell. -func (s *Session) Start(cmd string) error { - if s.started { - return errors.New("ssh: session already started") - } - req := execMsg{ - Command: cmd, - } - - ok, err := s.ch.SendRequest("exec", true, Marshal(&req)) - if err == nil && !ok { - err = fmt.Errorf("ssh: command %v failed", cmd) - } - if err != nil { - return err - } - return s.start() -} - -// Run runs cmd on the remote host. Typically, the remote -// server passes cmd to the shell for interpretation. -// A Session only accepts one call to Run, Start, Shell, Output, -// or CombinedOutput. -// -// The returned error is nil if the command runs, has no problems -// copying stdin, stdout, and stderr, and exits with a zero exit -// status. -// -// If the remote server does not send an exit status, an error of type -// *ExitMissingError is returned. If the command completes -// unsuccessfully or is interrupted by a signal, the error is of type -// *ExitError. Other error types may be returned for I/O problems. -func (s *Session) Run(cmd string) error { - err := s.Start(cmd) - if err != nil { - return err - } - return s.Wait() -} - -// Output runs cmd on the remote host and returns its standard output. -func (s *Session) Output(cmd string) ([]byte, error) { - if s.Stdout != nil { - return nil, errors.New("ssh: Stdout already set") - } - var b bytes.Buffer - s.Stdout = &b - err := s.Run(cmd) - return b.Bytes(), err -} - -type singleWriter struct { - b bytes.Buffer - mu sync.Mutex -} - -func (w *singleWriter) Write(p []byte) (int, error) { - w.mu.Lock() - defer w.mu.Unlock() - return w.b.Write(p) -} - -// CombinedOutput runs cmd on the remote host and returns its combined -// standard output and standard error. -func (s *Session) CombinedOutput(cmd string) ([]byte, error) { - if s.Stdout != nil { - return nil, errors.New("ssh: Stdout already set") - } - if s.Stderr != nil { - return nil, errors.New("ssh: Stderr already set") - } - var b singleWriter - s.Stdout = &b - s.Stderr = &b - err := s.Run(cmd) - return b.b.Bytes(), err -} - -// Shell starts a login shell on the remote host. A Session only -// accepts one call to Run, Start, Shell, Output, or CombinedOutput. -func (s *Session) Shell() error { - if s.started { - return errors.New("ssh: session already started") - } - - ok, err := s.ch.SendRequest("shell", true, nil) - if err == nil && !ok { - return errors.New("ssh: could not start shell") - } - if err != nil { - return err - } - return s.start() -} - -func (s *Session) start() error { - s.started = true - - type F func(*Session) - for _, setupFd := range []F{(*Session).stdin, (*Session).stdout, (*Session).stderr} { - setupFd(s) - } - - s.errors = make(chan error, len(s.copyFuncs)) - for _, fn := range s.copyFuncs { - go func(fn func() error) { - s.errors <- fn() - }(fn) - } - return nil -} - -// Wait waits for the remote command to exit. -// -// The returned error is nil if the command runs, has no problems -// copying stdin, stdout, and stderr, and exits with a zero exit -// status. -// -// If the remote server does not send an exit status, an error of type -// *ExitMissingError is returned. If the command completes -// unsuccessfully or is interrupted by a signal, the error is of type -// *ExitError. Other error types may be returned for I/O problems. -func (s *Session) Wait() error { - if !s.started { - return errors.New("ssh: session not started") - } - waitErr := <-s.exitStatus - - if s.stdinPipeWriter != nil { - s.stdinPipeWriter.Close() - } - var copyError error - for range s.copyFuncs { - if err := <-s.errors; err != nil && copyError == nil { - copyError = err - } - } - if waitErr != nil { - return waitErr - } - return copyError -} - -func (s *Session) wait(reqs <-chan *Request) error { - wm := Waitmsg{status: -1} - // Wait for msg channel to be closed before returning. - for msg := range reqs { - switch msg.Type { - case "exit-status": - wm.status = int(binary.BigEndian.Uint32(msg.Payload)) - case "exit-signal": - var sigval struct { - Signal string - CoreDumped bool - Error string - Lang string - } - if err := Unmarshal(msg.Payload, &sigval); err != nil { - return err - } - - // Must sanitize strings? - wm.signal = sigval.Signal - wm.msg = sigval.Error - wm.lang = sigval.Lang - default: - // This handles keepalives and matches - // OpenSSH's behaviour. - if msg.WantReply { - msg.Reply(false, nil) - } - } - } - if wm.status == 0 { - return nil - } - if wm.status == -1 { - // exit-status was never sent from server - if wm.signal == "" { - // signal was not sent either. RFC 4254 - // section 6.10 recommends against this - // behavior, but it is allowed, so we let - // clients handle it. - return &ExitMissingError{} - } - wm.status = 128 - if _, ok := signals[Signal(wm.signal)]; ok { - wm.status += signals[Signal(wm.signal)] - } - } - - return &ExitError{wm} -} - -// ExitMissingError is returned if a session is torn down cleanly, but -// the server sends no confirmation of the exit status. -type ExitMissingError struct{} - -func (e *ExitMissingError) Error() string { - return "wait: remote command exited without exit status or exit signal" -} - -func (s *Session) stdin() { - if s.stdinpipe { - return - } - var stdin io.Reader - if s.Stdin == nil { - stdin = new(bytes.Buffer) - } else { - r, w := io.Pipe() - go func() { - _, err := io.Copy(w, s.Stdin) - w.CloseWithError(err) - }() - stdin, s.stdinPipeWriter = r, w - } - s.copyFuncs = append(s.copyFuncs, func() error { - _, err := io.Copy(s.ch, stdin) - if err1 := s.ch.CloseWrite(); err == nil && err1 != io.EOF { - err = err1 - } - return err - }) -} - -func (s *Session) stdout() { - if s.stdoutpipe { - return - } - if s.Stdout == nil { - s.Stdout = ioutil.Discard - } - s.copyFuncs = append(s.copyFuncs, func() error { - _, err := io.Copy(s.Stdout, s.ch) - return err - }) -} - -func (s *Session) stderr() { - if s.stderrpipe { - return - } - if s.Stderr == nil { - s.Stderr = ioutil.Discard - } - s.copyFuncs = append(s.copyFuncs, func() error { - _, err := io.Copy(s.Stderr, s.ch.Stderr()) - return err - }) -} - -// sessionStdin reroutes Close to CloseWrite. -type sessionStdin struct { - io.Writer - ch Channel -} - -func (s *sessionStdin) Close() error { - return s.ch.CloseWrite() -} - -// StdinPipe returns a pipe that will be connected to the -// remote command's standard input when the command starts. -func (s *Session) StdinPipe() (io.WriteCloser, error) { - if s.Stdin != nil { - return nil, errors.New("ssh: Stdin already set") - } - if s.started { - return nil, errors.New("ssh: StdinPipe after process started") - } - s.stdinpipe = true - return &sessionStdin{s.ch, s.ch}, nil -} - -// StdoutPipe returns a pipe that will be connected to the -// remote command's standard output when the command starts. -// There is a fixed amount of buffering that is shared between -// stdout and stderr streams. If the StdoutPipe reader is -// not serviced fast enough it may eventually cause the -// remote command to block. -func (s *Session) StdoutPipe() (io.Reader, error) { - if s.Stdout != nil { - return nil, errors.New("ssh: Stdout already set") - } - if s.started { - return nil, errors.New("ssh: StdoutPipe after process started") - } - s.stdoutpipe = true - return s.ch, nil -} - -// StderrPipe returns a pipe that will be connected to the -// remote command's standard error when the command starts. -// There is a fixed amount of buffering that is shared between -// stdout and stderr streams. If the StderrPipe reader is -// not serviced fast enough it may eventually cause the -// remote command to block. -func (s *Session) StderrPipe() (io.Reader, error) { - if s.Stderr != nil { - return nil, errors.New("ssh: Stderr already set") - } - if s.started { - return nil, errors.New("ssh: StderrPipe after process started") - } - s.stderrpipe = true - return s.ch.Stderr(), nil -} - -// newSession returns a new interactive session on the remote host. -func newSession(ch Channel, reqs <-chan *Request) (*Session, error) { - s := &Session{ - ch: ch, - } - s.exitStatus = make(chan error, 1) - go func() { - s.exitStatus <- s.wait(reqs) - }() - - return s, nil -} - -// An ExitError reports unsuccessful completion of a remote command. -type ExitError struct { - Waitmsg -} - -func (e *ExitError) Error() string { - return e.Waitmsg.String() -} - -// Waitmsg stores the information about an exited remote command -// as reported by Wait. -type Waitmsg struct { - status int - signal string - msg string - lang string -} - -// ExitStatus returns the exit status of the remote command. -func (w Waitmsg) ExitStatus() int { - return w.status -} - -// Signal returns the exit signal of the remote command if -// it was terminated violently. -func (w Waitmsg) Signal() string { - return w.signal -} - -// Msg returns the exit message given by the remote command -func (w Waitmsg) Msg() string { - return w.msg -} - -// Lang returns the language tag. See RFC 3066 -func (w Waitmsg) Lang() string { - return w.lang -} - -func (w Waitmsg) String() string { - str := fmt.Sprintf("Process exited with status %v", w.status) - if w.signal != "" { - str += fmt.Sprintf(" from signal %v", w.signal) - } - if w.msg != "" { - str += fmt.Sprintf(". Reason was: %v", w.msg) - } - return str -} diff --git a/vendor/golang.org/x/crypto/ssh/ssh_gss.go b/vendor/golang.org/x/crypto/ssh/ssh_gss.go deleted file mode 100644 index 24bd7c8..0000000 --- a/vendor/golang.org/x/crypto/ssh/ssh_gss.go +++ /dev/null @@ -1,139 +0,0 @@ -// Copyright 2011 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 ssh - -import ( - "encoding/asn1" - "errors" -) - -var krb5OID []byte - -func init() { - krb5OID, _ = asn1.Marshal(krb5Mesh) -} - -// GSSAPIClient provides the API to plug-in GSSAPI authentication for client logins. -type GSSAPIClient interface { - // InitSecContext initiates the establishment of a security context for GSS-API between the - // ssh client and ssh server. Initially the token parameter should be specified as nil. - // The routine may return a outputToken which should be transferred to - // the ssh server, where the ssh server will present it to - // AcceptSecContext. If no token need be sent, InitSecContext will indicate this by setting - // needContinue to false. To complete the context - // establishment, one or more reply tokens may be required from the ssh - // server;if so, InitSecContext will return a needContinue which is true. - // In this case, InitSecContext should be called again when the - // reply token is received from the ssh server, passing the reply - // token to InitSecContext via the token parameters. - // See RFC 2743 section 2.2.1 and RFC 4462 section 3.4. - InitSecContext(target string, token []byte, isGSSDelegCreds bool) (outputToken []byte, needContinue bool, err error) - // GetMIC generates a cryptographic MIC for the SSH2 message, and places - // the MIC in a token for transfer to the ssh server. - // The contents of the MIC field are obtained by calling GSS_GetMIC() - // over the following, using the GSS-API context that was just - // established: - // string session identifier - // byte SSH_MSG_USERAUTH_REQUEST - // string user name - // string service - // string "gssapi-with-mic" - // See RFC 2743 section 2.3.1 and RFC 4462 3.5. - GetMIC(micFiled []byte) ([]byte, error) - // Whenever possible, it should be possible for - // DeleteSecContext() calls to be successfully processed even - // if other calls cannot succeed, thereby enabling context-related - // resources to be released. - // In addition to deleting established security contexts, - // gss_delete_sec_context must also be able to delete "half-built" - // security contexts resulting from an incomplete sequence of - // InitSecContext()/AcceptSecContext() calls. - // See RFC 2743 section 2.2.3. - DeleteSecContext() error -} - -// GSSAPIServer provides the API to plug in GSSAPI authentication for server logins. -type GSSAPIServer interface { - // AcceptSecContext allows a remotely initiated security context between the application - // and a remote peer to be established by the ssh client. The routine may return a - // outputToken which should be transferred to the ssh client, - // where the ssh client will present it to InitSecContext. - // If no token need be sent, AcceptSecContext will indicate this - // by setting the needContinue to false. To - // complete the context establishment, one or more reply tokens may be - // required from the ssh client. if so, AcceptSecContext - // will return a needContinue which is true, in which case it - // should be called again when the reply token is received from the ssh - // client, passing the token to AcceptSecContext via the - // token parameters. - // The srcName return value is the authenticated username. - // See RFC 2743 section 2.2.2 and RFC 4462 section 3.4. - AcceptSecContext(token []byte) (outputToken []byte, srcName string, needContinue bool, err error) - // VerifyMIC verifies that a cryptographic MIC, contained in the token parameter, - // fits the supplied message is received from the ssh client. - // See RFC 2743 section 2.3.2. - VerifyMIC(micField []byte, micToken []byte) error - // Whenever possible, it should be possible for - // DeleteSecContext() calls to be successfully processed even - // if other calls cannot succeed, thereby enabling context-related - // resources to be released. - // In addition to deleting established security contexts, - // gss_delete_sec_context must also be able to delete "half-built" - // security contexts resulting from an incomplete sequence of - // InitSecContext()/AcceptSecContext() calls. - // See RFC 2743 section 2.2.3. - DeleteSecContext() error -} - -var ( - // OpenSSH supports Kerberos V5 mechanism only for GSS-API authentication, - // so we also support the krb5 mechanism only. - // See RFC 1964 section 1. - krb5Mesh = asn1.ObjectIdentifier{1, 2, 840, 113554, 1, 2, 2} -) - -// The GSS-API authentication method is initiated when the client sends an SSH_MSG_USERAUTH_REQUEST -// See RFC 4462 section 3.2. -type userAuthRequestGSSAPI struct { - N uint32 - OIDS []asn1.ObjectIdentifier -} - -func parseGSSAPIPayload(payload []byte) (*userAuthRequestGSSAPI, error) { - n, rest, ok := parseUint32(payload) - if !ok { - return nil, errors.New("parse uint32 failed") - } - s := &userAuthRequestGSSAPI{ - N: n, - OIDS: make([]asn1.ObjectIdentifier, n), - } - for i := 0; i < int(n); i++ { - var ( - desiredMech []byte - err error - ) - desiredMech, rest, ok = parseString(rest) - if !ok { - return nil, errors.New("parse string failed") - } - if rest, err = asn1.Unmarshal(desiredMech, &s.OIDS[i]); err != nil { - return nil, err - } - - } - return s, nil -} - -// See RFC 4462 section 3.6. -func buildMIC(sessionID string, username string, service string, authMethod string) []byte { - out := make([]byte, 0, 0) - out = appendString(out, sessionID) - out = append(out, msgUserAuthRequest) - out = appendString(out, username) - out = appendString(out, service) - out = appendString(out, authMethod) - return out -} diff --git a/vendor/golang.org/x/crypto/ssh/streamlocal.go b/vendor/golang.org/x/crypto/ssh/streamlocal.go deleted file mode 100644 index b171b33..0000000 --- a/vendor/golang.org/x/crypto/ssh/streamlocal.go +++ /dev/null @@ -1,116 +0,0 @@ -package ssh - -import ( - "errors" - "io" - "net" -) - -// streamLocalChannelOpenDirectMsg is a struct used for SSH_MSG_CHANNEL_OPEN message -// with "direct-streamlocal@openssh.com" string. -// -// See openssh-portable/PROTOCOL, section 2.4. connection: Unix domain socket forwarding -// https://github.com/openssh/openssh-portable/blob/master/PROTOCOL#L235 -type streamLocalChannelOpenDirectMsg struct { - socketPath string - reserved0 string - reserved1 uint32 -} - -// forwardedStreamLocalPayload is a struct used for SSH_MSG_CHANNEL_OPEN message -// with "forwarded-streamlocal@openssh.com" string. -type forwardedStreamLocalPayload struct { - SocketPath string - Reserved0 string -} - -// streamLocalChannelForwardMsg is a struct used for SSH2_MSG_GLOBAL_REQUEST message -// with "streamlocal-forward@openssh.com"/"cancel-streamlocal-forward@openssh.com" string. -type streamLocalChannelForwardMsg struct { - socketPath string -} - -// ListenUnix is similar to ListenTCP but uses a Unix domain socket. -func (c *Client) ListenUnix(socketPath string) (net.Listener, error) { - c.handleForwardsOnce.Do(c.handleForwards) - m := streamLocalChannelForwardMsg{ - socketPath, - } - // send message - ok, _, err := c.SendRequest("streamlocal-forward@openssh.com", true, Marshal(&m)) - if err != nil { - return nil, err - } - if !ok { - return nil, errors.New("ssh: streamlocal-forward@openssh.com request denied by peer") - } - ch := c.forwards.add(&net.UnixAddr{Name: socketPath, Net: "unix"}) - - return &unixListener{socketPath, c, ch}, nil -} - -func (c *Client) dialStreamLocal(socketPath string) (Channel, error) { - msg := streamLocalChannelOpenDirectMsg{ - socketPath: socketPath, - } - ch, in, err := c.OpenChannel("direct-streamlocal@openssh.com", Marshal(&msg)) - if err != nil { - return nil, err - } - go DiscardRequests(in) - return ch, err -} - -type unixListener struct { - socketPath string - - conn *Client - in <-chan forward -} - -// Accept waits for and returns the next connection to the listener. -func (l *unixListener) Accept() (net.Conn, error) { - s, ok := <-l.in - if !ok { - return nil, io.EOF - } - ch, incoming, err := s.newCh.Accept() - if err != nil { - return nil, err - } - go DiscardRequests(incoming) - - return &chanConn{ - Channel: ch, - laddr: &net.UnixAddr{ - Name: l.socketPath, - Net: "unix", - }, - raddr: &net.UnixAddr{ - Name: "@", - Net: "unix", - }, - }, nil -} - -// Close closes the listener. -func (l *unixListener) Close() error { - // this also closes the listener. - l.conn.forwards.remove(&net.UnixAddr{Name: l.socketPath, Net: "unix"}) - m := streamLocalChannelForwardMsg{ - l.socketPath, - } - ok, _, err := l.conn.SendRequest("cancel-streamlocal-forward@openssh.com", true, Marshal(&m)) - if err == nil && !ok { - err = errors.New("ssh: cancel-streamlocal-forward@openssh.com failed") - } - return err -} - -// Addr returns the listener's network address. -func (l *unixListener) Addr() net.Addr { - return &net.UnixAddr{ - Name: l.socketPath, - Net: "unix", - } -} diff --git a/vendor/golang.org/x/crypto/ssh/tcpip.go b/vendor/golang.org/x/crypto/ssh/tcpip.go deleted file mode 100644 index 80d35f5..0000000 --- a/vendor/golang.org/x/crypto/ssh/tcpip.go +++ /dev/null @@ -1,474 +0,0 @@ -// Copyright 2011 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 ssh - -import ( - "errors" - "fmt" - "io" - "math/rand" - "net" - "strconv" - "strings" - "sync" - "time" -) - -// Listen requests the remote peer open a listening socket on -// addr. Incoming connections will be available by calling Accept on -// the returned net.Listener. The listener must be serviced, or the -// SSH connection may hang. -// N must be "tcp", "tcp4", "tcp6", or "unix". -func (c *Client) Listen(n, addr string) (net.Listener, error) { - switch n { - case "tcp", "tcp4", "tcp6": - laddr, err := net.ResolveTCPAddr(n, addr) - if err != nil { - return nil, err - } - return c.ListenTCP(laddr) - case "unix": - return c.ListenUnix(addr) - default: - return nil, fmt.Errorf("ssh: unsupported protocol: %s", n) - } -} - -// Automatic port allocation is broken with OpenSSH before 6.0. See -// also https://bugzilla.mindrot.org/show_bug.cgi?id=2017. In -// particular, OpenSSH 5.9 sends a channelOpenMsg with port number 0, -// rather than the actual port number. This means you can never open -// two different listeners with auto allocated ports. We work around -// this by trying explicit ports until we succeed. - -const openSSHPrefix = "OpenSSH_" - -var portRandomizer = rand.New(rand.NewSource(time.Now().UnixNano())) - -// isBrokenOpenSSHVersion returns true if the given version string -// specifies a version of OpenSSH that is known to have a bug in port -// forwarding. -func isBrokenOpenSSHVersion(versionStr string) bool { - i := strings.Index(versionStr, openSSHPrefix) - if i < 0 { - return false - } - i += len(openSSHPrefix) - j := i - for ; j < len(versionStr); j++ { - if versionStr[j] < '0' || versionStr[j] > '9' { - break - } - } - version, _ := strconv.Atoi(versionStr[i:j]) - return version < 6 -} - -// autoPortListenWorkaround simulates automatic port allocation by -// trying random ports repeatedly. -func (c *Client) autoPortListenWorkaround(laddr *net.TCPAddr) (net.Listener, error) { - var sshListener net.Listener - var err error - const tries = 10 - for i := 0; i < tries; i++ { - addr := *laddr - addr.Port = 1024 + portRandomizer.Intn(60000) - sshListener, err = c.ListenTCP(&addr) - if err == nil { - laddr.Port = addr.Port - return sshListener, err - } - } - return nil, fmt.Errorf("ssh: listen on random port failed after %d tries: %v", tries, err) -} - -// RFC 4254 7.1 -type channelForwardMsg struct { - addr string - rport uint32 -} - -// handleForwards starts goroutines handling forwarded connections. -// It's called on first use by (*Client).ListenTCP to not launch -// goroutines until needed. -func (c *Client) handleForwards() { - go c.forwards.handleChannels(c.HandleChannelOpen("forwarded-tcpip")) - go c.forwards.handleChannels(c.HandleChannelOpen("forwarded-streamlocal@openssh.com")) -} - -// ListenTCP requests the remote peer open a listening socket -// on laddr. Incoming connections will be available by calling -// Accept on the returned net.Listener. -func (c *Client) ListenTCP(laddr *net.TCPAddr) (net.Listener, error) { - c.handleForwardsOnce.Do(c.handleForwards) - if laddr.Port == 0 && isBrokenOpenSSHVersion(string(c.ServerVersion())) { - return c.autoPortListenWorkaround(laddr) - } - - m := channelForwardMsg{ - laddr.IP.String(), - uint32(laddr.Port), - } - // send message - ok, resp, err := c.SendRequest("tcpip-forward", true, Marshal(&m)) - if err != nil { - return nil, err - } - if !ok { - return nil, errors.New("ssh: tcpip-forward request denied by peer") - } - - // If the original port was 0, then the remote side will - // supply a real port number in the response. - if laddr.Port == 0 { - var p struct { - Port uint32 - } - if err := Unmarshal(resp, &p); err != nil { - return nil, err - } - laddr.Port = int(p.Port) - } - - // Register this forward, using the port number we obtained. - ch := c.forwards.add(laddr) - - return &tcpListener{laddr, c, ch}, nil -} - -// forwardList stores a mapping between remote -// forward requests and the tcpListeners. -type forwardList struct { - sync.Mutex - entries []forwardEntry -} - -// forwardEntry represents an established mapping of a laddr on a -// remote ssh server to a channel connected to a tcpListener. -type forwardEntry struct { - laddr net.Addr - c chan forward -} - -// forward represents an incoming forwarded tcpip connection. The -// arguments to add/remove/lookup should be address as specified in -// the original forward-request. -type forward struct { - newCh NewChannel // the ssh client channel underlying this forward - raddr net.Addr // the raddr of the incoming connection -} - -func (l *forwardList) add(addr net.Addr) chan forward { - l.Lock() - defer l.Unlock() - f := forwardEntry{ - laddr: addr, - c: make(chan forward, 1), - } - l.entries = append(l.entries, f) - return f.c -} - -// See RFC 4254, section 7.2 -type forwardedTCPPayload struct { - Addr string - Port uint32 - OriginAddr string - OriginPort uint32 -} - -// parseTCPAddr parses the originating address from the remote into a *net.TCPAddr. -func parseTCPAddr(addr string, port uint32) (*net.TCPAddr, error) { - if port == 0 || port > 65535 { - return nil, fmt.Errorf("ssh: port number out of range: %d", port) - } - ip := net.ParseIP(string(addr)) - if ip == nil { - return nil, fmt.Errorf("ssh: cannot parse IP address %q", addr) - } - return &net.TCPAddr{IP: ip, Port: int(port)}, nil -} - -func (l *forwardList) handleChannels(in <-chan NewChannel) { - for ch := range in { - var ( - laddr net.Addr - raddr net.Addr - err error - ) - switch channelType := ch.ChannelType(); channelType { - case "forwarded-tcpip": - var payload forwardedTCPPayload - if err = Unmarshal(ch.ExtraData(), &payload); err != nil { - ch.Reject(ConnectionFailed, "could not parse forwarded-tcpip payload: "+err.Error()) - continue - } - - // RFC 4254 section 7.2 specifies that incoming - // addresses should list the address, in string - // format. It is implied that this should be an IP - // address, as it would be impossible to connect to it - // otherwise. - laddr, err = parseTCPAddr(payload.Addr, payload.Port) - if err != nil { - ch.Reject(ConnectionFailed, err.Error()) - continue - } - raddr, err = parseTCPAddr(payload.OriginAddr, payload.OriginPort) - if err != nil { - ch.Reject(ConnectionFailed, err.Error()) - continue - } - - case "forwarded-streamlocal@openssh.com": - var payload forwardedStreamLocalPayload - if err = Unmarshal(ch.ExtraData(), &payload); err != nil { - ch.Reject(ConnectionFailed, "could not parse forwarded-streamlocal@openssh.com payload: "+err.Error()) - continue - } - laddr = &net.UnixAddr{ - Name: payload.SocketPath, - Net: "unix", - } - raddr = &net.UnixAddr{ - Name: "@", - Net: "unix", - } - default: - panic(fmt.Errorf("ssh: unknown channel type %s", channelType)) - } - if ok := l.forward(laddr, raddr, ch); !ok { - // Section 7.2, implementations MUST reject spurious incoming - // connections. - ch.Reject(Prohibited, "no forward for address") - continue - } - - } -} - -// remove removes the forward entry, and the channel feeding its -// listener. -func (l *forwardList) remove(addr net.Addr) { - l.Lock() - defer l.Unlock() - for i, f := range l.entries { - if addr.Network() == f.laddr.Network() && addr.String() == f.laddr.String() { - l.entries = append(l.entries[:i], l.entries[i+1:]...) - close(f.c) - return - } - } -} - -// closeAll closes and clears all forwards. -func (l *forwardList) closeAll() { - l.Lock() - defer l.Unlock() - for _, f := range l.entries { - close(f.c) - } - l.entries = nil -} - -func (l *forwardList) forward(laddr, raddr net.Addr, ch NewChannel) bool { - l.Lock() - defer l.Unlock() - for _, f := range l.entries { - if laddr.Network() == f.laddr.Network() && laddr.String() == f.laddr.String() { - f.c <- forward{newCh: ch, raddr: raddr} - return true - } - } - return false -} - -type tcpListener struct { - laddr *net.TCPAddr - - conn *Client - in <-chan forward -} - -// Accept waits for and returns the next connection to the listener. -func (l *tcpListener) Accept() (net.Conn, error) { - s, ok := <-l.in - if !ok { - return nil, io.EOF - } - ch, incoming, err := s.newCh.Accept() - if err != nil { - return nil, err - } - go DiscardRequests(incoming) - - return &chanConn{ - Channel: ch, - laddr: l.laddr, - raddr: s.raddr, - }, nil -} - -// Close closes the listener. -func (l *tcpListener) Close() error { - m := channelForwardMsg{ - l.laddr.IP.String(), - uint32(l.laddr.Port), - } - - // this also closes the listener. - l.conn.forwards.remove(l.laddr) - ok, _, err := l.conn.SendRequest("cancel-tcpip-forward", true, Marshal(&m)) - if err == nil && !ok { - err = errors.New("ssh: cancel-tcpip-forward failed") - } - return err -} - -// Addr returns the listener's network address. -func (l *tcpListener) Addr() net.Addr { - return l.laddr -} - -// Dial initiates a connection to the addr from the remote host. -// The resulting connection has a zero LocalAddr() and RemoteAddr(). -func (c *Client) Dial(n, addr string) (net.Conn, error) { - var ch Channel - switch n { - case "tcp", "tcp4", "tcp6": - // Parse the address into host and numeric port. - host, portString, err := net.SplitHostPort(addr) - if err != nil { - return nil, err - } - port, err := strconv.ParseUint(portString, 10, 16) - if err != nil { - return nil, err - } - ch, err = c.dial(net.IPv4zero.String(), 0, host, int(port)) - if err != nil { - return nil, err - } - // Use a zero address for local and remote address. - zeroAddr := &net.TCPAddr{ - IP: net.IPv4zero, - Port: 0, - } - return &chanConn{ - Channel: ch, - laddr: zeroAddr, - raddr: zeroAddr, - }, nil - case "unix": - var err error - ch, err = c.dialStreamLocal(addr) - if err != nil { - return nil, err - } - return &chanConn{ - Channel: ch, - laddr: &net.UnixAddr{ - Name: "@", - Net: "unix", - }, - raddr: &net.UnixAddr{ - Name: addr, - Net: "unix", - }, - }, nil - default: - return nil, fmt.Errorf("ssh: unsupported protocol: %s", n) - } -} - -// DialTCP connects to the remote address raddr on the network net, -// which must be "tcp", "tcp4", or "tcp6". If laddr is not nil, it is used -// as the local address for the connection. -func (c *Client) DialTCP(n string, laddr, raddr *net.TCPAddr) (net.Conn, error) { - if laddr == nil { - laddr = &net.TCPAddr{ - IP: net.IPv4zero, - Port: 0, - } - } - ch, err := c.dial(laddr.IP.String(), laddr.Port, raddr.IP.String(), raddr.Port) - if err != nil { - return nil, err - } - return &chanConn{ - Channel: ch, - laddr: laddr, - raddr: raddr, - }, nil -} - -// RFC 4254 7.2 -type channelOpenDirectMsg struct { - raddr string - rport uint32 - laddr string - lport uint32 -} - -func (c *Client) dial(laddr string, lport int, raddr string, rport int) (Channel, error) { - msg := channelOpenDirectMsg{ - raddr: raddr, - rport: uint32(rport), - laddr: laddr, - lport: uint32(lport), - } - ch, in, err := c.OpenChannel("direct-tcpip", Marshal(&msg)) - if err != nil { - return nil, err - } - go DiscardRequests(in) - return ch, err -} - -type tcpChan struct { - Channel // the backing channel -} - -// chanConn fulfills the net.Conn interface without -// the tcpChan having to hold laddr or raddr directly. -type chanConn struct { - Channel - laddr, raddr net.Addr -} - -// LocalAddr returns the local network address. -func (t *chanConn) LocalAddr() net.Addr { - return t.laddr -} - -// RemoteAddr returns the remote network address. -func (t *chanConn) RemoteAddr() net.Addr { - return t.raddr -} - -// SetDeadline sets the read and write deadlines associated -// with the connection. -func (t *chanConn) SetDeadline(deadline time.Time) error { - if err := t.SetReadDeadline(deadline); err != nil { - return err - } - return t.SetWriteDeadline(deadline) -} - -// SetReadDeadline sets the read deadline. -// A zero value for t means Read will not time out. -// After the deadline, the error from Read will implement net.Error -// with Timeout() == true. -func (t *chanConn) SetReadDeadline(deadline time.Time) error { - // for compatibility with previous version, - // the error message contains "tcpChan" - return errors.New("ssh: tcpChan: deadline not supported") -} - -// SetWriteDeadline exists to satisfy the net.Conn interface -// but is not implemented by this type. It always returns an error. -func (t *chanConn) SetWriteDeadline(deadline time.Time) error { - return errors.New("ssh: tcpChan: deadline not supported") -} diff --git a/vendor/golang.org/x/crypto/ssh/transport.go b/vendor/golang.org/x/crypto/ssh/transport.go deleted file mode 100644 index acf5a21..0000000 --- a/vendor/golang.org/x/crypto/ssh/transport.go +++ /dev/null @@ -1,357 +0,0 @@ -// Copyright 2011 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 ssh - -import ( - "bufio" - "bytes" - "errors" - "io" - "log" -) - -// debugTransport if set, will print packet types as they go over the -// wire. No message decoding is done, to minimize the impact on timing. -const debugTransport = false - -const ( - gcmCipherID = "aes128-gcm@openssh.com" - aes128cbcID = "aes128-cbc" - tripledescbcID = "3des-cbc" -) - -// packetConn represents a transport that implements packet based -// operations. -type packetConn interface { - // Encrypt and send a packet of data to the remote peer. - writePacket(packet []byte) error - - // Read a packet from the connection. The read is blocking, - // i.e. if error is nil, then the returned byte slice is - // always non-empty. - readPacket() ([]byte, error) - - // Close closes the write-side of the connection. - Close() error -} - -// transport is the keyingTransport that implements the SSH packet -// protocol. -type transport struct { - reader connectionState - writer connectionState - - bufReader *bufio.Reader - bufWriter *bufio.Writer - rand io.Reader - isClient bool - io.Closer -} - -// packetCipher represents a combination of SSH encryption/MAC -// protocol. A single instance should be used for one direction only. -type packetCipher interface { - // writeCipherPacket encrypts the packet and writes it to w. The - // contents of the packet are generally scrambled. - writeCipherPacket(seqnum uint32, w io.Writer, rand io.Reader, packet []byte) error - - // readCipherPacket reads and decrypts a packet of data. The - // returned packet may be overwritten by future calls of - // readPacket. - readCipherPacket(seqnum uint32, r io.Reader) ([]byte, error) -} - -// connectionState represents one side (read or write) of the -// connection. This is necessary because each direction has its own -// keys, and can even have its own algorithms -type connectionState struct { - packetCipher - seqNum uint32 - dir direction - pendingKeyChange chan packetCipher -} - -// prepareKeyChange sets up key material for a keychange. The key changes in -// both directions are triggered by reading and writing a msgNewKey packet -// respectively. -func (t *transport) prepareKeyChange(algs *algorithms, kexResult *kexResult) error { - ciph, err := newPacketCipher(t.reader.dir, algs.r, kexResult) - if err != nil { - return err - } - t.reader.pendingKeyChange <- ciph - - ciph, err = newPacketCipher(t.writer.dir, algs.w, kexResult) - if err != nil { - return err - } - t.writer.pendingKeyChange <- ciph - - return nil -} - -func (t *transport) printPacket(p []byte, write bool) { - if len(p) == 0 { - return - } - who := "server" - if t.isClient { - who = "client" - } - what := "read" - if write { - what = "write" - } - - log.Println(what, who, p[0]) -} - -// Read and decrypt next packet. -func (t *transport) readPacket() (p []byte, err error) { - for { - p, err = t.reader.readPacket(t.bufReader) - if err != nil { - break - } - if len(p) == 0 || (p[0] != msgIgnore && p[0] != msgDebug) { - break - } - } - if debugTransport { - t.printPacket(p, false) - } - - return p, err -} - -func (s *connectionState) readPacket(r *bufio.Reader) ([]byte, error) { - packet, err := s.packetCipher.readCipherPacket(s.seqNum, r) - s.seqNum++ - if err == nil && len(packet) == 0 { - err = errors.New("ssh: zero length packet") - } - - if len(packet) > 0 { - switch packet[0] { - case msgNewKeys: - select { - case cipher := <-s.pendingKeyChange: - s.packetCipher = cipher - default: - return nil, errors.New("ssh: got bogus newkeys message") - } - - case msgDisconnect: - // Transform a disconnect message into an - // error. Since this is lowest level at which - // we interpret message types, doing it here - // ensures that we don't have to handle it - // elsewhere. - var msg disconnectMsg - if err := Unmarshal(packet, &msg); err != nil { - return nil, err - } - return nil, &msg - } - } - - // The packet may point to an internal buffer, so copy the - // packet out here. - fresh := make([]byte, len(packet)) - copy(fresh, packet) - - return fresh, err -} - -func (t *transport) writePacket(packet []byte) error { - if debugTransport { - t.printPacket(packet, true) - } - return t.writer.writePacket(t.bufWriter, t.rand, packet) -} - -func (s *connectionState) writePacket(w *bufio.Writer, rand io.Reader, packet []byte) error { - changeKeys := len(packet) > 0 && packet[0] == msgNewKeys - - err := s.packetCipher.writeCipherPacket(s.seqNum, w, rand, packet) - if err != nil { - return err - } - if err = w.Flush(); err != nil { - return err - } - s.seqNum++ - if changeKeys { - select { - case cipher := <-s.pendingKeyChange: - s.packetCipher = cipher - default: - panic("ssh: no key material for msgNewKeys") - } - } - return err -} - -func newTransport(rwc io.ReadWriteCloser, rand io.Reader, isClient bool) *transport { - t := &transport{ - bufReader: bufio.NewReader(rwc), - bufWriter: bufio.NewWriter(rwc), - rand: rand, - reader: connectionState{ - packetCipher: &streamPacketCipher{cipher: noneCipher{}}, - pendingKeyChange: make(chan packetCipher, 1), - }, - writer: connectionState{ - packetCipher: &streamPacketCipher{cipher: noneCipher{}}, - pendingKeyChange: make(chan packetCipher, 1), - }, - Closer: rwc, - } - t.isClient = isClient - - if isClient { - t.reader.dir = serverKeys - t.writer.dir = clientKeys - } else { - t.reader.dir = clientKeys - t.writer.dir = serverKeys - } - - return t -} - -type direction struct { - ivTag []byte - keyTag []byte - macKeyTag []byte -} - -var ( - serverKeys = direction{[]byte{'B'}, []byte{'D'}, []byte{'F'}} - clientKeys = direction{[]byte{'A'}, []byte{'C'}, []byte{'E'}} -) - -// setupKeys sets the cipher and MAC keys from kex.K, kex.H and sessionId, as -// described in RFC 4253, section 6.4. direction should either be serverKeys -// (to setup server->client keys) or clientKeys (for client->server keys). -func newPacketCipher(d direction, algs directionAlgorithms, kex *kexResult) (packetCipher, error) { - cipherMode := cipherModes[algs.Cipher] - - iv := make([]byte, cipherMode.ivSize) - key := make([]byte, cipherMode.keySize) - - generateKeyMaterial(iv, d.ivTag, kex) - generateKeyMaterial(key, d.keyTag, kex) - - var macKey []byte - if !aeadCiphers[algs.Cipher] { - macMode := macModes[algs.MAC] - macKey = make([]byte, macMode.keySize) - generateKeyMaterial(macKey, d.macKeyTag, kex) - } - - return cipherModes[algs.Cipher].create(key, iv, macKey, algs) -} - -// generateKeyMaterial fills out with key material generated from tag, K, H -// and sessionId, as specified in RFC 4253, section 7.2. -func generateKeyMaterial(out, tag []byte, r *kexResult) { - var digestsSoFar []byte - - h := r.Hash.New() - for len(out) > 0 { - h.Reset() - h.Write(r.K) - h.Write(r.H) - - if len(digestsSoFar) == 0 { - h.Write(tag) - h.Write(r.SessionID) - } else { - h.Write(digestsSoFar) - } - - digest := h.Sum(nil) - n := copy(out, digest) - out = out[n:] - if len(out) > 0 { - digestsSoFar = append(digestsSoFar, digest...) - } - } -} - -const packageVersion = "SSH-2.0-Go" - -// Sends and receives a version line. The versionLine string should -// be US ASCII, start with "SSH-2.0-", and should not include a -// newline. exchangeVersions returns the other side's version line. -func exchangeVersions(rw io.ReadWriter, versionLine []byte) (them []byte, err error) { - // Contrary to the RFC, we do not ignore lines that don't - // start with "SSH-2.0-" to make the library usable with - // nonconforming servers. - for _, c := range versionLine { - // The spec disallows non US-ASCII chars, and - // specifically forbids null chars. - if c < 32 { - return nil, errors.New("ssh: junk character in version line") - } - } - if _, err = rw.Write(append(versionLine, '\r', '\n')); err != nil { - return - } - - them, err = readVersion(rw) - return them, err -} - -// maxVersionStringBytes is the maximum number of bytes that we'll -// accept as a version string. RFC 4253 section 4.2 limits this at 255 -// chars -const maxVersionStringBytes = 255 - -// Read version string as specified by RFC 4253, section 4.2. -func readVersion(r io.Reader) ([]byte, error) { - versionString := make([]byte, 0, 64) - var ok bool - var buf [1]byte - - for length := 0; length < maxVersionStringBytes; length++ { - _, err := io.ReadFull(r, buf[:]) - if err != nil { - return nil, err - } - // The RFC says that the version should be terminated with \r\n - // but several SSH servers actually only send a \n. - if buf[0] == '\n' { - if !bytes.HasPrefix(versionString, []byte("SSH-")) { - // RFC 4253 says we need to ignore all version string lines - // except the one containing the SSH version (provided that - // all the lines do not exceed 255 bytes in total). - versionString = versionString[:0] - continue - } - ok = true - break - } - - // non ASCII chars are disallowed, but we are lenient, - // since Go doesn't use null-terminated strings. - - // The RFC allows a comment after a space, however, - // all of it (version and comments) goes into the - // session hash. - versionString = append(versionString, buf[0]) - } - - if !ok { - return nil, errors.New("ssh: overflow reading version string") - } - - // There might be a '\r' on the end which we should remove. - if len(versionString) > 0 && versionString[len(versionString)-1] == '\r' { - versionString = versionString[:len(versionString)-1] - } - return versionString, nil -} diff --git a/vendor/golang.org/x/mod/LICENSE b/vendor/golang.org/x/mod/LICENSE deleted file mode 100644 index 6a66aea..0000000 --- a/vendor/golang.org/x/mod/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -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/mod/PATENTS b/vendor/golang.org/x/mod/PATENTS deleted file mode 100644 index 7330990..0000000 --- a/vendor/golang.org/x/mod/PATENTS +++ /dev/null @@ -1,22 +0,0 @@ -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/mod/semver/semver.go b/vendor/golang.org/x/mod/semver/semver.go deleted file mode 100644 index a30a22b..0000000 --- a/vendor/golang.org/x/mod/semver/semver.go +++ /dev/null @@ -1,401 +0,0 @@ -// Copyright 2018 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 semver implements comparison of semantic version strings. -// In this package, semantic version strings must begin with a leading "v", -// as in "v1.0.0". -// -// The general form of a semantic version string accepted by this package is -// -// vMAJOR[.MINOR[.PATCH[-PRERELEASE][+BUILD]]] -// -// where square brackets indicate optional parts of the syntax; -// MAJOR, MINOR, and PATCH are decimal integers without extra leading zeros; -// PRERELEASE and BUILD are each a series of non-empty dot-separated identifiers -// using only alphanumeric characters and hyphens; and -// all-numeric PRERELEASE identifiers must not have leading zeros. -// -// This package follows Semantic Versioning 2.0.0 (see semver.org) -// with two exceptions. First, it requires the "v" prefix. Second, it recognizes -// vMAJOR and vMAJOR.MINOR (with no prerelease or build suffixes) -// as shorthands for vMAJOR.0.0 and vMAJOR.MINOR.0. -package semver - -import "sort" - -// parsed returns the parsed form of a semantic version string. -type parsed struct { - major string - minor string - patch string - short string - prerelease string - build string -} - -// IsValid reports whether v is a valid semantic version string. -func IsValid(v string) bool { - _, ok := parse(v) - return ok -} - -// Canonical returns the canonical formatting of the semantic version v. -// It fills in any missing .MINOR or .PATCH and discards build metadata. -// Two semantic versions compare equal only if their canonical formattings -// are identical strings. -// The canonical invalid semantic version is the empty string. -func Canonical(v string) string { - p, ok := parse(v) - if !ok { - return "" - } - if p.build != "" { - return v[:len(v)-len(p.build)] - } - if p.short != "" { - return v + p.short - } - return v -} - -// Major returns the major version prefix of the semantic version v. -// For example, Major("v2.1.0") == "v2". -// If v is an invalid semantic version string, Major returns the empty string. -func Major(v string) string { - pv, ok := parse(v) - if !ok { - return "" - } - return v[:1+len(pv.major)] -} - -// MajorMinor returns the major.minor version prefix of the semantic version v. -// For example, MajorMinor("v2.1.0") == "v2.1". -// If v is an invalid semantic version string, MajorMinor returns the empty string. -func MajorMinor(v string) string { - pv, ok := parse(v) - if !ok { - return "" - } - i := 1 + len(pv.major) - if j := i + 1 + len(pv.minor); j <= len(v) && v[i] == '.' && v[i+1:j] == pv.minor { - return v[:j] - } - return v[:i] + "." + pv.minor -} - -// Prerelease returns the prerelease suffix of the semantic version v. -// For example, Prerelease("v2.1.0-pre+meta") == "-pre". -// If v is an invalid semantic version string, Prerelease returns the empty string. -func Prerelease(v string) string { - pv, ok := parse(v) - if !ok { - return "" - } - return pv.prerelease -} - -// Build returns the build suffix of the semantic version v. -// For example, Build("v2.1.0+meta") == "+meta". -// If v is an invalid semantic version string, Build returns the empty string. -func Build(v string) string { - pv, ok := parse(v) - if !ok { - return "" - } - return pv.build -} - -// Compare returns an integer comparing two versions according to -// semantic version precedence. -// The result will be 0 if v == w, -1 if v < w, or +1 if v > w. -// -// An invalid semantic version string is considered less than a valid one. -// All invalid semantic version strings compare equal to each other. -func Compare(v, w string) int { - pv, ok1 := parse(v) - pw, ok2 := parse(w) - if !ok1 && !ok2 { - return 0 - } - if !ok1 { - return -1 - } - if !ok2 { - return +1 - } - if c := compareInt(pv.major, pw.major); c != 0 { - return c - } - if c := compareInt(pv.minor, pw.minor); c != 0 { - return c - } - if c := compareInt(pv.patch, pw.patch); c != 0 { - return c - } - return comparePrerelease(pv.prerelease, pw.prerelease) -} - -// Max canonicalizes its arguments and then returns the version string -// that compares greater. -// -// Deprecated: use Compare instead. In most cases, returning a canonicalized -// version is not expected or desired. -func Max(v, w string) string { - v = Canonical(v) - w = Canonical(w) - if Compare(v, w) > 0 { - return v - } - return w -} - -// ByVersion implements sort.Interface for sorting semantic version strings. -type ByVersion []string - -func (vs ByVersion) Len() int { return len(vs) } -func (vs ByVersion) Swap(i, j int) { vs[i], vs[j] = vs[j], vs[i] } -func (vs ByVersion) Less(i, j int) bool { - cmp := Compare(vs[i], vs[j]) - if cmp != 0 { - return cmp < 0 - } - return vs[i] < vs[j] -} - -// Sort sorts a list of semantic version strings using ByVersion. -func Sort(list []string) { - sort.Sort(ByVersion(list)) -} - -func parse(v string) (p parsed, ok bool) { - if v == "" || v[0] != 'v' { - return - } - p.major, v, ok = parseInt(v[1:]) - if !ok { - return - } - if v == "" { - p.minor = "0" - p.patch = "0" - p.short = ".0.0" - return - } - if v[0] != '.' { - ok = false - return - } - p.minor, v, ok = parseInt(v[1:]) - if !ok { - return - } - if v == "" { - p.patch = "0" - p.short = ".0" - return - } - if v[0] != '.' { - ok = false - return - } - p.patch, v, ok = parseInt(v[1:]) - if !ok { - return - } - if len(v) > 0 && v[0] == '-' { - p.prerelease, v, ok = parsePrerelease(v) - if !ok { - return - } - } - if len(v) > 0 && v[0] == '+' { - p.build, v, ok = parseBuild(v) - if !ok { - return - } - } - if v != "" { - ok = false - return - } - ok = true - return -} - -func parseInt(v string) (t, rest string, ok bool) { - if v == "" { - return - } - if v[0] < '0' || '9' < v[0] { - return - } - i := 1 - for i < len(v) && '0' <= v[i] && v[i] <= '9' { - i++ - } - if v[0] == '0' && i != 1 { - return - } - return v[:i], v[i:], true -} - -func parsePrerelease(v string) (t, rest string, ok bool) { - // "A pre-release version MAY be denoted by appending a hyphen and - // a series of dot separated identifiers immediately following the patch version. - // Identifiers MUST comprise only ASCII alphanumerics and hyphen [0-9A-Za-z-]. - // Identifiers MUST NOT be empty. Numeric identifiers MUST NOT include leading zeroes." - if v == "" || v[0] != '-' { - return - } - i := 1 - start := 1 - for i < len(v) && v[i] != '+' { - if !isIdentChar(v[i]) && v[i] != '.' { - return - } - if v[i] == '.' { - if start == i || isBadNum(v[start:i]) { - return - } - start = i + 1 - } - i++ - } - if start == i || isBadNum(v[start:i]) { - return - } - return v[:i], v[i:], true -} - -func parseBuild(v string) (t, rest string, ok bool) { - if v == "" || v[0] != '+' { - return - } - i := 1 - start := 1 - for i < len(v) { - if !isIdentChar(v[i]) && v[i] != '.' { - return - } - if v[i] == '.' { - if start == i { - return - } - start = i + 1 - } - i++ - } - if start == i { - return - } - return v[:i], v[i:], true -} - -func isIdentChar(c byte) bool { - return 'A' <= c && c <= 'Z' || 'a' <= c && c <= 'z' || '0' <= c && c <= '9' || c == '-' -} - -func isBadNum(v string) bool { - i := 0 - for i < len(v) && '0' <= v[i] && v[i] <= '9' { - i++ - } - return i == len(v) && i > 1 && v[0] == '0' -} - -func isNum(v string) bool { - i := 0 - for i < len(v) && '0' <= v[i] && v[i] <= '9' { - i++ - } - return i == len(v) -} - -func compareInt(x, y string) int { - if x == y { - return 0 - } - if len(x) < len(y) { - return -1 - } - if len(x) > len(y) { - return +1 - } - if x < y { - return -1 - } else { - return +1 - } -} - -func comparePrerelease(x, y string) int { - // "When major, minor, and patch are equal, a pre-release version has - // lower precedence than a normal version. - // Example: 1.0.0-alpha < 1.0.0. - // Precedence for two pre-release versions with the same major, minor, - // and patch version MUST be determined by comparing each dot separated - // identifier from left to right until a difference is found as follows: - // identifiers consisting of only digits are compared numerically and - // identifiers with letters or hyphens are compared lexically in ASCII - // sort order. Numeric identifiers always have lower precedence than - // non-numeric identifiers. A larger set of pre-release fields has a - // higher precedence than a smaller set, if all of the preceding - // identifiers are equal. - // Example: 1.0.0-alpha < 1.0.0-alpha.1 < 1.0.0-alpha.beta < - // 1.0.0-beta < 1.0.0-beta.2 < 1.0.0-beta.11 < 1.0.0-rc.1 < 1.0.0." - if x == y { - return 0 - } - if x == "" { - return +1 - } - if y == "" { - return -1 - } - for x != "" && y != "" { - x = x[1:] // skip - or . - y = y[1:] // skip - or . - var dx, dy string - dx, x = nextIdent(x) - dy, y = nextIdent(y) - if dx != dy { - ix := isNum(dx) - iy := isNum(dy) - if ix != iy { - if ix { - return -1 - } else { - return +1 - } - } - if ix { - if len(dx) < len(dy) { - return -1 - } - if len(dx) > len(dy) { - return +1 - } - } - if dx < dy { - return -1 - } else { - return +1 - } - } - } - if x == "" { - return -1 - } else { - return +1 - } -} - -func nextIdent(x string) (dx, rest string) { - i := 0 - for i < len(x) && x[i] != '.' { - i++ - } - return x[:i], x[i:] -} diff --git a/vendor/golang.org/x/net/AUTHORS b/vendor/golang.org/x/net/AUTHORS deleted file mode 100644 index 15167cd..0000000 --- a/vendor/golang.org/x/net/AUTHORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code refers to The Go Authors for copyright purposes. -# The master list of authors is in the main Go distribution, -# visible at http://tip.golang.org/AUTHORS. diff --git a/vendor/golang.org/x/net/CONTRIBUTORS b/vendor/golang.org/x/net/CONTRIBUTORS deleted file mode 100644 index 1c4577e..0000000 --- a/vendor/golang.org/x/net/CONTRIBUTORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code was written by the Go contributors. -# The master list of contributors is in the main Go distribution, -# visible at http://tip.golang.org/CONTRIBUTORS. diff --git a/vendor/golang.org/x/net/LICENSE b/vendor/golang.org/x/net/LICENSE deleted file mode 100644 index 6a66aea..0000000 --- a/vendor/golang.org/x/net/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -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/net/PATENTS b/vendor/golang.org/x/net/PATENTS deleted file mode 100644 index 7330990..0000000 --- a/vendor/golang.org/x/net/PATENTS +++ /dev/null @@ -1,22 +0,0 @@ -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/net/context/context.go b/vendor/golang.org/x/net/context/context.go deleted file mode 100644 index a3c021d..0000000 --- a/vendor/golang.org/x/net/context/context.go +++ /dev/null @@ -1,56 +0,0 @@ -// 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 context defines the Context type, which carries deadlines, -// cancelation signals, and other request-scoped values across API boundaries -// and between processes. -// As of Go 1.7 this package is available in the standard library under the -// name context. https://golang.org/pkg/context. -// -// Incoming requests to a server should create a Context, and outgoing calls to -// servers should accept a Context. The chain of function calls between must -// propagate the Context, optionally replacing it with a modified copy created -// using WithDeadline, WithTimeout, WithCancel, or WithValue. -// -// Programs that use Contexts should follow these rules to keep interfaces -// consistent across packages and enable static analysis tools to check context -// propagation: -// -// Do not store Contexts inside a struct type; instead, pass a Context -// explicitly to each function that needs it. The Context should be the first -// parameter, typically named ctx: -// -// func DoSomething(ctx context.Context, arg Arg) error { -// // ... use ctx ... -// } -// -// Do not pass a nil Context, even if a function permits it. Pass context.TODO -// if you are unsure about which Context to use. -// -// Use context Values only for request-scoped data that transits processes and -// APIs, not for passing optional parameters to functions. -// -// The same Context may be passed to functions running in different goroutines; -// Contexts are safe for simultaneous use by multiple goroutines. -// -// See http://blog.golang.org/context for example code for a server that uses -// Contexts. -package context // import "golang.org/x/net/context" - -// Background returns a non-nil, empty Context. It is never canceled, has no -// values, and has no deadline. It is typically used by the main function, -// initialization, and tests, and as the top-level Context for incoming -// requests. -func Background() Context { - return background -} - -// TODO returns a non-nil, empty Context. Code should use context.TODO when -// it's unclear which Context to use or it is not yet available (because the -// surrounding function has not yet been extended to accept a Context -// parameter). TODO is recognized by static analysis tools that determine -// whether Contexts are propagated correctly in a program. -func TODO() Context { - return todo -} diff --git a/vendor/golang.org/x/net/context/ctxhttp/ctxhttp.go b/vendor/golang.org/x/net/context/ctxhttp/ctxhttp.go deleted file mode 100644 index 37dc0cf..0000000 --- a/vendor/golang.org/x/net/context/ctxhttp/ctxhttp.go +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright 2016 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package ctxhttp provides helper functions for performing context-aware HTTP requests. -package ctxhttp // import "golang.org/x/net/context/ctxhttp" - -import ( - "context" - "io" - "net/http" - "net/url" - "strings" -) - -// Do sends an HTTP request with the provided http.Client and returns -// an HTTP response. -// -// If the client is nil, http.DefaultClient is used. -// -// The provided ctx must be non-nil. If it is canceled or times out, -// ctx.Err() will be returned. -func Do(ctx context.Context, client *http.Client, req *http.Request) (*http.Response, error) { - if client == nil { - client = http.DefaultClient - } - resp, err := client.Do(req.WithContext(ctx)) - // If we got an error, and the context has been canceled, - // the context's error is probably more useful. - if err != nil { - select { - case <-ctx.Done(): - err = ctx.Err() - default: - } - } - return resp, err -} - -// Get issues a GET request via the Do function. -func Get(ctx context.Context, client *http.Client, url string) (*http.Response, error) { - req, err := http.NewRequest("GET", url, nil) - if err != nil { - return nil, err - } - return Do(ctx, client, req) -} - -// Head issues a HEAD request via the Do function. -func Head(ctx context.Context, client *http.Client, url string) (*http.Response, error) { - req, err := http.NewRequest("HEAD", url, nil) - if err != nil { - return nil, err - } - return Do(ctx, client, req) -} - -// Post issues a POST request via the Do function. -func Post(ctx context.Context, client *http.Client, url string, bodyType string, body io.Reader) (*http.Response, error) { - req, err := http.NewRequest("POST", url, body) - if err != nil { - return nil, err - } - req.Header.Set("Content-Type", bodyType) - return Do(ctx, client, req) -} - -// PostForm issues a POST request via the Do function. -func PostForm(ctx context.Context, client *http.Client, url string, data url.Values) (*http.Response, error) { - return Post(ctx, client, url, "application/x-www-form-urlencoded", strings.NewReader(data.Encode())) -} diff --git a/vendor/golang.org/x/net/context/go17.go b/vendor/golang.org/x/net/context/go17.go deleted file mode 100644 index 344bd14..0000000 --- a/vendor/golang.org/x/net/context/go17.go +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright 2016 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build go1.7 -// +build go1.7 - -package context - -import ( - "context" // standard library's context, as of Go 1.7 - "time" -) - -var ( - todo = context.TODO() - background = context.Background() -) - -// Canceled is the error returned by Context.Err when the context is canceled. -var Canceled = context.Canceled - -// DeadlineExceeded is the error returned by Context.Err when the context's -// deadline passes. -var DeadlineExceeded = context.DeadlineExceeded - -// WithCancel returns a copy of parent with a new Done channel. The returned -// context's Done channel is closed when the returned cancel function is called -// or when the parent context's Done channel is closed, whichever happens first. -// -// Canceling this context releases resources associated with it, so code should -// call cancel as soon as the operations running in this Context complete. -func WithCancel(parent Context) (ctx Context, cancel CancelFunc) { - ctx, f := context.WithCancel(parent) - return ctx, CancelFunc(f) -} - -// WithDeadline returns a copy of the parent context with the deadline adjusted -// to be no later than d. If the parent's deadline is already earlier than d, -// WithDeadline(parent, d) is semantically equivalent to parent. The returned -// context's Done channel is closed when the deadline expires, when the returned -// cancel function is called, or when the parent context's Done channel is -// closed, whichever happens first. -// -// Canceling this context releases resources associated with it, so code should -// call cancel as soon as the operations running in this Context complete. -func WithDeadline(parent Context, deadline time.Time) (Context, CancelFunc) { - ctx, f := context.WithDeadline(parent, deadline) - return ctx, CancelFunc(f) -} - -// WithTimeout returns WithDeadline(parent, time.Now().Add(timeout)). -// -// Canceling this context releases resources associated with it, so code should -// call cancel as soon as the operations running in this Context complete: -// -// func slowOperationWithTimeout(ctx context.Context) (Result, error) { -// ctx, cancel := context.WithTimeout(ctx, 100*time.Millisecond) -// defer cancel() // releases resources if slowOperation completes before timeout elapses -// return slowOperation(ctx) -// } -func WithTimeout(parent Context, timeout time.Duration) (Context, CancelFunc) { - return WithDeadline(parent, time.Now().Add(timeout)) -} - -// WithValue returns a copy of parent in which the value associated with key is -// val. -// -// Use context Values only for request-scoped data that transits processes and -// APIs, not for passing optional parameters to functions. -func WithValue(parent Context, key interface{}, val interface{}) Context { - return context.WithValue(parent, key, val) -} diff --git a/vendor/golang.org/x/net/context/go19.go b/vendor/golang.org/x/net/context/go19.go deleted file mode 100644 index 64d31ec..0000000 --- a/vendor/golang.org/x/net/context/go19.go +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2017 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:build go1.9 -// +build go1.9 - -package context - -import "context" // standard library's context, as of Go 1.7 - -// A Context carries a deadline, a cancelation signal, and other values across -// API boundaries. -// -// Context's methods may be called by multiple goroutines simultaneously. -type Context = context.Context - -// A CancelFunc tells an operation to abandon its work. -// A CancelFunc does not wait for the work to stop. -// After the first call, subsequent calls to a CancelFunc do nothing. -type CancelFunc = context.CancelFunc diff --git a/vendor/golang.org/x/net/context/pre_go17.go b/vendor/golang.org/x/net/context/pre_go17.go deleted file mode 100644 index 5270db5..0000000 --- a/vendor/golang.org/x/net/context/pre_go17.go +++ /dev/null @@ -1,301 +0,0 @@ -// 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. - -//go:build !go1.7 -// +build !go1.7 - -package context - -import ( - "errors" - "fmt" - "sync" - "time" -) - -// An emptyCtx is never canceled, has no values, and has no deadline. It is not -// struct{}, since vars of this type must have distinct addresses. -type emptyCtx int - -func (*emptyCtx) Deadline() (deadline time.Time, ok bool) { - return -} - -func (*emptyCtx) Done() <-chan struct{} { - return nil -} - -func (*emptyCtx) Err() error { - return nil -} - -func (*emptyCtx) Value(key interface{}) interface{} { - return nil -} - -func (e *emptyCtx) String() string { - switch e { - case background: - return "context.Background" - case todo: - return "context.TODO" - } - return "unknown empty Context" -} - -var ( - background = new(emptyCtx) - todo = new(emptyCtx) -) - -// Canceled is the error returned by Context.Err when the context is canceled. -var Canceled = errors.New("context canceled") - -// DeadlineExceeded is the error returned by Context.Err when the context's -// deadline passes. -var DeadlineExceeded = errors.New("context deadline exceeded") - -// WithCancel returns a copy of parent with a new Done channel. The returned -// context's Done channel is closed when the returned cancel function is called -// or when the parent context's Done channel is closed, whichever happens first. -// -// Canceling this context releases resources associated with it, so code should -// call cancel as soon as the operations running in this Context complete. -func WithCancel(parent Context) (ctx Context, cancel CancelFunc) { - c := newCancelCtx(parent) - propagateCancel(parent, c) - return c, func() { c.cancel(true, Canceled) } -} - -// newCancelCtx returns an initialized cancelCtx. -func newCancelCtx(parent Context) *cancelCtx { - return &cancelCtx{ - Context: parent, - done: make(chan struct{}), - } -} - -// propagateCancel arranges for child to be canceled when parent is. -func propagateCancel(parent Context, child canceler) { - if parent.Done() == nil { - return // parent is never canceled - } - if p, ok := parentCancelCtx(parent); ok { - p.mu.Lock() - if p.err != nil { - // parent has already been canceled - child.cancel(false, p.err) - } else { - if p.children == nil { - p.children = make(map[canceler]bool) - } - p.children[child] = true - } - p.mu.Unlock() - } else { - go func() { - select { - case <-parent.Done(): - child.cancel(false, parent.Err()) - case <-child.Done(): - } - }() - } -} - -// parentCancelCtx follows a chain of parent references until it finds a -// *cancelCtx. This function understands how each of the concrete types in this -// package represents its parent. -func parentCancelCtx(parent Context) (*cancelCtx, bool) { - for { - switch c := parent.(type) { - case *cancelCtx: - return c, true - case *timerCtx: - return c.cancelCtx, true - case *valueCtx: - parent = c.Context - default: - return nil, false - } - } -} - -// removeChild removes a context from its parent. -func removeChild(parent Context, child canceler) { - p, ok := parentCancelCtx(parent) - if !ok { - return - } - p.mu.Lock() - if p.children != nil { - delete(p.children, child) - } - p.mu.Unlock() -} - -// A canceler is a context type that can be canceled directly. The -// implementations are *cancelCtx and *timerCtx. -type canceler interface { - cancel(removeFromParent bool, err error) - Done() <-chan struct{} -} - -// A cancelCtx can be canceled. When canceled, it also cancels any children -// that implement canceler. -type cancelCtx struct { - Context - - done chan struct{} // closed by the first cancel call. - - mu sync.Mutex - children map[canceler]bool // set to nil by the first cancel call - err error // set to non-nil by the first cancel call -} - -func (c *cancelCtx) Done() <-chan struct{} { - return c.done -} - -func (c *cancelCtx) Err() error { - c.mu.Lock() - defer c.mu.Unlock() - return c.err -} - -func (c *cancelCtx) String() string { - return fmt.Sprintf("%v.WithCancel", c.Context) -} - -// cancel closes c.done, cancels each of c's children, and, if -// removeFromParent is true, removes c from its parent's children. -func (c *cancelCtx) cancel(removeFromParent bool, err error) { - if err == nil { - panic("context: internal error: missing cancel error") - } - c.mu.Lock() - if c.err != nil { - c.mu.Unlock() - return // already canceled - } - c.err = err - close(c.done) - for child := range c.children { - // NOTE: acquiring the child's lock while holding parent's lock. - child.cancel(false, err) - } - c.children = nil - c.mu.Unlock() - - if removeFromParent { - removeChild(c.Context, c) - } -} - -// WithDeadline returns a copy of the parent context with the deadline adjusted -// to be no later than d. If the parent's deadline is already earlier than d, -// WithDeadline(parent, d) is semantically equivalent to parent. The returned -// context's Done channel is closed when the deadline expires, when the returned -// cancel function is called, or when the parent context's Done channel is -// closed, whichever happens first. -// -// Canceling this context releases resources associated with it, so code should -// call cancel as soon as the operations running in this Context complete. -func WithDeadline(parent Context, deadline time.Time) (Context, CancelFunc) { - if cur, ok := parent.Deadline(); ok && cur.Before(deadline) { - // The current deadline is already sooner than the new one. - return WithCancel(parent) - } - c := &timerCtx{ - cancelCtx: newCancelCtx(parent), - deadline: deadline, - } - propagateCancel(parent, c) - d := deadline.Sub(time.Now()) - if d <= 0 { - c.cancel(true, DeadlineExceeded) // deadline has already passed - return c, func() { c.cancel(true, Canceled) } - } - c.mu.Lock() - defer c.mu.Unlock() - if c.err == nil { - c.timer = time.AfterFunc(d, func() { - c.cancel(true, DeadlineExceeded) - }) - } - return c, func() { c.cancel(true, Canceled) } -} - -// A timerCtx carries a timer and a deadline. It embeds a cancelCtx to -// implement Done and Err. It implements cancel by stopping its timer then -// delegating to cancelCtx.cancel. -type timerCtx struct { - *cancelCtx - timer *time.Timer // Under cancelCtx.mu. - - deadline time.Time -} - -func (c *timerCtx) Deadline() (deadline time.Time, ok bool) { - return c.deadline, true -} - -func (c *timerCtx) String() string { - return fmt.Sprintf("%v.WithDeadline(%s [%s])", c.cancelCtx.Context, c.deadline, c.deadline.Sub(time.Now())) -} - -func (c *timerCtx) cancel(removeFromParent bool, err error) { - c.cancelCtx.cancel(false, err) - if removeFromParent { - // Remove this timerCtx from its parent cancelCtx's children. - removeChild(c.cancelCtx.Context, c) - } - c.mu.Lock() - if c.timer != nil { - c.timer.Stop() - c.timer = nil - } - c.mu.Unlock() -} - -// WithTimeout returns WithDeadline(parent, time.Now().Add(timeout)). -// -// Canceling this context releases resources associated with it, so code should -// call cancel as soon as the operations running in this Context complete: -// -// func slowOperationWithTimeout(ctx context.Context) (Result, error) { -// ctx, cancel := context.WithTimeout(ctx, 100*time.Millisecond) -// defer cancel() // releases resources if slowOperation completes before timeout elapses -// return slowOperation(ctx) -// } -func WithTimeout(parent Context, timeout time.Duration) (Context, CancelFunc) { - return WithDeadline(parent, time.Now().Add(timeout)) -} - -// WithValue returns a copy of parent in which the value associated with key is -// val. -// -// Use context Values only for request-scoped data that transits processes and -// APIs, not for passing optional parameters to functions. -func WithValue(parent Context, key interface{}, val interface{}) Context { - return &valueCtx{parent, key, val} -} - -// A valueCtx carries a key-value pair. It implements Value for that key and -// delegates all other calls to the embedded Context. -type valueCtx struct { - Context - key, val interface{} -} - -func (c *valueCtx) String() string { - return fmt.Sprintf("%v.WithValue(%#v, %#v)", c.Context, c.key, c.val) -} - -func (c *valueCtx) Value(key interface{}) interface{} { - if c.key == key { - return c.val - } - return c.Context.Value(key) -} diff --git a/vendor/golang.org/x/net/context/pre_go19.go b/vendor/golang.org/x/net/context/pre_go19.go deleted file mode 100644 index 1f97153..0000000 --- a/vendor/golang.org/x/net/context/pre_go19.go +++ /dev/null @@ -1,110 +0,0 @@ -// 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. - -//go:build !go1.9 -// +build !go1.9 - -package context - -import "time" - -// A Context carries a deadline, a cancelation signal, and other values across -// API boundaries. -// -// Context's methods may be called by multiple goroutines simultaneously. -type Context interface { - // Deadline returns the time when work done on behalf of this context - // should be canceled. Deadline returns ok==false when no deadline is - // set. Successive calls to Deadline return the same results. - Deadline() (deadline time.Time, ok bool) - - // Done returns a channel that's closed when work done on behalf of this - // context should be canceled. Done may return nil if this context can - // never be canceled. Successive calls to Done return the same value. - // - // WithCancel arranges for Done to be closed when cancel is called; - // WithDeadline arranges for Done to be closed when the deadline - // expires; WithTimeout arranges for Done to be closed when the timeout - // elapses. - // - // Done is provided for use in select statements: - // - // // Stream generates values with DoSomething and sends them to out - // // until DoSomething returns an error or ctx.Done is closed. - // func Stream(ctx context.Context, out chan<- Value) error { - // for { - // v, err := DoSomething(ctx) - // if err != nil { - // return err - // } - // select { - // case <-ctx.Done(): - // return ctx.Err() - // case out <- v: - // } - // } - // } - // - // See http://blog.golang.org/pipelines for more examples of how to use - // a Done channel for cancelation. - Done() <-chan struct{} - - // Err returns a non-nil error value after Done is closed. Err returns - // Canceled if the context was canceled or DeadlineExceeded if the - // context's deadline passed. No other values for Err are defined. - // After Done is closed, successive calls to Err return the same value. - Err() error - - // Value returns the value associated with this context for key, or nil - // if no value is associated with key. Successive calls to Value with - // the same key returns the same result. - // - // Use context values only for request-scoped data that transits - // processes and API boundaries, not for passing optional parameters to - // functions. - // - // A key identifies a specific value in a Context. Functions that wish - // to store values in Context typically allocate a key in a global - // variable then use that key as the argument to context.WithValue and - // Context.Value. A key can be any type that supports equality; - // packages should define keys as an unexported type to avoid - // collisions. - // - // Packages that define a Context key should provide type-safe accessors - // for the values stores using that key: - // - // // Package user defines a User type that's stored in Contexts. - // package user - // - // import "golang.org/x/net/context" - // - // // User is the type of value stored in the Contexts. - // type User struct {...} - // - // // key is an unexported type for keys defined in this package. - // // This prevents collisions with keys defined in other packages. - // type key int - // - // // userKey is the key for user.User values in Contexts. It is - // // unexported; clients use user.NewContext and user.FromContext - // // instead of using this key directly. - // var userKey key = 0 - // - // // NewContext returns a new Context that carries value u. - // func NewContext(ctx context.Context, u *User) context.Context { - // return context.WithValue(ctx, userKey, u) - // } - // - // // FromContext returns the User value stored in ctx, if any. - // func FromContext(ctx context.Context) (*User, bool) { - // u, ok := ctx.Value(userKey).(*User) - // return u, ok - // } - Value(key interface{}) interface{} -} - -// A CancelFunc tells an operation to abandon its work. -// A CancelFunc does not wait for the work to stop. -// After the first call, subsequent calls to a CancelFunc do nothing. -type CancelFunc func() diff --git a/vendor/golang.org/x/net/internal/socks/client.go b/vendor/golang.org/x/net/internal/socks/client.go deleted file mode 100644 index 3d6f516..0000000 --- a/vendor/golang.org/x/net/internal/socks/client.go +++ /dev/null @@ -1,168 +0,0 @@ -// Copyright 2018 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 socks - -import ( - "context" - "errors" - "io" - "net" - "strconv" - "time" -) - -var ( - noDeadline = time.Time{} - aLongTimeAgo = time.Unix(1, 0) -) - -func (d *Dialer) connect(ctx context.Context, c net.Conn, address string) (_ net.Addr, ctxErr error) { - host, port, err := splitHostPort(address) - if err != nil { - return nil, err - } - if deadline, ok := ctx.Deadline(); ok && !deadline.IsZero() { - c.SetDeadline(deadline) - defer c.SetDeadline(noDeadline) - } - if ctx != context.Background() { - errCh := make(chan error, 1) - done := make(chan struct{}) - defer func() { - close(done) - if ctxErr == nil { - ctxErr = <-errCh - } - }() - go func() { - select { - case <-ctx.Done(): - c.SetDeadline(aLongTimeAgo) - errCh <- ctx.Err() - case <-done: - errCh <- nil - } - }() - } - - b := make([]byte, 0, 6+len(host)) // the size here is just an estimate - b = append(b, Version5) - if len(d.AuthMethods) == 0 || d.Authenticate == nil { - b = append(b, 1, byte(AuthMethodNotRequired)) - } else { - ams := d.AuthMethods - if len(ams) > 255 { - return nil, errors.New("too many authentication methods") - } - b = append(b, byte(len(ams))) - for _, am := range ams { - b = append(b, byte(am)) - } - } - if _, ctxErr = c.Write(b); ctxErr != nil { - return - } - - if _, ctxErr = io.ReadFull(c, b[:2]); ctxErr != nil { - return - } - if b[0] != Version5 { - return nil, errors.New("unexpected protocol version " + strconv.Itoa(int(b[0]))) - } - am := AuthMethod(b[1]) - if am == AuthMethodNoAcceptableMethods { - return nil, errors.New("no acceptable authentication methods") - } - if d.Authenticate != nil { - if ctxErr = d.Authenticate(ctx, c, am); ctxErr != nil { - return - } - } - - b = b[:0] - b = append(b, Version5, byte(d.cmd), 0) - if ip := net.ParseIP(host); ip != nil { - if ip4 := ip.To4(); ip4 != nil { - b = append(b, AddrTypeIPv4) - b = append(b, ip4...) - } else if ip6 := ip.To16(); ip6 != nil { - b = append(b, AddrTypeIPv6) - b = append(b, ip6...) - } else { - return nil, errors.New("unknown address type") - } - } else { - if len(host) > 255 { - return nil, errors.New("FQDN too long") - } - b = append(b, AddrTypeFQDN) - b = append(b, byte(len(host))) - b = append(b, host...) - } - b = append(b, byte(port>>8), byte(port)) - if _, ctxErr = c.Write(b); ctxErr != nil { - return - } - - if _, ctxErr = io.ReadFull(c, b[:4]); ctxErr != nil { - return - } - if b[0] != Version5 { - return nil, errors.New("unexpected protocol version " + strconv.Itoa(int(b[0]))) - } - if cmdErr := Reply(b[1]); cmdErr != StatusSucceeded { - return nil, errors.New("unknown error " + cmdErr.String()) - } - if b[2] != 0 { - return nil, errors.New("non-zero reserved field") - } - l := 2 - var a Addr - switch b[3] { - case AddrTypeIPv4: - l += net.IPv4len - a.IP = make(net.IP, net.IPv4len) - case AddrTypeIPv6: - l += net.IPv6len - a.IP = make(net.IP, net.IPv6len) - case AddrTypeFQDN: - if _, err := io.ReadFull(c, b[:1]); err != nil { - return nil, err - } - l += int(b[0]) - default: - return nil, errors.New("unknown address type " + strconv.Itoa(int(b[3]))) - } - if cap(b) < l { - b = make([]byte, l) - } else { - b = b[:l] - } - if _, ctxErr = io.ReadFull(c, b); ctxErr != nil { - return - } - if a.IP != nil { - copy(a.IP, b) - } else { - a.Name = string(b[:len(b)-2]) - } - a.Port = int(b[len(b)-2])<<8 | int(b[len(b)-1]) - return &a, nil -} - -func splitHostPort(address string) (string, int, error) { - host, port, err := net.SplitHostPort(address) - if err != nil { - return "", 0, err - } - portnum, err := strconv.Atoi(port) - if err != nil { - return "", 0, err - } - if 1 > portnum || portnum > 0xffff { - return "", 0, errors.New("port number out of range " + port) - } - return host, portnum, nil -} diff --git a/vendor/golang.org/x/net/internal/socks/socks.go b/vendor/golang.org/x/net/internal/socks/socks.go deleted file mode 100644 index 97db234..0000000 --- a/vendor/golang.org/x/net/internal/socks/socks.go +++ /dev/null @@ -1,317 +0,0 @@ -// Copyright 2018 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 socks provides a SOCKS version 5 client implementation. -// -// SOCKS protocol version 5 is defined in RFC 1928. -// Username/Password authentication for SOCKS version 5 is defined in -// RFC 1929. -package socks - -import ( - "context" - "errors" - "io" - "net" - "strconv" -) - -// A Command represents a SOCKS command. -type Command int - -func (cmd Command) String() string { - switch cmd { - case CmdConnect: - return "socks connect" - case cmdBind: - return "socks bind" - default: - return "socks " + strconv.Itoa(int(cmd)) - } -} - -// An AuthMethod represents a SOCKS authentication method. -type AuthMethod int - -// A Reply represents a SOCKS command reply code. -type Reply int - -func (code Reply) String() string { - switch code { - case StatusSucceeded: - return "succeeded" - case 0x01: - return "general SOCKS server failure" - case 0x02: - return "connection not allowed by ruleset" - case 0x03: - return "network unreachable" - case 0x04: - return "host unreachable" - case 0x05: - return "connection refused" - case 0x06: - return "TTL expired" - case 0x07: - return "command not supported" - case 0x08: - return "address type not supported" - default: - return "unknown code: " + strconv.Itoa(int(code)) - } -} - -// Wire protocol constants. -const ( - Version5 = 0x05 - - AddrTypeIPv4 = 0x01 - AddrTypeFQDN = 0x03 - AddrTypeIPv6 = 0x04 - - CmdConnect Command = 0x01 // establishes an active-open forward proxy connection - cmdBind Command = 0x02 // establishes a passive-open forward proxy connection - - AuthMethodNotRequired AuthMethod = 0x00 // no authentication required - AuthMethodUsernamePassword AuthMethod = 0x02 // use username/password - AuthMethodNoAcceptableMethods AuthMethod = 0xff // no acceptable authentication methods - - StatusSucceeded Reply = 0x00 -) - -// An Addr represents a SOCKS-specific address. -// Either Name or IP is used exclusively. -type Addr struct { - Name string // fully-qualified domain name - IP net.IP - Port int -} - -func (a *Addr) Network() string { return "socks" } - -func (a *Addr) String() string { - if a == nil { - return "" - } - port := strconv.Itoa(a.Port) - if a.IP == nil { - return net.JoinHostPort(a.Name, port) - } - return net.JoinHostPort(a.IP.String(), port) -} - -// A Conn represents a forward proxy connection. -type Conn struct { - net.Conn - - boundAddr net.Addr -} - -// BoundAddr returns the address assigned by the proxy server for -// connecting to the command target address from the proxy server. -func (c *Conn) BoundAddr() net.Addr { - if c == nil { - return nil - } - return c.boundAddr -} - -// A Dialer holds SOCKS-specific options. -type Dialer struct { - cmd Command // either CmdConnect or cmdBind - proxyNetwork string // network between a proxy server and a client - proxyAddress string // proxy server address - - // ProxyDial specifies the optional dial function for - // establishing the transport connection. - ProxyDial func(context.Context, string, string) (net.Conn, error) - - // AuthMethods specifies the list of request authentication - // methods. - // If empty, SOCKS client requests only AuthMethodNotRequired. - AuthMethods []AuthMethod - - // Authenticate specifies the optional authentication - // function. It must be non-nil when AuthMethods is not empty. - // It must return an error when the authentication is failed. - Authenticate func(context.Context, io.ReadWriter, AuthMethod) error -} - -// DialContext connects to the provided address on the provided -// network. -// -// The returned error value may be a net.OpError. When the Op field of -// net.OpError contains "socks", the Source field contains a proxy -// server address and the Addr field contains a command target -// address. -// -// See func Dial of the net package of standard library for a -// description of the network and address parameters. -func (d *Dialer) DialContext(ctx context.Context, network, address string) (net.Conn, error) { - if err := d.validateTarget(network, address); err != nil { - proxy, dst, _ := d.pathAddrs(address) - return nil, &net.OpError{Op: d.cmd.String(), Net: network, Source: proxy, Addr: dst, Err: err} - } - if ctx == nil { - proxy, dst, _ := d.pathAddrs(address) - return nil, &net.OpError{Op: d.cmd.String(), Net: network, Source: proxy, Addr: dst, Err: errors.New("nil context")} - } - var err error - var c net.Conn - if d.ProxyDial != nil { - c, err = d.ProxyDial(ctx, d.proxyNetwork, d.proxyAddress) - } else { - var dd net.Dialer - c, err = dd.DialContext(ctx, d.proxyNetwork, d.proxyAddress) - } - if err != nil { - proxy, dst, _ := d.pathAddrs(address) - return nil, &net.OpError{Op: d.cmd.String(), Net: network, Source: proxy, Addr: dst, Err: err} - } - a, err := d.connect(ctx, c, address) - if err != nil { - c.Close() - proxy, dst, _ := d.pathAddrs(address) - return nil, &net.OpError{Op: d.cmd.String(), Net: network, Source: proxy, Addr: dst, Err: err} - } - return &Conn{Conn: c, boundAddr: a}, nil -} - -// DialWithConn initiates a connection from SOCKS server to the target -// network and address using the connection c that is already -// connected to the SOCKS server. -// -// It returns the connection's local address assigned by the SOCKS -// server. -func (d *Dialer) DialWithConn(ctx context.Context, c net.Conn, network, address string) (net.Addr, error) { - if err := d.validateTarget(network, address); err != nil { - proxy, dst, _ := d.pathAddrs(address) - return nil, &net.OpError{Op: d.cmd.String(), Net: network, Source: proxy, Addr: dst, Err: err} - } - if ctx == nil { - proxy, dst, _ := d.pathAddrs(address) - return nil, &net.OpError{Op: d.cmd.String(), Net: network, Source: proxy, Addr: dst, Err: errors.New("nil context")} - } - a, err := d.connect(ctx, c, address) - if err != nil { - proxy, dst, _ := d.pathAddrs(address) - return nil, &net.OpError{Op: d.cmd.String(), Net: network, Source: proxy, Addr: dst, Err: err} - } - return a, nil -} - -// Dial connects to the provided address on the provided network. -// -// Unlike DialContext, it returns a raw transport connection instead -// of a forward proxy connection. -// -// Deprecated: Use DialContext or DialWithConn instead. -func (d *Dialer) Dial(network, address string) (net.Conn, error) { - if err := d.validateTarget(network, address); err != nil { - proxy, dst, _ := d.pathAddrs(address) - return nil, &net.OpError{Op: d.cmd.String(), Net: network, Source: proxy, Addr: dst, Err: err} - } - var err error - var c net.Conn - if d.ProxyDial != nil { - c, err = d.ProxyDial(context.Background(), d.proxyNetwork, d.proxyAddress) - } else { - c, err = net.Dial(d.proxyNetwork, d.proxyAddress) - } - if err != nil { - proxy, dst, _ := d.pathAddrs(address) - return nil, &net.OpError{Op: d.cmd.String(), Net: network, Source: proxy, Addr: dst, Err: err} - } - if _, err := d.DialWithConn(context.Background(), c, network, address); err != nil { - c.Close() - return nil, err - } - return c, nil -} - -func (d *Dialer) validateTarget(network, address string) error { - switch network { - case "tcp", "tcp6", "tcp4": - default: - return errors.New("network not implemented") - } - switch d.cmd { - case CmdConnect, cmdBind: - default: - return errors.New("command not implemented") - } - return nil -} - -func (d *Dialer) pathAddrs(address string) (proxy, dst net.Addr, err error) { - for i, s := range []string{d.proxyAddress, address} { - host, port, err := splitHostPort(s) - if err != nil { - return nil, nil, err - } - a := &Addr{Port: port} - a.IP = net.ParseIP(host) - if a.IP == nil { - a.Name = host - } - if i == 0 { - proxy = a - } else { - dst = a - } - } - return -} - -// NewDialer returns a new Dialer that dials through the provided -// proxy server's network and address. -func NewDialer(network, address string) *Dialer { - return &Dialer{proxyNetwork: network, proxyAddress: address, cmd: CmdConnect} -} - -const ( - authUsernamePasswordVersion = 0x01 - authStatusSucceeded = 0x00 -) - -// UsernamePassword are the credentials for the username/password -// authentication method. -type UsernamePassword struct { - Username string - Password string -} - -// Authenticate authenticates a pair of username and password with the -// proxy server. -func (up *UsernamePassword) Authenticate(ctx context.Context, rw io.ReadWriter, auth AuthMethod) error { - switch auth { - case AuthMethodNotRequired: - return nil - case AuthMethodUsernamePassword: - if len(up.Username) == 0 || len(up.Username) > 255 || len(up.Password) == 0 || len(up.Password) > 255 { - return errors.New("invalid username/password") - } - b := []byte{authUsernamePasswordVersion} - b = append(b, byte(len(up.Username))) - b = append(b, up.Username...) - b = append(b, byte(len(up.Password))) - b = append(b, up.Password...) - // TODO(mikio): handle IO deadlines and cancelation if - // necessary - if _, err := rw.Write(b); err != nil { - return err - } - if _, err := io.ReadFull(rw, b[:2]); err != nil { - return err - } - if b[0] != authUsernamePasswordVersion { - return errors.New("invalid username/password version") - } - if b[1] != authStatusSucceeded { - return errors.New("username/password authentication failed") - } - return nil - } - return errors.New("unsupported authentication method " + strconv.Itoa(int(auth))) -} diff --git a/vendor/golang.org/x/net/proxy/dial.go b/vendor/golang.org/x/net/proxy/dial.go deleted file mode 100644 index 811c2e4..0000000 --- a/vendor/golang.org/x/net/proxy/dial.go +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright 2019 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 proxy - -import ( - "context" - "net" -) - -// A ContextDialer dials using a context. -type ContextDialer interface { - DialContext(ctx context.Context, network, address string) (net.Conn, error) -} - -// Dial works like DialContext on net.Dialer but using a dialer returned by FromEnvironment. -// -// The passed ctx is only used for returning the Conn, not the lifetime of the Conn. -// -// Custom dialers (registered via RegisterDialerType) that do not implement ContextDialer -// can leak a goroutine for as long as it takes the underlying Dialer implementation to timeout. -// -// A Conn returned from a successful Dial after the context has been cancelled will be immediately closed. -func Dial(ctx context.Context, network, address string) (net.Conn, error) { - d := FromEnvironment() - if xd, ok := d.(ContextDialer); ok { - return xd.DialContext(ctx, network, address) - } - return dialContext(ctx, d, network, address) -} - -// WARNING: this can leak a goroutine for as long as the underlying Dialer implementation takes to timeout -// A Conn returned from a successful Dial after the context has been cancelled will be immediately closed. -func dialContext(ctx context.Context, d Dialer, network, address string) (net.Conn, error) { - var ( - conn net.Conn - done = make(chan struct{}, 1) - err error - ) - go func() { - conn, err = d.Dial(network, address) - close(done) - if conn != nil && ctx.Err() != nil { - conn.Close() - } - }() - select { - case <-ctx.Done(): - err = ctx.Err() - case <-done: - } - return conn, err -} diff --git a/vendor/golang.org/x/net/proxy/direct.go b/vendor/golang.org/x/net/proxy/direct.go deleted file mode 100644 index 3d66bde..0000000 --- a/vendor/golang.org/x/net/proxy/direct.go +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2011 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 proxy - -import ( - "context" - "net" -) - -type direct struct{} - -// Direct implements Dialer by making network connections directly using net.Dial or net.DialContext. -var Direct = direct{} - -var ( - _ Dialer = Direct - _ ContextDialer = Direct -) - -// Dial directly invokes net.Dial with the supplied parameters. -func (direct) Dial(network, addr string) (net.Conn, error) { - return net.Dial(network, addr) -} - -// DialContext instantiates a net.Dialer and invokes its DialContext receiver with the supplied parameters. -func (direct) DialContext(ctx context.Context, network, addr string) (net.Conn, error) { - var d net.Dialer - return d.DialContext(ctx, network, addr) -} diff --git a/vendor/golang.org/x/net/proxy/per_host.go b/vendor/golang.org/x/net/proxy/per_host.go deleted file mode 100644 index 573fe79..0000000 --- a/vendor/golang.org/x/net/proxy/per_host.go +++ /dev/null @@ -1,155 +0,0 @@ -// Copyright 2011 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 proxy - -import ( - "context" - "net" - "strings" -) - -// A PerHost directs connections to a default Dialer unless the host name -// requested matches one of a number of exceptions. -type PerHost struct { - def, bypass Dialer - - bypassNetworks []*net.IPNet - bypassIPs []net.IP - bypassZones []string - bypassHosts []string -} - -// NewPerHost returns a PerHost Dialer that directs connections to either -// defaultDialer or bypass, depending on whether the connection matches one of -// the configured rules. -func NewPerHost(defaultDialer, bypass Dialer) *PerHost { - return &PerHost{ - def: defaultDialer, - bypass: bypass, - } -} - -// Dial connects to the address addr on the given network through either -// defaultDialer or bypass. -func (p *PerHost) Dial(network, addr string) (c net.Conn, err error) { - host, _, err := net.SplitHostPort(addr) - if err != nil { - return nil, err - } - - return p.dialerForRequest(host).Dial(network, addr) -} - -// DialContext connects to the address addr on the given network through either -// defaultDialer or bypass. -func (p *PerHost) DialContext(ctx context.Context, network, addr string) (c net.Conn, err error) { - host, _, err := net.SplitHostPort(addr) - if err != nil { - return nil, err - } - d := p.dialerForRequest(host) - if x, ok := d.(ContextDialer); ok { - return x.DialContext(ctx, network, addr) - } - return dialContext(ctx, d, network, addr) -} - -func (p *PerHost) dialerForRequest(host string) Dialer { - if ip := net.ParseIP(host); ip != nil { - for _, net := range p.bypassNetworks { - if net.Contains(ip) { - return p.bypass - } - } - for _, bypassIP := range p.bypassIPs { - if bypassIP.Equal(ip) { - return p.bypass - } - } - return p.def - } - - for _, zone := range p.bypassZones { - if strings.HasSuffix(host, zone) { - return p.bypass - } - if host == zone[1:] { - // For a zone ".example.com", we match "example.com" - // too. - return p.bypass - } - } - for _, bypassHost := range p.bypassHosts { - if bypassHost == host { - return p.bypass - } - } - return p.def -} - -// AddFromString parses a string that contains comma-separated values -// specifying hosts that should use the bypass proxy. Each value is either an -// IP address, a CIDR range, a zone (*.example.com) or a host name -// (localhost). A best effort is made to parse the string and errors are -// ignored. -func (p *PerHost) AddFromString(s string) { - hosts := strings.Split(s, ",") - for _, host := range hosts { - host = strings.TrimSpace(host) - if len(host) == 0 { - continue - } - if strings.Contains(host, "/") { - // We assume that it's a CIDR address like 127.0.0.0/8 - if _, net, err := net.ParseCIDR(host); err == nil { - p.AddNetwork(net) - } - continue - } - if ip := net.ParseIP(host); ip != nil { - p.AddIP(ip) - continue - } - if strings.HasPrefix(host, "*.") { - p.AddZone(host[1:]) - continue - } - p.AddHost(host) - } -} - -// AddIP specifies an IP address that will use the bypass proxy. Note that -// this will only take effect if a literal IP address is dialed. A connection -// to a named host will never match an IP. -func (p *PerHost) AddIP(ip net.IP) { - p.bypassIPs = append(p.bypassIPs, ip) -} - -// AddNetwork specifies an IP range that will use the bypass proxy. Note that -// this will only take effect if a literal IP address is dialed. A connection -// to a named host will never match. -func (p *PerHost) AddNetwork(net *net.IPNet) { - p.bypassNetworks = append(p.bypassNetworks, net) -} - -// AddZone specifies a DNS suffix that will use the bypass proxy. A zone of -// "example.com" matches "example.com" and all of its subdomains. -func (p *PerHost) AddZone(zone string) { - if strings.HasSuffix(zone, ".") { - zone = zone[:len(zone)-1] - } - if !strings.HasPrefix(zone, ".") { - zone = "." + zone - } - p.bypassZones = append(p.bypassZones, zone) -} - -// AddHost specifies a host name that will use the bypass proxy. -func (p *PerHost) AddHost(host string) { - if strings.HasSuffix(host, ".") { - host = host[:len(host)-1] - } - p.bypassHosts = append(p.bypassHosts, host) -} diff --git a/vendor/golang.org/x/net/proxy/proxy.go b/vendor/golang.org/x/net/proxy/proxy.go deleted file mode 100644 index 9ff4b9a..0000000 --- a/vendor/golang.org/x/net/proxy/proxy.go +++ /dev/null @@ -1,149 +0,0 @@ -// Copyright 2011 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 proxy provides support for a variety of protocols to proxy network -// data. -package proxy // import "golang.org/x/net/proxy" - -import ( - "errors" - "net" - "net/url" - "os" - "sync" -) - -// A Dialer is a means to establish a connection. -// Custom dialers should also implement ContextDialer. -type Dialer interface { - // Dial connects to the given address via the proxy. - Dial(network, addr string) (c net.Conn, err error) -} - -// Auth contains authentication parameters that specific Dialers may require. -type Auth struct { - User, Password string -} - -// FromEnvironment returns the dialer specified by the proxy-related -// variables in the environment and makes underlying connections -// directly. -func FromEnvironment() Dialer { - return FromEnvironmentUsing(Direct) -} - -// FromEnvironmentUsing returns the dialer specify by the proxy-related -// variables in the environment and makes underlying connections -// using the provided forwarding Dialer (for instance, a *net.Dialer -// with desired configuration). -func FromEnvironmentUsing(forward Dialer) Dialer { - allProxy := allProxyEnv.Get() - if len(allProxy) == 0 { - return forward - } - - proxyURL, err := url.Parse(allProxy) - if err != nil { - return forward - } - proxy, err := FromURL(proxyURL, forward) - if err != nil { - return forward - } - - noProxy := noProxyEnv.Get() - if len(noProxy) == 0 { - return proxy - } - - perHost := NewPerHost(proxy, forward) - perHost.AddFromString(noProxy) - return perHost -} - -// proxySchemes is a map from URL schemes to a function that creates a Dialer -// from a URL with such a scheme. -var proxySchemes map[string]func(*url.URL, Dialer) (Dialer, error) - -// RegisterDialerType takes a URL scheme and a function to generate Dialers from -// a URL with that scheme and a forwarding Dialer. Registered schemes are used -// by FromURL. -func RegisterDialerType(scheme string, f func(*url.URL, Dialer) (Dialer, error)) { - if proxySchemes == nil { - proxySchemes = make(map[string]func(*url.URL, Dialer) (Dialer, error)) - } - proxySchemes[scheme] = f -} - -// FromURL returns a Dialer given a URL specification and an underlying -// Dialer for it to make network requests. -func FromURL(u *url.URL, forward Dialer) (Dialer, error) { - var auth *Auth - if u.User != nil { - auth = new(Auth) - auth.User = u.User.Username() - if p, ok := u.User.Password(); ok { - auth.Password = p - } - } - - switch u.Scheme { - case "socks5", "socks5h": - addr := u.Hostname() - port := u.Port() - if port == "" { - port = "1080" - } - return SOCKS5("tcp", net.JoinHostPort(addr, port), auth, forward) - } - - // If the scheme doesn't match any of the built-in schemes, see if it - // was registered by another package. - if proxySchemes != nil { - if f, ok := proxySchemes[u.Scheme]; ok { - return f(u, forward) - } - } - - return nil, errors.New("proxy: unknown scheme: " + u.Scheme) -} - -var ( - allProxyEnv = &envOnce{ - names: []string{"ALL_PROXY", "all_proxy"}, - } - noProxyEnv = &envOnce{ - names: []string{"NO_PROXY", "no_proxy"}, - } -) - -// envOnce looks up an environment variable (optionally by multiple -// names) once. It mitigates expensive lookups on some platforms -// (e.g. Windows). -// (Borrowed from net/http/transport.go) -type envOnce struct { - names []string - once sync.Once - val string -} - -func (e *envOnce) Get() string { - e.once.Do(e.init) - return e.val -} - -func (e *envOnce) init() { - for _, n := range e.names { - e.val = os.Getenv(n) - if e.val != "" { - return - } - } -} - -// reset is used by tests -func (e *envOnce) reset() { - e.once = sync.Once{} - e.val = "" -} diff --git a/vendor/golang.org/x/net/proxy/socks5.go b/vendor/golang.org/x/net/proxy/socks5.go deleted file mode 100644 index c91651f..0000000 --- a/vendor/golang.org/x/net/proxy/socks5.go +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2011 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 proxy - -import ( - "context" - "net" - - "golang.org/x/net/internal/socks" -) - -// SOCKS5 returns a Dialer that makes SOCKSv5 connections to the given -// address with an optional username and password. -// See RFC 1928 and RFC 1929. -func SOCKS5(network, address string, auth *Auth, forward Dialer) (Dialer, error) { - d := socks.NewDialer(network, address) - if forward != nil { - if f, ok := forward.(ContextDialer); ok { - d.ProxyDial = func(ctx context.Context, network string, address string) (net.Conn, error) { - return f.DialContext(ctx, network, address) - } - } else { - d.ProxyDial = func(ctx context.Context, network string, address string) (net.Conn, error) { - return dialContext(ctx, forward, network, address) - } - } - } - if auth != nil { - up := socks.UsernamePassword{ - Username: auth.User, - Password: auth.Password, - } - d.AuthMethods = []socks.AuthMethod{ - socks.AuthMethodNotRequired, - socks.AuthMethodUsernamePassword, - } - d.Authenticate = up.Authenticate - } - return d, nil -} diff --git a/vendor/golang.org/x/sys/cpu/asm_aix_ppc64.s b/vendor/golang.org/x/sys/cpu/asm_aix_ppc64.s deleted file mode 100644 index db9171c..0000000 --- a/vendor/golang.org/x/sys/cpu/asm_aix_ppc64.s +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2018 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:build gc -// +build gc - -#include "textflag.h" - -// -// System calls for ppc64, AIX are implemented in runtime/syscall_aix.go -// - -TEXT ·syscall6(SB),NOSPLIT,$0-88 - JMP syscall·syscall6(SB) - -TEXT ·rawSyscall6(SB),NOSPLIT,$0-88 - JMP syscall·rawSyscall6(SB) diff --git a/vendor/golang.org/x/sys/cpu/byteorder.go b/vendor/golang.org/x/sys/cpu/byteorder.go deleted file mode 100644 index 271055b..0000000 --- a/vendor/golang.org/x/sys/cpu/byteorder.go +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2019 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 cpu - -import ( - "runtime" -) - -// byteOrder is a subset of encoding/binary.ByteOrder. -type byteOrder interface { - Uint32([]byte) uint32 - Uint64([]byte) uint64 -} - -type littleEndian struct{} -type bigEndian struct{} - -func (littleEndian) Uint32(b []byte) uint32 { - _ = b[3] // bounds check hint to compiler; see golang.org/issue/14808 - return uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24 -} - -func (littleEndian) Uint64(b []byte) uint64 { - _ = b[7] // bounds check hint to compiler; see golang.org/issue/14808 - return uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | - uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56 -} - -func (bigEndian) Uint32(b []byte) uint32 { - _ = b[3] // bounds check hint to compiler; see golang.org/issue/14808 - return uint32(b[3]) | uint32(b[2])<<8 | uint32(b[1])<<16 | uint32(b[0])<<24 -} - -func (bigEndian) Uint64(b []byte) uint64 { - _ = b[7] // bounds check hint to compiler; see golang.org/issue/14808 - return uint64(b[7]) | uint64(b[6])<<8 | uint64(b[5])<<16 | uint64(b[4])<<24 | - uint64(b[3])<<32 | uint64(b[2])<<40 | uint64(b[1])<<48 | uint64(b[0])<<56 -} - -// hostByteOrder returns littleEndian on little-endian machines and -// bigEndian on big-endian machines. -func hostByteOrder() byteOrder { - switch runtime.GOARCH { - case "386", "amd64", "amd64p32", - "alpha", - "arm", "arm64", - "loong64", - "mipsle", "mips64le", "mips64p32le", - "nios2", - "ppc64le", - "riscv", "riscv64", - "sh": - return littleEndian{} - case "armbe", "arm64be", - "m68k", - "mips", "mips64", "mips64p32", - "ppc", "ppc64", - "s390", "s390x", - "shbe", - "sparc", "sparc64": - return bigEndian{} - } - panic("unknown architecture") -} diff --git a/vendor/golang.org/x/sys/cpu/cpu.go b/vendor/golang.org/x/sys/cpu/cpu.go deleted file mode 100644 index b56886f..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu.go +++ /dev/null @@ -1,287 +0,0 @@ -// Copyright 2018 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 cpu implements processor feature detection for -// various CPU architectures. -package cpu - -import ( - "os" - "strings" -) - -// Initialized reports whether the CPU features were initialized. -// -// For some GOOS/GOARCH combinations initialization of the CPU features depends -// on reading an operating specific file, e.g. /proc/self/auxv on linux/arm -// Initialized will report false if reading the file fails. -var Initialized bool - -// CacheLinePad is used to pad structs to avoid false sharing. -type CacheLinePad struct{ _ [cacheLineSize]byte } - -// X86 contains the supported CPU features of the -// current X86/AMD64 platform. If the current platform -// is not X86/AMD64 then all feature flags are false. -// -// X86 is padded to avoid false sharing. Further the HasAVX -// and HasAVX2 are only set if the OS supports XMM and YMM -// registers in addition to the CPUID feature bit being set. -var X86 struct { - _ CacheLinePad - HasAES bool // AES hardware implementation (AES NI) - HasADX bool // Multi-precision add-carry instruction extensions - HasAVX bool // Advanced vector extension - HasAVX2 bool // Advanced vector extension 2 - HasAVX512 bool // Advanced vector extension 512 - HasAVX512F bool // Advanced vector extension 512 Foundation Instructions - HasAVX512CD bool // Advanced vector extension 512 Conflict Detection Instructions - HasAVX512ER bool // Advanced vector extension 512 Exponential and Reciprocal Instructions - HasAVX512PF bool // Advanced vector extension 512 Prefetch Instructions Instructions - HasAVX512VL bool // Advanced vector extension 512 Vector Length Extensions - HasAVX512BW bool // Advanced vector extension 512 Byte and Word Instructions - HasAVX512DQ bool // Advanced vector extension 512 Doubleword and Quadword Instructions - HasAVX512IFMA bool // Advanced vector extension 512 Integer Fused Multiply Add - HasAVX512VBMI bool // Advanced vector extension 512 Vector Byte Manipulation Instructions - HasAVX5124VNNIW bool // Advanced vector extension 512 Vector Neural Network Instructions Word variable precision - HasAVX5124FMAPS bool // Advanced vector extension 512 Fused Multiply Accumulation Packed Single precision - HasAVX512VPOPCNTDQ bool // Advanced vector extension 512 Double and quad word population count instructions - HasAVX512VPCLMULQDQ bool // Advanced vector extension 512 Vector carry-less multiply operations - HasAVX512VNNI bool // Advanced vector extension 512 Vector Neural Network Instructions - HasAVX512GFNI bool // Advanced vector extension 512 Galois field New Instructions - HasAVX512VAES bool // Advanced vector extension 512 Vector AES instructions - HasAVX512VBMI2 bool // Advanced vector extension 512 Vector Byte Manipulation Instructions 2 - HasAVX512BITALG bool // Advanced vector extension 512 Bit Algorithms - HasAVX512BF16 bool // Advanced vector extension 512 BFloat16 Instructions - HasBMI1 bool // Bit manipulation instruction set 1 - HasBMI2 bool // Bit manipulation instruction set 2 - HasCX16 bool // Compare and exchange 16 Bytes - HasERMS bool // Enhanced REP for MOVSB and STOSB - HasFMA bool // Fused-multiply-add instructions - HasOSXSAVE bool // OS supports XSAVE/XRESTOR for saving/restoring XMM registers. - HasPCLMULQDQ bool // PCLMULQDQ instruction - most often used for AES-GCM - HasPOPCNT bool // Hamming weight instruction POPCNT. - HasRDRAND bool // RDRAND instruction (on-chip random number generator) - HasRDSEED bool // RDSEED instruction (on-chip random number generator) - HasSSE2 bool // Streaming SIMD extension 2 (always available on amd64) - HasSSE3 bool // Streaming SIMD extension 3 - HasSSSE3 bool // Supplemental streaming SIMD extension 3 - HasSSE41 bool // Streaming SIMD extension 4 and 4.1 - HasSSE42 bool // Streaming SIMD extension 4 and 4.2 - _ CacheLinePad -} - -// ARM64 contains the supported CPU features of the -// current ARMv8(aarch64) platform. If the current platform -// is not arm64 then all feature flags are false. -var ARM64 struct { - _ CacheLinePad - HasFP bool // Floating-point instruction set (always available) - HasASIMD bool // Advanced SIMD (always available) - HasEVTSTRM bool // Event stream support - HasAES bool // AES hardware implementation - HasPMULL bool // Polynomial multiplication instruction set - HasSHA1 bool // SHA1 hardware implementation - HasSHA2 bool // SHA2 hardware implementation - HasCRC32 bool // CRC32 hardware implementation - HasATOMICS bool // Atomic memory operation instruction set - HasFPHP bool // Half precision floating-point instruction set - HasASIMDHP bool // Advanced SIMD half precision instruction set - HasCPUID bool // CPUID identification scheme registers - HasASIMDRDM bool // Rounding double multiply add/subtract instruction set - HasJSCVT bool // Javascript conversion from floating-point to integer - HasFCMA bool // Floating-point multiplication and addition of complex numbers - HasLRCPC bool // Release Consistent processor consistent support - HasDCPOP bool // Persistent memory support - HasSHA3 bool // SHA3 hardware implementation - HasSM3 bool // SM3 hardware implementation - HasSM4 bool // SM4 hardware implementation - HasASIMDDP bool // Advanced SIMD double precision instruction set - HasSHA512 bool // SHA512 hardware implementation - HasSVE bool // Scalable Vector Extensions - HasASIMDFHM bool // Advanced SIMD multiplication FP16 to FP32 - _ CacheLinePad -} - -// ARM contains the supported CPU features of the current ARM (32-bit) platform. -// All feature flags are false if: -// 1. the current platform is not arm, or -// 2. the current operating system is not Linux. -var ARM struct { - _ CacheLinePad - HasSWP bool // SWP instruction support - HasHALF bool // Half-word load and store support - HasTHUMB bool // ARM Thumb instruction set - Has26BIT bool // Address space limited to 26-bits - HasFASTMUL bool // 32-bit operand, 64-bit result multiplication support - HasFPA bool // Floating point arithmetic support - HasVFP bool // Vector floating point support - HasEDSP bool // DSP Extensions support - HasJAVA bool // Java instruction set - HasIWMMXT bool // Intel Wireless MMX technology support - HasCRUNCH bool // MaverickCrunch context switching and handling - HasTHUMBEE bool // Thumb EE instruction set - HasNEON bool // NEON instruction set - HasVFPv3 bool // Vector floating point version 3 support - HasVFPv3D16 bool // Vector floating point version 3 D8-D15 - HasTLS bool // Thread local storage support - HasVFPv4 bool // Vector floating point version 4 support - HasIDIVA bool // Integer divide instruction support in ARM mode - HasIDIVT bool // Integer divide instruction support in Thumb mode - HasVFPD32 bool // Vector floating point version 3 D15-D31 - HasLPAE bool // Large Physical Address Extensions - HasEVTSTRM bool // Event stream support - HasAES bool // AES hardware implementation - HasPMULL bool // Polynomial multiplication instruction set - HasSHA1 bool // SHA1 hardware implementation - HasSHA2 bool // SHA2 hardware implementation - HasCRC32 bool // CRC32 hardware implementation - _ CacheLinePad -} - -// MIPS64X contains the supported CPU features of the current mips64/mips64le -// platforms. If the current platform is not mips64/mips64le or the current -// operating system is not Linux then all feature flags are false. -var MIPS64X struct { - _ CacheLinePad - HasMSA bool // MIPS SIMD architecture - _ CacheLinePad -} - -// PPC64 contains the supported CPU features of the current ppc64/ppc64le platforms. -// If the current platform is not ppc64/ppc64le then all feature flags are false. -// -// For ppc64/ppc64le, it is safe to check only for ISA level starting on ISA v3.00, -// since there are no optional categories. There are some exceptions that also -// require kernel support to work (DARN, SCV), so there are feature bits for -// those as well. The struct is padded to avoid false sharing. -var PPC64 struct { - _ CacheLinePad - HasDARN bool // Hardware random number generator (requires kernel enablement) - HasSCV bool // Syscall vectored (requires kernel enablement) - IsPOWER8 bool // ISA v2.07 (POWER8) - IsPOWER9 bool // ISA v3.00 (POWER9), implies IsPOWER8 - _ CacheLinePad -} - -// S390X contains the supported CPU features of the current IBM Z -// (s390x) platform. If the current platform is not IBM Z then all -// feature flags are false. -// -// S390X is padded to avoid false sharing. Further HasVX is only set -// if the OS supports vector registers in addition to the STFLE -// feature bit being set. -var S390X struct { - _ CacheLinePad - HasZARCH bool // z/Architecture mode is active [mandatory] - HasSTFLE bool // store facility list extended - HasLDISP bool // long (20-bit) displacements - HasEIMM bool // 32-bit immediates - HasDFP bool // decimal floating point - HasETF3EH bool // ETF-3 enhanced - HasMSA bool // message security assist (CPACF) - HasAES bool // KM-AES{128,192,256} functions - HasAESCBC bool // KMC-AES{128,192,256} functions - HasAESCTR bool // KMCTR-AES{128,192,256} functions - HasAESGCM bool // KMA-GCM-AES{128,192,256} functions - HasGHASH bool // KIMD-GHASH function - HasSHA1 bool // K{I,L}MD-SHA-1 functions - HasSHA256 bool // K{I,L}MD-SHA-256 functions - HasSHA512 bool // K{I,L}MD-SHA-512 functions - HasSHA3 bool // K{I,L}MD-SHA3-{224,256,384,512} and K{I,L}MD-SHAKE-{128,256} functions - HasVX bool // vector facility - HasVXE bool // vector-enhancements facility 1 - _ CacheLinePad -} - -func init() { - archInit() - initOptions() - processOptions() -} - -// options contains the cpu debug options that can be used in GODEBUG. -// Options are arch dependent and are added by the arch specific initOptions functions. -// Features that are mandatory for the specific GOARCH should have the Required field set -// (e.g. SSE2 on amd64). -var options []option - -// Option names should be lower case. e.g. avx instead of AVX. -type option struct { - Name string - Feature *bool - Specified bool // whether feature value was specified in GODEBUG - Enable bool // whether feature should be enabled - Required bool // whether feature is mandatory and can not be disabled -} - -func processOptions() { - env := os.Getenv("GODEBUG") -field: - for env != "" { - field := "" - i := strings.IndexByte(env, ',') - if i < 0 { - field, env = env, "" - } else { - field, env = env[:i], env[i+1:] - } - if len(field) < 4 || field[:4] != "cpu." { - continue - } - i = strings.IndexByte(field, '=') - if i < 0 { - print("GODEBUG sys/cpu: no value specified for \"", field, "\"\n") - continue - } - key, value := field[4:i], field[i+1:] // e.g. "SSE2", "on" - - var enable bool - switch value { - case "on": - enable = true - case "off": - enable = false - default: - print("GODEBUG sys/cpu: value \"", value, "\" not supported for cpu option \"", key, "\"\n") - continue field - } - - if key == "all" { - for i := range options { - options[i].Specified = true - options[i].Enable = enable || options[i].Required - } - continue field - } - - for i := range options { - if options[i].Name == key { - options[i].Specified = true - options[i].Enable = enable - continue field - } - } - - print("GODEBUG sys/cpu: unknown cpu feature \"", key, "\"\n") - } - - for _, o := range options { - if !o.Specified { - continue - } - - if o.Enable && !*o.Feature { - print("GODEBUG sys/cpu: can not enable \"", o.Name, "\", missing CPU support\n") - continue - } - - if !o.Enable && o.Required { - print("GODEBUG sys/cpu: can not disable \"", o.Name, "\", required CPU feature\n") - continue - } - - *o.Feature = o.Enable - } -} diff --git a/vendor/golang.org/x/sys/cpu/cpu_aix.go b/vendor/golang.org/x/sys/cpu/cpu_aix.go deleted file mode 100644 index 8aaeef5..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu_aix.go +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2019 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:build aix -// +build aix - -package cpu - -const ( - // getsystemcfg constants - _SC_IMPL = 2 - _IMPL_POWER8 = 0x10000 - _IMPL_POWER9 = 0x20000 -) - -func archInit() { - impl := getsystemcfg(_SC_IMPL) - if impl&_IMPL_POWER8 != 0 { - PPC64.IsPOWER8 = true - } - if impl&_IMPL_POWER9 != 0 { - PPC64.IsPOWER8 = true - PPC64.IsPOWER9 = true - } - - Initialized = true -} - -func getsystemcfg(label int) (n uint64) { - r0, _ := callgetsystemcfg(label) - n = uint64(r0) - return -} diff --git a/vendor/golang.org/x/sys/cpu/cpu_arm.go b/vendor/golang.org/x/sys/cpu/cpu_arm.go deleted file mode 100644 index 301b752..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu_arm.go +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright 2018 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 cpu - -const cacheLineSize = 32 - -// HWCAP/HWCAP2 bits. -// These are specific to Linux. -const ( - hwcap_SWP = 1 << 0 - hwcap_HALF = 1 << 1 - hwcap_THUMB = 1 << 2 - hwcap_26BIT = 1 << 3 - hwcap_FAST_MULT = 1 << 4 - hwcap_FPA = 1 << 5 - hwcap_VFP = 1 << 6 - hwcap_EDSP = 1 << 7 - hwcap_JAVA = 1 << 8 - hwcap_IWMMXT = 1 << 9 - hwcap_CRUNCH = 1 << 10 - hwcap_THUMBEE = 1 << 11 - hwcap_NEON = 1 << 12 - hwcap_VFPv3 = 1 << 13 - hwcap_VFPv3D16 = 1 << 14 - hwcap_TLS = 1 << 15 - hwcap_VFPv4 = 1 << 16 - hwcap_IDIVA = 1 << 17 - hwcap_IDIVT = 1 << 18 - hwcap_VFPD32 = 1 << 19 - hwcap_LPAE = 1 << 20 - hwcap_EVTSTRM = 1 << 21 - - hwcap2_AES = 1 << 0 - hwcap2_PMULL = 1 << 1 - hwcap2_SHA1 = 1 << 2 - hwcap2_SHA2 = 1 << 3 - hwcap2_CRC32 = 1 << 4 -) - -func initOptions() { - options = []option{ - {Name: "pmull", Feature: &ARM.HasPMULL}, - {Name: "sha1", Feature: &ARM.HasSHA1}, - {Name: "sha2", Feature: &ARM.HasSHA2}, - {Name: "swp", Feature: &ARM.HasSWP}, - {Name: "thumb", Feature: &ARM.HasTHUMB}, - {Name: "thumbee", Feature: &ARM.HasTHUMBEE}, - {Name: "tls", Feature: &ARM.HasTLS}, - {Name: "vfp", Feature: &ARM.HasVFP}, - {Name: "vfpd32", Feature: &ARM.HasVFPD32}, - {Name: "vfpv3", Feature: &ARM.HasVFPv3}, - {Name: "vfpv3d16", Feature: &ARM.HasVFPv3D16}, - {Name: "vfpv4", Feature: &ARM.HasVFPv4}, - {Name: "half", Feature: &ARM.HasHALF}, - {Name: "26bit", Feature: &ARM.Has26BIT}, - {Name: "fastmul", Feature: &ARM.HasFASTMUL}, - {Name: "fpa", Feature: &ARM.HasFPA}, - {Name: "edsp", Feature: &ARM.HasEDSP}, - {Name: "java", Feature: &ARM.HasJAVA}, - {Name: "iwmmxt", Feature: &ARM.HasIWMMXT}, - {Name: "crunch", Feature: &ARM.HasCRUNCH}, - {Name: "neon", Feature: &ARM.HasNEON}, - {Name: "idivt", Feature: &ARM.HasIDIVT}, - {Name: "idiva", Feature: &ARM.HasIDIVA}, - {Name: "lpae", Feature: &ARM.HasLPAE}, - {Name: "evtstrm", Feature: &ARM.HasEVTSTRM}, - {Name: "aes", Feature: &ARM.HasAES}, - {Name: "crc32", Feature: &ARM.HasCRC32}, - } - -} diff --git a/vendor/golang.org/x/sys/cpu/cpu_arm64.go b/vendor/golang.org/x/sys/cpu/cpu_arm64.go deleted file mode 100644 index 87dd5e3..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu_arm64.go +++ /dev/null @@ -1,172 +0,0 @@ -// Copyright 2019 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 cpu - -import "runtime" - -const cacheLineSize = 64 - -func initOptions() { - options = []option{ - {Name: "fp", Feature: &ARM64.HasFP}, - {Name: "asimd", Feature: &ARM64.HasASIMD}, - {Name: "evstrm", Feature: &ARM64.HasEVTSTRM}, - {Name: "aes", Feature: &ARM64.HasAES}, - {Name: "fphp", Feature: &ARM64.HasFPHP}, - {Name: "jscvt", Feature: &ARM64.HasJSCVT}, - {Name: "lrcpc", Feature: &ARM64.HasLRCPC}, - {Name: "pmull", Feature: &ARM64.HasPMULL}, - {Name: "sha1", Feature: &ARM64.HasSHA1}, - {Name: "sha2", Feature: &ARM64.HasSHA2}, - {Name: "sha3", Feature: &ARM64.HasSHA3}, - {Name: "sha512", Feature: &ARM64.HasSHA512}, - {Name: "sm3", Feature: &ARM64.HasSM3}, - {Name: "sm4", Feature: &ARM64.HasSM4}, - {Name: "sve", Feature: &ARM64.HasSVE}, - {Name: "crc32", Feature: &ARM64.HasCRC32}, - {Name: "atomics", Feature: &ARM64.HasATOMICS}, - {Name: "asimdhp", Feature: &ARM64.HasASIMDHP}, - {Name: "cpuid", Feature: &ARM64.HasCPUID}, - {Name: "asimrdm", Feature: &ARM64.HasASIMDRDM}, - {Name: "fcma", Feature: &ARM64.HasFCMA}, - {Name: "dcpop", Feature: &ARM64.HasDCPOP}, - {Name: "asimddp", Feature: &ARM64.HasASIMDDP}, - {Name: "asimdfhm", Feature: &ARM64.HasASIMDFHM}, - } -} - -func archInit() { - switch runtime.GOOS { - case "freebsd": - readARM64Registers() - case "linux", "netbsd": - doinit() - default: - // Most platforms don't seem to allow reading these registers. - // - // OpenBSD: - // See https://golang.org/issue/31746 - setMinimalFeatures() - } -} - -// setMinimalFeatures fakes the minimal ARM64 features expected by -// TestARM64minimalFeatures. -func setMinimalFeatures() { - ARM64.HasASIMD = true - ARM64.HasFP = true -} - -func readARM64Registers() { - Initialized = true - - parseARM64SystemRegisters(getisar0(), getisar1(), getpfr0()) -} - -func parseARM64SystemRegisters(isar0, isar1, pfr0 uint64) { - // ID_AA64ISAR0_EL1 - switch extractBits(isar0, 4, 7) { - case 1: - ARM64.HasAES = true - case 2: - ARM64.HasAES = true - ARM64.HasPMULL = true - } - - switch extractBits(isar0, 8, 11) { - case 1: - ARM64.HasSHA1 = true - } - - switch extractBits(isar0, 12, 15) { - case 1: - ARM64.HasSHA2 = true - case 2: - ARM64.HasSHA2 = true - ARM64.HasSHA512 = true - } - - switch extractBits(isar0, 16, 19) { - case 1: - ARM64.HasCRC32 = true - } - - switch extractBits(isar0, 20, 23) { - case 2: - ARM64.HasATOMICS = true - } - - switch extractBits(isar0, 28, 31) { - case 1: - ARM64.HasASIMDRDM = true - } - - switch extractBits(isar0, 32, 35) { - case 1: - ARM64.HasSHA3 = true - } - - switch extractBits(isar0, 36, 39) { - case 1: - ARM64.HasSM3 = true - } - - switch extractBits(isar0, 40, 43) { - case 1: - ARM64.HasSM4 = true - } - - switch extractBits(isar0, 44, 47) { - case 1: - ARM64.HasASIMDDP = true - } - - // ID_AA64ISAR1_EL1 - switch extractBits(isar1, 0, 3) { - case 1: - ARM64.HasDCPOP = true - } - - switch extractBits(isar1, 12, 15) { - case 1: - ARM64.HasJSCVT = true - } - - switch extractBits(isar1, 16, 19) { - case 1: - ARM64.HasFCMA = true - } - - switch extractBits(isar1, 20, 23) { - case 1: - ARM64.HasLRCPC = true - } - - // ID_AA64PFR0_EL1 - switch extractBits(pfr0, 16, 19) { - case 0: - ARM64.HasFP = true - case 1: - ARM64.HasFP = true - ARM64.HasFPHP = true - } - - switch extractBits(pfr0, 20, 23) { - case 0: - ARM64.HasASIMD = true - case 1: - ARM64.HasASIMD = true - ARM64.HasASIMDHP = true - } - - switch extractBits(pfr0, 32, 35) { - case 1: - ARM64.HasSVE = true - } -} - -func extractBits(data uint64, start, end uint) uint { - return (uint)(data>>start) & ((1 << (end - start + 1)) - 1) -} diff --git a/vendor/golang.org/x/sys/cpu/cpu_arm64.s b/vendor/golang.org/x/sys/cpu/cpu_arm64.s deleted file mode 100644 index c61f95a..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu_arm64.s +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2019 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:build gc -// +build gc - -#include "textflag.h" - -// func getisar0() uint64 -TEXT ·getisar0(SB),NOSPLIT,$0-8 - // get Instruction Set Attributes 0 into x0 - // mrs x0, ID_AA64ISAR0_EL1 = d5380600 - WORD $0xd5380600 - MOVD R0, ret+0(FP) - RET - -// func getisar1() uint64 -TEXT ·getisar1(SB),NOSPLIT,$0-8 - // get Instruction Set Attributes 1 into x0 - // mrs x0, ID_AA64ISAR1_EL1 = d5380620 - WORD $0xd5380620 - MOVD R0, ret+0(FP) - RET - -// func getpfr0() uint64 -TEXT ·getpfr0(SB),NOSPLIT,$0-8 - // get Processor Feature Register 0 into x0 - // mrs x0, ID_AA64PFR0_EL1 = d5380400 - WORD $0xd5380400 - MOVD R0, ret+0(FP) - RET diff --git a/vendor/golang.org/x/sys/cpu/cpu_gc_arm64.go b/vendor/golang.org/x/sys/cpu/cpu_gc_arm64.go deleted file mode 100644 index ccf542a..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu_gc_arm64.go +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2019 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:build gc -// +build gc - -package cpu - -func getisar0() uint64 -func getisar1() uint64 -func getpfr0() uint64 diff --git a/vendor/golang.org/x/sys/cpu/cpu_gc_s390x.go b/vendor/golang.org/x/sys/cpu/cpu_gc_s390x.go deleted file mode 100644 index 0af2f24..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu_gc_s390x.go +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2019 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:build gc -// +build gc - -package cpu - -// haveAsmFunctions reports whether the other functions in this file can -// be safely called. -func haveAsmFunctions() bool { return true } - -// The following feature detection functions are defined in cpu_s390x.s. -// They are likely to be expensive to call so the results should be cached. -func stfle() facilityList -func kmQuery() queryResult -func kmcQuery() queryResult -func kmctrQuery() queryResult -func kmaQuery() queryResult -func kimdQuery() queryResult -func klmdQuery() queryResult diff --git a/vendor/golang.org/x/sys/cpu/cpu_gc_x86.go b/vendor/golang.org/x/sys/cpu/cpu_gc_x86.go deleted file mode 100644 index fa7cdb9..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu_gc_x86.go +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2018 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:build (386 || amd64 || amd64p32) && gc -// +build 386 amd64 amd64p32 -// +build gc - -package cpu - -// cpuid is implemented in cpu_x86.s for gc compiler -// and in cpu_gccgo.c for gccgo. -func cpuid(eaxArg, ecxArg uint32) (eax, ebx, ecx, edx uint32) - -// xgetbv with ecx = 0 is implemented in cpu_x86.s for gc compiler -// and in cpu_gccgo.c for gccgo. -func xgetbv() (eax, edx uint32) diff --git a/vendor/golang.org/x/sys/cpu/cpu_gccgo_arm64.go b/vendor/golang.org/x/sys/cpu/cpu_gccgo_arm64.go deleted file mode 100644 index 2aff318..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu_gccgo_arm64.go +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2019 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:build gccgo -// +build gccgo - -package cpu - -func getisar0() uint64 { return 0 } -func getisar1() uint64 { return 0 } -func getpfr0() uint64 { return 0 } diff --git a/vendor/golang.org/x/sys/cpu/cpu_gccgo_s390x.go b/vendor/golang.org/x/sys/cpu/cpu_gccgo_s390x.go deleted file mode 100644 index 4bfbda6..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu_gccgo_s390x.go +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2019 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:build gccgo -// +build gccgo - -package cpu - -// haveAsmFunctions reports whether the other functions in this file can -// be safely called. -func haveAsmFunctions() bool { return false } - -// TODO(mundaym): the following feature detection functions are currently -// stubs. See https://golang.org/cl/162887 for how to fix this. -// They are likely to be expensive to call so the results should be cached. -func stfle() facilityList { panic("not implemented for gccgo") } -func kmQuery() queryResult { panic("not implemented for gccgo") } -func kmcQuery() queryResult { panic("not implemented for gccgo") } -func kmctrQuery() queryResult { panic("not implemented for gccgo") } -func kmaQuery() queryResult { panic("not implemented for gccgo") } -func kimdQuery() queryResult { panic("not implemented for gccgo") } -func klmdQuery() queryResult { panic("not implemented for gccgo") } diff --git a/vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.c b/vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.c deleted file mode 100644 index e363c7d..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.c +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2018 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 386 amd64 amd64p32 -// +build gccgo - -#include -#include - -// Need to wrap __get_cpuid_count because it's declared as static. -int -gccgoGetCpuidCount(uint32_t leaf, uint32_t subleaf, - uint32_t *eax, uint32_t *ebx, - uint32_t *ecx, uint32_t *edx) -{ - return __get_cpuid_count(leaf, subleaf, eax, ebx, ecx, edx); -} - -// xgetbv reads the contents of an XCR (Extended Control Register) -// specified in the ECX register into registers EDX:EAX. -// Currently, the only supported value for XCR is 0. -// -// TODO: Replace with a better alternative: -// -// #include -// -// #pragma GCC target("xsave") -// -// void gccgoXgetbv(uint32_t *eax, uint32_t *edx) { -// unsigned long long x = _xgetbv(0); -// *eax = x & 0xffffffff; -// *edx = (x >> 32) & 0xffffffff; -// } -// -// Note that _xgetbv is defined starting with GCC 8. -void -gccgoXgetbv(uint32_t *eax, uint32_t *edx) -{ - __asm(" xorl %%ecx, %%ecx\n" - " xgetbv" - : "=a"(*eax), "=d"(*edx)); -} diff --git a/vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.go b/vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.go deleted file mode 100644 index 863d415..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.go +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2018 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:build (386 || amd64 || amd64p32) && gccgo -// +build 386 amd64 amd64p32 -// +build gccgo - -package cpu - -//extern gccgoGetCpuidCount -func gccgoGetCpuidCount(eaxArg, ecxArg uint32, eax, ebx, ecx, edx *uint32) - -func cpuid(eaxArg, ecxArg uint32) (eax, ebx, ecx, edx uint32) { - var a, b, c, d uint32 - gccgoGetCpuidCount(eaxArg, ecxArg, &a, &b, &c, &d) - return a, b, c, d -} - -//extern gccgoXgetbv -func gccgoXgetbv(eax, edx *uint32) - -func xgetbv() (eax, edx uint32) { - var a, d uint32 - gccgoXgetbv(&a, &d) - return a, d -} - -// gccgo doesn't build on Darwin, per: -// https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/gcc.rb#L76 -func darwinSupportsAVX512() bool { - return false -} diff --git a/vendor/golang.org/x/sys/cpu/cpu_linux.go b/vendor/golang.org/x/sys/cpu/cpu_linux.go deleted file mode 100644 index 159a686..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu_linux.go +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2018 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:build !386 && !amd64 && !amd64p32 && !arm64 -// +build !386,!amd64,!amd64p32,!arm64 - -package cpu - -func archInit() { - if err := readHWCAP(); err != nil { - return - } - doinit() - Initialized = true -} diff --git a/vendor/golang.org/x/sys/cpu/cpu_linux_arm.go b/vendor/golang.org/x/sys/cpu/cpu_linux_arm.go deleted file mode 100644 index 2057006..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu_linux_arm.go +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2019 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 cpu - -func doinit() { - ARM.HasSWP = isSet(hwCap, hwcap_SWP) - ARM.HasHALF = isSet(hwCap, hwcap_HALF) - ARM.HasTHUMB = isSet(hwCap, hwcap_THUMB) - ARM.Has26BIT = isSet(hwCap, hwcap_26BIT) - ARM.HasFASTMUL = isSet(hwCap, hwcap_FAST_MULT) - ARM.HasFPA = isSet(hwCap, hwcap_FPA) - ARM.HasVFP = isSet(hwCap, hwcap_VFP) - ARM.HasEDSP = isSet(hwCap, hwcap_EDSP) - ARM.HasJAVA = isSet(hwCap, hwcap_JAVA) - ARM.HasIWMMXT = isSet(hwCap, hwcap_IWMMXT) - ARM.HasCRUNCH = isSet(hwCap, hwcap_CRUNCH) - ARM.HasTHUMBEE = isSet(hwCap, hwcap_THUMBEE) - ARM.HasNEON = isSet(hwCap, hwcap_NEON) - ARM.HasVFPv3 = isSet(hwCap, hwcap_VFPv3) - ARM.HasVFPv3D16 = isSet(hwCap, hwcap_VFPv3D16) - ARM.HasTLS = isSet(hwCap, hwcap_TLS) - ARM.HasVFPv4 = isSet(hwCap, hwcap_VFPv4) - ARM.HasIDIVA = isSet(hwCap, hwcap_IDIVA) - ARM.HasIDIVT = isSet(hwCap, hwcap_IDIVT) - ARM.HasVFPD32 = isSet(hwCap, hwcap_VFPD32) - ARM.HasLPAE = isSet(hwCap, hwcap_LPAE) - ARM.HasEVTSTRM = isSet(hwCap, hwcap_EVTSTRM) - ARM.HasAES = isSet(hwCap2, hwcap2_AES) - ARM.HasPMULL = isSet(hwCap2, hwcap2_PMULL) - ARM.HasSHA1 = isSet(hwCap2, hwcap2_SHA1) - ARM.HasSHA2 = isSet(hwCap2, hwcap2_SHA2) - ARM.HasCRC32 = isSet(hwCap2, hwcap2_CRC32) -} - -func isSet(hwc uint, value uint) bool { - return hwc&value != 0 -} diff --git a/vendor/golang.org/x/sys/cpu/cpu_linux_arm64.go b/vendor/golang.org/x/sys/cpu/cpu_linux_arm64.go deleted file mode 100644 index 79a38a0..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu_linux_arm64.go +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright 2018 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 cpu - -// HWCAP/HWCAP2 bits. These are exposed by Linux. -const ( - hwcap_FP = 1 << 0 - hwcap_ASIMD = 1 << 1 - hwcap_EVTSTRM = 1 << 2 - hwcap_AES = 1 << 3 - hwcap_PMULL = 1 << 4 - hwcap_SHA1 = 1 << 5 - hwcap_SHA2 = 1 << 6 - hwcap_CRC32 = 1 << 7 - hwcap_ATOMICS = 1 << 8 - hwcap_FPHP = 1 << 9 - hwcap_ASIMDHP = 1 << 10 - hwcap_CPUID = 1 << 11 - hwcap_ASIMDRDM = 1 << 12 - hwcap_JSCVT = 1 << 13 - hwcap_FCMA = 1 << 14 - hwcap_LRCPC = 1 << 15 - hwcap_DCPOP = 1 << 16 - hwcap_SHA3 = 1 << 17 - hwcap_SM3 = 1 << 18 - hwcap_SM4 = 1 << 19 - hwcap_ASIMDDP = 1 << 20 - hwcap_SHA512 = 1 << 21 - hwcap_SVE = 1 << 22 - hwcap_ASIMDFHM = 1 << 23 -) - -func doinit() { - if err := readHWCAP(); err != nil { - // failed to read /proc/self/auxv, try reading registers directly - readARM64Registers() - return - } - - // HWCAP feature bits - ARM64.HasFP = isSet(hwCap, hwcap_FP) - ARM64.HasASIMD = isSet(hwCap, hwcap_ASIMD) - ARM64.HasEVTSTRM = isSet(hwCap, hwcap_EVTSTRM) - ARM64.HasAES = isSet(hwCap, hwcap_AES) - ARM64.HasPMULL = isSet(hwCap, hwcap_PMULL) - ARM64.HasSHA1 = isSet(hwCap, hwcap_SHA1) - ARM64.HasSHA2 = isSet(hwCap, hwcap_SHA2) - ARM64.HasCRC32 = isSet(hwCap, hwcap_CRC32) - ARM64.HasATOMICS = isSet(hwCap, hwcap_ATOMICS) - ARM64.HasFPHP = isSet(hwCap, hwcap_FPHP) - ARM64.HasASIMDHP = isSet(hwCap, hwcap_ASIMDHP) - ARM64.HasCPUID = isSet(hwCap, hwcap_CPUID) - ARM64.HasASIMDRDM = isSet(hwCap, hwcap_ASIMDRDM) - ARM64.HasJSCVT = isSet(hwCap, hwcap_JSCVT) - ARM64.HasFCMA = isSet(hwCap, hwcap_FCMA) - ARM64.HasLRCPC = isSet(hwCap, hwcap_LRCPC) - ARM64.HasDCPOP = isSet(hwCap, hwcap_DCPOP) - ARM64.HasSHA3 = isSet(hwCap, hwcap_SHA3) - ARM64.HasSM3 = isSet(hwCap, hwcap_SM3) - ARM64.HasSM4 = isSet(hwCap, hwcap_SM4) - ARM64.HasASIMDDP = isSet(hwCap, hwcap_ASIMDDP) - ARM64.HasSHA512 = isSet(hwCap, hwcap_SHA512) - ARM64.HasSVE = isSet(hwCap, hwcap_SVE) - ARM64.HasASIMDFHM = isSet(hwCap, hwcap_ASIMDFHM) -} - -func isSet(hwc uint, value uint) bool { - return hwc&value != 0 -} diff --git a/vendor/golang.org/x/sys/cpu/cpu_linux_mips64x.go b/vendor/golang.org/x/sys/cpu/cpu_linux_mips64x.go deleted file mode 100644 index 6000db4..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu_linux_mips64x.go +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2020 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:build linux && (mips64 || mips64le) -// +build linux -// +build mips64 mips64le - -package cpu - -// HWCAP bits. These are exposed by the Linux kernel 5.4. -const ( - // CPU features - hwcap_MIPS_MSA = 1 << 1 -) - -func doinit() { - // HWCAP feature bits - MIPS64X.HasMSA = isSet(hwCap, hwcap_MIPS_MSA) -} - -func isSet(hwc uint, value uint) bool { - return hwc&value != 0 -} diff --git a/vendor/golang.org/x/sys/cpu/cpu_linux_noinit.go b/vendor/golang.org/x/sys/cpu/cpu_linux_noinit.go deleted file mode 100644 index f4992b1..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu_linux_noinit.go +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2019 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:build linux && !arm && !arm64 && !mips64 && !mips64le && !ppc64 && !ppc64le && !s390x -// +build linux,!arm,!arm64,!mips64,!mips64le,!ppc64,!ppc64le,!s390x - -package cpu - -func doinit() {} diff --git a/vendor/golang.org/x/sys/cpu/cpu_linux_ppc64x.go b/vendor/golang.org/x/sys/cpu/cpu_linux_ppc64x.go deleted file mode 100644 index 021356d..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu_linux_ppc64x.go +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2018 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:build linux && (ppc64 || ppc64le) -// +build linux -// +build ppc64 ppc64le - -package cpu - -// HWCAP/HWCAP2 bits. These are exposed by the kernel. -const ( - // ISA Level - _PPC_FEATURE2_ARCH_2_07 = 0x80000000 - _PPC_FEATURE2_ARCH_3_00 = 0x00800000 - - // CPU features - _PPC_FEATURE2_DARN = 0x00200000 - _PPC_FEATURE2_SCV = 0x00100000 -) - -func doinit() { - // HWCAP2 feature bits - PPC64.IsPOWER8 = isSet(hwCap2, _PPC_FEATURE2_ARCH_2_07) - PPC64.IsPOWER9 = isSet(hwCap2, _PPC_FEATURE2_ARCH_3_00) - PPC64.HasDARN = isSet(hwCap2, _PPC_FEATURE2_DARN) - PPC64.HasSCV = isSet(hwCap2, _PPC_FEATURE2_SCV) -} - -func isSet(hwc uint, value uint) bool { - return hwc&value != 0 -} diff --git a/vendor/golang.org/x/sys/cpu/cpu_linux_s390x.go b/vendor/golang.org/x/sys/cpu/cpu_linux_s390x.go deleted file mode 100644 index 1517ac6..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu_linux_s390x.go +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2019 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 cpu - -const ( - // bit mask values from /usr/include/bits/hwcap.h - hwcap_ZARCH = 2 - hwcap_STFLE = 4 - hwcap_MSA = 8 - hwcap_LDISP = 16 - hwcap_EIMM = 32 - hwcap_DFP = 64 - hwcap_ETF3EH = 256 - hwcap_VX = 2048 - hwcap_VXE = 8192 -) - -func initS390Xbase() { - // test HWCAP bit vector - has := func(featureMask uint) bool { - return hwCap&featureMask == featureMask - } - - // mandatory - S390X.HasZARCH = has(hwcap_ZARCH) - - // optional - S390X.HasSTFLE = has(hwcap_STFLE) - S390X.HasLDISP = has(hwcap_LDISP) - S390X.HasEIMM = has(hwcap_EIMM) - S390X.HasETF3EH = has(hwcap_ETF3EH) - S390X.HasDFP = has(hwcap_DFP) - S390X.HasMSA = has(hwcap_MSA) - S390X.HasVX = has(hwcap_VX) - if S390X.HasVX { - S390X.HasVXE = has(hwcap_VXE) - } -} diff --git a/vendor/golang.org/x/sys/cpu/cpu_mips64x.go b/vendor/golang.org/x/sys/cpu/cpu_mips64x.go deleted file mode 100644 index f4063c6..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu_mips64x.go +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2018 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:build mips64 || mips64le -// +build mips64 mips64le - -package cpu - -const cacheLineSize = 32 - -func initOptions() { - options = []option{ - {Name: "msa", Feature: &MIPS64X.HasMSA}, - } -} diff --git a/vendor/golang.org/x/sys/cpu/cpu_mipsx.go b/vendor/golang.org/x/sys/cpu/cpu_mipsx.go deleted file mode 100644 index 07c4e36..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu_mipsx.go +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2018 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:build mips || mipsle -// +build mips mipsle - -package cpu - -const cacheLineSize = 32 - -func initOptions() {} diff --git a/vendor/golang.org/x/sys/cpu/cpu_netbsd_arm64.go b/vendor/golang.org/x/sys/cpu/cpu_netbsd_arm64.go deleted file mode 100644 index ebfb3fc..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu_netbsd_arm64.go +++ /dev/null @@ -1,173 +0,0 @@ -// Copyright 2020 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 cpu - -import ( - "syscall" - "unsafe" -) - -// Minimal copy of functionality from x/sys/unix so the cpu package can call -// sysctl without depending on x/sys/unix. - -const ( - _CTL_QUERY = -2 - - _SYSCTL_VERS_1 = 0x1000000 -) - -var _zero uintptr - -func sysctl(mib []int32, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { - _p0 = unsafe.Pointer(&mib[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, errno := syscall.Syscall6( - syscall.SYS___SYSCTL, - uintptr(_p0), - uintptr(len(mib)), - uintptr(unsafe.Pointer(old)), - uintptr(unsafe.Pointer(oldlen)), - uintptr(unsafe.Pointer(new)), - uintptr(newlen)) - if errno != 0 { - return errno - } - return nil -} - -type sysctlNode struct { - Flags uint32 - Num int32 - Name [32]int8 - Ver uint32 - __rsvd uint32 - Un [16]byte - _sysctl_size [8]byte - _sysctl_func [8]byte - _sysctl_parent [8]byte - _sysctl_desc [8]byte -} - -func sysctlNodes(mib []int32) ([]sysctlNode, error) { - var olen uintptr - - // Get a list of all sysctl nodes below the given MIB by performing - // a sysctl for the given MIB with CTL_QUERY appended. - mib = append(mib, _CTL_QUERY) - qnode := sysctlNode{Flags: _SYSCTL_VERS_1} - qp := (*byte)(unsafe.Pointer(&qnode)) - sz := unsafe.Sizeof(qnode) - if err := sysctl(mib, nil, &olen, qp, sz); err != nil { - return nil, err - } - - // Now that we know the size, get the actual nodes. - nodes := make([]sysctlNode, olen/sz) - np := (*byte)(unsafe.Pointer(&nodes[0])) - if err := sysctl(mib, np, &olen, qp, sz); err != nil { - return nil, err - } - - return nodes, nil -} - -func nametomib(name string) ([]int32, error) { - // Split name into components. - var parts []string - last := 0 - for i := 0; i < len(name); i++ { - if name[i] == '.' { - parts = append(parts, name[last:i]) - last = i + 1 - } - } - parts = append(parts, name[last:]) - - mib := []int32{} - // Discover the nodes and construct the MIB OID. - for partno, part := range parts { - nodes, err := sysctlNodes(mib) - if err != nil { - return nil, err - } - for _, node := range nodes { - n := make([]byte, 0) - for i := range node.Name { - if node.Name[i] != 0 { - n = append(n, byte(node.Name[i])) - } - } - if string(n) == part { - mib = append(mib, int32(node.Num)) - break - } - } - if len(mib) != partno+1 { - return nil, err - } - } - - return mib, nil -} - -// aarch64SysctlCPUID is struct aarch64_sysctl_cpu_id from NetBSD's -type aarch64SysctlCPUID struct { - midr uint64 /* Main ID Register */ - revidr uint64 /* Revision ID Register */ - mpidr uint64 /* Multiprocessor Affinity Register */ - aa64dfr0 uint64 /* A64 Debug Feature Register 0 */ - aa64dfr1 uint64 /* A64 Debug Feature Register 1 */ - aa64isar0 uint64 /* A64 Instruction Set Attribute Register 0 */ - aa64isar1 uint64 /* A64 Instruction Set Attribute Register 1 */ - aa64mmfr0 uint64 /* A64 Memory Model Feature Register 0 */ - aa64mmfr1 uint64 /* A64 Memory Model Feature Register 1 */ - aa64mmfr2 uint64 /* A64 Memory Model Feature Register 2 */ - aa64pfr0 uint64 /* A64 Processor Feature Register 0 */ - aa64pfr1 uint64 /* A64 Processor Feature Register 1 */ - aa64zfr0 uint64 /* A64 SVE Feature ID Register 0 */ - mvfr0 uint32 /* Media and VFP Feature Register 0 */ - mvfr1 uint32 /* Media and VFP Feature Register 1 */ - mvfr2 uint32 /* Media and VFP Feature Register 2 */ - pad uint32 - clidr uint64 /* Cache Level ID Register */ - ctr uint64 /* Cache Type Register */ -} - -func sysctlCPUID(name string) (*aarch64SysctlCPUID, error) { - mib, err := nametomib(name) - if err != nil { - return nil, err - } - - out := aarch64SysctlCPUID{} - n := unsafe.Sizeof(out) - _, _, errno := syscall.Syscall6( - syscall.SYS___SYSCTL, - uintptr(unsafe.Pointer(&mib[0])), - uintptr(len(mib)), - uintptr(unsafe.Pointer(&out)), - uintptr(unsafe.Pointer(&n)), - uintptr(0), - uintptr(0)) - if errno != 0 { - return nil, errno - } - return &out, nil -} - -func doinit() { - cpuid, err := sysctlCPUID("machdep.cpu0.cpu_id") - if err != nil { - setMinimalFeatures() - return - } - parseARM64SystemRegisters(cpuid.aa64isar0, cpuid.aa64isar1, cpuid.aa64pfr0) - - Initialized = true -} diff --git a/vendor/golang.org/x/sys/cpu/cpu_other_arm.go b/vendor/golang.org/x/sys/cpu/cpu_other_arm.go deleted file mode 100644 index d7b4fb4..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu_other_arm.go +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2020 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:build !linux && arm -// +build !linux,arm - -package cpu - -func archInit() {} diff --git a/vendor/golang.org/x/sys/cpu/cpu_other_arm64.go b/vendor/golang.org/x/sys/cpu/cpu_other_arm64.go deleted file mode 100644 index f8c484f..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu_other_arm64.go +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2019 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:build !linux && !netbsd && arm64 -// +build !linux,!netbsd,arm64 - -package cpu - -func doinit() {} diff --git a/vendor/golang.org/x/sys/cpu/cpu_other_mips64x.go b/vendor/golang.org/x/sys/cpu/cpu_other_mips64x.go deleted file mode 100644 index 0dafe96..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu_other_mips64x.go +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2020 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:build !linux && (mips64 || mips64le) -// +build !linux -// +build mips64 mips64le - -package cpu - -func archInit() { - Initialized = true -} diff --git a/vendor/golang.org/x/sys/cpu/cpu_ppc64x.go b/vendor/golang.org/x/sys/cpu/cpu_ppc64x.go deleted file mode 100644 index 4e8acd1..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu_ppc64x.go +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2020 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:build ppc64 || ppc64le -// +build ppc64 ppc64le - -package cpu - -const cacheLineSize = 128 - -func initOptions() { - options = []option{ - {Name: "darn", Feature: &PPC64.HasDARN}, - {Name: "scv", Feature: &PPC64.HasSCV}, - } -} diff --git a/vendor/golang.org/x/sys/cpu/cpu_riscv64.go b/vendor/golang.org/x/sys/cpu/cpu_riscv64.go deleted file mode 100644 index bd6c128..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu_riscv64.go +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2019 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:build riscv64 -// +build riscv64 - -package cpu - -const cacheLineSize = 32 - -func initOptions() {} diff --git a/vendor/golang.org/x/sys/cpu/cpu_s390x.go b/vendor/golang.org/x/sys/cpu/cpu_s390x.go deleted file mode 100644 index 5881b88..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu_s390x.go +++ /dev/null @@ -1,172 +0,0 @@ -// Copyright 2020 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 cpu - -const cacheLineSize = 256 - -func initOptions() { - options = []option{ - {Name: "zarch", Feature: &S390X.HasZARCH, Required: true}, - {Name: "stfle", Feature: &S390X.HasSTFLE, Required: true}, - {Name: "ldisp", Feature: &S390X.HasLDISP, Required: true}, - {Name: "eimm", Feature: &S390X.HasEIMM, Required: true}, - {Name: "dfp", Feature: &S390X.HasDFP}, - {Name: "etf3eh", Feature: &S390X.HasETF3EH}, - {Name: "msa", Feature: &S390X.HasMSA}, - {Name: "aes", Feature: &S390X.HasAES}, - {Name: "aescbc", Feature: &S390X.HasAESCBC}, - {Name: "aesctr", Feature: &S390X.HasAESCTR}, - {Name: "aesgcm", Feature: &S390X.HasAESGCM}, - {Name: "ghash", Feature: &S390X.HasGHASH}, - {Name: "sha1", Feature: &S390X.HasSHA1}, - {Name: "sha256", Feature: &S390X.HasSHA256}, - {Name: "sha3", Feature: &S390X.HasSHA3}, - {Name: "sha512", Feature: &S390X.HasSHA512}, - {Name: "vx", Feature: &S390X.HasVX}, - {Name: "vxe", Feature: &S390X.HasVXE}, - } -} - -// bitIsSet reports whether the bit at index is set. The bit index -// is in big endian order, so bit index 0 is the leftmost bit. -func bitIsSet(bits []uint64, index uint) bool { - return bits[index/64]&((1<<63)>>(index%64)) != 0 -} - -// facility is a bit index for the named facility. -type facility uint8 - -const ( - // mandatory facilities - zarch facility = 1 // z architecture mode is active - stflef facility = 7 // store-facility-list-extended - ldisp facility = 18 // long-displacement - eimm facility = 21 // extended-immediate - - // miscellaneous facilities - dfp facility = 42 // decimal-floating-point - etf3eh facility = 30 // extended-translation 3 enhancement - - // cryptography facilities - msa facility = 17 // message-security-assist - msa3 facility = 76 // message-security-assist extension 3 - msa4 facility = 77 // message-security-assist extension 4 - msa5 facility = 57 // message-security-assist extension 5 - msa8 facility = 146 // message-security-assist extension 8 - msa9 facility = 155 // message-security-assist extension 9 - - // vector facilities - vx facility = 129 // vector facility - vxe facility = 135 // vector-enhancements 1 - vxe2 facility = 148 // vector-enhancements 2 -) - -// facilityList contains the result of an STFLE call. -// Bits are numbered in big endian order so the -// leftmost bit (the MSB) is at index 0. -type facilityList struct { - bits [4]uint64 -} - -// Has reports whether the given facilities are present. -func (s *facilityList) Has(fs ...facility) bool { - if len(fs) == 0 { - panic("no facility bits provided") - } - for _, f := range fs { - if !bitIsSet(s.bits[:], uint(f)) { - return false - } - } - return true -} - -// function is the code for the named cryptographic function. -type function uint8 - -const ( - // KM{,A,C,CTR} function codes - aes128 function = 18 // AES-128 - aes192 function = 19 // AES-192 - aes256 function = 20 // AES-256 - - // K{I,L}MD function codes - sha1 function = 1 // SHA-1 - sha256 function = 2 // SHA-256 - sha512 function = 3 // SHA-512 - sha3_224 function = 32 // SHA3-224 - sha3_256 function = 33 // SHA3-256 - sha3_384 function = 34 // SHA3-384 - sha3_512 function = 35 // SHA3-512 - shake128 function = 36 // SHAKE-128 - shake256 function = 37 // SHAKE-256 - - // KLMD function codes - ghash function = 65 // GHASH -) - -// queryResult contains the result of a Query function -// call. Bits are numbered in big endian order so the -// leftmost bit (the MSB) is at index 0. -type queryResult struct { - bits [2]uint64 -} - -// Has reports whether the given functions are present. -func (q *queryResult) Has(fns ...function) bool { - if len(fns) == 0 { - panic("no function codes provided") - } - for _, f := range fns { - if !bitIsSet(q.bits[:], uint(f)) { - return false - } - } - return true -} - -func doinit() { - initS390Xbase() - - // We need implementations of stfle, km and so on - // to detect cryptographic features. - if !haveAsmFunctions() { - return - } - - // optional cryptographic functions - if S390X.HasMSA { - aes := []function{aes128, aes192, aes256} - - // cipher message - km, kmc := kmQuery(), kmcQuery() - S390X.HasAES = km.Has(aes...) - S390X.HasAESCBC = kmc.Has(aes...) - if S390X.HasSTFLE { - facilities := stfle() - if facilities.Has(msa4) { - kmctr := kmctrQuery() - S390X.HasAESCTR = kmctr.Has(aes...) - } - if facilities.Has(msa8) { - kma := kmaQuery() - S390X.HasAESGCM = kma.Has(aes...) - } - } - - // compute message digest - kimd := kimdQuery() // intermediate (no padding) - klmd := klmdQuery() // last (padding) - S390X.HasSHA1 = kimd.Has(sha1) && klmd.Has(sha1) - S390X.HasSHA256 = kimd.Has(sha256) && klmd.Has(sha256) - S390X.HasSHA512 = kimd.Has(sha512) && klmd.Has(sha512) - S390X.HasGHASH = kimd.Has(ghash) // KLMD-GHASH does not exist - sha3 := []function{ - sha3_224, sha3_256, sha3_384, sha3_512, - shake128, shake256, - } - S390X.HasSHA3 = kimd.Has(sha3...) && klmd.Has(sha3...) - } -} diff --git a/vendor/golang.org/x/sys/cpu/cpu_s390x.s b/vendor/golang.org/x/sys/cpu/cpu_s390x.s deleted file mode 100644 index 96f81e2..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu_s390x.s +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright 2019 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:build gc -// +build gc - -#include "textflag.h" - -// func stfle() facilityList -TEXT ·stfle(SB), NOSPLIT|NOFRAME, $0-32 - MOVD $ret+0(FP), R1 - MOVD $3, R0 // last doubleword index to store - XC $32, (R1), (R1) // clear 4 doublewords (32 bytes) - WORD $0xb2b01000 // store facility list extended (STFLE) - RET - -// func kmQuery() queryResult -TEXT ·kmQuery(SB), NOSPLIT|NOFRAME, $0-16 - MOVD $0, R0 // set function code to 0 (KM-Query) - MOVD $ret+0(FP), R1 // address of 16-byte return value - WORD $0xB92E0024 // cipher message (KM) - RET - -// func kmcQuery() queryResult -TEXT ·kmcQuery(SB), NOSPLIT|NOFRAME, $0-16 - MOVD $0, R0 // set function code to 0 (KMC-Query) - MOVD $ret+0(FP), R1 // address of 16-byte return value - WORD $0xB92F0024 // cipher message with chaining (KMC) - RET - -// func kmctrQuery() queryResult -TEXT ·kmctrQuery(SB), NOSPLIT|NOFRAME, $0-16 - MOVD $0, R0 // set function code to 0 (KMCTR-Query) - MOVD $ret+0(FP), R1 // address of 16-byte return value - WORD $0xB92D4024 // cipher message with counter (KMCTR) - RET - -// func kmaQuery() queryResult -TEXT ·kmaQuery(SB), NOSPLIT|NOFRAME, $0-16 - MOVD $0, R0 // set function code to 0 (KMA-Query) - MOVD $ret+0(FP), R1 // address of 16-byte return value - WORD $0xb9296024 // cipher message with authentication (KMA) - RET - -// func kimdQuery() queryResult -TEXT ·kimdQuery(SB), NOSPLIT|NOFRAME, $0-16 - MOVD $0, R0 // set function code to 0 (KIMD-Query) - MOVD $ret+0(FP), R1 // address of 16-byte return value - WORD $0xB93E0024 // compute intermediate message digest (KIMD) - RET - -// func klmdQuery() queryResult -TEXT ·klmdQuery(SB), NOSPLIT|NOFRAME, $0-16 - MOVD $0, R0 // set function code to 0 (KLMD-Query) - MOVD $ret+0(FP), R1 // address of 16-byte return value - WORD $0xB93F0024 // compute last message digest (KLMD) - RET diff --git a/vendor/golang.org/x/sys/cpu/cpu_wasm.go b/vendor/golang.org/x/sys/cpu/cpu_wasm.go deleted file mode 100644 index 7747d88..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu_wasm.go +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2019 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:build wasm -// +build wasm - -package cpu - -// We're compiling the cpu package for an unknown (software-abstracted) CPU. -// Make CacheLinePad an empty struct and hope that the usual struct alignment -// rules are good enough. - -const cacheLineSize = 0 - -func initOptions() {} - -func archInit() {} diff --git a/vendor/golang.org/x/sys/cpu/cpu_x86.go b/vendor/golang.org/x/sys/cpu/cpu_x86.go deleted file mode 100644 index f5aacfc..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu_x86.go +++ /dev/null @@ -1,145 +0,0 @@ -// Copyright 2018 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:build 386 || amd64 || amd64p32 -// +build 386 amd64 amd64p32 - -package cpu - -import "runtime" - -const cacheLineSize = 64 - -func initOptions() { - options = []option{ - {Name: "adx", Feature: &X86.HasADX}, - {Name: "aes", Feature: &X86.HasAES}, - {Name: "avx", Feature: &X86.HasAVX}, - {Name: "avx2", Feature: &X86.HasAVX2}, - {Name: "avx512", Feature: &X86.HasAVX512}, - {Name: "avx512f", Feature: &X86.HasAVX512F}, - {Name: "avx512cd", Feature: &X86.HasAVX512CD}, - {Name: "avx512er", Feature: &X86.HasAVX512ER}, - {Name: "avx512pf", Feature: &X86.HasAVX512PF}, - {Name: "avx512vl", Feature: &X86.HasAVX512VL}, - {Name: "avx512bw", Feature: &X86.HasAVX512BW}, - {Name: "avx512dq", Feature: &X86.HasAVX512DQ}, - {Name: "avx512ifma", Feature: &X86.HasAVX512IFMA}, - {Name: "avx512vbmi", Feature: &X86.HasAVX512VBMI}, - {Name: "avx512vnniw", Feature: &X86.HasAVX5124VNNIW}, - {Name: "avx5124fmaps", Feature: &X86.HasAVX5124FMAPS}, - {Name: "avx512vpopcntdq", Feature: &X86.HasAVX512VPOPCNTDQ}, - {Name: "avx512vpclmulqdq", Feature: &X86.HasAVX512VPCLMULQDQ}, - {Name: "avx512vnni", Feature: &X86.HasAVX512VNNI}, - {Name: "avx512gfni", Feature: &X86.HasAVX512GFNI}, - {Name: "avx512vaes", Feature: &X86.HasAVX512VAES}, - {Name: "avx512vbmi2", Feature: &X86.HasAVX512VBMI2}, - {Name: "avx512bitalg", Feature: &X86.HasAVX512BITALG}, - {Name: "avx512bf16", Feature: &X86.HasAVX512BF16}, - {Name: "bmi1", Feature: &X86.HasBMI1}, - {Name: "bmi2", Feature: &X86.HasBMI2}, - {Name: "cx16", Feature: &X86.HasCX16}, - {Name: "erms", Feature: &X86.HasERMS}, - {Name: "fma", Feature: &X86.HasFMA}, - {Name: "osxsave", Feature: &X86.HasOSXSAVE}, - {Name: "pclmulqdq", Feature: &X86.HasPCLMULQDQ}, - {Name: "popcnt", Feature: &X86.HasPOPCNT}, - {Name: "rdrand", Feature: &X86.HasRDRAND}, - {Name: "rdseed", Feature: &X86.HasRDSEED}, - {Name: "sse3", Feature: &X86.HasSSE3}, - {Name: "sse41", Feature: &X86.HasSSE41}, - {Name: "sse42", Feature: &X86.HasSSE42}, - {Name: "ssse3", Feature: &X86.HasSSSE3}, - - // These capabilities should always be enabled on amd64: - {Name: "sse2", Feature: &X86.HasSSE2, Required: runtime.GOARCH == "amd64"}, - } -} - -func archInit() { - - Initialized = true - - maxID, _, _, _ := cpuid(0, 0) - - if maxID < 1 { - return - } - - _, _, ecx1, edx1 := cpuid(1, 0) - X86.HasSSE2 = isSet(26, edx1) - - X86.HasSSE3 = isSet(0, ecx1) - X86.HasPCLMULQDQ = isSet(1, ecx1) - X86.HasSSSE3 = isSet(9, ecx1) - X86.HasFMA = isSet(12, ecx1) - X86.HasCX16 = isSet(13, ecx1) - X86.HasSSE41 = isSet(19, ecx1) - X86.HasSSE42 = isSet(20, ecx1) - X86.HasPOPCNT = isSet(23, ecx1) - X86.HasAES = isSet(25, ecx1) - X86.HasOSXSAVE = isSet(27, ecx1) - X86.HasRDRAND = isSet(30, ecx1) - - var osSupportsAVX, osSupportsAVX512 bool - // For XGETBV, OSXSAVE bit is required and sufficient. - if X86.HasOSXSAVE { - eax, _ := xgetbv() - // Check if XMM and YMM registers have OS support. - osSupportsAVX = isSet(1, eax) && isSet(2, eax) - - if runtime.GOOS == "darwin" { - // Darwin doesn't save/restore AVX-512 mask registers correctly across signal handlers. - // Since users can't rely on mask register contents, let's not advertise AVX-512 support. - // See issue 49233. - osSupportsAVX512 = false - } else { - // Check if OPMASK and ZMM registers have OS support. - osSupportsAVX512 = osSupportsAVX && isSet(5, eax) && isSet(6, eax) && isSet(7, eax) - } - } - - X86.HasAVX = isSet(28, ecx1) && osSupportsAVX - - if maxID < 7 { - return - } - - _, ebx7, ecx7, edx7 := cpuid(7, 0) - X86.HasBMI1 = isSet(3, ebx7) - X86.HasAVX2 = isSet(5, ebx7) && osSupportsAVX - X86.HasBMI2 = isSet(8, ebx7) - X86.HasERMS = isSet(9, ebx7) - X86.HasRDSEED = isSet(18, ebx7) - X86.HasADX = isSet(19, ebx7) - - X86.HasAVX512 = isSet(16, ebx7) && osSupportsAVX512 // Because avx-512 foundation is the core required extension - if X86.HasAVX512 { - X86.HasAVX512F = true - X86.HasAVX512CD = isSet(28, ebx7) - X86.HasAVX512ER = isSet(27, ebx7) - X86.HasAVX512PF = isSet(26, ebx7) - X86.HasAVX512VL = isSet(31, ebx7) - X86.HasAVX512BW = isSet(30, ebx7) - X86.HasAVX512DQ = isSet(17, ebx7) - X86.HasAVX512IFMA = isSet(21, ebx7) - X86.HasAVX512VBMI = isSet(1, ecx7) - X86.HasAVX5124VNNIW = isSet(2, edx7) - X86.HasAVX5124FMAPS = isSet(3, edx7) - X86.HasAVX512VPOPCNTDQ = isSet(14, ecx7) - X86.HasAVX512VPCLMULQDQ = isSet(10, ecx7) - X86.HasAVX512VNNI = isSet(11, ecx7) - X86.HasAVX512GFNI = isSet(8, ecx7) - X86.HasAVX512VAES = isSet(9, ecx7) - X86.HasAVX512VBMI2 = isSet(6, ecx7) - X86.HasAVX512BITALG = isSet(12, ecx7) - - eax71, _, _, _ := cpuid(7, 1) - X86.HasAVX512BF16 = isSet(5, eax71) - } -} - -func isSet(bitpos uint, value uint32) bool { - return value&(1<> 63)) -) - -// For those platforms don't have a 'cpuid' equivalent we use HWCAP/HWCAP2 -// These are initialized in cpu_$GOARCH.go -// and should not be changed after they are initialized. -var hwCap uint -var hwCap2 uint - -func readHWCAP() error { - buf, err := ioutil.ReadFile(procAuxv) - if err != nil { - // e.g. on android /proc/self/auxv is not accessible, so silently - // ignore the error and leave Initialized = false. On some - // architectures (e.g. arm64) doinit() implements a fallback - // readout and will set Initialized = true again. - return err - } - bo := hostByteOrder() - for len(buf) >= 2*(uintSize/8) { - var tag, val uint - switch uintSize { - case 32: - tag = uint(bo.Uint32(buf[0:])) - val = uint(bo.Uint32(buf[4:])) - buf = buf[8:] - case 64: - tag = uint(bo.Uint64(buf[0:])) - val = uint(bo.Uint64(buf[8:])) - buf = buf[16:] - } - switch tag { - case _AT_HWCAP: - hwCap = val - case _AT_HWCAP2: - hwCap2 = val - } - } - return nil -} diff --git a/vendor/golang.org/x/sys/cpu/syscall_aix_gccgo.go b/vendor/golang.org/x/sys/cpu/syscall_aix_gccgo.go deleted file mode 100644 index 9613415..0000000 --- a/vendor/golang.org/x/sys/cpu/syscall_aix_gccgo.go +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2020 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. - -// Recreate a getsystemcfg syscall handler instead of -// using the one provided by x/sys/unix to avoid having -// the dependency between them. (See golang.org/issue/32102) -// Moreover, this file will be used during the building of -// gccgo's libgo and thus must not used a CGo method. - -//go:build aix && gccgo -// +build aix,gccgo - -package cpu - -import ( - "syscall" -) - -//extern getsystemcfg -func gccgoGetsystemcfg(label uint32) (r uint64) - -func callgetsystemcfg(label int) (r1 uintptr, e1 syscall.Errno) { - r1 = uintptr(gccgoGetsystemcfg(uint32(label))) - e1 = syscall.GetErrno() - return -} diff --git a/vendor/golang.org/x/sys/cpu/syscall_aix_ppc64_gc.go b/vendor/golang.org/x/sys/cpu/syscall_aix_ppc64_gc.go deleted file mode 100644 index 904be42..0000000 --- a/vendor/golang.org/x/sys/cpu/syscall_aix_ppc64_gc.go +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2019 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. - -// Minimal copy of x/sys/unix so the cpu package can make a -// system call on AIX without depending on x/sys/unix. -// (See golang.org/issue/32102) - -//go:build aix && ppc64 && gc -// +build aix,ppc64,gc - -package cpu - -import ( - "syscall" - "unsafe" -) - -//go:cgo_import_dynamic libc_getsystemcfg getsystemcfg "libc.a/shr_64.o" - -//go:linkname libc_getsystemcfg libc_getsystemcfg - -type syscallFunc uintptr - -var libc_getsystemcfg syscallFunc - -type errno = syscall.Errno - -// Implemented in runtime/syscall_aix.go. -func rawSyscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err errno) -func syscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err errno) - -func callgetsystemcfg(label int) (r1 uintptr, e1 errno) { - r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getsystemcfg)), 1, uintptr(label), 0, 0, 0, 0, 0) - return -} diff --git a/vendor/golang.org/x/sys/execabs/execabs.go b/vendor/golang.org/x/sys/execabs/execabs.go deleted file mode 100644 index 7819249..0000000 --- a/vendor/golang.org/x/sys/execabs/execabs.go +++ /dev/null @@ -1,102 +0,0 @@ -// Copyright 2020 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 execabs is a drop-in replacement for os/exec -// that requires PATH lookups to find absolute paths. -// That is, execabs.Command("cmd") runs the same PATH lookup -// as exec.Command("cmd"), but if the result is a path -// which is relative, the Run and Start methods will report -// an error instead of running the executable. -// -// See https://blog.golang.org/path-security for more information -// about when it may be necessary or appropriate to use this package. -package execabs - -import ( - "context" - "fmt" - "os/exec" - "path/filepath" - "reflect" - "unsafe" -) - -// ErrNotFound is the error resulting if a path search failed to find an executable file. -// It is an alias for exec.ErrNotFound. -var ErrNotFound = exec.ErrNotFound - -// Cmd represents an external command being prepared or run. -// It is an alias for exec.Cmd. -type Cmd = exec.Cmd - -// Error is returned by LookPath when it fails to classify a file as an executable. -// It is an alias for exec.Error. -type Error = exec.Error - -// An ExitError reports an unsuccessful exit by a command. -// It is an alias for exec.ExitError. -type ExitError = exec.ExitError - -func relError(file, path string) error { - return fmt.Errorf("%s resolves to executable in current directory (.%c%s)", file, filepath.Separator, path) -} - -// LookPath searches for an executable named file in the directories -// named by the PATH environment variable. If file contains a slash, -// it is tried directly and the PATH is not consulted. The result will be -// an absolute path. -// -// LookPath differs from exec.LookPath in its handling of PATH lookups, -// which are used for file names without slashes. If exec.LookPath's -// PATH lookup would have returned an executable from the current directory, -// LookPath instead returns an error. -func LookPath(file string) (string, error) { - path, err := exec.LookPath(file) - if err != nil { - return "", err - } - if filepath.Base(file) == file && !filepath.IsAbs(path) { - return "", relError(file, path) - } - return path, nil -} - -func fixCmd(name string, cmd *exec.Cmd) { - if filepath.Base(name) == name && !filepath.IsAbs(cmd.Path) { - // exec.Command was called with a bare binary name and - // exec.LookPath returned a path which is not absolute. - // Set cmd.lookPathErr and clear cmd.Path so that it - // cannot be run. - lookPathErr := (*error)(unsafe.Pointer(reflect.ValueOf(cmd).Elem().FieldByName("lookPathErr").Addr().Pointer())) - if *lookPathErr == nil { - *lookPathErr = relError(name, cmd.Path) - } - cmd.Path = "" - } -} - -// CommandContext is like Command but includes a context. -// -// The provided context is used to kill the process (by calling os.Process.Kill) -// if the context becomes done before the command completes on its own. -func CommandContext(ctx context.Context, name string, arg ...string) *exec.Cmd { - cmd := exec.CommandContext(ctx, name, arg...) - fixCmd(name, cmd) - return cmd - -} - -// Command returns the Cmd struct to execute the named program with the given arguments. -// See exec.Command for most details. -// -// Command differs from exec.Command in its handling of PATH lookups, -// which are used when the program name contains no slashes. -// If exec.Command would have returned an exec.Cmd configured to run an -// executable from the current directory, Command instead -// returns an exec.Cmd that will return an error from Start or Run. -func Command(name string, arg ...string) *exec.Cmd { - cmd := exec.Command(name, arg...) - fixCmd(name, cmd) - return cmd -} diff --git a/vendor/golang.org/x/sys/unix/asm_linux_loong64.s b/vendor/golang.org/x/sys/unix/asm_linux_loong64.s new file mode 100644 index 0000000..6abd48e --- /dev/null +++ b/vendor/golang.org/x/sys/unix/asm_linux_loong64.s @@ -0,0 +1,54 @@ +// Copyright 2022 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:build linux && loong64 && gc +// +build linux +// +build loong64 +// +build gc + +#include "textflag.h" + + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-56 + JMP syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-80 + JMP syscall·Syscall6(SB) + +TEXT ·SyscallNoError(SB),NOSPLIT,$0-48 + JAL runtime·entersyscall(SB) + MOVV a1+8(FP), R4 + MOVV a2+16(FP), R5 + MOVV a3+24(FP), R6 + MOVV R0, R7 + MOVV R0, R8 + MOVV R0, R9 + MOVV trap+0(FP), R11 // syscall entry + SYSCALL + MOVV R4, r1+32(FP) + MOVV R5, r2+40(FP) + JAL runtime·exitsyscall(SB) + RET + +TEXT ·RawSyscall(SB),NOSPLIT,$0-56 + JMP syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 + JMP syscall·RawSyscall6(SB) + +TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48 + MOVV a1+8(FP), R4 + MOVV a2+16(FP), R5 + MOVV a3+24(FP), R6 + MOVV R0, R7 + MOVV R0, R8 + MOVV R0, R9 + MOVV trap+0(FP), R11 // syscall entry + SYSCALL + MOVV R4, r1+32(FP) + MOVV R5, r2+40(FP) + RET diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_alarm.go b/vendor/golang.org/x/sys/unix/syscall_linux_alarm.go new file mode 100644 index 0000000..08086ac --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_alarm.go @@ -0,0 +1,14 @@ +// Copyright 2022 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:build linux && (386 || amd64 || mips || mipsle || mips64 || mipsle || ppc64 || ppc64le || ppc || s390x || sparc64) +// +build linux +// +build 386 amd64 mips mipsle mips64 mipsle ppc64 ppc64le ppc s390x sparc64 + +package unix + +// SYS_ALARM is not defined on arm or riscv, but is available for other GOARCH +// values. + +//sys Alarm(seconds uint) (remaining uint, err error) diff --git a/vendor/golang.org/x/tools/AUTHORS b/vendor/golang.org/x/tools/AUTHORS deleted file mode 100644 index 15167cd..0000000 --- a/vendor/golang.org/x/tools/AUTHORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code refers to The Go Authors for copyright purposes. -# The master list of authors is in the main Go distribution, -# visible at http://tip.golang.org/AUTHORS. diff --git a/vendor/golang.org/x/tools/CONTRIBUTORS b/vendor/golang.org/x/tools/CONTRIBUTORS deleted file mode 100644 index 1c4577e..0000000 --- a/vendor/golang.org/x/tools/CONTRIBUTORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code was written by the Go contributors. -# The master list of contributors is in the main Go distribution, -# visible at http://tip.golang.org/CONTRIBUTORS. diff --git a/vendor/golang.org/x/tools/LICENSE b/vendor/golang.org/x/tools/LICENSE deleted file mode 100644 index 6a66aea..0000000 --- a/vendor/golang.org/x/tools/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -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 deleted file mode 100644 index 7330990..0000000 --- a/vendor/golang.org/x/tools/PATENTS +++ /dev/null @@ -1,22 +0,0 @@ -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/go/gcexportdata/gcexportdata.go b/vendor/golang.org/x/tools/go/gcexportdata/gcexportdata.go deleted file mode 100644 index cec819d..0000000 --- a/vendor/golang.org/x/tools/go/gcexportdata/gcexportdata.go +++ /dev/null @@ -1,146 +0,0 @@ -// Copyright 2016 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package gcexportdata provides functions for locating, reading, and -// writing export data files containing type information produced by the -// gc compiler. This package supports go1.7 export data format and all -// later versions. -// -// Although it might seem convenient for this package to live alongside -// go/types in the standard library, this would cause version skew -// problems for developer tools that use it, since they must be able to -// consume the outputs of the gc compiler both before and after a Go -// update such as from Go 1.7 to Go 1.8. Because this package lives in -// golang.org/x/tools, sites can update their version of this repo some -// time before the Go 1.8 release and rebuild and redeploy their -// developer tools, which will then be able to consume both Go 1.7 and -// Go 1.8 export data files, so they will work before and after the -// Go update. (See discussion at https://golang.org/issue/15651.) -// -package gcexportdata // import "golang.org/x/tools/go/gcexportdata" - -import ( - "bufio" - "bytes" - "fmt" - "go/token" - "go/types" - "io" - "io/ioutil" - - "golang.org/x/tools/go/internal/gcimporter" -) - -// Find returns the name of an object (.o) or archive (.a) file -// containing type information for the specified import path, -// using the workspace layout conventions of go/build. -// If no file was found, an empty filename is returned. -// -// A relative srcDir is interpreted relative to the current working directory. -// -// Find also returns the package's resolved (canonical) import path, -// reflecting the effects of srcDir and vendoring on importPath. -func Find(importPath, srcDir string) (filename, path string) { - return gcimporter.FindPkg(importPath, srcDir) -} - -// NewReader returns a reader for the export data section of an object -// (.o) or archive (.a) file read from r. The new reader may provide -// additional trailing data beyond the end of the export data. -func NewReader(r io.Reader) (io.Reader, error) { - buf := bufio.NewReader(r) - _, size, err := gcimporter.FindExportData(buf) - if err != nil { - return nil, err - } - - if size >= 0 { - // We were given an archive and found the __.PKGDEF in it. - // This tells us the size of the export data, and we don't - // need to return the entire file. - return &io.LimitedReader{ - R: buf, - N: size, - }, nil - } else { - // We were given an object file. As such, we don't know how large - // the export data is and must return the entire file. - return buf, nil - } -} - -// Read reads export data from in, decodes it, and returns type -// information for the package. -// The package name is specified by path. -// File position information is added to fset. -// -// Read may inspect and add to the imports map to ensure that references -// within the export data to other packages are consistent. The caller -// must ensure that imports[path] does not exist, or exists but is -// incomplete (see types.Package.Complete), and Read inserts the -// resulting package into this map entry. -// -// On return, the state of the reader is undefined. -func Read(in io.Reader, fset *token.FileSet, imports map[string]*types.Package, path string) (*types.Package, error) { - data, err := ioutil.ReadAll(in) - if err != nil { - return nil, fmt.Errorf("reading export data for %q: %v", path, err) - } - - if bytes.HasPrefix(data, []byte("!")) { - return nil, fmt.Errorf("can't read export data for %q directly from an archive file (call gcexportdata.NewReader first to extract export data)", path) - } - - // The App Engine Go runtime v1.6 uses the old export data format. - // TODO(adonovan): delete once v1.7 has been around for a while. - if bytes.HasPrefix(data, []byte("package ")) { - return gcimporter.ImportData(imports, path, path, bytes.NewReader(data)) - } - - // The indexed export format starts with an 'i'; the older - // binary export format starts with a 'c', 'd', or 'v' - // (from "version"). Select appropriate importer. - if len(data) > 0 && data[0] == 'i' { - _, pkg, err := gcimporter.IImportData(fset, imports, data[1:], path) - return pkg, err - } - - _, pkg, err := gcimporter.BImportData(fset, imports, data, path) - return pkg, err -} - -// Write writes encoded type information for the specified package to out. -// The FileSet provides file position information for named objects. -func Write(out io.Writer, fset *token.FileSet, pkg *types.Package) error { - if _, err := io.WriteString(out, "i"); err != nil { - return err - } - return gcimporter.IExportData(out, fset, pkg) -} - -// ReadBundle reads an export bundle from in, decodes it, and returns type -// information for the packages. -// File position information is added to fset. -// -// ReadBundle may inspect and add to the imports map to ensure that references -// within the export bundle to other packages are consistent. -// -// On return, the state of the reader is undefined. -// -// Experimental: This API is experimental and may change in the future. -func ReadBundle(in io.Reader, fset *token.FileSet, imports map[string]*types.Package) ([]*types.Package, error) { - data, err := ioutil.ReadAll(in) - if err != nil { - return nil, fmt.Errorf("reading export bundle: %v", err) - } - return gcimporter.IImportBundle(fset, imports, data) -} - -// WriteBundle writes encoded type information for the specified packages to out. -// The FileSet provides file position information for named objects. -// -// Experimental: This API is experimental and may change in the future. -func WriteBundle(out io.Writer, fset *token.FileSet, pkgs []*types.Package) error { - return gcimporter.IExportBundle(out, fset, pkgs) -} diff --git a/vendor/golang.org/x/tools/go/gcexportdata/importer.go b/vendor/golang.org/x/tools/go/gcexportdata/importer.go deleted file mode 100644 index efe221e..0000000 --- a/vendor/golang.org/x/tools/go/gcexportdata/importer.go +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright 2016 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package gcexportdata - -import ( - "fmt" - "go/token" - "go/types" - "os" -) - -// NewImporter returns a new instance of the types.Importer interface -// that reads type information from export data files written by gc. -// The Importer also satisfies types.ImporterFrom. -// -// Export data files are located using "go build" workspace conventions -// and the build.Default context. -// -// Use this importer instead of go/importer.For("gc", ...) to avoid the -// version-skew problems described in the documentation of this package, -// or to control the FileSet or access the imports map populated during -// package loading. -// -func NewImporter(fset *token.FileSet, imports map[string]*types.Package) types.ImporterFrom { - return importer{fset, imports} -} - -type importer struct { - fset *token.FileSet - imports map[string]*types.Package -} - -func (imp importer) Import(importPath string) (*types.Package, error) { - return imp.ImportFrom(importPath, "", 0) -} - -func (imp importer) ImportFrom(importPath, srcDir string, mode types.ImportMode) (_ *types.Package, err error) { - filename, path := Find(importPath, srcDir) - if filename == "" { - if importPath == "unsafe" { - // Even for unsafe, call Find first in case - // the package was vendored. - return types.Unsafe, nil - } - return nil, fmt.Errorf("can't find import: %s", importPath) - } - - if pkg, ok := imp.imports[path]; ok && pkg.Complete() { - return pkg, nil // cache hit - } - - // open file - f, err := os.Open(filename) - if err != nil { - return nil, err - } - defer func() { - f.Close() - if err != nil { - // add file name to error - err = fmt.Errorf("reading export data: %s: %v", filename, err) - } - }() - - r, err := NewReader(f) - if err != nil { - return nil, err - } - - return Read(r, imp.fset, imp.imports, path) -} diff --git a/vendor/golang.org/x/tools/go/internal/gcimporter/bexport.go b/vendor/golang.org/x/tools/go/internal/gcimporter/bexport.go deleted file mode 100644 index 0a3cdb9..0000000 --- a/vendor/golang.org/x/tools/go/internal/gcimporter/bexport.go +++ /dev/null @@ -1,851 +0,0 @@ -// Copyright 2016 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Binary package export. -// This file was derived from $GOROOT/src/cmd/compile/internal/gc/bexport.go; -// see that file for specification of the format. - -package gcimporter - -import ( - "bytes" - "encoding/binary" - "fmt" - "go/ast" - "go/constant" - "go/token" - "go/types" - "math" - "math/big" - "sort" - "strings" -) - -// If debugFormat is set, each integer and string value is preceded by a marker -// and position information in the encoding. This mechanism permits an importer -// to recognize immediately when it is out of sync. The importer recognizes this -// mode automatically (i.e., it can import export data produced with debugging -// support even if debugFormat is not set at the time of import). This mode will -// lead to massively larger export data (by a factor of 2 to 3) and should only -// be enabled during development and debugging. -// -// NOTE: This flag is the first flag to enable if importing dies because of -// (suspected) format errors, and whenever a change is made to the format. -const debugFormat = false // default: false - -// Current export format version. Increase with each format change. -// Note: The latest binary (non-indexed) export format is at version 6. -// This exporter is still at level 4, but it doesn't matter since -// the binary importer can handle older versions just fine. -// 6: package height (CL 105038) -- NOT IMPLEMENTED HERE -// 5: improved position encoding efficiency (issue 20080, CL 41619) -- NOT IMPLEMEMTED HERE -// 4: type name objects support type aliases, uses aliasTag -// 3: Go1.8 encoding (same as version 2, aliasTag defined but never used) -// 2: removed unused bool in ODCL export (compiler only) -// 1: header format change (more regular), export package for _ struct fields -// 0: Go1.7 encoding -const exportVersion = 4 - -// trackAllTypes enables cycle tracking for all types, not just named -// types. The existing compiler invariants assume that unnamed types -// that are not completely set up are not used, or else there are spurious -// errors. -// If disabled, only named types are tracked, possibly leading to slightly -// less efficient encoding in rare cases. It also prevents the export of -// some corner-case type declarations (but those are not handled correctly -// with with the textual export format either). -// TODO(gri) enable and remove once issues caused by it are fixed -const trackAllTypes = false - -type exporter struct { - fset *token.FileSet - out bytes.Buffer - - // object -> index maps, indexed in order of serialization - strIndex map[string]int - pkgIndex map[*types.Package]int - typIndex map[types.Type]int - - // position encoding - posInfoFormat bool - prevFile string - prevLine int - - // debugging support - written int // bytes written - indent int // for trace -} - -// internalError represents an error generated inside this package. -type internalError string - -func (e internalError) Error() string { return "gcimporter: " + string(e) } - -func internalErrorf(format string, args ...interface{}) error { - return internalError(fmt.Sprintf(format, args...)) -} - -// BExportData returns binary export data for pkg. -// If no file set is provided, position info will be missing. -func BExportData(fset *token.FileSet, pkg *types.Package) (b []byte, err error) { - if !debug { - defer func() { - if e := recover(); e != nil { - if ierr, ok := e.(internalError); ok { - err = ierr - return - } - // Not an internal error; panic again. - panic(e) - } - }() - } - - p := exporter{ - fset: fset, - strIndex: map[string]int{"": 0}, // empty string is mapped to 0 - pkgIndex: make(map[*types.Package]int), - typIndex: make(map[types.Type]int), - posInfoFormat: true, // TODO(gri) might become a flag, eventually - } - - // write version info - // The version string must start with "version %d" where %d is the version - // number. Additional debugging information may follow after a blank; that - // text is ignored by the importer. - p.rawStringln(fmt.Sprintf("version %d", exportVersion)) - var debug string - if debugFormat { - debug = "debug" - } - p.rawStringln(debug) // cannot use p.bool since it's affected by debugFormat; also want to see this clearly - p.bool(trackAllTypes) - p.bool(p.posInfoFormat) - - // --- generic export data --- - - // populate type map with predeclared "known" types - for index, typ := range predeclared() { - p.typIndex[typ] = index - } - if len(p.typIndex) != len(predeclared()) { - return nil, internalError("duplicate entries in type map?") - } - - // write package data - p.pkg(pkg, true) - if trace { - p.tracef("\n") - } - - // write objects - objcount := 0 - scope := pkg.Scope() - for _, name := range scope.Names() { - if !ast.IsExported(name) { - continue - } - if trace { - p.tracef("\n") - } - p.obj(scope.Lookup(name)) - objcount++ - } - - // indicate end of list - if trace { - p.tracef("\n") - } - p.tag(endTag) - - // for self-verification only (redundant) - p.int(objcount) - - if trace { - p.tracef("\n") - } - - // --- end of export data --- - - return p.out.Bytes(), nil -} - -func (p *exporter) pkg(pkg *types.Package, emptypath bool) { - if pkg == nil { - panic(internalError("unexpected nil pkg")) - } - - // if we saw the package before, write its index (>= 0) - if i, ok := p.pkgIndex[pkg]; ok { - p.index('P', i) - return - } - - // otherwise, remember the package, write the package tag (< 0) and package data - if trace { - p.tracef("P%d = { ", len(p.pkgIndex)) - defer p.tracef("} ") - } - p.pkgIndex[pkg] = len(p.pkgIndex) - - p.tag(packageTag) - p.string(pkg.Name()) - if emptypath { - p.string("") - } else { - p.string(pkg.Path()) - } -} - -func (p *exporter) obj(obj types.Object) { - switch obj := obj.(type) { - case *types.Const: - p.tag(constTag) - p.pos(obj) - p.qualifiedName(obj) - p.typ(obj.Type()) - p.value(obj.Val()) - - case *types.TypeName: - if obj.IsAlias() { - p.tag(aliasTag) - p.pos(obj) - p.qualifiedName(obj) - } else { - p.tag(typeTag) - } - p.typ(obj.Type()) - - case *types.Var: - p.tag(varTag) - p.pos(obj) - p.qualifiedName(obj) - p.typ(obj.Type()) - - case *types.Func: - p.tag(funcTag) - p.pos(obj) - p.qualifiedName(obj) - sig := obj.Type().(*types.Signature) - p.paramList(sig.Params(), sig.Variadic()) - p.paramList(sig.Results(), false) - - default: - panic(internalErrorf("unexpected object %v (%T)", obj, obj)) - } -} - -func (p *exporter) pos(obj types.Object) { - if !p.posInfoFormat { - return - } - - file, line := p.fileLine(obj) - if file == p.prevFile { - // common case: write line delta - // delta == 0 means different file or no line change - delta := line - p.prevLine - p.int(delta) - if delta == 0 { - p.int(-1) // -1 means no file change - } - } else { - // different file - p.int(0) - // Encode filename as length of common prefix with previous - // filename, followed by (possibly empty) suffix. Filenames - // frequently share path prefixes, so this can save a lot - // of space and make export data size less dependent on file - // path length. The suffix is unlikely to be empty because - // file names tend to end in ".go". - n := commonPrefixLen(p.prevFile, file) - p.int(n) // n >= 0 - p.string(file[n:]) // write suffix only - p.prevFile = file - p.int(line) - } - p.prevLine = line -} - -func (p *exporter) fileLine(obj types.Object) (file string, line int) { - if p.fset != nil { - pos := p.fset.Position(obj.Pos()) - file = pos.Filename - line = pos.Line - } - return -} - -func commonPrefixLen(a, b string) int { - if len(a) > len(b) { - a, b = b, a - } - // len(a) <= len(b) - i := 0 - for i < len(a) && a[i] == b[i] { - i++ - } - return i -} - -func (p *exporter) qualifiedName(obj types.Object) { - p.string(obj.Name()) - p.pkg(obj.Pkg(), false) -} - -func (p *exporter) typ(t types.Type) { - if t == nil { - panic(internalError("nil type")) - } - - // Possible optimization: Anonymous pointer types *T where - // T is a named type are common. We could canonicalize all - // such types *T to a single type PT = *T. This would lead - // to at most one *T entry in typIndex, and all future *T's - // would be encoded as the respective index directly. Would - // save 1 byte (pointerTag) per *T and reduce the typIndex - // size (at the cost of a canonicalization map). We can do - // this later, without encoding format change. - - // if we saw the type before, write its index (>= 0) - if i, ok := p.typIndex[t]; ok { - p.index('T', i) - return - } - - // otherwise, remember the type, write the type tag (< 0) and type data - if trackAllTypes { - if trace { - p.tracef("T%d = {>\n", len(p.typIndex)) - defer p.tracef("<\n} ") - } - p.typIndex[t] = len(p.typIndex) - } - - switch t := t.(type) { - case *types.Named: - if !trackAllTypes { - // if we don't track all types, track named types now - p.typIndex[t] = len(p.typIndex) - } - - p.tag(namedTag) - p.pos(t.Obj()) - p.qualifiedName(t.Obj()) - p.typ(t.Underlying()) - if !types.IsInterface(t) { - p.assocMethods(t) - } - - case *types.Array: - p.tag(arrayTag) - p.int64(t.Len()) - p.typ(t.Elem()) - - case *types.Slice: - p.tag(sliceTag) - p.typ(t.Elem()) - - case *dddSlice: - p.tag(dddTag) - p.typ(t.elem) - - case *types.Struct: - p.tag(structTag) - p.fieldList(t) - - case *types.Pointer: - p.tag(pointerTag) - p.typ(t.Elem()) - - case *types.Signature: - p.tag(signatureTag) - p.paramList(t.Params(), t.Variadic()) - p.paramList(t.Results(), false) - - case *types.Interface: - p.tag(interfaceTag) - p.iface(t) - - case *types.Map: - p.tag(mapTag) - p.typ(t.Key()) - p.typ(t.Elem()) - - case *types.Chan: - p.tag(chanTag) - p.int(int(3 - t.Dir())) // hack - p.typ(t.Elem()) - - default: - panic(internalErrorf("unexpected type %T: %s", t, t)) - } -} - -func (p *exporter) assocMethods(named *types.Named) { - // Sort methods (for determinism). - var methods []*types.Func - for i := 0; i < named.NumMethods(); i++ { - methods = append(methods, named.Method(i)) - } - sort.Sort(methodsByName(methods)) - - p.int(len(methods)) - - if trace && methods != nil { - p.tracef("associated methods {>\n") - } - - for i, m := range methods { - if trace && i > 0 { - p.tracef("\n") - } - - p.pos(m) - name := m.Name() - p.string(name) - if !exported(name) { - p.pkg(m.Pkg(), false) - } - - sig := m.Type().(*types.Signature) - p.paramList(types.NewTuple(sig.Recv()), false) - p.paramList(sig.Params(), sig.Variadic()) - p.paramList(sig.Results(), false) - p.int(0) // dummy value for go:nointerface pragma - ignored by importer - } - - if trace && methods != nil { - p.tracef("<\n} ") - } -} - -type methodsByName []*types.Func - -func (x methodsByName) Len() int { return len(x) } -func (x methodsByName) Swap(i, j int) { x[i], x[j] = x[j], x[i] } -func (x methodsByName) Less(i, j int) bool { return x[i].Name() < x[j].Name() } - -func (p *exporter) fieldList(t *types.Struct) { - if trace && t.NumFields() > 0 { - p.tracef("fields {>\n") - defer p.tracef("<\n} ") - } - - p.int(t.NumFields()) - for i := 0; i < t.NumFields(); i++ { - if trace && i > 0 { - p.tracef("\n") - } - p.field(t.Field(i)) - p.string(t.Tag(i)) - } -} - -func (p *exporter) field(f *types.Var) { - if !f.IsField() { - panic(internalError("field expected")) - } - - p.pos(f) - p.fieldName(f) - p.typ(f.Type()) -} - -func (p *exporter) iface(t *types.Interface) { - // TODO(gri): enable importer to load embedded interfaces, - // then emit Embeddeds and ExplicitMethods separately here. - p.int(0) - - n := t.NumMethods() - if trace && n > 0 { - p.tracef("methods {>\n") - defer p.tracef("<\n} ") - } - p.int(n) - for i := 0; i < n; i++ { - if trace && i > 0 { - p.tracef("\n") - } - p.method(t.Method(i)) - } -} - -func (p *exporter) method(m *types.Func) { - sig := m.Type().(*types.Signature) - if sig.Recv() == nil { - panic(internalError("method expected")) - } - - p.pos(m) - p.string(m.Name()) - if m.Name() != "_" && !ast.IsExported(m.Name()) { - p.pkg(m.Pkg(), false) - } - - // interface method; no need to encode receiver. - p.paramList(sig.Params(), sig.Variadic()) - p.paramList(sig.Results(), false) -} - -func (p *exporter) fieldName(f *types.Var) { - name := f.Name() - - if f.Anonymous() { - // anonymous field - we distinguish between 3 cases: - // 1) field name matches base type name and is exported - // 2) field name matches base type name and is not exported - // 3) field name doesn't match base type name (alias name) - bname := basetypeName(f.Type()) - if name == bname { - if ast.IsExported(name) { - name = "" // 1) we don't need to know the field name or package - } else { - name = "?" // 2) use unexported name "?" to force package export - } - } else { - // 3) indicate alias and export name as is - // (this requires an extra "@" but this is a rare case) - p.string("@") - } - } - - p.string(name) - if name != "" && !ast.IsExported(name) { - p.pkg(f.Pkg(), false) - } -} - -func basetypeName(typ types.Type) string { - switch typ := deref(typ).(type) { - case *types.Basic: - return typ.Name() - case *types.Named: - return typ.Obj().Name() - default: - return "" // unnamed type - } -} - -func (p *exporter) paramList(params *types.Tuple, variadic bool) { - // use negative length to indicate unnamed parameters - // (look at the first parameter only since either all - // names are present or all are absent) - n := params.Len() - if n > 0 && params.At(0).Name() == "" { - n = -n - } - p.int(n) - for i := 0; i < params.Len(); i++ { - q := params.At(i) - t := q.Type() - if variadic && i == params.Len()-1 { - t = &dddSlice{t.(*types.Slice).Elem()} - } - p.typ(t) - if n > 0 { - name := q.Name() - p.string(name) - if name != "_" { - p.pkg(q.Pkg(), false) - } - } - p.string("") // no compiler-specific info - } -} - -func (p *exporter) value(x constant.Value) { - if trace { - p.tracef("= ") - } - - switch x.Kind() { - case constant.Bool: - tag := falseTag - if constant.BoolVal(x) { - tag = trueTag - } - p.tag(tag) - - case constant.Int: - if v, exact := constant.Int64Val(x); exact { - // common case: x fits into an int64 - use compact encoding - p.tag(int64Tag) - p.int64(v) - return - } - // uncommon case: large x - use float encoding - // (powers of 2 will be encoded efficiently with exponent) - p.tag(floatTag) - p.float(constant.ToFloat(x)) - - case constant.Float: - p.tag(floatTag) - p.float(x) - - case constant.Complex: - p.tag(complexTag) - p.float(constant.Real(x)) - p.float(constant.Imag(x)) - - case constant.String: - p.tag(stringTag) - p.string(constant.StringVal(x)) - - case constant.Unknown: - // package contains type errors - p.tag(unknownTag) - - default: - panic(internalErrorf("unexpected value %v (%T)", x, x)) - } -} - -func (p *exporter) float(x constant.Value) { - if x.Kind() != constant.Float { - panic(internalErrorf("unexpected constant %v, want float", x)) - } - // extract sign (there is no -0) - sign := constant.Sign(x) - if sign == 0 { - // x == 0 - p.int(0) - return - } - // x != 0 - - var f big.Float - if v, exact := constant.Float64Val(x); exact { - // float64 - f.SetFloat64(v) - } else if num, denom := constant.Num(x), constant.Denom(x); num.Kind() == constant.Int { - // TODO(gri): add big.Rat accessor to constant.Value. - r := valueToRat(num) - f.SetRat(r.Quo(r, valueToRat(denom))) - } else { - // Value too large to represent as a fraction => inaccessible. - // TODO(gri): add big.Float accessor to constant.Value. - f.SetFloat64(math.MaxFloat64) // FIXME - } - - // extract exponent such that 0.5 <= m < 1.0 - var m big.Float - exp := f.MantExp(&m) - - // extract mantissa as *big.Int - // - set exponent large enough so mant satisfies mant.IsInt() - // - get *big.Int from mant - m.SetMantExp(&m, int(m.MinPrec())) - mant, acc := m.Int(nil) - if acc != big.Exact { - panic(internalError("internal error")) - } - - p.int(sign) - p.int(exp) - p.string(string(mant.Bytes())) -} - -func valueToRat(x constant.Value) *big.Rat { - // Convert little-endian to big-endian. - // I can't believe this is necessary. - bytes := constant.Bytes(x) - for i := 0; i < len(bytes)/2; i++ { - bytes[i], bytes[len(bytes)-1-i] = bytes[len(bytes)-1-i], bytes[i] - } - return new(big.Rat).SetInt(new(big.Int).SetBytes(bytes)) -} - -func (p *exporter) bool(b bool) bool { - if trace { - p.tracef("[") - defer p.tracef("= %v] ", b) - } - - x := 0 - if b { - x = 1 - } - p.int(x) - return b -} - -// ---------------------------------------------------------------------------- -// Low-level encoders - -func (p *exporter) index(marker byte, index int) { - if index < 0 { - panic(internalError("invalid index < 0")) - } - if debugFormat { - p.marker('t') - } - if trace { - p.tracef("%c%d ", marker, index) - } - p.rawInt64(int64(index)) -} - -func (p *exporter) tag(tag int) { - if tag >= 0 { - panic(internalError("invalid tag >= 0")) - } - if debugFormat { - p.marker('t') - } - if trace { - p.tracef("%s ", tagString[-tag]) - } - p.rawInt64(int64(tag)) -} - -func (p *exporter) int(x int) { - p.int64(int64(x)) -} - -func (p *exporter) int64(x int64) { - if debugFormat { - p.marker('i') - } - if trace { - p.tracef("%d ", x) - } - p.rawInt64(x) -} - -func (p *exporter) string(s string) { - if debugFormat { - p.marker('s') - } - if trace { - p.tracef("%q ", s) - } - // if we saw the string before, write its index (>= 0) - // (the empty string is mapped to 0) - if i, ok := p.strIndex[s]; ok { - p.rawInt64(int64(i)) - return - } - // otherwise, remember string and write its negative length and bytes - p.strIndex[s] = len(p.strIndex) - p.rawInt64(-int64(len(s))) - for i := 0; i < len(s); i++ { - p.rawByte(s[i]) - } -} - -// marker emits a marker byte and position information which makes -// it easy for a reader to detect if it is "out of sync". Used for -// debugFormat format only. -func (p *exporter) marker(m byte) { - p.rawByte(m) - // Enable this for help tracking down the location - // of an incorrect marker when running in debugFormat. - if false && trace { - p.tracef("#%d ", p.written) - } - p.rawInt64(int64(p.written)) -} - -// rawInt64 should only be used by low-level encoders. -func (p *exporter) rawInt64(x int64) { - var tmp [binary.MaxVarintLen64]byte - n := binary.PutVarint(tmp[:], x) - for i := 0; i < n; i++ { - p.rawByte(tmp[i]) - } -} - -// rawStringln should only be used to emit the initial version string. -func (p *exporter) rawStringln(s string) { - for i := 0; i < len(s); i++ { - p.rawByte(s[i]) - } - p.rawByte('\n') -} - -// rawByte is the bottleneck interface to write to p.out. -// rawByte escapes b as follows (any encoding does that -// hides '$'): -// -// '$' => '|' 'S' -// '|' => '|' '|' -// -// Necessary so other tools can find the end of the -// export data by searching for "$$". -// rawByte should only be used by low-level encoders. -func (p *exporter) rawByte(b byte) { - switch b { - case '$': - // write '$' as '|' 'S' - b = 'S' - fallthrough - case '|': - // write '|' as '|' '|' - p.out.WriteByte('|') - p.written++ - } - p.out.WriteByte(b) - p.written++ -} - -// tracef is like fmt.Printf but it rewrites the format string -// to take care of indentation. -func (p *exporter) tracef(format string, args ...interface{}) { - if strings.ContainsAny(format, "<>\n") { - var buf bytes.Buffer - for i := 0; i < len(format); i++ { - // no need to deal with runes - ch := format[i] - switch ch { - case '>': - p.indent++ - continue - case '<': - p.indent-- - continue - } - buf.WriteByte(ch) - if ch == '\n' { - for j := p.indent; j > 0; j-- { - buf.WriteString(". ") - } - } - } - format = buf.String() - } - fmt.Printf(format, args...) -} - -// Debugging support. -// (tagString is only used when tracing is enabled) -var tagString = [...]string{ - // Packages - -packageTag: "package", - - // Types - -namedTag: "named type", - -arrayTag: "array", - -sliceTag: "slice", - -dddTag: "ddd", - -structTag: "struct", - -pointerTag: "pointer", - -signatureTag: "signature", - -interfaceTag: "interface", - -mapTag: "map", - -chanTag: "chan", - - // Values - -falseTag: "false", - -trueTag: "true", - -int64Tag: "int64", - -floatTag: "float", - -fractionTag: "fraction", - -complexTag: "complex", - -stringTag: "string", - -unknownTag: "unknown", - - // Type aliases - -aliasTag: "alias", -} diff --git a/vendor/golang.org/x/tools/go/internal/gcimporter/bimport.go b/vendor/golang.org/x/tools/go/internal/gcimporter/bimport.go deleted file mode 100644 index b85de01..0000000 --- a/vendor/golang.org/x/tools/go/internal/gcimporter/bimport.go +++ /dev/null @@ -1,1053 +0,0 @@ -// Copyright 2015 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// This file is a copy of $GOROOT/src/go/internal/gcimporter/bimport.go. - -package gcimporter - -import ( - "encoding/binary" - "fmt" - "go/constant" - "go/token" - "go/types" - "sort" - "strconv" - "strings" - "sync" - "unicode" - "unicode/utf8" -) - -type importer struct { - imports map[string]*types.Package - data []byte - importpath string - buf []byte // for reading strings - version int // export format version - - // object lists - strList []string // in order of appearance - pathList []string // in order of appearance - pkgList []*types.Package // in order of appearance - typList []types.Type // in order of appearance - interfaceList []*types.Interface // for delayed completion only - trackAllTypes bool - - // position encoding - posInfoFormat bool - prevFile string - prevLine int - fake fakeFileSet - - // debugging support - debugFormat bool - read int // bytes read -} - -// BImportData imports a package from the serialized package data -// and returns the number of bytes consumed and a reference to the package. -// If the export data version is not recognized or the format is otherwise -// compromised, an error is returned. -func BImportData(fset *token.FileSet, imports map[string]*types.Package, data []byte, path string) (_ int, pkg *types.Package, err error) { - // catch panics and return them as errors - const currentVersion = 6 - version := -1 // unknown version - defer func() { - if e := recover(); e != nil { - // Return a (possibly nil or incomplete) package unchanged (see #16088). - if version > currentVersion { - err = fmt.Errorf("cannot import %q (%v), export data is newer version - update tool", path, e) - } else { - err = fmt.Errorf("cannot import %q (%v), possibly version skew - reinstall package", path, e) - } - } - }() - - p := importer{ - imports: imports, - data: data, - importpath: path, - version: version, - strList: []string{""}, // empty string is mapped to 0 - pathList: []string{""}, // empty string is mapped to 0 - fake: fakeFileSet{ - fset: fset, - files: make(map[string]*fileInfo), - }, - } - defer p.fake.setLines() // set lines for files in fset - - // read version info - var versionstr string - if b := p.rawByte(); b == 'c' || b == 'd' { - // Go1.7 encoding; first byte encodes low-level - // encoding format (compact vs debug). - // For backward-compatibility only (avoid problems with - // old installed packages). Newly compiled packages use - // the extensible format string. - // TODO(gri) Remove this support eventually; after Go1.8. - if b == 'd' { - p.debugFormat = true - } - p.trackAllTypes = p.rawByte() == 'a' - p.posInfoFormat = p.int() != 0 - versionstr = p.string() - if versionstr == "v1" { - version = 0 - } - } else { - // Go1.8 extensible encoding - // read version string and extract version number (ignore anything after the version number) - versionstr = p.rawStringln(b) - if s := strings.SplitN(versionstr, " ", 3); len(s) >= 2 && s[0] == "version" { - if v, err := strconv.Atoi(s[1]); err == nil && v > 0 { - version = v - } - } - } - p.version = version - - // read version specific flags - extend as necessary - switch p.version { - // case currentVersion: - // ... - // fallthrough - case currentVersion, 5, 4, 3, 2, 1: - p.debugFormat = p.rawStringln(p.rawByte()) == "debug" - p.trackAllTypes = p.int() != 0 - p.posInfoFormat = p.int() != 0 - case 0: - // Go1.7 encoding format - nothing to do here - default: - errorf("unknown bexport format version %d (%q)", p.version, versionstr) - } - - // --- generic export data --- - - // populate typList with predeclared "known" types - p.typList = append(p.typList, predeclared()...) - - // read package data - pkg = p.pkg() - - // read objects of phase 1 only (see cmd/compile/internal/gc/bexport.go) - objcount := 0 - for { - tag := p.tagOrIndex() - if tag == endTag { - break - } - p.obj(tag) - objcount++ - } - - // self-verification - if count := p.int(); count != objcount { - errorf("got %d objects; want %d", objcount, count) - } - - // ignore compiler-specific import data - - // complete interfaces - // TODO(gri) re-investigate if we still need to do this in a delayed fashion - for _, typ := range p.interfaceList { - typ.Complete() - } - - // record all referenced packages as imports - list := append(([]*types.Package)(nil), p.pkgList[1:]...) - sort.Sort(byPath(list)) - pkg.SetImports(list) - - // package was imported completely and without errors - pkg.MarkComplete() - - return p.read, pkg, nil -} - -func errorf(format string, args ...interface{}) { - panic(fmt.Sprintf(format, args...)) -} - -func (p *importer) pkg() *types.Package { - // if the package was seen before, i is its index (>= 0) - i := p.tagOrIndex() - if i >= 0 { - return p.pkgList[i] - } - - // otherwise, i is the package tag (< 0) - if i != packageTag { - errorf("unexpected package tag %d version %d", i, p.version) - } - - // read package data - name := p.string() - var path string - if p.version >= 5 { - path = p.path() - } else { - path = p.string() - } - if p.version >= 6 { - p.int() // package height; unused by go/types - } - - // we should never see an empty package name - if name == "" { - errorf("empty package name in import") - } - - // an empty path denotes the package we are currently importing; - // it must be the first package we see - if (path == "") != (len(p.pkgList) == 0) { - errorf("package path %q for pkg index %d", path, len(p.pkgList)) - } - - // if the package was imported before, use that one; otherwise create a new one - if path == "" { - path = p.importpath - } - pkg := p.imports[path] - if pkg == nil { - pkg = types.NewPackage(path, name) - p.imports[path] = pkg - } else if pkg.Name() != name { - errorf("conflicting names %s and %s for package %q", pkg.Name(), name, path) - } - p.pkgList = append(p.pkgList, pkg) - - return pkg -} - -// objTag returns the tag value for each object kind. -func objTag(obj types.Object) int { - switch obj.(type) { - case *types.Const: - return constTag - case *types.TypeName: - return typeTag - case *types.Var: - return varTag - case *types.Func: - return funcTag - default: - errorf("unexpected object: %v (%T)", obj, obj) // panics - panic("unreachable") - } -} - -func sameObj(a, b types.Object) bool { - // Because unnamed types are not canonicalized, we cannot simply compare types for - // (pointer) identity. - // Ideally we'd check equality of constant values as well, but this is good enough. - return objTag(a) == objTag(b) && types.Identical(a.Type(), b.Type()) -} - -func (p *importer) declare(obj types.Object) { - pkg := obj.Pkg() - if alt := pkg.Scope().Insert(obj); alt != nil { - // This can only trigger if we import a (non-type) object a second time. - // Excluding type aliases, this cannot happen because 1) we only import a package - // once; and b) we ignore compiler-specific export data which may contain - // functions whose inlined function bodies refer to other functions that - // were already imported. - // However, type aliases require reexporting the original type, so we need - // to allow it (see also the comment in cmd/compile/internal/gc/bimport.go, - // method importer.obj, switch case importing functions). - // TODO(gri) review/update this comment once the gc compiler handles type aliases. - if !sameObj(obj, alt) { - errorf("inconsistent import:\n\t%v\npreviously imported as:\n\t%v\n", obj, alt) - } - } -} - -func (p *importer) obj(tag int) { - switch tag { - case constTag: - pos := p.pos() - pkg, name := p.qualifiedName() - typ := p.typ(nil, nil) - val := p.value() - p.declare(types.NewConst(pos, pkg, name, typ, val)) - - case aliasTag: - // TODO(gri) verify type alias hookup is correct - pos := p.pos() - pkg, name := p.qualifiedName() - typ := p.typ(nil, nil) - p.declare(types.NewTypeName(pos, pkg, name, typ)) - - case typeTag: - p.typ(nil, nil) - - case varTag: - pos := p.pos() - pkg, name := p.qualifiedName() - typ := p.typ(nil, nil) - p.declare(types.NewVar(pos, pkg, name, typ)) - - case funcTag: - pos := p.pos() - pkg, name := p.qualifiedName() - params, isddd := p.paramList() - result, _ := p.paramList() - sig := types.NewSignature(nil, params, result, isddd) - p.declare(types.NewFunc(pos, pkg, name, sig)) - - default: - errorf("unexpected object tag %d", tag) - } -} - -const deltaNewFile = -64 // see cmd/compile/internal/gc/bexport.go - -func (p *importer) pos() token.Pos { - if !p.posInfoFormat { - return token.NoPos - } - - file := p.prevFile - line := p.prevLine - delta := p.int() - line += delta - if p.version >= 5 { - if delta == deltaNewFile { - if n := p.int(); n >= 0 { - // file changed - file = p.path() - line = n - } - } - } else { - if delta == 0 { - if n := p.int(); n >= 0 { - // file changed - file = p.prevFile[:n] + p.string() - line = p.int() - } - } - } - p.prevFile = file - p.prevLine = line - - return p.fake.pos(file, line, 0) -} - -// Synthesize a token.Pos -type fakeFileSet struct { - fset *token.FileSet - files map[string]*fileInfo -} - -type fileInfo struct { - file *token.File - lastline int -} - -const maxlines = 64 * 1024 - -func (s *fakeFileSet) pos(file string, line, column int) token.Pos { - // TODO(mdempsky): Make use of column. - - // Since we don't know the set of needed file positions, we reserve maxlines - // positions per file. We delay calling token.File.SetLines until all - // positions have been calculated (by way of fakeFileSet.setLines), so that - // we can avoid setting unnecessary lines. See also golang/go#46586. - f := s.files[file] - if f == nil { - f = &fileInfo{file: s.fset.AddFile(file, -1, maxlines)} - s.files[file] = f - } - if line > maxlines { - line = 1 - } - if line > f.lastline { - f.lastline = line - } - - // Return a fake position assuming that f.file consists only of newlines. - return token.Pos(f.file.Base() + line - 1) -} - -func (s *fakeFileSet) setLines() { - fakeLinesOnce.Do(func() { - fakeLines = make([]int, maxlines) - for i := range fakeLines { - fakeLines[i] = i - } - }) - for _, f := range s.files { - f.file.SetLines(fakeLines[:f.lastline]) - } -} - -var ( - fakeLines []int - fakeLinesOnce sync.Once -) - -func (p *importer) qualifiedName() (pkg *types.Package, name string) { - name = p.string() - pkg = p.pkg() - return -} - -func (p *importer) record(t types.Type) { - p.typList = append(p.typList, t) -} - -// A dddSlice is a types.Type representing ...T parameters. -// It only appears for parameter types and does not escape -// the importer. -type dddSlice struct { - elem types.Type -} - -func (t *dddSlice) Underlying() types.Type { return t } -func (t *dddSlice) String() string { return "..." + t.elem.String() } - -// parent is the package which declared the type; parent == nil means -// the package currently imported. The parent package is needed for -// exported struct fields and interface methods which don't contain -// explicit package information in the export data. -// -// A non-nil tname is used as the "owner" of the result type; i.e., -// the result type is the underlying type of tname. tname is used -// to give interface methods a named receiver type where possible. -func (p *importer) typ(parent *types.Package, tname *types.Named) types.Type { - // if the type was seen before, i is its index (>= 0) - i := p.tagOrIndex() - if i >= 0 { - return p.typList[i] - } - - // otherwise, i is the type tag (< 0) - switch i { - case namedTag: - // read type object - pos := p.pos() - parent, name := p.qualifiedName() - scope := parent.Scope() - obj := scope.Lookup(name) - - // if the object doesn't exist yet, create and insert it - if obj == nil { - obj = types.NewTypeName(pos, parent, name, nil) - scope.Insert(obj) - } - - if _, ok := obj.(*types.TypeName); !ok { - errorf("pkg = %s, name = %s => %s", parent, name, obj) - } - - // associate new named type with obj if it doesn't exist yet - t0 := types.NewNamed(obj.(*types.TypeName), nil, nil) - - // but record the existing type, if any - tname := obj.Type().(*types.Named) // tname is either t0 or the existing type - p.record(tname) - - // read underlying type - t0.SetUnderlying(p.typ(parent, t0)) - - // interfaces don't have associated methods - if types.IsInterface(t0) { - return tname - } - - // read associated methods - for i := p.int(); i > 0; i-- { - // TODO(gri) replace this with something closer to fieldName - pos := p.pos() - name := p.string() - if !exported(name) { - p.pkg() - } - - recv, _ := p.paramList() // TODO(gri) do we need a full param list for the receiver? - params, isddd := p.paramList() - result, _ := p.paramList() - p.int() // go:nointerface pragma - discarded - - sig := types.NewSignature(recv.At(0), params, result, isddd) - t0.AddMethod(types.NewFunc(pos, parent, name, sig)) - } - - return tname - - case arrayTag: - t := new(types.Array) - if p.trackAllTypes { - p.record(t) - } - - n := p.int64() - *t = *types.NewArray(p.typ(parent, nil), n) - return t - - case sliceTag: - t := new(types.Slice) - if p.trackAllTypes { - p.record(t) - } - - *t = *types.NewSlice(p.typ(parent, nil)) - return t - - case dddTag: - t := new(dddSlice) - if p.trackAllTypes { - p.record(t) - } - - t.elem = p.typ(parent, nil) - return t - - case structTag: - t := new(types.Struct) - if p.trackAllTypes { - p.record(t) - } - - *t = *types.NewStruct(p.fieldList(parent)) - return t - - case pointerTag: - t := new(types.Pointer) - if p.trackAllTypes { - p.record(t) - } - - *t = *types.NewPointer(p.typ(parent, nil)) - return t - - case signatureTag: - t := new(types.Signature) - if p.trackAllTypes { - p.record(t) - } - - params, isddd := p.paramList() - result, _ := p.paramList() - *t = *types.NewSignature(nil, params, result, isddd) - return t - - case interfaceTag: - // Create a dummy entry in the type list. This is safe because we - // cannot expect the interface type to appear in a cycle, as any - // such cycle must contain a named type which would have been - // first defined earlier. - // TODO(gri) Is this still true now that we have type aliases? - // See issue #23225. - n := len(p.typList) - if p.trackAllTypes { - p.record(nil) - } - - var embeddeds []types.Type - for n := p.int(); n > 0; n-- { - p.pos() - embeddeds = append(embeddeds, p.typ(parent, nil)) - } - - t := newInterface(p.methodList(parent, tname), embeddeds) - p.interfaceList = append(p.interfaceList, t) - if p.trackAllTypes { - p.typList[n] = t - } - return t - - case mapTag: - t := new(types.Map) - if p.trackAllTypes { - p.record(t) - } - - key := p.typ(parent, nil) - val := p.typ(parent, nil) - *t = *types.NewMap(key, val) - return t - - case chanTag: - t := new(types.Chan) - if p.trackAllTypes { - p.record(t) - } - - dir := chanDir(p.int()) - val := p.typ(parent, nil) - *t = *types.NewChan(dir, val) - return t - - default: - errorf("unexpected type tag %d", i) // panics - panic("unreachable") - } -} - -func chanDir(d int) types.ChanDir { - // tag values must match the constants in cmd/compile/internal/gc/go.go - switch d { - case 1 /* Crecv */ : - return types.RecvOnly - case 2 /* Csend */ : - return types.SendOnly - case 3 /* Cboth */ : - return types.SendRecv - default: - errorf("unexpected channel dir %d", d) - return 0 - } -} - -func (p *importer) fieldList(parent *types.Package) (fields []*types.Var, tags []string) { - if n := p.int(); n > 0 { - fields = make([]*types.Var, n) - tags = make([]string, n) - for i := range fields { - fields[i], tags[i] = p.field(parent) - } - } - return -} - -func (p *importer) field(parent *types.Package) (*types.Var, string) { - pos := p.pos() - pkg, name, alias := p.fieldName(parent) - typ := p.typ(parent, nil) - tag := p.string() - - anonymous := false - if name == "" { - // anonymous field - typ must be T or *T and T must be a type name - switch typ := deref(typ).(type) { - case *types.Basic: // basic types are named types - pkg = nil // // objects defined in Universe scope have no package - name = typ.Name() - case *types.Named: - name = typ.Obj().Name() - default: - errorf("named base type expected") - } - anonymous = true - } else if alias { - // anonymous field: we have an explicit name because it's an alias - anonymous = true - } - - return types.NewField(pos, pkg, name, typ, anonymous), tag -} - -func (p *importer) methodList(parent *types.Package, baseType *types.Named) (methods []*types.Func) { - if n := p.int(); n > 0 { - methods = make([]*types.Func, n) - for i := range methods { - methods[i] = p.method(parent, baseType) - } - } - return -} - -func (p *importer) method(parent *types.Package, baseType *types.Named) *types.Func { - pos := p.pos() - pkg, name, _ := p.fieldName(parent) - // If we don't have a baseType, use a nil receiver. - // A receiver using the actual interface type (which - // we don't know yet) will be filled in when we call - // types.Interface.Complete. - var recv *types.Var - if baseType != nil { - recv = types.NewVar(token.NoPos, parent, "", baseType) - } - params, isddd := p.paramList() - result, _ := p.paramList() - sig := types.NewSignature(recv, params, result, isddd) - return types.NewFunc(pos, pkg, name, sig) -} - -func (p *importer) fieldName(parent *types.Package) (pkg *types.Package, name string, alias bool) { - name = p.string() - pkg = parent - if pkg == nil { - // use the imported package instead - pkg = p.pkgList[0] - } - if p.version == 0 && name == "_" { - // version 0 didn't export a package for _ fields - return - } - switch name { - case "": - // 1) field name matches base type name and is exported: nothing to do - case "?": - // 2) field name matches base type name and is not exported: need package - name = "" - pkg = p.pkg() - case "@": - // 3) field name doesn't match type name (alias) - name = p.string() - alias = true - fallthrough - default: - if !exported(name) { - pkg = p.pkg() - } - } - return -} - -func (p *importer) paramList() (*types.Tuple, bool) { - n := p.int() - if n == 0 { - return nil, false - } - // negative length indicates unnamed parameters - named := true - if n < 0 { - n = -n - named = false - } - // n > 0 - params := make([]*types.Var, n) - isddd := false - for i := range params { - params[i], isddd = p.param(named) - } - return types.NewTuple(params...), isddd -} - -func (p *importer) param(named bool) (*types.Var, bool) { - t := p.typ(nil, nil) - td, isddd := t.(*dddSlice) - if isddd { - t = types.NewSlice(td.elem) - } - - var pkg *types.Package - var name string - if named { - name = p.string() - if name == "" { - errorf("expected named parameter") - } - if name != "_" { - pkg = p.pkg() - } - if i := strings.Index(name, "·"); i > 0 { - name = name[:i] // cut off gc-specific parameter numbering - } - } - - // read and discard compiler-specific info - p.string() - - return types.NewVar(token.NoPos, pkg, name, t), isddd -} - -func exported(name string) bool { - ch, _ := utf8.DecodeRuneInString(name) - return unicode.IsUpper(ch) -} - -func (p *importer) value() constant.Value { - switch tag := p.tagOrIndex(); tag { - case falseTag: - return constant.MakeBool(false) - case trueTag: - return constant.MakeBool(true) - case int64Tag: - return constant.MakeInt64(p.int64()) - case floatTag: - return p.float() - case complexTag: - re := p.float() - im := p.float() - return constant.BinaryOp(re, token.ADD, constant.MakeImag(im)) - case stringTag: - return constant.MakeString(p.string()) - case unknownTag: - return constant.MakeUnknown() - default: - errorf("unexpected value tag %d", tag) // panics - panic("unreachable") - } -} - -func (p *importer) float() constant.Value { - sign := p.int() - if sign == 0 { - return constant.MakeInt64(0) - } - - exp := p.int() - mant := []byte(p.string()) // big endian - - // remove leading 0's if any - for len(mant) > 0 && mant[0] == 0 { - mant = mant[1:] - } - - // convert to little endian - // TODO(gri) go/constant should have a more direct conversion function - // (e.g., once it supports a big.Float based implementation) - for i, j := 0, len(mant)-1; i < j; i, j = i+1, j-1 { - mant[i], mant[j] = mant[j], mant[i] - } - - // adjust exponent (constant.MakeFromBytes creates an integer value, - // but mant represents the mantissa bits such that 0.5 <= mant < 1.0) - exp -= len(mant) << 3 - if len(mant) > 0 { - for msd := mant[len(mant)-1]; msd&0x80 == 0; msd <<= 1 { - exp++ - } - } - - x := constant.MakeFromBytes(mant) - switch { - case exp < 0: - d := constant.Shift(constant.MakeInt64(1), token.SHL, uint(-exp)) - x = constant.BinaryOp(x, token.QUO, d) - case exp > 0: - x = constant.Shift(x, token.SHL, uint(exp)) - } - - if sign < 0 { - x = constant.UnaryOp(token.SUB, x, 0) - } - return x -} - -// ---------------------------------------------------------------------------- -// Low-level decoders - -func (p *importer) tagOrIndex() int { - if p.debugFormat { - p.marker('t') - } - - return int(p.rawInt64()) -} - -func (p *importer) int() int { - x := p.int64() - if int64(int(x)) != x { - errorf("exported integer too large") - } - return int(x) -} - -func (p *importer) int64() int64 { - if p.debugFormat { - p.marker('i') - } - - return p.rawInt64() -} - -func (p *importer) path() string { - if p.debugFormat { - p.marker('p') - } - // if the path was seen before, i is its index (>= 0) - // (the empty string is at index 0) - i := p.rawInt64() - if i >= 0 { - return p.pathList[i] - } - // otherwise, i is the negative path length (< 0) - a := make([]string, -i) - for n := range a { - a[n] = p.string() - } - s := strings.Join(a, "/") - p.pathList = append(p.pathList, s) - return s -} - -func (p *importer) string() string { - if p.debugFormat { - p.marker('s') - } - // if the string was seen before, i is its index (>= 0) - // (the empty string is at index 0) - i := p.rawInt64() - if i >= 0 { - return p.strList[i] - } - // otherwise, i is the negative string length (< 0) - if n := int(-i); n <= cap(p.buf) { - p.buf = p.buf[:n] - } else { - p.buf = make([]byte, n) - } - for i := range p.buf { - p.buf[i] = p.rawByte() - } - s := string(p.buf) - p.strList = append(p.strList, s) - return s -} - -func (p *importer) marker(want byte) { - if got := p.rawByte(); got != want { - errorf("incorrect marker: got %c; want %c (pos = %d)", got, want, p.read) - } - - pos := p.read - if n := int(p.rawInt64()); n != pos { - errorf("incorrect position: got %d; want %d", n, pos) - } -} - -// rawInt64 should only be used by low-level decoders. -func (p *importer) rawInt64() int64 { - i, err := binary.ReadVarint(p) - if err != nil { - errorf("read error: %v", err) - } - return i -} - -// rawStringln should only be used to read the initial version string. -func (p *importer) rawStringln(b byte) string { - p.buf = p.buf[:0] - for b != '\n' { - p.buf = append(p.buf, b) - b = p.rawByte() - } - return string(p.buf) -} - -// needed for binary.ReadVarint in rawInt64 -func (p *importer) ReadByte() (byte, error) { - return p.rawByte(), nil -} - -// byte is the bottleneck interface for reading p.data. -// It unescapes '|' 'S' to '$' and '|' '|' to '|'. -// rawByte should only be used by low-level decoders. -func (p *importer) rawByte() byte { - b := p.data[0] - r := 1 - if b == '|' { - b = p.data[1] - r = 2 - switch b { - case 'S': - b = '$' - case '|': - // nothing to do - default: - errorf("unexpected escape sequence in export data") - } - } - p.data = p.data[r:] - p.read += r - return b - -} - -// ---------------------------------------------------------------------------- -// Export format - -// Tags. Must be < 0. -const ( - // Objects - packageTag = -(iota + 1) - constTag - typeTag - varTag - funcTag - endTag - - // Types - namedTag - arrayTag - sliceTag - dddTag - structTag - pointerTag - signatureTag - interfaceTag - mapTag - chanTag - - // Values - falseTag - trueTag - int64Tag - floatTag - fractionTag // not used by gc - complexTag - stringTag - nilTag // only used by gc (appears in exported inlined function bodies) - unknownTag // not used by gc (only appears in packages with errors) - - // Type aliases - aliasTag -) - -var predeclOnce sync.Once -var predecl []types.Type // initialized lazily - -func predeclared() []types.Type { - predeclOnce.Do(func() { - // initialize lazily to be sure that all - // elements have been initialized before - predecl = []types.Type{ // basic types - types.Typ[types.Bool], - types.Typ[types.Int], - types.Typ[types.Int8], - types.Typ[types.Int16], - types.Typ[types.Int32], - types.Typ[types.Int64], - types.Typ[types.Uint], - types.Typ[types.Uint8], - types.Typ[types.Uint16], - types.Typ[types.Uint32], - types.Typ[types.Uint64], - types.Typ[types.Uintptr], - types.Typ[types.Float32], - types.Typ[types.Float64], - types.Typ[types.Complex64], - types.Typ[types.Complex128], - types.Typ[types.String], - - // basic type aliases - types.Universe.Lookup("byte").Type(), - types.Universe.Lookup("rune").Type(), - - // error - types.Universe.Lookup("error").Type(), - - // untyped types - types.Typ[types.UntypedBool], - types.Typ[types.UntypedInt], - types.Typ[types.UntypedRune], - types.Typ[types.UntypedFloat], - types.Typ[types.UntypedComplex], - types.Typ[types.UntypedString], - types.Typ[types.UntypedNil], - - // package unsafe - types.Typ[types.UnsafePointer], - - // invalid type - types.Typ[types.Invalid], // only appears in packages with errors - - // used internally by gc; never used by this package or in .a files - anyType{}, - } - predecl = append(predecl, additionalPredeclared()...) - }) - return predecl -} - -type anyType struct{} - -func (t anyType) Underlying() types.Type { return t } -func (t anyType) String() string { return "any" } diff --git a/vendor/golang.org/x/tools/go/internal/gcimporter/exportdata.go b/vendor/golang.org/x/tools/go/internal/gcimporter/exportdata.go deleted file mode 100644 index f6437fe..0000000 --- a/vendor/golang.org/x/tools/go/internal/gcimporter/exportdata.go +++ /dev/null @@ -1,99 +0,0 @@ -// Copyright 2011 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. - -// This file is a copy of $GOROOT/src/go/internal/gcimporter/exportdata.go. - -// This file implements FindExportData. - -package gcimporter - -import ( - "bufio" - "fmt" - "io" - "strconv" - "strings" -) - -func readGopackHeader(r *bufio.Reader) (name string, size int64, err error) { - // See $GOROOT/include/ar.h. - hdr := make([]byte, 16+12+6+6+8+10+2) - _, err = io.ReadFull(r, hdr) - if err != nil { - return - } - // leave for debugging - if false { - fmt.Printf("header: %s", hdr) - } - s := strings.TrimSpace(string(hdr[16+12+6+6+8:][:10])) - length, err := strconv.Atoi(s) - size = int64(length) - if err != nil || hdr[len(hdr)-2] != '`' || hdr[len(hdr)-1] != '\n' { - err = fmt.Errorf("invalid archive header") - return - } - name = strings.TrimSpace(string(hdr[:16])) - return -} - -// FindExportData positions the reader r at the beginning of the -// export data section of an underlying GC-created object/archive -// file by reading from it. The reader must be positioned at the -// start of the file before calling this function. The hdr result -// is the string before the export data, either "$$" or "$$B". -// The size result is the length of the export data in bytes, or -1 if not known. -func FindExportData(r *bufio.Reader) (hdr string, size int64, err error) { - // Read first line to make sure this is an object file. - line, err := r.ReadSlice('\n') - if err != nil { - err = fmt.Errorf("can't find export data (%v)", err) - return - } - - if string(line) == "!\n" { - // Archive file. Scan to __.PKGDEF. - var name string - if name, size, err = readGopackHeader(r); err != nil { - return - } - - // First entry should be __.PKGDEF. - if name != "__.PKGDEF" { - err = fmt.Errorf("go archive is missing __.PKGDEF") - return - } - - // Read first line of __.PKGDEF data, so that line - // is once again the first line of the input. - if line, err = r.ReadSlice('\n'); err != nil { - err = fmt.Errorf("can't find export data (%v)", err) - return - } - size -= int64(len(line)) - } - - // Now at __.PKGDEF in archive or still at beginning of file. - // Either way, line should begin with "go object ". - if !strings.HasPrefix(string(line), "go object ") { - err = fmt.Errorf("not a Go object file") - return - } - - // Skip over object header to export data. - // Begins after first line starting with $$. - for line[0] != '$' { - if line, err = r.ReadSlice('\n'); err != nil { - err = fmt.Errorf("can't find export data (%v)", err) - return - } - size -= int64(len(line)) - } - hdr = string(line) - if size < 0 { - size = -1 - } - - return -} diff --git a/vendor/golang.org/x/tools/go/internal/gcimporter/gcimporter.go b/vendor/golang.org/x/tools/go/internal/gcimporter/gcimporter.go deleted file mode 100644 index 3ab6683..0000000 --- a/vendor/golang.org/x/tools/go/internal/gcimporter/gcimporter.go +++ /dev/null @@ -1,1084 +0,0 @@ -// Copyright 2011 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. - -// This file is a modified copy of $GOROOT/src/go/internal/gcimporter/gcimporter.go, -// but it also contains the original source-based importer code for Go1.6. -// Once we stop supporting 1.6, we can remove that code. - -// Package gcimporter provides various functions for reading -// gc-generated object files that can be used to implement the -// Importer interface defined by the Go 1.5 standard library package. -package gcimporter // import "golang.org/x/tools/go/internal/gcimporter" - -import ( - "bufio" - "errors" - "fmt" - "go/build" - "go/constant" - "go/token" - "go/types" - "io" - "io/ioutil" - "os" - "path/filepath" - "sort" - "strconv" - "strings" - "text/scanner" -) - -const ( - // Enable debug during development: it adds some additional checks, and - // prevents errors from being recovered. - debug = false - - // If trace is set, debugging output is printed to std out. - trace = false -) - -var pkgExts = [...]string{".a", ".o"} - -// FindPkg returns the filename and unique package id for an import -// path based on package information provided by build.Import (using -// the build.Default build.Context). A relative srcDir is interpreted -// relative to the current working directory. -// If no file was found, an empty filename is returned. -// -func FindPkg(path, srcDir string) (filename, id string) { - if path == "" { - return - } - - var noext string - switch { - default: - // "x" -> "$GOPATH/pkg/$GOOS_$GOARCH/x.ext", "x" - // Don't require the source files to be present. - if abs, err := filepath.Abs(srcDir); err == nil { // see issue 14282 - srcDir = abs - } - bp, _ := build.Import(path, srcDir, build.FindOnly|build.AllowBinary) - if bp.PkgObj == "" { - id = path // make sure we have an id to print in error message - return - } - noext = strings.TrimSuffix(bp.PkgObj, ".a") - id = bp.ImportPath - - case build.IsLocalImport(path): - // "./x" -> "/this/directory/x.ext", "/this/directory/x" - noext = filepath.Join(srcDir, path) - id = noext - - case filepath.IsAbs(path): - // for completeness only - go/build.Import - // does not support absolute imports - // "/x" -> "/x.ext", "/x" - noext = path - id = path - } - - if false { // for debugging - if path != id { - fmt.Printf("%s -> %s\n", path, id) - } - } - - // try extensions - for _, ext := range pkgExts { - filename = noext + ext - if f, err := os.Stat(filename); err == nil && !f.IsDir() { - return - } - } - - filename = "" // not found - return -} - -// ImportData imports a package by reading the gc-generated export data, -// adds the corresponding package object to the packages map indexed by id, -// and returns the object. -// -// The packages map must contains all packages already imported. The data -// reader position must be the beginning of the export data section. The -// filename is only used in error messages. -// -// If packages[id] contains the completely imported package, that package -// can be used directly, and there is no need to call this function (but -// there is also no harm but for extra time used). -// -func ImportData(packages map[string]*types.Package, filename, id string, data io.Reader) (pkg *types.Package, err error) { - // support for parser error handling - defer func() { - switch r := recover().(type) { - case nil: - // nothing to do - case importError: - err = r - default: - panic(r) // internal error - } - }() - - var p parser - p.init(filename, id, data, packages) - pkg = p.parseExport() - - return -} - -// Import imports a gc-generated package given its import path and srcDir, adds -// the corresponding package object to the packages map, and returns the object. -// The packages map must contain all packages already imported. -// -func Import(packages map[string]*types.Package, path, srcDir string, lookup func(path string) (io.ReadCloser, error)) (pkg *types.Package, err error) { - var rc io.ReadCloser - var filename, id string - if lookup != nil { - // With custom lookup specified, assume that caller has - // converted path to a canonical import path for use in the map. - if path == "unsafe" { - return types.Unsafe, nil - } - id = path - - // No need to re-import if the package was imported completely before. - if pkg = packages[id]; pkg != nil && pkg.Complete() { - return - } - f, err := lookup(path) - if err != nil { - return nil, err - } - rc = f - } else { - filename, id = FindPkg(path, srcDir) - if filename == "" { - if path == "unsafe" { - return types.Unsafe, nil - } - return nil, fmt.Errorf("can't find import: %q", id) - } - - // no need to re-import if the package was imported completely before - if pkg = packages[id]; pkg != nil && pkg.Complete() { - return - } - - // open file - f, err := os.Open(filename) - if err != nil { - return nil, err - } - defer func() { - if err != nil { - // add file name to error - err = fmt.Errorf("%s: %v", filename, err) - } - }() - rc = f - } - defer rc.Close() - - var hdr string - buf := bufio.NewReader(rc) - if hdr, _, err = FindExportData(buf); err != nil { - return - } - - switch hdr { - case "$$\n": - // Work-around if we don't have a filename; happens only if lookup != nil. - // Either way, the filename is only needed for importer error messages, so - // this is fine. - if filename == "" { - filename = path - } - return ImportData(packages, filename, id, buf) - - case "$$B\n": - var data []byte - data, err = ioutil.ReadAll(buf) - if err != nil { - break - } - - // TODO(gri): allow clients of go/importer to provide a FileSet. - // Or, define a new standard go/types/gcexportdata package. - fset := token.NewFileSet() - - // The indexed export format starts with an 'i'; the older - // binary export format starts with a 'c', 'd', or 'v' - // (from "version"). Select appropriate importer. - if len(data) > 0 && data[0] == 'i' { - _, pkg, err = IImportData(fset, packages, data[1:], id) - } else { - _, pkg, err = BImportData(fset, packages, data, id) - } - - default: - err = fmt.Errorf("unknown export data header: %q", hdr) - } - - return -} - -// ---------------------------------------------------------------------------- -// Parser - -// TODO(gri) Imported objects don't have position information. -// Ideally use the debug table line info; alternatively -// create some fake position (or the position of the -// import). That way error messages referring to imported -// objects can print meaningful information. - -// parser parses the exports inside a gc compiler-produced -// object/archive file and populates its scope with the results. -type parser struct { - scanner scanner.Scanner - tok rune // current token - lit string // literal string; only valid for Ident, Int, String tokens - id string // package id of imported package - sharedPkgs map[string]*types.Package // package id -> package object (across importer) - localPkgs map[string]*types.Package // package id -> package object (just this package) -} - -func (p *parser) init(filename, id string, src io.Reader, packages map[string]*types.Package) { - p.scanner.Init(src) - p.scanner.Error = func(_ *scanner.Scanner, msg string) { p.error(msg) } - p.scanner.Mode = scanner.ScanIdents | scanner.ScanInts | scanner.ScanChars | scanner.ScanStrings | scanner.ScanComments | scanner.SkipComments - p.scanner.Whitespace = 1<<'\t' | 1<<' ' - p.scanner.Filename = filename // for good error messages - p.next() - p.id = id - p.sharedPkgs = packages - if debug { - // check consistency of packages map - for _, pkg := range packages { - if pkg.Name() == "" { - fmt.Printf("no package name for %s\n", pkg.Path()) - } - } - } -} - -func (p *parser) next() { - p.tok = p.scanner.Scan() - switch p.tok { - case scanner.Ident, scanner.Int, scanner.Char, scanner.String, '·': - p.lit = p.scanner.TokenText() - default: - p.lit = "" - } - if debug { - fmt.Printf("%s: %q -> %q\n", scanner.TokenString(p.tok), p.scanner.TokenText(), p.lit) - } -} - -func declTypeName(pkg *types.Package, name string) *types.TypeName { - scope := pkg.Scope() - if obj := scope.Lookup(name); obj != nil { - return obj.(*types.TypeName) - } - obj := types.NewTypeName(token.NoPos, pkg, name, nil) - // a named type may be referred to before the underlying type - // is known - set it up - types.NewNamed(obj, nil, nil) - scope.Insert(obj) - return obj -} - -// ---------------------------------------------------------------------------- -// Error handling - -// Internal errors are boxed as importErrors. -type importError struct { - pos scanner.Position - err error -} - -func (e importError) Error() string { - return fmt.Sprintf("import error %s (byte offset = %d): %s", e.pos, e.pos.Offset, e.err) -} - -func (p *parser) error(err interface{}) { - if s, ok := err.(string); ok { - err = errors.New(s) - } - // panic with a runtime.Error if err is not an error - panic(importError{p.scanner.Pos(), err.(error)}) -} - -func (p *parser) errorf(format string, args ...interface{}) { - p.error(fmt.Sprintf(format, args...)) -} - -func (p *parser) expect(tok rune) string { - lit := p.lit - if p.tok != tok { - p.errorf("expected %s, got %s (%s)", scanner.TokenString(tok), scanner.TokenString(p.tok), lit) - } - p.next() - return lit -} - -func (p *parser) expectSpecial(tok string) { - sep := 'x' // not white space - i := 0 - for i < len(tok) && p.tok == rune(tok[i]) && sep > ' ' { - sep = p.scanner.Peek() // if sep <= ' ', there is white space before the next token - p.next() - i++ - } - if i < len(tok) { - p.errorf("expected %q, got %q", tok, tok[0:i]) - } -} - -func (p *parser) expectKeyword(keyword string) { - lit := p.expect(scanner.Ident) - if lit != keyword { - p.errorf("expected keyword %s, got %q", keyword, lit) - } -} - -// ---------------------------------------------------------------------------- -// Qualified and unqualified names - -// PackageId = string_lit . -// -func (p *parser) parsePackageID() string { - id, err := strconv.Unquote(p.expect(scanner.String)) - if err != nil { - p.error(err) - } - // id == "" stands for the imported package id - // (only known at time of package installation) - if id == "" { - id = p.id - } - return id -} - -// PackageName = ident . -// -func (p *parser) parsePackageName() string { - return p.expect(scanner.Ident) -} - -// dotIdentifier = ( ident | '·' ) { ident | int | '·' } . -func (p *parser) parseDotIdent() string { - ident := "" - if p.tok != scanner.Int { - sep := 'x' // not white space - for (p.tok == scanner.Ident || p.tok == scanner.Int || p.tok == '·') && sep > ' ' { - ident += p.lit - sep = p.scanner.Peek() // if sep <= ' ', there is white space before the next token - p.next() - } - } - if ident == "" { - p.expect(scanner.Ident) // use expect() for error handling - } - return ident -} - -// QualifiedName = "@" PackageId "." ( "?" | dotIdentifier ) . -// -func (p *parser) parseQualifiedName() (id, name string) { - p.expect('@') - id = p.parsePackageID() - p.expect('.') - // Per rev f280b8a485fd (10/2/2013), qualified names may be used for anonymous fields. - if p.tok == '?' { - p.next() - } else { - name = p.parseDotIdent() - } - return -} - -// getPkg returns the package for a given id. If the package is -// not found, create the package and add it to the p.localPkgs -// and p.sharedPkgs maps. name is the (expected) name of the -// package. If name == "", the package name is expected to be -// set later via an import clause in the export data. -// -// id identifies a package, usually by a canonical package path like -// "encoding/json" but possibly by a non-canonical import path like -// "./json". -// -func (p *parser) getPkg(id, name string) *types.Package { - // package unsafe is not in the packages maps - handle explicitly - if id == "unsafe" { - return types.Unsafe - } - - pkg := p.localPkgs[id] - if pkg == nil { - // first import of id from this package - pkg = p.sharedPkgs[id] - if pkg == nil { - // first import of id by this importer; - // add (possibly unnamed) pkg to shared packages - pkg = types.NewPackage(id, name) - p.sharedPkgs[id] = pkg - } - // add (possibly unnamed) pkg to local packages - if p.localPkgs == nil { - p.localPkgs = make(map[string]*types.Package) - } - p.localPkgs[id] = pkg - } else if name != "" { - // package exists already and we have an expected package name; - // make sure names match or set package name if necessary - if pname := pkg.Name(); pname == "" { - pkg.SetName(name) - } else if pname != name { - p.errorf("%s package name mismatch: %s (given) vs %s (expected)", id, pname, name) - } - } - return pkg -} - -// parseExportedName is like parseQualifiedName, but -// the package id is resolved to an imported *types.Package. -// -func (p *parser) parseExportedName() (pkg *types.Package, name string) { - id, name := p.parseQualifiedName() - pkg = p.getPkg(id, "") - return -} - -// ---------------------------------------------------------------------------- -// Types - -// BasicType = identifier . -// -func (p *parser) parseBasicType() types.Type { - id := p.expect(scanner.Ident) - obj := types.Universe.Lookup(id) - if obj, ok := obj.(*types.TypeName); ok { - return obj.Type() - } - p.errorf("not a basic type: %s", id) - return nil -} - -// ArrayType = "[" int_lit "]" Type . -// -func (p *parser) parseArrayType(parent *types.Package) types.Type { - // "[" already consumed and lookahead known not to be "]" - lit := p.expect(scanner.Int) - p.expect(']') - elem := p.parseType(parent) - n, err := strconv.ParseInt(lit, 10, 64) - if err != nil { - p.error(err) - } - return types.NewArray(elem, n) -} - -// MapType = "map" "[" Type "]" Type . -// -func (p *parser) parseMapType(parent *types.Package) types.Type { - p.expectKeyword("map") - p.expect('[') - key := p.parseType(parent) - p.expect(']') - elem := p.parseType(parent) - return types.NewMap(key, elem) -} - -// Name = identifier | "?" | QualifiedName . -// -// For unqualified and anonymous names, the returned package is the parent -// package unless parent == nil, in which case the returned package is the -// package being imported. (The parent package is not nil if the name -// is an unqualified struct field or interface method name belonging to a -// type declared in another package.) -// -// For qualified names, the returned package is nil (and not created if -// it doesn't exist yet) unless materializePkg is set (which creates an -// unnamed package with valid package path). In the latter case, a -// subsequent import clause is expected to provide a name for the package. -// -func (p *parser) parseName(parent *types.Package, materializePkg bool) (pkg *types.Package, name string) { - pkg = parent - if pkg == nil { - pkg = p.sharedPkgs[p.id] - } - switch p.tok { - case scanner.Ident: - name = p.lit - p.next() - case '?': - // anonymous - p.next() - case '@': - // exported name prefixed with package path - pkg = nil - var id string - id, name = p.parseQualifiedName() - if materializePkg { - pkg = p.getPkg(id, "") - } - default: - p.error("name expected") - } - return -} - -func deref(typ types.Type) types.Type { - if p, _ := typ.(*types.Pointer); p != nil { - return p.Elem() - } - return typ -} - -// Field = Name Type [ string_lit ] . -// -func (p *parser) parseField(parent *types.Package) (*types.Var, string) { - pkg, name := p.parseName(parent, true) - - if name == "_" { - // Blank fields should be package-qualified because they - // are unexported identifiers, but gc does not qualify them. - // Assuming that the ident belongs to the current package - // causes types to change during re-exporting, leading - // to spurious "can't assign A to B" errors from go/types. - // As a workaround, pretend all blank fields belong - // to the same unique dummy package. - const blankpkg = "<_>" - pkg = p.getPkg(blankpkg, blankpkg) - } - - typ := p.parseType(parent) - anonymous := false - if name == "" { - // anonymous field - typ must be T or *T and T must be a type name - switch typ := deref(typ).(type) { - case *types.Basic: // basic types are named types - pkg = nil // objects defined in Universe scope have no package - name = typ.Name() - case *types.Named: - name = typ.Obj().Name() - default: - p.errorf("anonymous field expected") - } - anonymous = true - } - tag := "" - if p.tok == scanner.String { - s := p.expect(scanner.String) - var err error - tag, err = strconv.Unquote(s) - if err != nil { - p.errorf("invalid struct tag %s: %s", s, err) - } - } - return types.NewField(token.NoPos, pkg, name, typ, anonymous), tag -} - -// StructType = "struct" "{" [ FieldList ] "}" . -// FieldList = Field { ";" Field } . -// -func (p *parser) parseStructType(parent *types.Package) types.Type { - var fields []*types.Var - var tags []string - - p.expectKeyword("struct") - p.expect('{') - for i := 0; p.tok != '}' && p.tok != scanner.EOF; i++ { - if i > 0 { - p.expect(';') - } - fld, tag := p.parseField(parent) - if tag != "" && tags == nil { - tags = make([]string, i) - } - if tags != nil { - tags = append(tags, tag) - } - fields = append(fields, fld) - } - p.expect('}') - - return types.NewStruct(fields, tags) -} - -// Parameter = ( identifier | "?" ) [ "..." ] Type [ string_lit ] . -// -func (p *parser) parseParameter() (par *types.Var, isVariadic bool) { - _, name := p.parseName(nil, false) - // remove gc-specific parameter numbering - if i := strings.Index(name, "·"); i >= 0 { - name = name[:i] - } - if p.tok == '.' { - p.expectSpecial("...") - isVariadic = true - } - typ := p.parseType(nil) - if isVariadic { - typ = types.NewSlice(typ) - } - // ignore argument tag (e.g. "noescape") - if p.tok == scanner.String { - p.next() - } - // TODO(gri) should we provide a package? - par = types.NewVar(token.NoPos, nil, name, typ) - return -} - -// Parameters = "(" [ ParameterList ] ")" . -// ParameterList = { Parameter "," } Parameter . -// -func (p *parser) parseParameters() (list []*types.Var, isVariadic bool) { - p.expect('(') - for p.tok != ')' && p.tok != scanner.EOF { - if len(list) > 0 { - p.expect(',') - } - par, variadic := p.parseParameter() - list = append(list, par) - if variadic { - if isVariadic { - p.error("... not on final argument") - } - isVariadic = true - } - } - p.expect(')') - - return -} - -// Signature = Parameters [ Result ] . -// Result = Type | Parameters . -// -func (p *parser) parseSignature(recv *types.Var) *types.Signature { - params, isVariadic := p.parseParameters() - - // optional result type - var results []*types.Var - if p.tok == '(' { - var variadic bool - results, variadic = p.parseParameters() - if variadic { - p.error("... not permitted on result type") - } - } - - return types.NewSignature(recv, types.NewTuple(params...), types.NewTuple(results...), isVariadic) -} - -// InterfaceType = "interface" "{" [ MethodList ] "}" . -// MethodList = Method { ";" Method } . -// Method = Name Signature . -// -// The methods of embedded interfaces are always "inlined" -// by the compiler and thus embedded interfaces are never -// visible in the export data. -// -func (p *parser) parseInterfaceType(parent *types.Package) types.Type { - var methods []*types.Func - - p.expectKeyword("interface") - p.expect('{') - for i := 0; p.tok != '}' && p.tok != scanner.EOF; i++ { - if i > 0 { - p.expect(';') - } - pkg, name := p.parseName(parent, true) - sig := p.parseSignature(nil) - methods = append(methods, types.NewFunc(token.NoPos, pkg, name, sig)) - } - p.expect('}') - - // Complete requires the type's embedded interfaces to be fully defined, - // but we do not define any - return newInterface(methods, nil).Complete() -} - -// ChanType = ( "chan" [ "<-" ] | "<-" "chan" ) Type . -// -func (p *parser) parseChanType(parent *types.Package) types.Type { - dir := types.SendRecv - if p.tok == scanner.Ident { - p.expectKeyword("chan") - if p.tok == '<' { - p.expectSpecial("<-") - dir = types.SendOnly - } - } else { - p.expectSpecial("<-") - p.expectKeyword("chan") - dir = types.RecvOnly - } - elem := p.parseType(parent) - return types.NewChan(dir, elem) -} - -// Type = -// BasicType | TypeName | ArrayType | SliceType | StructType | -// PointerType | FuncType | InterfaceType | MapType | ChanType | -// "(" Type ")" . -// -// BasicType = ident . -// TypeName = ExportedName . -// SliceType = "[" "]" Type . -// PointerType = "*" Type . -// FuncType = "func" Signature . -// -func (p *parser) parseType(parent *types.Package) types.Type { - switch p.tok { - case scanner.Ident: - switch p.lit { - default: - return p.parseBasicType() - case "struct": - return p.parseStructType(parent) - case "func": - // FuncType - p.next() - return p.parseSignature(nil) - case "interface": - return p.parseInterfaceType(parent) - case "map": - return p.parseMapType(parent) - case "chan": - return p.parseChanType(parent) - } - case '@': - // TypeName - pkg, name := p.parseExportedName() - return declTypeName(pkg, name).Type() - case '[': - p.next() // look ahead - if p.tok == ']' { - // SliceType - p.next() - return types.NewSlice(p.parseType(parent)) - } - return p.parseArrayType(parent) - case '*': - // PointerType - p.next() - return types.NewPointer(p.parseType(parent)) - case '<': - return p.parseChanType(parent) - case '(': - // "(" Type ")" - p.next() - typ := p.parseType(parent) - p.expect(')') - return typ - } - p.errorf("expected type, got %s (%q)", scanner.TokenString(p.tok), p.lit) - return nil -} - -// ---------------------------------------------------------------------------- -// Declarations - -// ImportDecl = "import" PackageName PackageId . -// -func (p *parser) parseImportDecl() { - p.expectKeyword("import") - name := p.parsePackageName() - p.getPkg(p.parsePackageID(), name) -} - -// int_lit = [ "+" | "-" ] { "0" ... "9" } . -// -func (p *parser) parseInt() string { - s := "" - switch p.tok { - case '-': - s = "-" - p.next() - case '+': - p.next() - } - return s + p.expect(scanner.Int) -} - -// number = int_lit [ "p" int_lit ] . -// -func (p *parser) parseNumber() (typ *types.Basic, val constant.Value) { - // mantissa - mant := constant.MakeFromLiteral(p.parseInt(), token.INT, 0) - if mant == nil { - panic("invalid mantissa") - } - - if p.lit == "p" { - // exponent (base 2) - p.next() - exp, err := strconv.ParseInt(p.parseInt(), 10, 0) - if err != nil { - p.error(err) - } - if exp < 0 { - denom := constant.MakeInt64(1) - denom = constant.Shift(denom, token.SHL, uint(-exp)) - typ = types.Typ[types.UntypedFloat] - val = constant.BinaryOp(mant, token.QUO, denom) - return - } - if exp > 0 { - mant = constant.Shift(mant, token.SHL, uint(exp)) - } - typ = types.Typ[types.UntypedFloat] - val = mant - return - } - - typ = types.Typ[types.UntypedInt] - val = mant - return -} - -// ConstDecl = "const" ExportedName [ Type ] "=" Literal . -// Literal = bool_lit | int_lit | float_lit | complex_lit | rune_lit | string_lit . -// bool_lit = "true" | "false" . -// complex_lit = "(" float_lit "+" float_lit "i" ")" . -// rune_lit = "(" int_lit "+" int_lit ")" . -// string_lit = `"` { unicode_char } `"` . -// -func (p *parser) parseConstDecl() { - p.expectKeyword("const") - pkg, name := p.parseExportedName() - - var typ0 types.Type - if p.tok != '=' { - // constant types are never structured - no need for parent type - typ0 = p.parseType(nil) - } - - p.expect('=') - var typ types.Type - var val constant.Value - switch p.tok { - case scanner.Ident: - // bool_lit - if p.lit != "true" && p.lit != "false" { - p.error("expected true or false") - } - typ = types.Typ[types.UntypedBool] - val = constant.MakeBool(p.lit == "true") - p.next() - - case '-', scanner.Int: - // int_lit - typ, val = p.parseNumber() - - case '(': - // complex_lit or rune_lit - p.next() - if p.tok == scanner.Char { - p.next() - p.expect('+') - typ = types.Typ[types.UntypedRune] - _, val = p.parseNumber() - p.expect(')') - break - } - _, re := p.parseNumber() - p.expect('+') - _, im := p.parseNumber() - p.expectKeyword("i") - p.expect(')') - typ = types.Typ[types.UntypedComplex] - val = constant.BinaryOp(re, token.ADD, constant.MakeImag(im)) - - case scanner.Char: - // rune_lit - typ = types.Typ[types.UntypedRune] - val = constant.MakeFromLiteral(p.lit, token.CHAR, 0) - p.next() - - case scanner.String: - // string_lit - typ = types.Typ[types.UntypedString] - val = constant.MakeFromLiteral(p.lit, token.STRING, 0) - p.next() - - default: - p.errorf("expected literal got %s", scanner.TokenString(p.tok)) - } - - if typ0 == nil { - typ0 = typ - } - - pkg.Scope().Insert(types.NewConst(token.NoPos, pkg, name, typ0, val)) -} - -// TypeDecl = "type" ExportedName Type . -// -func (p *parser) parseTypeDecl() { - p.expectKeyword("type") - pkg, name := p.parseExportedName() - obj := declTypeName(pkg, name) - - // The type object may have been imported before and thus already - // have a type associated with it. We still need to parse the type - // structure, but throw it away if the object already has a type. - // This ensures that all imports refer to the same type object for - // a given type declaration. - typ := p.parseType(pkg) - - if name := obj.Type().(*types.Named); name.Underlying() == nil { - name.SetUnderlying(typ) - } -} - -// VarDecl = "var" ExportedName Type . -// -func (p *parser) parseVarDecl() { - p.expectKeyword("var") - pkg, name := p.parseExportedName() - typ := p.parseType(pkg) - pkg.Scope().Insert(types.NewVar(token.NoPos, pkg, name, typ)) -} - -// Func = Signature [ Body ] . -// Body = "{" ... "}" . -// -func (p *parser) parseFunc(recv *types.Var) *types.Signature { - sig := p.parseSignature(recv) - if p.tok == '{' { - p.next() - for i := 1; i > 0; p.next() { - switch p.tok { - case '{': - i++ - case '}': - i-- - } - } - } - return sig -} - -// MethodDecl = "func" Receiver Name Func . -// Receiver = "(" ( identifier | "?" ) [ "*" ] ExportedName ")" . -// -func (p *parser) parseMethodDecl() { - // "func" already consumed - p.expect('(') - recv, _ := p.parseParameter() // receiver - p.expect(')') - - // determine receiver base type object - base := deref(recv.Type()).(*types.Named) - - // parse method name, signature, and possibly inlined body - _, name := p.parseName(nil, false) - sig := p.parseFunc(recv) - - // methods always belong to the same package as the base type object - pkg := base.Obj().Pkg() - - // add method to type unless type was imported before - // and method exists already - // TODO(gri) This leads to a quadratic algorithm - ok for now because method counts are small. - base.AddMethod(types.NewFunc(token.NoPos, pkg, name, sig)) -} - -// FuncDecl = "func" ExportedName Func . -// -func (p *parser) parseFuncDecl() { - // "func" already consumed - pkg, name := p.parseExportedName() - typ := p.parseFunc(nil) - pkg.Scope().Insert(types.NewFunc(token.NoPos, pkg, name, typ)) -} - -// Decl = [ ImportDecl | ConstDecl | TypeDecl | VarDecl | FuncDecl | MethodDecl ] "\n" . -// -func (p *parser) parseDecl() { - if p.tok == scanner.Ident { - switch p.lit { - case "import": - p.parseImportDecl() - case "const": - p.parseConstDecl() - case "type": - p.parseTypeDecl() - case "var": - p.parseVarDecl() - case "func": - p.next() // look ahead - if p.tok == '(' { - p.parseMethodDecl() - } else { - p.parseFuncDecl() - } - } - } - p.expect('\n') -} - -// ---------------------------------------------------------------------------- -// Export - -// Export = "PackageClause { Decl } "$$" . -// PackageClause = "package" PackageName [ "safe" ] "\n" . -// -func (p *parser) parseExport() *types.Package { - p.expectKeyword("package") - name := p.parsePackageName() - if p.tok == scanner.Ident && p.lit == "safe" { - // package was compiled with -u option - ignore - p.next() - } - p.expect('\n') - - pkg := p.getPkg(p.id, name) - - for p.tok != '$' && p.tok != scanner.EOF { - p.parseDecl() - } - - if ch := p.scanner.Peek(); p.tok != '$' || ch != '$' { - // don't call next()/expect() since reading past the - // export data may cause scanner errors (e.g. NUL chars) - p.errorf("expected '$$', got %s %c", scanner.TokenString(p.tok), ch) - } - - if n := p.scanner.ErrorCount; n != 0 { - p.errorf("expected no scanner errors, got %d", n) - } - - // Record all locally referenced packages as imports. - var imports []*types.Package - for id, pkg2 := range p.localPkgs { - if pkg2.Name() == "" { - p.errorf("%s package has no name", id) - } - if id == p.id { - continue // avoid self-edge - } - imports = append(imports, pkg2) - } - sort.Sort(byPath(imports)) - pkg.SetImports(imports) - - // package was imported completely and without errors - pkg.MarkComplete() - - return pkg -} - -type byPath []*types.Package - -func (a byPath) Len() int { return len(a) } -func (a byPath) Swap(i, j int) { a[i], a[j] = a[j], a[i] } -func (a byPath) Less(i, j int) bool { return a[i].Path() < a[j].Path() } diff --git a/vendor/golang.org/x/tools/go/internal/gcimporter/iexport.go b/vendor/golang.org/x/tools/go/internal/gcimporter/iexport.go deleted file mode 100644 index 2095534..0000000 --- a/vendor/golang.org/x/tools/go/internal/gcimporter/iexport.go +++ /dev/null @@ -1,1007 +0,0 @@ -// Copyright 2019 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. - -// Indexed binary package export. -// This file was derived from $GOROOT/src/cmd/compile/internal/gc/iexport.go; -// see that file for specification of the format. - -package gcimporter - -import ( - "bytes" - "encoding/binary" - "fmt" - "go/ast" - "go/constant" - "go/token" - "go/types" - "io" - "math/big" - "reflect" - "sort" - "strconv" - "strings" - - "golang.org/x/tools/internal/typeparams" -) - -// Current bundled export format version. Increase with each format change. -// 0: initial implementation -const bundleVersion = 0 - -// IExportData writes indexed export data for pkg to out. -// -// If no file set is provided, position info will be missing. -// The package path of the top-level package will not be recorded, -// so that calls to IImportData can override with a provided package path. -func IExportData(out io.Writer, fset *token.FileSet, pkg *types.Package) error { - return iexportCommon(out, fset, false, iexportVersion, []*types.Package{pkg}) -} - -// IExportBundle writes an indexed export bundle for pkgs to out. -func IExportBundle(out io.Writer, fset *token.FileSet, pkgs []*types.Package) error { - return iexportCommon(out, fset, true, iexportVersion, pkgs) -} - -func iexportCommon(out io.Writer, fset *token.FileSet, bundle bool, version int, pkgs []*types.Package) (err error) { - if !debug { - defer func() { - if e := recover(); e != nil { - if ierr, ok := e.(internalError); ok { - err = ierr - return - } - // Not an internal error; panic again. - panic(e) - } - }() - } - - p := iexporter{ - fset: fset, - version: version, - allPkgs: map[*types.Package]bool{}, - stringIndex: map[string]uint64{}, - declIndex: map[types.Object]uint64{}, - tparamNames: map[types.Object]string{}, - typIndex: map[types.Type]uint64{}, - } - if !bundle { - p.localpkg = pkgs[0] - } - - for i, pt := range predeclared() { - p.typIndex[pt] = uint64(i) - } - if len(p.typIndex) > predeclReserved { - panic(internalErrorf("too many predeclared types: %d > %d", len(p.typIndex), predeclReserved)) - } - - // Initialize work queue with exported declarations. - for _, pkg := range pkgs { - scope := pkg.Scope() - for _, name := range scope.Names() { - if ast.IsExported(name) { - p.pushDecl(scope.Lookup(name)) - } - } - - if bundle { - // Ensure pkg and its imports are included in the index. - p.allPkgs[pkg] = true - for _, imp := range pkg.Imports() { - p.allPkgs[imp] = true - } - } - } - - // Loop until no more work. - for !p.declTodo.empty() { - p.doDecl(p.declTodo.popHead()) - } - - // Append indices to data0 section. - dataLen := uint64(p.data0.Len()) - w := p.newWriter() - w.writeIndex(p.declIndex) - - if bundle { - w.uint64(uint64(len(pkgs))) - for _, pkg := range pkgs { - w.pkg(pkg) - imps := pkg.Imports() - w.uint64(uint64(len(imps))) - for _, imp := range imps { - w.pkg(imp) - } - } - } - w.flush() - - // Assemble header. - var hdr intWriter - if bundle { - hdr.uint64(bundleVersion) - } - hdr.uint64(uint64(p.version)) - hdr.uint64(uint64(p.strings.Len())) - hdr.uint64(dataLen) - - // Flush output. - io.Copy(out, &hdr) - io.Copy(out, &p.strings) - io.Copy(out, &p.data0) - - return nil -} - -// writeIndex writes out an object index. mainIndex indicates whether -// we're writing out the main index, which is also read by -// non-compiler tools and includes a complete package description -// (i.e., name and height). -func (w *exportWriter) writeIndex(index map[types.Object]uint64) { - type pkgObj struct { - obj types.Object - name string // qualified name; differs from obj.Name for type params - } - // Build a map from packages to objects from that package. - pkgObjs := map[*types.Package][]pkgObj{} - - // For the main index, make sure to include every package that - // we reference, even if we're not exporting (or reexporting) - // any symbols from it. - if w.p.localpkg != nil { - pkgObjs[w.p.localpkg] = nil - } - for pkg := range w.p.allPkgs { - pkgObjs[pkg] = nil - } - - for obj := range index { - name := w.p.exportName(obj) - pkgObjs[obj.Pkg()] = append(pkgObjs[obj.Pkg()], pkgObj{obj, name}) - } - - var pkgs []*types.Package - for pkg, objs := range pkgObjs { - pkgs = append(pkgs, pkg) - - sort.Slice(objs, func(i, j int) bool { - return objs[i].name < objs[j].name - }) - } - - sort.Slice(pkgs, func(i, j int) bool { - return w.exportPath(pkgs[i]) < w.exportPath(pkgs[j]) - }) - - w.uint64(uint64(len(pkgs))) - for _, pkg := range pkgs { - w.string(w.exportPath(pkg)) - w.string(pkg.Name()) - w.uint64(uint64(0)) // package height is not needed for go/types - - objs := pkgObjs[pkg] - w.uint64(uint64(len(objs))) - for _, obj := range objs { - w.string(obj.name) - w.uint64(index[obj.obj]) - } - } -} - -// exportName returns the 'exported' name of an object. It differs from -// obj.Name() only for type parameters (see tparamExportName for details). -func (p *iexporter) exportName(obj types.Object) (res string) { - if name := p.tparamNames[obj]; name != "" { - return name - } - return obj.Name() -} - -type iexporter struct { - fset *token.FileSet - out *bytes.Buffer - version int - - localpkg *types.Package - - // allPkgs tracks all packages that have been referenced by - // the export data, so we can ensure to include them in the - // main index. - allPkgs map[*types.Package]bool - - declTodo objQueue - - strings intWriter - stringIndex map[string]uint64 - - data0 intWriter - declIndex map[types.Object]uint64 - tparamNames map[types.Object]string // typeparam->exported name - typIndex map[types.Type]uint64 - - indent int // for tracing support -} - -func (p *iexporter) trace(format string, args ...interface{}) { - if !trace { - // Call sites should also be guarded, but having this check here allows - // easily enabling/disabling debug trace statements. - return - } - fmt.Printf(strings.Repeat("..", p.indent)+format+"\n", args...) -} - -// stringOff returns the offset of s within the string section. -// If not already present, it's added to the end. -func (p *iexporter) stringOff(s string) uint64 { - off, ok := p.stringIndex[s] - if !ok { - off = uint64(p.strings.Len()) - p.stringIndex[s] = off - - p.strings.uint64(uint64(len(s))) - p.strings.WriteString(s) - } - return off -} - -// pushDecl adds n to the declaration work queue, if not already present. -func (p *iexporter) pushDecl(obj types.Object) { - // Package unsafe is known to the compiler and predeclared. - assert(obj.Pkg() != types.Unsafe) - - if _, ok := p.declIndex[obj]; ok { - return - } - - p.declIndex[obj] = ^uint64(0) // mark obj present in work queue - p.declTodo.pushTail(obj) -} - -// exportWriter handles writing out individual data section chunks. -type exportWriter struct { - p *iexporter - - data intWriter - currPkg *types.Package - prevFile string - prevLine int64 - prevColumn int64 -} - -func (w *exportWriter) exportPath(pkg *types.Package) string { - if pkg == w.p.localpkg { - return "" - } - return pkg.Path() -} - -func (p *iexporter) doDecl(obj types.Object) { - if trace { - p.trace("exporting decl %v (%T)", obj, obj) - p.indent++ - defer func() { - p.indent-- - p.trace("=> %s", obj) - }() - } - w := p.newWriter() - w.setPkg(obj.Pkg(), false) - - switch obj := obj.(type) { - case *types.Var: - w.tag('V') - w.pos(obj.Pos()) - w.typ(obj.Type(), obj.Pkg()) - - case *types.Func: - sig, _ := obj.Type().(*types.Signature) - if sig.Recv() != nil { - panic(internalErrorf("unexpected method: %v", sig)) - } - - // Function. - if typeparams.ForSignature(sig).Len() == 0 { - w.tag('F') - } else { - w.tag('G') - } - w.pos(obj.Pos()) - // The tparam list of the function type is the declaration of the type - // params. So, write out the type params right now. Then those type params - // will be referenced via their type offset (via typOff) in all other - // places in the signature and function where they are used. - // - // While importing the type parameters, tparamList computes and records - // their export name, so that it can be later used when writing the index. - if tparams := typeparams.ForSignature(sig); tparams.Len() > 0 { - w.tparamList(obj.Name(), tparams, obj.Pkg()) - } - w.signature(sig) - - case *types.Const: - w.tag('C') - w.pos(obj.Pos()) - w.value(obj.Type(), obj.Val()) - - case *types.TypeName: - t := obj.Type() - - if tparam, ok := t.(*typeparams.TypeParam); ok { - w.tag('P') - w.pos(obj.Pos()) - constraint := tparam.Constraint() - if p.version >= iexportVersionGo1_18 { - implicit := false - if iface, _ := constraint.(*types.Interface); iface != nil { - implicit = typeparams.IsImplicit(iface) - } - w.bool(implicit) - } - w.typ(constraint, obj.Pkg()) - break - } - - if obj.IsAlias() { - w.tag('A') - w.pos(obj.Pos()) - w.typ(t, obj.Pkg()) - break - } - - // Defined type. - named, ok := t.(*types.Named) - if !ok { - panic(internalErrorf("%s is not a defined type", t)) - } - - if typeparams.ForNamed(named).Len() == 0 { - w.tag('T') - } else { - w.tag('U') - } - w.pos(obj.Pos()) - - if typeparams.ForNamed(named).Len() > 0 { - // While importing the type parameters, tparamList computes and records - // their export name, so that it can be later used when writing the index. - w.tparamList(obj.Name(), typeparams.ForNamed(named), obj.Pkg()) - } - - underlying := obj.Type().Underlying() - w.typ(underlying, obj.Pkg()) - - if types.IsInterface(t) { - break - } - - n := named.NumMethods() - w.uint64(uint64(n)) - for i := 0; i < n; i++ { - m := named.Method(i) - w.pos(m.Pos()) - w.string(m.Name()) - sig, _ := m.Type().(*types.Signature) - - // Receiver type parameters are type arguments of the receiver type, so - // their name must be qualified before exporting recv. - if rparams := typeparams.RecvTypeParams(sig); rparams.Len() > 0 { - prefix := obj.Name() + "." + m.Name() - for i := 0; i < rparams.Len(); i++ { - rparam := rparams.At(i) - name := tparamExportName(prefix, rparam) - w.p.tparamNames[rparam.Obj()] = name - } - } - w.param(sig.Recv()) - w.signature(sig) - } - - default: - panic(internalErrorf("unexpected object: %v", obj)) - } - - p.declIndex[obj] = w.flush() -} - -func (w *exportWriter) tag(tag byte) { - w.data.WriteByte(tag) -} - -func (w *exportWriter) pos(pos token.Pos) { - if w.p.version >= iexportVersionPosCol { - w.posV1(pos) - } else { - w.posV0(pos) - } -} - -func (w *exportWriter) posV1(pos token.Pos) { - if w.p.fset == nil { - w.int64(0) - return - } - - p := w.p.fset.Position(pos) - file := p.Filename - line := int64(p.Line) - column := int64(p.Column) - - deltaColumn := (column - w.prevColumn) << 1 - deltaLine := (line - w.prevLine) << 1 - - if file != w.prevFile { - deltaLine |= 1 - } - if deltaLine != 0 { - deltaColumn |= 1 - } - - w.int64(deltaColumn) - if deltaColumn&1 != 0 { - w.int64(deltaLine) - if deltaLine&1 != 0 { - w.string(file) - } - } - - w.prevFile = file - w.prevLine = line - w.prevColumn = column -} - -func (w *exportWriter) posV0(pos token.Pos) { - if w.p.fset == nil { - w.int64(0) - return - } - - p := w.p.fset.Position(pos) - file := p.Filename - line := int64(p.Line) - - // When file is the same as the last position (common case), - // we can save a few bytes by delta encoding just the line - // number. - // - // Note: Because data objects may be read out of order (or not - // at all), we can only apply delta encoding within a single - // object. This is handled implicitly by tracking prevFile and - // prevLine as fields of exportWriter. - - if file == w.prevFile { - delta := line - w.prevLine - w.int64(delta) - if delta == deltaNewFile { - w.int64(-1) - } - } else { - w.int64(deltaNewFile) - w.int64(line) // line >= 0 - w.string(file) - w.prevFile = file - } - w.prevLine = line -} - -func (w *exportWriter) pkg(pkg *types.Package) { - // Ensure any referenced packages are declared in the main index. - w.p.allPkgs[pkg] = true - - w.string(w.exportPath(pkg)) -} - -func (w *exportWriter) qualifiedIdent(obj types.Object) { - name := w.p.exportName(obj) - - // Ensure any referenced declarations are written out too. - w.p.pushDecl(obj) - w.string(name) - w.pkg(obj.Pkg()) -} - -func (w *exportWriter) typ(t types.Type, pkg *types.Package) { - w.data.uint64(w.p.typOff(t, pkg)) -} - -func (p *iexporter) newWriter() *exportWriter { - return &exportWriter{p: p} -} - -func (w *exportWriter) flush() uint64 { - off := uint64(w.p.data0.Len()) - io.Copy(&w.p.data0, &w.data) - return off -} - -func (p *iexporter) typOff(t types.Type, pkg *types.Package) uint64 { - off, ok := p.typIndex[t] - if !ok { - w := p.newWriter() - w.doTyp(t, pkg) - off = predeclReserved + w.flush() - p.typIndex[t] = off - } - return off -} - -func (w *exportWriter) startType(k itag) { - w.data.uint64(uint64(k)) -} - -func (w *exportWriter) doTyp(t types.Type, pkg *types.Package) { - if trace { - w.p.trace("exporting type %s (%T)", t, t) - w.p.indent++ - defer func() { - w.p.indent-- - w.p.trace("=> %s", t) - }() - } - switch t := t.(type) { - case *types.Named: - if targs := typeparams.NamedTypeArgs(t); targs.Len() > 0 { - w.startType(instanceType) - // TODO(rfindley): investigate if this position is correct, and if it - // matters. - w.pos(t.Obj().Pos()) - w.typeList(targs, pkg) - w.typ(typeparams.NamedTypeOrigin(t), pkg) - return - } - w.startType(definedType) - w.qualifiedIdent(t.Obj()) - - case *typeparams.TypeParam: - w.startType(typeParamType) - w.qualifiedIdent(t.Obj()) - - case *types.Pointer: - w.startType(pointerType) - w.typ(t.Elem(), pkg) - - case *types.Slice: - w.startType(sliceType) - w.typ(t.Elem(), pkg) - - case *types.Array: - w.startType(arrayType) - w.uint64(uint64(t.Len())) - w.typ(t.Elem(), pkg) - - case *types.Chan: - w.startType(chanType) - // 1 RecvOnly; 2 SendOnly; 3 SendRecv - var dir uint64 - switch t.Dir() { - case types.RecvOnly: - dir = 1 - case types.SendOnly: - dir = 2 - case types.SendRecv: - dir = 3 - } - w.uint64(dir) - w.typ(t.Elem(), pkg) - - case *types.Map: - w.startType(mapType) - w.typ(t.Key(), pkg) - w.typ(t.Elem(), pkg) - - case *types.Signature: - w.startType(signatureType) - w.setPkg(pkg, true) - w.signature(t) - - case *types.Struct: - w.startType(structType) - w.setPkg(pkg, true) - - n := t.NumFields() - w.uint64(uint64(n)) - for i := 0; i < n; i++ { - f := t.Field(i) - w.pos(f.Pos()) - w.string(f.Name()) - w.typ(f.Type(), pkg) - w.bool(f.Anonymous()) - w.string(t.Tag(i)) // note (or tag) - } - - case *types.Interface: - w.startType(interfaceType) - w.setPkg(pkg, true) - - n := t.NumEmbeddeds() - w.uint64(uint64(n)) - for i := 0; i < n; i++ { - ft := t.EmbeddedType(i) - tPkg := pkg - if named, _ := ft.(*types.Named); named != nil { - w.pos(named.Obj().Pos()) - } else { - w.pos(token.NoPos) - } - w.typ(ft, tPkg) - } - - n = t.NumExplicitMethods() - w.uint64(uint64(n)) - for i := 0; i < n; i++ { - m := t.ExplicitMethod(i) - w.pos(m.Pos()) - w.string(m.Name()) - sig, _ := m.Type().(*types.Signature) - w.signature(sig) - } - - case *typeparams.Union: - w.startType(unionType) - nt := t.Len() - w.uint64(uint64(nt)) - for i := 0; i < nt; i++ { - term := t.Term(i) - w.bool(term.Tilde()) - w.typ(term.Type(), pkg) - } - - default: - panic(internalErrorf("unexpected type: %v, %v", t, reflect.TypeOf(t))) - } -} - -func (w *exportWriter) setPkg(pkg *types.Package, write bool) { - if write { - w.pkg(pkg) - } - - w.currPkg = pkg -} - -func (w *exportWriter) signature(sig *types.Signature) { - w.paramList(sig.Params()) - w.paramList(sig.Results()) - if sig.Params().Len() > 0 { - w.bool(sig.Variadic()) - } -} - -func (w *exportWriter) typeList(ts *typeparams.TypeList, pkg *types.Package) { - w.uint64(uint64(ts.Len())) - for i := 0; i < ts.Len(); i++ { - w.typ(ts.At(i), pkg) - } -} - -func (w *exportWriter) tparamList(prefix string, list *typeparams.TypeParamList, pkg *types.Package) { - ll := uint64(list.Len()) - w.uint64(ll) - for i := 0; i < list.Len(); i++ { - tparam := list.At(i) - // Set the type parameter exportName before exporting its type. - exportName := tparamExportName(prefix, tparam) - w.p.tparamNames[tparam.Obj()] = exportName - w.typ(list.At(i), pkg) - } -} - -const blankMarker = "$" - -// tparamExportName returns the 'exported' name of a type parameter, which -// differs from its actual object name: it is prefixed with a qualifier, and -// blank type parameter names are disambiguated by their index in the type -// parameter list. -func tparamExportName(prefix string, tparam *typeparams.TypeParam) string { - assert(prefix != "") - name := tparam.Obj().Name() - if name == "_" { - name = blankMarker + strconv.Itoa(tparam.Index()) - } - return prefix + "." + name -} - -// tparamName returns the real name of a type parameter, after stripping its -// qualifying prefix and reverting blank-name encoding. See tparamExportName -// for details. -func tparamName(exportName string) string { - // Remove the "path" from the type param name that makes it unique. - ix := strings.LastIndex(exportName, ".") - if ix < 0 { - errorf("malformed type parameter export name %s: missing prefix", exportName) - } - name := exportName[ix+1:] - if strings.HasPrefix(name, blankMarker) { - return "_" - } - return name -} - -func (w *exportWriter) paramList(tup *types.Tuple) { - n := tup.Len() - w.uint64(uint64(n)) - for i := 0; i < n; i++ { - w.param(tup.At(i)) - } -} - -func (w *exportWriter) param(obj types.Object) { - w.pos(obj.Pos()) - w.localIdent(obj) - w.typ(obj.Type(), obj.Pkg()) -} - -func (w *exportWriter) value(typ types.Type, v constant.Value) { - w.typ(typ, nil) - if w.p.version >= iexportVersionGo1_18 { - w.int64(int64(v.Kind())) - } - - switch b := typ.Underlying().(*types.Basic); b.Info() & types.IsConstType { - case types.IsBoolean: - w.bool(constant.BoolVal(v)) - case types.IsInteger: - var i big.Int - if i64, exact := constant.Int64Val(v); exact { - i.SetInt64(i64) - } else if ui64, exact := constant.Uint64Val(v); exact { - i.SetUint64(ui64) - } else { - i.SetString(v.ExactString(), 10) - } - w.mpint(&i, typ) - case types.IsFloat: - f := constantToFloat(v) - w.mpfloat(f, typ) - case types.IsComplex: - w.mpfloat(constantToFloat(constant.Real(v)), typ) - w.mpfloat(constantToFloat(constant.Imag(v)), typ) - case types.IsString: - w.string(constant.StringVal(v)) - default: - if b.Kind() == types.Invalid { - // package contains type errors - break - } - panic(internalErrorf("unexpected type %v (%v)", typ, typ.Underlying())) - } -} - -// constantToFloat converts a constant.Value with kind constant.Float to a -// big.Float. -func constantToFloat(x constant.Value) *big.Float { - x = constant.ToFloat(x) - // Use the same floating-point precision (512) as cmd/compile - // (see Mpprec in cmd/compile/internal/gc/mpfloat.go). - const mpprec = 512 - var f big.Float - f.SetPrec(mpprec) - if v, exact := constant.Float64Val(x); exact { - // float64 - f.SetFloat64(v) - } else if num, denom := constant.Num(x), constant.Denom(x); num.Kind() == constant.Int { - // TODO(gri): add big.Rat accessor to constant.Value. - n := valueToRat(num) - d := valueToRat(denom) - f.SetRat(n.Quo(n, d)) - } else { - // Value too large to represent as a fraction => inaccessible. - // TODO(gri): add big.Float accessor to constant.Value. - _, ok := f.SetString(x.ExactString()) - assert(ok) - } - return &f -} - -// mpint exports a multi-precision integer. -// -// For unsigned types, small values are written out as a single -// byte. Larger values are written out as a length-prefixed big-endian -// byte string, where the length prefix is encoded as its complement. -// For example, bytes 0, 1, and 2 directly represent the integer -// values 0, 1, and 2; while bytes 255, 254, and 253 indicate a 1-, -// 2-, and 3-byte big-endian string follow. -// -// Encoding for signed types use the same general approach as for -// unsigned types, except small values use zig-zag encoding and the -// bottom bit of length prefix byte for large values is reserved as a -// sign bit. -// -// The exact boundary between small and large encodings varies -// according to the maximum number of bytes needed to encode a value -// of type typ. As a special case, 8-bit types are always encoded as a -// single byte. -// -// TODO(mdempsky): Is this level of complexity really worthwhile? -func (w *exportWriter) mpint(x *big.Int, typ types.Type) { - basic, ok := typ.Underlying().(*types.Basic) - if !ok { - panic(internalErrorf("unexpected type %v (%T)", typ.Underlying(), typ.Underlying())) - } - - signed, maxBytes := intSize(basic) - - negative := x.Sign() < 0 - if !signed && negative { - panic(internalErrorf("negative unsigned integer; type %v, value %v", typ, x)) - } - - b := x.Bytes() - if len(b) > 0 && b[0] == 0 { - panic(internalErrorf("leading zeros")) - } - if uint(len(b)) > maxBytes { - panic(internalErrorf("bad mpint length: %d > %d (type %v, value %v)", len(b), maxBytes, typ, x)) - } - - maxSmall := 256 - maxBytes - if signed { - maxSmall = 256 - 2*maxBytes - } - if maxBytes == 1 { - maxSmall = 256 - } - - // Check if x can use small value encoding. - if len(b) <= 1 { - var ux uint - if len(b) == 1 { - ux = uint(b[0]) - } - if signed { - ux <<= 1 - if negative { - ux-- - } - } - if ux < maxSmall { - w.data.WriteByte(byte(ux)) - return - } - } - - n := 256 - uint(len(b)) - if signed { - n = 256 - 2*uint(len(b)) - if negative { - n |= 1 - } - } - if n < maxSmall || n >= 256 { - panic(internalErrorf("encoding mistake: %d, %v, %v => %d", len(b), signed, negative, n)) - } - - w.data.WriteByte(byte(n)) - w.data.Write(b) -} - -// mpfloat exports a multi-precision floating point number. -// -// The number's value is decomposed into mantissa × 2**exponent, where -// mantissa is an integer. The value is written out as mantissa (as a -// multi-precision integer) and then the exponent, except exponent is -// omitted if mantissa is zero. -func (w *exportWriter) mpfloat(f *big.Float, typ types.Type) { - if f.IsInf() { - panic("infinite constant") - } - - // Break into f = mant × 2**exp, with 0.5 <= mant < 1. - var mant big.Float - exp := int64(f.MantExp(&mant)) - - // Scale so that mant is an integer. - prec := mant.MinPrec() - mant.SetMantExp(&mant, int(prec)) - exp -= int64(prec) - - manti, acc := mant.Int(nil) - if acc != big.Exact { - panic(internalErrorf("mantissa scaling failed for %f (%s)", f, acc)) - } - w.mpint(manti, typ) - if manti.Sign() != 0 { - w.int64(exp) - } -} - -func (w *exportWriter) bool(b bool) bool { - var x uint64 - if b { - x = 1 - } - w.uint64(x) - return b -} - -func (w *exportWriter) int64(x int64) { w.data.int64(x) } -func (w *exportWriter) uint64(x uint64) { w.data.uint64(x) } -func (w *exportWriter) string(s string) { w.uint64(w.p.stringOff(s)) } - -func (w *exportWriter) localIdent(obj types.Object) { - // Anonymous parameters. - if obj == nil { - w.string("") - return - } - - name := obj.Name() - if name == "_" { - w.string("_") - return - } - - w.string(name) -} - -type intWriter struct { - bytes.Buffer -} - -func (w *intWriter) int64(x int64) { - var buf [binary.MaxVarintLen64]byte - n := binary.PutVarint(buf[:], x) - w.Write(buf[:n]) -} - -func (w *intWriter) uint64(x uint64) { - var buf [binary.MaxVarintLen64]byte - n := binary.PutUvarint(buf[:], x) - w.Write(buf[:n]) -} - -func assert(cond bool) { - if !cond { - panic("internal error: assertion failed") - } -} - -// The below is copied from go/src/cmd/compile/internal/gc/syntax.go. - -// objQueue is a FIFO queue of types.Object. The zero value of objQueue is -// a ready-to-use empty queue. -type objQueue struct { - ring []types.Object - head, tail int -} - -// empty returns true if q contains no Nodes. -func (q *objQueue) empty() bool { - return q.head == q.tail -} - -// pushTail appends n to the tail of the queue. -func (q *objQueue) pushTail(obj types.Object) { - if len(q.ring) == 0 { - q.ring = make([]types.Object, 16) - } else if q.head+len(q.ring) == q.tail { - // Grow the ring. - nring := make([]types.Object, len(q.ring)*2) - // Copy the old elements. - part := q.ring[q.head%len(q.ring):] - if q.tail-q.head <= len(part) { - part = part[:q.tail-q.head] - copy(nring, part) - } else { - pos := copy(nring, part) - copy(nring[pos:], q.ring[:q.tail%len(q.ring)]) - } - q.ring, q.head, q.tail = nring, 0, q.tail-q.head - } - - q.ring[q.tail%len(q.ring)] = obj - q.tail++ -} - -// popHead pops a node from the head of the queue. It panics if q is empty. -func (q *objQueue) popHead() types.Object { - if q.empty() { - panic("dequeue empty") - } - obj := q.ring[q.head%len(q.ring)] - q.head++ - return obj -} diff --git a/vendor/golang.org/x/tools/go/internal/gcimporter/iimport.go b/vendor/golang.org/x/tools/go/internal/gcimporter/iimport.go deleted file mode 100644 index 84cfb80..0000000 --- a/vendor/golang.org/x/tools/go/internal/gcimporter/iimport.go +++ /dev/null @@ -1,896 +0,0 @@ -// Copyright 2018 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. - -// Indexed package import. -// See cmd/compile/internal/gc/iexport.go for the export data format. - -// This file is a copy of $GOROOT/src/go/internal/gcimporter/iimport.go. - -package gcimporter - -import ( - "bytes" - "encoding/binary" - "fmt" - "go/constant" - "go/token" - "go/types" - "io" - "sort" - "strings" - - "golang.org/x/tools/internal/typeparams" -) - -type intReader struct { - *bytes.Reader - path string -} - -func (r *intReader) int64() int64 { - i, err := binary.ReadVarint(r.Reader) - if err != nil { - errorf("import %q: read varint error: %v", r.path, err) - } - return i -} - -func (r *intReader) uint64() uint64 { - i, err := binary.ReadUvarint(r.Reader) - if err != nil { - errorf("import %q: read varint error: %v", r.path, err) - } - return i -} - -// Keep this in sync with constants in iexport.go. -const ( - iexportVersionGo1_11 = 0 - iexportVersionPosCol = 1 - iexportVersionGo1_18 = 2 - iexportVersionGenerics = 2 -) - -type ident struct { - pkg string - name string -} - -const predeclReserved = 32 - -type itag uint64 - -const ( - // Types - definedType itag = iota - pointerType - sliceType - arrayType - chanType - mapType - signatureType - structType - interfaceType - typeParamType - instanceType - unionType -) - -// IImportData imports a package from the serialized package data -// and returns 0 and a reference to the package. -// If the export data version is not recognized or the format is otherwise -// compromised, an error is returned. -func IImportData(fset *token.FileSet, imports map[string]*types.Package, data []byte, path string) (int, *types.Package, error) { - pkgs, err := iimportCommon(fset, imports, data, false, path) - if err != nil { - return 0, nil, err - } - return 0, pkgs[0], nil -} - -// IImportBundle imports a set of packages from the serialized package bundle. -func IImportBundle(fset *token.FileSet, imports map[string]*types.Package, data []byte) ([]*types.Package, error) { - return iimportCommon(fset, imports, data, true, "") -} - -func iimportCommon(fset *token.FileSet, imports map[string]*types.Package, data []byte, bundle bool, path string) (pkgs []*types.Package, err error) { - const currentVersion = 1 - version := int64(-1) - if !debug { - defer func() { - if e := recover(); e != nil { - if version > currentVersion { - err = fmt.Errorf("cannot import %q (%v), export data is newer version - update tool", path, e) - } else { - err = fmt.Errorf("cannot import %q (%v), possibly version skew - reinstall package", path, e) - } - } - }() - } - - r := &intReader{bytes.NewReader(data), path} - - if bundle { - bundleVersion := r.uint64() - switch bundleVersion { - case bundleVersion: - default: - errorf("unknown bundle format version %d", bundleVersion) - } - } - - version = int64(r.uint64()) - switch version { - case iexportVersionGo1_18, iexportVersionPosCol, iexportVersionGo1_11: - default: - if version > iexportVersionGo1_18 { - errorf("unstable iexport format version %d, just rebuild compiler and std library", version) - } else { - errorf("unknown iexport format version %d", version) - } - } - - sLen := int64(r.uint64()) - dLen := int64(r.uint64()) - - whence, _ := r.Seek(0, io.SeekCurrent) - stringData := data[whence : whence+sLen] - declData := data[whence+sLen : whence+sLen+dLen] - r.Seek(sLen+dLen, io.SeekCurrent) - - p := iimporter{ - version: int(version), - ipath: path, - - stringData: stringData, - stringCache: make(map[uint64]string), - pkgCache: make(map[uint64]*types.Package), - - declData: declData, - pkgIndex: make(map[*types.Package]map[string]uint64), - typCache: make(map[uint64]types.Type), - // Separate map for typeparams, keyed by their package and unique - // name. - tparamIndex: make(map[ident]types.Type), - - fake: fakeFileSet{ - fset: fset, - files: make(map[string]*fileInfo), - }, - } - defer p.fake.setLines() // set lines for files in fset - - for i, pt := range predeclared() { - p.typCache[uint64(i)] = pt - } - - pkgList := make([]*types.Package, r.uint64()) - for i := range pkgList { - pkgPathOff := r.uint64() - pkgPath := p.stringAt(pkgPathOff) - pkgName := p.stringAt(r.uint64()) - _ = r.uint64() // package height; unused by go/types - - if pkgPath == "" { - pkgPath = path - } - pkg := imports[pkgPath] - if pkg == nil { - pkg = types.NewPackage(pkgPath, pkgName) - imports[pkgPath] = pkg - } else if pkg.Name() != pkgName { - errorf("conflicting names %s and %s for package %q", pkg.Name(), pkgName, path) - } - - p.pkgCache[pkgPathOff] = pkg - - nameIndex := make(map[string]uint64) - for nSyms := r.uint64(); nSyms > 0; nSyms-- { - name := p.stringAt(r.uint64()) - nameIndex[name] = r.uint64() - } - - p.pkgIndex[pkg] = nameIndex - pkgList[i] = pkg - } - - if bundle { - pkgs = make([]*types.Package, r.uint64()) - for i := range pkgs { - pkg := p.pkgAt(r.uint64()) - imps := make([]*types.Package, r.uint64()) - for j := range imps { - imps[j] = p.pkgAt(r.uint64()) - } - pkg.SetImports(imps) - pkgs[i] = pkg - } - } else { - if len(pkgList) == 0 { - errorf("no packages found for %s", path) - panic("unreachable") - } - pkgs = pkgList[:1] - - // record all referenced packages as imports - list := append(([]*types.Package)(nil), pkgList[1:]...) - sort.Sort(byPath(list)) - pkgs[0].SetImports(list) - } - - for _, pkg := range pkgs { - if pkg.Complete() { - continue - } - - names := make([]string, 0, len(p.pkgIndex[pkg])) - for name := range p.pkgIndex[pkg] { - names = append(names, name) - } - sort.Strings(names) - for _, name := range names { - p.doDecl(pkg, name) - } - - // package was imported completely and without errors - pkg.MarkComplete() - } - - // SetConstraint can't be called if the constraint type is not yet complete. - // When type params are created in the 'P' case of (*importReader).obj(), - // the associated constraint type may not be complete due to recursion. - // Therefore, we defer calling SetConstraint there, and call it here instead - // after all types are complete. - for _, d := range p.later { - typeparams.SetTypeParamConstraint(d.t, d.constraint) - } - - for _, typ := range p.interfaceList { - typ.Complete() - } - - return pkgs, nil -} - -type setConstraintArgs struct { - t *typeparams.TypeParam - constraint types.Type -} - -type iimporter struct { - version int - ipath string - - stringData []byte - stringCache map[uint64]string - pkgCache map[uint64]*types.Package - - declData []byte - pkgIndex map[*types.Package]map[string]uint64 - typCache map[uint64]types.Type - tparamIndex map[ident]types.Type - - fake fakeFileSet - interfaceList []*types.Interface - - // Arguments for calls to SetConstraint that are deferred due to recursive types - later []setConstraintArgs - - indent int // for tracing support -} - -func (p *iimporter) trace(format string, args ...interface{}) { - if !trace { - // Call sites should also be guarded, but having this check here allows - // easily enabling/disabling debug trace statements. - return - } - fmt.Printf(strings.Repeat("..", p.indent)+format+"\n", args...) -} - -func (p *iimporter) doDecl(pkg *types.Package, name string) { - if debug { - p.trace("import decl %s", name) - p.indent++ - defer func() { - p.indent-- - p.trace("=> %s", name) - }() - } - // See if we've already imported this declaration. - if obj := pkg.Scope().Lookup(name); obj != nil { - return - } - - off, ok := p.pkgIndex[pkg][name] - if !ok { - errorf("%v.%v not in index", pkg, name) - } - - r := &importReader{p: p, currPkg: pkg} - r.declReader.Reset(p.declData[off:]) - - r.obj(name) -} - -func (p *iimporter) stringAt(off uint64) string { - if s, ok := p.stringCache[off]; ok { - return s - } - - slen, n := binary.Uvarint(p.stringData[off:]) - if n <= 0 { - errorf("varint failed") - } - spos := off + uint64(n) - s := string(p.stringData[spos : spos+slen]) - p.stringCache[off] = s - return s -} - -func (p *iimporter) pkgAt(off uint64) *types.Package { - if pkg, ok := p.pkgCache[off]; ok { - return pkg - } - path := p.stringAt(off) - errorf("missing package %q in %q", path, p.ipath) - return nil -} - -func (p *iimporter) typAt(off uint64, base *types.Named) types.Type { - if t, ok := p.typCache[off]; ok && canReuse(base, t) { - return t - } - - if off < predeclReserved { - errorf("predeclared type missing from cache: %v", off) - } - - r := &importReader{p: p} - r.declReader.Reset(p.declData[off-predeclReserved:]) - t := r.doType(base) - - if canReuse(base, t) { - p.typCache[off] = t - } - return t -} - -// canReuse reports whether the type rhs on the RHS of the declaration for def -// may be re-used. -// -// Specifically, if def is non-nil and rhs is an interface type with methods, it -// may not be re-used because we have a convention of setting the receiver type -// for interface methods to def. -func canReuse(def *types.Named, rhs types.Type) bool { - if def == nil { - return true - } - iface, _ := rhs.(*types.Interface) - if iface == nil { - return true - } - // Don't use iface.Empty() here as iface may not be complete. - return iface.NumEmbeddeds() == 0 && iface.NumExplicitMethods() == 0 -} - -type importReader struct { - p *iimporter - declReader bytes.Reader - currPkg *types.Package - prevFile string - prevLine int64 - prevColumn int64 -} - -func (r *importReader) obj(name string) { - tag := r.byte() - pos := r.pos() - - switch tag { - case 'A': - typ := r.typ() - - r.declare(types.NewTypeName(pos, r.currPkg, name, typ)) - - case 'C': - typ, val := r.value() - - r.declare(types.NewConst(pos, r.currPkg, name, typ, val)) - - case 'F', 'G': - var tparams []*typeparams.TypeParam - if tag == 'G' { - tparams = r.tparamList() - } - sig := r.signature(nil, nil, tparams) - r.declare(types.NewFunc(pos, r.currPkg, name, sig)) - - case 'T', 'U': - // Types can be recursive. We need to setup a stub - // declaration before recursing. - obj := types.NewTypeName(pos, r.currPkg, name, nil) - named := types.NewNamed(obj, nil, nil) - // Declare obj before calling r.tparamList, so the new type name is recognized - // if used in the constraint of one of its own typeparams (see #48280). - r.declare(obj) - if tag == 'U' { - tparams := r.tparamList() - typeparams.SetForNamed(named, tparams) - } - - underlying := r.p.typAt(r.uint64(), named).Underlying() - named.SetUnderlying(underlying) - - if !isInterface(underlying) { - for n := r.uint64(); n > 0; n-- { - mpos := r.pos() - mname := r.ident() - recv := r.param() - - // If the receiver has any targs, set those as the - // rparams of the method (since those are the - // typeparams being used in the method sig/body). - base := baseType(recv.Type()) - assert(base != nil) - targs := typeparams.NamedTypeArgs(base) - var rparams []*typeparams.TypeParam - if targs.Len() > 0 { - rparams = make([]*typeparams.TypeParam, targs.Len()) - for i := range rparams { - rparams[i] = targs.At(i).(*typeparams.TypeParam) - } - } - msig := r.signature(recv, rparams, nil) - - named.AddMethod(types.NewFunc(mpos, r.currPkg, mname, msig)) - } - } - - case 'P': - // We need to "declare" a typeparam in order to have a name that - // can be referenced recursively (if needed) in the type param's - // bound. - if r.p.version < iexportVersionGenerics { - errorf("unexpected type param type") - } - name0 := tparamName(name) - tn := types.NewTypeName(pos, r.currPkg, name0, nil) - t := typeparams.NewTypeParam(tn, nil) - - // To handle recursive references to the typeparam within its - // bound, save the partial type in tparamIndex before reading the bounds. - id := ident{r.currPkg.Name(), name} - r.p.tparamIndex[id] = t - var implicit bool - if r.p.version >= iexportVersionGo1_18 { - implicit = r.bool() - } - constraint := r.typ() - if implicit { - iface, _ := constraint.(*types.Interface) - if iface == nil { - errorf("non-interface constraint marked implicit") - } - typeparams.MarkImplicit(iface) - } - // The constraint type may not be complete, if we - // are in the middle of a type recursion involving type - // constraints. So, we defer SetConstraint until we have - // completely set up all types in ImportData. - r.p.later = append(r.p.later, setConstraintArgs{t: t, constraint: constraint}) - - case 'V': - typ := r.typ() - - r.declare(types.NewVar(pos, r.currPkg, name, typ)) - - default: - errorf("unexpected tag: %v", tag) - } -} - -func (r *importReader) declare(obj types.Object) { - obj.Pkg().Scope().Insert(obj) -} - -func (r *importReader) value() (typ types.Type, val constant.Value) { - typ = r.typ() - if r.p.version >= iexportVersionGo1_18 { - // TODO: add support for using the kind. - _ = constant.Kind(r.int64()) - } - - switch b := typ.Underlying().(*types.Basic); b.Info() & types.IsConstType { - case types.IsBoolean: - val = constant.MakeBool(r.bool()) - - case types.IsString: - val = constant.MakeString(r.string()) - - case types.IsInteger: - val = r.mpint(b) - - case types.IsFloat: - val = r.mpfloat(b) - - case types.IsComplex: - re := r.mpfloat(b) - im := r.mpfloat(b) - val = constant.BinaryOp(re, token.ADD, constant.MakeImag(im)) - - default: - if b.Kind() == types.Invalid { - val = constant.MakeUnknown() - return - } - errorf("unexpected type %v", typ) // panics - panic("unreachable") - } - - return -} - -func intSize(b *types.Basic) (signed bool, maxBytes uint) { - if (b.Info() & types.IsUntyped) != 0 { - return true, 64 - } - - switch b.Kind() { - case types.Float32, types.Complex64: - return true, 3 - case types.Float64, types.Complex128: - return true, 7 - } - - signed = (b.Info() & types.IsUnsigned) == 0 - switch b.Kind() { - case types.Int8, types.Uint8: - maxBytes = 1 - case types.Int16, types.Uint16: - maxBytes = 2 - case types.Int32, types.Uint32: - maxBytes = 4 - default: - maxBytes = 8 - } - - return -} - -func (r *importReader) mpint(b *types.Basic) constant.Value { - signed, maxBytes := intSize(b) - - maxSmall := 256 - maxBytes - if signed { - maxSmall = 256 - 2*maxBytes - } - if maxBytes == 1 { - maxSmall = 256 - } - - n, _ := r.declReader.ReadByte() - if uint(n) < maxSmall { - v := int64(n) - if signed { - v >>= 1 - if n&1 != 0 { - v = ^v - } - } - return constant.MakeInt64(v) - } - - v := -n - if signed { - v = -(n &^ 1) >> 1 - } - if v < 1 || uint(v) > maxBytes { - errorf("weird decoding: %v, %v => %v", n, signed, v) - } - - buf := make([]byte, v) - io.ReadFull(&r.declReader, buf) - - // convert to little endian - // TODO(gri) go/constant should have a more direct conversion function - // (e.g., once it supports a big.Float based implementation) - for i, j := 0, len(buf)-1; i < j; i, j = i+1, j-1 { - buf[i], buf[j] = buf[j], buf[i] - } - - x := constant.MakeFromBytes(buf) - if signed && n&1 != 0 { - x = constant.UnaryOp(token.SUB, x, 0) - } - return x -} - -func (r *importReader) mpfloat(b *types.Basic) constant.Value { - x := r.mpint(b) - if constant.Sign(x) == 0 { - return x - } - - exp := r.int64() - switch { - case exp > 0: - x = constant.Shift(x, token.SHL, uint(exp)) - // Ensure that the imported Kind is Float, else this constant may run into - // bitsize limits on overlarge integers. Eventually we can instead adopt - // the approach of CL 288632, but that CL relies on go/constant APIs that - // were introduced in go1.13. - // - // TODO(rFindley): sync the logic here with tip Go once we no longer - // support go1.12. - x = constant.ToFloat(x) - case exp < 0: - d := constant.Shift(constant.MakeInt64(1), token.SHL, uint(-exp)) - x = constant.BinaryOp(x, token.QUO, d) - } - return x -} - -func (r *importReader) ident() string { - return r.string() -} - -func (r *importReader) qualifiedIdent() (*types.Package, string) { - name := r.string() - pkg := r.pkg() - return pkg, name -} - -func (r *importReader) pos() token.Pos { - if r.p.version >= iexportVersionPosCol { - r.posv1() - } else { - r.posv0() - } - - if r.prevFile == "" && r.prevLine == 0 && r.prevColumn == 0 { - return token.NoPos - } - return r.p.fake.pos(r.prevFile, int(r.prevLine), int(r.prevColumn)) -} - -func (r *importReader) posv0() { - delta := r.int64() - if delta != deltaNewFile { - r.prevLine += delta - } else if l := r.int64(); l == -1 { - r.prevLine += deltaNewFile - } else { - r.prevFile = r.string() - r.prevLine = l - } -} - -func (r *importReader) posv1() { - delta := r.int64() - r.prevColumn += delta >> 1 - if delta&1 != 0 { - delta = r.int64() - r.prevLine += delta >> 1 - if delta&1 != 0 { - r.prevFile = r.string() - } - } -} - -func (r *importReader) typ() types.Type { - return r.p.typAt(r.uint64(), nil) -} - -func isInterface(t types.Type) bool { - _, ok := t.(*types.Interface) - return ok -} - -func (r *importReader) pkg() *types.Package { return r.p.pkgAt(r.uint64()) } -func (r *importReader) string() string { return r.p.stringAt(r.uint64()) } - -func (r *importReader) doType(base *types.Named) (res types.Type) { - k := r.kind() - if debug { - r.p.trace("importing type %d (base: %s)", k, base) - r.p.indent++ - defer func() { - r.p.indent-- - r.p.trace("=> %s", res) - }() - } - switch k { - default: - errorf("unexpected kind tag in %q: %v", r.p.ipath, k) - return nil - - case definedType: - pkg, name := r.qualifiedIdent() - r.p.doDecl(pkg, name) - return pkg.Scope().Lookup(name).(*types.TypeName).Type() - case pointerType: - return types.NewPointer(r.typ()) - case sliceType: - return types.NewSlice(r.typ()) - case arrayType: - n := r.uint64() - return types.NewArray(r.typ(), int64(n)) - case chanType: - dir := chanDir(int(r.uint64())) - return types.NewChan(dir, r.typ()) - case mapType: - return types.NewMap(r.typ(), r.typ()) - case signatureType: - r.currPkg = r.pkg() - return r.signature(nil, nil, nil) - - case structType: - r.currPkg = r.pkg() - - fields := make([]*types.Var, r.uint64()) - tags := make([]string, len(fields)) - for i := range fields { - fpos := r.pos() - fname := r.ident() - ftyp := r.typ() - emb := r.bool() - tag := r.string() - - fields[i] = types.NewField(fpos, r.currPkg, fname, ftyp, emb) - tags[i] = tag - } - return types.NewStruct(fields, tags) - - case interfaceType: - r.currPkg = r.pkg() - - embeddeds := make([]types.Type, r.uint64()) - for i := range embeddeds { - _ = r.pos() - embeddeds[i] = r.typ() - } - - methods := make([]*types.Func, r.uint64()) - for i := range methods { - mpos := r.pos() - mname := r.ident() - - // TODO(mdempsky): Matches bimport.go, but I - // don't agree with this. - var recv *types.Var - if base != nil { - recv = types.NewVar(token.NoPos, r.currPkg, "", base) - } - - msig := r.signature(recv, nil, nil) - methods[i] = types.NewFunc(mpos, r.currPkg, mname, msig) - } - - typ := newInterface(methods, embeddeds) - r.p.interfaceList = append(r.p.interfaceList, typ) - return typ - - case typeParamType: - if r.p.version < iexportVersionGenerics { - errorf("unexpected type param type") - } - pkg, name := r.qualifiedIdent() - id := ident{pkg.Name(), name} - if t, ok := r.p.tparamIndex[id]; ok { - // We're already in the process of importing this typeparam. - return t - } - // Otherwise, import the definition of the typeparam now. - r.p.doDecl(pkg, name) - return r.p.tparamIndex[id] - - case instanceType: - if r.p.version < iexportVersionGenerics { - errorf("unexpected instantiation type") - } - // pos does not matter for instances: they are positioned on the original - // type. - _ = r.pos() - len := r.uint64() - targs := make([]types.Type, len) - for i := range targs { - targs[i] = r.typ() - } - baseType := r.typ() - // The imported instantiated type doesn't include any methods, so - // we must always use the methods of the base (orig) type. - // TODO provide a non-nil *Environment - t, _ := typeparams.Instantiate(nil, baseType, targs, false) - return t - - case unionType: - if r.p.version < iexportVersionGenerics { - errorf("unexpected instantiation type") - } - terms := make([]*typeparams.Term, r.uint64()) - for i := range terms { - terms[i] = typeparams.NewTerm(r.bool(), r.typ()) - } - return typeparams.NewUnion(terms) - } -} - -func (r *importReader) kind() itag { - return itag(r.uint64()) -} - -func (r *importReader) signature(recv *types.Var, rparams []*typeparams.TypeParam, tparams []*typeparams.TypeParam) *types.Signature { - params := r.paramList() - results := r.paramList() - variadic := params.Len() > 0 && r.bool() - return typeparams.NewSignatureType(recv, rparams, tparams, params, results, variadic) -} - -func (r *importReader) tparamList() []*typeparams.TypeParam { - n := r.uint64() - if n == 0 { - return nil - } - xs := make([]*typeparams.TypeParam, n) - for i := range xs { - // Note: the standard library importer is tolerant of nil types here, - // though would panic in SetTypeParams. - xs[i] = r.typ().(*typeparams.TypeParam) - } - return xs -} - -func (r *importReader) paramList() *types.Tuple { - xs := make([]*types.Var, r.uint64()) - for i := range xs { - xs[i] = r.param() - } - return types.NewTuple(xs...) -} - -func (r *importReader) param() *types.Var { - pos := r.pos() - name := r.ident() - typ := r.typ() - return types.NewParam(pos, r.currPkg, name, typ) -} - -func (r *importReader) bool() bool { - return r.uint64() != 0 -} - -func (r *importReader) int64() int64 { - n, err := binary.ReadVarint(&r.declReader) - if err != nil { - errorf("readVarint: %v", err) - } - return n -} - -func (r *importReader) uint64() uint64 { - n, err := binary.ReadUvarint(&r.declReader) - if err != nil { - errorf("readUvarint: %v", err) - } - return n -} - -func (r *importReader) byte() byte { - x, err := r.declReader.ReadByte() - if err != nil { - errorf("declReader.ReadByte: %v", err) - } - return x -} - -func baseType(typ types.Type) *types.Named { - // pointer receivers are never types.Named types - if p, _ := typ.(*types.Pointer); p != nil { - typ = p.Elem() - } - // receiver base types are always (possibly generic) types.Named types - n, _ := typ.(*types.Named) - return n -} diff --git a/vendor/golang.org/x/tools/go/internal/gcimporter/newInterface10.go b/vendor/golang.org/x/tools/go/internal/gcimporter/newInterface10.go deleted file mode 100644 index 8b163e3..0000000 --- a/vendor/golang.org/x/tools/go/internal/gcimporter/newInterface10.go +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2018 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:build !go1.11 -// +build !go1.11 - -package gcimporter - -import "go/types" - -func newInterface(methods []*types.Func, embeddeds []types.Type) *types.Interface { - named := make([]*types.Named, len(embeddeds)) - for i, e := range embeddeds { - var ok bool - named[i], ok = e.(*types.Named) - if !ok { - panic("embedding of non-defined interfaces in interfaces is not supported before Go 1.11") - } - } - return types.NewInterface(methods, named) -} diff --git a/vendor/golang.org/x/tools/go/internal/gcimporter/newInterface11.go b/vendor/golang.org/x/tools/go/internal/gcimporter/newInterface11.go deleted file mode 100644 index 49984f4..0000000 --- a/vendor/golang.org/x/tools/go/internal/gcimporter/newInterface11.go +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2018 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:build go1.11 -// +build go1.11 - -package gcimporter - -import "go/types" - -func newInterface(methods []*types.Func, embeddeds []types.Type) *types.Interface { - return types.NewInterfaceType(methods, embeddeds) -} diff --git a/vendor/golang.org/x/tools/go/internal/gcimporter/support_go117.go b/vendor/golang.org/x/tools/go/internal/gcimporter/support_go117.go deleted file mode 100644 index d892273..0000000 --- a/vendor/golang.org/x/tools/go/internal/gcimporter/support_go117.go +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2021 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:build !go1.18 -// +build !go1.18 - -package gcimporter - -import "go/types" - -const iexportVersion = iexportVersionGo1_11 - -func additionalPredeclared() []types.Type { - return nil -} diff --git a/vendor/golang.org/x/tools/go/internal/gcimporter/support_go118.go b/vendor/golang.org/x/tools/go/internal/gcimporter/support_go118.go deleted file mode 100644 index a993843..0000000 --- a/vendor/golang.org/x/tools/go/internal/gcimporter/support_go118.go +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2021 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:build go1.18 -// +build go1.18 - -package gcimporter - -import "go/types" - -const iexportVersion = iexportVersionGenerics - -// additionalPredeclared returns additional predeclared types in go.1.18. -func additionalPredeclared() []types.Type { - return []types.Type{ - // comparable - types.Universe.Lookup("comparable").Type(), - - // any - types.Universe.Lookup("any").Type(), - } -} diff --git a/vendor/golang.org/x/tools/go/internal/packagesdriver/sizes.go b/vendor/golang.org/x/tools/go/internal/packagesdriver/sizes.go deleted file mode 100644 index 18a002f..0000000 --- a/vendor/golang.org/x/tools/go/internal/packagesdriver/sizes.go +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2018 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 packagesdriver fetches type sizes for go/packages and go/analysis. -package packagesdriver - -import ( - "context" - "fmt" - "go/types" - "strings" - - "golang.org/x/tools/internal/gocommand" -) - -var debug = false - -func GetSizesGolist(ctx context.Context, inv gocommand.Invocation, gocmdRunner *gocommand.Runner) (types.Sizes, error) { - inv.Verb = "list" - inv.Args = []string{"-f", "{{context.GOARCH}} {{context.Compiler}}", "--", "unsafe"} - stdout, stderr, friendlyErr, rawErr := gocmdRunner.RunRaw(ctx, inv) - var goarch, compiler string - if rawErr != nil { - if rawErrMsg := rawErr.Error(); strings.Contains(rawErrMsg, "cannot find main module") || strings.Contains(rawErrMsg, "go.mod file not found") { - // User's running outside of a module. All bets are off. Get GOARCH and guess compiler is gc. - // TODO(matloob): Is this a problem in practice? - inv.Verb = "env" - inv.Args = []string{"GOARCH"} - envout, enverr := gocmdRunner.Run(ctx, inv) - if enverr != nil { - return nil, enverr - } - goarch = strings.TrimSpace(envout.String()) - compiler = "gc" - } else { - return nil, friendlyErr - } - } else { - fields := strings.Fields(stdout.String()) - if len(fields) < 2 { - return nil, fmt.Errorf("could not parse GOARCH and Go compiler in format \" \":\nstdout: <<%s>>\nstderr: <<%s>>", - stdout.String(), stderr.String()) - } - goarch = fields[0] - compiler = fields[1] - } - return types.SizesFor(compiler, goarch), nil -} diff --git a/vendor/golang.org/x/tools/go/packages/doc.go b/vendor/golang.org/x/tools/go/packages/doc.go deleted file mode 100644 index 4bfe28a..0000000 --- a/vendor/golang.org/x/tools/go/packages/doc.go +++ /dev/null @@ -1,221 +0,0 @@ -// Copyright 2018 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 packages loads Go packages for inspection and analysis. - -The Load function takes as input a list of patterns and return a list of Package -structs describing individual packages matched by those patterns. -The LoadMode controls the amount of detail in the loaded packages. - -Load passes most patterns directly to the underlying build tool, -but all patterns with the prefix "query=", where query is a -non-empty string of letters from [a-z], are reserved and may be -interpreted as query operators. - -Two query operators are currently supported: "file" and "pattern". - -The query "file=path/to/file.go" matches the package or packages enclosing -the Go source file path/to/file.go. For example "file=~/go/src/fmt/print.go" -might return the packages "fmt" and "fmt [fmt.test]". - -The query "pattern=string" causes "string" to be passed directly to -the underlying build tool. In most cases this is unnecessary, -but an application can use Load("pattern=" + x) as an escaping mechanism -to ensure that x is not interpreted as a query operator if it contains '='. - -All other query operators are reserved for future use and currently -cause Load to report an error. - -The Package struct provides basic information about the package, including - - - ID, a unique identifier for the package in the returned set; - - GoFiles, the names of the package's Go source files; - - Imports, a map from source import strings to the Packages they name; - - Types, the type information for the package's exported symbols; - - Syntax, the parsed syntax trees for the package's source code; and - - TypeInfo, the result of a complete type-check of the package syntax trees. - -(See the documentation for type Package for the complete list of fields -and more detailed descriptions.) - -For example, - - Load(nil, "bytes", "unicode...") - -returns four Package structs describing the standard library packages -bytes, unicode, unicode/utf16, and unicode/utf8. Note that one pattern -can match multiple packages and that a package might be matched by -multiple patterns: in general it is not possible to determine which -packages correspond to which patterns. - -Note that the list returned by Load contains only the packages matched -by the patterns. Their dependencies can be found by walking the import -graph using the Imports fields. - -The Load function can be configured by passing a pointer to a Config as -the first argument. A nil Config is equivalent to the zero Config, which -causes Load to run in LoadFiles mode, collecting minimal information. -See the documentation for type Config for details. - -As noted earlier, the Config.Mode controls the amount of detail -reported about the loaded packages. See the documentation for type LoadMode -for details. - -Most tools should pass their command-line arguments (after any flags) -uninterpreted to the loader, so that the loader can interpret them -according to the conventions of the underlying build system. -See the Example function for typical usage. - -*/ -package packages // import "golang.org/x/tools/go/packages" - -/* - -Motivation and design considerations - -The new package's design solves problems addressed by two existing -packages: go/build, which locates and describes packages, and -golang.org/x/tools/go/loader, which loads, parses and type-checks them. -The go/build.Package structure encodes too much of the 'go build' way -of organizing projects, leaving us in need of a data type that describes a -package of Go source code independent of the underlying build system. -We wanted something that works equally well with go build and vgo, and -also other build systems such as Bazel and Blaze, making it possible to -construct analysis tools that work in all these environments. -Tools such as errcheck and staticcheck were essentially unavailable to -the Go community at Google, and some of Google's internal tools for Go -are unavailable externally. -This new package provides a uniform way to obtain package metadata by -querying each of these build systems, optionally supporting their -preferred command-line notations for packages, so that tools integrate -neatly with users' build environments. The Metadata query function -executes an external query tool appropriate to the current workspace. - -Loading packages always returns the complete import graph "all the way down", -even if all you want is information about a single package, because the query -mechanisms of all the build systems we currently support ({go,vgo} list, and -blaze/bazel aspect-based query) cannot provide detailed information -about one package without visiting all its dependencies too, so there is -no additional asymptotic cost to providing transitive information. -(This property might not be true of a hypothetical 5th build system.) - -In calls to TypeCheck, all initial packages, and any package that -transitively depends on one of them, must be loaded from source. -Consider A->B->C->D->E: if A,C are initial, A,B,C must be loaded from -source; D may be loaded from export data, and E may not be loaded at all -(though it's possible that D's export data mentions it, so a -types.Package may be created for it and exposed.) - -The old loader had a feature to suppress type-checking of function -bodies on a per-package basis, primarily intended to reduce the work of -obtaining type information for imported packages. Now that imports are -satisfied by export data, the optimization no longer seems necessary. - -Despite some early attempts, the old loader did not exploit export data, -instead always using the equivalent of WholeProgram mode. This was due -to the complexity of mixing source and export data packages (now -resolved by the upward traversal mentioned above), and because export data -files were nearly always missing or stale. Now that 'go build' supports -caching, all the underlying build systems can guarantee to produce -export data in a reasonable (amortized) time. - -Test "main" packages synthesized by the build system are now reported as -first-class packages, avoiding the need for clients (such as go/ssa) to -reinvent this generation logic. - -One way in which go/packages is simpler than the old loader is in its -treatment of in-package tests. In-package tests are packages that -consist of all the files of the library under test, plus the test files. -The old loader constructed in-package tests by a two-phase process of -mutation called "augmentation": first it would construct and type check -all the ordinary library packages and type-check the packages that -depend on them; then it would add more (test) files to the package and -type-check again. This two-phase approach had four major problems: -1) in processing the tests, the loader modified the library package, - leaving no way for a client application to see both the test - package and the library package; one would mutate into the other. -2) because test files can declare additional methods on types defined in - the library portion of the package, the dispatch of method calls in - the library portion was affected by the presence of the test files. - This should have been a clue that the packages were logically - different. -3) this model of "augmentation" assumed at most one in-package test - per library package, which is true of projects using 'go build', - but not other build systems. -4) because of the two-phase nature of test processing, all packages that - import the library package had to be processed before augmentation, - forcing a "one-shot" API and preventing the client from calling Load - in several times in sequence as is now possible in WholeProgram mode. - (TypeCheck mode has a similar one-shot restriction for a different reason.) - -Early drafts of this package supported "multi-shot" operation. -Although it allowed clients to make a sequence of calls (or concurrent -calls) to Load, building up the graph of Packages incrementally, -it was of marginal value: it complicated the API -(since it allowed some options to vary across calls but not others), -it complicated the implementation, -it cannot be made to work in Types mode, as explained above, -and it was less efficient than making one combined call (when this is possible). -Among the clients we have inspected, none made multiple calls to load -but could not be easily and satisfactorily modified to make only a single call. -However, applications changes may be required. -For example, the ssadump command loads the user-specified packages -and in addition the runtime package. It is tempting to simply append -"runtime" to the user-provided list, but that does not work if the user -specified an ad-hoc package such as [a.go b.go]. -Instead, ssadump no longer requests the runtime package, -but seeks it among the dependencies of the user-specified packages, -and emits an error if it is not found. - -Overlays: The Overlay field in the Config allows providing alternate contents -for Go source files, by providing a mapping from file path to contents. -go/packages will pull in new imports added in overlay files when go/packages -is run in LoadImports mode or greater. -Overlay support for the go list driver isn't complete yet: if the file doesn't -exist on disk, it will only be recognized in an overlay if it is a non-test file -and the package would be reported even without the overlay. - -Questions & Tasks - -- Add GOARCH/GOOS? - They are not portable concepts, but could be made portable. - Our goal has been to allow users to express themselves using the conventions - of the underlying build system: if the build system honors GOARCH - during a build and during a metadata query, then so should - applications built atop that query mechanism. - Conversely, if the target architecture of the build is determined by - command-line flags, the application can pass the relevant - flags through to the build system using a command such as: - myapp -query_flag="--cpu=amd64" -query_flag="--os=darwin" - However, this approach is low-level, unwieldy, and non-portable. - GOOS and GOARCH seem important enough to warrant a dedicated option. - -- How should we handle partial failures such as a mixture of good and - malformed patterns, existing and non-existent packages, successful and - failed builds, import failures, import cycles, and so on, in a call to - Load? - -- Support bazel, blaze, and go1.10 list, not just go1.11 list. - -- Handle (and test) various partial success cases, e.g. - a mixture of good packages and: - invalid patterns - nonexistent packages - empty packages - packages with malformed package or import declarations - unreadable files - import cycles - other parse errors - type errors - Make sure we record errors at the correct place in the graph. - -- Missing packages among initial arguments are not reported. - Return bogus packages for them, like golist does. - -- "undeclared name" errors (for example) are reported out of source file - order. I suspect this is due to the breadth-first resolution now used - by go/types. Is that a bug? Discuss with gri. - -*/ diff --git a/vendor/golang.org/x/tools/go/packages/external.go b/vendor/golang.org/x/tools/go/packages/external.go deleted file mode 100644 index 7242a0a..0000000 --- a/vendor/golang.org/x/tools/go/packages/external.go +++ /dev/null @@ -1,101 +0,0 @@ -// Copyright 2018 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. - -// This file enables an external tool to intercept package requests. -// If the tool is present then its results are used in preference to -// the go list command. - -package packages - -import ( - "bytes" - "encoding/json" - "fmt" - exec "golang.org/x/sys/execabs" - "os" - "strings" -) - -// The Driver Protocol -// -// The driver, given the inputs to a call to Load, returns metadata about the packages specified. -// This allows for different build systems to support go/packages by telling go/packages how the -// packages' source is organized. -// The driver is a binary, either specified by the GOPACKAGESDRIVER environment variable or in -// the path as gopackagesdriver. It's given the inputs to load in its argv. See the package -// documentation in doc.go for the full description of the patterns that need to be supported. -// A driver receives as a JSON-serialized driverRequest struct in standard input and will -// produce a JSON-serialized driverResponse (see definition in packages.go) in its standard output. - -// driverRequest is used to provide the portion of Load's Config that is needed by a driver. -type driverRequest struct { - Mode LoadMode `json:"mode"` - // Env specifies the environment the underlying build system should be run in. - Env []string `json:"env"` - // BuildFlags are flags that should be passed to the underlying build system. - BuildFlags []string `json:"build_flags"` - // Tests specifies whether the patterns should also return test packages. - Tests bool `json:"tests"` - // Overlay maps file paths (relative to the driver's working directory) to the byte contents - // of overlay files. - Overlay map[string][]byte `json:"overlay"` -} - -// findExternalDriver returns the file path of a tool that supplies -// the build system package structure, or "" if not found." -// If GOPACKAGESDRIVER is set in the environment findExternalTool returns its -// value, otherwise it searches for a binary named gopackagesdriver on the PATH. -func findExternalDriver(cfg *Config) driver { - const toolPrefix = "GOPACKAGESDRIVER=" - tool := "" - for _, env := range cfg.Env { - if val := strings.TrimPrefix(env, toolPrefix); val != env { - tool = val - } - } - if tool != "" && tool == "off" { - return nil - } - if tool == "" { - var err error - tool, err = exec.LookPath("gopackagesdriver") - if err != nil { - return nil - } - } - return func(cfg *Config, words ...string) (*driverResponse, error) { - req, err := json.Marshal(driverRequest{ - Mode: cfg.Mode, - Env: cfg.Env, - BuildFlags: cfg.BuildFlags, - Tests: cfg.Tests, - Overlay: cfg.Overlay, - }) - if err != nil { - return nil, fmt.Errorf("failed to encode message to driver tool: %v", err) - } - - buf := new(bytes.Buffer) - stderr := new(bytes.Buffer) - cmd := exec.CommandContext(cfg.Context, tool, words...) - cmd.Dir = cfg.Dir - cmd.Env = cfg.Env - cmd.Stdin = bytes.NewReader(req) - cmd.Stdout = buf - cmd.Stderr = stderr - - if err := cmd.Run(); err != nil { - return nil, fmt.Errorf("%v: %v: %s", tool, err, cmd.Stderr) - } - if len(stderr.Bytes()) != 0 && os.Getenv("GOPACKAGESPRINTDRIVERERRORS") != "" { - fmt.Fprintf(os.Stderr, "%s stderr: <<%s>>\n", cmdDebugStr(cmd), stderr) - } - - var response driverResponse - if err := json.Unmarshal(buf.Bytes(), &response); err != nil { - return nil, err - } - return &response, nil - } -} diff --git a/vendor/golang.org/x/tools/go/packages/golist.go b/vendor/golang.org/x/tools/go/packages/golist.go deleted file mode 100644 index 0e1e7f1..0000000 --- a/vendor/golang.org/x/tools/go/packages/golist.go +++ /dev/null @@ -1,1099 +0,0 @@ -// Copyright 2018 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 packages - -import ( - "bytes" - "context" - "encoding/json" - "fmt" - "go/types" - "io/ioutil" - "log" - "os" - "path" - "path/filepath" - "reflect" - "sort" - "strconv" - "strings" - "sync" - "unicode" - - exec "golang.org/x/sys/execabs" - "golang.org/x/tools/go/internal/packagesdriver" - "golang.org/x/tools/internal/gocommand" - "golang.org/x/tools/internal/packagesinternal" - "golang.org/x/xerrors" -) - -// debug controls verbose logging. -var debug, _ = strconv.ParseBool(os.Getenv("GOPACKAGESDEBUG")) - -// A goTooOldError reports that the go command -// found by exec.LookPath is too old to use the new go list behavior. -type goTooOldError struct { - error -} - -// responseDeduper wraps a driverResponse, deduplicating its contents. -type responseDeduper struct { - seenRoots map[string]bool - seenPackages map[string]*Package - dr *driverResponse -} - -func newDeduper() *responseDeduper { - return &responseDeduper{ - dr: &driverResponse{}, - seenRoots: map[string]bool{}, - seenPackages: map[string]*Package{}, - } -} - -// addAll fills in r with a driverResponse. -func (r *responseDeduper) addAll(dr *driverResponse) { - for _, pkg := range dr.Packages { - r.addPackage(pkg) - } - for _, root := range dr.Roots { - r.addRoot(root) - } -} - -func (r *responseDeduper) addPackage(p *Package) { - if r.seenPackages[p.ID] != nil { - return - } - r.seenPackages[p.ID] = p - r.dr.Packages = append(r.dr.Packages, p) -} - -func (r *responseDeduper) addRoot(id string) { - if r.seenRoots[id] { - return - } - r.seenRoots[id] = true - r.dr.Roots = append(r.dr.Roots, id) -} - -type golistState struct { - cfg *Config - ctx context.Context - - envOnce sync.Once - goEnvError error - goEnv map[string]string - - rootsOnce sync.Once - rootDirsError error - rootDirs map[string]string - - goVersionOnce sync.Once - goVersionError error - goVersion int // The X in Go 1.X. - - // vendorDirs caches the (non)existence of vendor directories. - vendorDirs map[string]bool -} - -// getEnv returns Go environment variables. Only specific variables are -// populated -- computing all of them is slow. -func (state *golistState) getEnv() (map[string]string, error) { - state.envOnce.Do(func() { - var b *bytes.Buffer - b, state.goEnvError = state.invokeGo("env", "-json", "GOMOD", "GOPATH") - if state.goEnvError != nil { - return - } - - state.goEnv = make(map[string]string) - decoder := json.NewDecoder(b) - if state.goEnvError = decoder.Decode(&state.goEnv); state.goEnvError != nil { - return - } - }) - return state.goEnv, state.goEnvError -} - -// mustGetEnv is a convenience function that can be used if getEnv has already succeeded. -func (state *golistState) mustGetEnv() map[string]string { - env, err := state.getEnv() - if err != nil { - panic(fmt.Sprintf("mustGetEnv: %v", err)) - } - return env -} - -// goListDriver uses the go list command to interpret the patterns and produce -// the build system package structure. -// See driver for more details. -func goListDriver(cfg *Config, patterns ...string) (*driverResponse, error) { - // Make sure that any asynchronous go commands are killed when we return. - parentCtx := cfg.Context - if parentCtx == nil { - parentCtx = context.Background() - } - ctx, cancel := context.WithCancel(parentCtx) - defer cancel() - - response := newDeduper() - - state := &golistState{ - cfg: cfg, - ctx: ctx, - vendorDirs: map[string]bool{}, - } - - // Fill in response.Sizes asynchronously if necessary. - var sizeserr error - var sizeswg sync.WaitGroup - if cfg.Mode&NeedTypesSizes != 0 || cfg.Mode&NeedTypes != 0 { - sizeswg.Add(1) - go func() { - var sizes types.Sizes - sizes, sizeserr = packagesdriver.GetSizesGolist(ctx, state.cfgInvocation(), cfg.gocmdRunner) - // types.SizesFor always returns nil or a *types.StdSizes. - response.dr.Sizes, _ = sizes.(*types.StdSizes) - sizeswg.Done() - }() - } - - // Determine files requested in contains patterns - var containFiles []string - restPatterns := make([]string, 0, len(patterns)) - // Extract file= and other [querytype]= patterns. Report an error if querytype - // doesn't exist. -extractQueries: - for _, pattern := range patterns { - eqidx := strings.Index(pattern, "=") - if eqidx < 0 { - restPatterns = append(restPatterns, pattern) - } else { - query, value := pattern[:eqidx], pattern[eqidx+len("="):] - switch query { - case "file": - containFiles = append(containFiles, value) - case "pattern": - restPatterns = append(restPatterns, value) - case "": // not a reserved query - restPatterns = append(restPatterns, pattern) - default: - for _, rune := range query { - if rune < 'a' || rune > 'z' { // not a reserved query - restPatterns = append(restPatterns, pattern) - continue extractQueries - } - } - // Reject all other patterns containing "=" - return nil, fmt.Errorf("invalid query type %q in query pattern %q", query, pattern) - } - } - } - - // See if we have any patterns to pass through to go list. Zero initial - // patterns also requires a go list call, since it's the equivalent of - // ".". - if len(restPatterns) > 0 || len(patterns) == 0 { - dr, err := state.createDriverResponse(restPatterns...) - if err != nil { - return nil, err - } - response.addAll(dr) - } - - if len(containFiles) != 0 { - if err := state.runContainsQueries(response, containFiles); err != nil { - return nil, err - } - } - - // Only use go/packages' overlay processing if we're using a Go version - // below 1.16. Otherwise, go list handles it. - if goVersion, err := state.getGoVersion(); err == nil && goVersion < 16 { - modifiedPkgs, needPkgs, err := state.processGolistOverlay(response) - if err != nil { - return nil, err - } - - var containsCandidates []string - if len(containFiles) > 0 { - containsCandidates = append(containsCandidates, modifiedPkgs...) - containsCandidates = append(containsCandidates, needPkgs...) - } - if err := state.addNeededOverlayPackages(response, needPkgs); err != nil { - return nil, err - } - // Check candidate packages for containFiles. - if len(containFiles) > 0 { - for _, id := range containsCandidates { - pkg, ok := response.seenPackages[id] - if !ok { - response.addPackage(&Package{ - ID: id, - Errors: []Error{{ - Kind: ListError, - Msg: fmt.Sprintf("package %s expected but not seen", id), - }}, - }) - continue - } - for _, f := range containFiles { - for _, g := range pkg.GoFiles { - if sameFile(f, g) { - response.addRoot(id) - } - } - } - } - } - // Add root for any package that matches a pattern. This applies only to - // packages that are modified by overlays, since they are not added as - // roots automatically. - for _, pattern := range restPatterns { - match := matchPattern(pattern) - for _, pkgID := range modifiedPkgs { - pkg, ok := response.seenPackages[pkgID] - if !ok { - continue - } - if match(pkg.PkgPath) { - response.addRoot(pkg.ID) - } - } - } - } - - sizeswg.Wait() - if sizeserr != nil { - return nil, sizeserr - } - return response.dr, nil -} - -func (state *golistState) addNeededOverlayPackages(response *responseDeduper, pkgs []string) error { - if len(pkgs) == 0 { - return nil - } - dr, err := state.createDriverResponse(pkgs...) - if err != nil { - return err - } - for _, pkg := range dr.Packages { - response.addPackage(pkg) - } - _, needPkgs, err := state.processGolistOverlay(response) - if err != nil { - return err - } - return state.addNeededOverlayPackages(response, needPkgs) -} - -func (state *golistState) runContainsQueries(response *responseDeduper, queries []string) error { - for _, query := range queries { - // TODO(matloob): Do only one query per directory. - fdir := filepath.Dir(query) - // Pass absolute path of directory to go list so that it knows to treat it as a directory, - // not a package path. - pattern, err := filepath.Abs(fdir) - if err != nil { - return fmt.Errorf("could not determine absolute path of file= query path %q: %v", query, err) - } - dirResponse, err := state.createDriverResponse(pattern) - - // If there was an error loading the package, or the package is returned - // with errors, try to load the file as an ad-hoc package. - // Usually the error will appear in a returned package, but may not if we're - // in module mode and the ad-hoc is located outside a module. - if err != nil || len(dirResponse.Packages) == 1 && len(dirResponse.Packages[0].GoFiles) == 0 && - len(dirResponse.Packages[0].Errors) == 1 { - var queryErr error - if dirResponse, queryErr = state.adhocPackage(pattern, query); queryErr != nil { - return err // return the original error - } - } - isRoot := make(map[string]bool, len(dirResponse.Roots)) - for _, root := range dirResponse.Roots { - isRoot[root] = true - } - for _, pkg := range dirResponse.Packages { - // Add any new packages to the main set - // We don't bother to filter packages that will be dropped by the changes of roots, - // that will happen anyway during graph construction outside this function. - // Over-reporting packages is not a problem. - response.addPackage(pkg) - // if the package was not a root one, it cannot have the file - if !isRoot[pkg.ID] { - continue - } - for _, pkgFile := range pkg.GoFiles { - if filepath.Base(query) == filepath.Base(pkgFile) { - response.addRoot(pkg.ID) - break - } - } - } - } - return nil -} - -// adhocPackage attempts to load or construct an ad-hoc package for a given -// query, if the original call to the driver produced inadequate results. -func (state *golistState) adhocPackage(pattern, query string) (*driverResponse, error) { - response, err := state.createDriverResponse(query) - if err != nil { - return nil, err - } - // If we get nothing back from `go list`, - // try to make this file into its own ad-hoc package. - // TODO(rstambler): Should this check against the original response? - if len(response.Packages) == 0 { - response.Packages = append(response.Packages, &Package{ - ID: "command-line-arguments", - PkgPath: query, - GoFiles: []string{query}, - CompiledGoFiles: []string{query}, - Imports: make(map[string]*Package), - }) - response.Roots = append(response.Roots, "command-line-arguments") - } - // Handle special cases. - if len(response.Packages) == 1 { - // golang/go#33482: If this is a file= query for ad-hoc packages where - // the file only exists on an overlay, and exists outside of a module, - // add the file to the package and remove the errors. - if response.Packages[0].ID == "command-line-arguments" || - filepath.ToSlash(response.Packages[0].PkgPath) == filepath.ToSlash(query) { - if len(response.Packages[0].GoFiles) == 0 { - filename := filepath.Join(pattern, filepath.Base(query)) // avoid recomputing abspath - // TODO(matloob): check if the file is outside of a root dir? - for path := range state.cfg.Overlay { - if path == filename { - response.Packages[0].Errors = nil - response.Packages[0].GoFiles = []string{path} - response.Packages[0].CompiledGoFiles = []string{path} - } - } - } - } - } - return response, nil -} - -// Fields must match go list; -// see $GOROOT/src/cmd/go/internal/load/pkg.go. -type jsonPackage struct { - ImportPath string - Dir string - Name string - Export string - GoFiles []string - CompiledGoFiles []string - IgnoredGoFiles []string - IgnoredOtherFiles []string - CFiles []string - CgoFiles []string - CXXFiles []string - MFiles []string - HFiles []string - FFiles []string - SFiles []string - SwigFiles []string - SwigCXXFiles []string - SysoFiles []string - Imports []string - ImportMap map[string]string - Deps []string - Module *Module - TestGoFiles []string - TestImports []string - XTestGoFiles []string - XTestImports []string - ForTest string // q in a "p [q.test]" package, else "" - DepOnly bool - - Error *packagesinternal.PackageError - DepsErrors []*packagesinternal.PackageError -} - -type jsonPackageError struct { - ImportStack []string - Pos string - Err string -} - -func otherFiles(p *jsonPackage) [][]string { - return [][]string{p.CFiles, p.CXXFiles, p.MFiles, p.HFiles, p.FFiles, p.SFiles, p.SwigFiles, p.SwigCXXFiles, p.SysoFiles} -} - -// createDriverResponse uses the "go list" command to expand the pattern -// words and return a response for the specified packages. -func (state *golistState) createDriverResponse(words ...string) (*driverResponse, error) { - // go list uses the following identifiers in ImportPath and Imports: - // - // "p" -- importable package or main (command) - // "q.test" -- q's test executable - // "p [q.test]" -- variant of p as built for q's test executable - // "q_test [q.test]" -- q's external test package - // - // The packages p that are built differently for a test q.test - // are q itself, plus any helpers used by the external test q_test, - // typically including "testing" and all its dependencies. - - // Run "go list" for complete - // information on the specified packages. - buf, err := state.invokeGo("list", golistargs(state.cfg, words)...) - if err != nil { - return nil, err - } - seen := make(map[string]*jsonPackage) - pkgs := make(map[string]*Package) - additionalErrors := make(map[string][]Error) - // Decode the JSON and convert it to Package form. - var response driverResponse - for dec := json.NewDecoder(buf); dec.More(); { - p := new(jsonPackage) - if err := dec.Decode(p); err != nil { - return nil, fmt.Errorf("JSON decoding failed: %v", err) - } - - if p.ImportPath == "" { - // The documentation for go list says that “[e]rroneous packages will have - // a non-empty ImportPath”. If for some reason it comes back empty, we - // prefer to error out rather than silently discarding data or handing - // back a package without any way to refer to it. - if p.Error != nil { - return nil, Error{ - Pos: p.Error.Pos, - Msg: p.Error.Err, - } - } - return nil, fmt.Errorf("package missing import path: %+v", p) - } - - // Work around https://golang.org/issue/33157: - // go list -e, when given an absolute path, will find the package contained at - // that directory. But when no package exists there, it will return a fake package - // with an error and the ImportPath set to the absolute path provided to go list. - // Try to convert that absolute path to what its package path would be if it's - // contained in a known module or GOPATH entry. This will allow the package to be - // properly "reclaimed" when overlays are processed. - if filepath.IsAbs(p.ImportPath) && p.Error != nil { - pkgPath, ok, err := state.getPkgPath(p.ImportPath) - if err != nil { - return nil, err - } - if ok { - p.ImportPath = pkgPath - } - } - - if old, found := seen[p.ImportPath]; found { - // If one version of the package has an error, and the other doesn't, assume - // that this is a case where go list is reporting a fake dependency variant - // of the imported package: When a package tries to invalidly import another - // package, go list emits a variant of the imported package (with the same - // import path, but with an error on it, and the package will have a - // DepError set on it). An example of when this can happen is for imports of - // main packages: main packages can not be imported, but they may be - // separately matched and listed by another pattern. - // See golang.org/issue/36188 for more details. - - // The plan is that eventually, hopefully in Go 1.15, the error will be - // reported on the importing package rather than the duplicate "fake" - // version of the imported package. Once all supported versions of Go - // have the new behavior this logic can be deleted. - // TODO(matloob): delete the workaround logic once all supported versions of - // Go return the errors on the proper package. - - // There should be exactly one version of a package that doesn't have an - // error. - if old.Error == nil && p.Error == nil { - if !reflect.DeepEqual(p, old) { - return nil, fmt.Errorf("internal error: go list gives conflicting information for package %v", p.ImportPath) - } - continue - } - - // Determine if this package's error needs to be bubbled up. - // This is a hack, and we expect for go list to eventually set the error - // on the package. - if old.Error != nil { - var errkind string - if strings.Contains(old.Error.Err, "not an importable package") { - errkind = "not an importable package" - } else if strings.Contains(old.Error.Err, "use of internal package") && strings.Contains(old.Error.Err, "not allowed") { - errkind = "use of internal package not allowed" - } - if errkind != "" { - if len(old.Error.ImportStack) < 1 { - return nil, fmt.Errorf(`internal error: go list gave a %q error with empty import stack`, errkind) - } - importingPkg := old.Error.ImportStack[len(old.Error.ImportStack)-1] - if importingPkg == old.ImportPath { - // Using an older version of Go which put this package itself on top of import - // stack, instead of the importer. Look for importer in second from top - // position. - if len(old.Error.ImportStack) < 2 { - return nil, fmt.Errorf(`internal error: go list gave a %q error with an import stack without importing package`, errkind) - } - importingPkg = old.Error.ImportStack[len(old.Error.ImportStack)-2] - } - additionalErrors[importingPkg] = append(additionalErrors[importingPkg], Error{ - Pos: old.Error.Pos, - Msg: old.Error.Err, - Kind: ListError, - }) - } - } - - // Make sure that if there's a version of the package without an error, - // that's the one reported to the user. - if old.Error == nil { - continue - } - - // This package will replace the old one at the end of the loop. - } - seen[p.ImportPath] = p - - pkg := &Package{ - Name: p.Name, - ID: p.ImportPath, - GoFiles: absJoin(p.Dir, p.GoFiles, p.CgoFiles), - CompiledGoFiles: absJoin(p.Dir, p.CompiledGoFiles), - OtherFiles: absJoin(p.Dir, otherFiles(p)...), - IgnoredFiles: absJoin(p.Dir, p.IgnoredGoFiles, p.IgnoredOtherFiles), - forTest: p.ForTest, - depsErrors: p.DepsErrors, - Module: p.Module, - } - - if (state.cfg.Mode&typecheckCgo) != 0 && len(p.CgoFiles) != 0 { - if len(p.CompiledGoFiles) > len(p.GoFiles) { - // We need the cgo definitions, which are in the first - // CompiledGoFile after the non-cgo ones. This is a hack but there - // isn't currently a better way to find it. We also need the pure - // Go files and unprocessed cgo files, all of which are already - // in pkg.GoFiles. - cgoTypes := p.CompiledGoFiles[len(p.GoFiles)] - pkg.CompiledGoFiles = append([]string{cgoTypes}, pkg.GoFiles...) - } else { - // golang/go#38990: go list silently fails to do cgo processing - pkg.CompiledGoFiles = nil - pkg.Errors = append(pkg.Errors, Error{ - Msg: "go list failed to return CompiledGoFiles. This may indicate failure to perform cgo processing; try building at the command line. See https://golang.org/issue/38990.", - Kind: ListError, - }) - } - } - - // Work around https://golang.org/issue/28749: - // cmd/go puts assembly, C, and C++ files in CompiledGoFiles. - // Filter out any elements of CompiledGoFiles that are also in OtherFiles. - // We have to keep this workaround in place until go1.12 is a distant memory. - if len(pkg.OtherFiles) > 0 { - other := make(map[string]bool, len(pkg.OtherFiles)) - for _, f := range pkg.OtherFiles { - other[f] = true - } - - out := pkg.CompiledGoFiles[:0] - for _, f := range pkg.CompiledGoFiles { - if other[f] { - continue - } - out = append(out, f) - } - pkg.CompiledGoFiles = out - } - - // Extract the PkgPath from the package's ID. - if i := strings.IndexByte(pkg.ID, ' '); i >= 0 { - pkg.PkgPath = pkg.ID[:i] - } else { - pkg.PkgPath = pkg.ID - } - - if pkg.PkgPath == "unsafe" { - pkg.GoFiles = nil // ignore fake unsafe.go file - } - - // Assume go list emits only absolute paths for Dir. - if p.Dir != "" && !filepath.IsAbs(p.Dir) { - log.Fatalf("internal error: go list returned non-absolute Package.Dir: %s", p.Dir) - } - - if p.Export != "" && !filepath.IsAbs(p.Export) { - pkg.ExportFile = filepath.Join(p.Dir, p.Export) - } else { - pkg.ExportFile = p.Export - } - - // imports - // - // Imports contains the IDs of all imported packages. - // ImportsMap records (path, ID) only where they differ. - ids := make(map[string]bool) - for _, id := range p.Imports { - ids[id] = true - } - pkg.Imports = make(map[string]*Package) - for path, id := range p.ImportMap { - pkg.Imports[path] = &Package{ID: id} // non-identity import - delete(ids, id) - } - for id := range ids { - if id == "C" { - continue - } - - pkg.Imports[id] = &Package{ID: id} // identity import - } - if !p.DepOnly { - response.Roots = append(response.Roots, pkg.ID) - } - - // Work around for pre-go.1.11 versions of go list. - // TODO(matloob): they should be handled by the fallback. - // Can we delete this? - if len(pkg.CompiledGoFiles) == 0 { - pkg.CompiledGoFiles = pkg.GoFiles - } - - // Temporary work-around for golang/go#39986. Parse filenames out of - // error messages. This happens if there are unrecoverable syntax - // errors in the source, so we can't match on a specific error message. - if err := p.Error; err != nil && state.shouldAddFilenameFromError(p) { - addFilenameFromPos := func(pos string) bool { - split := strings.Split(pos, ":") - if len(split) < 1 { - return false - } - filename := strings.TrimSpace(split[0]) - if filename == "" { - return false - } - if !filepath.IsAbs(filename) { - filename = filepath.Join(state.cfg.Dir, filename) - } - info, _ := os.Stat(filename) - if info == nil { - return false - } - pkg.CompiledGoFiles = append(pkg.CompiledGoFiles, filename) - pkg.GoFiles = append(pkg.GoFiles, filename) - return true - } - found := addFilenameFromPos(err.Pos) - // In some cases, go list only reports the error position in the - // error text, not the error position. One such case is when the - // file's package name is a keyword (see golang.org/issue/39763). - if !found { - addFilenameFromPos(err.Err) - } - } - - if p.Error != nil { - msg := strings.TrimSpace(p.Error.Err) // Trim to work around golang.org/issue/32363. - // Address golang.org/issue/35964 by appending import stack to error message. - if msg == "import cycle not allowed" && len(p.Error.ImportStack) != 0 { - msg += fmt.Sprintf(": import stack: %v", p.Error.ImportStack) - } - pkg.Errors = append(pkg.Errors, Error{ - Pos: p.Error.Pos, - Msg: msg, - Kind: ListError, - }) - } - - pkgs[pkg.ID] = pkg - } - - for id, errs := range additionalErrors { - if p, ok := pkgs[id]; ok { - p.Errors = append(p.Errors, errs...) - } - } - for _, pkg := range pkgs { - response.Packages = append(response.Packages, pkg) - } - sort.Slice(response.Packages, func(i, j int) bool { return response.Packages[i].ID < response.Packages[j].ID }) - - return &response, nil -} - -func (state *golistState) shouldAddFilenameFromError(p *jsonPackage) bool { - if len(p.GoFiles) > 0 || len(p.CompiledGoFiles) > 0 { - return false - } - - goV, err := state.getGoVersion() - if err != nil { - return false - } - - // On Go 1.14 and earlier, only add filenames from errors if the import stack is empty. - // The import stack behaves differently for these versions than newer Go versions. - if goV < 15 { - return len(p.Error.ImportStack) == 0 - } - - // On Go 1.15 and later, only parse filenames out of error if there's no import stack, - // or the current package is at the top of the import stack. This is not guaranteed - // to work perfectly, but should avoid some cases where files in errors don't belong to this - // package. - return len(p.Error.ImportStack) == 0 || p.Error.ImportStack[len(p.Error.ImportStack)-1] == p.ImportPath -} - -func (state *golistState) getGoVersion() (int, error) { - state.goVersionOnce.Do(func() { - state.goVersion, state.goVersionError = gocommand.GoVersion(state.ctx, state.cfgInvocation(), state.cfg.gocmdRunner) - }) - return state.goVersion, state.goVersionError -} - -// getPkgPath finds the package path of a directory if it's relative to a root -// directory. -func (state *golistState) getPkgPath(dir string) (string, bool, error) { - absDir, err := filepath.Abs(dir) - if err != nil { - return "", false, err - } - roots, err := state.determineRootDirs() - if err != nil { - return "", false, err - } - - for rdir, rpath := range roots { - // Make sure that the directory is in the module, - // to avoid creating a path relative to another module. - if !strings.HasPrefix(absDir, rdir) { - continue - } - // TODO(matloob): This doesn't properly handle symlinks. - r, err := filepath.Rel(rdir, dir) - if err != nil { - continue - } - if rpath != "" { - // We choose only one root even though the directory even it can belong in multiple modules - // or GOPATH entries. This is okay because we only need to work with absolute dirs when a - // file is missing from disk, for instance when gopls calls go/packages in an overlay. - // Once the file is saved, gopls, or the next invocation of the tool will get the correct - // result straight from golist. - // TODO(matloob): Implement module tiebreaking? - return path.Join(rpath, filepath.ToSlash(r)), true, nil - } - return filepath.ToSlash(r), true, nil - } - return "", false, nil -} - -// absJoin absolutizes and flattens the lists of files. -func absJoin(dir string, fileses ...[]string) (res []string) { - for _, files := range fileses { - for _, file := range files { - if !filepath.IsAbs(file) { - file = filepath.Join(dir, file) - } - res = append(res, file) - } - } - return res -} - -func golistargs(cfg *Config, words []string) []string { - const findFlags = NeedImports | NeedTypes | NeedSyntax | NeedTypesInfo - fullargs := []string{ - "-e", "-json", - fmt.Sprintf("-compiled=%t", cfg.Mode&(NeedCompiledGoFiles|NeedSyntax|NeedTypes|NeedTypesInfo|NeedTypesSizes) != 0), - fmt.Sprintf("-test=%t", cfg.Tests), - fmt.Sprintf("-export=%t", usesExportData(cfg)), - fmt.Sprintf("-deps=%t", cfg.Mode&NeedImports != 0), - // go list doesn't let you pass -test and -find together, - // probably because you'd just get the TestMain. - fmt.Sprintf("-find=%t", !cfg.Tests && cfg.Mode&findFlags == 0), - } - fullargs = append(fullargs, cfg.BuildFlags...) - fullargs = append(fullargs, "--") - fullargs = append(fullargs, words...) - return fullargs -} - -// cfgInvocation returns an Invocation that reflects cfg's settings. -func (state *golistState) cfgInvocation() gocommand.Invocation { - cfg := state.cfg - return gocommand.Invocation{ - BuildFlags: cfg.BuildFlags, - ModFile: cfg.modFile, - ModFlag: cfg.modFlag, - CleanEnv: cfg.Env != nil, - Env: cfg.Env, - Logf: cfg.Logf, - WorkingDir: cfg.Dir, - } -} - -// invokeGo returns the stdout of a go command invocation. -func (state *golistState) invokeGo(verb string, args ...string) (*bytes.Buffer, error) { - cfg := state.cfg - - inv := state.cfgInvocation() - - // For Go versions 1.16 and above, `go list` accepts overlays directly via - // the -overlay flag. Set it, if it's available. - // - // The check for "list" is not necessarily required, but we should avoid - // getting the go version if possible. - if verb == "list" { - goVersion, err := state.getGoVersion() - if err != nil { - return nil, err - } - if goVersion >= 16 { - filename, cleanup, err := state.writeOverlays() - if err != nil { - return nil, err - } - defer cleanup() - inv.Overlay = filename - } - } - inv.Verb = verb - inv.Args = args - gocmdRunner := cfg.gocmdRunner - if gocmdRunner == nil { - gocmdRunner = &gocommand.Runner{} - } - stdout, stderr, friendlyErr, err := gocmdRunner.RunRaw(cfg.Context, inv) - if err != nil { - // Check for 'go' executable not being found. - if ee, ok := err.(*exec.Error); ok && ee.Err == exec.ErrNotFound { - return nil, fmt.Errorf("'go list' driver requires 'go', but %s", exec.ErrNotFound) - } - - exitErr, ok := err.(*exec.ExitError) - if !ok { - // Catastrophic error: - // - context cancellation - return nil, xerrors.Errorf("couldn't run 'go': %w", err) - } - - // Old go version? - if strings.Contains(stderr.String(), "flag provided but not defined") { - return nil, goTooOldError{fmt.Errorf("unsupported version of go: %s: %s", exitErr, stderr)} - } - - // Related to #24854 - if len(stderr.String()) > 0 && strings.Contains(stderr.String(), "unexpected directory layout") { - return nil, friendlyErr - } - - // Is there an error running the C compiler in cgo? This will be reported in the "Error" field - // and should be suppressed by go list -e. - // - // This condition is not perfect yet because the error message can include other error messages than runtime/cgo. - isPkgPathRune := func(r rune) bool { - // From https://golang.org/ref/spec#Import_declarations: - // Implementation restriction: A compiler may restrict ImportPaths to non-empty strings - // using only characters belonging to Unicode's L, M, N, P, and S general categories - // (the Graphic characters without spaces) and may also exclude the - // characters !"#$%&'()*,:;<=>?[\]^`{|} and the Unicode replacement character U+FFFD. - return unicode.IsOneOf([]*unicode.RangeTable{unicode.L, unicode.M, unicode.N, unicode.P, unicode.S}, r) && - !strings.ContainsRune("!\"#$%&'()*,:;<=>?[\\]^`{|}\uFFFD", r) - } - // golang/go#36770: Handle case where cmd/go prints module download messages before the error. - msg := stderr.String() - for strings.HasPrefix(msg, "go: downloading") { - msg = msg[strings.IndexRune(msg, '\n')+1:] - } - if len(stderr.String()) > 0 && strings.HasPrefix(stderr.String(), "# ") { - msg := msg[len("# "):] - if strings.HasPrefix(strings.TrimLeftFunc(msg, isPkgPathRune), "\n") { - return stdout, nil - } - // Treat pkg-config errors as a special case (golang.org/issue/36770). - if strings.HasPrefix(msg, "pkg-config") { - return stdout, nil - } - } - - // This error only appears in stderr. See golang.org/cl/166398 for a fix in go list to show - // the error in the Err section of stdout in case -e option is provided. - // This fix is provided for backwards compatibility. - if len(stderr.String()) > 0 && strings.Contains(stderr.String(), "named files must be .go files") { - output := fmt.Sprintf(`{"ImportPath": "command-line-arguments","Incomplete": true,"Error": {"Pos": "","Err": %q}}`, - strings.Trim(stderr.String(), "\n")) - return bytes.NewBufferString(output), nil - } - - // Similar to the previous error, but currently lacks a fix in Go. - if len(stderr.String()) > 0 && strings.Contains(stderr.String(), "named files must all be in one directory") { - output := fmt.Sprintf(`{"ImportPath": "command-line-arguments","Incomplete": true,"Error": {"Pos": "","Err": %q}}`, - strings.Trim(stderr.String(), "\n")) - return bytes.NewBufferString(output), nil - } - - // Backwards compatibility for Go 1.11 because 1.12 and 1.13 put the directory in the ImportPath. - // If the package doesn't exist, put the absolute path of the directory into the error message, - // as Go 1.13 list does. - const noSuchDirectory = "no such directory" - if len(stderr.String()) > 0 && strings.Contains(stderr.String(), noSuchDirectory) { - errstr := stderr.String() - abspath := strings.TrimSpace(errstr[strings.Index(errstr, noSuchDirectory)+len(noSuchDirectory):]) - output := fmt.Sprintf(`{"ImportPath": %q,"Incomplete": true,"Error": {"Pos": "","Err": %q}}`, - abspath, strings.Trim(stderr.String(), "\n")) - return bytes.NewBufferString(output), nil - } - - // Workaround for #29280: go list -e has incorrect behavior when an ad-hoc package doesn't exist. - // Note that the error message we look for in this case is different that the one looked for above. - if len(stderr.String()) > 0 && strings.Contains(stderr.String(), "no such file or directory") { - output := fmt.Sprintf(`{"ImportPath": "command-line-arguments","Incomplete": true,"Error": {"Pos": "","Err": %q}}`, - strings.Trim(stderr.String(), "\n")) - return bytes.NewBufferString(output), nil - } - - // Workaround for #34273. go list -e with GO111MODULE=on has incorrect behavior when listing a - // directory outside any module. - if len(stderr.String()) > 0 && strings.Contains(stderr.String(), "outside available modules") { - output := fmt.Sprintf(`{"ImportPath": %q,"Incomplete": true,"Error": {"Pos": "","Err": %q}}`, - // TODO(matloob): command-line-arguments isn't correct here. - "command-line-arguments", strings.Trim(stderr.String(), "\n")) - return bytes.NewBufferString(output), nil - } - - // Another variation of the previous error - if len(stderr.String()) > 0 && strings.Contains(stderr.String(), "outside module root") { - output := fmt.Sprintf(`{"ImportPath": %q,"Incomplete": true,"Error": {"Pos": "","Err": %q}}`, - // TODO(matloob): command-line-arguments isn't correct here. - "command-line-arguments", strings.Trim(stderr.String(), "\n")) - return bytes.NewBufferString(output), nil - } - - // Workaround for an instance of golang.org/issue/26755: go list -e will return a non-zero exit - // status if there's a dependency on a package that doesn't exist. But it should return - // a zero exit status and set an error on that package. - if len(stderr.String()) > 0 && strings.Contains(stderr.String(), "no Go files in") { - // Don't clobber stdout if `go list` actually returned something. - if len(stdout.String()) > 0 { - return stdout, nil - } - // try to extract package name from string - stderrStr := stderr.String() - var importPath string - colon := strings.Index(stderrStr, ":") - if colon > 0 && strings.HasPrefix(stderrStr, "go build ") { - importPath = stderrStr[len("go build "):colon] - } - output := fmt.Sprintf(`{"ImportPath": %q,"Incomplete": true,"Error": {"Pos": "","Err": %q}}`, - importPath, strings.Trim(stderrStr, "\n")) - return bytes.NewBufferString(output), nil - } - - // Export mode entails a build. - // If that build fails, errors appear on stderr - // (despite the -e flag) and the Export field is blank. - // Do not fail in that case. - // The same is true if an ad-hoc package given to go list doesn't exist. - // TODO(matloob): Remove these once we can depend on go list to exit with a zero status with -e even when - // packages don't exist or a build fails. - if !usesExportData(cfg) && !containsGoFile(args) { - return nil, friendlyErr - } - } - return stdout, nil -} - -// OverlayJSON is the format overlay files are expected to be in. -// The Replace map maps from overlaid paths to replacement paths: -// the Go command will forward all reads trying to open -// each overlaid path to its replacement path, or consider the overlaid -// path not to exist if the replacement path is empty. -// -// From golang/go#39958. -type OverlayJSON struct { - Replace map[string]string `json:"replace,omitempty"` -} - -// writeOverlays writes out files for go list's -overlay flag, as described -// above. -func (state *golistState) writeOverlays() (filename string, cleanup func(), err error) { - // Do nothing if there are no overlays in the config. - if len(state.cfg.Overlay) == 0 { - return "", func() {}, nil - } - dir, err := ioutil.TempDir("", "gopackages-*") - if err != nil { - return "", nil, err - } - // The caller must clean up this directory, unless this function returns an - // error. - cleanup = func() { - os.RemoveAll(dir) - } - defer func() { - if err != nil { - cleanup() - } - }() - overlays := map[string]string{} - for k, v := range state.cfg.Overlay { - // Create a unique filename for the overlaid files, to avoid - // creating nested directories. - noSeparator := strings.Join(strings.Split(filepath.ToSlash(k), "/"), "") - f, err := ioutil.TempFile(dir, fmt.Sprintf("*-%s", noSeparator)) - if err != nil { - return "", func() {}, err - } - if _, err := f.Write(v); err != nil { - return "", func() {}, err - } - if err := f.Close(); err != nil { - return "", func() {}, err - } - overlays[k] = f.Name() - } - b, err := json.Marshal(OverlayJSON{Replace: overlays}) - if err != nil { - return "", func() {}, err - } - // Write out the overlay file that contains the filepath mappings. - filename = filepath.Join(dir, "overlay.json") - if err := ioutil.WriteFile(filename, b, 0665); err != nil { - return "", func() {}, err - } - return filename, cleanup, nil -} - -func containsGoFile(s []string) bool { - for _, f := range s { - if strings.HasSuffix(f, ".go") { - return true - } - } - return false -} - -func cmdDebugStr(cmd *exec.Cmd) string { - env := make(map[string]string) - for _, kv := range cmd.Env { - split := strings.SplitN(kv, "=", 2) - k, v := split[0], split[1] - env[k] = v - } - - var args []string - for _, arg := range cmd.Args { - quoted := strconv.Quote(arg) - if quoted[1:len(quoted)-1] != arg || strings.Contains(arg, " ") { - args = append(args, quoted) - } else { - args = append(args, arg) - } - } - return fmt.Sprintf("GOROOT=%v GOPATH=%v GO111MODULE=%v GOPROXY=%v PWD=%v %v", env["GOROOT"], env["GOPATH"], env["GO111MODULE"], env["GOPROXY"], env["PWD"], strings.Join(args, " ")) -} diff --git a/vendor/golang.org/x/tools/go/packages/golist_overlay.go b/vendor/golang.org/x/tools/go/packages/golist_overlay.go deleted file mode 100644 index 9576b47..0000000 --- a/vendor/golang.org/x/tools/go/packages/golist_overlay.go +++ /dev/null @@ -1,575 +0,0 @@ -// Copyright 2018 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 packages - -import ( - "encoding/json" - "fmt" - "go/parser" - "go/token" - "os" - "path/filepath" - "regexp" - "sort" - "strconv" - "strings" - - "golang.org/x/tools/internal/gocommand" -) - -// processGolistOverlay provides rudimentary support for adding -// files that don't exist on disk to an overlay. The results can be -// sometimes incorrect. -// TODO(matloob): Handle unsupported cases, including the following: -// - determining the correct package to add given a new import path -func (state *golistState) processGolistOverlay(response *responseDeduper) (modifiedPkgs, needPkgs []string, err error) { - havePkgs := make(map[string]string) // importPath -> non-test package ID - needPkgsSet := make(map[string]bool) - modifiedPkgsSet := make(map[string]bool) - - pkgOfDir := make(map[string][]*Package) - for _, pkg := range response.dr.Packages { - // This is an approximation of import path to id. This can be - // wrong for tests, vendored packages, and a number of other cases. - havePkgs[pkg.PkgPath] = pkg.ID - dir, err := commonDir(pkg.GoFiles) - if err != nil { - return nil, nil, err - } - if dir != "" { - pkgOfDir[dir] = append(pkgOfDir[dir], pkg) - } - } - - // If no new imports are added, it is safe to avoid loading any needPkgs. - // Otherwise, it's hard to tell which package is actually being loaded - // (due to vendoring) and whether any modified package will show up - // in the transitive set of dependencies (because new imports are added, - // potentially modifying the transitive set of dependencies). - var overlayAddsImports bool - - // If both a package and its test package are created by the overlay, we - // need the real package first. Process all non-test files before test - // files, and make the whole process deterministic while we're at it. - var overlayFiles []string - for opath := range state.cfg.Overlay { - overlayFiles = append(overlayFiles, opath) - } - sort.Slice(overlayFiles, func(i, j int) bool { - iTest := strings.HasSuffix(overlayFiles[i], "_test.go") - jTest := strings.HasSuffix(overlayFiles[j], "_test.go") - if iTest != jTest { - return !iTest // non-tests are before tests. - } - return overlayFiles[i] < overlayFiles[j] - }) - for _, opath := range overlayFiles { - contents := state.cfg.Overlay[opath] - base := filepath.Base(opath) - dir := filepath.Dir(opath) - var pkg *Package // if opath belongs to both a package and its test variant, this will be the test variant - var testVariantOf *Package // if opath is a test file, this is the package it is testing - var fileExists bool - isTestFile := strings.HasSuffix(opath, "_test.go") - pkgName, ok := extractPackageName(opath, contents) - if !ok { - // Don't bother adding a file that doesn't even have a parsable package statement - // to the overlay. - continue - } - // If all the overlay files belong to a different package, change the - // package name to that package. - maybeFixPackageName(pkgName, isTestFile, pkgOfDir[dir]) - nextPackage: - for _, p := range response.dr.Packages { - if pkgName != p.Name && p.ID != "command-line-arguments" { - continue - } - for _, f := range p.GoFiles { - if !sameFile(filepath.Dir(f), dir) { - continue - } - // Make sure to capture information on the package's test variant, if needed. - if isTestFile && !hasTestFiles(p) { - // TODO(matloob): Are there packages other than the 'production' variant - // of a package that this can match? This shouldn't match the test main package - // because the file is generated in another directory. - testVariantOf = p - continue nextPackage - } else if !isTestFile && hasTestFiles(p) { - // We're examining a test variant, but the overlaid file is - // a non-test file. Because the overlay implementation - // (currently) only adds a file to one package, skip this - // package, so that we can add the file to the production - // variant of the package. (https://golang.org/issue/36857 - // tracks handling overlays on both the production and test - // variant of a package). - continue nextPackage - } - if pkg != nil && p != pkg && pkg.PkgPath == p.PkgPath { - // We have already seen the production version of the - // for which p is a test variant. - if hasTestFiles(p) { - testVariantOf = pkg - } - } - pkg = p - if filepath.Base(f) == base { - fileExists = true - } - } - } - // The overlay could have included an entirely new package or an - // ad-hoc package. An ad-hoc package is one that we have manually - // constructed from inadequate `go list` results for a file= query. - // It will have the ID command-line-arguments. - if pkg == nil || pkg.ID == "command-line-arguments" { - // Try to find the module or gopath dir the file is contained in. - // Then for modules, add the module opath to the beginning. - pkgPath, ok, err := state.getPkgPath(dir) - if err != nil { - return nil, nil, err - } - if !ok { - break - } - var forTest string // only set for x tests - isXTest := strings.HasSuffix(pkgName, "_test") - if isXTest { - forTest = pkgPath - pkgPath += "_test" - } - id := pkgPath - if isTestFile { - if isXTest { - id = fmt.Sprintf("%s [%s.test]", pkgPath, forTest) - } else { - id = fmt.Sprintf("%s [%s.test]", pkgPath, pkgPath) - } - } - if pkg != nil { - // TODO(rstambler): We should change the package's path and ID - // here. The only issue is that this messes with the roots. - } else { - // Try to reclaim a package with the same ID, if it exists in the response. - for _, p := range response.dr.Packages { - if reclaimPackage(p, id, opath, contents) { - pkg = p - break - } - } - // Otherwise, create a new package. - if pkg == nil { - pkg = &Package{ - PkgPath: pkgPath, - ID: id, - Name: pkgName, - Imports: make(map[string]*Package), - } - response.addPackage(pkg) - havePkgs[pkg.PkgPath] = id - // Add the production package's sources for a test variant. - if isTestFile && !isXTest && testVariantOf != nil { - pkg.GoFiles = append(pkg.GoFiles, testVariantOf.GoFiles...) - pkg.CompiledGoFiles = append(pkg.CompiledGoFiles, testVariantOf.CompiledGoFiles...) - // Add the package under test and its imports to the test variant. - pkg.forTest = testVariantOf.PkgPath - for k, v := range testVariantOf.Imports { - pkg.Imports[k] = &Package{ID: v.ID} - } - } - if isXTest { - pkg.forTest = forTest - } - } - } - } - if !fileExists { - pkg.GoFiles = append(pkg.GoFiles, opath) - // TODO(matloob): Adding the file to CompiledGoFiles can exhibit the wrong behavior - // if the file will be ignored due to its build tags. - pkg.CompiledGoFiles = append(pkg.CompiledGoFiles, opath) - modifiedPkgsSet[pkg.ID] = true - } - imports, err := extractImports(opath, contents) - if err != nil { - // Let the parser or type checker report errors later. - continue - } - for _, imp := range imports { - // TODO(rstambler): If the package is an x test and the import has - // a test variant, make sure to replace it. - if _, found := pkg.Imports[imp]; found { - continue - } - overlayAddsImports = true - id, ok := havePkgs[imp] - if !ok { - var err error - id, err = state.resolveImport(dir, imp) - if err != nil { - return nil, nil, err - } - } - pkg.Imports[imp] = &Package{ID: id} - // Add dependencies to the non-test variant version of this package as well. - if testVariantOf != nil { - testVariantOf.Imports[imp] = &Package{ID: id} - } - } - } - - // toPkgPath guesses the package path given the id. - toPkgPath := func(sourceDir, id string) (string, error) { - if i := strings.IndexByte(id, ' '); i >= 0 { - return state.resolveImport(sourceDir, id[:i]) - } - return state.resolveImport(sourceDir, id) - } - - // Now that new packages have been created, do another pass to determine - // the new set of missing packages. - for _, pkg := range response.dr.Packages { - for _, imp := range pkg.Imports { - if len(pkg.GoFiles) == 0 { - return nil, nil, fmt.Errorf("cannot resolve imports for package %q with no Go files", pkg.PkgPath) - } - pkgPath, err := toPkgPath(filepath.Dir(pkg.GoFiles[0]), imp.ID) - if err != nil { - return nil, nil, err - } - if _, ok := havePkgs[pkgPath]; !ok { - needPkgsSet[pkgPath] = true - } - } - } - - if overlayAddsImports { - needPkgs = make([]string, 0, len(needPkgsSet)) - for pkg := range needPkgsSet { - needPkgs = append(needPkgs, pkg) - } - } - modifiedPkgs = make([]string, 0, len(modifiedPkgsSet)) - for pkg := range modifiedPkgsSet { - modifiedPkgs = append(modifiedPkgs, pkg) - } - return modifiedPkgs, needPkgs, err -} - -// resolveImport finds the ID of a package given its import path. -// In particular, it will find the right vendored copy when in GOPATH mode. -func (state *golistState) resolveImport(sourceDir, importPath string) (string, error) { - env, err := state.getEnv() - if err != nil { - return "", err - } - if env["GOMOD"] != "" { - return importPath, nil - } - - searchDir := sourceDir - for { - vendorDir := filepath.Join(searchDir, "vendor") - exists, ok := state.vendorDirs[vendorDir] - if !ok { - info, err := os.Stat(vendorDir) - exists = err == nil && info.IsDir() - state.vendorDirs[vendorDir] = exists - } - - if exists { - vendoredPath := filepath.Join(vendorDir, importPath) - if info, err := os.Stat(vendoredPath); err == nil && info.IsDir() { - // We should probably check for .go files here, but shame on anyone who fools us. - path, ok, err := state.getPkgPath(vendoredPath) - if err != nil { - return "", err - } - if ok { - return path, nil - } - } - } - - // We know we've hit the top of the filesystem when we Dir / and get /, - // or C:\ and get C:\, etc. - next := filepath.Dir(searchDir) - if next == searchDir { - break - } - searchDir = next - } - return importPath, nil -} - -func hasTestFiles(p *Package) bool { - for _, f := range p.GoFiles { - if strings.HasSuffix(f, "_test.go") { - return true - } - } - return false -} - -// determineRootDirs returns a mapping from absolute directories that could -// contain code to their corresponding import path prefixes. -func (state *golistState) determineRootDirs() (map[string]string, error) { - env, err := state.getEnv() - if err != nil { - return nil, err - } - if env["GOMOD"] != "" { - state.rootsOnce.Do(func() { - state.rootDirs, state.rootDirsError = state.determineRootDirsModules() - }) - } else { - state.rootsOnce.Do(func() { - state.rootDirs, state.rootDirsError = state.determineRootDirsGOPATH() - }) - } - return state.rootDirs, state.rootDirsError -} - -func (state *golistState) determineRootDirsModules() (map[string]string, error) { - // List all of the modules--the first will be the directory for the main - // module. Any replaced modules will also need to be treated as roots. - // Editing files in the module cache isn't a great idea, so we don't - // plan to ever support that. - out, err := state.invokeGo("list", "-m", "-json", "all") - if err != nil { - // 'go list all' will fail if we're outside of a module and - // GO111MODULE=on. Try falling back without 'all'. - var innerErr error - out, innerErr = state.invokeGo("list", "-m", "-json") - if innerErr != nil { - return nil, err - } - } - roots := map[string]string{} - modules := map[string]string{} - var i int - for dec := json.NewDecoder(out); dec.More(); { - mod := new(gocommand.ModuleJSON) - if err := dec.Decode(mod); err != nil { - return nil, err - } - if mod.Dir != "" && mod.Path != "" { - // This is a valid module; add it to the map. - absDir, err := filepath.Abs(mod.Dir) - if err != nil { - return nil, err - } - modules[absDir] = mod.Path - // The first result is the main module. - if i == 0 || mod.Replace != nil && mod.Replace.Path != "" { - roots[absDir] = mod.Path - } - } - i++ - } - return roots, nil -} - -func (state *golistState) determineRootDirsGOPATH() (map[string]string, error) { - m := map[string]string{} - for _, dir := range filepath.SplitList(state.mustGetEnv()["GOPATH"]) { - absDir, err := filepath.Abs(dir) - if err != nil { - return nil, err - } - m[filepath.Join(absDir, "src")] = "" - } - return m, nil -} - -func extractImports(filename string, contents []byte) ([]string, error) { - f, err := parser.ParseFile(token.NewFileSet(), filename, contents, parser.ImportsOnly) // TODO(matloob): reuse fileset? - if err != nil { - return nil, err - } - var res []string - for _, imp := range f.Imports { - quotedPath := imp.Path.Value - path, err := strconv.Unquote(quotedPath) - if err != nil { - return nil, err - } - res = append(res, path) - } - return res, nil -} - -// reclaimPackage attempts to reuse a package that failed to load in an overlay. -// -// If the package has errors and has no Name, GoFiles, or Imports, -// then it's possible that it doesn't yet exist on disk. -func reclaimPackage(pkg *Package, id string, filename string, contents []byte) bool { - // TODO(rstambler): Check the message of the actual error? - // It differs between $GOPATH and module mode. - if pkg.ID != id { - return false - } - if len(pkg.Errors) != 1 { - return false - } - if pkg.Name != "" || pkg.ExportFile != "" { - return false - } - if len(pkg.GoFiles) > 0 || len(pkg.CompiledGoFiles) > 0 || len(pkg.OtherFiles) > 0 { - return false - } - if len(pkg.Imports) > 0 { - return false - } - pkgName, ok := extractPackageName(filename, contents) - if !ok { - return false - } - pkg.Name = pkgName - pkg.Errors = nil - return true -} - -func extractPackageName(filename string, contents []byte) (string, bool) { - // TODO(rstambler): Check the message of the actual error? - // It differs between $GOPATH and module mode. - f, err := parser.ParseFile(token.NewFileSet(), filename, contents, parser.PackageClauseOnly) // TODO(matloob): reuse fileset? - if err != nil { - return "", false - } - return f.Name.Name, true -} - -// commonDir returns the directory that all files are in, "" if files is empty, -// or an error if they aren't in the same directory. -func commonDir(files []string) (string, error) { - seen := make(map[string]bool) - for _, f := range files { - seen[filepath.Dir(f)] = true - } - if len(seen) > 1 { - return "", fmt.Errorf("files (%v) are in more than one directory: %v", files, seen) - } - for k := range seen { - // seen has only one element; return it. - return k, nil - } - return "", nil // no files -} - -// It is possible that the files in the disk directory dir have a different package -// name from newName, which is deduced from the overlays. If they all have a different -// package name, and they all have the same package name, then that name becomes -// the package name. -// It returns true if it changes the package name, false otherwise. -func maybeFixPackageName(newName string, isTestFile bool, pkgsOfDir []*Package) { - names := make(map[string]int) - for _, p := range pkgsOfDir { - names[p.Name]++ - } - if len(names) != 1 { - // some files are in different packages - return - } - var oldName string - for k := range names { - oldName = k - } - if newName == oldName { - return - } - // We might have a case where all of the package names in the directory are - // the same, but the overlay file is for an x test, which belongs to its - // own package. If the x test does not yet exist on disk, we may not yet - // have its package name on disk, but we should not rename the packages. - // - // We use a heuristic to determine if this file belongs to an x test: - // The test file should have a package name whose package name has a _test - // suffix or looks like "newName_test". - maybeXTest := strings.HasPrefix(oldName+"_test", newName) || strings.HasSuffix(newName, "_test") - if isTestFile && maybeXTest { - return - } - for _, p := range pkgsOfDir { - p.Name = newName - } -} - -// This function is copy-pasted from -// https://github.com/golang/go/blob/9706f510a5e2754595d716bd64be8375997311fb/src/cmd/go/internal/search/search.go#L360. -// It should be deleted when we remove support for overlays from go/packages. -// -// NOTE: This does not handle any ./... or ./ style queries, as this function -// doesn't know the working directory. -// -// matchPattern(pattern)(name) reports whether -// name matches pattern. Pattern is a limited glob -// pattern in which '...' means 'any string' and there -// is no other special syntax. -// Unfortunately, there are two special cases. Quoting "go help packages": -// -// First, /... at the end of the pattern can match an empty string, -// so that net/... matches both net and packages in its subdirectories, like net/http. -// Second, any slash-separated pattern element containing a wildcard never -// participates in a match of the "vendor" element in the path of a vendored -// package, so that ./... does not match packages in subdirectories of -// ./vendor or ./mycode/vendor, but ./vendor/... and ./mycode/vendor/... do. -// Note, however, that a directory named vendor that itself contains code -// is not a vendored package: cmd/vendor would be a command named vendor, -// and the pattern cmd/... matches it. -func matchPattern(pattern string) func(name string) bool { - // Convert pattern to regular expression. - // The strategy for the trailing /... is to nest it in an explicit ? expression. - // The strategy for the vendor exclusion is to change the unmatchable - // vendor strings to a disallowed code point (vendorChar) and to use - // "(anything but that codepoint)*" as the implementation of the ... wildcard. - // This is a bit complicated but the obvious alternative, - // namely a hand-written search like in most shell glob matchers, - // is too easy to make accidentally exponential. - // Using package regexp guarantees linear-time matching. - - const vendorChar = "\x00" - - if strings.Contains(pattern, vendorChar) { - return func(name string) bool { return false } - } - - re := regexp.QuoteMeta(pattern) - re = replaceVendor(re, vendorChar) - switch { - case strings.HasSuffix(re, `/`+vendorChar+`/\.\.\.`): - re = strings.TrimSuffix(re, `/`+vendorChar+`/\.\.\.`) + `(/vendor|/` + vendorChar + `/\.\.\.)` - case re == vendorChar+`/\.\.\.`: - re = `(/vendor|/` + vendorChar + `/\.\.\.)` - case strings.HasSuffix(re, `/\.\.\.`): - re = strings.TrimSuffix(re, `/\.\.\.`) + `(/\.\.\.)?` - } - re = strings.ReplaceAll(re, `\.\.\.`, `[^`+vendorChar+`]*`) - - reg := regexp.MustCompile(`^` + re + `$`) - - return func(name string) bool { - if strings.Contains(name, vendorChar) { - return false - } - return reg.MatchString(replaceVendor(name, vendorChar)) - } -} - -// replaceVendor returns the result of replacing -// non-trailing vendor path elements in x with repl. -func replaceVendor(x, repl string) string { - if !strings.Contains(x, "vendor") { - return x - } - elem := strings.Split(x, "/") - for i := 0; i < len(elem)-1; i++ { - if elem[i] == "vendor" { - elem[i] = repl - } - } - return strings.Join(elem, "/") -} diff --git a/vendor/golang.org/x/tools/go/packages/loadmode_string.go b/vendor/golang.org/x/tools/go/packages/loadmode_string.go deleted file mode 100644 index 7ea37e7..0000000 --- a/vendor/golang.org/x/tools/go/packages/loadmode_string.go +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2019 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 packages - -import ( - "fmt" - "strings" -) - -var allModes = []LoadMode{ - NeedName, - NeedFiles, - NeedCompiledGoFiles, - NeedImports, - NeedDeps, - NeedExportsFile, - NeedTypes, - NeedSyntax, - NeedTypesInfo, - NeedTypesSizes, -} - -var modeStrings = []string{ - "NeedName", - "NeedFiles", - "NeedCompiledGoFiles", - "NeedImports", - "NeedDeps", - "NeedExportsFile", - "NeedTypes", - "NeedSyntax", - "NeedTypesInfo", - "NeedTypesSizes", -} - -func (mod LoadMode) String() string { - m := mod - if m == 0 { - return "LoadMode(0)" - } - var out []string - for i, x := range allModes { - if x > m { - break - } - if (m & x) != 0 { - out = append(out, modeStrings[i]) - m = m ^ x - } - } - if m != 0 { - out = append(out, "Unknown") - } - return fmt.Sprintf("LoadMode(%s)", strings.Join(out, "|")) -} diff --git a/vendor/golang.org/x/tools/go/packages/packages.go b/vendor/golang.org/x/tools/go/packages/packages.go deleted file mode 100644 index 1b5424e..0000000 --- a/vendor/golang.org/x/tools/go/packages/packages.go +++ /dev/null @@ -1,1244 +0,0 @@ -// Copyright 2018 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 packages - -// See doc.go for package documentation and implementation notes. - -import ( - "context" - "encoding/json" - "fmt" - "go/ast" - "go/parser" - "go/scanner" - "go/token" - "go/types" - "io/ioutil" - "log" - "os" - "path/filepath" - "strings" - "sync" - "time" - - "golang.org/x/tools/go/gcexportdata" - "golang.org/x/tools/internal/gocommand" - "golang.org/x/tools/internal/packagesinternal" - "golang.org/x/tools/internal/typeparams" - "golang.org/x/tools/internal/typesinternal" -) - -// A LoadMode controls the amount of detail to return when loading. -// The bits below can be combined to specify which fields should be -// filled in the result packages. -// The zero value is a special case, equivalent to combining -// the NeedName, NeedFiles, and NeedCompiledGoFiles bits. -// ID and Errors (if present) will always be filled. -// Load may return more information than requested. -type LoadMode int - -// TODO(matloob): When a V2 of go/packages is released, rename NeedExportsFile to -// NeedExportFile to make it consistent with the Package field it's adding. - -const ( - // NeedName adds Name and PkgPath. - NeedName LoadMode = 1 << iota - - // NeedFiles adds GoFiles and OtherFiles. - NeedFiles - - // NeedCompiledGoFiles adds CompiledGoFiles. - NeedCompiledGoFiles - - // NeedImports adds Imports. If NeedDeps is not set, the Imports field will contain - // "placeholder" Packages with only the ID set. - NeedImports - - // NeedDeps adds the fields requested by the LoadMode in the packages in Imports. - NeedDeps - - // NeedExportsFile adds ExportFile. - NeedExportsFile - - // NeedTypes adds Types, Fset, and IllTyped. - NeedTypes - - // NeedSyntax adds Syntax. - NeedSyntax - - // NeedTypesInfo adds TypesInfo. - NeedTypesInfo - - // NeedTypesSizes adds TypesSizes. - NeedTypesSizes - - // typecheckCgo enables full support for type checking cgo. Requires Go 1.15+. - // Modifies CompiledGoFiles and Types, and has no effect on its own. - typecheckCgo - - // NeedModule adds Module. - NeedModule -) - -const ( - // Deprecated: LoadFiles exists for historical compatibility - // and should not be used. Please directly specify the needed fields using the Need values. - LoadFiles = NeedName | NeedFiles | NeedCompiledGoFiles - - // Deprecated: LoadImports exists for historical compatibility - // and should not be used. Please directly specify the needed fields using the Need values. - LoadImports = LoadFiles | NeedImports - - // Deprecated: LoadTypes exists for historical compatibility - // and should not be used. Please directly specify the needed fields using the Need values. - LoadTypes = LoadImports | NeedTypes | NeedTypesSizes - - // Deprecated: LoadSyntax exists for historical compatibility - // and should not be used. Please directly specify the needed fields using the Need values. - LoadSyntax = LoadTypes | NeedSyntax | NeedTypesInfo - - // Deprecated: LoadAllSyntax exists for historical compatibility - // and should not be used. Please directly specify the needed fields using the Need values. - LoadAllSyntax = LoadSyntax | NeedDeps -) - -// A Config specifies details about how packages should be loaded. -// The zero value is a valid configuration. -// Calls to Load do not modify this struct. -type Config struct { - // Mode controls the level of information returned for each package. - Mode LoadMode - - // Context specifies the context for the load operation. - // If the context is cancelled, the loader may stop early - // and return an ErrCancelled error. - // If Context is nil, the load cannot be cancelled. - Context context.Context - - // Logf is the logger for the config. - // If the user provides a logger, debug logging is enabled. - // If the GOPACKAGESDEBUG environment variable is set to true, - // but the logger is nil, default to log.Printf. - Logf func(format string, args ...interface{}) - - // Dir is the directory in which to run the build system's query tool - // that provides information about the packages. - // If Dir is empty, the tool is run in the current directory. - Dir string - - // Env is the environment to use when invoking the build system's query tool. - // If Env is nil, the current environment is used. - // As in os/exec's Cmd, only the last value in the slice for - // each environment key is used. To specify the setting of only - // a few variables, append to the current environment, as in: - // - // opt.Env = append(os.Environ(), "GOOS=plan9", "GOARCH=386") - // - Env []string - - // gocmdRunner guards go command calls from concurrency errors. - gocmdRunner *gocommand.Runner - - // BuildFlags is a list of command-line flags to be passed through to - // the build system's query tool. - BuildFlags []string - - // modFile will be used for -modfile in go command invocations. - modFile string - - // modFlag will be used for -modfile in go command invocations. - modFlag string - - // Fset provides source position information for syntax trees and types. - // If Fset is nil, Load will use a new fileset, but preserve Fset's value. - Fset *token.FileSet - - // ParseFile is called to read and parse each file - // when preparing a package's type-checked syntax tree. - // It must be safe to call ParseFile simultaneously from multiple goroutines. - // If ParseFile is nil, the loader will uses parser.ParseFile. - // - // ParseFile should parse the source from src and use filename only for - // recording position information. - // - // An application may supply a custom implementation of ParseFile - // to change the effective file contents or the behavior of the parser, - // or to modify the syntax tree. For example, selectively eliminating - // unwanted function bodies can significantly accelerate type checking. - ParseFile func(fset *token.FileSet, filename string, src []byte) (*ast.File, error) - - // If Tests is set, the loader includes not just the packages - // matching a particular pattern but also any related test packages, - // including test-only variants of the package and the test executable. - // - // For example, when using the go command, loading "fmt" with Tests=true - // returns four packages, with IDs "fmt" (the standard package), - // "fmt [fmt.test]" (the package as compiled for the test), - // "fmt_test" (the test functions from source files in package fmt_test), - // and "fmt.test" (the test binary). - // - // In build systems with explicit names for tests, - // setting Tests may have no effect. - Tests bool - - // Overlay provides a mapping of absolute file paths to file contents. - // If the file with the given path already exists, the parser will use the - // alternative file contents provided by the map. - // - // Overlays provide incomplete support for when a given file doesn't - // already exist on disk. See the package doc above for more details. - Overlay map[string][]byte -} - -// driver is the type for functions that query the build system for the -// packages named by the patterns. -type driver func(cfg *Config, patterns ...string) (*driverResponse, error) - -// driverResponse contains the results for a driver query. -type driverResponse struct { - // NotHandled is returned if the request can't be handled by the current - // driver. If an external driver returns a response with NotHandled, the - // rest of the driverResponse is ignored, and go/packages will fallback - // to the next driver. If go/packages is extended in the future to support - // lists of multiple drivers, go/packages will fall back to the next driver. - NotHandled bool - - // Sizes, if not nil, is the types.Sizes to use when type checking. - Sizes *types.StdSizes - - // Roots is the set of package IDs that make up the root packages. - // We have to encode this separately because when we encode a single package - // we cannot know if it is one of the roots as that requires knowledge of the - // graph it is part of. - Roots []string `json:",omitempty"` - - // Packages is the full set of packages in the graph. - // The packages are not connected into a graph. - // The Imports if populated will be stubs that only have their ID set. - // Imports will be connected and then type and syntax information added in a - // later pass (see refine). - Packages []*Package -} - -// Load loads and returns the Go packages named by the given patterns. -// -// Config specifies loading options; -// nil behaves the same as an empty Config. -// -// Load returns an error if any of the patterns was invalid -// as defined by the underlying build system. -// It may return an empty list of packages without an error, -// for instance for an empty expansion of a valid wildcard. -// Errors associated with a particular package are recorded in the -// corresponding Package's Errors list, and do not cause Load to -// return an error. Clients may need to handle such errors before -// proceeding with further analysis. The PrintErrors function is -// provided for convenient display of all errors. -func Load(cfg *Config, patterns ...string) ([]*Package, error) { - l := newLoader(cfg) - response, err := defaultDriver(&l.Config, patterns...) - if err != nil { - return nil, err - } - l.sizes = response.Sizes - return l.refine(response.Roots, response.Packages...) -} - -// defaultDriver is a driver that implements go/packages' fallback behavior. -// It will try to request to an external driver, if one exists. If there's -// no external driver, or the driver returns a response with NotHandled set, -// defaultDriver will fall back to the go list driver. -func defaultDriver(cfg *Config, patterns ...string) (*driverResponse, error) { - driver := findExternalDriver(cfg) - if driver == nil { - driver = goListDriver - } - response, err := driver(cfg, patterns...) - if err != nil { - return response, err - } else if response.NotHandled { - return goListDriver(cfg, patterns...) - } - return response, nil -} - -// A Package describes a loaded Go package. -type Package struct { - // ID is a unique identifier for a package, - // in a syntax provided by the underlying build system. - // - // Because the syntax varies based on the build system, - // clients should treat IDs as opaque and not attempt to - // interpret them. - ID string - - // Name is the package name as it appears in the package source code. - Name string - - // PkgPath is the package path as used by the go/types package. - PkgPath string - - // Errors contains any errors encountered querying the metadata - // of the package, or while parsing or type-checking its files. - Errors []Error - - // GoFiles lists the absolute file paths of the package's Go source files. - GoFiles []string - - // CompiledGoFiles lists the absolute file paths of the package's source - // files that are suitable for type checking. - // This may differ from GoFiles if files are processed before compilation. - CompiledGoFiles []string - - // OtherFiles lists the absolute file paths of the package's non-Go source files, - // including assembly, C, C++, Fortran, Objective-C, SWIG, and so on. - OtherFiles []string - - // IgnoredFiles lists source files that are not part of the package - // using the current build configuration but that might be part of - // the package using other build configurations. - IgnoredFiles []string - - // ExportFile is the absolute path to a file containing type - // information for the package as provided by the build system. - ExportFile string - - // Imports maps import paths appearing in the package's Go source files - // to corresponding loaded Packages. - Imports map[string]*Package - - // Types provides type information for the package. - // The NeedTypes LoadMode bit sets this field for packages matching the - // patterns; type information for dependencies may be missing or incomplete, - // unless NeedDeps and NeedImports are also set. - Types *types.Package - - // Fset provides position information for Types, TypesInfo, and Syntax. - // It is set only when Types is set. - Fset *token.FileSet - - // IllTyped indicates whether the package or any dependency contains errors. - // It is set only when Types is set. - IllTyped bool - - // Syntax is the package's syntax trees, for the files listed in CompiledGoFiles. - // - // The NeedSyntax LoadMode bit populates this field for packages matching the patterns. - // If NeedDeps and NeedImports are also set, this field will also be populated - // for dependencies. - // - // Syntax is kept in the same order as CompiledGoFiles, with the caveat that nils are - // removed. If parsing returned nil, Syntax may be shorter than CompiledGoFiles. - Syntax []*ast.File - - // TypesInfo provides type information about the package's syntax trees. - // It is set only when Syntax is set. - TypesInfo *types.Info - - // TypesSizes provides the effective size function for types in TypesInfo. - TypesSizes types.Sizes - - // forTest is the package under test, if any. - forTest string - - // depsErrors is the DepsErrors field from the go list response, if any. - depsErrors []*packagesinternal.PackageError - - // module is the module information for the package if it exists. - Module *Module -} - -// Module provides module information for a package. -type Module struct { - Path string // module path - Version string // module version - Replace *Module // replaced by this module - Time *time.Time // time version was created - Main bool // is this the main module? - Indirect bool // is this module only an indirect dependency of main module? - Dir string // directory holding files for this module, if any - GoMod string // path to go.mod file used when loading this module, if any - GoVersion string // go version used in module - Error *ModuleError // error loading module -} - -// ModuleError holds errors loading a module. -type ModuleError struct { - Err string // the error itself -} - -func init() { - packagesinternal.GetForTest = func(p interface{}) string { - return p.(*Package).forTest - } - packagesinternal.GetDepsErrors = func(p interface{}) []*packagesinternal.PackageError { - return p.(*Package).depsErrors - } - packagesinternal.GetGoCmdRunner = func(config interface{}) *gocommand.Runner { - return config.(*Config).gocmdRunner - } - packagesinternal.SetGoCmdRunner = func(config interface{}, runner *gocommand.Runner) { - config.(*Config).gocmdRunner = runner - } - packagesinternal.SetModFile = func(config interface{}, value string) { - config.(*Config).modFile = value - } - packagesinternal.SetModFlag = func(config interface{}, value string) { - config.(*Config).modFlag = value - } - packagesinternal.TypecheckCgo = int(typecheckCgo) -} - -// An Error describes a problem with a package's metadata, syntax, or types. -type Error struct { - Pos string // "file:line:col" or "file:line" or "" or "-" - Msg string - Kind ErrorKind -} - -// ErrorKind describes the source of the error, allowing the user to -// differentiate between errors generated by the driver, the parser, or the -// type-checker. -type ErrorKind int - -const ( - UnknownError ErrorKind = iota - ListError - ParseError - TypeError -) - -func (err Error) Error() string { - pos := err.Pos - if pos == "" { - pos = "-" // like token.Position{}.String() - } - return pos + ": " + err.Msg -} - -// flatPackage is the JSON form of Package -// It drops all the type and syntax fields, and transforms the Imports -// -// TODO(adonovan): identify this struct with Package, effectively -// publishing the JSON protocol. -type flatPackage struct { - ID string - Name string `json:",omitempty"` - PkgPath string `json:",omitempty"` - Errors []Error `json:",omitempty"` - GoFiles []string `json:",omitempty"` - CompiledGoFiles []string `json:",omitempty"` - OtherFiles []string `json:",omitempty"` - IgnoredFiles []string `json:",omitempty"` - ExportFile string `json:",omitempty"` - Imports map[string]string `json:",omitempty"` -} - -// MarshalJSON returns the Package in its JSON form. -// For the most part, the structure fields are written out unmodified, and -// the type and syntax fields are skipped. -// The imports are written out as just a map of path to package id. -// The errors are written using a custom type that tries to preserve the -// structure of error types we know about. -// -// This method exists to enable support for additional build systems. It is -// not intended for use by clients of the API and we may change the format. -func (p *Package) MarshalJSON() ([]byte, error) { - flat := &flatPackage{ - ID: p.ID, - Name: p.Name, - PkgPath: p.PkgPath, - Errors: p.Errors, - GoFiles: p.GoFiles, - CompiledGoFiles: p.CompiledGoFiles, - OtherFiles: p.OtherFiles, - IgnoredFiles: p.IgnoredFiles, - ExportFile: p.ExportFile, - } - if len(p.Imports) > 0 { - flat.Imports = make(map[string]string, len(p.Imports)) - for path, ipkg := range p.Imports { - flat.Imports[path] = ipkg.ID - } - } - return json.Marshal(flat) -} - -// UnmarshalJSON reads in a Package from its JSON format. -// See MarshalJSON for details about the format accepted. -func (p *Package) UnmarshalJSON(b []byte) error { - flat := &flatPackage{} - if err := json.Unmarshal(b, &flat); err != nil { - return err - } - *p = Package{ - ID: flat.ID, - Name: flat.Name, - PkgPath: flat.PkgPath, - Errors: flat.Errors, - GoFiles: flat.GoFiles, - CompiledGoFiles: flat.CompiledGoFiles, - OtherFiles: flat.OtherFiles, - ExportFile: flat.ExportFile, - } - if len(flat.Imports) > 0 { - p.Imports = make(map[string]*Package, len(flat.Imports)) - for path, id := range flat.Imports { - p.Imports[path] = &Package{ID: id} - } - } - return nil -} - -func (p *Package) String() string { return p.ID } - -// loaderPackage augments Package with state used during the loading phase -type loaderPackage struct { - *Package - importErrors map[string]error // maps each bad import to its error - loadOnce sync.Once - color uint8 // for cycle detection - needsrc bool // load from source (Mode >= LoadTypes) - needtypes bool // type information is either requested or depended on - initial bool // package was matched by a pattern -} - -// loader holds the working state of a single call to load. -type loader struct { - pkgs map[string]*loaderPackage - Config - sizes types.Sizes - parseCache map[string]*parseValue - parseCacheMu sync.Mutex - exportMu sync.Mutex // enforces mutual exclusion of exportdata operations - - // Config.Mode contains the implied mode (see impliedLoadMode). - // Implied mode contains all the fields we need the data for. - // In requestedMode there are the actually requested fields. - // We'll zero them out before returning packages to the user. - // This makes it easier for us to get the conditions where - // we need certain modes right. - requestedMode LoadMode -} - -type parseValue struct { - f *ast.File - err error - ready chan struct{} -} - -func newLoader(cfg *Config) *loader { - ld := &loader{ - parseCache: map[string]*parseValue{}, - } - if cfg != nil { - ld.Config = *cfg - // If the user has provided a logger, use it. - ld.Config.Logf = cfg.Logf - } - if ld.Config.Logf == nil { - // If the GOPACKAGESDEBUG environment variable is set to true, - // but the user has not provided a logger, default to log.Printf. - if debug { - ld.Config.Logf = log.Printf - } else { - ld.Config.Logf = func(format string, args ...interface{}) {} - } - } - if ld.Config.Mode == 0 { - ld.Config.Mode = NeedName | NeedFiles | NeedCompiledGoFiles // Preserve zero behavior of Mode for backwards compatibility. - } - if ld.Config.Env == nil { - ld.Config.Env = os.Environ() - } - if ld.Config.gocmdRunner == nil { - ld.Config.gocmdRunner = &gocommand.Runner{} - } - if ld.Context == nil { - ld.Context = context.Background() - } - if ld.Dir == "" { - if dir, err := os.Getwd(); err == nil { - ld.Dir = dir - } - } - - // Save the actually requested fields. We'll zero them out before returning packages to the user. - ld.requestedMode = ld.Mode - ld.Mode = impliedLoadMode(ld.Mode) - - if ld.Mode&NeedTypes != 0 || ld.Mode&NeedSyntax != 0 { - if ld.Fset == nil { - ld.Fset = token.NewFileSet() - } - - // ParseFile is required even in LoadTypes mode - // because we load source if export data is missing. - if ld.ParseFile == nil { - ld.ParseFile = func(fset *token.FileSet, filename string, src []byte) (*ast.File, error) { - const mode = parser.AllErrors | parser.ParseComments - return parser.ParseFile(fset, filename, src, mode) - } - } - } - - return ld -} - -// refine connects the supplied packages into a graph and then adds type and -// and syntax information as requested by the LoadMode. -func (ld *loader) refine(roots []string, list ...*Package) ([]*Package, error) { - rootMap := make(map[string]int, len(roots)) - for i, root := range roots { - rootMap[root] = i - } - ld.pkgs = make(map[string]*loaderPackage) - // first pass, fixup and build the map and roots - var initial = make([]*loaderPackage, len(roots)) - for _, pkg := range list { - rootIndex := -1 - if i, found := rootMap[pkg.ID]; found { - rootIndex = i - } - - // Overlays can invalidate export data. - // TODO(matloob): make this check fine-grained based on dependencies on overlaid files - exportDataInvalid := len(ld.Overlay) > 0 || pkg.ExportFile == "" && pkg.PkgPath != "unsafe" - // This package needs type information if the caller requested types and the package is - // either a root, or it's a non-root and the user requested dependencies ... - needtypes := (ld.Mode&NeedTypes|NeedTypesInfo != 0 && (rootIndex >= 0 || ld.Mode&NeedDeps != 0)) - // This package needs source if the call requested source (or types info, which implies source) - // and the package is either a root, or itas a non- root and the user requested dependencies... - needsrc := ((ld.Mode&(NeedSyntax|NeedTypesInfo) != 0 && (rootIndex >= 0 || ld.Mode&NeedDeps != 0)) || - // ... or if we need types and the exportData is invalid. We fall back to (incompletely) - // typechecking packages from source if they fail to compile. - (ld.Mode&NeedTypes|NeedTypesInfo != 0 && exportDataInvalid)) && pkg.PkgPath != "unsafe" - lpkg := &loaderPackage{ - Package: pkg, - needtypes: needtypes, - needsrc: needsrc, - } - ld.pkgs[lpkg.ID] = lpkg - if rootIndex >= 0 { - initial[rootIndex] = lpkg - lpkg.initial = true - } - } - for i, root := range roots { - if initial[i] == nil { - return nil, fmt.Errorf("root package %v is missing", root) - } - } - - // Materialize the import graph. - - const ( - white = 0 // new - grey = 1 // in progress - black = 2 // complete - ) - - // visit traverses the import graph, depth-first, - // and materializes the graph as Packages.Imports. - // - // Valid imports are saved in the Packages.Import map. - // Invalid imports (cycles and missing nodes) are saved in the importErrors map. - // Thus, even in the presence of both kinds of errors, the Import graph remains a DAG. - // - // visit returns whether the package needs src or has a transitive - // dependency on a package that does. These are the only packages - // for which we load source code. - var stack []*loaderPackage - var visit func(lpkg *loaderPackage) bool - var srcPkgs []*loaderPackage - visit = func(lpkg *loaderPackage) bool { - switch lpkg.color { - case black: - return lpkg.needsrc - case grey: - panic("internal error: grey node") - } - lpkg.color = grey - stack = append(stack, lpkg) // push - stubs := lpkg.Imports // the structure form has only stubs with the ID in the Imports - // If NeedImports isn't set, the imports fields will all be zeroed out. - if ld.Mode&NeedImports != 0 { - lpkg.Imports = make(map[string]*Package, len(stubs)) - for importPath, ipkg := range stubs { - var importErr error - imp := ld.pkgs[ipkg.ID] - if imp == nil { - // (includes package "C" when DisableCgo) - importErr = fmt.Errorf("missing package: %q", ipkg.ID) - } else if imp.color == grey { - importErr = fmt.Errorf("import cycle: %s", stack) - } - if importErr != nil { - if lpkg.importErrors == nil { - lpkg.importErrors = make(map[string]error) - } - lpkg.importErrors[importPath] = importErr - continue - } - - if visit(imp) { - lpkg.needsrc = true - } - lpkg.Imports[importPath] = imp.Package - } - } - if lpkg.needsrc { - srcPkgs = append(srcPkgs, lpkg) - } - if ld.Mode&NeedTypesSizes != 0 { - lpkg.TypesSizes = ld.sizes - } - stack = stack[:len(stack)-1] // pop - lpkg.color = black - - return lpkg.needsrc - } - - if ld.Mode&NeedImports == 0 { - // We do this to drop the stub import packages that we are not even going to try to resolve. - for _, lpkg := range initial { - lpkg.Imports = nil - } - } else { - // For each initial package, create its import DAG. - for _, lpkg := range initial { - visit(lpkg) - } - } - if ld.Mode&NeedImports != 0 && ld.Mode&NeedTypes != 0 { - for _, lpkg := range srcPkgs { - // Complete type information is required for the - // immediate dependencies of each source package. - for _, ipkg := range lpkg.Imports { - imp := ld.pkgs[ipkg.ID] - imp.needtypes = true - } - } - } - // Load type data and syntax if needed, starting at - // the initial packages (roots of the import DAG). - if ld.Mode&NeedTypes != 0 || ld.Mode&NeedSyntax != 0 { - var wg sync.WaitGroup - for _, lpkg := range initial { - wg.Add(1) - go func(lpkg *loaderPackage) { - ld.loadRecursive(lpkg) - wg.Done() - }(lpkg) - } - wg.Wait() - } - - result := make([]*Package, len(initial)) - for i, lpkg := range initial { - result[i] = lpkg.Package - } - for i := range ld.pkgs { - // Clear all unrequested fields, - // to catch programs that use more than they request. - if ld.requestedMode&NeedName == 0 { - ld.pkgs[i].Name = "" - ld.pkgs[i].PkgPath = "" - } - if ld.requestedMode&NeedFiles == 0 { - ld.pkgs[i].GoFiles = nil - ld.pkgs[i].OtherFiles = nil - ld.pkgs[i].IgnoredFiles = nil - } - if ld.requestedMode&NeedCompiledGoFiles == 0 { - ld.pkgs[i].CompiledGoFiles = nil - } - if ld.requestedMode&NeedImports == 0 { - ld.pkgs[i].Imports = nil - } - if ld.requestedMode&NeedExportsFile == 0 { - ld.pkgs[i].ExportFile = "" - } - if ld.requestedMode&NeedTypes == 0 { - ld.pkgs[i].Types = nil - ld.pkgs[i].Fset = nil - ld.pkgs[i].IllTyped = false - } - if ld.requestedMode&NeedSyntax == 0 { - ld.pkgs[i].Syntax = nil - } - if ld.requestedMode&NeedTypesInfo == 0 { - ld.pkgs[i].TypesInfo = nil - } - if ld.requestedMode&NeedTypesSizes == 0 { - ld.pkgs[i].TypesSizes = nil - } - if ld.requestedMode&NeedModule == 0 { - ld.pkgs[i].Module = nil - } - } - - return result, nil -} - -// loadRecursive loads the specified package and its dependencies, -// recursively, in parallel, in topological order. -// It is atomic and idempotent. -// Precondition: ld.Mode&NeedTypes. -func (ld *loader) loadRecursive(lpkg *loaderPackage) { - lpkg.loadOnce.Do(func() { - // Load the direct dependencies, in parallel. - var wg sync.WaitGroup - for _, ipkg := range lpkg.Imports { - imp := ld.pkgs[ipkg.ID] - wg.Add(1) - go func(imp *loaderPackage) { - ld.loadRecursive(imp) - wg.Done() - }(imp) - } - wg.Wait() - ld.loadPackage(lpkg) - }) -} - -// loadPackage loads the specified package. -// It must be called only once per Package, -// after immediate dependencies are loaded. -// Precondition: ld.Mode & NeedTypes. -func (ld *loader) loadPackage(lpkg *loaderPackage) { - if lpkg.PkgPath == "unsafe" { - // Fill in the blanks to avoid surprises. - lpkg.Types = types.Unsafe - lpkg.Fset = ld.Fset - lpkg.Syntax = []*ast.File{} - lpkg.TypesInfo = new(types.Info) - lpkg.TypesSizes = ld.sizes - return - } - - // Call NewPackage directly with explicit name. - // This avoids skew between golist and go/types when the files' - // package declarations are inconsistent. - lpkg.Types = types.NewPackage(lpkg.PkgPath, lpkg.Name) - lpkg.Fset = ld.Fset - - // Subtle: we populate all Types fields with an empty Package - // before loading export data so that export data processing - // never has to create a types.Package for an indirect dependency, - // which would then require that such created packages be explicitly - // inserted back into the Import graph as a final step after export data loading. - // The Diamond test exercises this case. - if !lpkg.needtypes && !lpkg.needsrc { - return - } - if !lpkg.needsrc { - ld.loadFromExportData(lpkg) - return // not a source package, don't get syntax trees - } - - appendError := func(err error) { - // Convert various error types into the one true Error. - var errs []Error - switch err := err.(type) { - case Error: - // from driver - errs = append(errs, err) - - case *os.PathError: - // from parser - errs = append(errs, Error{ - Pos: err.Path + ":1", - Msg: err.Err.Error(), - Kind: ParseError, - }) - - case scanner.ErrorList: - // from parser - for _, err := range err { - errs = append(errs, Error{ - Pos: err.Pos.String(), - Msg: err.Msg, - Kind: ParseError, - }) - } - - case types.Error: - // from type checker - errs = append(errs, Error{ - Pos: err.Fset.Position(err.Pos).String(), - Msg: err.Msg, - Kind: TypeError, - }) - - default: - // unexpected impoverished error from parser? - errs = append(errs, Error{ - Pos: "-", - Msg: err.Error(), - Kind: UnknownError, - }) - - // If you see this error message, please file a bug. - log.Printf("internal error: error %q (%T) without position", err, err) - } - - lpkg.Errors = append(lpkg.Errors, errs...) - } - - if ld.Config.Mode&NeedTypes != 0 && len(lpkg.CompiledGoFiles) == 0 && lpkg.ExportFile != "" { - // The config requested loading sources and types, but sources are missing. - // Add an error to the package and fall back to loading from export data. - appendError(Error{"-", fmt.Sprintf("sources missing for package %s", lpkg.ID), ParseError}) - ld.loadFromExportData(lpkg) - return // can't get syntax trees for this package - } - - files, errs := ld.parseFiles(lpkg.CompiledGoFiles) - for _, err := range errs { - appendError(err) - } - - lpkg.Syntax = files - if ld.Config.Mode&NeedTypes == 0 { - return - } - - lpkg.TypesInfo = &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), - } - typeparams.InitInstanceInfo(lpkg.TypesInfo) - lpkg.TypesSizes = ld.sizes - - importer := importerFunc(func(path string) (*types.Package, error) { - if path == "unsafe" { - return types.Unsafe, nil - } - - // The imports map is keyed by import path. - ipkg := lpkg.Imports[path] - if ipkg == nil { - if err := lpkg.importErrors[path]; err != nil { - return nil, err - } - // There was skew between the metadata and the - // import declarations, likely due to an edit - // race, or because the ParseFile feature was - // used to supply alternative file contents. - return nil, fmt.Errorf("no metadata for %s", path) - } - - if ipkg.Types != nil && ipkg.Types.Complete() { - return ipkg.Types, nil - } - log.Fatalf("internal error: package %q without types was imported from %q", path, lpkg) - panic("unreachable") - }) - - // type-check - tc := &types.Config{ - Importer: importer, - - // Type-check bodies of functions only in non-initial packages. - // Example: for import graph A->B->C and initial packages {A,C}, - // we can ignore function bodies in B. - IgnoreFuncBodies: ld.Mode&NeedDeps == 0 && !lpkg.initial, - - Error: appendError, - Sizes: ld.sizes, - } - if (ld.Mode & typecheckCgo) != 0 { - if !typesinternal.SetUsesCgo(tc) { - appendError(Error{ - Msg: "typecheckCgo requires Go 1.15+", - Kind: ListError, - }) - return - } - } - types.NewChecker(tc, ld.Fset, lpkg.Types, lpkg.TypesInfo).Files(lpkg.Syntax) - - lpkg.importErrors = nil // no longer needed - - // If !Cgo, the type-checker uses FakeImportC mode, so - // it doesn't invoke the importer for import "C", - // nor report an error for the import, - // or for any undefined C.f reference. - // We must detect this explicitly and correctly - // mark the package as IllTyped (by reporting an error). - // TODO(adonovan): if these errors are annoying, - // we could just set IllTyped quietly. - if tc.FakeImportC { - outer: - for _, f := range lpkg.Syntax { - for _, imp := range f.Imports { - if imp.Path.Value == `"C"` { - err := types.Error{Fset: ld.Fset, Pos: imp.Pos(), Msg: `import "C" ignored`} - appendError(err) - break outer - } - } - } - } - - // Record accumulated errors. - illTyped := len(lpkg.Errors) > 0 - if !illTyped { - for _, imp := range lpkg.Imports { - if imp.IllTyped { - illTyped = true - break - } - } - } - lpkg.IllTyped = illTyped -} - -// An importFunc is an implementation of the single-method -// types.Importer interface based on a function value. -type importerFunc func(path string) (*types.Package, error) - -func (f importerFunc) Import(path string) (*types.Package, error) { return f(path) } - -// We use a counting semaphore to limit -// the number of parallel I/O calls per process. -var ioLimit = make(chan bool, 20) - -func (ld *loader) parseFile(filename string) (*ast.File, error) { - ld.parseCacheMu.Lock() - v, ok := ld.parseCache[filename] - if ok { - // cache hit - ld.parseCacheMu.Unlock() - <-v.ready - } else { - // cache miss - v = &parseValue{ready: make(chan struct{})} - ld.parseCache[filename] = v - ld.parseCacheMu.Unlock() - - var src []byte - for f, contents := range ld.Config.Overlay { - if sameFile(f, filename) { - src = contents - } - } - var err error - if src == nil { - ioLimit <- true // wait - src, err = ioutil.ReadFile(filename) - <-ioLimit // signal - } - if err != nil { - v.err = err - } else { - v.f, v.err = ld.ParseFile(ld.Fset, filename, src) - } - - close(v.ready) - } - return v.f, v.err -} - -// parseFiles reads and parses the Go source files 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. -// -// Because files are scanned in parallel, the token.Pos -// positions of the resulting ast.Files are not ordered. -// -func (ld *loader) parseFiles(filenames []string) ([]*ast.File, []error) { - var wg sync.WaitGroup - n := len(filenames) - parsed := make([]*ast.File, n) - errors := make([]error, n) - for i, file := range filenames { - if ld.Config.Context.Err() != nil { - parsed[i] = nil - errors[i] = ld.Config.Context.Err() - continue - } - wg.Add(1) - go func(i int, filename string) { - parsed[i], errors[i] = ld.parseFile(filename) - wg.Done() - }(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 -} - -// sameFile returns true if x and y have the same basename and denote -// the same file. -// -func sameFile(x, y string) bool { - if x == y { - // It could be the case that y doesn't exist. - // For instance, it may be an overlay file that - // hasn't been written to disk. To handle that case - // let x == y through. (We added the exact absolute path - // string to the CompiledGoFiles list, so the unwritten - // overlay case implies x==y.) - return true - } - if strings.EqualFold(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 -} - -// loadFromExportData returns type information for the specified -// package, loading it from an export data file on the first request. -func (ld *loader) loadFromExportData(lpkg *loaderPackage) (*types.Package, error) { - if lpkg.PkgPath == "" { - log.Fatalf("internal error: Package %s has no PkgPath", lpkg) - } - - // Because gcexportdata.Read has the potential to create or - // modify the types.Package for each node in the transitive - // closure of dependencies of lpkg, all exportdata operations - // must be sequential. (Finer-grained locking would require - // changes to the gcexportdata API.) - // - // The exportMu lock guards the Package.Pkg field and the - // types.Package it points to, for each Package in the graph. - // - // Not all accesses to Package.Pkg need to be protected by exportMu: - // graph ordering ensures that direct dependencies of source - // packages are fully loaded before the importer reads their Pkg field. - ld.exportMu.Lock() - defer ld.exportMu.Unlock() - - if tpkg := lpkg.Types; tpkg != nil && tpkg.Complete() { - return tpkg, nil // cache hit - } - - lpkg.IllTyped = true // fail safe - - if lpkg.ExportFile == "" { - // Errors while building export data will have been printed to stderr. - return nil, fmt.Errorf("no export data file") - } - f, err := os.Open(lpkg.ExportFile) - if err != nil { - return nil, err - } - defer f.Close() - - // Read gc export data. - // - // We don't currently support gccgo export data because all - // underlying workspaces use the gc toolchain. (Even build - // systems that support gccgo don't use it for workspace - // queries.) - r, err := gcexportdata.NewReader(f) - if err != nil { - return nil, fmt.Errorf("reading %s: %v", lpkg.ExportFile, err) - } - - // Build the view. - // - // The gcexportdata machinery has no concept of package ID. - // It identifies packages by their PkgPath, which although not - // globally unique is unique within the scope of one invocation - // of the linker, type-checker, or gcexportdata. - // - // So, we must build a PkgPath-keyed view of the global - // (conceptually ID-keyed) cache of packages and pass it to - // gcexportdata. The view must contain every existing - // package that might possibly be mentioned by the - // current package---its transitive closure. - // - // In loadPackage, we unconditionally create a types.Package for - // each dependency so that export data loading does not - // create new ones. - // - // TODO(adonovan): it would be simpler and more efficient - // if the export data machinery invoked a callback to - // get-or-create a package instead of a map. - // - view := make(map[string]*types.Package) // view seen by gcexportdata - seen := make(map[*loaderPackage]bool) // all visited packages - var visit func(pkgs map[string]*Package) - visit = func(pkgs map[string]*Package) { - for _, p := range pkgs { - lpkg := ld.pkgs[p.ID] - if !seen[lpkg] { - seen[lpkg] = true - view[lpkg.PkgPath] = lpkg.Types - visit(lpkg.Imports) - } - } - } - visit(lpkg.Imports) - - viewLen := len(view) + 1 // adding the self package - // Parse the export data. - // (May modify incomplete packages in view but not create new ones.) - tpkg, err := gcexportdata.Read(r, ld.Fset, view, lpkg.PkgPath) - if err != nil { - return nil, fmt.Errorf("reading %s: %v", lpkg.ExportFile, err) - } - if viewLen != len(view) { - log.Fatalf("Unexpected package creation during export data loading") - } - - lpkg.Types = tpkg - lpkg.IllTyped = false - - return tpkg, nil -} - -// impliedLoadMode returns loadMode with its dependencies. -func impliedLoadMode(loadMode LoadMode) LoadMode { - if loadMode&NeedTypesInfo != 0 && loadMode&NeedImports == 0 { - // If NeedTypesInfo, go/packages needs to do typechecking itself so it can - // associate type info with the AST. To do so, we need the export data - // for dependencies, which means we need to ask for the direct dependencies. - // NeedImports is used to ask for the direct dependencies. - loadMode |= NeedImports - } - - if loadMode&NeedDeps != 0 && loadMode&NeedImports == 0 { - // With NeedDeps we need to load at least direct dependencies. - // NeedImports is used to ask for the direct dependencies. - loadMode |= NeedImports - } - - return loadMode -} - -func usesExportData(cfg *Config) bool { - return cfg.Mode&NeedExportsFile != 0 || cfg.Mode&NeedTypes != 0 && cfg.Mode&NeedDeps == 0 -} diff --git a/vendor/golang.org/x/tools/go/packages/visit.go b/vendor/golang.org/x/tools/go/packages/visit.go deleted file mode 100644 index a1dcc40..0000000 --- a/vendor/golang.org/x/tools/go/packages/visit.go +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright 2018 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 packages - -import ( - "fmt" - "os" - "sort" -) - -// Visit visits all the packages in the import graph whose roots are -// pkgs, calling the optional pre function the first time each package -// is encountered (preorder), and the optional post function after a -// package's dependencies have been visited (postorder). -// The boolean result of pre(pkg) determines whether -// the imports of package pkg are visited. -func Visit(pkgs []*Package, pre func(*Package) bool, post func(*Package)) { - seen := make(map[*Package]bool) - var visit func(*Package) - visit = func(pkg *Package) { - if !seen[pkg] { - seen[pkg] = true - - if pre == nil || pre(pkg) { - paths := make([]string, 0, len(pkg.Imports)) - for path := range pkg.Imports { - paths = append(paths, path) - } - sort.Strings(paths) // Imports is a map, this makes visit stable - for _, path := range paths { - visit(pkg.Imports[path]) - } - } - - if post != nil { - post(pkg) - } - } - } - for _, pkg := range pkgs { - visit(pkg) - } -} - -// PrintErrors prints to os.Stderr the accumulated errors of all -// packages in the import graph rooted at pkgs, dependencies first. -// PrintErrors returns the number of errors printed. -func PrintErrors(pkgs []*Package) int { - var n int - Visit(pkgs, nil, func(pkg *Package) { - for _, err := range pkg.Errors { - fmt.Fprintln(os.Stderr, err) - n++ - } - }) - return n -} diff --git a/vendor/golang.org/x/tools/internal/event/core/event.go b/vendor/golang.org/x/tools/internal/event/core/event.go deleted file mode 100644 index a6cf0e6..0000000 --- a/vendor/golang.org/x/tools/internal/event/core/event.go +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright 2019 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 core provides support for event based telemetry. -package core - -import ( - "fmt" - "time" - - "golang.org/x/tools/internal/event/label" -) - -// Event holds the information about an event of note that occurred. -type Event struct { - at time.Time - - // As events are often on the stack, storing the first few labels directly - // in the event can avoid an allocation at all for the very common cases of - // simple events. - // The length needs to be large enough to cope with the majority of events - // but no so large as to cause undue stack pressure. - // A log message with two values will use 3 labels (one for each value and - // one for the message itself). - - static [3]label.Label // inline storage for the first few labels - dynamic []label.Label // dynamically sized storage for remaining labels -} - -// eventLabelMap implements label.Map for a the labels of an Event. -type eventLabelMap struct { - event Event -} - -func (ev Event) At() time.Time { return ev.at } - -func (ev Event) Format(f fmt.State, r rune) { - if !ev.at.IsZero() { - fmt.Fprint(f, ev.at.Format("2006/01/02 15:04:05 ")) - } - for index := 0; ev.Valid(index); index++ { - if l := ev.Label(index); l.Valid() { - fmt.Fprintf(f, "\n\t%v", l) - } - } -} - -func (ev Event) Valid(index int) bool { - return index >= 0 && index < len(ev.static)+len(ev.dynamic) -} - -func (ev Event) Label(index int) label.Label { - if index < len(ev.static) { - return ev.static[index] - } - return ev.dynamic[index-len(ev.static)] -} - -func (ev Event) Find(key label.Key) label.Label { - for _, l := range ev.static { - if l.Key() == key { - return l - } - } - for _, l := range ev.dynamic { - if l.Key() == key { - return l - } - } - return label.Label{} -} - -func MakeEvent(static [3]label.Label, labels []label.Label) Event { - return Event{ - static: static, - dynamic: labels, - } -} - -// CloneEvent event returns a copy of the event with the time adjusted to at. -func CloneEvent(ev Event, at time.Time) Event { - ev.at = at - return ev -} diff --git a/vendor/golang.org/x/tools/internal/event/core/export.go b/vendor/golang.org/x/tools/internal/event/core/export.go deleted file mode 100644 index 05f3a9a..0000000 --- a/vendor/golang.org/x/tools/internal/event/core/export.go +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright 2019 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 core - -import ( - "context" - "sync/atomic" - "time" - "unsafe" - - "golang.org/x/tools/internal/event/label" -) - -// Exporter is a function that handles events. -// It may return a modified context and event. -type Exporter func(context.Context, Event, label.Map) context.Context - -var ( - exporter unsafe.Pointer -) - -// SetExporter sets the global exporter function that handles all events. -// The exporter is called synchronously from the event call site, so it should -// return quickly so as not to hold up user code. -func SetExporter(e Exporter) { - p := unsafe.Pointer(&e) - if e == nil { - // &e is always valid, and so p is always valid, but for the early abort - // of ProcessEvent to be efficient it needs to make the nil check on the - // pointer without having to dereference it, so we make the nil function - // also a nil pointer - p = nil - } - atomic.StorePointer(&exporter, p) -} - -// deliver is called to deliver an event to the supplied exporter. -// it will fill in the time. -func deliver(ctx context.Context, exporter Exporter, ev Event) context.Context { - // add the current time to the event - ev.at = time.Now() - // hand the event off to the current exporter - return exporter(ctx, ev, ev) -} - -// Export is called to deliver an event to the global exporter if set. -func Export(ctx context.Context, ev Event) context.Context { - // get the global exporter and abort early if there is not one - exporterPtr := (*Exporter)(atomic.LoadPointer(&exporter)) - if exporterPtr == nil { - return ctx - } - return deliver(ctx, *exporterPtr, ev) -} - -// ExportPair is called to deliver a start event to the supplied exporter. -// It also returns a function that will deliver the end event to the same -// exporter. -// It will fill in the time. -func ExportPair(ctx context.Context, begin, end Event) (context.Context, func()) { - // get the global exporter and abort early if there is not one - exporterPtr := (*Exporter)(atomic.LoadPointer(&exporter)) - if exporterPtr == nil { - return ctx, func() {} - } - ctx = deliver(ctx, *exporterPtr, begin) - return ctx, func() { deliver(ctx, *exporterPtr, end) } -} diff --git a/vendor/golang.org/x/tools/internal/event/core/fast.go b/vendor/golang.org/x/tools/internal/event/core/fast.go deleted file mode 100644 index 06c1d46..0000000 --- a/vendor/golang.org/x/tools/internal/event/core/fast.go +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright 2019 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 core - -import ( - "context" - - "golang.org/x/tools/internal/event/keys" - "golang.org/x/tools/internal/event/label" -) - -// Log1 takes a message and one label delivers a log event to the exporter. -// It is a customized version of Print that is faster and does no allocation. -func Log1(ctx context.Context, message string, t1 label.Label) { - Export(ctx, MakeEvent([3]label.Label{ - keys.Msg.Of(message), - t1, - }, nil)) -} - -// Log2 takes a message and two labels and delivers a log event to the exporter. -// It is a customized version of Print that is faster and does no allocation. -func Log2(ctx context.Context, message string, t1 label.Label, t2 label.Label) { - Export(ctx, MakeEvent([3]label.Label{ - keys.Msg.Of(message), - t1, - t2, - }, nil)) -} - -// Metric1 sends a label event to the exporter with the supplied labels. -func Metric1(ctx context.Context, t1 label.Label) context.Context { - return Export(ctx, MakeEvent([3]label.Label{ - keys.Metric.New(), - t1, - }, nil)) -} - -// Metric2 sends a label event to the exporter with the supplied labels. -func Metric2(ctx context.Context, t1, t2 label.Label) context.Context { - return Export(ctx, MakeEvent([3]label.Label{ - keys.Metric.New(), - t1, - t2, - }, nil)) -} - -// Start1 sends a span start event with the supplied label list to the exporter. -// It also returns a function that will end the span, which should normally be -// deferred. -func Start1(ctx context.Context, name string, t1 label.Label) (context.Context, func()) { - return ExportPair(ctx, - MakeEvent([3]label.Label{ - keys.Start.Of(name), - t1, - }, nil), - MakeEvent([3]label.Label{ - keys.End.New(), - }, nil)) -} - -// Start2 sends a span start event with the supplied label list to the exporter. -// It also returns a function that will end the span, which should normally be -// deferred. -func Start2(ctx context.Context, name string, t1, t2 label.Label) (context.Context, func()) { - return ExportPair(ctx, - MakeEvent([3]label.Label{ - keys.Start.Of(name), - t1, - t2, - }, nil), - MakeEvent([3]label.Label{ - keys.End.New(), - }, nil)) -} diff --git a/vendor/golang.org/x/tools/internal/event/doc.go b/vendor/golang.org/x/tools/internal/event/doc.go deleted file mode 100644 index 5dc6e6b..0000000 --- a/vendor/golang.org/x/tools/internal/event/doc.go +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2019 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 event provides a set of packages that cover the main -// concepts of telemetry in an implementation agnostic way. -package event diff --git a/vendor/golang.org/x/tools/internal/event/event.go b/vendor/golang.org/x/tools/internal/event/event.go deleted file mode 100644 index 4d55e57..0000000 --- a/vendor/golang.org/x/tools/internal/event/event.go +++ /dev/null @@ -1,127 +0,0 @@ -// Copyright 2019 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 event - -import ( - "context" - - "golang.org/x/tools/internal/event/core" - "golang.org/x/tools/internal/event/keys" - "golang.org/x/tools/internal/event/label" -) - -// Exporter is a function that handles events. -// It may return a modified context and event. -type Exporter func(context.Context, core.Event, label.Map) context.Context - -// SetExporter sets the global exporter function that handles all events. -// The exporter is called synchronously from the event call site, so it should -// return quickly so as not to hold up user code. -func SetExporter(e Exporter) { - core.SetExporter(core.Exporter(e)) -} - -// Log takes a message and a label list and combines them into a single event -// before delivering them to the exporter. -func Log(ctx context.Context, message string, labels ...label.Label) { - core.Export(ctx, core.MakeEvent([3]label.Label{ - keys.Msg.Of(message), - }, labels)) -} - -// IsLog returns true if the event was built by the Log function. -// It is intended to be used in exporters to identify the semantics of the -// event when deciding what to do with it. -func IsLog(ev core.Event) bool { - return ev.Label(0).Key() == keys.Msg -} - -// Error takes a message and a label list and combines them into a single event -// before delivering them to the exporter. It captures the error in the -// delivered event. -func Error(ctx context.Context, message string, err error, labels ...label.Label) { - core.Export(ctx, core.MakeEvent([3]label.Label{ - keys.Msg.Of(message), - keys.Err.Of(err), - }, labels)) -} - -// IsError returns true if the event was built by the Error function. -// It is intended to be used in exporters to identify the semantics of the -// event when deciding what to do with it. -func IsError(ev core.Event) bool { - return ev.Label(0).Key() == keys.Msg && - ev.Label(1).Key() == keys.Err -} - -// Metric sends a label event to the exporter with the supplied labels. -func Metric(ctx context.Context, labels ...label.Label) { - core.Export(ctx, core.MakeEvent([3]label.Label{ - keys.Metric.New(), - }, labels)) -} - -// IsMetric returns true if the event was built by the Metric function. -// It is intended to be used in exporters to identify the semantics of the -// event when deciding what to do with it. -func IsMetric(ev core.Event) bool { - return ev.Label(0).Key() == keys.Metric -} - -// Label sends a label event to the exporter with the supplied labels. -func Label(ctx context.Context, labels ...label.Label) context.Context { - return core.Export(ctx, core.MakeEvent([3]label.Label{ - keys.Label.New(), - }, labels)) -} - -// IsLabel returns true if the event was built by the Label function. -// It is intended to be used in exporters to identify the semantics of the -// event when deciding what to do with it. -func IsLabel(ev core.Event) bool { - return ev.Label(0).Key() == keys.Label -} - -// Start sends a span start event with the supplied label list to the exporter. -// It also returns a function that will end the span, which should normally be -// deferred. -func Start(ctx context.Context, name string, labels ...label.Label) (context.Context, func()) { - return core.ExportPair(ctx, - core.MakeEvent([3]label.Label{ - keys.Start.Of(name), - }, labels), - core.MakeEvent([3]label.Label{ - keys.End.New(), - }, nil)) -} - -// IsStart returns true if the event was built by the Start function. -// It is intended to be used in exporters to identify the semantics of the -// event when deciding what to do with it. -func IsStart(ev core.Event) bool { - return ev.Label(0).Key() == keys.Start -} - -// IsEnd returns true if the event was built by the End function. -// It is intended to be used in exporters to identify the semantics of the -// event when deciding what to do with it. -func IsEnd(ev core.Event) bool { - return ev.Label(0).Key() == keys.End -} - -// Detach returns a context without an associated span. -// This allows the creation of spans that are not children of the current span. -func Detach(ctx context.Context) context.Context { - return core.Export(ctx, core.MakeEvent([3]label.Label{ - keys.Detach.New(), - }, nil)) -} - -// IsDetach returns true if the event was built by the Detach function. -// It is intended to be used in exporters to identify the semantics of the -// event when deciding what to do with it. -func IsDetach(ev core.Event) bool { - return ev.Label(0).Key() == keys.Detach -} diff --git a/vendor/golang.org/x/tools/internal/event/keys/keys.go b/vendor/golang.org/x/tools/internal/event/keys/keys.go deleted file mode 100644 index a02206e..0000000 --- a/vendor/golang.org/x/tools/internal/event/keys/keys.go +++ /dev/null @@ -1,564 +0,0 @@ -// Copyright 2019 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 keys - -import ( - "fmt" - "io" - "math" - "strconv" - - "golang.org/x/tools/internal/event/label" -) - -// Value represents a key for untyped values. -type Value struct { - name string - description string -} - -// New creates a new Key for untyped values. -func New(name, description string) *Value { - return &Value{name: name, description: description} -} - -func (k *Value) Name() string { return k.name } -func (k *Value) Description() string { return k.description } - -func (k *Value) Format(w io.Writer, buf []byte, l label.Label) { - fmt.Fprint(w, k.From(l)) -} - -// Get can be used to get a label for the key from a label.Map. -func (k *Value) Get(lm label.Map) interface{} { - if t := lm.Find(k); t.Valid() { - return k.From(t) - } - return nil -} - -// From can be used to get a value from a Label. -func (k *Value) From(t label.Label) interface{} { return t.UnpackValue() } - -// Of creates a new Label with this key and the supplied value. -func (k *Value) Of(value interface{}) label.Label { return label.OfValue(k, value) } - -// Tag represents a key for tagging labels that have no value. -// These are used when the existence of the label is the entire information it -// carries, such as marking events to be of a specific kind, or from a specific -// package. -type Tag struct { - name string - description string -} - -// NewTag creates a new Key for tagging labels. -func NewTag(name, description string) *Tag { - return &Tag{name: name, description: description} -} - -func (k *Tag) Name() string { return k.name } -func (k *Tag) Description() string { return k.description } - -func (k *Tag) Format(w io.Writer, buf []byte, l label.Label) {} - -// New creates a new Label with this key. -func (k *Tag) New() label.Label { return label.OfValue(k, nil) } - -// Int represents a key -type Int struct { - name string - description string -} - -// NewInt creates a new Key for int values. -func NewInt(name, description string) *Int { - return &Int{name: name, description: description} -} - -func (k *Int) Name() string { return k.name } -func (k *Int) Description() string { return k.description } - -func (k *Int) Format(w io.Writer, buf []byte, l label.Label) { - w.Write(strconv.AppendInt(buf, int64(k.From(l)), 10)) -} - -// Of creates a new Label with this key and the supplied value. -func (k *Int) Of(v int) label.Label { return label.Of64(k, uint64(v)) } - -// Get can be used to get a label for the key from a label.Map. -func (k *Int) Get(lm label.Map) int { - if t := lm.Find(k); t.Valid() { - return k.From(t) - } - return 0 -} - -// From can be used to get a value from a Label. -func (k *Int) From(t label.Label) int { return int(t.Unpack64()) } - -// Int8 represents a key -type Int8 struct { - name string - description string -} - -// NewInt8 creates a new Key for int8 values. -func NewInt8(name, description string) *Int8 { - return &Int8{name: name, description: description} -} - -func (k *Int8) Name() string { return k.name } -func (k *Int8) Description() string { return k.description } - -func (k *Int8) Format(w io.Writer, buf []byte, l label.Label) { - w.Write(strconv.AppendInt(buf, int64(k.From(l)), 10)) -} - -// Of creates a new Label with this key and the supplied value. -func (k *Int8) Of(v int8) label.Label { return label.Of64(k, uint64(v)) } - -// Get can be used to get a label for the key from a label.Map. -func (k *Int8) Get(lm label.Map) int8 { - if t := lm.Find(k); t.Valid() { - return k.From(t) - } - return 0 -} - -// From can be used to get a value from a Label. -func (k *Int8) From(t label.Label) int8 { return int8(t.Unpack64()) } - -// Int16 represents a key -type Int16 struct { - name string - description string -} - -// NewInt16 creates a new Key for int16 values. -func NewInt16(name, description string) *Int16 { - return &Int16{name: name, description: description} -} - -func (k *Int16) Name() string { return k.name } -func (k *Int16) Description() string { return k.description } - -func (k *Int16) Format(w io.Writer, buf []byte, l label.Label) { - w.Write(strconv.AppendInt(buf, int64(k.From(l)), 10)) -} - -// Of creates a new Label with this key and the supplied value. -func (k *Int16) Of(v int16) label.Label { return label.Of64(k, uint64(v)) } - -// Get can be used to get a label for the key from a label.Map. -func (k *Int16) Get(lm label.Map) int16 { - if t := lm.Find(k); t.Valid() { - return k.From(t) - } - return 0 -} - -// From can be used to get a value from a Label. -func (k *Int16) From(t label.Label) int16 { return int16(t.Unpack64()) } - -// Int32 represents a key -type Int32 struct { - name string - description string -} - -// NewInt32 creates a new Key for int32 values. -func NewInt32(name, description string) *Int32 { - return &Int32{name: name, description: description} -} - -func (k *Int32) Name() string { return k.name } -func (k *Int32) Description() string { return k.description } - -func (k *Int32) Format(w io.Writer, buf []byte, l label.Label) { - w.Write(strconv.AppendInt(buf, int64(k.From(l)), 10)) -} - -// Of creates a new Label with this key and the supplied value. -func (k *Int32) Of(v int32) label.Label { return label.Of64(k, uint64(v)) } - -// Get can be used to get a label for the key from a label.Map. -func (k *Int32) Get(lm label.Map) int32 { - if t := lm.Find(k); t.Valid() { - return k.From(t) - } - return 0 -} - -// From can be used to get a value from a Label. -func (k *Int32) From(t label.Label) int32 { return int32(t.Unpack64()) } - -// Int64 represents a key -type Int64 struct { - name string - description string -} - -// NewInt64 creates a new Key for int64 values. -func NewInt64(name, description string) *Int64 { - return &Int64{name: name, description: description} -} - -func (k *Int64) Name() string { return k.name } -func (k *Int64) Description() string { return k.description } - -func (k *Int64) Format(w io.Writer, buf []byte, l label.Label) { - w.Write(strconv.AppendInt(buf, k.From(l), 10)) -} - -// Of creates a new Label with this key and the supplied value. -func (k *Int64) Of(v int64) label.Label { return label.Of64(k, uint64(v)) } - -// Get can be used to get a label for the key from a label.Map. -func (k *Int64) Get(lm label.Map) int64 { - if t := lm.Find(k); t.Valid() { - return k.From(t) - } - return 0 -} - -// From can be used to get a value from a Label. -func (k *Int64) From(t label.Label) int64 { return int64(t.Unpack64()) } - -// UInt represents a key -type UInt struct { - name string - description string -} - -// NewUInt creates a new Key for uint values. -func NewUInt(name, description string) *UInt { - return &UInt{name: name, description: description} -} - -func (k *UInt) Name() string { return k.name } -func (k *UInt) Description() string { return k.description } - -func (k *UInt) Format(w io.Writer, buf []byte, l label.Label) { - w.Write(strconv.AppendUint(buf, uint64(k.From(l)), 10)) -} - -// Of creates a new Label with this key and the supplied value. -func (k *UInt) Of(v uint) label.Label { return label.Of64(k, uint64(v)) } - -// Get can be used to get a label for the key from a label.Map. -func (k *UInt) Get(lm label.Map) uint { - if t := lm.Find(k); t.Valid() { - return k.From(t) - } - return 0 -} - -// From can be used to get a value from a Label. -func (k *UInt) From(t label.Label) uint { return uint(t.Unpack64()) } - -// UInt8 represents a key -type UInt8 struct { - name string - description string -} - -// NewUInt8 creates a new Key for uint8 values. -func NewUInt8(name, description string) *UInt8 { - return &UInt8{name: name, description: description} -} - -func (k *UInt8) Name() string { return k.name } -func (k *UInt8) Description() string { return k.description } - -func (k *UInt8) Format(w io.Writer, buf []byte, l label.Label) { - w.Write(strconv.AppendUint(buf, uint64(k.From(l)), 10)) -} - -// Of creates a new Label with this key and the supplied value. -func (k *UInt8) Of(v uint8) label.Label { return label.Of64(k, uint64(v)) } - -// Get can be used to get a label for the key from a label.Map. -func (k *UInt8) Get(lm label.Map) uint8 { - if t := lm.Find(k); t.Valid() { - return k.From(t) - } - return 0 -} - -// From can be used to get a value from a Label. -func (k *UInt8) From(t label.Label) uint8 { return uint8(t.Unpack64()) } - -// UInt16 represents a key -type UInt16 struct { - name string - description string -} - -// NewUInt16 creates a new Key for uint16 values. -func NewUInt16(name, description string) *UInt16 { - return &UInt16{name: name, description: description} -} - -func (k *UInt16) Name() string { return k.name } -func (k *UInt16) Description() string { return k.description } - -func (k *UInt16) Format(w io.Writer, buf []byte, l label.Label) { - w.Write(strconv.AppendUint(buf, uint64(k.From(l)), 10)) -} - -// Of creates a new Label with this key and the supplied value. -func (k *UInt16) Of(v uint16) label.Label { return label.Of64(k, uint64(v)) } - -// Get can be used to get a label for the key from a label.Map. -func (k *UInt16) Get(lm label.Map) uint16 { - if t := lm.Find(k); t.Valid() { - return k.From(t) - } - return 0 -} - -// From can be used to get a value from a Label. -func (k *UInt16) From(t label.Label) uint16 { return uint16(t.Unpack64()) } - -// UInt32 represents a key -type UInt32 struct { - name string - description string -} - -// NewUInt32 creates a new Key for uint32 values. -func NewUInt32(name, description string) *UInt32 { - return &UInt32{name: name, description: description} -} - -func (k *UInt32) Name() string { return k.name } -func (k *UInt32) Description() string { return k.description } - -func (k *UInt32) Format(w io.Writer, buf []byte, l label.Label) { - w.Write(strconv.AppendUint(buf, uint64(k.From(l)), 10)) -} - -// Of creates a new Label with this key and the supplied value. -func (k *UInt32) Of(v uint32) label.Label { return label.Of64(k, uint64(v)) } - -// Get can be used to get a label for the key from a label.Map. -func (k *UInt32) Get(lm label.Map) uint32 { - if t := lm.Find(k); t.Valid() { - return k.From(t) - } - return 0 -} - -// From can be used to get a value from a Label. -func (k *UInt32) From(t label.Label) uint32 { return uint32(t.Unpack64()) } - -// UInt64 represents a key -type UInt64 struct { - name string - description string -} - -// NewUInt64 creates a new Key for uint64 values. -func NewUInt64(name, description string) *UInt64 { - return &UInt64{name: name, description: description} -} - -func (k *UInt64) Name() string { return k.name } -func (k *UInt64) Description() string { return k.description } - -func (k *UInt64) Format(w io.Writer, buf []byte, l label.Label) { - w.Write(strconv.AppendUint(buf, k.From(l), 10)) -} - -// Of creates a new Label with this key and the supplied value. -func (k *UInt64) Of(v uint64) label.Label { return label.Of64(k, v) } - -// Get can be used to get a label for the key from a label.Map. -func (k *UInt64) Get(lm label.Map) uint64 { - if t := lm.Find(k); t.Valid() { - return k.From(t) - } - return 0 -} - -// From can be used to get a value from a Label. -func (k *UInt64) From(t label.Label) uint64 { return t.Unpack64() } - -// Float32 represents a key -type Float32 struct { - name string - description string -} - -// NewFloat32 creates a new Key for float32 values. -func NewFloat32(name, description string) *Float32 { - return &Float32{name: name, description: description} -} - -func (k *Float32) Name() string { return k.name } -func (k *Float32) Description() string { return k.description } - -func (k *Float32) Format(w io.Writer, buf []byte, l label.Label) { - w.Write(strconv.AppendFloat(buf, float64(k.From(l)), 'E', -1, 32)) -} - -// Of creates a new Label with this key and the supplied value. -func (k *Float32) Of(v float32) label.Label { - return label.Of64(k, uint64(math.Float32bits(v))) -} - -// Get can be used to get a label for the key from a label.Map. -func (k *Float32) Get(lm label.Map) float32 { - if t := lm.Find(k); t.Valid() { - return k.From(t) - } - return 0 -} - -// From can be used to get a value from a Label. -func (k *Float32) From(t label.Label) float32 { - return math.Float32frombits(uint32(t.Unpack64())) -} - -// Float64 represents a key -type Float64 struct { - name string - description string -} - -// NewFloat64 creates a new Key for int64 values. -func NewFloat64(name, description string) *Float64 { - return &Float64{name: name, description: description} -} - -func (k *Float64) Name() string { return k.name } -func (k *Float64) Description() string { return k.description } - -func (k *Float64) Format(w io.Writer, buf []byte, l label.Label) { - w.Write(strconv.AppendFloat(buf, k.From(l), 'E', -1, 64)) -} - -// Of creates a new Label with this key and the supplied value. -func (k *Float64) Of(v float64) label.Label { - return label.Of64(k, math.Float64bits(v)) -} - -// Get can be used to get a label for the key from a label.Map. -func (k *Float64) Get(lm label.Map) float64 { - if t := lm.Find(k); t.Valid() { - return k.From(t) - } - return 0 -} - -// From can be used to get a value from a Label. -func (k *Float64) From(t label.Label) float64 { - return math.Float64frombits(t.Unpack64()) -} - -// String represents a key -type String struct { - name string - description string -} - -// NewString creates a new Key for int64 values. -func NewString(name, description string) *String { - return &String{name: name, description: description} -} - -func (k *String) Name() string { return k.name } -func (k *String) Description() string { return k.description } - -func (k *String) Format(w io.Writer, buf []byte, l label.Label) { - w.Write(strconv.AppendQuote(buf, k.From(l))) -} - -// Of creates a new Label with this key and the supplied value. -func (k *String) Of(v string) label.Label { return label.OfString(k, v) } - -// Get can be used to get a label for the key from a label.Map. -func (k *String) Get(lm label.Map) string { - if t := lm.Find(k); t.Valid() { - return k.From(t) - } - return "" -} - -// From can be used to get a value from a Label. -func (k *String) From(t label.Label) string { return t.UnpackString() } - -// Boolean represents a key -type Boolean struct { - name string - description string -} - -// NewBoolean creates a new Key for bool values. -func NewBoolean(name, description string) *Boolean { - return &Boolean{name: name, description: description} -} - -func (k *Boolean) Name() string { return k.name } -func (k *Boolean) Description() string { return k.description } - -func (k *Boolean) Format(w io.Writer, buf []byte, l label.Label) { - w.Write(strconv.AppendBool(buf, k.From(l))) -} - -// Of creates a new Label with this key and the supplied value. -func (k *Boolean) Of(v bool) label.Label { - if v { - return label.Of64(k, 1) - } - return label.Of64(k, 0) -} - -// Get can be used to get a label for the key from a label.Map. -func (k *Boolean) Get(lm label.Map) bool { - if t := lm.Find(k); t.Valid() { - return k.From(t) - } - return false -} - -// From can be used to get a value from a Label. -func (k *Boolean) From(t label.Label) bool { return t.Unpack64() > 0 } - -// Error represents a key -type Error struct { - name string - description string -} - -// NewError creates a new Key for int64 values. -func NewError(name, description string) *Error { - return &Error{name: name, description: description} -} - -func (k *Error) Name() string { return k.name } -func (k *Error) Description() string { return k.description } - -func (k *Error) Format(w io.Writer, buf []byte, l label.Label) { - io.WriteString(w, k.From(l).Error()) -} - -// Of creates a new Label with this key and the supplied value. -func (k *Error) Of(v error) label.Label { return label.OfValue(k, v) } - -// Get can be used to get a label for the key from a label.Map. -func (k *Error) Get(lm label.Map) error { - if t := lm.Find(k); t.Valid() { - return k.From(t) - } - return nil -} - -// From can be used to get a value from a Label. -func (k *Error) From(t label.Label) error { - err, _ := t.UnpackValue().(error) - return err -} diff --git a/vendor/golang.org/x/tools/internal/event/keys/standard.go b/vendor/golang.org/x/tools/internal/event/keys/standard.go deleted file mode 100644 index 7e95866..0000000 --- a/vendor/golang.org/x/tools/internal/event/keys/standard.go +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2020 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 keys - -var ( - // Msg is a key used to add message strings to label lists. - Msg = NewString("message", "a readable message") - // Label is a key used to indicate an event adds labels to the context. - Label = NewTag("label", "a label context marker") - // Start is used for things like traces that have a name. - Start = NewString("start", "span start") - // Metric is a key used to indicate an event records metrics. - End = NewTag("end", "a span end marker") - // Metric is a key used to indicate an event records metrics. - Detach = NewTag("detach", "a span detach marker") - // Err is a key used to add error values to label lists. - Err = NewError("error", "an error that occurred") - // Metric is a key used to indicate an event records metrics. - Metric = NewTag("metric", "a metric event marker") -) diff --git a/vendor/golang.org/x/tools/internal/event/label/label.go b/vendor/golang.org/x/tools/internal/event/label/label.go deleted file mode 100644 index 0f526e1..0000000 --- a/vendor/golang.org/x/tools/internal/event/label/label.go +++ /dev/null @@ -1,215 +0,0 @@ -// Copyright 2019 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 label - -import ( - "fmt" - "io" - "reflect" - "unsafe" -) - -// Key is used as the identity of a Label. -// Keys are intended to be compared by pointer only, the name should be unique -// for communicating with external systems, but it is not required or enforced. -type Key interface { - // Name returns the key name. - Name() string - // Description returns a string that can be used to describe the value. - Description() string - - // Format is used in formatting to append the value of the label to the - // supplied buffer. - // The formatter may use the supplied buf as a scratch area to avoid - // allocations. - Format(w io.Writer, buf []byte, l Label) -} - -// Label holds a key and value pair. -// It is normally used when passing around lists of labels. -type Label struct { - key Key - packed uint64 - untyped interface{} -} - -// Map is the interface to a collection of Labels indexed by key. -type Map interface { - // Find returns the label that matches the supplied key. - Find(key Key) Label -} - -// List is the interface to something that provides an iterable -// list of labels. -// Iteration should start from 0 and continue until Valid returns false. -type List interface { - // Valid returns true if the index is within range for the list. - // It does not imply the label at that index will itself be valid. - Valid(index int) bool - // Label returns the label at the given index. - Label(index int) Label -} - -// list implements LabelList for a list of Labels. -type list struct { - labels []Label -} - -// filter wraps a LabelList filtering out specific labels. -type filter struct { - keys []Key - underlying List -} - -// listMap implements LabelMap for a simple list of labels. -type listMap struct { - labels []Label -} - -// mapChain implements LabelMap for a list of underlying LabelMap. -type mapChain struct { - maps []Map -} - -// OfValue creates a new label from the key and value. -// This method is for implementing new key types, label creation should -// normally be done with the Of method of the key. -func OfValue(k Key, value interface{}) Label { return Label{key: k, untyped: value} } - -// UnpackValue assumes the label was built using LabelOfValue and returns the value -// that was passed to that constructor. -// This method is for implementing new key types, for type safety normal -// access should be done with the From method of the key. -func (t Label) UnpackValue() interface{} { return t.untyped } - -// Of64 creates a new label from a key and a uint64. This is often -// used for non uint64 values that can be packed into a uint64. -// This method is for implementing new key types, label creation should -// normally be done with the Of method of the key. -func Of64(k Key, v uint64) Label { return Label{key: k, packed: v} } - -// Unpack64 assumes the label was built using LabelOf64 and returns the value that -// was passed to that constructor. -// This method is for implementing new key types, for type safety normal -// access should be done with the From method of the key. -func (t Label) Unpack64() uint64 { return t.packed } - -type stringptr unsafe.Pointer - -// OfString creates a new label from a key and a string. -// This method is for implementing new key types, label creation should -// normally be done with the Of method of the key. -func OfString(k Key, v string) Label { - hdr := (*reflect.StringHeader)(unsafe.Pointer(&v)) - return Label{ - key: k, - packed: uint64(hdr.Len), - untyped: stringptr(hdr.Data), - } -} - -// UnpackString assumes the label was built using LabelOfString and returns the -// value that was passed to that constructor. -// This method is for implementing new key types, for type safety normal -// access should be done with the From method of the key. -func (t Label) UnpackString() string { - var v string - hdr := (*reflect.StringHeader)(unsafe.Pointer(&v)) - hdr.Data = uintptr(t.untyped.(stringptr)) - hdr.Len = int(t.packed) - return v -} - -// Valid returns true if the Label is a valid one (it has a key). -func (t Label) Valid() bool { return t.key != nil } - -// Key returns the key of this Label. -func (t Label) Key() Key { return t.key } - -// Format is used for debug printing of labels. -func (t Label) Format(f fmt.State, r rune) { - if !t.Valid() { - io.WriteString(f, `nil`) - return - } - io.WriteString(f, t.Key().Name()) - io.WriteString(f, "=") - var buf [128]byte - t.Key().Format(f, buf[:0], t) -} - -func (l *list) Valid(index int) bool { - return index >= 0 && index < len(l.labels) -} - -func (l *list) Label(index int) Label { - return l.labels[index] -} - -func (f *filter) Valid(index int) bool { - return f.underlying.Valid(index) -} - -func (f *filter) Label(index int) Label { - l := f.underlying.Label(index) - for _, f := range f.keys { - if l.Key() == f { - return Label{} - } - } - return l -} - -func (lm listMap) Find(key Key) Label { - for _, l := range lm.labels { - if l.Key() == key { - return l - } - } - return Label{} -} - -func (c mapChain) Find(key Key) Label { - for _, src := range c.maps { - l := src.Find(key) - if l.Valid() { - return l - } - } - return Label{} -} - -var emptyList = &list{} - -func NewList(labels ...Label) List { - if len(labels) == 0 { - return emptyList - } - return &list{labels: labels} -} - -func Filter(l List, keys ...Key) List { - if len(keys) == 0 { - return l - } - return &filter{keys: keys, underlying: l} -} - -func NewMap(labels ...Label) Map { - return listMap{labels: labels} -} - -func MergeMaps(srcs ...Map) Map { - var nonNil []Map - for _, src := range srcs { - if src != nil { - nonNil = append(nonNil, src) - } - } - if len(nonNil) == 1 { - return nonNil[0] - } - return mapChain{maps: nonNil} -} diff --git a/vendor/golang.org/x/tools/internal/gocommand/invoke.go b/vendor/golang.org/x/tools/internal/gocommand/invoke.go deleted file mode 100644 index f753368..0000000 --- a/vendor/golang.org/x/tools/internal/gocommand/invoke.go +++ /dev/null @@ -1,281 +0,0 @@ -// Copyright 2020 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 gocommand is a helper for calling the go command. -package gocommand - -import ( - "bytes" - "context" - "fmt" - "io" - "os" - "regexp" - "strconv" - "strings" - "sync" - "time" - - exec "golang.org/x/sys/execabs" - - "golang.org/x/tools/internal/event" -) - -// An Runner will run go command invocations and serialize -// them if it sees a concurrency error. -type Runner struct { - // once guards the runner initialization. - once sync.Once - - // inFlight tracks available workers. - inFlight chan struct{} - - // serialized guards the ability to run a go command serially, - // to avoid deadlocks when claiming workers. - serialized chan struct{} -} - -const maxInFlight = 10 - -func (runner *Runner) initialize() { - runner.once.Do(func() { - runner.inFlight = make(chan struct{}, maxInFlight) - runner.serialized = make(chan struct{}, 1) - }) -} - -// 1.13: go: updates to go.mod needed, but contents have changed -// 1.14: go: updating go.mod: existing contents have changed since last read -var modConcurrencyError = regexp.MustCompile(`go:.*go.mod.*contents have changed`) - -// Run is a convenience wrapper around RunRaw. -// It returns only stdout and a "friendly" error. -func (runner *Runner) Run(ctx context.Context, inv Invocation) (*bytes.Buffer, error) { - stdout, _, friendly, _ := runner.RunRaw(ctx, inv) - return stdout, friendly -} - -// RunPiped runs the invocation serially, always waiting for any concurrent -// invocations to complete first. -func (runner *Runner) RunPiped(ctx context.Context, inv Invocation, stdout, stderr io.Writer) error { - _, err := runner.runPiped(ctx, inv, stdout, stderr) - return err -} - -// RunRaw runs the invocation, serializing requests only if they fight over -// go.mod changes. -func (runner *Runner) RunRaw(ctx context.Context, inv Invocation) (*bytes.Buffer, *bytes.Buffer, error, error) { - // Make sure the runner is always initialized. - runner.initialize() - - // First, try to run the go command concurrently. - stdout, stderr, friendlyErr, err := runner.runConcurrent(ctx, inv) - - // If we encounter a load concurrency error, we need to retry serially. - if friendlyErr == nil || !modConcurrencyError.MatchString(friendlyErr.Error()) { - return stdout, stderr, friendlyErr, err - } - event.Error(ctx, "Load concurrency error, will retry serially", err) - - // Run serially by calling runPiped. - stdout.Reset() - stderr.Reset() - friendlyErr, err = runner.runPiped(ctx, inv, stdout, stderr) - return stdout, stderr, friendlyErr, err -} - -func (runner *Runner) runConcurrent(ctx context.Context, inv Invocation) (*bytes.Buffer, *bytes.Buffer, error, error) { - // Wait for 1 worker to become available. - select { - case <-ctx.Done(): - return nil, nil, nil, ctx.Err() - case runner.inFlight <- struct{}{}: - defer func() { <-runner.inFlight }() - } - - stdout, stderr := &bytes.Buffer{}, &bytes.Buffer{} - friendlyErr, err := inv.runWithFriendlyError(ctx, stdout, stderr) - return stdout, stderr, friendlyErr, err -} - -func (runner *Runner) runPiped(ctx context.Context, inv Invocation, stdout, stderr io.Writer) (error, error) { - // Make sure the runner is always initialized. - runner.initialize() - - // Acquire the serialization lock. This avoids deadlocks between two - // runPiped commands. - select { - case <-ctx.Done(): - return nil, ctx.Err() - case runner.serialized <- struct{}{}: - defer func() { <-runner.serialized }() - } - - // Wait for all in-progress go commands to return before proceeding, - // to avoid load concurrency errors. - for i := 0; i < maxInFlight; i++ { - select { - case <-ctx.Done(): - return nil, ctx.Err() - case runner.inFlight <- struct{}{}: - // Make sure we always "return" any workers we took. - defer func() { <-runner.inFlight }() - } - } - - return inv.runWithFriendlyError(ctx, stdout, stderr) -} - -// An Invocation represents a call to the go command. -type Invocation struct { - Verb string - Args []string - BuildFlags []string - - // If ModFlag is set, the go command is invoked with -mod=ModFlag. - ModFlag string - - // If ModFile is set, the go command is invoked with -modfile=ModFile. - ModFile string - - // If Overlay is set, the go command is invoked with -overlay=Overlay. - Overlay string - - // If CleanEnv is set, the invocation will run only with the environment - // in Env, not starting with os.Environ. - CleanEnv bool - Env []string - WorkingDir string - Logf func(format string, args ...interface{}) -} - -func (i *Invocation) runWithFriendlyError(ctx context.Context, stdout, stderr io.Writer) (friendlyError error, rawError error) { - rawError = i.run(ctx, stdout, stderr) - if rawError != nil { - friendlyError = rawError - // Check for 'go' executable not being found. - if ee, ok := rawError.(*exec.Error); ok && ee.Err == exec.ErrNotFound { - friendlyError = fmt.Errorf("go command required, not found: %v", ee) - } - if ctx.Err() != nil { - friendlyError = ctx.Err() - } - friendlyError = fmt.Errorf("err: %v: stderr: %s", friendlyError, stderr) - } - return -} - -func (i *Invocation) run(ctx context.Context, stdout, stderr io.Writer) error { - log := i.Logf - if log == nil { - log = func(string, ...interface{}) {} - } - - goArgs := []string{i.Verb} - - appendModFile := func() { - if i.ModFile != "" { - goArgs = append(goArgs, "-modfile="+i.ModFile) - } - } - appendModFlag := func() { - if i.ModFlag != "" { - goArgs = append(goArgs, "-mod="+i.ModFlag) - } - } - appendOverlayFlag := func() { - if i.Overlay != "" { - goArgs = append(goArgs, "-overlay="+i.Overlay) - } - } - - switch i.Verb { - case "env", "version": - goArgs = append(goArgs, i.Args...) - case "mod": - // mod needs the sub-verb before flags. - goArgs = append(goArgs, i.Args[0]) - appendModFile() - goArgs = append(goArgs, i.Args[1:]...) - case "get": - goArgs = append(goArgs, i.BuildFlags...) - appendModFile() - goArgs = append(goArgs, i.Args...) - - default: // notably list and build. - goArgs = append(goArgs, i.BuildFlags...) - appendModFile() - appendModFlag() - appendOverlayFlag() - goArgs = append(goArgs, i.Args...) - } - cmd := exec.Command("go", goArgs...) - cmd.Stdout = stdout - cmd.Stderr = stderr - // On darwin the cwd gets resolved to the real path, which breaks anything that - // expects the working directory to keep the original path, including the - // go command when dealing with modules. - // The Go stdlib has a special feature where if the cwd and the PWD are the - // same node then it trusts the PWD, so by setting it in the env for the child - // process we fix up all the paths returned by the go command. - if !i.CleanEnv { - cmd.Env = os.Environ() - } - cmd.Env = append(cmd.Env, i.Env...) - if i.WorkingDir != "" { - cmd.Env = append(cmd.Env, "PWD="+i.WorkingDir) - cmd.Dir = i.WorkingDir - } - defer func(start time.Time) { log("%s for %v", time.Since(start), cmdDebugStr(cmd)) }(time.Now()) - - return runCmdContext(ctx, cmd) -} - -// runCmdContext is like exec.CommandContext except it sends os.Interrupt -// before os.Kill. -func runCmdContext(ctx context.Context, cmd *exec.Cmd) error { - if err := cmd.Start(); err != nil { - return err - } - resChan := make(chan error, 1) - go func() { - resChan <- cmd.Wait() - }() - - select { - case err := <-resChan: - return err - case <-ctx.Done(): - } - // Cancelled. Interrupt and see if it ends voluntarily. - cmd.Process.Signal(os.Interrupt) - select { - case err := <-resChan: - return err - case <-time.After(time.Second): - } - // Didn't shut down in response to interrupt. Kill it hard. - cmd.Process.Kill() - return <-resChan -} - -func cmdDebugStr(cmd *exec.Cmd) string { - env := make(map[string]string) - for _, kv := range cmd.Env { - split := strings.SplitN(kv, "=", 2) - k, v := split[0], split[1] - env[k] = v - } - - var args []string - for _, arg := range cmd.Args { - quoted := strconv.Quote(arg) - if quoted[1:len(quoted)-1] != arg || strings.Contains(arg, " ") { - args = append(args, quoted) - } else { - args = append(args, arg) - } - } - return fmt.Sprintf("GOROOT=%v GOPATH=%v GO111MODULE=%v GOPROXY=%v PWD=%v %v", env["GOROOT"], env["GOPATH"], env["GO111MODULE"], env["GOPROXY"], env["PWD"], strings.Join(args, " ")) -} diff --git a/vendor/golang.org/x/tools/internal/gocommand/vendor.go b/vendor/golang.org/x/tools/internal/gocommand/vendor.go deleted file mode 100644 index 2d3d408..0000000 --- a/vendor/golang.org/x/tools/internal/gocommand/vendor.go +++ /dev/null @@ -1,109 +0,0 @@ -// Copyright 2020 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 gocommand - -import ( - "bytes" - "context" - "fmt" - "os" - "path/filepath" - "regexp" - "strings" - "time" - - "golang.org/x/mod/semver" -) - -// ModuleJSON holds information about a module. -type ModuleJSON struct { - Path string // module path - Version string // module version - Versions []string // available module versions (with -versions) - Replace *ModuleJSON // replaced by this module - Time *time.Time // time version was created - Update *ModuleJSON // available update, if any (with -u) - Main bool // is this the main module? - Indirect bool // is this module only an indirect dependency of main module? - Dir string // directory holding files for this module, if any - GoMod string // path to go.mod file used when loading this module, if any - GoVersion string // go version used in module -} - -var modFlagRegexp = regexp.MustCompile(`-mod[ =](\w+)`) - -// VendorEnabled reports whether vendoring is enabled. It takes a *Runner to execute Go commands -// with the supplied context.Context and Invocation. The Invocation can contain pre-defined fields, -// of which only Verb and Args are modified to run the appropriate Go command. -// Inspired by setDefaultBuildMod in modload/init.go -func VendorEnabled(ctx context.Context, inv Invocation, r *Runner) (bool, *ModuleJSON, error) { - mainMod, go114, err := getMainModuleAnd114(ctx, inv, r) - if err != nil { - return false, nil, err - } - - // We check the GOFLAGS to see if there is anything overridden or not. - inv.Verb = "env" - inv.Args = []string{"GOFLAGS"} - stdout, err := r.Run(ctx, inv) - if err != nil { - return false, nil, err - } - goflags := string(bytes.TrimSpace(stdout.Bytes())) - matches := modFlagRegexp.FindStringSubmatch(goflags) - var modFlag string - if len(matches) != 0 { - modFlag = matches[1] - } - // Don't override an explicit '-mod=' argument. - if modFlag == "vendor" { - return true, mainMod, nil - } else if modFlag != "" { - return false, nil, nil - } - if mainMod == nil || !go114 { - return false, nil, nil - } - // Check 1.14's automatic vendor mode. - if fi, err := os.Stat(filepath.Join(mainMod.Dir, "vendor")); err == nil && fi.IsDir() { - if mainMod.GoVersion != "" && semver.Compare("v"+mainMod.GoVersion, "v1.14") >= 0 { - // The Go version is at least 1.14, and a vendor directory exists. - // Set -mod=vendor by default. - return true, mainMod, nil - } - } - return false, nil, nil -} - -// getMainModuleAnd114 gets one of the main modules' information and whether the -// go command in use is 1.14+. This is the information needed to figure out -// if vendoring should be enabled. -func getMainModuleAnd114(ctx context.Context, inv Invocation, r *Runner) (*ModuleJSON, bool, error) { - const format = `{{.Path}} -{{.Dir}} -{{.GoMod}} -{{.GoVersion}} -{{range context.ReleaseTags}}{{if eq . "go1.14"}}{{.}}{{end}}{{end}} -` - inv.Verb = "list" - inv.Args = []string{"-m", "-f", format} - stdout, err := r.Run(ctx, inv) - if err != nil { - return nil, false, err - } - - lines := strings.Split(stdout.String(), "\n") - if len(lines) < 5 { - return nil, false, fmt.Errorf("unexpected stdout: %q", stdout.String()) - } - mod := &ModuleJSON{ - Path: lines[0], - Dir: lines[1], - GoMod: lines[2], - GoVersion: lines[3], - Main: true, - } - return mod, lines[4] == "go1.14", nil -} diff --git a/vendor/golang.org/x/tools/internal/gocommand/version.go b/vendor/golang.org/x/tools/internal/gocommand/version.go deleted file mode 100644 index 7130436..0000000 --- a/vendor/golang.org/x/tools/internal/gocommand/version.go +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2020 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 gocommand - -import ( - "context" - "fmt" - "strings" -) - -// GoVersion checks the go version by running "go list" with modules off. -// It returns the X in Go 1.X. -func GoVersion(ctx context.Context, inv Invocation, r *Runner) (int, error) { - inv.Verb = "list" - inv.Args = []string{"-e", "-f", `{{context.ReleaseTags}}`, `--`, `unsafe`} - inv.Env = append(append([]string{}, inv.Env...), "GO111MODULE=off") - // Unset any unneeded flags, and remove them from BuildFlags, if they're - // present. - inv.ModFile = "" - inv.ModFlag = "" - var buildFlags []string - for _, flag := range inv.BuildFlags { - // Flags can be prefixed by one or two dashes. - f := strings.TrimPrefix(strings.TrimPrefix(flag, "-"), "-") - if strings.HasPrefix(f, "mod=") || strings.HasPrefix(f, "modfile=") { - continue - } - buildFlags = append(buildFlags, flag) - } - inv.BuildFlags = buildFlags - stdoutBytes, err := r.Run(ctx, inv) - if err != nil { - return 0, err - } - stdout := stdoutBytes.String() - if len(stdout) < 3 { - return 0, fmt.Errorf("bad ReleaseTags output: %q", stdout) - } - // Split up "[go1.1 go1.15]" - tags := strings.Fields(stdout[1 : len(stdout)-2]) - for i := len(tags) - 1; i >= 0; i-- { - var version int - if _, err := fmt.Sscanf(tags[i], "go1.%d", &version); err != nil { - continue - } - return version, nil - } - return 0, fmt.Errorf("no parseable ReleaseTags in %v", tags) -} diff --git a/vendor/golang.org/x/tools/internal/packagesinternal/packages.go b/vendor/golang.org/x/tools/internal/packagesinternal/packages.go deleted file mode 100644 index 9702094..0000000 --- a/vendor/golang.org/x/tools/internal/packagesinternal/packages.go +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2020 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 packagesinternal exposes internal-only fields from go/packages. -package packagesinternal - -import ( - "golang.org/x/tools/internal/gocommand" -) - -var GetForTest = func(p interface{}) string { return "" } -var GetDepsErrors = func(p interface{}) []*PackageError { return nil } - -type PackageError struct { - ImportStack []string // shortest path from package named on command line to this one - Pos string // position of error (if present, file:line:col) - Err string // the error itself -} - -var GetGoCmdRunner = func(config interface{}) *gocommand.Runner { return nil } - -var SetGoCmdRunner = func(config interface{}, runner *gocommand.Runner) {} - -var TypecheckCgo int - -var SetModFlag = func(config interface{}, value string) {} -var SetModFile = func(config interface{}, value string) {} diff --git a/vendor/golang.org/x/tools/internal/typeparams/common.go b/vendor/golang.org/x/tools/internal/typeparams/common.go deleted file mode 100644 index ab6b30b..0000000 --- a/vendor/golang.org/x/tools/internal/typeparams/common.go +++ /dev/null @@ -1,180 +0,0 @@ -// Copyright 2021 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 typeparams contains common utilities for writing tools that interact -// with generic Go code, as introduced with Go 1.18. -// -// Many of the types and functions in this package are proxies for the new APIs -// introduced in the standard library with Go 1.18. For example, the -// typeparams.Union type is an alias for go/types.Union, and the ForTypeSpec -// function returns the value of the go/ast.TypeSpec.TypeParams field. At Go -// versions older than 1.18 these helpers are implemented as stubs, allowing -// users of this package to write code that handles generic constructs inline, -// even if the Go version being used to compile does not support generics. -// -// Additionally, this package contains common utilities for working with the -// new generic constructs, to supplement the standard library APIs. Notably, -// the StructuralTerms API computes a minimal representation of the structural -// restrictions on a type parameter. In the future, this API may be available -// from go/types. -// -// See the example/README.md for a more detailed guide on how to update tools -// to support generics. -package typeparams - -import ( - "go/ast" - "go/token" - "go/types" -) - -// UnpackIndexExpr extracts data from AST nodes that represent index -// expressions. -// -// For an ast.IndexExpr, the resulting indices slice will contain exactly one -// index expression. For an ast.IndexListExpr (go1.18+), it may have a variable -// number of index expressions. -// -// For nodes that don't represent index expressions, the first return value of -// UnpackIndexExpr will be nil. -func UnpackIndexExpr(n ast.Node) (x ast.Expr, lbrack token.Pos, indices []ast.Expr, rbrack token.Pos) { - switch e := n.(type) { - case *ast.IndexExpr: - return e.X, e.Lbrack, []ast.Expr{e.Index}, e.Rbrack - case *IndexListExpr: - return e.X, e.Lbrack, e.Indices, e.Rbrack - } - return nil, token.NoPos, nil, token.NoPos -} - -// PackIndexExpr returns an *ast.IndexExpr or *ast.IndexListExpr, depending on -// the cardinality of indices. Calling PackIndexExpr with len(indices) == 0 -// will panic. -func PackIndexExpr(x ast.Expr, lbrack token.Pos, indices []ast.Expr, rbrack token.Pos) ast.Expr { - switch len(indices) { - case 0: - panic("empty indices") - case 1: - return &ast.IndexExpr{ - X: x, - Lbrack: lbrack, - Index: indices[0], - Rbrack: rbrack, - } - default: - return &IndexListExpr{ - X: x, - Lbrack: lbrack, - Indices: indices, - Rbrack: rbrack, - } - } -} - -// IsTypeParam reports whether t is a type parameter. -func IsTypeParam(t types.Type) bool { - _, ok := t.(*TypeParam) - return ok -} - -// OriginMethod returns the origin method associated with the method fn. -// For methods on a non-generic receiver base type, this is just -// fn. However, for methods with a generic receiver, OriginMethod returns the -// corresponding method in the method set of the origin type. -// -// As a special case, if fn is not a method (has no receiver), OriginMethod -// returns fn. -func OriginMethod(fn *types.Func) *types.Func { - recv := fn.Type().(*types.Signature).Recv() - if recv == nil { - - return fn - } - base := recv.Type() - p, isPtr := base.(*types.Pointer) - if isPtr { - base = p.Elem() - } - named, isNamed := base.(*types.Named) - if !isNamed { - // Receiver is a *types.Interface. - return fn - } - if ForNamed(named).Len() == 0 { - // Receiver base has no type parameters, so we can avoid the lookup below. - return fn - } - orig := NamedTypeOrigin(named) - gfn, _, _ := types.LookupFieldOrMethod(orig, true, fn.Pkg(), fn.Name()) - return gfn.(*types.Func) -} - -// GenericAssignableTo is a generalization of types.AssignableTo that -// implements the following rule for uninstantiated generic types: -// -// If V and T are generic named types, then V is considered assignable to T if, -// for every possible instantation of V[A_1, ..., A_N], the instantiation -// T[A_1, ..., A_N] is valid and V[A_1, ..., A_N] implements T[A_1, ..., A_N]. -// -// If T has structural constraints, they must be satisfied by V. -// -// For example, consider the following type declarations: -// -// type Interface[T any] interface { -// Accept(T) -// } -// -// type Container[T any] struct { -// Element T -// } -// -// func (c Container[T]) Accept(t T) { c.Element = t } -// -// In this case, GenericAssignableTo reports that instantiations of Container -// are assignable to the corresponding instantiation of Interface. -func GenericAssignableTo(ctxt *Context, V, T types.Type) bool { - // If V and T are not both named, or do not have matching non-empty type - // parameter lists, fall back on types.AssignableTo. - - VN, Vnamed := V.(*types.Named) - TN, Tnamed := T.(*types.Named) - if !Vnamed || !Tnamed { - return types.AssignableTo(V, T) - } - - vtparams := ForNamed(VN) - ttparams := ForNamed(TN) - if vtparams.Len() == 0 || vtparams.Len() != ttparams.Len() || NamedTypeArgs(VN).Len() != 0 || NamedTypeArgs(TN).Len() != 0 { - return types.AssignableTo(V, T) - } - - // V and T have the same (non-zero) number of type params. Instantiate both - // with the type parameters of V. This must always succeed for V, and will - // succeed for T if and only if the type set of each type parameter of V is a - // subset of the type set of the corresponding type parameter of T, meaning - // that every instantiation of V corresponds to a valid instantiation of T. - - // Minor optimization: ensure we share a context across the two - // instantiations below. - if ctxt == nil { - ctxt = NewContext() - } - - var targs []types.Type - for i := 0; i < vtparams.Len(); i++ { - targs = append(targs, vtparams.At(i)) - } - - vinst, err := Instantiate(ctxt, V, targs, true) - if err != nil { - panic("type parameters should satisfy their own constraints") - } - - tinst, err := Instantiate(ctxt, T, targs, true) - if err != nil { - return false - } - - return types.AssignableTo(vinst, tinst) -} diff --git a/vendor/golang.org/x/tools/internal/typeparams/enabled_go117.go b/vendor/golang.org/x/tools/internal/typeparams/enabled_go117.go deleted file mode 100644 index 1821239..0000000 --- a/vendor/golang.org/x/tools/internal/typeparams/enabled_go117.go +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2021 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:build !go1.18 -// +build !go1.18 - -package typeparams - -// Enabled reports whether type parameters are enabled in the current build -// environment. -const Enabled = false diff --git a/vendor/golang.org/x/tools/internal/typeparams/enabled_go118.go b/vendor/golang.org/x/tools/internal/typeparams/enabled_go118.go deleted file mode 100644 index d671488..0000000 --- a/vendor/golang.org/x/tools/internal/typeparams/enabled_go118.go +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2021 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:build go1.18 -// +build go1.18 - -package typeparams - -// Note: this constant is in a separate file as this is the only acceptable -// diff between the <1.18 API of this package and the 1.18 API. - -// Enabled reports whether type parameters are enabled in the current build -// environment. -const Enabled = true diff --git a/vendor/golang.org/x/tools/internal/typeparams/normalize.go b/vendor/golang.org/x/tools/internal/typeparams/normalize.go deleted file mode 100644 index 090f142..0000000 --- a/vendor/golang.org/x/tools/internal/typeparams/normalize.go +++ /dev/null @@ -1,216 +0,0 @@ -// Copyright 2021 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 typeparams - -import ( - "errors" - "fmt" - "go/types" - "os" - "strings" -) - -//go:generate go run copytermlist.go - -const debug = false - -var ErrEmptyTypeSet = errors.New("empty type set") - -// StructuralTerms returns a slice of terms representing the normalized -// structural type restrictions of a type parameter, if any. -// -// Structural type restrictions of a type parameter are created via -// non-interface types embedded in its constraint interface (directly, or via a -// chain of interface embeddings). For example, in the declaration -// type T[P interface{~int; m()}] int -// the structural restriction of the type parameter P is ~int. -// -// With interface embedding and unions, the specification of structural type -// restrictions may be arbitrarily complex. For example, consider the -// following: -// -// type A interface{ ~string|~[]byte } -// -// type B interface{ int|string } -// -// type C interface { ~string|~int } -// -// type T[P interface{ A|B; C }] int -// -// In this example, the structural type restriction of P is ~string|int: A|B -// expands to ~string|~[]byte|int|string, which reduces to ~string|~[]byte|int, -// which when intersected with C (~string|~int) yields ~string|int. -// -// StructuralTerms computes these expansions and reductions, producing a -// "normalized" form of the embeddings. A structural restriction is normalized -// if it is a single union containing no interface terms, and is minimal in the -// sense that removing any term changes the set of types satisfying the -// constraint. It is left as a proof for the reader that, modulo sorting, there -// is exactly one such normalized form. -// -// Because the minimal representation always takes this form, StructuralTerms -// returns a slice of tilde terms corresponding to the terms of the union in -// the normalized structural restriction. An error is returned if the -// constraint interface is invalid, exceeds complexity bounds, or has an empty -// type set. In the latter case, StructuralTerms returns ErrEmptyTypeSet. -// -// StructuralTerms makes no guarantees about the order of terms, except that it -// is deterministic. -func StructuralTerms(tparam *TypeParam) ([]*Term, error) { - constraint := tparam.Constraint() - if constraint == nil { - return nil, fmt.Errorf("%s has nil constraint", tparam) - } - iface, _ := constraint.Underlying().(*types.Interface) - if iface == nil { - return nil, fmt.Errorf("constraint is %T, not *types.Interface", constraint.Underlying()) - } - return InterfaceTermSet(iface) -} - -// InterfaceTermSet computes the normalized terms for a constraint interface, -// returning an error if the term set cannot be computed or is empty. In the -// latter case, the error will be ErrEmptyTypeSet. -// -// See the documentation of StructuralTerms for more information on -// normalization. -func InterfaceTermSet(iface *types.Interface) ([]*Term, error) { - return computeTermSet(iface) -} - -// UnionTermSet computes the normalized terms for a union, returning an error -// if the term set cannot be computed or is empty. In the latter case, the -// error will be ErrEmptyTypeSet. -// -// See the documentation of StructuralTerms for more information on -// normalization. -func UnionTermSet(union *Union) ([]*Term, error) { - return computeTermSet(union) -} - -func computeTermSet(typ types.Type) ([]*Term, error) { - tset, err := computeTermSetInternal(typ, make(map[types.Type]*termSet), 0) - if err != nil { - return nil, err - } - if tset.terms.isEmpty() { - return nil, ErrEmptyTypeSet - } - if tset.terms.isAll() { - return nil, nil - } - var terms []*Term - for _, term := range tset.terms { - terms = append(terms, NewTerm(term.tilde, term.typ)) - } - return terms, nil -} - -// A termSet holds the normalized set of terms for a given type. -// -// The name termSet is intentionally distinct from 'type set': a type set is -// all types that implement a type (and includes method restrictions), whereas -// a term set just represents the structural restrictions on a type. -type termSet struct { - complete bool - terms termlist -} - -func indentf(depth int, format string, args ...interface{}) { - fmt.Fprintf(os.Stderr, strings.Repeat(".", depth)+format+"\n", args...) -} - -func computeTermSetInternal(t types.Type, seen map[types.Type]*termSet, depth int) (res *termSet, err error) { - if t == nil { - panic("nil type") - } - - if debug { - indentf(depth, "%s", t.String()) - defer func() { - if err != nil { - indentf(depth, "=> %s", err) - } else { - indentf(depth, "=> %s", res.terms.String()) - } - }() - } - - const maxTermCount = 100 - if tset, ok := seen[t]; ok { - if !tset.complete { - return nil, fmt.Errorf("cycle detected in the declaration of %s", t) - } - return tset, nil - } - - // Mark the current type as seen to avoid infinite recursion. - tset := new(termSet) - defer func() { - tset.complete = true - }() - seen[t] = tset - - switch u := t.Underlying().(type) { - case *types.Interface: - // The term set of an interface is the intersection of the term sets of its - // embedded types. - tset.terms = allTermlist - for i := 0; i < u.NumEmbeddeds(); i++ { - embedded := u.EmbeddedType(i) - if _, ok := embedded.Underlying().(*TypeParam); ok { - return nil, fmt.Errorf("invalid embedded type %T", embedded) - } - tset2, err := computeTermSetInternal(embedded, seen, depth+1) - if err != nil { - return nil, err - } - tset.terms = tset.terms.intersect(tset2.terms) - } - case *Union: - // The term set of a union is the union of term sets of its terms. - tset.terms = nil - for i := 0; i < u.Len(); i++ { - t := u.Term(i) - var terms termlist - switch t.Type().Underlying().(type) { - case *types.Interface: - tset2, err := computeTermSetInternal(t.Type(), seen, depth+1) - if err != nil { - return nil, err - } - terms = tset2.terms - case *TypeParam, *Union: - // A stand-alone type parameter or union is not permitted as union - // term. - return nil, fmt.Errorf("invalid union term %T", t) - default: - if t.Type() == types.Typ[types.Invalid] { - continue - } - terms = termlist{{t.Tilde(), t.Type()}} - } - tset.terms = tset.terms.union(terms) - if len(tset.terms) > maxTermCount { - return nil, fmt.Errorf("exceeded max term count %d", maxTermCount) - } - } - case *TypeParam: - panic("unreachable") - default: - // For all other types, the term set is just a single non-tilde term - // holding the type itself. - if u != types.Typ[types.Invalid] { - tset.terms = termlist{{false, t}} - } - } - return tset, nil -} - -// under is a facade for the go/types internal function of the same name. It is -// used by typeterm.go. -func under(t types.Type) types.Type { - return t.Underlying() -} diff --git a/vendor/golang.org/x/tools/internal/typeparams/termlist.go b/vendor/golang.org/x/tools/internal/typeparams/termlist.go deleted file mode 100644 index 10857d5..0000000 --- a/vendor/golang.org/x/tools/internal/typeparams/termlist.go +++ /dev/null @@ -1,172 +0,0 @@ -// Copyright 2021 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. - -// Code generated by copytermlist.go DO NOT EDIT. - -package typeparams - -import ( - "bytes" - "go/types" -) - -// A termlist represents the type set represented by the union -// t1 ∪ y2 ∪ ... tn of the type sets of the terms t1 to tn. -// A termlist is in normal form if all terms are disjoint. -// termlist operations don't require the operands to be in -// normal form. -type termlist []*term - -// allTermlist represents the set of all types. -// It is in normal form. -var allTermlist = termlist{new(term)} - -// String prints the termlist exactly (without normalization). -func (xl termlist) String() string { - if len(xl) == 0 { - return "∅" - } - var buf bytes.Buffer - for i, x := range xl { - if i > 0 { - buf.WriteString(" ∪ ") - } - buf.WriteString(x.String()) - } - return buf.String() -} - -// isEmpty reports whether the termlist xl represents the empty set of types. -func (xl termlist) isEmpty() bool { - // If there's a non-nil term, the entire list is not empty. - // If the termlist is in normal form, this requires at most - // one iteration. - for _, x := range xl { - if x != nil { - return false - } - } - return true -} - -// isAll reports whether the termlist xl represents the set of all types. -func (xl termlist) isAll() bool { - // If there's a 𝓤 term, the entire list is 𝓤. - // If the termlist is in normal form, this requires at most - // one iteration. - for _, x := range xl { - if x != nil && x.typ == nil { - return true - } - } - return false -} - -// norm returns the normal form of xl. -func (xl termlist) norm() termlist { - // Quadratic algorithm, but good enough for now. - // TODO(gri) fix asymptotic performance - used := make([]bool, len(xl)) - var rl termlist - for i, xi := range xl { - if xi == nil || used[i] { - continue - } - for j := i + 1; j < len(xl); j++ { - xj := xl[j] - if xj == nil || used[j] { - continue - } - if u1, u2 := xi.union(xj); u2 == nil { - // If we encounter a 𝓤 term, the entire list is 𝓤. - // Exit early. - // (Note that this is not just an optimization; - // if we continue, we may end up with a 𝓤 term - // and other terms and the result would not be - // in normal form.) - if u1.typ == nil { - return allTermlist - } - xi = u1 - used[j] = true // xj is now unioned into xi - ignore it in future iterations - } - } - rl = append(rl, xi) - } - return rl -} - -// If the type set represented by xl is specified by a single (non-𝓤) term, -// structuralType returns that type. Otherwise it returns nil. -func (xl termlist) structuralType() types.Type { - if nl := xl.norm(); len(nl) == 1 { - return nl[0].typ // if nl.isAll() then typ is nil, which is ok - } - return nil -} - -// union returns the union xl ∪ yl. -func (xl termlist) union(yl termlist) termlist { - return append(xl, yl...).norm() -} - -// intersect returns the intersection xl ∩ yl. -func (xl termlist) intersect(yl termlist) termlist { - if xl.isEmpty() || yl.isEmpty() { - return nil - } - - // Quadratic algorithm, but good enough for now. - // TODO(gri) fix asymptotic performance - var rl termlist - for _, x := range xl { - for _, y := range yl { - if r := x.intersect(y); r != nil { - rl = append(rl, r) - } - } - } - return rl.norm() -} - -// equal reports whether xl and yl represent the same type set. -func (xl termlist) equal(yl termlist) bool { - // TODO(gri) this should be more efficient - return xl.subsetOf(yl) && yl.subsetOf(xl) -} - -// includes reports whether t ∈ xl. -func (xl termlist) includes(t types.Type) bool { - for _, x := range xl { - if x.includes(t) { - return true - } - } - return false -} - -// supersetOf reports whether y ⊆ xl. -func (xl termlist) supersetOf(y *term) bool { - for _, x := range xl { - if y.subsetOf(x) { - return true - } - } - return false -} - -// subsetOf reports whether xl ⊆ yl. -func (xl termlist) subsetOf(yl termlist) bool { - if yl.isEmpty() { - return xl.isEmpty() - } - - // each term x of xl must be a subset of yl - for _, x := range xl { - if !yl.supersetOf(x) { - return false // x is not a subset yl - } - } - return true -} diff --git a/vendor/golang.org/x/tools/internal/typeparams/typeparams_go117.go b/vendor/golang.org/x/tools/internal/typeparams/typeparams_go117.go deleted file mode 100644 index b478897..0000000 --- a/vendor/golang.org/x/tools/internal/typeparams/typeparams_go117.go +++ /dev/null @@ -1,197 +0,0 @@ -// Copyright 2021 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:build !go1.18 -// +build !go1.18 - -package typeparams - -import ( - "go/ast" - "go/token" - "go/types" -) - -func unsupported() { - panic("type parameters are unsupported at this go version") -} - -// IndexListExpr is a placeholder type, as type parameters are not supported at -// this Go version. Its methods panic on use. -type IndexListExpr struct { - ast.Expr - X ast.Expr // expression - Lbrack token.Pos // position of "[" - Indices []ast.Expr // index expressions - Rbrack token.Pos // position of "]" -} - -// ForTypeSpec returns an empty field list, as type parameters on not supported -// at this Go version. -func ForTypeSpec(*ast.TypeSpec) *ast.FieldList { - return nil -} - -// ForFuncType returns an empty field list, as type parameters are not -// supported at this Go version. -func ForFuncType(*ast.FuncType) *ast.FieldList { - return nil -} - -// TypeParam is a placeholder type, as type parameters are not supported at -// this Go version. Its methods panic on use. -type TypeParam struct{ types.Type } - -func (*TypeParam) Index() int { unsupported(); return 0 } -func (*TypeParam) Constraint() types.Type { unsupported(); return nil } -func (*TypeParam) Obj() *types.TypeName { unsupported(); return nil } - -// TypeParamList is a placeholder for an empty type parameter list. -type TypeParamList struct{} - -func (*TypeParamList) Len() int { return 0 } -func (*TypeParamList) At(int) *TypeParam { unsupported(); return nil } - -// TypeList is a placeholder for an empty type list. -type TypeList struct{} - -func (*TypeList) Len() int { return 0 } -func (*TypeList) At(int) types.Type { unsupported(); return nil } - -// NewTypeParam is unsupported at this Go version, and panics. -func NewTypeParam(name *types.TypeName, constraint types.Type) *TypeParam { - unsupported() - return nil -} - -// SetTypeParamConstraint is unsupported at this Go version, and panics. -func SetTypeParamConstraint(tparam *TypeParam, constraint types.Type) { - unsupported() -} - -// NewSignatureType calls types.NewSignature, panicking if recvTypeParams or -// typeParams is non-empty. -func NewSignatureType(recv *types.Var, recvTypeParams, typeParams []*TypeParam, params, results *types.Tuple, variadic bool) *types.Signature { - if len(recvTypeParams) != 0 || len(typeParams) != 0 { - panic("signatures cannot have type parameters at this Go version") - } - return types.NewSignature(recv, params, results, variadic) -} - -// ForSignature returns an empty slice. -func ForSignature(*types.Signature) *TypeParamList { - return nil -} - -// RecvTypeParams returns a nil slice. -func RecvTypeParams(sig *types.Signature) *TypeParamList { - return nil -} - -// IsComparable returns false, as no interfaces are type-restricted at this Go -// version. -func IsComparable(*types.Interface) bool { - return false -} - -// IsMethodSet returns true, as no interfaces are type-restricted at this Go -// version. -func IsMethodSet(*types.Interface) bool { - return true -} - -// IsImplicit returns false, as no interfaces are implicit at this Go version. -func IsImplicit(*types.Interface) bool { - return false -} - -// MarkImplicit does nothing, because this Go version does not have implicit -// interfaces. -func MarkImplicit(*types.Interface) {} - -// ForNamed returns an empty type parameter list, as type parameters are not -// supported at this Go version. -func ForNamed(*types.Named) *TypeParamList { - return nil -} - -// SetForNamed panics if tparams is non-empty. -func SetForNamed(_ *types.Named, tparams []*TypeParam) { - if len(tparams) > 0 { - unsupported() - } -} - -// NamedTypeArgs returns nil. -func NamedTypeArgs(*types.Named) *TypeList { - return nil -} - -// NamedTypeOrigin is the identity method at this Go version. -func NamedTypeOrigin(named *types.Named) types.Type { - return named -} - -// Term holds information about a structural type restriction. -type Term struct { - tilde bool - typ types.Type -} - -func (m *Term) Tilde() bool { return m.tilde } -func (m *Term) Type() types.Type { return m.typ } -func (m *Term) String() string { - pre := "" - if m.tilde { - pre = "~" - } - return pre + m.typ.String() -} - -// NewTerm is unsupported at this Go version, and panics. -func NewTerm(tilde bool, typ types.Type) *Term { - return &Term{tilde, typ} -} - -// Union is a placeholder type, as type parameters are not supported at this Go -// version. Its methods panic on use. -type Union struct{ types.Type } - -func (*Union) Len() int { return 0 } -func (*Union) Term(i int) *Term { unsupported(); return nil } - -// NewUnion is unsupported at this Go version, and panics. -func NewUnion(terms []*Term) *Union { - unsupported() - return nil -} - -// InitInstanceInfo is a noop at this Go version. -func InitInstanceInfo(*types.Info) {} - -// Instance is a placeholder type, as type parameters are not supported at this -// Go version. -type Instance struct { - TypeArgs *TypeList - Type types.Type -} - -// GetInstances returns a nil map, as type parameters are not supported at this -// Go version. -func GetInstances(info *types.Info) map[*ast.Ident]Instance { return nil } - -// Context is a placeholder type, as type parameters are not supported at -// this Go version. -type Context struct{} - -// NewContext returns a placeholder Context instance. -func NewContext() *Context { - return &Context{} -} - -// Instantiate is unsupported on this Go version, and panics. -func Instantiate(ctxt *Context, typ types.Type, targs []types.Type, validate bool) (types.Type, error) { - unsupported() - return nil, nil -} diff --git a/vendor/golang.org/x/tools/internal/typeparams/typeparams_go118.go b/vendor/golang.org/x/tools/internal/typeparams/typeparams_go118.go deleted file mode 100644 index 114a36b..0000000 --- a/vendor/golang.org/x/tools/internal/typeparams/typeparams_go118.go +++ /dev/null @@ -1,151 +0,0 @@ -// Copyright 2021 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:build go1.18 -// +build go1.18 - -package typeparams - -import ( - "go/ast" - "go/types" -) - -// IndexListExpr is an alias for ast.IndexListExpr. -type IndexListExpr = ast.IndexListExpr - -// ForTypeSpec returns n.TypeParams. -func ForTypeSpec(n *ast.TypeSpec) *ast.FieldList { - if n == nil { - return nil - } - return n.TypeParams -} - -// ForFuncType returns n.TypeParams. -func ForFuncType(n *ast.FuncType) *ast.FieldList { - if n == nil { - return nil - } - return n.TypeParams -} - -// TypeParam is an alias for types.TypeParam -type TypeParam = types.TypeParam - -// TypeParamList is an alias for types.TypeParamList -type TypeParamList = types.TypeParamList - -// TypeList is an alias for types.TypeList -type TypeList = types.TypeList - -// NewTypeParam calls types.NewTypeParam. -func NewTypeParam(name *types.TypeName, constraint types.Type) *TypeParam { - return types.NewTypeParam(name, constraint) -} - -// SetTypeParamConstraint calls tparam.SetConstraint(constraint). -func SetTypeParamConstraint(tparam *TypeParam, constraint types.Type) { - tparam.SetConstraint(constraint) -} - -// NewSignatureType calls types.NewSignatureType. -func NewSignatureType(recv *types.Var, recvTypeParams, typeParams []*TypeParam, params, results *types.Tuple, variadic bool) *types.Signature { - return types.NewSignatureType(recv, recvTypeParams, typeParams, params, results, variadic) -} - -// ForSignature returns sig.TypeParams() -func ForSignature(sig *types.Signature) *TypeParamList { - return sig.TypeParams() -} - -// RecvTypeParams returns sig.RecvTypeParams(). -func RecvTypeParams(sig *types.Signature) *TypeParamList { - return sig.RecvTypeParams() -} - -// IsComparable calls iface.IsComparable(). -func IsComparable(iface *types.Interface) bool { - return iface.IsComparable() -} - -// IsMethodSet calls iface.IsMethodSet(). -func IsMethodSet(iface *types.Interface) bool { - return iface.IsMethodSet() -} - -// IsImplicit calls iface.IsImplicit(). -func IsImplicit(iface *types.Interface) bool { - return iface.IsImplicit() -} - -// MarkImplicit calls iface.MarkImplicit(). -func MarkImplicit(iface *types.Interface) { - iface.MarkImplicit() -} - -// ForNamed extracts the (possibly empty) type parameter object list from -// named. -func ForNamed(named *types.Named) *TypeParamList { - return named.TypeParams() -} - -// SetForNamed sets the type params tparams on n. Each tparam must be of -// dynamic type *types.TypeParam. -func SetForNamed(n *types.Named, tparams []*TypeParam) { - n.SetTypeParams(tparams) -} - -// NamedTypeArgs returns named.TypeArgs(). -func NamedTypeArgs(named *types.Named) *TypeList { - return named.TypeArgs() -} - -// NamedTypeOrigin returns named.Orig(). -func NamedTypeOrigin(named *types.Named) types.Type { - return named.Origin() -} - -// Term is an alias for types.Term. -type Term = types.Term - -// NewTerm calls types.NewTerm. -func NewTerm(tilde bool, typ types.Type) *Term { - return types.NewTerm(tilde, typ) -} - -// Union is an alias for types.Union -type Union = types.Union - -// NewUnion calls types.NewUnion. -func NewUnion(terms []*Term) *Union { - return types.NewUnion(terms) -} - -// InitInstanceInfo initializes info to record information about type and -// function instances. -func InitInstanceInfo(info *types.Info) { - info.Instances = make(map[*ast.Ident]types.Instance) -} - -// Instance is an alias for types.Instance. -type Instance = types.Instance - -// GetInstances returns info.Instances. -func GetInstances(info *types.Info) map[*ast.Ident]Instance { - return info.Instances -} - -// Context is an alias for types.Context. -type Context = types.Context - -// NewContext calls types.NewContext. -func NewContext() *Context { - return types.NewContext() -} - -// Instantiate calls types.Instantiate. -func Instantiate(ctxt *Context, typ types.Type, targs []types.Type, validate bool) (types.Type, error) { - return types.Instantiate(ctxt, typ, targs, validate) -} diff --git a/vendor/golang.org/x/tools/internal/typeparams/typeterm.go b/vendor/golang.org/x/tools/internal/typeparams/typeterm.go deleted file mode 100644 index 7ddee28..0000000 --- a/vendor/golang.org/x/tools/internal/typeparams/typeterm.go +++ /dev/null @@ -1,170 +0,0 @@ -// Copyright 2021 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. - -// Code generated by copytermlist.go DO NOT EDIT. - -package typeparams - -import "go/types" - -// A term describes elementary type sets: -// -// ∅: (*term)(nil) == ∅ // set of no types (empty set) -// 𝓤: &term{} == 𝓤 // set of all types (𝓤niverse) -// T: &term{false, T} == {T} // set of type T -// ~t: &term{true, t} == {t' | under(t') == t} // set of types with underlying type t -// -type term struct { - tilde bool // valid if typ != nil - typ types.Type -} - -func (x *term) String() string { - switch { - case x == nil: - return "∅" - case x.typ == nil: - return "𝓤" - case x.tilde: - return "~" + x.typ.String() - default: - return x.typ.String() - } -} - -// equal reports whether x and y represent the same type set. -func (x *term) equal(y *term) bool { - // easy cases - switch { - case x == nil || y == nil: - return x == y - case x.typ == nil || y.typ == nil: - return x.typ == y.typ - } - // ∅ ⊂ x, y ⊂ 𝓤 - - return x.tilde == y.tilde && types.Identical(x.typ, y.typ) -} - -// union returns the union x ∪ y: zero, one, or two non-nil terms. -func (x *term) union(y *term) (_, _ *term) { - // easy cases - switch { - case x == nil && y == nil: - return nil, nil // ∅ ∪ ∅ == ∅ - case x == nil: - return y, nil // ∅ ∪ y == y - case y == nil: - return x, nil // x ∪ ∅ == x - case x.typ == nil: - return x, nil // 𝓤 ∪ y == 𝓤 - case y.typ == nil: - return y, nil // x ∪ 𝓤 == 𝓤 - } - // ∅ ⊂ x, y ⊂ 𝓤 - - if x.disjoint(y) { - return x, y // x ∪ y == (x, y) if x ∩ y == ∅ - } - // x.typ == y.typ - - // ~t ∪ ~t == ~t - // ~t ∪ T == ~t - // T ∪ ~t == ~t - // T ∪ T == T - if x.tilde || !y.tilde { - return x, nil - } - return y, nil -} - -// intersect returns the intersection x ∩ y. -func (x *term) intersect(y *term) *term { - // easy cases - switch { - case x == nil || y == nil: - return nil // ∅ ∩ y == ∅ and ∩ ∅ == ∅ - case x.typ == nil: - return y // 𝓤 ∩ y == y - case y.typ == nil: - return x // x ∩ 𝓤 == x - } - // ∅ ⊂ x, y ⊂ 𝓤 - - if x.disjoint(y) { - return nil // x ∩ y == ∅ if x ∩ y == ∅ - } - // x.typ == y.typ - - // ~t ∩ ~t == ~t - // ~t ∩ T == T - // T ∩ ~t == T - // T ∩ T == T - if !x.tilde || y.tilde { - return x - } - return y -} - -// includes reports whether t ∈ x. -func (x *term) includes(t types.Type) bool { - // easy cases - switch { - case x == nil: - return false // t ∈ ∅ == false - case x.typ == nil: - return true // t ∈ 𝓤 == true - } - // ∅ ⊂ x ⊂ 𝓤 - - u := t - if x.tilde { - u = under(u) - } - return types.Identical(x.typ, u) -} - -// subsetOf reports whether x ⊆ y. -func (x *term) subsetOf(y *term) bool { - // easy cases - switch { - case x == nil: - return true // ∅ ⊆ y == true - case y == nil: - return false // x ⊆ ∅ == false since x != ∅ - case y.typ == nil: - return true // x ⊆ 𝓤 == true - case x.typ == nil: - return false // 𝓤 ⊆ y == false since y != 𝓤 - } - // ∅ ⊂ x, y ⊂ 𝓤 - - if x.disjoint(y) { - return false // x ⊆ y == false if x ∩ y == ∅ - } - // x.typ == y.typ - - // ~t ⊆ ~t == true - // ~t ⊆ T == false - // T ⊆ ~t == true - // T ⊆ T == true - return !x.tilde || y.tilde -} - -// disjoint reports whether x ∩ y == ∅. -// x.typ and y.typ must not be nil. -func (x *term) disjoint(y *term) bool { - if debug && (x.typ == nil || y.typ == nil) { - panic("invalid argument(s)") - } - ux := x.typ - if y.tilde { - ux = under(ux) - } - uy := y.typ - if x.tilde { - uy = under(uy) - } - return !types.Identical(ux, uy) -} diff --git a/vendor/golang.org/x/tools/internal/typesinternal/errorcode.go b/vendor/golang.org/x/tools/internal/typesinternal/errorcode.go deleted file mode 100644 index d38ee3c..0000000 --- a/vendor/golang.org/x/tools/internal/typesinternal/errorcode.go +++ /dev/null @@ -1,1526 +0,0 @@ -// Copyright 2020 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 typesinternal - -//go:generate stringer -type=ErrorCode - -type ErrorCode int - -// This file defines the error codes that can be produced during type-checking. -// Collectively, these codes provide an identifier that may be used to -// implement special handling for certain types of errors. -// -// Error codes should be fine-grained enough that the exact nature of the error -// can be easily determined, but coarse enough that they are not an -// implementation detail of the type checking algorithm. As a rule-of-thumb, -// errors should be considered equivalent if there is a theoretical refactoring -// of the type checker in which they are emitted in exactly one place. For -// example, the type checker emits different error messages for "too many -// arguments" and "too few arguments", but one can imagine an alternative type -// checker where this check instead just emits a single "wrong number of -// arguments", so these errors should have the same code. -// -// Error code names should be as brief as possible while retaining accuracy and -// distinctiveness. In most cases names should start with an adjective -// describing the nature of the error (e.g. "invalid", "unused", "misplaced"), -// and end with a noun identifying the relevant language object. For example, -// "DuplicateDecl" or "InvalidSliceExpr". For brevity, naming follows the -// convention that "bad" implies a problem with syntax, and "invalid" implies a -// problem with types. - -const ( - _ ErrorCode = iota - - // Test is reserved for errors that only apply while in self-test mode. - Test - - /* package names */ - - // BlankPkgName occurs when a package name is the blank identifier "_". - // - // Per the spec: - // "The PackageName must not be the blank identifier." - BlankPkgName - - // MismatchedPkgName occurs when a file's package name doesn't match the - // package name already established by other files. - MismatchedPkgName - - // InvalidPkgUse occurs when a package identifier is used outside of a - // selector expression. - // - // Example: - // import "fmt" - // - // var _ = fmt - InvalidPkgUse - - /* imports */ - - // BadImportPath occurs when an import path is not valid. - BadImportPath - - // BrokenImport occurs when importing a package fails. - // - // Example: - // import "amissingpackage" - BrokenImport - - // ImportCRenamed occurs when the special import "C" is renamed. "C" is a - // pseudo-package, and must not be renamed. - // - // Example: - // import _ "C" - ImportCRenamed - - // UnusedImport occurs when an import is unused. - // - // Example: - // import "fmt" - // - // func main() {} - UnusedImport - - /* initialization */ - - // InvalidInitCycle occurs when an invalid cycle is detected within the - // initialization graph. - // - // Example: - // var x int = f() - // - // func f() int { return x } - InvalidInitCycle - - /* decls */ - - // DuplicateDecl occurs when an identifier is declared multiple times. - // - // Example: - // var x = 1 - // var x = 2 - DuplicateDecl - - // InvalidDeclCycle occurs when a declaration cycle is not valid. - // - // Example: - // import "unsafe" - // - // type T struct { - // a [n]int - // } - // - // var n = unsafe.Sizeof(T{}) - InvalidDeclCycle - - // InvalidTypeCycle occurs when a cycle in type definitions results in a - // type that is not well-defined. - // - // Example: - // import "unsafe" - // - // type T [unsafe.Sizeof(T{})]int - InvalidTypeCycle - - /* decls > const */ - - // InvalidConstInit occurs when a const declaration has a non-constant - // initializer. - // - // Example: - // var x int - // const _ = x - InvalidConstInit - - // InvalidConstVal occurs when a const value cannot be converted to its - // target type. - // - // TODO(findleyr): this error code and example are not very clear. Consider - // removing it. - // - // Example: - // const _ = 1 << "hello" - InvalidConstVal - - // InvalidConstType occurs when the underlying type in a const declaration - // is not a valid constant type. - // - // Example: - // const c *int = 4 - InvalidConstType - - /* decls > var (+ other variable assignment codes) */ - - // UntypedNil occurs when the predeclared (untyped) value nil is used to - // initialize a variable declared without an explicit type. - // - // Example: - // var x = nil - UntypedNil - - // WrongAssignCount occurs when the number of values on the right-hand side - // of an assignment or or initialization expression does not match the number - // of variables on the left-hand side. - // - // Example: - // var x = 1, 2 - WrongAssignCount - - // UnassignableOperand occurs when the left-hand side of an assignment is - // not assignable. - // - // Example: - // func f() { - // const c = 1 - // c = 2 - // } - UnassignableOperand - - // NoNewVar occurs when a short variable declaration (':=') does not declare - // new variables. - // - // Example: - // func f() { - // x := 1 - // x := 2 - // } - NoNewVar - - // MultiValAssignOp occurs when an assignment operation (+=, *=, etc) does - // not have single-valued left-hand or right-hand side. - // - // Per the spec: - // "In assignment operations, both the left- and right-hand expression lists - // must contain exactly one single-valued expression" - // - // Example: - // func f() int { - // x, y := 1, 2 - // x, y += 1 - // return x + y - // } - MultiValAssignOp - - // InvalidIfaceAssign occurs when a value of type T is used as an - // interface, but T does not implement a method of the expected interface. - // - // Example: - // type I interface { - // f() - // } - // - // type T int - // - // var x I = T(1) - InvalidIfaceAssign - - // InvalidChanAssign occurs when a chan assignment is invalid. - // - // Per the spec, a value x is assignable to a channel type T if: - // "x is a bidirectional channel value, T is a channel type, x's type V and - // T have identical element types, and at least one of V or T is not a - // defined type." - // - // Example: - // type T1 chan int - // type T2 chan int - // - // var x T1 - // // Invalid assignment because both types are named - // var _ T2 = x - InvalidChanAssign - - // IncompatibleAssign occurs when the type of the right-hand side expression - // in an assignment cannot be assigned to the type of the variable being - // assigned. - // - // Example: - // var x []int - // var _ int = x - IncompatibleAssign - - // UnaddressableFieldAssign occurs when trying to assign to a struct field - // in a map value. - // - // Example: - // func f() { - // m := make(map[string]struct{i int}) - // m["foo"].i = 42 - // } - UnaddressableFieldAssign - - /* decls > type (+ other type expression codes) */ - - // NotAType occurs when the identifier used as the underlying type in a type - // declaration or the right-hand side of a type alias does not denote a type. - // - // Example: - // var S = 2 - // - // type T S - NotAType - - // InvalidArrayLen occurs when an array length is not a constant value. - // - // Example: - // var n = 3 - // var _ = [n]int{} - InvalidArrayLen - - // BlankIfaceMethod occurs when a method name is '_'. - // - // Per the spec: - // "The name of each explicitly specified method must be unique and not - // blank." - // - // Example: - // type T interface { - // _(int) - // } - BlankIfaceMethod - - // IncomparableMapKey occurs when a map key type does not support the == and - // != operators. - // - // Per the spec: - // "The comparison operators == and != must be fully defined for operands of - // the key type; thus the key type must not be a function, map, or slice." - // - // Example: - // var x map[T]int - // - // type T []int - IncomparableMapKey - - // InvalidIfaceEmbed occurs when a non-interface type is embedded in an - // interface. - // - // Example: - // type T struct {} - // - // func (T) m() - // - // type I interface { - // T - // } - InvalidIfaceEmbed - - // InvalidPtrEmbed occurs when an embedded field is of the pointer form *T, - // and T itself is itself a pointer, an unsafe.Pointer, or an interface. - // - // Per the spec: - // "An embedded field must be specified as a type name T or as a pointer to - // a non-interface type name *T, and T itself may not be a pointer type." - // - // Example: - // type T *int - // - // type S struct { - // *T - // } - InvalidPtrEmbed - - /* decls > func and method */ - - // BadRecv occurs when a method declaration does not have exactly one - // receiver parameter. - // - // Example: - // func () _() {} - BadRecv - - // InvalidRecv occurs when a receiver type expression is not of the form T - // or *T, or T is a pointer type. - // - // Example: - // type T struct {} - // - // func (**T) m() {} - InvalidRecv - - // DuplicateFieldAndMethod occurs when an identifier appears as both a field - // and method name. - // - // Example: - // type T struct { - // m int - // } - // - // func (T) m() {} - DuplicateFieldAndMethod - - // DuplicateMethod occurs when two methods on the same receiver type have - // the same name. - // - // Example: - // type T struct {} - // func (T) m() {} - // func (T) m(i int) int { return i } - DuplicateMethod - - /* decls > special */ - - // InvalidBlank occurs when a blank identifier is used as a value or type. - // - // Per the spec: - // "The blank identifier may appear as an operand only on the left-hand side - // of an assignment." - // - // Example: - // var x = _ - InvalidBlank - - // InvalidIota occurs when the predeclared identifier iota is used outside - // of a constant declaration. - // - // Example: - // var x = iota - InvalidIota - - // MissingInitBody occurs when an init function is missing its body. - // - // Example: - // func init() - MissingInitBody - - // InvalidInitSig occurs when an init function declares parameters or - // results. - // - // Example: - // func init() int { return 1 } - InvalidInitSig - - // InvalidInitDecl occurs when init is declared as anything other than a - // function. - // - // Example: - // var init = 1 - InvalidInitDecl - - // InvalidMainDecl occurs when main is declared as anything other than a - // function, in a main package. - InvalidMainDecl - - /* exprs */ - - // TooManyValues occurs when a function returns too many values for the - // expression context in which it is used. - // - // Example: - // func ReturnTwo() (int, int) { - // return 1, 2 - // } - // - // var x = ReturnTwo() - TooManyValues - - // NotAnExpr occurs when a type expression is used where a value expression - // is expected. - // - // Example: - // type T struct {} - // - // func f() { - // T - // } - NotAnExpr - - /* exprs > const */ - - // TruncatedFloat occurs when a float constant is truncated to an integer - // value. - // - // Example: - // var _ int = 98.6 - TruncatedFloat - - // NumericOverflow occurs when a numeric constant overflows its target type. - // - // Example: - // var x int8 = 1000 - NumericOverflow - - /* exprs > operation */ - - // UndefinedOp occurs when an operator is not defined for the type(s) used - // in an operation. - // - // Example: - // var c = "a" - "b" - UndefinedOp - - // MismatchedTypes occurs when operand types are incompatible in a binary - // operation. - // - // Example: - // var a = "hello" - // var b = 1 - // var c = a - b - MismatchedTypes - - // DivByZero occurs when a division operation is provable at compile - // time to be a division by zero. - // - // Example: - // const divisor = 0 - // var x int = 1/divisor - DivByZero - - // NonNumericIncDec occurs when an increment or decrement operator is - // applied to a non-numeric value. - // - // Example: - // func f() { - // var c = "c" - // c++ - // } - NonNumericIncDec - - /* exprs > ptr */ - - // UnaddressableOperand occurs when the & operator is applied to an - // unaddressable expression. - // - // Example: - // var x = &1 - UnaddressableOperand - - // InvalidIndirection occurs when a non-pointer value is indirected via the - // '*' operator. - // - // Example: - // var x int - // var y = *x - InvalidIndirection - - /* exprs > [] */ - - // NonIndexableOperand occurs when an index operation is applied to a value - // that cannot be indexed. - // - // Example: - // var x = 1 - // var y = x[1] - NonIndexableOperand - - // InvalidIndex occurs when an index argument is not of integer type, - // negative, or out-of-bounds. - // - // Example: - // var s = [...]int{1,2,3} - // var x = s[5] - // - // Example: - // var s = []int{1,2,3} - // var _ = s[-1] - // - // Example: - // var s = []int{1,2,3} - // var i string - // var _ = s[i] - InvalidIndex - - // SwappedSliceIndices occurs when constant indices in a slice expression - // are decreasing in value. - // - // Example: - // var _ = []int{1,2,3}[2:1] - SwappedSliceIndices - - /* operators > slice */ - - // NonSliceableOperand occurs when a slice operation is applied to a value - // whose type is not sliceable, or is unaddressable. - // - // Example: - // var x = [...]int{1, 2, 3}[:1] - // - // Example: - // var x = 1 - // var y = 1[:1] - NonSliceableOperand - - // InvalidSliceExpr occurs when a three-index slice expression (a[x:y:z]) is - // applied to a string. - // - // Example: - // var s = "hello" - // var x = s[1:2:3] - InvalidSliceExpr - - /* exprs > shift */ - - // InvalidShiftCount occurs when the right-hand side of a shift operation is - // either non-integer, negative, or too large. - // - // Example: - // var ( - // x string - // y int = 1 << x - // ) - InvalidShiftCount - - // InvalidShiftOperand occurs when the shifted operand is not an integer. - // - // Example: - // var s = "hello" - // var x = s << 2 - InvalidShiftOperand - - /* exprs > chan */ - - // InvalidReceive occurs when there is a channel receive from a value that - // is either not a channel, or is a send-only channel. - // - // Example: - // func f() { - // var x = 1 - // <-x - // } - InvalidReceive - - // InvalidSend occurs when there is a channel send to a value that is not a - // channel, or is a receive-only channel. - // - // Example: - // func f() { - // var x = 1 - // x <- "hello!" - // } - InvalidSend - - /* exprs > literal */ - - // DuplicateLitKey occurs when an index is duplicated in a slice, array, or - // map literal. - // - // Example: - // var _ = []int{0:1, 0:2} - // - // Example: - // var _ = map[string]int{"a": 1, "a": 2} - DuplicateLitKey - - // MissingLitKey occurs when a map literal is missing a key expression. - // - // Example: - // var _ = map[string]int{1} - MissingLitKey - - // InvalidLitIndex occurs when the key in a key-value element of a slice or - // array literal is not an integer constant. - // - // Example: - // var i = 0 - // var x = []string{i: "world"} - InvalidLitIndex - - // OversizeArrayLit occurs when an array literal exceeds its length. - // - // Example: - // var _ = [2]int{1,2,3} - OversizeArrayLit - - // MixedStructLit occurs when a struct literal contains a mix of positional - // and named elements. - // - // Example: - // var _ = struct{i, j int}{i: 1, 2} - MixedStructLit - - // InvalidStructLit occurs when a positional struct literal has an incorrect - // number of values. - // - // Example: - // var _ = struct{i, j int}{1,2,3} - InvalidStructLit - - // MissingLitField occurs when a struct literal refers to a field that does - // not exist on the struct type. - // - // Example: - // var _ = struct{i int}{j: 2} - MissingLitField - - // DuplicateLitField occurs when a struct literal contains duplicated - // fields. - // - // Example: - // var _ = struct{i int}{i: 1, i: 2} - DuplicateLitField - - // UnexportedLitField occurs when a positional struct literal implicitly - // assigns an unexported field of an imported type. - UnexportedLitField - - // InvalidLitField occurs when a field name is not a valid identifier. - // - // Example: - // var _ = struct{i int}{1: 1} - InvalidLitField - - // UntypedLit occurs when a composite literal omits a required type - // identifier. - // - // Example: - // type outer struct{ - // inner struct { i int } - // } - // - // var _ = outer{inner: {1}} - UntypedLit - - // InvalidLit occurs when a composite literal expression does not match its - // type. - // - // Example: - // type P *struct{ - // x int - // } - // var _ = P {} - InvalidLit - - /* exprs > selector */ - - // AmbiguousSelector occurs when a selector is ambiguous. - // - // Example: - // type E1 struct { i int } - // type E2 struct { i int } - // type T struct { E1; E2 } - // - // var x T - // var _ = x.i - AmbiguousSelector - - // UndeclaredImportedName occurs when a package-qualified identifier is - // undeclared by the imported package. - // - // Example: - // import "go/types" - // - // var _ = types.NotAnActualIdentifier - UndeclaredImportedName - - // UnexportedName occurs when a selector refers to an unexported identifier - // of an imported package. - // - // Example: - // import "reflect" - // - // type _ reflect.flag - UnexportedName - - // UndeclaredName occurs when an identifier is not declared in the current - // scope. - // - // Example: - // var x T - UndeclaredName - - // MissingFieldOrMethod occurs when a selector references a field or method - // that does not exist. - // - // Example: - // type T struct {} - // - // var x = T{}.f - MissingFieldOrMethod - - /* exprs > ... */ - - // BadDotDotDotSyntax occurs when a "..." occurs in a context where it is - // not valid. - // - // Example: - // var _ = map[int][...]int{0: {}} - BadDotDotDotSyntax - - // NonVariadicDotDotDot occurs when a "..." is used on the final argument to - // a non-variadic function. - // - // Example: - // func printArgs(s []string) { - // for _, a := range s { - // println(a) - // } - // } - // - // func f() { - // s := []string{"a", "b", "c"} - // printArgs(s...) - // } - NonVariadicDotDotDot - - // MisplacedDotDotDot occurs when a "..." is used somewhere other than the - // final argument to a function call. - // - // Example: - // func printArgs(args ...int) { - // for _, a := range args { - // println(a) - // } - // } - // - // func f() { - // a := []int{1,2,3} - // printArgs(0, a...) - // } - MisplacedDotDotDot - - // InvalidDotDotDotOperand occurs when a "..." operator is applied to a - // single-valued operand. - // - // Example: - // func printArgs(args ...int) { - // for _, a := range args { - // println(a) - // } - // } - // - // func f() { - // a := 1 - // printArgs(a...) - // } - // - // Example: - // func args() (int, int) { - // return 1, 2 - // } - // - // func printArgs(args ...int) { - // for _, a := range args { - // println(a) - // } - // } - // - // func g() { - // printArgs(args()...) - // } - InvalidDotDotDotOperand - - // InvalidDotDotDot occurs when a "..." is used in a non-variadic built-in - // function. - // - // Example: - // var s = []int{1, 2, 3} - // var l = len(s...) - InvalidDotDotDot - - /* exprs > built-in */ - - // UncalledBuiltin occurs when a built-in function is used as a - // function-valued expression, instead of being called. - // - // Per the spec: - // "The built-in functions do not have standard Go types, so they can only - // appear in call expressions; they cannot be used as function values." - // - // Example: - // var _ = copy - UncalledBuiltin - - // InvalidAppend occurs when append is called with a first argument that is - // not a slice. - // - // Example: - // var _ = append(1, 2) - InvalidAppend - - // InvalidCap occurs when an argument to the cap built-in function is not of - // supported type. - // - // See https://golang.org/ref/spec#Lengthand_capacity for information on - // which underlying types are supported as arguments to cap and len. - // - // Example: - // var s = 2 - // var x = cap(s) - InvalidCap - - // InvalidClose occurs when close(...) is called with an argument that is - // not of channel type, or that is a receive-only channel. - // - // Example: - // func f() { - // var x int - // close(x) - // } - InvalidClose - - // InvalidCopy occurs when the arguments are not of slice type or do not - // have compatible type. - // - // See https://golang.org/ref/spec#Appendingand_copying_slices for more - // information on the type requirements for the copy built-in. - // - // Example: - // func f() { - // var x []int - // y := []int64{1,2,3} - // copy(x, y) - // } - InvalidCopy - - // InvalidComplex occurs when the complex built-in function is called with - // arguments with incompatible types. - // - // Example: - // var _ = complex(float32(1), float64(2)) - InvalidComplex - - // InvalidDelete occurs when the delete built-in function is called with a - // first argument that is not a map. - // - // Example: - // func f() { - // m := "hello" - // delete(m, "e") - // } - InvalidDelete - - // InvalidImag occurs when the imag built-in function is called with an - // argument that does not have complex type. - // - // Example: - // var _ = imag(int(1)) - InvalidImag - - // InvalidLen occurs when an argument to the len built-in function is not of - // supported type. - // - // See https://golang.org/ref/spec#Lengthand_capacity for information on - // which underlying types are supported as arguments to cap and len. - // - // Example: - // var s = 2 - // var x = len(s) - InvalidLen - - // SwappedMakeArgs occurs when make is called with three arguments, and its - // length argument is larger than its capacity argument. - // - // Example: - // var x = make([]int, 3, 2) - SwappedMakeArgs - - // InvalidMake occurs when make is called with an unsupported type argument. - // - // See https://golang.org/ref/spec#Makingslices_maps_and_channels for - // information on the types that may be created using make. - // - // Example: - // var x = make(int) - InvalidMake - - // InvalidReal occurs when the real built-in function is called with an - // argument that does not have complex type. - // - // Example: - // var _ = real(int(1)) - InvalidReal - - /* exprs > assertion */ - - // InvalidAssert occurs when a type assertion is applied to a - // value that is not of interface type. - // - // Example: - // var x = 1 - // var _ = x.(float64) - InvalidAssert - - // ImpossibleAssert occurs for a type assertion x.(T) when the value x of - // interface cannot have dynamic type T, due to a missing or mismatching - // method on T. - // - // Example: - // type T int - // - // func (t *T) m() int { return int(*t) } - // - // type I interface { m() int } - // - // var x I - // var _ = x.(T) - ImpossibleAssert - - /* exprs > conversion */ - - // InvalidConversion occurs when the argument type cannot be converted to the - // target. - // - // See https://golang.org/ref/spec#Conversions for the rules of - // convertibility. - // - // Example: - // var x float64 - // var _ = string(x) - InvalidConversion - - // InvalidUntypedConversion occurs when an there is no valid implicit - // conversion from an untyped value satisfying the type constraints of the - // context in which it is used. - // - // Example: - // var _ = 1 + "" - InvalidUntypedConversion - - /* offsetof */ - - // BadOffsetofSyntax occurs when unsafe.Offsetof is called with an argument - // that is not a selector expression. - // - // Example: - // import "unsafe" - // - // var x int - // var _ = unsafe.Offsetof(x) - BadOffsetofSyntax - - // InvalidOffsetof occurs when unsafe.Offsetof is called with a method - // selector, rather than a field selector, or when the field is embedded via - // a pointer. - // - // Per the spec: - // - // "If f is an embedded field, it must be reachable without pointer - // indirections through fields of the struct. " - // - // Example: - // import "unsafe" - // - // type T struct { f int } - // type S struct { *T } - // var s S - // var _ = unsafe.Offsetof(s.f) - // - // Example: - // import "unsafe" - // - // type S struct{} - // - // func (S) m() {} - // - // var s S - // var _ = unsafe.Offsetof(s.m) - InvalidOffsetof - - /* control flow > scope */ - - // UnusedExpr occurs when a side-effect free expression is used as a - // statement. Such a statement has no effect. - // - // Example: - // func f(i int) { - // i*i - // } - UnusedExpr - - // UnusedVar occurs when a variable is declared but unused. - // - // Example: - // func f() { - // x := 1 - // } - UnusedVar - - // MissingReturn occurs when a function with results is missing a return - // statement. - // - // Example: - // func f() int {} - MissingReturn - - // WrongResultCount occurs when a return statement returns an incorrect - // number of values. - // - // Example: - // func ReturnOne() int { - // return 1, 2 - // } - WrongResultCount - - // OutOfScopeResult occurs when the name of a value implicitly returned by - // an empty return statement is shadowed in a nested scope. - // - // Example: - // func factor(n int) (i int) { - // for i := 2; i < n; i++ { - // if n%i == 0 { - // return - // } - // } - // return 0 - // } - OutOfScopeResult - - /* control flow > if */ - - // InvalidCond occurs when an if condition is not a boolean expression. - // - // Example: - // func checkReturn(i int) { - // if i { - // panic("non-zero return") - // } - // } - InvalidCond - - /* control flow > for */ - - // InvalidPostDecl occurs when there is a declaration in a for-loop post - // statement. - // - // Example: - // func f() { - // for i := 0; i < 10; j := 0 {} - // } - InvalidPostDecl - - // InvalidChanRange occurs when a send-only channel used in a range - // expression. - // - // Example: - // func sum(c chan<- int) { - // s := 0 - // for i := range c { - // s += i - // } - // } - InvalidChanRange - - // InvalidIterVar occurs when two iteration variables are used while ranging - // over a channel. - // - // Example: - // func f(c chan int) { - // for k, v := range c { - // println(k, v) - // } - // } - InvalidIterVar - - // InvalidRangeExpr occurs when the type of a range expression is not array, - // slice, string, map, or channel. - // - // Example: - // func f(i int) { - // for j := range i { - // println(j) - // } - // } - InvalidRangeExpr - - /* control flow > switch */ - - // MisplacedBreak occurs when a break statement is not within a for, switch, - // or select statement of the innermost function definition. - // - // Example: - // func f() { - // break - // } - MisplacedBreak - - // MisplacedContinue occurs when a continue statement is not within a for - // loop of the innermost function definition. - // - // Example: - // func sumeven(n int) int { - // proceed := func() { - // continue - // } - // sum := 0 - // for i := 1; i <= n; i++ { - // if i % 2 != 0 { - // proceed() - // } - // sum += i - // } - // return sum - // } - MisplacedContinue - - // MisplacedFallthrough occurs when a fallthrough statement is not within an - // expression switch. - // - // Example: - // func typename(i interface{}) string { - // switch i.(type) { - // case int64: - // fallthrough - // case int: - // return "int" - // } - // return "unsupported" - // } - MisplacedFallthrough - - // DuplicateCase occurs when a type or expression switch has duplicate - // cases. - // - // Example: - // func printInt(i int) { - // switch i { - // case 1: - // println("one") - // case 1: - // println("One") - // } - // } - DuplicateCase - - // DuplicateDefault occurs when a type or expression switch has multiple - // default clauses. - // - // Example: - // func printInt(i int) { - // switch i { - // case 1: - // println("one") - // default: - // println("One") - // default: - // println("1") - // } - // } - DuplicateDefault - - // BadTypeKeyword occurs when a .(type) expression is used anywhere other - // than a type switch. - // - // Example: - // type I interface { - // m() - // } - // var t I - // var _ = t.(type) - BadTypeKeyword - - // InvalidTypeSwitch occurs when .(type) is used on an expression that is - // not of interface type. - // - // Example: - // func f(i int) { - // switch x := i.(type) {} - // } - InvalidTypeSwitch - - // InvalidExprSwitch occurs when a switch expression is not comparable. - // - // Example: - // func _() { - // var a struct{ _ func() } - // switch a /* ERROR cannot switch on a */ { - // } - // } - InvalidExprSwitch - - /* control flow > select */ - - // InvalidSelectCase occurs when a select case is not a channel send or - // receive. - // - // Example: - // func checkChan(c <-chan int) bool { - // select { - // case c: - // return true - // default: - // return false - // } - // } - InvalidSelectCase - - /* control flow > labels and jumps */ - - // UndeclaredLabel occurs when an undeclared label is jumped to. - // - // Example: - // func f() { - // goto L - // } - UndeclaredLabel - - // DuplicateLabel occurs when a label is declared more than once. - // - // Example: - // func f() int { - // L: - // L: - // return 1 - // } - DuplicateLabel - - // MisplacedLabel occurs when a break or continue label is not on a for, - // switch, or select statement. - // - // Example: - // func f() { - // L: - // a := []int{1,2,3} - // for _, e := range a { - // if e > 10 { - // break L - // } - // println(a) - // } - // } - MisplacedLabel - - // UnusedLabel occurs when a label is declared but not used. - // - // Example: - // func f() { - // L: - // } - UnusedLabel - - // JumpOverDecl occurs when a label jumps over a variable declaration. - // - // Example: - // func f() int { - // goto L - // x := 2 - // L: - // x++ - // return x - // } - JumpOverDecl - - // JumpIntoBlock occurs when a forward jump goes to a label inside a nested - // block. - // - // Example: - // func f(x int) { - // goto L - // if x > 0 { - // L: - // print("inside block") - // } - // } - JumpIntoBlock - - /* control flow > calls */ - - // InvalidMethodExpr occurs when a pointer method is called but the argument - // is not addressable. - // - // Example: - // type T struct {} - // - // func (*T) m() int { return 1 } - // - // var _ = T.m(T{}) - InvalidMethodExpr - - // WrongArgCount occurs when too few or too many arguments are passed by a - // function call. - // - // Example: - // func f(i int) {} - // var x = f() - WrongArgCount - - // InvalidCall occurs when an expression is called that is not of function - // type. - // - // Example: - // var x = "x" - // var y = x() - InvalidCall - - /* control flow > suspended */ - - // UnusedResults occurs when a restricted expression-only built-in function - // is suspended via go or defer. Such a suspension discards the results of - // these side-effect free built-in functions, and therefore is ineffectual. - // - // Example: - // func f(a []int) int { - // defer len(a) - // return i - // } - UnusedResults - - // InvalidDefer occurs when a deferred expression is not a function call, - // for example if the expression is a type conversion. - // - // Example: - // func f(i int) int { - // defer int32(i) - // return i - // } - InvalidDefer - - // InvalidGo occurs when a go expression is not a function call, for example - // if the expression is a type conversion. - // - // Example: - // func f(i int) int { - // go int32(i) - // return i - // } - InvalidGo - - // All codes below were added in Go 1.17. - - /* decl */ - - // BadDecl occurs when a declaration has invalid syntax. - BadDecl - - // RepeatedDecl occurs when an identifier occurs more than once on the left - // hand side of a short variable declaration. - // - // Example: - // func _() { - // x, y, y := 1, 2, 3 - // } - RepeatedDecl - - /* unsafe */ - - // InvalidUnsafeAdd occurs when unsafe.Add is called with a - // length argument that is not of integer type. - // - // Example: - // import "unsafe" - // - // var p unsafe.Pointer - // var _ = unsafe.Add(p, float64(1)) - InvalidUnsafeAdd - - // InvalidUnsafeSlice occurs when unsafe.Slice is called with a - // pointer argument that is not of pointer type or a length argument - // that is not of integer type, negative, or out of bounds. - // - // Example: - // import "unsafe" - // - // var x int - // var _ = unsafe.Slice(x, 1) - // - // Example: - // import "unsafe" - // - // var x int - // var _ = unsafe.Slice(&x, float64(1)) - // - // Example: - // import "unsafe" - // - // var x int - // var _ = unsafe.Slice(&x, -1) - // - // Example: - // import "unsafe" - // - // var x int - // var _ = unsafe.Slice(&x, uint64(1) << 63) - InvalidUnsafeSlice - - // All codes below were added in Go 1.18. - - /* features */ - - // UnsupportedFeature occurs when a language feature is used that is not - // supported at this Go version. - UnsupportedFeature - - /* type params */ - - // NotAGenericType occurs when a non-generic type is used where a generic - // type is expected: in type or function instantiation. - // - // Example: - // type T int - // - // var _ T[int] - NotAGenericType - - // WrongTypeArgCount occurs when a type or function is instantiated with an - // incorrent number of type arguments, including when a generic type or - // function is used without instantiation. - // - // Errors inolving failed type inference are assigned other error codes. - // - // Example: - // type T[p any] int - // - // var _ T[int, string] - // - // Example: - // func f[T any]() {} - // - // var x = f - WrongTypeArgCount - - // CannotInferTypeArgs occurs when type or function type argument inference - // fails to infer all type arguments. - // - // Example: - // func f[T any]() {} - // - // func _() { - // f() - // } - // - // Example: - // type N[P, Q any] struct{} - // - // var _ N[int] - CannotInferTypeArgs - - // InvalidTypeArg occurs when a type argument does not satisfy its - // corresponding type parameter constraints. - // - // Example: - // type T[P ~int] struct{} - // - // var _ T[string] - InvalidTypeArg // arguments? InferenceFailed - - // InvalidInstanceCycle occurs when an invalid cycle is detected - // within the instantiation graph. - // - // Example: - // func f[T any]() { f[*T]() } - InvalidInstanceCycle - - // InvalidUnion occurs when an embedded union or approximation element is - // not valid. - // - // Example: - // type _ interface { - // ~int | interface{ m() } - // } - InvalidUnion - - // MisplacedConstraintIface occurs when a constraint-type interface is used - // outside of constraint position. - // - // Example: - // type I interface { ~int } - // - // var _ I - MisplacedConstraintIface - - // InvalidMethodTypeParams occurs when methods have type parameters. - // - // It cannot be encountered with an AST parsed using go/parser. - InvalidMethodTypeParams - - // MisplacedTypeParam occurs when a type parameter is used in a place where - // it is not permitted. - // - // Example: - // type T[P any] P - // - // Example: - // type T[P any] struct{ *P } - MisplacedTypeParam -) diff --git a/vendor/golang.org/x/tools/internal/typesinternal/errorcode_string.go b/vendor/golang.org/x/tools/internal/typesinternal/errorcode_string.go deleted file mode 100644 index de90e95..0000000 --- a/vendor/golang.org/x/tools/internal/typesinternal/errorcode_string.go +++ /dev/null @@ -1,167 +0,0 @@ -// Code generated by "stringer -type=ErrorCode"; DO NOT EDIT. - -package typesinternal - -import "strconv" - -func _() { - // An "invalid array index" compiler error signifies that the constant values have changed. - // Re-run the stringer command to generate them again. - var x [1]struct{} - _ = x[Test-1] - _ = x[BlankPkgName-2] - _ = x[MismatchedPkgName-3] - _ = x[InvalidPkgUse-4] - _ = x[BadImportPath-5] - _ = x[BrokenImport-6] - _ = x[ImportCRenamed-7] - _ = x[UnusedImport-8] - _ = x[InvalidInitCycle-9] - _ = x[DuplicateDecl-10] - _ = x[InvalidDeclCycle-11] - _ = x[InvalidTypeCycle-12] - _ = x[InvalidConstInit-13] - _ = x[InvalidConstVal-14] - _ = x[InvalidConstType-15] - _ = x[UntypedNil-16] - _ = x[WrongAssignCount-17] - _ = x[UnassignableOperand-18] - _ = x[NoNewVar-19] - _ = x[MultiValAssignOp-20] - _ = x[InvalidIfaceAssign-21] - _ = x[InvalidChanAssign-22] - _ = x[IncompatibleAssign-23] - _ = x[UnaddressableFieldAssign-24] - _ = x[NotAType-25] - _ = x[InvalidArrayLen-26] - _ = x[BlankIfaceMethod-27] - _ = x[IncomparableMapKey-28] - _ = x[InvalidIfaceEmbed-29] - _ = x[InvalidPtrEmbed-30] - _ = x[BadRecv-31] - _ = x[InvalidRecv-32] - _ = x[DuplicateFieldAndMethod-33] - _ = x[DuplicateMethod-34] - _ = x[InvalidBlank-35] - _ = x[InvalidIota-36] - _ = x[MissingInitBody-37] - _ = x[InvalidInitSig-38] - _ = x[InvalidInitDecl-39] - _ = x[InvalidMainDecl-40] - _ = x[TooManyValues-41] - _ = x[NotAnExpr-42] - _ = x[TruncatedFloat-43] - _ = x[NumericOverflow-44] - _ = x[UndefinedOp-45] - _ = x[MismatchedTypes-46] - _ = x[DivByZero-47] - _ = x[NonNumericIncDec-48] - _ = x[UnaddressableOperand-49] - _ = x[InvalidIndirection-50] - _ = x[NonIndexableOperand-51] - _ = x[InvalidIndex-52] - _ = x[SwappedSliceIndices-53] - _ = x[NonSliceableOperand-54] - _ = x[InvalidSliceExpr-55] - _ = x[InvalidShiftCount-56] - _ = x[InvalidShiftOperand-57] - _ = x[InvalidReceive-58] - _ = x[InvalidSend-59] - _ = x[DuplicateLitKey-60] - _ = x[MissingLitKey-61] - _ = x[InvalidLitIndex-62] - _ = x[OversizeArrayLit-63] - _ = x[MixedStructLit-64] - _ = x[InvalidStructLit-65] - _ = x[MissingLitField-66] - _ = x[DuplicateLitField-67] - _ = x[UnexportedLitField-68] - _ = x[InvalidLitField-69] - _ = x[UntypedLit-70] - _ = x[InvalidLit-71] - _ = x[AmbiguousSelector-72] - _ = x[UndeclaredImportedName-73] - _ = x[UnexportedName-74] - _ = x[UndeclaredName-75] - _ = x[MissingFieldOrMethod-76] - _ = x[BadDotDotDotSyntax-77] - _ = x[NonVariadicDotDotDot-78] - _ = x[MisplacedDotDotDot-79] - _ = x[InvalidDotDotDotOperand-80] - _ = x[InvalidDotDotDot-81] - _ = x[UncalledBuiltin-82] - _ = x[InvalidAppend-83] - _ = x[InvalidCap-84] - _ = x[InvalidClose-85] - _ = x[InvalidCopy-86] - _ = x[InvalidComplex-87] - _ = x[InvalidDelete-88] - _ = x[InvalidImag-89] - _ = x[InvalidLen-90] - _ = x[SwappedMakeArgs-91] - _ = x[InvalidMake-92] - _ = x[InvalidReal-93] - _ = x[InvalidAssert-94] - _ = x[ImpossibleAssert-95] - _ = x[InvalidConversion-96] - _ = x[InvalidUntypedConversion-97] - _ = x[BadOffsetofSyntax-98] - _ = x[InvalidOffsetof-99] - _ = x[UnusedExpr-100] - _ = x[UnusedVar-101] - _ = x[MissingReturn-102] - _ = x[WrongResultCount-103] - _ = x[OutOfScopeResult-104] - _ = x[InvalidCond-105] - _ = x[InvalidPostDecl-106] - _ = x[InvalidChanRange-107] - _ = x[InvalidIterVar-108] - _ = x[InvalidRangeExpr-109] - _ = x[MisplacedBreak-110] - _ = x[MisplacedContinue-111] - _ = x[MisplacedFallthrough-112] - _ = x[DuplicateCase-113] - _ = x[DuplicateDefault-114] - _ = x[BadTypeKeyword-115] - _ = x[InvalidTypeSwitch-116] - _ = x[InvalidExprSwitch-117] - _ = x[InvalidSelectCase-118] - _ = x[UndeclaredLabel-119] - _ = x[DuplicateLabel-120] - _ = x[MisplacedLabel-121] - _ = x[UnusedLabel-122] - _ = x[JumpOverDecl-123] - _ = x[JumpIntoBlock-124] - _ = x[InvalidMethodExpr-125] - _ = x[WrongArgCount-126] - _ = x[InvalidCall-127] - _ = x[UnusedResults-128] - _ = x[InvalidDefer-129] - _ = x[InvalidGo-130] - _ = x[BadDecl-131] - _ = x[RepeatedDecl-132] - _ = x[InvalidUnsafeAdd-133] - _ = x[InvalidUnsafeSlice-134] - _ = x[UnsupportedFeature-135] - _ = x[NotAGenericType-136] - _ = x[WrongTypeArgCount-137] - _ = x[CannotInferTypeArgs-138] - _ = x[InvalidTypeArg-139] - _ = x[InvalidInstanceCycle-140] - _ = x[InvalidUnion-141] - _ = x[MisplacedConstraintIface-142] - _ = x[InvalidMethodTypeParams-143] - _ = x[MisplacedTypeParam-144] -} - -const _ErrorCode_name = "TestBlankPkgNameMismatchedPkgNameInvalidPkgUseBadImportPathBrokenImportImportCRenamedUnusedImportInvalidInitCycleDuplicateDeclInvalidDeclCycleInvalidTypeCycleInvalidConstInitInvalidConstValInvalidConstTypeUntypedNilWrongAssignCountUnassignableOperandNoNewVarMultiValAssignOpInvalidIfaceAssignInvalidChanAssignIncompatibleAssignUnaddressableFieldAssignNotATypeInvalidArrayLenBlankIfaceMethodIncomparableMapKeyInvalidIfaceEmbedInvalidPtrEmbedBadRecvInvalidRecvDuplicateFieldAndMethodDuplicateMethodInvalidBlankInvalidIotaMissingInitBodyInvalidInitSigInvalidInitDeclInvalidMainDeclTooManyValuesNotAnExprTruncatedFloatNumericOverflowUndefinedOpMismatchedTypesDivByZeroNonNumericIncDecUnaddressableOperandInvalidIndirectionNonIndexableOperandInvalidIndexSwappedSliceIndicesNonSliceableOperandInvalidSliceExprInvalidShiftCountInvalidShiftOperandInvalidReceiveInvalidSendDuplicateLitKeyMissingLitKeyInvalidLitIndexOversizeArrayLitMixedStructLitInvalidStructLitMissingLitFieldDuplicateLitFieldUnexportedLitFieldInvalidLitFieldUntypedLitInvalidLitAmbiguousSelectorUndeclaredImportedNameUnexportedNameUndeclaredNameMissingFieldOrMethodBadDotDotDotSyntaxNonVariadicDotDotDotMisplacedDotDotDotInvalidDotDotDotOperandInvalidDotDotDotUncalledBuiltinInvalidAppendInvalidCapInvalidCloseInvalidCopyInvalidComplexInvalidDeleteInvalidImagInvalidLenSwappedMakeArgsInvalidMakeInvalidRealInvalidAssertImpossibleAssertInvalidConversionInvalidUntypedConversionBadOffsetofSyntaxInvalidOffsetofUnusedExprUnusedVarMissingReturnWrongResultCountOutOfScopeResultInvalidCondInvalidPostDeclInvalidChanRangeInvalidIterVarInvalidRangeExprMisplacedBreakMisplacedContinueMisplacedFallthroughDuplicateCaseDuplicateDefaultBadTypeKeywordInvalidTypeSwitchInvalidExprSwitchInvalidSelectCaseUndeclaredLabelDuplicateLabelMisplacedLabelUnusedLabelJumpOverDeclJumpIntoBlockInvalidMethodExprWrongArgCountInvalidCallUnusedResultsInvalidDeferInvalidGoBadDeclRepeatedDeclInvalidUnsafeAddInvalidUnsafeSliceUnsupportedFeatureNotAGenericTypeWrongTypeArgCountCannotInferTypeArgsInvalidTypeArgInvalidInstanceCycleInvalidUnionMisplacedConstraintIfaceInvalidMethodTypeParamsMisplacedTypeParam" - -var _ErrorCode_index = [...]uint16{0, 4, 16, 33, 46, 59, 71, 85, 97, 113, 126, 142, 158, 174, 189, 205, 215, 231, 250, 258, 274, 292, 309, 327, 351, 359, 374, 390, 408, 425, 440, 447, 458, 481, 496, 508, 519, 534, 548, 563, 578, 591, 600, 614, 629, 640, 655, 664, 680, 700, 718, 737, 749, 768, 787, 803, 820, 839, 853, 864, 879, 892, 907, 923, 937, 953, 968, 985, 1003, 1018, 1028, 1038, 1055, 1077, 1091, 1105, 1125, 1143, 1163, 1181, 1204, 1220, 1235, 1248, 1258, 1270, 1281, 1295, 1308, 1319, 1329, 1344, 1355, 1366, 1379, 1395, 1412, 1436, 1453, 1468, 1478, 1487, 1500, 1516, 1532, 1543, 1558, 1574, 1588, 1604, 1618, 1635, 1655, 1668, 1684, 1698, 1715, 1732, 1749, 1764, 1778, 1792, 1803, 1815, 1828, 1845, 1858, 1869, 1882, 1894, 1903, 1910, 1922, 1938, 1956, 1974, 1989, 2006, 2025, 2039, 2059, 2071, 2095, 2118, 2136} - -func (i ErrorCode) String() string { - i -= 1 - if i < 0 || i >= ErrorCode(len(_ErrorCode_index)-1) { - return "ErrorCode(" + strconv.FormatInt(int64(i+1), 10) + ")" - } - return _ErrorCode_name[_ErrorCode_index[i]:_ErrorCode_index[i+1]] -} diff --git a/vendor/golang.org/x/tools/internal/typesinternal/types.go b/vendor/golang.org/x/tools/internal/typesinternal/types.go deleted file mode 100644 index ce7d435..0000000 --- a/vendor/golang.org/x/tools/internal/typesinternal/types.go +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2020 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 typesinternal provides access to internal go/types APIs that are not -// yet exported. -package typesinternal - -import ( - "go/token" - "go/types" - "reflect" - "unsafe" -) - -func SetUsesCgo(conf *types.Config) bool { - v := reflect.ValueOf(conf).Elem() - - f := v.FieldByName("go115UsesCgo") - if !f.IsValid() { - f = v.FieldByName("UsesCgo") - if !f.IsValid() { - return false - } - } - - addr := unsafe.Pointer(f.UnsafeAddr()) - *(*bool)(addr) = true - - return true -} - -// ReadGo116ErrorData extracts additional information from types.Error values -// generated by Go version 1.16 and later: the error code, start position, and -// end position. If all positions are valid, start <= err.Pos <= end. -// -// If the data could not be read, the final result parameter will be false. -func ReadGo116ErrorData(err types.Error) (code ErrorCode, start, end token.Pos, ok bool) { - var data [3]int - // By coincidence all of these fields are ints, which simplifies things. - v := reflect.ValueOf(err) - for i, name := range []string{"go116code", "go116start", "go116end"} { - f := v.FieldByName(name) - if !f.IsValid() { - return 0, 0, 0, false - } - data[i] = int(f.Int()) - } - return ErrorCode(data[0]), token.Pos(data[1]), token.Pos(data[2]), true -} - -var SetGoVersion = func(conf *types.Config, version string) bool { return false } diff --git a/vendor/golang.org/x/tools/internal/typesinternal/types_118.go b/vendor/golang.org/x/tools/internal/typesinternal/types_118.go deleted file mode 100644 index a42b072..0000000 --- a/vendor/golang.org/x/tools/internal/typesinternal/types_118.go +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2021 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:build go1.18 -// +build go1.18 - -package typesinternal - -import ( - "go/types" -) - -func init() { - SetGoVersion = func(conf *types.Config, version string) bool { - conf.GoVersion = version - return true - } -} diff --git a/vendor/golang.org/x/xerrors/LICENSE b/vendor/golang.org/x/xerrors/LICENSE deleted file mode 100644 index e4a47e1..0000000 --- a/vendor/golang.org/x/xerrors/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2019 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/xerrors/PATENTS b/vendor/golang.org/x/xerrors/PATENTS deleted file mode 100644 index 7330990..0000000 --- a/vendor/golang.org/x/xerrors/PATENTS +++ /dev/null @@ -1,22 +0,0 @@ -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/xerrors/README b/vendor/golang.org/x/xerrors/README deleted file mode 100644 index aac7867..0000000 --- a/vendor/golang.org/x/xerrors/README +++ /dev/null @@ -1,2 +0,0 @@ -This repository holds the transition packages for the new Go 1.13 error values. -See golang.org/design/29934-error-values. diff --git a/vendor/golang.org/x/xerrors/adaptor.go b/vendor/golang.org/x/xerrors/adaptor.go deleted file mode 100644 index 4317f24..0000000 --- a/vendor/golang.org/x/xerrors/adaptor.go +++ /dev/null @@ -1,193 +0,0 @@ -// Copyright 2018 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 xerrors - -import ( - "bytes" - "fmt" - "io" - "reflect" - "strconv" -) - -// FormatError calls the FormatError method of f with an errors.Printer -// configured according to s and verb, and writes the result to s. -func FormatError(f Formatter, s fmt.State, verb rune) { - // Assuming this function is only called from the Format method, and given - // that FormatError takes precedence over Format, it cannot be called from - // any package that supports errors.Formatter. It is therefore safe to - // disregard that State may be a specific printer implementation and use one - // of our choice instead. - - // limitations: does not support printing error as Go struct. - - var ( - sep = " " // separator before next error - p = &state{State: s} - direct = true - ) - - var err error = f - - switch verb { - // Note that this switch must match the preference order - // for ordinary string printing (%#v before %+v, and so on). - - case 'v': - if s.Flag('#') { - if stringer, ok := err.(fmt.GoStringer); ok { - io.WriteString(&p.buf, stringer.GoString()) - goto exit - } - // proceed as if it were %v - } else if s.Flag('+') { - p.printDetail = true - sep = "\n - " - } - case 's': - case 'q', 'x', 'X': - // Use an intermediate buffer in the rare cases that precision, - // truncation, or one of the alternative verbs (q, x, and X) are - // specified. - direct = false - - default: - p.buf.WriteString("%!") - p.buf.WriteRune(verb) - p.buf.WriteByte('(') - switch { - case err != nil: - p.buf.WriteString(reflect.TypeOf(f).String()) - default: - p.buf.WriteString("") - } - p.buf.WriteByte(')') - io.Copy(s, &p.buf) - return - } - -loop: - for { - switch v := err.(type) { - case Formatter: - err = v.FormatError((*printer)(p)) - case fmt.Formatter: - v.Format(p, 'v') - break loop - default: - io.WriteString(&p.buf, v.Error()) - break loop - } - if err == nil { - break - } - if p.needColon || !p.printDetail { - p.buf.WriteByte(':') - p.needColon = false - } - p.buf.WriteString(sep) - p.inDetail = false - p.needNewline = false - } - -exit: - width, okW := s.Width() - prec, okP := s.Precision() - - if !direct || (okW && width > 0) || okP { - // Construct format string from State s. - format := []byte{'%'} - if s.Flag('-') { - format = append(format, '-') - } - if s.Flag('+') { - format = append(format, '+') - } - if s.Flag(' ') { - format = append(format, ' ') - } - if okW { - format = strconv.AppendInt(format, int64(width), 10) - } - if okP { - format = append(format, '.') - format = strconv.AppendInt(format, int64(prec), 10) - } - format = append(format, string(verb)...) - fmt.Fprintf(s, string(format), p.buf.String()) - } else { - io.Copy(s, &p.buf) - } -} - -var detailSep = []byte("\n ") - -// state tracks error printing state. It implements fmt.State. -type state struct { - fmt.State - buf bytes.Buffer - - printDetail bool - inDetail bool - needColon bool - needNewline bool -} - -func (s *state) Write(b []byte) (n int, err error) { - if s.printDetail { - if len(b) == 0 { - return 0, nil - } - if s.inDetail && s.needColon { - s.needNewline = true - if b[0] == '\n' { - b = b[1:] - } - } - k := 0 - for i, c := range b { - if s.needNewline { - if s.inDetail && s.needColon { - s.buf.WriteByte(':') - s.needColon = false - } - s.buf.Write(detailSep) - s.needNewline = false - } - if c == '\n' { - s.buf.Write(b[k:i]) - k = i + 1 - s.needNewline = true - } - } - s.buf.Write(b[k:]) - if !s.inDetail { - s.needColon = true - } - } else if !s.inDetail { - s.buf.Write(b) - } - return len(b), nil -} - -// printer wraps a state to implement an xerrors.Printer. -type printer state - -func (s *printer) Print(args ...interface{}) { - if !s.inDetail || s.printDetail { - fmt.Fprint((*state)(s), args...) - } -} - -func (s *printer) Printf(format string, args ...interface{}) { - if !s.inDetail || s.printDetail { - fmt.Fprintf((*state)(s), format, args...) - } -} - -func (s *printer) Detail() bool { - s.inDetail = true - return s.printDetail -} diff --git a/vendor/golang.org/x/xerrors/codereview.cfg b/vendor/golang.org/x/xerrors/codereview.cfg deleted file mode 100644 index 3f8b14b..0000000 --- a/vendor/golang.org/x/xerrors/codereview.cfg +++ /dev/null @@ -1 +0,0 @@ -issuerepo: golang/go diff --git a/vendor/golang.org/x/xerrors/doc.go b/vendor/golang.org/x/xerrors/doc.go deleted file mode 100644 index eef99d9..0000000 --- a/vendor/golang.org/x/xerrors/doc.go +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2019 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 xerrors implements functions to manipulate errors. -// -// This package is based on the Go 2 proposal for error values: -// https://golang.org/design/29934-error-values -// -// These functions were incorporated into the standard library's errors package -// in Go 1.13: -// - Is -// - As -// - Unwrap -// -// Also, Errorf's %w verb was incorporated into fmt.Errorf. -// -// Use this package to get equivalent behavior in all supported Go versions. -// -// No other features of this package were included in Go 1.13, and at present -// there are no plans to include any of them. -package xerrors // import "golang.org/x/xerrors" diff --git a/vendor/golang.org/x/xerrors/errors.go b/vendor/golang.org/x/xerrors/errors.go deleted file mode 100644 index e88d377..0000000 --- a/vendor/golang.org/x/xerrors/errors.go +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2011 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 xerrors - -import "fmt" - -// errorString is a trivial implementation of error. -type errorString struct { - s string - frame Frame -} - -// New returns an error that formats as the given text. -// -// The returned error contains a Frame set to the caller's location and -// implements Formatter to show this information when printed with details. -func New(text string) error { - return &errorString{text, Caller(1)} -} - -func (e *errorString) Error() string { - return e.s -} - -func (e *errorString) Format(s fmt.State, v rune) { FormatError(e, s, v) } - -func (e *errorString) FormatError(p Printer) (next error) { - p.Print(e.s) - e.frame.Format(p) - return nil -} diff --git a/vendor/golang.org/x/xerrors/fmt.go b/vendor/golang.org/x/xerrors/fmt.go deleted file mode 100644 index 829862d..0000000 --- a/vendor/golang.org/x/xerrors/fmt.go +++ /dev/null @@ -1,187 +0,0 @@ -// Copyright 2018 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 xerrors - -import ( - "fmt" - "strings" - "unicode" - "unicode/utf8" - - "golang.org/x/xerrors/internal" -) - -const percentBangString = "%!" - -// Errorf formats according to a format specifier and returns the string as a -// value that satisfies error. -// -// The returned error includes the file and line number of the caller when -// formatted with additional detail enabled. If the last argument is an error -// the returned error's Format method will return it if the format string ends -// with ": %s", ": %v", or ": %w". If the last argument is an error and the -// format string ends with ": %w", the returned error implements an Unwrap -// method returning it. -// -// If the format specifier includes a %w verb with an error operand in a -// position other than at the end, the returned error will still implement an -// Unwrap method returning the operand, but the error's Format method will not -// return the wrapped error. -// -// It is invalid to include more than one %w verb or to supply it with an -// operand that does not implement the error interface. The %w verb is otherwise -// a synonym for %v. -func Errorf(format string, a ...interface{}) error { - format = formatPlusW(format) - // Support a ": %[wsv]" suffix, which works well with xerrors.Formatter. - wrap := strings.HasSuffix(format, ": %w") - idx, format2, ok := parsePercentW(format) - percentWElsewhere := !wrap && idx >= 0 - if !percentWElsewhere && (wrap || strings.HasSuffix(format, ": %s") || strings.HasSuffix(format, ": %v")) { - err := errorAt(a, len(a)-1) - if err == nil { - return &noWrapError{fmt.Sprintf(format, a...), nil, Caller(1)} - } - // TODO: this is not entirely correct. The error value could be - // printed elsewhere in format if it mixes numbered with unnumbered - // substitutions. With relatively small changes to doPrintf we can - // have it optionally ignore extra arguments and pass the argument - // list in its entirety. - msg := fmt.Sprintf(format[:len(format)-len(": %s")], a[:len(a)-1]...) - frame := Frame{} - if internal.EnableTrace { - frame = Caller(1) - } - if wrap { - return &wrapError{msg, err, frame} - } - return &noWrapError{msg, err, frame} - } - // Support %w anywhere. - // TODO: don't repeat the wrapped error's message when %w occurs in the middle. - msg := fmt.Sprintf(format2, a...) - if idx < 0 { - return &noWrapError{msg, nil, Caller(1)} - } - err := errorAt(a, idx) - if !ok || err == nil { - // Too many %ws or argument of %w is not an error. Approximate the Go - // 1.13 fmt.Errorf message. - return &noWrapError{fmt.Sprintf("%sw(%s)", percentBangString, msg), nil, Caller(1)} - } - frame := Frame{} - if internal.EnableTrace { - frame = Caller(1) - } - return &wrapError{msg, err, frame} -} - -func errorAt(args []interface{}, i int) error { - if i < 0 || i >= len(args) { - return nil - } - err, ok := args[i].(error) - if !ok { - return nil - } - return err -} - -// formatPlusW is used to avoid the vet check that will barf at %w. -func formatPlusW(s string) string { - return s -} - -// Return the index of the only %w in format, or -1 if none. -// Also return a rewritten format string with %w replaced by %v, and -// false if there is more than one %w. -// TODO: handle "%[N]w". -func parsePercentW(format string) (idx int, newFormat string, ok bool) { - // Loosely copied from golang.org/x/tools/go/analysis/passes/printf/printf.go. - idx = -1 - ok = true - n := 0 - sz := 0 - var isW bool - for i := 0; i < len(format); i += sz { - if format[i] != '%' { - sz = 1 - continue - } - // "%%" is not a format directive. - if i+1 < len(format) && format[i+1] == '%' { - sz = 2 - continue - } - sz, isW = parsePrintfVerb(format[i:]) - if isW { - if idx >= 0 { - ok = false - } else { - idx = n - } - // "Replace" the last character, the 'w', with a 'v'. - p := i + sz - 1 - format = format[:p] + "v" + format[p+1:] - } - n++ - } - return idx, format, ok -} - -// Parse the printf verb starting with a % at s[0]. -// Return how many bytes it occupies and whether the verb is 'w'. -func parsePrintfVerb(s string) (int, bool) { - // Assume only that the directive is a sequence of non-letters followed by a single letter. - sz := 0 - var r rune - for i := 1; i < len(s); i += sz { - r, sz = utf8.DecodeRuneInString(s[i:]) - if unicode.IsLetter(r) { - return i + sz, r == 'w' - } - } - return len(s), false -} - -type noWrapError struct { - msg string - err error - frame Frame -} - -func (e *noWrapError) Error() string { - return fmt.Sprint(e) -} - -func (e *noWrapError) Format(s fmt.State, v rune) { FormatError(e, s, v) } - -func (e *noWrapError) FormatError(p Printer) (next error) { - p.Print(e.msg) - e.frame.Format(p) - return e.err -} - -type wrapError struct { - msg string - err error - frame Frame -} - -func (e *wrapError) Error() string { - return fmt.Sprint(e) -} - -func (e *wrapError) Format(s fmt.State, v rune) { FormatError(e, s, v) } - -func (e *wrapError) FormatError(p Printer) (next error) { - p.Print(e.msg) - e.frame.Format(p) - return e.err -} - -func (e *wrapError) Unwrap() error { - return e.err -} diff --git a/vendor/golang.org/x/xerrors/format.go b/vendor/golang.org/x/xerrors/format.go deleted file mode 100644 index 1bc9c26..0000000 --- a/vendor/golang.org/x/xerrors/format.go +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2018 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 xerrors - -// A Formatter formats error messages. -type Formatter interface { - error - - // FormatError prints the receiver's first error and returns the next error in - // the error chain, if any. - FormatError(p Printer) (next error) -} - -// A Printer formats error messages. -// -// The most common implementation of Printer is the one provided by package fmt -// during Printf (as of Go 1.13). Localization packages such as golang.org/x/text/message -// typically provide their own implementations. -type Printer interface { - // Print appends args to the message output. - Print(args ...interface{}) - - // Printf writes a formatted string. - Printf(format string, args ...interface{}) - - // Detail reports whether error detail is requested. - // After the first call to Detail, all text written to the Printer - // is formatted as additional detail, or ignored when - // detail has not been requested. - // If Detail returns false, the caller can avoid printing the detail at all. - Detail() bool -} diff --git a/vendor/golang.org/x/xerrors/frame.go b/vendor/golang.org/x/xerrors/frame.go deleted file mode 100644 index 0de628e..0000000 --- a/vendor/golang.org/x/xerrors/frame.go +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2018 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 xerrors - -import ( - "runtime" -) - -// A Frame contains part of a call stack. -type Frame struct { - // Make room for three PCs: the one we were asked for, what it called, - // and possibly a PC for skipPleaseUseCallersFrames. See: - // https://go.googlesource.com/go/+/032678e0fb/src/runtime/extern.go#169 - frames [3]uintptr -} - -// Caller returns a Frame that describes a frame on the caller's stack. -// The argument skip is the number of frames to skip over. -// Caller(0) returns the frame for the caller of Caller. -func Caller(skip int) Frame { - var s Frame - runtime.Callers(skip+1, s.frames[:]) - return s -} - -// location reports the file, line, and function of a frame. -// -// The returned function may be "" even if file and line are not. -func (f Frame) location() (function, file string, line int) { - frames := runtime.CallersFrames(f.frames[:]) - if _, ok := frames.Next(); !ok { - return "", "", 0 - } - fr, ok := frames.Next() - if !ok { - return "", "", 0 - } - return fr.Function, fr.File, fr.Line -} - -// Format prints the stack as error detail. -// It should be called from an error's Format implementation -// after printing any other error detail. -func (f Frame) Format(p Printer) { - if p.Detail() { - function, file, line := f.location() - if function != "" { - p.Printf("%s\n ", function) - } - if file != "" { - p.Printf("%s:%d\n", file, line) - } - } -} diff --git a/vendor/golang.org/x/xerrors/internal/internal.go b/vendor/golang.org/x/xerrors/internal/internal.go deleted file mode 100644 index 89f4eca..0000000 --- a/vendor/golang.org/x/xerrors/internal/internal.go +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2018 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 internal - -// EnableTrace indicates whether stack information should be recorded in errors. -var EnableTrace = true diff --git a/vendor/golang.org/x/xerrors/wrap.go b/vendor/golang.org/x/xerrors/wrap.go deleted file mode 100644 index 9a3b510..0000000 --- a/vendor/golang.org/x/xerrors/wrap.go +++ /dev/null @@ -1,106 +0,0 @@ -// Copyright 2018 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 xerrors - -import ( - "reflect" -) - -// A Wrapper provides context around another error. -type Wrapper interface { - // Unwrap returns the next error in the error chain. - // If there is no next error, Unwrap returns nil. - Unwrap() error -} - -// Opaque returns an error with the same error formatting as err -// but that does not match err and cannot be unwrapped. -func Opaque(err error) error { - return noWrapper{err} -} - -type noWrapper struct { - error -} - -func (e noWrapper) FormatError(p Printer) (next error) { - if f, ok := e.error.(Formatter); ok { - return f.FormatError(p) - } - p.Print(e.error) - return nil -} - -// Unwrap returns the result of calling the Unwrap method on err, if err implements -// Unwrap. Otherwise, Unwrap returns nil. -func Unwrap(err error) error { - u, ok := err.(Wrapper) - if !ok { - return nil - } - return u.Unwrap() -} - -// Is reports whether any error in err's chain matches target. -// -// An error is considered to match a target if it is equal to that target or if -// it implements a method Is(error) bool such that Is(target) returns true. -func Is(err, target error) bool { - if target == nil { - return err == target - } - - isComparable := reflect.TypeOf(target).Comparable() - for { - if isComparable && err == target { - return true - } - if x, ok := err.(interface{ Is(error) bool }); ok && x.Is(target) { - return true - } - // TODO: consider supporing target.Is(err). This would allow - // user-definable predicates, but also may allow for coping with sloppy - // APIs, thereby making it easier to get away with them. - if err = Unwrap(err); err == nil { - return false - } - } -} - -// As finds the first error in err's chain that matches the type to which target -// points, and if so, sets the target to its value and returns true. An error -// matches a type if it is assignable to the target type, or if it has a method -// As(interface{}) bool such that As(target) returns true. As will panic if target -// is not a non-nil pointer to a type which implements error or is of interface type. -// -// The As method should set the target to its value and return true if err -// matches the type to which target points. -func As(err error, target interface{}) bool { - if target == nil { - panic("errors: target cannot be nil") - } - val := reflect.ValueOf(target) - typ := val.Type() - if typ.Kind() != reflect.Ptr || val.IsNil() { - panic("errors: target must be a non-nil pointer") - } - if e := typ.Elem(); e.Kind() != reflect.Interface && !e.Implements(errorType) { - panic("errors: *target must be interface or implement error") - } - targetType := typ.Elem() - for err != nil { - if reflect.TypeOf(err).AssignableTo(targetType) { - val.Elem().Set(reflect.ValueOf(err)) - return true - } - if x, ok := err.(interface{ As(interface{}) bool }); ok && x.As(target) { - return true - } - err = Unwrap(err) - } - return false -} - -var errorType = reflect.TypeOf((*error)(nil)).Elem() diff --git a/vendor/gopkg.in/src-d/go-billy.v4/.gitignore b/vendor/gopkg.in/src-d/go-billy.v4/.gitignore deleted file mode 100644 index 7aeb466..0000000 --- a/vendor/gopkg.in/src-d/go-billy.v4/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -/coverage.txt -/vendor -Gopkg.lock -Gopkg.toml diff --git a/vendor/gopkg.in/src-d/go-billy.v4/.travis.yml b/vendor/gopkg.in/src-d/go-billy.v4/.travis.yml deleted file mode 100644 index a70b470..0000000 --- a/vendor/gopkg.in/src-d/go-billy.v4/.travis.yml +++ /dev/null @@ -1,17 +0,0 @@ -language: go - -go: - - 1.9.x - - 1.10.x - -go_import_path: gopkg.in/src-d/go-billy.v4 - -install: - - go get -v -t ./... - -script: - - make test-coverage - - ./.ci/test-building-binaries-for-supported-os.sh - -after_success: - - bash <(curl -s https://codecov.io/bash) diff --git a/vendor/gopkg.in/src-d/go-billy.v4/DCO b/vendor/gopkg.in/src-d/go-billy.v4/DCO deleted file mode 100644 index 29c1b92..0000000 --- a/vendor/gopkg.in/src-d/go-billy.v4/DCO +++ /dev/null @@ -1,25 +0,0 @@ - Developer's Certificate of Origin 1.1 - - By making a contribution to this project, I certify that: - - (a) The contribution was created in whole or in part by me and I - have the right to submit it under the open source license - indicated in the file; or - - (b) The contribution is based upon previous work that, to the best - of my knowledge, is covered under an appropriate open source - license and I have the right under that license to submit that - work with modifications, whether created in whole or in part - by me, under the same open source license (unless I am - permitted to submit under a different license), as indicated - in the file; or - - (c) The contribution was provided directly to me by some other - person who certified (a), (b) or (c) and I have not modified - it. - - (d) I understand and agree that this project and the contribution - are public and that a record of the contribution (including all - personal information I submit with it, including my sign-off) is - maintained indefinitely and may be redistributed consistent with - this project or the open source license(s) involved. diff --git a/vendor/gopkg.in/src-d/go-billy.v4/LICENSE b/vendor/gopkg.in/src-d/go-billy.v4/LICENSE deleted file mode 100644 index 9d60756..0000000 --- a/vendor/gopkg.in/src-d/go-billy.v4/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor 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, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2017 Sourced Technologies S.L. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/vendor/gopkg.in/src-d/go-billy.v4/MAINTAINERS b/vendor/gopkg.in/src-d/go-billy.v4/MAINTAINERS deleted file mode 100644 index 8dbba47..0000000 --- a/vendor/gopkg.in/src-d/go-billy.v4/MAINTAINERS +++ /dev/null @@ -1 +0,0 @@ -Máximo Cuadros (@mcuadros) diff --git a/vendor/gopkg.in/src-d/go-billy.v4/Makefile b/vendor/gopkg.in/src-d/go-billy.v4/Makefile deleted file mode 100644 index 19e7433..0000000 --- a/vendor/gopkg.in/src-d/go-billy.v4/Makefile +++ /dev/null @@ -1,25 +0,0 @@ -# General -WORKDIR = $(PWD) - -# Go parameters -GOCMD = go -GOTEST = $(GOCMD) test -v - -# Coverage -COVERAGE_REPORT = coverage.txt -COVERAGE_PROFILE = profile.out -COVERAGE_MODE = atomic - -test-coverage: - cd $(WORKDIR); \ - echo "" > $(COVERAGE_REPORT); \ - for dir in `find . -name "*.go" | grep -o '.*/' | sort | uniq`; do \ - $(GOTEST) $$dir -coverprofile=$(COVERAGE_PROFILE) -covermode=$(COVERAGE_MODE); \ - if [ $$? != 0 ]; then \ - exit 2; \ - fi; \ - if [ -f $(COVERAGE_PROFILE) ]; then \ - cat $(COVERAGE_PROFILE) >> $(COVERAGE_REPORT); \ - rm $(COVERAGE_PROFILE); \ - fi; \ - done; \ diff --git a/vendor/gopkg.in/src-d/go-billy.v4/README.md b/vendor/gopkg.in/src-d/go-billy.v4/README.md deleted file mode 100644 index ae4a3f8..0000000 --- a/vendor/gopkg.in/src-d/go-billy.v4/README.md +++ /dev/null @@ -1,72 +0,0 @@ -# go-billy [![GoDoc](https://godoc.org/gopkg.in/src-d/go-billy.v4?status.svg)](https://godoc.org/gopkg.in/src-d/go-billy.v4) [![Build Status](https://travis-ci.com/src-d/go-billy.svg)](https://travis-ci.com/src-d/go-billy) [![Build status](https://ci.appveyor.com/api/projects/status/vx2qn6vlakbi724t?svg=true)](https://ci.appveyor.com/project/mcuadros/go-billy) [![codecov](https://codecov.io/gh/src-d/go-billy/branch/master/graph/badge.svg)](https://codecov.io/gh/src-d/go-billy) - -The missing interface filesystem abstraction for Go. -Billy implements an interface based on the `os` standard library, allowing to develop applications without dependency on the underlying storage. Makes it virtually free to implement mocks and testing over filesystem operations. - -Billy was born as part of [src-d/go-git](https://github.com/src-d/go-git) project. - -## Installation - -```go -go get -u gopkg.in/src-d/go-billy.v4/... -``` - -## Usage - -Billy exposes filesystems using the -[`Filesystem` interface](https://godoc.org/github.com/src-d/go-billy#Filesystem). -Each filesystem implementation gives you a `New` method, whose arguments depend on -the implementation itself, that returns a new `Filesystem`. - -The following example caches in memory all readable files in a directory from any -billy's filesystem implementation. - -```go -func LoadToMemory(origin billy.Filesystem, path string) (*memory.Memory, error) { - memory := memory.New() - - files, err := origin.ReadDir("/") - if err != nil { - return nil, err - } - - for _, file := range files { - if file.IsDir() { - continue - } - - src, err := origin.Open(file.Name()) - if err != nil { - return nil, err - } - - dst, err := memory.Create(file.Name()) - if err != nil { - return nil, err - } - - if _, err = io.Copy(dst, src); err != nil { - return nil, err - } - - if err := dst.Close(); err != nil { - return nil, err - } - - if err := src.Close(); err != nil { - return nil, err - } - } - - return memory, nil -} -``` - -## Why billy? - -The library billy deals with storage systems and Billy is the name of a well-known, IKEA -bookcase. That's it. - -## License - -Apache License Version 2.0, see [LICENSE](LICENSE) diff --git a/vendor/gopkg.in/src-d/go-billy.v4/appveyor.yml b/vendor/gopkg.in/src-d/go-billy.v4/appveyor.yml deleted file mode 100644 index 91c0b40..0000000 --- a/vendor/gopkg.in/src-d/go-billy.v4/appveyor.yml +++ /dev/null @@ -1,15 +0,0 @@ -version: "{build}" -platform: x64 - -clone_folder: c:\gopath\src\gopkg.in\src-d\go-billy.v4 - -environment: - GOPATH: c:\gopath - -install: - - set PATH=%GOPATH%\bin;c:\go\bin;%PATH% - - go version - - go get -v -t ./... - -build_script: - - go test -v ./... diff --git a/vendor/gopkg.in/src-d/go-billy.v4/fs.go b/vendor/gopkg.in/src-d/go-billy.v4/fs.go deleted file mode 100644 index a9efccd..0000000 --- a/vendor/gopkg.in/src-d/go-billy.v4/fs.go +++ /dev/null @@ -1,202 +0,0 @@ -package billy - -import ( - "errors" - "io" - "os" - "time" -) - -var ( - ErrReadOnly = errors.New("read-only filesystem") - ErrNotSupported = errors.New("feature not supported") - ErrCrossedBoundary = errors.New("chroot boundary crossed") -) - -// Capability holds the supported features of a billy filesystem. This does -// not mean that the capability has to be supported by the underlying storage. -// For example, a billy filesystem may support WriteCapability but the -// storage be mounted in read only mode. -type Capability uint64 - -const ( - // WriteCapability means that the fs is writable. - WriteCapability Capability = 1 << iota - // ReadCapability means that the fs is readable. - ReadCapability - // ReadAndWriteCapability is the ability to open a file in read and write mode. - ReadAndWriteCapability - // SeekCapability means it is able to move position inside the file. - SeekCapability - // TruncateCapability means that a file can be truncated. - TruncateCapability - // LockCapability is the ability to lock a file. - LockCapability - - // DefaultCapabilities lists all capable features supported by filesystems - // without Capability interface. This list should not be changed until a - // major version is released. - DefaultCapabilities Capability = WriteCapability | ReadCapability | - ReadAndWriteCapability | SeekCapability | TruncateCapability | - LockCapability - - // AllCapabilities lists all capable features. - AllCapabilities Capability = WriteCapability | ReadCapability | - ReadAndWriteCapability | SeekCapability | TruncateCapability | - LockCapability -) - -// Filesystem abstract the operations in a storage-agnostic interface. -// Each method implementation mimics the behavior of the equivalent functions -// at the os package from the standard library. -type Filesystem interface { - Basic - TempFile - Dir - Symlink - Chroot -} - -// Basic abstract the basic operations in a storage-agnostic interface as -// an extension to the Basic interface. -type Basic interface { - // Create creates the named file with mode 0666 (before umask), truncating - // it if it already exists. If successful, methods on the returned File can - // be used for I/O; the associated file descriptor has mode O_RDWR. - Create(filename string) (File, error) - // Open opens the named file for reading. If successful, methods on the - // returned file can be used for reading; the associated file descriptor has - // mode O_RDONLY. - Open(filename string) (File, error) - // OpenFile is the generalized open call; most users will use Open or Create - // instead. It opens the named file with specified flag (O_RDONLY etc.) and - // perm, (0666 etc.) if applicable. If successful, methods on the returned - // File can be used for I/O. - OpenFile(filename string, flag int, perm os.FileMode) (File, error) - // Stat returns a FileInfo describing the named file. - Stat(filename string) (os.FileInfo, error) - // Rename renames (moves) oldpath to newpath. If newpath already exists and - // is not a directory, Rename replaces it. OS-specific restrictions may - // apply when oldpath and newpath are in different directories. - Rename(oldpath, newpath string) error - // Remove removes the named file or directory. - Remove(filename string) error - // Join joins any number of path elements into a single path, adding a - // Separator if necessary. Join calls filepath.Clean on the result; in - // particular, all empty strings are ignored. On Windows, the result is a - // UNC path if and only if the first path element is a UNC path. - Join(elem ...string) string -} - -type TempFile interface { - // TempFile creates a new temporary file in the directory dir with a name - // beginning with prefix, opens the file for reading and writing, and - // returns the resulting *os.File. If dir is the empty string, TempFile - // uses the default directory for temporary files (see os.TempDir). - // Multiple programs calling TempFile simultaneously will not choose the - // same file. The caller can use f.Name() to find the pathname of the file. - // It is the caller's responsibility to remove the file when no longer - // needed. - TempFile(dir, prefix string) (File, error) -} - -// Dir abstract the dir related operations in a storage-agnostic interface as -// an extension to the Basic interface. -type Dir interface { - // ReadDir reads the directory named by dirname and returns a list of - // directory entries sorted by filename. - ReadDir(path string) ([]os.FileInfo, error) - // MkdirAll creates a directory named path, along with any necessary - // parents, and returns nil, or else returns an error. The permission bits - // perm are used for all directories that MkdirAll creates. If path is/ - // already a directory, MkdirAll does nothing and returns nil. - MkdirAll(filename string, perm os.FileMode) error -} - -// Symlink abstract the symlink related operations in a storage-agnostic -// interface as an extension to the Basic interface. -type Symlink interface { - // Lstat returns a FileInfo describing the named file. If the file is a - // symbolic link, the returned FileInfo describes the symbolic link. Lstat - // makes no attempt to follow the link. - Lstat(filename string) (os.FileInfo, error) - // Symlink creates a symbolic-link from link to target. target may be an - // absolute or relative path, and need not refer to an existing node. - // Parent directories of link are created as necessary. - Symlink(target, link string) error - // Readlink returns the target path of link. - Readlink(link string) (string, error) -} - -// Change abstract the FileInfo change related operations in a storage-agnostic -// interface as an extension to the Basic interface -type Change interface { - // Chmod changes the mode of the named file to mode. If the file is a - // symbolic link, it changes the mode of the link's target. - Chmod(name string, mode os.FileMode) error - // Lchown changes the numeric uid and gid of the named file. If the file is - // a symbolic link, it changes the uid and gid of the link itself. - Lchown(name string, uid, gid int) error - // Chown changes the numeric uid and gid of the named file. If the file is a - // symbolic link, it changes the uid and gid of the link's target. - Chown(name string, uid, gid int) error - // Chtimes changes the access and modification times of the named file, - // similar to the Unix utime() or utimes() functions. - // - // The underlying filesystem may truncate or round the values to a less - // precise time unit. - Chtimes(name string, atime time.Time, mtime time.Time) error -} - -// Chroot abstract the chroot related operations in a storage-agnostic interface -// as an extension to the Basic interface. -type Chroot interface { - // Chroot returns a new filesystem from the same type where the new root is - // the given path. Files outside of the designated directory tree cannot be - // accessed. - Chroot(path string) (Filesystem, error) - // Root returns the root path of the filesystem. - Root() string -} - -// File represent a file, being a subset of the os.File -type File interface { - // Name returns the name of the file as presented to Open. - Name() string - io.Writer - io.Reader - io.ReaderAt - io.Seeker - io.Closer - // Lock locks the file like e.g. flock. It protects against access from - // other processes. - Lock() error - // Unlock unlocks the file. - Unlock() error - // Truncate the file. - Truncate(size int64) error -} - -// Capable interface can return the available features of a filesystem. -type Capable interface { - // Capabilities returns the capabilities of a filesystem in bit flags. - Capabilities() Capability -} - -// Capabilities returns the features supported by a filesystem. If the FS -// does not implement Capable interface it returns all features. -func Capabilities(fs Basic) Capability { - capable, ok := fs.(Capable) - if !ok { - return DefaultCapabilities - } - - return capable.Capabilities() -} - -// CapabilityCheck tests the filesystem for the provided capabilities and -// returns true in case it supports all of them. -func CapabilityCheck(fs Basic, capabilities Capability) bool { - fsCaps := Capabilities(fs) - return fsCaps&capabilities == capabilities -} diff --git a/vendor/gopkg.in/src-d/go-billy.v4/helper/chroot/chroot.go b/vendor/gopkg.in/src-d/go-billy.v4/helper/chroot/chroot.go deleted file mode 100644 index 44ddb3d..0000000 --- a/vendor/gopkg.in/src-d/go-billy.v4/helper/chroot/chroot.go +++ /dev/null @@ -1,242 +0,0 @@ -package chroot - -import ( - "os" - "path/filepath" - "strings" - - "gopkg.in/src-d/go-billy.v4" - "gopkg.in/src-d/go-billy.v4/helper/polyfill" -) - -// ChrootHelper is a helper to implement billy.Chroot. -type ChrootHelper struct { - underlying billy.Filesystem - base string -} - -// New creates a new filesystem wrapping up the given 'fs'. -// The created filesystem has its base in the given ChrootHelperectory of the -// underlying filesystem. -func New(fs billy.Basic, base string) billy.Filesystem { - return &ChrootHelper{ - underlying: polyfill.New(fs), - base: base, - } -} - -func (fs *ChrootHelper) underlyingPath(filename string) (string, error) { - if isCrossBoundaries(filename) { - return "", billy.ErrCrossedBoundary - } - - return fs.Join(fs.Root(), filename), nil -} - -func isCrossBoundaries(path string) bool { - path = filepath.ToSlash(path) - path = filepath.Clean(path) - - return strings.HasPrefix(path, ".."+string(filepath.Separator)) -} - -func (fs *ChrootHelper) Create(filename string) (billy.File, error) { - fullpath, err := fs.underlyingPath(filename) - if err != nil { - return nil, err - } - - f, err := fs.underlying.Create(fullpath) - if err != nil { - return nil, err - } - - return newFile(fs, f, filename), nil -} - -func (fs *ChrootHelper) Open(filename string) (billy.File, error) { - fullpath, err := fs.underlyingPath(filename) - if err != nil { - return nil, err - } - - f, err := fs.underlying.Open(fullpath) - if err != nil { - return nil, err - } - - return newFile(fs, f, filename), nil -} - -func (fs *ChrootHelper) OpenFile(filename string, flag int, mode os.FileMode) (billy.File, error) { - fullpath, err := fs.underlyingPath(filename) - if err != nil { - return nil, err - } - - f, err := fs.underlying.OpenFile(fullpath, flag, mode) - if err != nil { - return nil, err - } - - return newFile(fs, f, filename), nil -} - -func (fs *ChrootHelper) Stat(filename string) (os.FileInfo, error) { - fullpath, err := fs.underlyingPath(filename) - if err != nil { - return nil, err - } - - return fs.underlying.Stat(fullpath) -} - -func (fs *ChrootHelper) Rename(from, to string) error { - var err error - from, err = fs.underlyingPath(from) - if err != nil { - return err - } - - to, err = fs.underlyingPath(to) - if err != nil { - return err - } - - return fs.underlying.Rename(from, to) -} - -func (fs *ChrootHelper) Remove(path string) error { - fullpath, err := fs.underlyingPath(path) - if err != nil { - return err - } - - return fs.underlying.Remove(fullpath) -} - -func (fs *ChrootHelper) Join(elem ...string) string { - return fs.underlying.Join(elem...) -} - -func (fs *ChrootHelper) TempFile(dir, prefix string) (billy.File, error) { - fullpath, err := fs.underlyingPath(dir) - if err != nil { - return nil, err - } - - f, err := fs.underlying.(billy.TempFile).TempFile(fullpath, prefix) - if err != nil { - return nil, err - } - - return newFile(fs, f, fs.Join(dir, filepath.Base(f.Name()))), nil -} - -func (fs *ChrootHelper) ReadDir(path string) ([]os.FileInfo, error) { - fullpath, err := fs.underlyingPath(path) - if err != nil { - return nil, err - } - - return fs.underlying.(billy.Dir).ReadDir(fullpath) -} - -func (fs *ChrootHelper) MkdirAll(filename string, perm os.FileMode) error { - fullpath, err := fs.underlyingPath(filename) - if err != nil { - return err - } - - return fs.underlying.(billy.Dir).MkdirAll(fullpath, perm) -} - -func (fs *ChrootHelper) Lstat(filename string) (os.FileInfo, error) { - fullpath, err := fs.underlyingPath(filename) - if err != nil { - return nil, err - } - - return fs.underlying.(billy.Symlink).Lstat(fullpath) -} - -func (fs *ChrootHelper) Symlink(target, link string) error { - target = filepath.FromSlash(target) - - // only rewrite target if it's already absolute - if filepath.IsAbs(target) || strings.HasPrefix(target, string(filepath.Separator)) { - target = fs.Join(fs.Root(), target) - target = filepath.Clean(filepath.FromSlash(target)) - } - - link, err := fs.underlyingPath(link) - if err != nil { - return err - } - - return fs.underlying.(billy.Symlink).Symlink(target, link) -} - -func (fs *ChrootHelper) Readlink(link string) (string, error) { - fullpath, err := fs.underlyingPath(link) - if err != nil { - return "", err - } - - target, err := fs.underlying.(billy.Symlink).Readlink(fullpath) - if err != nil { - return "", err - } - - if !filepath.IsAbs(target) && !strings.HasPrefix(target, string(filepath.Separator)) { - return target, nil - } - - target, err = filepath.Rel(fs.base, target) - if err != nil { - return "", err - } - - return string(os.PathSeparator) + target, nil -} - -func (fs *ChrootHelper) Chroot(path string) (billy.Filesystem, error) { - fullpath, err := fs.underlyingPath(path) - if err != nil { - return nil, err - } - - return New(fs.underlying, fullpath), nil -} - -func (fs *ChrootHelper) Root() string { - return fs.base -} - -func (fs *ChrootHelper) Underlying() billy.Basic { - return fs.underlying -} - -// Capabilities implements the Capable interface. -func (fs *ChrootHelper) Capabilities() billy.Capability { - return billy.Capabilities(fs.underlying) -} - -type file struct { - billy.File - name string -} - -func newFile(fs billy.Filesystem, f billy.File, filename string) billy.File { - filename = fs.Join(fs.Root(), filename) - filename, _ = filepath.Rel(fs.Root(), filename) - - return &file{ - File: f, - name: filename, - } -} - -func (f *file) Name() string { - return f.name -} diff --git a/vendor/gopkg.in/src-d/go-billy.v4/helper/polyfill/polyfill.go b/vendor/gopkg.in/src-d/go-billy.v4/helper/polyfill/polyfill.go deleted file mode 100644 index f613c25..0000000 --- a/vendor/gopkg.in/src-d/go-billy.v4/helper/polyfill/polyfill.go +++ /dev/null @@ -1,105 +0,0 @@ -package polyfill - -import ( - "os" - "path/filepath" - - "gopkg.in/src-d/go-billy.v4" -) - -// Polyfill is a helper that implements all missing method from billy.Filesystem. -type Polyfill struct { - billy.Basic - c capabilities -} - -type capabilities struct{ tempfile, dir, symlink, chroot bool } - -// New creates a new filesystem wrapping up 'fs' the intercepts all the calls -// made and errors if fs doesn't implement any of the billy interfaces. -func New(fs billy.Basic) billy.Filesystem { - if original, ok := fs.(billy.Filesystem); ok { - return original - } - - h := &Polyfill{Basic: fs} - - _, h.c.tempfile = h.Basic.(billy.TempFile) - _, h.c.dir = h.Basic.(billy.Dir) - _, h.c.symlink = h.Basic.(billy.Symlink) - _, h.c.chroot = h.Basic.(billy.Chroot) - return h -} - -func (h *Polyfill) TempFile(dir, prefix string) (billy.File, error) { - if !h.c.tempfile { - return nil, billy.ErrNotSupported - } - - return h.Basic.(billy.TempFile).TempFile(dir, prefix) -} - -func (h *Polyfill) ReadDir(path string) ([]os.FileInfo, error) { - if !h.c.dir { - return nil, billy.ErrNotSupported - } - - return h.Basic.(billy.Dir).ReadDir(path) -} - -func (h *Polyfill) MkdirAll(filename string, perm os.FileMode) error { - if !h.c.dir { - return billy.ErrNotSupported - } - - return h.Basic.(billy.Dir).MkdirAll(filename, perm) -} - -func (h *Polyfill) Symlink(target, link string) error { - if !h.c.symlink { - return billy.ErrNotSupported - } - - return h.Basic.(billy.Symlink).Symlink(target, link) -} - -func (h *Polyfill) Readlink(link string) (string, error) { - if !h.c.symlink { - return "", billy.ErrNotSupported - } - - return h.Basic.(billy.Symlink).Readlink(link) -} - -func (h *Polyfill) Lstat(path string) (os.FileInfo, error) { - if !h.c.symlink { - return nil, billy.ErrNotSupported - } - - return h.Basic.(billy.Symlink).Lstat(path) -} - -func (h *Polyfill) Chroot(path string) (billy.Filesystem, error) { - if !h.c.chroot { - return nil, billy.ErrNotSupported - } - - return h.Basic.(billy.Chroot).Chroot(path) -} - -func (h *Polyfill) Root() string { - if !h.c.chroot { - return string(filepath.Separator) - } - - return h.Basic.(billy.Chroot).Root() -} - -func (h *Polyfill) Underlying() billy.Basic { - return h.Basic -} - -// Capabilities implements the Capable interface. -func (h *Polyfill) Capabilities() billy.Capability { - return billy.Capabilities(h.Basic) -} diff --git a/vendor/gopkg.in/src-d/go-billy.v4/osfs/os.go b/vendor/gopkg.in/src-d/go-billy.v4/osfs/os.go deleted file mode 100644 index ff35a3b..0000000 --- a/vendor/gopkg.in/src-d/go-billy.v4/osfs/os.go +++ /dev/null @@ -1,139 +0,0 @@ -// Package osfs provides a billy filesystem for the OS. -package osfs // import "gopkg.in/src-d/go-billy.v4/osfs" - -import ( - "io/ioutil" - "os" - "path/filepath" - "sync" - - "gopkg.in/src-d/go-billy.v4" - "gopkg.in/src-d/go-billy.v4/helper/chroot" -) - -const ( - defaultDirectoryMode = 0755 - defaultCreateMode = 0666 -) - -// OS is a filesystem based on the os filesystem. -type OS struct{} - -// New returns a new OS filesystem. -func New(baseDir string) billy.Filesystem { - return chroot.New(&OS{}, baseDir) -} - -func (fs *OS) Create(filename string) (billy.File, error) { - return fs.OpenFile(filename, os.O_RDWR|os.O_CREATE|os.O_TRUNC, defaultCreateMode) -} - -func (fs *OS) OpenFile(filename string, flag int, perm os.FileMode) (billy.File, error) { - if flag&os.O_CREATE != 0 { - if err := fs.createDir(filename); err != nil { - return nil, err - } - } - - f, err := os.OpenFile(filename, flag, perm) - if err != nil { - return nil, err - } - return &file{File: f}, err -} - -func (fs *OS) createDir(fullpath string) error { - dir := filepath.Dir(fullpath) - if dir != "." { - if err := os.MkdirAll(dir, defaultDirectoryMode); err != nil { - return err - } - } - - return nil -} - -func (fs *OS) ReadDir(path string) ([]os.FileInfo, error) { - l, err := ioutil.ReadDir(path) - if err != nil { - return nil, err - } - - var s = make([]os.FileInfo, len(l)) - for i, f := range l { - s[i] = f - } - - return s, nil -} - -func (fs *OS) Rename(from, to string) error { - if err := fs.createDir(to); err != nil { - return err - } - - return os.Rename(from, to) -} - -func (fs *OS) MkdirAll(path string, perm os.FileMode) error { - return os.MkdirAll(path, defaultDirectoryMode) -} - -func (fs *OS) Open(filename string) (billy.File, error) { - return fs.OpenFile(filename, os.O_RDONLY, 0) -} - -func (fs *OS) Stat(filename string) (os.FileInfo, error) { - return os.Stat(filename) -} - -func (fs *OS) Remove(filename string) error { - return os.Remove(filename) -} - -func (fs *OS) TempFile(dir, prefix string) (billy.File, error) { - if err := fs.createDir(dir + string(os.PathSeparator)); err != nil { - return nil, err - } - - f, err := ioutil.TempFile(dir, prefix) - if err != nil { - return nil, err - } - return &file{File: f}, nil -} - -func (fs *OS) Join(elem ...string) string { - return filepath.Join(elem...) -} - -func (fs *OS) RemoveAll(path string) error { - return os.RemoveAll(filepath.Clean(path)) -} - -func (fs *OS) Lstat(filename string) (os.FileInfo, error) { - return os.Lstat(filepath.Clean(filename)) -} - -func (fs *OS) Symlink(target, link string) error { - if err := fs.createDir(link); err != nil { - return err - } - - return os.Symlink(target, link) -} - -func (fs *OS) Readlink(link string) (string, error) { - return os.Readlink(link) -} - -// Capabilities implements the Capable interface. -func (fs *OS) Capabilities() billy.Capability { - return billy.DefaultCapabilities -} - -// file is a wrapper for an os.File which adds support for file locking. -type file struct { - *os.File - m sync.Mutex -} diff --git a/vendor/gopkg.in/src-d/go-billy.v4/osfs/os_posix.go b/vendor/gopkg.in/src-d/go-billy.v4/osfs/os_posix.go deleted file mode 100644 index 144cde1..0000000 --- a/vendor/gopkg.in/src-d/go-billy.v4/osfs/os_posix.go +++ /dev/null @@ -1,21 +0,0 @@ -// +build !windows - -package osfs - -import ( - "golang.org/x/sys/unix" -) - -func (f *file) Lock() error { - f.m.Lock() - defer f.m.Unlock() - - return unix.Flock(int(f.File.Fd()), unix.LOCK_EX) -} - -func (f *file) Unlock() error { - f.m.Lock() - defer f.m.Unlock() - - return unix.Flock(int(f.File.Fd()), unix.LOCK_UN) -} diff --git a/vendor/gopkg.in/src-d/go-billy.v4/osfs/os_windows.go b/vendor/gopkg.in/src-d/go-billy.v4/osfs/os_windows.go deleted file mode 100644 index 5eb9882..0000000 --- a/vendor/gopkg.in/src-d/go-billy.v4/osfs/os_windows.go +++ /dev/null @@ -1,57 +0,0 @@ -// +build windows - -package osfs - -import ( - "os" - "runtime" - "unsafe" - - "golang.org/x/sys/windows" -) - -type fileInfo struct { - os.FileInfo - name string -} - -func (fi *fileInfo) Name() string { - return fi.name -} - -var ( - kernel32DLL = windows.NewLazySystemDLL("kernel32.dll") - lockFileExProc = kernel32DLL.NewProc("LockFileEx") - unlockFileProc = kernel32DLL.NewProc("UnlockFile") -) - -const ( - lockfileExclusiveLock = 0x2 -) - -func (f *file) Lock() error { - f.m.Lock() - defer f.m.Unlock() - - var overlapped windows.Overlapped - // err is always non-nil as per sys/windows semantics. - ret, _, err := lockFileExProc.Call(f.File.Fd(), lockfileExclusiveLock, 0, 0xFFFFFFFF, 0, - uintptr(unsafe.Pointer(&overlapped))) - runtime.KeepAlive(&overlapped) - if ret == 0 { - return err - } - return nil -} - -func (f *file) Unlock() error { - f.m.Lock() - defer f.m.Unlock() - - // err is always non-nil as per sys/windows semantics. - ret, _, err := unlockFileProc.Call(f.File.Fd(), 0, 0, 0xFFFFFFFF, 0) - if ret == 0 { - return err - } - return nil -} diff --git a/vendor/gopkg.in/src-d/go-billy.v4/util/glob.go b/vendor/gopkg.in/src-d/go-billy.v4/util/glob.go deleted file mode 100644 index fdcb3e5..0000000 --- a/vendor/gopkg.in/src-d/go-billy.v4/util/glob.go +++ /dev/null @@ -1,111 +0,0 @@ -package util - -import ( - "path/filepath" - "sort" - "strings" - - "gopkg.in/src-d/go-billy.v4" -) - -// Glob returns the names of all files matching pattern or nil -// if there is no matching file. The syntax of patterns is the same -// as in Match. The pattern may describe hierarchical names such as -// /usr/*/bin/ed (assuming the Separator is '/'). -// -// Glob ignores file system errors such as I/O errors reading directories. -// The only possible returned error is ErrBadPattern, when pattern -// is malformed. -// -// Function originally from https://golang.org/src/path/filepath/match_test.go -func Glob(fs billy.Filesystem, pattern string) (matches []string, err error) { - if !hasMeta(pattern) { - if _, err = fs.Lstat(pattern); err != nil { - return nil, nil - } - return []string{pattern}, nil - } - - dir, file := filepath.Split(pattern) - // Prevent infinite recursion. See issue 15879. - if dir == pattern { - return nil, filepath.ErrBadPattern - } - - var m []string - m, err = Glob(fs, cleanGlobPath(dir)) - if err != nil { - return - } - for _, d := range m { - matches, err = glob(fs, d, file, matches) - if err != nil { - return - } - } - return -} - -// cleanGlobPath prepares path for glob matching. -func cleanGlobPath(path string) string { - switch path { - case "": - return "." - case string(filepath.Separator): - // do nothing to the path - return path - default: - return path[0 : len(path)-1] // chop off trailing separator - } -} - -// glob searches for files matching pattern in the directory dir -// and appends them to matches. If the directory cannot be -// opened, it returns the existing matches. New matches are -// added in lexicographical order. -func glob(fs billy.Filesystem, dir, pattern string, matches []string) (m []string, e error) { - m = matches - fi, err := fs.Stat(dir) - if err != nil { - return - } - - if !fi.IsDir() { - return - } - - names, _ := readdirnames(fs, dir) - sort.Strings(names) - - for _, n := range names { - matched, err := filepath.Match(pattern, n) - if err != nil { - return m, err - } - if matched { - m = append(m, filepath.Join(dir, n)) - } - } - return -} - -// hasMeta reports whether path contains any of the magic characters -// recognized by Match. -func hasMeta(path string) bool { - // TODO(niemeyer): Should other magic characters be added here? - return strings.ContainsAny(path, "*?[") -} - -func readdirnames(fs billy.Filesystem, dir string) ([]string, error) { - files, err := fs.ReadDir(dir) - if err != nil { - return nil, err - } - - var names []string - for _, file := range files { - names = append(names, file.Name()) - } - - return names, nil -} diff --git a/vendor/gopkg.in/src-d/go-billy.v4/util/util.go b/vendor/gopkg.in/src-d/go-billy.v4/util/util.go deleted file mode 100644 index cf7fb57..0000000 --- a/vendor/gopkg.in/src-d/go-billy.v4/util/util.go +++ /dev/null @@ -1,224 +0,0 @@ -package util - -import ( - "io" - "os" - "path/filepath" - "strconv" - "sync" - "time" - - "gopkg.in/src-d/go-billy.v4" -) - -// RemoveAll removes path and any children it contains. It removes everything it -// can but returns the first error it encounters. If the path does not exist, -// RemoveAll returns nil (no error). -func RemoveAll(fs billy.Basic, path string) error { - fs, path = getUnderlyingAndPath(fs, path) - - if r, ok := fs.(removerAll); ok { - return r.RemoveAll(path) - } - - return removeAll(fs, path) -} - -type removerAll interface { - RemoveAll(string) error -} - -func removeAll(fs billy.Basic, path string) error { - // This implementation is adapted from os.RemoveAll. - - // Simple case: if Remove works, we're done. - err := fs.Remove(path) - if err == nil || os.IsNotExist(err) { - return nil - } - - // Otherwise, is this a directory we need to recurse into? - dir, serr := fs.Stat(path) - if serr != nil { - if os.IsNotExist(serr) { - return nil - } - - return serr - } - - if !dir.IsDir() { - // Not a directory; return the error from Remove. - return err - } - - dirfs, ok := fs.(billy.Dir) - if !ok { - return billy.ErrNotSupported - } - - // Directory. - fis, err := dirfs.ReadDir(path) - if err != nil { - if os.IsNotExist(err) { - // Race. It was deleted between the Lstat and Open. - // Return nil per RemoveAll's docs. - return nil - } - - return err - } - - // Remove contents & return first error. - err = nil - for _, fi := range fis { - cpath := fs.Join(path, fi.Name()) - err1 := removeAll(fs, cpath) - if err == nil { - err = err1 - } - } - - // Remove directory. - err1 := fs.Remove(path) - if err1 == nil || os.IsNotExist(err1) { - return nil - } - - if err == nil { - err = err1 - } - - return err - -} - -// WriteFile writes data to a file named by filename in the given filesystem. -// If the file does not exist, WriteFile creates it with permissions perm; -// otherwise WriteFile truncates it before writing. -func WriteFile(fs billy.Basic, filename string, data []byte, perm os.FileMode) error { - f, err := fs.OpenFile(filename, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, perm) - if err != nil { - return err - } - - n, err := f.Write(data) - if err == nil && n < len(data) { - err = io.ErrShortWrite - } - - if err1 := f.Close(); err == nil { - err = err1 - } - - return err -} - -// Random number state. -// We generate random temporary file names so that there's a good -// chance the file doesn't exist yet - keeps the number of tries in -// TempFile to a minimum. -var rand uint32 -var randmu sync.Mutex - -func reseed() uint32 { - return uint32(time.Now().UnixNano() + int64(os.Getpid())) -} - -func nextSuffix() string { - randmu.Lock() - r := rand - if r == 0 { - r = reseed() - } - r = r*1664525 + 1013904223 // constants from Numerical Recipes - rand = r - randmu.Unlock() - return strconv.Itoa(int(1e9 + r%1e9))[1:] -} - -// TempFile creates a new temporary file in the directory dir with a name -// beginning with prefix, opens the file for reading and writing, and returns -// the resulting *os.File. If dir is the empty string, TempFile uses the default -// directory for temporary files (see os.TempDir). Multiple programs calling -// TempFile simultaneously will not choose the same file. The caller can use -// f.Name() to find the pathname of the file. It is the caller's responsibility -// to remove the file when no longer needed. -func TempFile(fs billy.Basic, dir, prefix string) (f billy.File, err error) { - // This implementation is based on stdlib ioutil.TempFile. - - if dir == "" { - dir = os.TempDir() - } - - nconflict := 0 - for i := 0; i < 10000; i++ { - name := filepath.Join(dir, prefix+nextSuffix()) - f, err = fs.OpenFile(name, os.O_RDWR|os.O_CREATE|os.O_EXCL, 0600) - if os.IsExist(err) { - if nconflict++; nconflict > 10 { - randmu.Lock() - rand = reseed() - randmu.Unlock() - } - continue - } - break - } - return -} - -// TempDir creates a new temporary directory in the directory dir -// with a name beginning with prefix and returns the path of the -// new directory. If dir is the empty string, TempDir uses the -// default directory for temporary files (see os.TempDir). -// Multiple programs calling TempDir simultaneously -// will not choose the same directory. It is the caller's responsibility -// to remove the directory when no longer needed. -func TempDir(fs billy.Dir, dir, prefix string) (name string, err error) { - // This implementation is based on stdlib ioutil.TempDir - - if dir == "" { - dir = os.TempDir() - } - - nconflict := 0 - for i := 0; i < 10000; i++ { - try := filepath.Join(dir, prefix+nextSuffix()) - err = fs.MkdirAll(try, 0700) - if os.IsExist(err) { - if nconflict++; nconflict > 10 { - randmu.Lock() - rand = reseed() - randmu.Unlock() - } - continue - } - if os.IsNotExist(err) { - if _, err := os.Stat(dir); os.IsNotExist(err) { - return "", err - } - } - if err == nil { - name = try - } - break - } - return -} - -type underlying interface { - Underlying() billy.Basic -} - -func getUnderlyingAndPath(fs billy.Basic, path string) (billy.Basic, string) { - u, ok := fs.(underlying) - if !ok { - return fs, path - } - if ch, ok := fs.(billy.Chroot); ok { - path = fs.Join(ch.Root(), path) - } - - return u.Underlying(), path -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/.gitignore b/vendor/gopkg.in/src-d/go-git.v4/.gitignore deleted file mode 100644 index 038dd9f..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -coverage.out -*~ -coverage.txt -profile.out diff --git a/vendor/gopkg.in/src-d/go-git.v4/.travis.yml b/vendor/gopkg.in/src-d/go-git.v4/.travis.yml deleted file mode 100644 index 3a65f3e..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/.travis.yml +++ /dev/null @@ -1,37 +0,0 @@ -language: go - -go: - - "1.11" - - "1.12" - -go_import_path: gopkg.in/src-d/go-git.v4 - -env: - - GIT_VERSION=master - - GIT_VERSION=v1.9.3 - - GIT_VERSION=v2.11.0 - -cache: - directories: - - $HOME/.git-dist - -before_script: - - export GIT_DIST_PATH=$HOME/.git-dist - - make build-git - -before_install: - - git config --global user.email "travis@example.com" - - git config --global user.name "Travis CI" - -install: - - go get -v -t ./... - -script: - - export GIT_EXEC_PATH=$GIT_DIST_PATH - - export PATH=$GIT_DIST_PATH:$PATH - - git version - - make test-coverage - - go vet ./... - -after_success: - - bash <(curl -s https://codecov.io/bash) diff --git a/vendor/gopkg.in/src-d/go-git.v4/CODE_OF_CONDUCT.md b/vendor/gopkg.in/src-d/go-git.v4/CODE_OF_CONDUCT.md deleted file mode 100644 index a689fa3..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,74 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our project and -our community a harassment-free experience for everyone, regardless of age, body -size, disability, ethnicity, gender identity and expression, level of experience, -education, socio-economic status, nationality, personal appearance, race, -religion, or sexual identity and orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment -include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or - advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic - address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable -behavior and are expected to take appropriate and fair corrective action in -response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or -reject comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct, or to ban temporarily or -permanently any contributor for other behaviors that they deem inappropriate, -threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. Examples of -representing a project or community include using an official project e-mail -address, posting via an official social media account, or acting as an appointed -representative at an online or offline event. Representation of a project may be -further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project team at conduct@sourced.tech. All -complaints will be reviewed and investigated and will result in a response that -is deemed necessary and appropriate to the circumstances. The project team is -obligated to maintain confidentiality with regard to the reporter of an incident. -Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good -faith may face temporary or permanent repercussions as determined by other -members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, -available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html - -[homepage]: https://www.contributor-covenant.org - diff --git a/vendor/gopkg.in/src-d/go-git.v4/COMPATIBILITY.md b/vendor/gopkg.in/src-d/go-git.v4/COMPATIBILITY.md deleted file mode 100644 index 4a3da62..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/COMPATIBILITY.md +++ /dev/null @@ -1,111 +0,0 @@ -Supported Capabilities -====================== - -Here is a non-comprehensive table of git commands and features whose equivalent -is supported by go-git. - -| Feature | Status | Notes | -|---------------------------------------|--------|-------| -| **config** | -| config | ✔ | Reading and modifying per-repository configuration (`.git/config`) is supported. Global configuration (`$HOME/.gitconfig`) is not. | -| **getting and creating repositories** | -| init | ✔ | Plain init and `--bare` are supported. Flags `--template`, `--separate-git-dir` and `--shared` are not. | -| clone | ✔ | Plain clone and equivalents to `--progress`, `--single-branch`, `--depth`, `--origin`, `--recurse-submodules` are supported. Others are not. | -| **basic snapshotting** | -| add | ✔ | Plain add is supported. Any other flag aren't supported | -| status | ✔ | -| commit | ✔ | -| reset | ✔ | -| rm | ✔ | -| mv | ✔ | -| **branching and merging** | -| branch | ✔ | -| checkout | ✔ | Basic usages of checkout are supported. | -| merge | ✖ | -| mergetool | ✖ | -| stash | ✖ | -| tag | ✔ | -| **sharing and updating projects** | -| fetch | ✔ | -| pull | ✔ | Only supports merges where the merge can be resolved as a fast-forward. | -| push | ✔ | -| remote | ✔ | -| submodule | ✔ | -| **inspection and comparison** | -| show | ✔ | -| log | ✔ | -| shortlog | (see log) | -| describe | | -| **patching** | -| apply | ✖ | -| cherry-pick | ✖ | -| diff | ✔ | Patch object with UnifiedDiff output representation | -| rebase | ✖ | -| revert | ✖ | -| **debugging** | -| bisect | ✖ | -| blame | ✔ | -| grep | ✔ | -| **email** || -| am | ✖ | -| apply | ✖ | -| format-patch | ✖ | -| send-email | ✖ | -| request-pull | ✖ | -| **external systems** | -| svn | ✖ | -| fast-import | ✖ | -| **administration** | -| clean | ✔ | -| gc | ✖ | -| fsck | ✖ | -| reflog | ✖ | -| filter-branch | ✖ | -| instaweb | ✖ | -| archive | ✖ | -| bundle | ✖ | -| prune | ✖ | -| repack | ✖ | -| **server admin** | -| daemon | | -| update-server-info | | -| **advanced** | -| notes | ✖ | -| replace | ✖ | -| worktree | ✖ | -| annotate | (see blame) | -| **gpg** | -| git-verify-commit | ✔ | -| git-verify-tag | ✔ | -| **plumbing commands** | -| cat-file | ✔ | -| check-ignore | | -| commit-tree | | -| count-objects | | -| diff-index | | -| for-each-ref | ✔ | -| hash-object | ✔ | -| ls-files | ✔ | -| merge-base | ✔ | Calculates the merge-base only between two commits, and supports `--independent` and `--is-ancestor` modifiers; Does not support `--fork-point` nor `--octopus` modifiers. | -| read-tree | | -| rev-list | ✔ | -| rev-parse | | -| show-ref | ✔ | -| symbolic-ref | ✔ | -| update-index | | -| update-ref | | -| verify-pack | | -| write-tree | | -| **protocols** | -| http(s):// (dumb) | ✖ | -| http(s):// (smart) | ✔ | -| git:// | ✔ | -| ssh:// | ✔ | -| file:// | ✔ | -| custom | ✔ | -| **other features** | -| gitignore | ✔ | -| gitattributes | ✖ | -| index version | | -| packfile version | | -| push-certs | ✖ | diff --git a/vendor/gopkg.in/src-d/go-git.v4/CONTRIBUTING.md b/vendor/gopkg.in/src-d/go-git.v4/CONTRIBUTING.md deleted file mode 100644 index bdb5f73..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/CONTRIBUTING.md +++ /dev/null @@ -1,59 +0,0 @@ -# Contributing Guidelines - -source{d} go-git project is [Apache 2.0 licensed](LICENSE) and accepts -contributions via GitHub pull requests. This document outlines some of the -conventions on development workflow, commit message formatting, contact points, -and other resources to make it easier to get your contribution accepted. - -## Certificate of Origin - -By contributing to this project you agree to the [Developer Certificate of -Origin (DCO)](DCO). This document was created by the Linux Kernel community and is a -simple statement that you, as a contributor, have the legal right to make the -contribution. - -In order to show your agreement with the DCO you should include at the end of commit message, -the following line: `Signed-off-by: John Doe `, using your real name. - -This can be done easily using the [`-s`](https://github.com/git/git/blob/b2c150d3aa82f6583b9aadfecc5f8fa1c74aca09/Documentation/git-commit.txt#L154-L161) flag on the `git commit`. - -## Support Channels - -The official support channels, for both users and contributors, are: - -- [StackOverflow go-git tag](https://stackoverflow.com/questions/tagged/go-git) for user questions. -- GitHub [Issues](https://github.com/src-d/go-git/issues)* for bug reports and feature requests. -- Slack: #go-git room in the [source{d} Slack](https://join.slack.com/t/sourced-community/shared_invite/enQtMjc4Njk5MzEyNzM2LTFjNzY4NjEwZGEwMzRiNTM4MzRlMzQ4MmIzZjkwZmZlM2NjODUxZmJjNDI1OTcxNDAyMmZlNmFjODZlNTg0YWM) - -*Before opening a new issue or submitting a new pull request, it's helpful to -search the project - it's likely that another user has already reported the -issue you're facing, or it's a known issue that we're already aware of. - - -## How to Contribute - -Pull Requests (PRs) are the main and exclusive way to contribute to the official go-git project. -In order for a PR to be accepted it needs to pass a list of requirements: - -- You should be able to run the same query using `git`. We don't accept features that are not implemented in the official git implementation. -- The expected behavior must match the [official git implementation](https://github.com/git/git). -- The actual behavior must be correctly explained with natural language and providing a minimum working example in Go that reproduces it. -- All PRs must be written in idiomatic Go, formatted according to [gofmt](https://golang.org/cmd/gofmt/), and without any warnings from [go lint](https://github.com/golang/lint) nor [go vet](https://golang.org/cmd/vet/). -- They should in general include tests, and those shall pass. -- If the PR is a bug fix, it has to include a suite of unit tests for the new functionality. -- If the PR is a new feature, it has to come with a suite of unit tests, that tests the new functionality. -- In any case, all the PRs have to pass the personal evaluation of at least one of the [maintainers](MAINTAINERS) of go-git. - -### Format of the commit message - -Every commit message should describe what was changed, under which context and, if applicable, the GitHub issue it relates to: - -``` -plumbing: packp, Skip argument validations for unknown capabilities. Fixes #623 -``` - -The format can be described more formally as follows: - -``` -: , . [Fixes #] -``` diff --git a/vendor/gopkg.in/src-d/go-git.v4/DCO b/vendor/gopkg.in/src-d/go-git.v4/DCO deleted file mode 100644 index 3aca339..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/DCO +++ /dev/null @@ -1,36 +0,0 @@ -Developer Certificate of Origin -Version 1.1 - -Copyright (C) 2004, 2006 The Linux Foundation and its contributors. -660 York Street, Suite 102, -San Francisco, CA 94110 USA - -Everyone is permitted to copy and distribute verbatim copies of this -license document, but changing it is not allowed. - - -Developer's Certificate of Origin 1.1 - -By making a contribution to this project, I certify that: - -(a) The contribution was created in whole or in part by me and I - have the right to submit it under the open source license - indicated in the file; or - -(b) The contribution is based upon previous work that, to the best - of my knowledge, is covered under an appropriate open source - license and I have the right under that license to submit that - work with modifications, whether created in whole or in part - by me, under the same open source license (unless I am - permitted to submit under a different license), as indicated - in the file; or - -(c) The contribution was provided directly to me by some other - person who certified (a), (b) or (c) and I have not modified - it. - -(d) I understand and agree that this project and the contribution - are public and that a record of the contribution (including all - personal information I submit with it, including my sign-off) is - maintained indefinitely and may be redistributed consistent with - this project or the open source license(s) involved. \ No newline at end of file diff --git a/vendor/gopkg.in/src-d/go-git.v4/LICENSE b/vendor/gopkg.in/src-d/go-git.v4/LICENSE deleted file mode 100644 index 8aa3d85..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor 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, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2018 Sourced Technologies, S.L. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/vendor/gopkg.in/src-d/go-git.v4/MAINTAINERS b/vendor/gopkg.in/src-d/go-git.v4/MAINTAINERS deleted file mode 100644 index ff2129c..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/MAINTAINERS +++ /dev/null @@ -1,3 +0,0 @@ -Máximo Cuadros (@mcuadros) -Jeremy Stribling (@strib) -Ori Rawlings (@orirawlings) diff --git a/vendor/gopkg.in/src-d/go-git.v4/Makefile b/vendor/gopkg.in/src-d/go-git.v4/Makefile deleted file mode 100644 index d576778..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/Makefile +++ /dev/null @@ -1,52 +0,0 @@ -# General -WORKDIR = $(PWD) - -# Go parameters -GOCMD = go -GOTEST = $(GOCMD) test -v - -# Git config -GIT_VERSION ?= -GIT_DIST_PATH ?= $(PWD)/.git-dist -GIT_REPOSITORY = http://github.com/git/git.git - -# Coverage -COVERAGE_REPORT = coverage.txt -COVERAGE_PROFILE = profile.out -COVERAGE_MODE = atomic - -ifneq ($(origin CI), undefined) - WORKDIR := $(GOPATH)/src/gopkg.in/src-d/go-git.v4 -endif - -build-git: - @if [ -f $(GIT_DIST_PATH)/git ]; then \ - echo "nothing to do, using cache $(GIT_DIST_PATH)"; \ - else \ - git clone $(GIT_REPOSITORY) -b $(GIT_VERSION) --depth 1 --single-branch $(GIT_DIST_PATH); \ - cd $(GIT_DIST_PATH); \ - make configure; \ - ./configure; \ - make all; \ - fi - -test: - @cd $(WORKDIR); \ - $(GOTEST) ./... - -test-coverage: - @cd $(WORKDIR); \ - echo "" > $(COVERAGE_REPORT); \ - for dir in `find . -name "*.go" | grep -o '.*/' | sort | uniq`; do \ - $(GOTEST) $$dir -coverprofile=$(COVERAGE_PROFILE) -covermode=$(COVERAGE_MODE); \ - if [ $$? != 0 ]; then \ - exit 2; \ - fi; \ - if [ -f $(COVERAGE_PROFILE) ]; then \ - cat $(COVERAGE_PROFILE) >> $(COVERAGE_REPORT); \ - rm $(COVERAGE_PROFILE); \ - fi; \ - done; \ - -clean: - rm -rf $(GIT_DIST_PATH) \ No newline at end of file diff --git a/vendor/gopkg.in/src-d/go-git.v4/README.md b/vendor/gopkg.in/src-d/go-git.v4/README.md deleted file mode 100644 index ed9306c..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/README.md +++ /dev/null @@ -1,123 +0,0 @@ -![go-git logo](https://cdn.rawgit.com/src-d/artwork/02036484/go-git/files/go-git-github-readme-header.png) -[![GoDoc](https://godoc.org/gopkg.in/src-d/go-git.v4?status.svg)](https://godoc.org/github.com/src-d/go-git) [![Build Status](https://travis-ci.org/src-d/go-git.svg)](https://travis-ci.org/src-d/go-git) [![Build status](https://ci.appveyor.com/api/projects/status/nyidskwifo4py6ub?svg=true)](https://ci.appveyor.com/project/mcuadros/go-git) [![codecov.io](https://codecov.io/github/src-d/go-git/coverage.svg)](https://codecov.io/github/src-d/go-git) [![Go Report Card](https://goreportcard.com/badge/github.com/src-d/go-git)](https://goreportcard.com/report/github.com/src-d/go-git) - -*go-git* is a highly extensible git implementation library written in **pure Go**. - -It can be used to manipulate git repositories at low level *(plumbing)* or high level *(porcelain)*, through an idiomatic Go API. It also supports several types of storage, such as in-memory filesystems, or custom implementations thanks to the [`Storer`](https://godoc.org/gopkg.in/src-d/go-git.v4/plumbing/storer) interface. - -It's being actively developed since 2015 and is being used extensively by [source{d}](https://sourced.tech/) and [Keybase](https://keybase.io/blog/encrypted-git-for-everyone), and by many other libraries and tools. - -Comparison with git -------------------- - -*go-git* aims to be fully compatible with [git](https://github.com/git/git), all the *porcelain* operations are implemented to work exactly as *git* does. - -*git* is a humongous project with years of development by thousands of contributors, making it challenging for *go-git* to implement all the features. You can find a comparison of *go-git* vs *git* in the [compatibility documentation](COMPATIBILITY.md). - - -Installation ------------- - -The recommended way to install *go-git* is: - -``` -go get -u gopkg.in/src-d/go-git.v4/... -``` - -> We use [gopkg.in](http://labix.org/gopkg.in) to version the API, this means that when `go get` clones the package, it's the latest tag matching `v4.*` that is cloned and not the master branch. - -Examples --------- - -> Please note that the `CheckIfError` and `Info` functions used in the examples are from the [examples package](https://github.com/src-d/go-git/blob/master/_examples/common.go#L17) just to be used in the examples. - - -### Basic example - -A basic example that mimics the standard `git clone` command - -```go -// Clone the given repository to the given directory -Info("git clone https://github.com/src-d/go-git") - -_, err := git.PlainClone("/tmp/foo", false, &git.CloneOptions{ - URL: "https://github.com/src-d/go-git", - Progress: os.Stdout, -}) - -CheckIfError(err) -``` - -Outputs: -``` -Counting objects: 4924, done. -Compressing objects: 100% (1333/1333), done. -Total 4924 (delta 530), reused 6 (delta 6), pack-reused 3533 -``` - -### In-memory example - -Cloning a repository into memory and printing the history of HEAD, just like `git log` does - - -```go -// Clones the given repository in memory, creating the remote, the local -// branches and fetching the objects, exactly as: -Info("git clone https://github.com/src-d/go-siva") - -r, err := git.Clone(memory.NewStorage(), nil, &git.CloneOptions{ - URL: "https://github.com/src-d/go-siva", -}) - -CheckIfError(err) - -// Gets the HEAD history from HEAD, just like this command: -Info("git log") - -// ... retrieves the branch pointed by HEAD -ref, err := r.Head() -CheckIfError(err) - - -// ... retrieves the commit history -cIter, err := r.Log(&git.LogOptions{From: ref.Hash()}) -CheckIfError(err) - -// ... just iterates over the commits, printing it -err = cIter.ForEach(func(c *object.Commit) error { - fmt.Println(c) - return nil -}) -CheckIfError(err) -``` - -Outputs: -``` -commit ded8054fd0c3994453e9c8aacaf48d118d42991e -Author: Santiago M. Mola -Date: Sat Nov 12 21:18:41 2016 +0100 - - index: ReadFrom/WriteTo returns IndexReadError/IndexWriteError. (#9) - -commit df707095626f384ce2dc1a83b30f9a21d69b9dfc -Author: Santiago M. Mola -Date: Fri Nov 11 13:23:22 2016 +0100 - - readwriter: fix bug when writing index. (#10) - - When using ReadWriter on an existing siva file, absolute offset for - index entries was not being calculated correctly. -... -``` - -You can find this [example](_examples/log/main.go) and many others in the [examples](_examples) folder. - -Contribute ----------- - -[Contributions](https://github.com/src-d/go-git/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22) are more than welcome, if you are interested please take a look to -our [Contributing Guidelines](CONTRIBUTING.md). - -License -------- -Apache License Version 2.0, see [LICENSE](LICENSE) diff --git a/vendor/gopkg.in/src-d/go-git.v4/appveyor.yml b/vendor/gopkg.in/src-d/go-git.v4/appveyor.yml deleted file mode 100644 index 160616b..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/appveyor.yml +++ /dev/null @@ -1,21 +0,0 @@ -version: "{build}" -platform: x64 - -matrix: - allow_failures: - - platform: x64 - -clone_folder: c:\gopath\src\gopkg.in\src-d\go-git.v4 - -environment: - GOPATH: c:\gopath - -install: - - set PATH=%GOPATH%\bin;c:\go\bin;"C:\Program Files\Git\mingw64\bin";%PATH% - - go version - - go get -v -t ./... - - git config --global user.email "travis@example.com" - - git config --global user.name "Travis CI - -build_script: - - go test -v ./... diff --git a/vendor/gopkg.in/src-d/go-git.v4/blame.go b/vendor/gopkg.in/src-d/go-git.v4/blame.go deleted file mode 100644 index f610851..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/blame.go +++ /dev/null @@ -1,302 +0,0 @@ -package git - -import ( - "bytes" - "errors" - "fmt" - "strconv" - "strings" - "time" - "unicode/utf8" - - "gopkg.in/src-d/go-git.v4/plumbing" - "gopkg.in/src-d/go-git.v4/plumbing/object" - "gopkg.in/src-d/go-git.v4/utils/diff" -) - -// BlameResult represents the result of a Blame operation. -type BlameResult struct { - // Path is the path of the File that we're blaming. - Path string - // Rev (Revision) is the hash of the specified Commit used to generate this result. - Rev plumbing.Hash - // Lines contains every line with its authorship. - Lines []*Line -} - -// Blame returns a BlameResult with the information about the last author of -// each line from file `path` at commit `c`. -func Blame(c *object.Commit, path string) (*BlameResult, error) { - // The file to blame is identified by the input arguments: - // commit and path. commit is a Commit object obtained from a Repository. Path - // represents a path to a specific file contained into the repository. - // - // Blaming a file is a two step process: - // - // 1. Create a linear history of the commits affecting a file. We use - // revlist.New for that. - // - // 2. Then build a graph with a node for every line in every file in - // the history of the file. - // - // Each node is assigned a commit: Start by the nodes in the first - // commit. Assign that commit as the creator of all its lines. - // - // Then jump to the nodes in the next commit, and calculate the diff - // between the two files. Newly created lines get - // assigned the new commit as its origin. Modified lines also get - // this new commit. Untouched lines retain the old commit. - // - // All this work is done in the assignOrigin function which holds all - // the internal relevant data in a "blame" struct, that is not - // exported. - // - // TODO: ways to improve the efficiency of this function: - // 1. Improve revlist - // 2. Improve how to traverse the history (example a backward traversal will - // be much more efficient) - // - // TODO: ways to improve the function in general: - // 1. Add memoization between revlist and assign. - // 2. It is using much more memory than needed, see the TODOs below. - - b := new(blame) - b.fRev = c - b.path = path - - // get all the file revisions - if err := b.fillRevs(); err != nil { - return nil, err - } - - // calculate the line tracking graph and fill in - // file contents in data. - if err := b.fillGraphAndData(); err != nil { - return nil, err - } - - file, err := b.fRev.File(b.path) - if err != nil { - return nil, err - } - finalLines, err := file.Lines() - if err != nil { - return nil, err - } - - // Each node (line) holds the commit where it was introduced or - // last modified. To achieve that we use the FORWARD algorithm - // described in Zimmermann, et al. "Mining Version Archives for - // Co-changed Lines", in proceedings of the Mining Software - // Repositories workshop, Shanghai, May 22-23, 2006. - lines, err := newLines(finalLines, b.sliceGraph(len(b.graph)-1)) - if err != nil { - return nil, err - } - - return &BlameResult{ - Path: path, - Rev: c.Hash, - Lines: lines, - }, nil -} - -// Line values represent the contents and author of a line in BlamedResult values. -type Line struct { - // Author is the email address of the last author that modified the line. - Author string - // Text is the original text of the line. - Text string - // Date is when the original text of the line was introduced - Date time.Time - // Hash is the commit hash that introduced the original line - Hash plumbing.Hash -} - -func newLine(author, text string, date time.Time, hash plumbing.Hash) *Line { - return &Line{ - Author: author, - Text: text, - Hash: hash, - Date: date, - } -} - -func newLines(contents []string, commits []*object.Commit) ([]*Line, error) { - lcontents := len(contents) - lcommits := len(commits) - - if lcontents != lcommits { - if lcontents == lcommits-1 && contents[lcontents-1] != "\n" { - contents = append(contents, "\n") - } else { - return nil, errors.New("contents and commits have different length") - } - } - - result := make([]*Line, 0, lcontents) - for i := range contents { - result = append(result, newLine( - commits[i].Author.Email, contents[i], - commits[i].Author.When, commits[i].Hash, - )) - } - - return result, nil -} - -// this struct is internally used by the blame function to hold its -// inputs, outputs and state. -type blame struct { - // the path of the file to blame - path string - // the commit of the final revision of the file to blame - fRev *object.Commit - // the chain of revisions affecting the the file to blame - revs []*object.Commit - // the contents of the file across all its revisions - data []string - // the graph of the lines in the file across all the revisions - graph [][]*object.Commit -} - -// calculate the history of a file "path", starting from commit "from", sorted by commit date. -func (b *blame) fillRevs() error { - var err error - - b.revs, err = references(b.fRev, b.path) - return err -} - -// build graph of a file from its revision history -func (b *blame) fillGraphAndData() error { - //TODO: not all commits are needed, only the current rev and the prev - b.graph = make([][]*object.Commit, len(b.revs)) - b.data = make([]string, len(b.revs)) // file contents in all the revisions - // for every revision of the file, starting with the first - // one... - for i, rev := range b.revs { - // get the contents of the file - file, err := rev.File(b.path) - if err != nil { - return nil - } - b.data[i], err = file.Contents() - if err != nil { - return err - } - nLines := countLines(b.data[i]) - // create a node for each line - b.graph[i] = make([]*object.Commit, nLines) - // assign a commit to each node - // if this is the first revision, then the node is assigned to - // this first commit. - if i == 0 { - for j := 0; j < nLines; j++ { - b.graph[i][j] = b.revs[i] - } - } else { - // if this is not the first commit, then assign to the old - // commit or to the new one, depending on what the diff - // says. - b.assignOrigin(i, i-1) - } - } - return nil -} - -// sliceGraph returns a slice of commits (one per line) for a particular -// revision of a file (0=first revision). -func (b *blame) sliceGraph(i int) []*object.Commit { - fVs := b.graph[i] - result := make([]*object.Commit, 0, len(fVs)) - for _, v := range fVs { - c := *v - result = append(result, &c) - } - return result -} - -// Assigns origin to vertexes in current (c) rev from data in its previous (p) -// revision -func (b *blame) assignOrigin(c, p int) { - // assign origin based on diff info - hunks := diff.Do(b.data[p], b.data[c]) - sl := -1 // source line - dl := -1 // destination line - for h := range hunks { - hLines := countLines(hunks[h].Text) - for hl := 0; hl < hLines; hl++ { - switch { - case hunks[h].Type == 0: - sl++ - dl++ - b.graph[c][dl] = b.graph[p][sl] - case hunks[h].Type == 1: - dl++ - b.graph[c][dl] = b.revs[c] - case hunks[h].Type == -1: - sl++ - default: - panic("unreachable") - } - } - } -} - -// GoString prints the results of a Blame using git-blame's style. -func (b *blame) GoString() string { - var buf bytes.Buffer - - file, err := b.fRev.File(b.path) - if err != nil { - panic("PrettyPrint: internal error in repo.Data") - } - contents, err := file.Contents() - if err != nil { - panic("PrettyPrint: internal error in repo.Data") - } - - lines := strings.Split(contents, "\n") - // max line number length - mlnl := len(strconv.Itoa(len(lines))) - // max author length - mal := b.maxAuthorLength() - format := fmt.Sprintf("%%s (%%-%ds %%%dd) %%s\n", - mal, mlnl) - - fVs := b.graph[len(b.graph)-1] - for ln, v := range fVs { - fmt.Fprintf(&buf, format, v.Hash.String()[:8], - prettyPrintAuthor(fVs[ln]), ln+1, lines[ln]) - } - return buf.String() -} - -// utility function to pretty print the author. -func prettyPrintAuthor(c *object.Commit) string { - return fmt.Sprintf("%s %s", c.Author.Name, c.Author.When.Format("2006-01-02")) -} - -// utility function to calculate the number of runes needed -// to print the longest author name in the blame of a file. -func (b *blame) maxAuthorLength() int { - memo := make(map[plumbing.Hash]struct{}, len(b.graph)-1) - fVs := b.graph[len(b.graph)-1] - m := 0 - for ln := range fVs { - if _, ok := memo[fVs[ln].Hash]; ok { - continue - } - memo[fVs[ln].Hash] = struct{}{} - m = max(m, utf8.RuneCountInString(prettyPrintAuthor(fVs[ln]))) - } - return m -} - -func max(a, b int) int { - if a > b { - return a - } - return b -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/common.go b/vendor/gopkg.in/src-d/go-git.v4/common.go deleted file mode 100644 index f837a26..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/common.go +++ /dev/null @@ -1,22 +0,0 @@ -package git - -import "strings" - -const defaultDotGitPath = ".git" - -// countLines returns the number of lines in a string à la git, this is -// The newline character is assumed to be '\n'. The empty string -// contains 0 lines. If the last line of the string doesn't end with a -// newline, it will still be considered a line. -func countLines(s string) int { - if s == "" { - return 0 - } - - nEOL := strings.Count(s, "\n") - if strings.HasSuffix(s, "\n") { - return nEOL - } - - return nEOL + 1 -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/config/branch.go b/vendor/gopkg.in/src-d/go-git.v4/config/branch.go deleted file mode 100644 index 20dde6e..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/config/branch.go +++ /dev/null @@ -1,90 +0,0 @@ -package config - -import ( - "errors" - - "gopkg.in/src-d/go-git.v4/plumbing" - format "gopkg.in/src-d/go-git.v4/plumbing/format/config" -) - -var ( - errBranchEmptyName = errors.New("branch config: empty name") - errBranchInvalidMerge = errors.New("branch config: invalid merge") - errBranchInvalidRebase = errors.New("branch config: rebase must be one of 'true' or 'interactive'") -) - -// Branch contains information on the -// local branches and which remote to track -type Branch struct { - // Name of branch - Name string - // Remote name of remote to track - Remote string - // Merge is the local refspec for the branch - Merge plumbing.ReferenceName - // Rebase instead of merge when pulling. Valid values are - // "true" and "interactive". "false" is undocumented and - // typically represented by the non-existence of this field - Rebase string - - raw *format.Subsection -} - -// Validate validates fields of branch -func (b *Branch) Validate() error { - if b.Name == "" { - return errBranchEmptyName - } - - if b.Merge != "" && !b.Merge.IsBranch() { - return errBranchInvalidMerge - } - - if b.Rebase != "" && - b.Rebase != "true" && - b.Rebase != "interactive" && - b.Rebase != "false" { - return errBranchInvalidRebase - } - - return nil -} - -func (b *Branch) marshal() *format.Subsection { - if b.raw == nil { - b.raw = &format.Subsection{} - } - - b.raw.Name = b.Name - - if b.Remote == "" { - b.raw.RemoveOption(remoteSection) - } else { - b.raw.SetOption(remoteSection, b.Remote) - } - - if b.Merge == "" { - b.raw.RemoveOption(mergeKey) - } else { - b.raw.SetOption(mergeKey, string(b.Merge)) - } - - if b.Rebase == "" { - b.raw.RemoveOption(rebaseKey) - } else { - b.raw.SetOption(rebaseKey, b.Rebase) - } - - return b.raw -} - -func (b *Branch) unmarshal(s *format.Subsection) error { - b.raw = s - - b.Name = b.raw.Name - b.Remote = b.raw.Options.Get(remoteSection) - b.Merge = plumbing.ReferenceName(b.raw.Options.Get(mergeKey)) - b.Rebase = b.raw.Options.Get(rebaseKey) - - return b.Validate() -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/config/config.go b/vendor/gopkg.in/src-d/go-git.v4/config/config.go deleted file mode 100644 index ea614e9..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/config/config.go +++ /dev/null @@ -1,407 +0,0 @@ -// Package config contains the abstraction of multiple config files -package config - -import ( - "bytes" - "errors" - "fmt" - "sort" - "strconv" - - "gopkg.in/src-d/go-git.v4/internal/url" - format "gopkg.in/src-d/go-git.v4/plumbing/format/config" -) - -const ( - // DefaultFetchRefSpec is the default refspec used for fetch. - DefaultFetchRefSpec = "+refs/heads/*:refs/remotes/%s/*" - // DefaultPushRefSpec is the default refspec used for push. - DefaultPushRefSpec = "refs/heads/*:refs/heads/*" -) - -// ConfigStorer generic storage of Config object -type ConfigStorer interface { - Config() (*Config, error) - SetConfig(*Config) error -} - -var ( - ErrInvalid = errors.New("config invalid key in remote or branch") - ErrRemoteConfigNotFound = errors.New("remote config not found") - ErrRemoteConfigEmptyURL = errors.New("remote config: empty URL") - ErrRemoteConfigEmptyName = errors.New("remote config: empty name") -) - -// Config contains the repository configuration -// ftp://www.kernel.org/pub/software/scm/git/docs/git-config.html#FILES -type Config struct { - Core struct { - // IsBare if true this repository is assumed to be bare and has no - // working directory associated with it. - IsBare bool - // Worktree is the path to the root of the working tree. - Worktree string - // CommentChar is the character indicating the start of a - // comment for commands like commit and tag - CommentChar string - } - - Pack struct { - // Window controls the size of the sliding window for delta - // compression. The default is 10. A value of 0 turns off - // delta compression entirely. - Window uint - } - - // Remotes list of repository remotes, the key of the map is the name - // of the remote, should equal to RemoteConfig.Name. - Remotes map[string]*RemoteConfig - // Submodules list of repository submodules, the key of the map is the name - // of the submodule, should equal to Submodule.Name. - Submodules map[string]*Submodule - // Branches list of branches, the key is the branch name and should - // equal Branch.Name - Branches map[string]*Branch - // Raw contains the raw information of a config file. The main goal is - // preserve the parsed information from the original format, to avoid - // dropping unsupported fields. - Raw *format.Config -} - -// NewConfig returns a new empty Config. -func NewConfig() *Config { - config := &Config{ - Remotes: make(map[string]*RemoteConfig), - Submodules: make(map[string]*Submodule), - Branches: make(map[string]*Branch), - Raw: format.New(), - } - - config.Pack.Window = DefaultPackWindow - - return config -} - -// Validate validates the fields and sets the default values. -func (c *Config) Validate() error { - for name, r := range c.Remotes { - if r.Name != name { - return ErrInvalid - } - - if err := r.Validate(); err != nil { - return err - } - } - - for name, b := range c.Branches { - if b.Name != name { - return ErrInvalid - } - - if err := b.Validate(); err != nil { - return err - } - } - - return nil -} - -const ( - remoteSection = "remote" - submoduleSection = "submodule" - branchSection = "branch" - coreSection = "core" - packSection = "pack" - fetchKey = "fetch" - urlKey = "url" - bareKey = "bare" - worktreeKey = "worktree" - commentCharKey = "commentChar" - windowKey = "window" - mergeKey = "merge" - rebaseKey = "rebase" - - // DefaultPackWindow holds the number of previous objects used to - // generate deltas. The value 10 is the same used by git command. - DefaultPackWindow = uint(10) -) - -// Unmarshal parses a git-config file and stores it. -func (c *Config) Unmarshal(b []byte) error { - r := bytes.NewBuffer(b) - d := format.NewDecoder(r) - - c.Raw = format.New() - if err := d.Decode(c.Raw); err != nil { - return err - } - - c.unmarshalCore() - if err := c.unmarshalPack(); err != nil { - return err - } - unmarshalSubmodules(c.Raw, c.Submodules) - - if err := c.unmarshalBranches(); err != nil { - return err - } - - return c.unmarshalRemotes() -} - -func (c *Config) unmarshalCore() { - s := c.Raw.Section(coreSection) - if s.Options.Get(bareKey) == "true" { - c.Core.IsBare = true - } - - c.Core.Worktree = s.Options.Get(worktreeKey) - c.Core.CommentChar = s.Options.Get(commentCharKey) -} - -func (c *Config) unmarshalPack() error { - s := c.Raw.Section(packSection) - window := s.Options.Get(windowKey) - if window == "" { - c.Pack.Window = DefaultPackWindow - } else { - winUint, err := strconv.ParseUint(window, 10, 32) - if err != nil { - return err - } - c.Pack.Window = uint(winUint) - } - return nil -} - -func (c *Config) unmarshalRemotes() error { - s := c.Raw.Section(remoteSection) - for _, sub := range s.Subsections { - r := &RemoteConfig{} - if err := r.unmarshal(sub); err != nil { - return err - } - - c.Remotes[r.Name] = r - } - - return nil -} - -func unmarshalSubmodules(fc *format.Config, submodules map[string]*Submodule) { - s := fc.Section(submoduleSection) - for _, sub := range s.Subsections { - m := &Submodule{} - m.unmarshal(sub) - - if m.Validate() == ErrModuleBadPath { - continue - } - - submodules[m.Name] = m - } -} - -func (c *Config) unmarshalBranches() error { - bs := c.Raw.Section(branchSection) - for _, sub := range bs.Subsections { - b := &Branch{} - - if err := b.unmarshal(sub); err != nil { - return err - } - - c.Branches[b.Name] = b - } - return nil -} - -// Marshal returns Config encoded as a git-config file. -func (c *Config) Marshal() ([]byte, error) { - c.marshalCore() - c.marshalPack() - c.marshalRemotes() - c.marshalSubmodules() - c.marshalBranches() - - buf := bytes.NewBuffer(nil) - if err := format.NewEncoder(buf).Encode(c.Raw); err != nil { - return nil, err - } - - return buf.Bytes(), nil -} - -func (c *Config) marshalCore() { - s := c.Raw.Section(coreSection) - s.SetOption(bareKey, fmt.Sprintf("%t", c.Core.IsBare)) - - if c.Core.Worktree != "" { - s.SetOption(worktreeKey, c.Core.Worktree) - } -} - -func (c *Config) marshalPack() { - s := c.Raw.Section(packSection) - if c.Pack.Window != DefaultPackWindow { - s.SetOption(windowKey, fmt.Sprintf("%d", c.Pack.Window)) - } -} - -func (c *Config) marshalRemotes() { - s := c.Raw.Section(remoteSection) - newSubsections := make(format.Subsections, 0, len(c.Remotes)) - added := make(map[string]bool) - for _, subsection := range s.Subsections { - if remote, ok := c.Remotes[subsection.Name]; ok { - newSubsections = append(newSubsections, remote.marshal()) - added[subsection.Name] = true - } - } - - remoteNames := make([]string, 0, len(c.Remotes)) - for name := range c.Remotes { - remoteNames = append(remoteNames, name) - } - - sort.Strings(remoteNames) - - for _, name := range remoteNames { - if !added[name] { - newSubsections = append(newSubsections, c.Remotes[name].marshal()) - } - } - - s.Subsections = newSubsections -} - -func (c *Config) marshalSubmodules() { - s := c.Raw.Section(submoduleSection) - s.Subsections = make(format.Subsections, len(c.Submodules)) - - var i int - for _, r := range c.Submodules { - section := r.marshal() - // the submodule section at config is a subset of the .gitmodule file - // we should remove the non-valid options for the config file. - section.RemoveOption(pathKey) - s.Subsections[i] = section - i++ - } -} - -func (c *Config) marshalBranches() { - s := c.Raw.Section(branchSection) - newSubsections := make(format.Subsections, 0, len(c.Branches)) - added := make(map[string]bool) - for _, subsection := range s.Subsections { - if branch, ok := c.Branches[subsection.Name]; ok { - newSubsections = append(newSubsections, branch.marshal()) - added[subsection.Name] = true - } - } - - branchNames := make([]string, 0, len(c.Branches)) - for name := range c.Branches { - branchNames = append(branchNames, name) - } - - sort.Strings(branchNames) - - for _, name := range branchNames { - if !added[name] { - newSubsections = append(newSubsections, c.Branches[name].marshal()) - } - } - - s.Subsections = newSubsections -} - -// RemoteConfig contains the configuration for a given remote repository. -type RemoteConfig struct { - // Name of the remote - Name string - // URLs the URLs of a remote repository. It must be non-empty. Fetch will - // always use the first URL, while push will use all of them. - URLs []string - // Fetch the default set of "refspec" for fetch operation - Fetch []RefSpec - - // raw representation of the subsection, filled by marshal or unmarshal are - // called - raw *format.Subsection -} - -// Validate validates the fields and sets the default values. -func (c *RemoteConfig) Validate() error { - if c.Name == "" { - return ErrRemoteConfigEmptyName - } - - if len(c.URLs) == 0 { - return ErrRemoteConfigEmptyURL - } - - for _, r := range c.Fetch { - if err := r.Validate(); err != nil { - return err - } - } - - if len(c.Fetch) == 0 { - c.Fetch = []RefSpec{RefSpec(fmt.Sprintf(DefaultFetchRefSpec, c.Name))} - } - - return nil -} - -func (c *RemoteConfig) unmarshal(s *format.Subsection) error { - c.raw = s - - fetch := []RefSpec{} - for _, f := range c.raw.Options.GetAll(fetchKey) { - rs := RefSpec(f) - if err := rs.Validate(); err != nil { - return err - } - - fetch = append(fetch, rs) - } - - c.Name = c.raw.Name - c.URLs = append([]string(nil), c.raw.Options.GetAll(urlKey)...) - c.Fetch = fetch - - return nil -} - -func (c *RemoteConfig) marshal() *format.Subsection { - if c.raw == nil { - c.raw = &format.Subsection{} - } - - c.raw.Name = c.Name - if len(c.URLs) == 0 { - c.raw.RemoveOption(urlKey) - } else { - c.raw.SetOption(urlKey, c.URLs...) - } - - if len(c.Fetch) == 0 { - c.raw.RemoveOption(fetchKey) - } else { - var values []string - for _, rs := range c.Fetch { - values = append(values, rs.String()) - } - - c.raw.SetOption(fetchKey, values...) - } - - return c.raw -} - -func (c *RemoteConfig) IsFirstURLLocal() bool { - return url.IsLocalEndpoint(c.URLs[0]) -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/config/modules.go b/vendor/gopkg.in/src-d/go-git.v4/config/modules.go deleted file mode 100644 index 90758d9..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/config/modules.go +++ /dev/null @@ -1,139 +0,0 @@ -package config - -import ( - "bytes" - "errors" - "regexp" - - format "gopkg.in/src-d/go-git.v4/plumbing/format/config" -) - -var ( - ErrModuleEmptyURL = errors.New("module config: empty URL") - ErrModuleEmptyPath = errors.New("module config: empty path") - ErrModuleBadPath = errors.New("submodule has an invalid path") -) - -var ( - // Matches module paths with dotdot ".." components. - dotdotPath = regexp.MustCompile(`(^|[/\\])\.\.([/\\]|$)`) -) - -// Modules defines the submodules properties, represents a .gitmodules file -// https://www.kernel.org/pub/software/scm/git/docs/gitmodules.html -type Modules struct { - // Submodules is a map of submodules being the key the name of the submodule. - Submodules map[string]*Submodule - - raw *format.Config -} - -// NewModules returns a new empty Modules -func NewModules() *Modules { - return &Modules{ - Submodules: make(map[string]*Submodule), - raw: format.New(), - } -} - -const ( - pathKey = "path" - branchKey = "branch" -) - -// Unmarshal parses a git-config file and stores it. -func (m *Modules) Unmarshal(b []byte) error { - r := bytes.NewBuffer(b) - d := format.NewDecoder(r) - - m.raw = format.New() - if err := d.Decode(m.raw); err != nil { - return err - } - - unmarshalSubmodules(m.raw, m.Submodules) - return nil -} - -// Marshal returns Modules encoded as a git-config file. -func (m *Modules) Marshal() ([]byte, error) { - s := m.raw.Section(submoduleSection) - s.Subsections = make(format.Subsections, len(m.Submodules)) - - var i int - for _, r := range m.Submodules { - s.Subsections[i] = r.marshal() - i++ - } - - buf := bytes.NewBuffer(nil) - if err := format.NewEncoder(buf).Encode(m.raw); err != nil { - return nil, err - } - - return buf.Bytes(), nil -} - -// Submodule defines a submodule. -type Submodule struct { - // Name module name - Name string - // Path defines the path, relative to the top-level directory of the Git - // working tree. - Path string - // URL defines a URL from which the submodule repository can be cloned. - URL string - // Branch is a remote branch name for tracking updates in the upstream - // submodule. Optional value. - Branch string - - // raw representation of the subsection, filled by marshal or unmarshal are - // called. - raw *format.Subsection -} - -// Validate validates the fields and sets the default values. -func (m *Submodule) Validate() error { - if m.Path == "" { - return ErrModuleEmptyPath - } - - if m.URL == "" { - return ErrModuleEmptyURL - } - - if dotdotPath.MatchString(m.Path) { - return ErrModuleBadPath - } - - return nil -} - -func (m *Submodule) unmarshal(s *format.Subsection) { - m.raw = s - - m.Name = m.raw.Name - m.Path = m.raw.Option(pathKey) - m.URL = m.raw.Option(urlKey) - m.Branch = m.raw.Option(branchKey) -} - -func (m *Submodule) marshal() *format.Subsection { - if m.raw == nil { - m.raw = &format.Subsection{} - } - - m.raw.Name = m.Name - if m.raw.Name == "" { - m.raw.Name = m.Path - } - - m.raw.SetOption(pathKey, m.Path) - m.raw.SetOption(urlKey, m.URL) - - if m.Branch != "" { - m.raw.SetOption(branchKey, m.Branch) - } - - return m.raw -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/config/refspec.go b/vendor/gopkg.in/src-d/go-git.v4/config/refspec.go deleted file mode 100644 index 14bb400..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/config/refspec.go +++ /dev/null @@ -1,150 +0,0 @@ -package config - -import ( - "errors" - "strings" - - "gopkg.in/src-d/go-git.v4/plumbing" -) - -const ( - refSpecWildcard = "*" - refSpecForce = "+" - refSpecSeparator = ":" -) - -var ( - ErrRefSpecMalformedSeparator = errors.New("malformed refspec, separators are wrong") - ErrRefSpecMalformedWildcard = errors.New("malformed refspec, mismatched number of wildcards") -) - -// RefSpec is a mapping from local branches to remote references. -// The format of the refspec is an optional +, followed by :, where -// is the pattern for references on the remote side and is where -// those references will be written locally. The + tells Git to update the -// reference even if it isn’t a fast-forward. -// eg.: "+refs/heads/*:refs/remotes/origin/*" -// -// https://git-scm.com/book/es/v2/Git-Internals-The-Refspec -type RefSpec string - -// Validate validates the RefSpec -func (s RefSpec) Validate() error { - spec := string(s) - if strings.Count(spec, refSpecSeparator) != 1 { - return ErrRefSpecMalformedSeparator - } - - sep := strings.Index(spec, refSpecSeparator) - if sep == len(spec)-1 { - return ErrRefSpecMalformedSeparator - } - - ws := strings.Count(spec[0:sep], refSpecWildcard) - wd := strings.Count(spec[sep+1:], refSpecWildcard) - if ws == wd && ws < 2 && wd < 2 { - return nil - } - - return ErrRefSpecMalformedWildcard -} - -// IsForceUpdate returns if update is allowed in non fast-forward merges. -func (s RefSpec) IsForceUpdate() bool { - return s[0] == refSpecForce[0] -} - -// IsDelete returns true if the refspec indicates a delete (empty src). -func (s RefSpec) IsDelete() bool { - return s[0] == refSpecSeparator[0] -} - -// Src return the src side. -func (s RefSpec) Src() string { - spec := string(s) - - var start int - if s.IsForceUpdate() { - start = 1 - } else { - start = 0 - } - end := strings.Index(spec, refSpecSeparator) - - return spec[start:end] -} - -// Match match the given plumbing.ReferenceName against the source. -func (s RefSpec) Match(n plumbing.ReferenceName) bool { - if !s.IsWildcard() { - return s.matchExact(n) - } - - return s.matchGlob(n) -} - -// IsWildcard returns true if the RefSpec contains a wildcard. -func (s RefSpec) IsWildcard() bool { - return strings.Contains(string(s), refSpecWildcard) -} - -func (s RefSpec) matchExact(n plumbing.ReferenceName) bool { - return s.Src() == n.String() -} - -func (s RefSpec) matchGlob(n plumbing.ReferenceName) bool { - src := s.Src() - name := n.String() - wildcard := strings.Index(src, refSpecWildcard) - - var prefix, suffix string - prefix = src[0:wildcard] - if len(src) > wildcard+1 { - suffix = src[wildcard+1:] - } - - return len(name) >= len(prefix)+len(suffix) && - strings.HasPrefix(name, prefix) && - strings.HasSuffix(name, suffix) -} - -// Dst returns the destination for the given remote reference. -func (s RefSpec) Dst(n plumbing.ReferenceName) plumbing.ReferenceName { - spec := string(s) - start := strings.Index(spec, refSpecSeparator) + 1 - dst := spec[start:] - src := s.Src() - - if !s.IsWildcard() { - return plumbing.ReferenceName(dst) - } - - name := n.String() - ws := strings.Index(src, refSpecWildcard) - wd := strings.Index(dst, refSpecWildcard) - match := name[ws : len(name)-(len(src)-(ws+1))] - - return plumbing.ReferenceName(dst[0:wd] + match + dst[wd+1:]) -} - -func (s RefSpec) Reverse() RefSpec { - spec := string(s) - separator := strings.Index(spec, refSpecSeparator) - - return RefSpec(spec[separator+1:] + refSpecSeparator + spec[:separator]) -} - -func (s RefSpec) String() string { - return string(s) -} - -// MatchAny returns true if any of the RefSpec match with the given ReferenceName. -func MatchAny(l []RefSpec, n plumbing.ReferenceName) bool { - for _, r := range l { - if r.Match(n) { - return true - } - } - - return false -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/doc.go b/vendor/gopkg.in/src-d/go-git.v4/doc.go deleted file mode 100644 index 60f2261..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/doc.go +++ /dev/null @@ -1,10 +0,0 @@ -// A highly extensible git implementation in pure Go. -// -// go-git aims to reach the completeness of libgit2 or jgit, nowadays covers the -// majority of the plumbing read operations and some of the main write -// operations, but lacks the main porcelain operations such as merges. -// -// It is highly extensible, we have been following the open/close principle in -// its design to facilitate extensions, mainly focusing the efforts on the -// persistence of the objects. -package git // import "gopkg.in/src-d/go-git.v4" diff --git a/vendor/gopkg.in/src-d/go-git.v4/internal/revision/parser.go b/vendor/gopkg.in/src-d/go-git.v4/internal/revision/parser.go deleted file mode 100644 index d2c509e..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/internal/revision/parser.go +++ /dev/null @@ -1,622 +0,0 @@ -// Package revision extracts git revision from string -// More informations about revision : https://www.kernel.org/pub/software/scm/git/docs/gitrevisions.html -package revision - -import ( - "bytes" - "fmt" - "io" - "regexp" - "strconv" - "time" -) - -// ErrInvalidRevision is emitted if string doesn't match valid revision -type ErrInvalidRevision struct { - s string -} - -func (e *ErrInvalidRevision) Error() string { - return "Revision invalid : " + e.s -} - -// Revisioner represents a revision component. -// A revision is made of multiple revision components -// obtained after parsing a revision string, -// for instance revision "master~" will be converted in -// two revision components Ref and TildePath -type Revisioner interface { -} - -// Ref represents a reference name : HEAD, master -type Ref string - -// TildePath represents ~, ~{n} -type TildePath struct { - Depth int -} - -// CaretPath represents ^, ^{n} -type CaretPath struct { - Depth int -} - -// CaretReg represents ^{/foo bar} -type CaretReg struct { - Regexp *regexp.Regexp - Negate bool -} - -// CaretType represents ^{commit} -type CaretType struct { - ObjectType string -} - -// AtReflog represents @{n} -type AtReflog struct { - Depth int -} - -// AtCheckout represents @{-n} -type AtCheckout struct { - Depth int -} - -// AtUpstream represents @{upstream}, @{u} -type AtUpstream struct { - BranchName string -} - -// AtPush represents @{push} -type AtPush struct { - BranchName string -} - -// AtDate represents @{"2006-01-02T15:04:05Z"} -type AtDate struct { - Date time.Time -} - -// ColonReg represents :/foo bar -type ColonReg struct { - Regexp *regexp.Regexp - Negate bool -} - -// ColonPath represents :./ : -type ColonPath struct { - Path string -} - -// ColonStagePath represents ::/ -type ColonStagePath struct { - Path string - Stage int -} - -// Parser represents a parser -// use to tokenize and transform to revisioner chunks -// a given string -type Parser struct { - s *scanner - currentParsedChar struct { - tok token - lit string - } - unreadLastChar bool -} - -// NewParserFromString returns a new instance of parser from a string. -func NewParserFromString(s string) *Parser { - return NewParser(bytes.NewBufferString(s)) -} - -// NewParser returns a new instance of parser. -func NewParser(r io.Reader) *Parser { - return &Parser{s: newScanner(r)} -} - -// scan returns the next token from the underlying scanner -// or the last scanned token if an unscan was requested -func (p *Parser) scan() (token, string, error) { - if p.unreadLastChar { - p.unreadLastChar = false - return p.currentParsedChar.tok, p.currentParsedChar.lit, nil - } - - tok, lit, err := p.s.scan() - - p.currentParsedChar.tok, p.currentParsedChar.lit = tok, lit - - return tok, lit, err -} - -// unscan pushes the previously read token back onto the buffer. -func (p *Parser) unscan() { p.unreadLastChar = true } - -// Parse explode a revision string into revisioner chunks -func (p *Parser) Parse() ([]Revisioner, error) { - var rev Revisioner - var revs []Revisioner - var tok token - var err error - - for { - tok, _, err = p.scan() - - if err != nil { - return nil, err - } - - switch tok { - case at: - rev, err = p.parseAt() - case tilde: - rev, err = p.parseTilde() - case caret: - rev, err = p.parseCaret() - case colon: - rev, err = p.parseColon() - case eof: - err = p.validateFullRevision(&revs) - - if err != nil { - return []Revisioner{}, err - } - - return revs, nil - default: - p.unscan() - rev, err = p.parseRef() - } - - if err != nil { - return []Revisioner{}, err - } - - revs = append(revs, rev) - } -} - -// validateFullRevision ensures all revisioner chunks make a valid revision -func (p *Parser) validateFullRevision(chunks *[]Revisioner) error { - var hasReference bool - - for i, chunk := range *chunks { - switch chunk.(type) { - case Ref: - if i == 0 { - hasReference = true - } else { - return &ErrInvalidRevision{`reference must be defined once at the beginning`} - } - case AtDate: - if len(*chunks) == 1 || hasReference && len(*chunks) == 2 { - return nil - } - - return &ErrInvalidRevision{`"@" statement is not valid, could be : @{}, @{}`} - case AtReflog: - if len(*chunks) == 1 || hasReference && len(*chunks) == 2 { - return nil - } - - return &ErrInvalidRevision{`"@" statement is not valid, could be : @{}, @{}`} - case AtCheckout: - if len(*chunks) == 1 { - return nil - } - - return &ErrInvalidRevision{`"@" statement is not valid, could be : @{-}`} - case AtUpstream: - if len(*chunks) == 1 || hasReference && len(*chunks) == 2 { - return nil - } - - return &ErrInvalidRevision{`"@" statement is not valid, could be : @{upstream}, @{upstream}, @{u}, @{u}`} - case AtPush: - if len(*chunks) == 1 || hasReference && len(*chunks) == 2 { - return nil - } - - return &ErrInvalidRevision{`"@" statement is not valid, could be : @{push}, @{push}`} - case TildePath, CaretPath, CaretReg: - if !hasReference { - return &ErrInvalidRevision{`"~" or "^" statement must have a reference defined at the beginning`} - } - case ColonReg: - if len(*chunks) == 1 { - return nil - } - - return &ErrInvalidRevision{`":" statement is not valid, could be : :/`} - case ColonPath: - if i == len(*chunks)-1 && hasReference || len(*chunks) == 1 { - return nil - } - - return &ErrInvalidRevision{`":" statement is not valid, could be : :`} - case ColonStagePath: - if len(*chunks) == 1 { - return nil - } - - return &ErrInvalidRevision{`":" statement is not valid, could be : ::`} - } - } - - return nil -} - -// parseAt extract @ statements -func (p *Parser) parseAt() (Revisioner, error) { - var tok, nextTok token - var lit, nextLit string - var err error - - tok, _, err = p.scan() - - if err != nil { - return nil, err - } - - if tok != obrace { - p.unscan() - - return Ref("HEAD"), nil - } - - tok, lit, err = p.scan() - - if err != nil { - return nil, err - } - - nextTok, nextLit, err = p.scan() - - if err != nil { - return nil, err - } - - switch { - case tok == word && (lit == "u" || lit == "upstream") && nextTok == cbrace: - return AtUpstream{}, nil - case tok == word && lit == "push" && nextTok == cbrace: - return AtPush{}, nil - case tok == number && nextTok == cbrace: - n, _ := strconv.Atoi(lit) - - return AtReflog{n}, nil - case tok == minus && nextTok == number: - n, _ := strconv.Atoi(nextLit) - - t, _, err := p.scan() - - if err != nil { - return nil, err - } - - if t != cbrace { - return nil, &ErrInvalidRevision{fmt.Sprintf(`missing "}" in @{-n} structure`)} - } - - return AtCheckout{n}, nil - default: - p.unscan() - - date := lit - - for { - tok, lit, err = p.scan() - - if err != nil { - return nil, err - } - - switch { - case tok == cbrace: - t, err := time.Parse("2006-01-02T15:04:05Z", date) - - if err != nil { - return nil, &ErrInvalidRevision{fmt.Sprintf(`wrong date "%s" must fit ISO-8601 format : 2006-01-02T15:04:05Z`, date)} - } - - return AtDate{t}, nil - default: - date += lit - } - } - } -} - -// parseTilde extract ~ statements -func (p *Parser) parseTilde() (Revisioner, error) { - var tok token - var lit string - var err error - - tok, lit, err = p.scan() - - if err != nil { - return nil, err - } - - switch { - case tok == number: - n, _ := strconv.Atoi(lit) - - return TildePath{n}, nil - default: - p.unscan() - return TildePath{1}, nil - } -} - -// parseCaret extract ^ statements -func (p *Parser) parseCaret() (Revisioner, error) { - var tok token - var lit string - var err error - - tok, lit, err = p.scan() - - if err != nil { - return nil, err - } - - switch { - case tok == obrace: - r, err := p.parseCaretBraces() - - if err != nil { - return nil, err - } - - return r, nil - case tok == number: - n, _ := strconv.Atoi(lit) - - if n > 2 { - return nil, &ErrInvalidRevision{fmt.Sprintf(`"%s" found must be 0, 1 or 2 after "^"`, lit)} - } - - return CaretPath{n}, nil - default: - p.unscan() - return CaretPath{1}, nil - } -} - -// parseCaretBraces extract ^{} statements -func (p *Parser) parseCaretBraces() (Revisioner, error) { - var tok, nextTok token - var lit, _ string - start := true - var re string - var negate bool - var err error - - for { - tok, lit, err = p.scan() - - if err != nil { - return nil, err - } - - nextTok, _, err = p.scan() - - if err != nil { - return nil, err - } - - switch { - case tok == word && nextTok == cbrace && (lit == "commit" || lit == "tree" || lit == "blob" || lit == "tag" || lit == "object"): - return CaretType{lit}, nil - case re == "" && tok == cbrace: - return CaretType{"tag"}, nil - case re == "" && tok == emark && nextTok == emark: - re += lit - case re == "" && tok == emark && nextTok == minus: - negate = true - case re == "" && tok == emark: - return nil, &ErrInvalidRevision{fmt.Sprintf(`revision suffix brace component sequences starting with "/!" others than those defined are reserved`)} - case re == "" && tok == slash: - p.unscan() - case tok != slash && start: - return nil, &ErrInvalidRevision{fmt.Sprintf(`"%s" is not a valid revision suffix brace component`, lit)} - case tok != cbrace: - p.unscan() - re += lit - case tok == cbrace: - p.unscan() - - reg, err := regexp.Compile(re) - - if err != nil { - return CaretReg{}, &ErrInvalidRevision{fmt.Sprintf(`revision suffix brace component, %s`, err.Error())} - } - - return CaretReg{reg, negate}, nil - } - - start = false - } -} - -// parseColon extract : statements -func (p *Parser) parseColon() (Revisioner, error) { - var tok token - var err error - - tok, _, err = p.scan() - - if err != nil { - return nil, err - } - - switch tok { - case slash: - return p.parseColonSlash() - default: - p.unscan() - return p.parseColonDefault() - } -} - -// parseColonSlash extract :/ statements -func (p *Parser) parseColonSlash() (Revisioner, error) { - var tok, nextTok token - var lit string - var re string - var negate bool - var err error - - for { - tok, lit, err = p.scan() - - if err != nil { - return nil, err - } - - nextTok, _, err = p.scan() - - if err != nil { - return nil, err - } - - switch { - case tok == emark && nextTok == emark: - re += lit - case re == "" && tok == emark && nextTok == minus: - negate = true - case re == "" && tok == emark: - return nil, &ErrInvalidRevision{fmt.Sprintf(`revision suffix brace component sequences starting with "/!" others than those defined are reserved`)} - case tok == eof: - p.unscan() - reg, err := regexp.Compile(re) - - if err != nil { - return ColonReg{}, &ErrInvalidRevision{fmt.Sprintf(`revision suffix brace component, %s`, err.Error())} - } - - return ColonReg{reg, negate}, nil - default: - p.unscan() - re += lit - } - } -} - -// parseColonDefault extract : statements -func (p *Parser) parseColonDefault() (Revisioner, error) { - var tok token - var lit string - var path string - var stage int - var err error - var n = -1 - - tok, lit, err = p.scan() - - if err != nil { - return nil, err - } - - nextTok, _, err := p.scan() - - if err != nil { - return nil, err - } - - if tok == number && nextTok == colon { - n, _ = strconv.Atoi(lit) - } - - switch n { - case 0, 1, 2, 3: - stage = n - default: - path += lit - p.unscan() - } - - for { - tok, lit, err = p.scan() - - if err != nil { - return nil, err - } - - switch { - case tok == eof && n == -1: - return ColonPath{path}, nil - case tok == eof: - return ColonStagePath{path, stage}, nil - default: - path += lit - } - } -} - -// parseRef extract reference name -func (p *Parser) parseRef() (Revisioner, error) { - var tok, prevTok token - var lit, buf string - var endOfRef bool - var err error - - for { - tok, lit, err = p.scan() - - if err != nil { - return nil, err - } - - switch tok { - case eof, at, colon, tilde, caret: - endOfRef = true - } - - err := p.checkRefFormat(tok, lit, prevTok, buf, endOfRef) - - if err != nil { - return "", err - } - - if endOfRef { - p.unscan() - return Ref(buf), nil - } - - buf += lit - prevTok = tok - } -} - -// checkRefFormat ensure reference name follow rules defined here : -// https://git-scm.com/docs/git-check-ref-format -func (p *Parser) checkRefFormat(token token, literal string, previousToken token, buffer string, endOfRef bool) error { - switch token { - case aslash, space, control, qmark, asterisk, obracket: - return &ErrInvalidRevision{fmt.Sprintf(`must not contains "%s"`, literal)} - } - - switch { - case (token == dot || token == slash) && buffer == "": - return &ErrInvalidRevision{fmt.Sprintf(`must not start with "%s"`, literal)} - case previousToken == slash && endOfRef: - return &ErrInvalidRevision{`must not end with "/"`} - case previousToken == dot && endOfRef: - return &ErrInvalidRevision{`must not end with "."`} - case token == dot && previousToken == slash: - return &ErrInvalidRevision{`must not contains "/."`} - case previousToken == dot && token == dot: - return &ErrInvalidRevision{`must not contains ".."`} - case previousToken == slash && token == slash: - return &ErrInvalidRevision{`must not contains consecutively "/"`} - case (token == slash || endOfRef) && len(buffer) > 4 && buffer[len(buffer)-5:] == ".lock": - return &ErrInvalidRevision{"cannot end with .lock"} - } - - return nil -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/internal/revision/scanner.go b/vendor/gopkg.in/src-d/go-git.v4/internal/revision/scanner.go deleted file mode 100644 index fb5f333..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/internal/revision/scanner.go +++ /dev/null @@ -1,117 +0,0 @@ -package revision - -import ( - "bufio" - "io" - "unicode" -) - -// runeCategoryValidator takes a rune as input and -// validates it belongs to a rune category -type runeCategoryValidator func(r rune) bool - -// tokenizeExpression aggegates a series of runes matching check predicate into a single -// string and provides given tokenType as token type -func tokenizeExpression(ch rune, tokenType token, check runeCategoryValidator, r *bufio.Reader) (token, string, error) { - var data []rune - data = append(data, ch) - - for { - c, _, err := r.ReadRune() - - if c == zeroRune { - break - } - - if err != nil { - return tokenError, "", err - } - - if check(c) { - data = append(data, c) - } else { - err := r.UnreadRune() - - if err != nil { - return tokenError, "", err - } - - return tokenType, string(data), nil - } - } - - return tokenType, string(data), nil -} - -var zeroRune = rune(0) - -// scanner represents a lexical scanner. -type scanner struct { - r *bufio.Reader -} - -// newScanner returns a new instance of scanner. -func newScanner(r io.Reader) *scanner { - return &scanner{r: bufio.NewReader(r)} -} - -// Scan extracts tokens and their strings counterpart -// from the reader -func (s *scanner) scan() (token, string, error) { - ch, _, err := s.r.ReadRune() - - if err != nil && err != io.EOF { - return tokenError, "", err - } - - switch ch { - case zeroRune: - return eof, "", nil - case ':': - return colon, string(ch), nil - case '~': - return tilde, string(ch), nil - case '^': - return caret, string(ch), nil - case '.': - return dot, string(ch), nil - case '/': - return slash, string(ch), nil - case '{': - return obrace, string(ch), nil - case '}': - return cbrace, string(ch), nil - case '-': - return minus, string(ch), nil - case '@': - return at, string(ch), nil - case '\\': - return aslash, string(ch), nil - case '?': - return qmark, string(ch), nil - case '*': - return asterisk, string(ch), nil - case '[': - return obracket, string(ch), nil - case '!': - return emark, string(ch), nil - } - - if unicode.IsSpace(ch) { - return space, string(ch), nil - } - - if unicode.IsControl(ch) { - return control, string(ch), nil - } - - if unicode.IsLetter(ch) { - return tokenizeExpression(ch, word, unicode.IsLetter, s.r) - } - - if unicode.IsNumber(ch) { - return tokenizeExpression(ch, number, unicode.IsNumber, s.r) - } - - return tokenError, string(ch), nil -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/internal/revision/token.go b/vendor/gopkg.in/src-d/go-git.v4/internal/revision/token.go deleted file mode 100644 index abc4048..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/internal/revision/token.go +++ /dev/null @@ -1,28 +0,0 @@ -package revision - -// token represents a entity extracted from string parsing -type token int - -const ( - eof token = iota - - aslash - asterisk - at - caret - cbrace - colon - control - dot - emark - minus - number - obrace - obracket - qmark - slash - space - tilde - tokenError - word -) diff --git a/vendor/gopkg.in/src-d/go-git.v4/internal/url/url.go b/vendor/gopkg.in/src-d/go-git.v4/internal/url/url.go deleted file mode 100644 index 0f0d709..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/internal/url/url.go +++ /dev/null @@ -1,37 +0,0 @@ -package url - -import ( - "regexp" -) - -var ( - isSchemeRegExp = regexp.MustCompile(`^[^:]+://`) - scpLikeUrlRegExp = regexp.MustCompile(`^(?:(?P[^@]+)@)?(?P[^:\s]+):(?:(?P[0-9]{1,5})/)?(?P[^\\].*)$`) -) - -// MatchesScheme returns true if the given string matches a URL-like -// format scheme. -func MatchesScheme(url string) bool { - return isSchemeRegExp.MatchString(url) -} - -// MatchesScpLike returns true if the given string matches an SCP-like -// format scheme. -func MatchesScpLike(url string) bool { - return scpLikeUrlRegExp.MatchString(url) -} - -// FindScpLikeComponents returns the user, host, port and path of the -// given SCP-like URL. -func FindScpLikeComponents(url string) (user, host, port, path string) { - m := scpLikeUrlRegExp.FindStringSubmatch(url) - return m[1], m[2], m[3], m[4] -} - -// IsLocalEndpoint returns true if the given URL string specifies a -// local file endpoint. For example, on a Linux machine, -// `/home/user/src/go-git` would match as a local endpoint, but -// `https://github.com/src-d/go-git` would not. -func IsLocalEndpoint(url string) bool { - return !MatchesScheme(url) && !MatchesScpLike(url) -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/object_walker.go b/vendor/gopkg.in/src-d/go-git.v4/object_walker.go deleted file mode 100644 index f8b19cd..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/object_walker.go +++ /dev/null @@ -1,104 +0,0 @@ -package git - -import ( - "fmt" - - "gopkg.in/src-d/go-git.v4/plumbing" - "gopkg.in/src-d/go-git.v4/plumbing/filemode" - "gopkg.in/src-d/go-git.v4/plumbing/object" - "gopkg.in/src-d/go-git.v4/storage" -) - -type objectWalker struct { - Storer storage.Storer - // seen is the set of objects seen in the repo. - // seen map can become huge if walking over large - // repos. Thus using struct{} as the value type. - seen map[plumbing.Hash]struct{} -} - -func newObjectWalker(s storage.Storer) *objectWalker { - return &objectWalker{s, map[plumbing.Hash]struct{}{}} -} - -// walkAllRefs walks all (hash) refererences from the repo. -func (p *objectWalker) walkAllRefs() error { - // Walk over all the references in the repo. - it, err := p.Storer.IterReferences() - if err != nil { - return err - } - defer it.Close() - err = it.ForEach(func(ref *plumbing.Reference) error { - // Exit this iteration early for non-hash references. - if ref.Type() != plumbing.HashReference { - return nil - } - return p.walkObjectTree(ref.Hash()) - }) - return err -} - -func (p *objectWalker) isSeen(hash plumbing.Hash) bool { - _, seen := p.seen[hash] - return seen -} - -func (p *objectWalker) add(hash plumbing.Hash) { - p.seen[hash] = struct{}{} -} - -// walkObjectTree walks over all objects and remembers references -// to them in the objectWalker. This is used instead of the revlist -// walks because memory usage is tight with huge repos. -func (p *objectWalker) walkObjectTree(hash plumbing.Hash) error { - // Check if we have already seen, and mark this object - if p.isSeen(hash) { - return nil - } - p.add(hash) - // Fetch the object. - obj, err := object.GetObject(p.Storer, hash) - if err != nil { - return fmt.Errorf("Getting object %s failed: %v", hash, err) - } - // Walk all children depending on object type. - switch obj := obj.(type) { - case *object.Commit: - err = p.walkObjectTree(obj.TreeHash) - if err != nil { - return err - } - for _, h := range obj.ParentHashes { - err = p.walkObjectTree(h) - if err != nil { - return err - } - } - case *object.Tree: - for i := range obj.Entries { - // Shortcut for blob objects: - // 'or' the lower bits of a mode and check that it - // it matches a filemode.Executable. The type information - // is in the higher bits, but this is the cleanest way - // to handle plain files with different modes. - // Other non-tree objects are somewhat rare, so they - // are not special-cased. - if obj.Entries[i].Mode|0755 == filemode.Executable { - p.add(obj.Entries[i].Hash) - continue - } - // Normal walk for sub-trees (and symlinks etc). - err = p.walkObjectTree(obj.Entries[i].Hash) - if err != nil { - return err - } - } - case *object.Tag: - return p.walkObjectTree(obj.Target) - default: - // Error out on unhandled object types. - return fmt.Errorf("Unknown object %X %s %T\n", obj.ID(), obj.Type(), obj) - } - return nil -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/options.go b/vendor/gopkg.in/src-d/go-git.v4/options.go deleted file mode 100644 index 0f728e7..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/options.go +++ /dev/null @@ -1,492 +0,0 @@ -package git - -import ( - "errors" - "regexp" - "strings" - - "golang.org/x/crypto/openpgp" - "gopkg.in/src-d/go-git.v4/config" - "gopkg.in/src-d/go-git.v4/plumbing" - "gopkg.in/src-d/go-git.v4/plumbing/object" - "gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/sideband" - "gopkg.in/src-d/go-git.v4/plumbing/transport" -) - -// SubmoduleRescursivity defines how depth will affect any submodule recursive -// operation. -type SubmoduleRescursivity uint - -const ( - // DefaultRemoteName name of the default Remote, just like git command. - DefaultRemoteName = "origin" - - // NoRecurseSubmodules disables the recursion for a submodule operation. - NoRecurseSubmodules SubmoduleRescursivity = 0 - // DefaultSubmoduleRecursionDepth allow recursion in a submodule operation. - DefaultSubmoduleRecursionDepth SubmoduleRescursivity = 10 -) - -var ( - ErrMissingURL = errors.New("URL field is required") -) - -// CloneOptions describes how a clone should be performed. -type CloneOptions struct { - // The (possibly remote) repository URL to clone from. - URL string - // Auth credentials, if required, to use with the remote repository. - Auth transport.AuthMethod - // Name of the remote to be added, by default `origin`. - RemoteName string - // Remote branch to clone. - ReferenceName plumbing.ReferenceName - // Fetch only ReferenceName if true. - SingleBranch bool - // No checkout of HEAD after clone if true. - NoCheckout bool - // Limit fetching to the specified number of commits. - Depth int - // RecurseSubmodules after the clone is created, initialize all submodules - // within, using their default settings. This option is ignored if the - // cloned repository does not have a worktree. - RecurseSubmodules SubmoduleRescursivity - // Progress is where the human readable information sent by the server is - // stored, if nil nothing is stored and the capability (if supported) - // no-progress, is sent to the server to avoid send this information. - Progress sideband.Progress - // Tags describe how the tags will be fetched from the remote repository, - // by default is AllTags. - Tags TagMode -} - -// Validate validates the fields and sets the default values. -func (o *CloneOptions) Validate() error { - if o.URL == "" { - return ErrMissingURL - } - - if o.RemoteName == "" { - o.RemoteName = DefaultRemoteName - } - - if o.ReferenceName == "" { - o.ReferenceName = plumbing.HEAD - } - - if o.Tags == InvalidTagMode { - o.Tags = AllTags - } - - return nil -} - -// PullOptions describes how a pull should be performed. -type PullOptions struct { - // Name of the remote to be pulled. If empty, uses the default. - RemoteName string - // Remote branch to clone. If empty, uses HEAD. - ReferenceName plumbing.ReferenceName - // Fetch only ReferenceName if true. - SingleBranch bool - // Limit fetching to the specified number of commits. - Depth int - // Auth credentials, if required, to use with the remote repository. - Auth transport.AuthMethod - // RecurseSubmodules controls if new commits of all populated submodules - // should be fetched too. - RecurseSubmodules SubmoduleRescursivity - // Progress is where the human readable information sent by the server is - // stored, if nil nothing is stored and the capability (if supported) - // no-progress, is sent to the server to avoid send this information. - Progress sideband.Progress - // Force allows the pull to update a local branch even when the remote - // branch does not descend from it. - Force bool -} - -// Validate validates the fields and sets the default values. -func (o *PullOptions) Validate() error { - if o.RemoteName == "" { - o.RemoteName = DefaultRemoteName - } - - if o.ReferenceName == "" { - o.ReferenceName = plumbing.HEAD - } - - return nil -} - -type TagMode int - -const ( - InvalidTagMode TagMode = iota - // TagFollowing any tag that points into the histories being fetched is also - // fetched. TagFollowing requires a server with `include-tag` capability - // in order to fetch the annotated tags objects. - TagFollowing - // AllTags fetch all tags from the remote (i.e., fetch remote tags - // refs/tags/* into local tags with the same name) - AllTags - //NoTags fetch no tags from the remote at all - NoTags -) - -// FetchOptions describes how a fetch should be performed -type FetchOptions struct { - // Name of the remote to fetch from. Defaults to origin. - RemoteName string - RefSpecs []config.RefSpec - // Depth limit fetching to the specified number of commits from the tip of - // each remote branch history. - Depth int - // Auth credentials, if required, to use with the remote repository. - Auth transport.AuthMethod - // Progress is where the human readable information sent by the server is - // stored, if nil nothing is stored and the capability (if supported) - // no-progress, is sent to the server to avoid send this information. - Progress sideband.Progress - // Tags describe how the tags will be fetched from the remote repository, - // by default is TagFollowing. - Tags TagMode - // Force allows the fetch to update a local branch even when the remote - // branch does not descend from it. - Force bool -} - -// Validate validates the fields and sets the default values. -func (o *FetchOptions) Validate() error { - if o.RemoteName == "" { - o.RemoteName = DefaultRemoteName - } - - if o.Tags == InvalidTagMode { - o.Tags = TagFollowing - } - - for _, r := range o.RefSpecs { - if err := r.Validate(); err != nil { - return err - } - } - - return nil -} - -// PushOptions describes how a push should be performed. -type PushOptions struct { - // RemoteName is the name of the remote to be pushed to. - RemoteName string - // RefSpecs specify what destination ref to update with what source - // object. A refspec with empty src can be used to delete a reference. - RefSpecs []config.RefSpec - // Auth credentials, if required, to use with the remote repository. - Auth transport.AuthMethod - // Progress is where the human readable information sent by the server is - // stored, if nil nothing is stored. - Progress sideband.Progress - // Prune specify that remote refs that match given RefSpecs and that do - // not exist locally will be removed. - Prune bool -} - -// Validate validates the fields and sets the default values. -func (o *PushOptions) Validate() error { - if o.RemoteName == "" { - o.RemoteName = DefaultRemoteName - } - - if len(o.RefSpecs) == 0 { - o.RefSpecs = []config.RefSpec{ - config.RefSpec(config.DefaultPushRefSpec), - } - } - - for _, r := range o.RefSpecs { - if err := r.Validate(); err != nil { - return err - } - } - - return nil -} - -// SubmoduleUpdateOptions describes how a submodule update should be performed. -type SubmoduleUpdateOptions struct { - // Init, if true initializes the submodules recorded in the index. - Init bool - // NoFetch tell to the update command to not fetch new objects from the - // remote site. - NoFetch bool - // RecurseSubmodules the update is performed not only in the submodules of - // the current repository but also in any nested submodules inside those - // submodules (and so on). Until the SubmoduleRescursivity is reached. - RecurseSubmodules SubmoduleRescursivity - // Auth credentials, if required, to use with the remote repository. - Auth transport.AuthMethod -} - -var ( - ErrBranchHashExclusive = errors.New("Branch and Hash are mutually exclusive") - ErrCreateRequiresBranch = errors.New("Branch is mandatory when Create is used") -) - -// CheckoutOptions describes how a checkout operation should be performed. -type CheckoutOptions struct { - // Hash is the hash of the commit to be checked out. If used, HEAD will be - // in detached mode. If Create is not used, Branch and Hash are mutually - // exclusive. - Hash plumbing.Hash - // Branch to be checked out, if Branch and Hash are empty is set to `master`. - Branch plumbing.ReferenceName - // Create a new branch named Branch and start it at Hash. - Create bool - // Force, if true when switching branches, proceed even if the index or the - // working tree differs from HEAD. This is used to throw away local changes - Force bool - // Keep, if true when switching branches, local changes (the index or the - // working tree changes) will be kept so that they can be committed to the - // target branch. Force and Keep are mutually exclusive, should not be both - // set to true. - Keep bool -} - -// Validate validates the fields and sets the default values. -func (o *CheckoutOptions) Validate() error { - if !o.Create && !o.Hash.IsZero() && o.Branch != "" { - return ErrBranchHashExclusive - } - - if o.Create && o.Branch == "" { - return ErrCreateRequiresBranch - } - - if o.Branch == "" { - o.Branch = plumbing.Master - } - - return nil -} - -// ResetMode defines the mode of a reset operation. -type ResetMode int8 - -const ( - // MixedReset resets the index but not the working tree (i.e., the changed - // files are preserved but not marked for commit) and reports what has not - // been updated. This is the default action. - MixedReset ResetMode = iota - // HardReset resets the index and working tree. Any changes to tracked files - // in the working tree are discarded. - HardReset - // MergeReset resets the index and updates the files in the working tree - // that are different between Commit and HEAD, but keeps those which are - // different between the index and working tree (i.e. which have changes - // which have not been added). - // - // If a file that is different between Commit and the index has unstaged - // changes, reset is aborted. - MergeReset - // SoftReset does not touch the index file or the working tree at all (but - // resets the head to , just like all modes do). This leaves all - // your changed files "Changes to be committed", as git status would put it. - SoftReset -) - -// ResetOptions describes how a reset operation should be performed. -type ResetOptions struct { - // Commit, if commit is present set the current branch head (HEAD) to it. - Commit plumbing.Hash - // Mode, form resets the current branch head to Commit and possibly updates - // the index (resetting it to the tree of Commit) and the working tree - // depending on Mode. If empty MixedReset is used. - Mode ResetMode -} - -// Validate validates the fields and sets the default values. -func (o *ResetOptions) Validate(r *Repository) error { - if o.Commit == plumbing.ZeroHash { - ref, err := r.Head() - if err != nil { - return err - } - - o.Commit = ref.Hash() - } - - return nil -} - -type LogOrder int8 - -const ( - LogOrderDefault LogOrder = iota - LogOrderDFS - LogOrderDFSPost - LogOrderBSF - LogOrderCommitterTime -) - -// LogOptions describes how a log action should be performed. -type LogOptions struct { - // When the From option is set the log will only contain commits - // reachable from it. If this option is not set, HEAD will be used as - // the default From. - From plumbing.Hash - - // The default traversal algorithm is Depth-first search - // set Order=LogOrderCommitterTime for ordering by committer time (more compatible with `git log`) - // set Order=LogOrderBSF for Breadth-first search - Order LogOrder - - // Show only those commits in which the specified file was inserted/updated. - // It is equivalent to running `git log -- `. - FileName *string - - // Pretend as if all the refs in refs/, along with HEAD, are listed on the command line as . - // It is equivalent to running `git log --all`. - // If set on true, the From option will be ignored. - All bool -} - -var ( - ErrMissingAuthor = errors.New("author field is required") -) - -// CommitOptions describes how a commit operation should be performed. -type CommitOptions struct { - // All automatically stage files that have been modified and deleted, but - // new files you have not told Git about are not affected. - All bool - // Author is the author's signature of the commit. - Author *object.Signature - // Committer is the committer's signature of the commit. If Committer is - // nil the Author signature is used. - Committer *object.Signature - // Parents are the parents commits for the new commit, by default when - // len(Parents) is zero, the hash of HEAD reference is used. - Parents []plumbing.Hash - // SignKey denotes a key to sign the commit with. A nil value here means the - // commit will not be signed. The private key must be present and already - // decrypted. - SignKey *openpgp.Entity -} - -// Validate validates the fields and sets the default values. -func (o *CommitOptions) Validate(r *Repository) error { - if o.Author == nil { - return ErrMissingAuthor - } - - if o.Committer == nil { - o.Committer = o.Author - } - - if len(o.Parents) == 0 { - head, err := r.Head() - if err != nil && err != plumbing.ErrReferenceNotFound { - return err - } - - if head != nil { - o.Parents = []plumbing.Hash{head.Hash()} - } - } - - return nil -} - -var ( - ErrMissingName = errors.New("name field is required") - ErrMissingTagger = errors.New("tagger field is required") - ErrMissingMessage = errors.New("message field is required") -) - -// CreateTagOptions describes how a tag object should be created. -type CreateTagOptions struct { - // Tagger defines the signature of the tag creator. - Tagger *object.Signature - // Message defines the annotation of the tag. It is canonicalized during - // validation into the format expected by git - no leading whitespace and - // ending in a newline. - Message string - // SignKey denotes a key to sign the tag with. A nil value here means the tag - // will not be signed. The private key must be present and already decrypted. - SignKey *openpgp.Entity -} - -// Validate validates the fields and sets the default values. -func (o *CreateTagOptions) Validate(r *Repository, hash plumbing.Hash) error { - if o.Tagger == nil { - return ErrMissingTagger - } - - if o.Message == "" { - return ErrMissingMessage - } - - // Canonicalize the message into the expected message format. - o.Message = strings.TrimSpace(o.Message) + "\n" - - return nil -} - -// ListOptions describes how a remote list should be performed. -type ListOptions struct { - // Auth credentials, if required, to use with the remote repository. - Auth transport.AuthMethod -} - -// CleanOptions describes how a clean should be performed. -type CleanOptions struct { - Dir bool -} - -// GrepOptions describes how a grep should be performed. -type GrepOptions struct { - // Patterns are compiled Regexp objects to be matched. - Patterns []*regexp.Regexp - // InvertMatch selects non-matching lines. - InvertMatch bool - // CommitHash is the hash of the commit from which worktree should be derived. - CommitHash plumbing.Hash - // ReferenceName is the branch or tag name from which worktree should be derived. - ReferenceName plumbing.ReferenceName - // PathSpecs are compiled Regexp objects of pathspec to use in the matching. - PathSpecs []*regexp.Regexp -} - -var ( - ErrHashOrReference = errors.New("ambiguous options, only one of CommitHash or ReferenceName can be passed") -) - -// Validate validates the fields and sets the default values. -func (o *GrepOptions) Validate(w *Worktree) error { - if !o.CommitHash.IsZero() && o.ReferenceName != "" { - return ErrHashOrReference - } - - // If none of CommitHash and ReferenceName are provided, set commit hash of - // the repository's head. - if o.CommitHash.IsZero() && o.ReferenceName == "" { - ref, err := w.r.Head() - if err != nil { - return err - } - o.CommitHash = ref.Hash() - } - - return nil -} - -// PlainOpenOptions describes how opening a plain repository should be -// performed. -type PlainOpenOptions struct { - // DetectDotGit defines whether parent directories should be - // walked until a .git directory or file is found. - DetectDotGit bool -} - -// Validate validates the fields and sets the default values. -func (o *PlainOpenOptions) Validate() error { return nil } diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/cache/buffer_lru.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/cache/buffer_lru.go deleted file mode 100644 index acaf195..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/cache/buffer_lru.go +++ /dev/null @@ -1,98 +0,0 @@ -package cache - -import ( - "container/list" - "sync" -) - -// BufferLRU implements an object cache with an LRU eviction policy and a -// maximum size (measured in object size). -type BufferLRU struct { - MaxSize FileSize - - actualSize FileSize - ll *list.List - cache map[int64]*list.Element - mut sync.Mutex -} - -// NewBufferLRU creates a new BufferLRU with the given maximum size. The maximum -// size will never be exceeded. -func NewBufferLRU(maxSize FileSize) *BufferLRU { - return &BufferLRU{MaxSize: maxSize} -} - -// NewBufferLRUDefault creates a new BufferLRU with the default cache size. -func NewBufferLRUDefault() *BufferLRU { - return &BufferLRU{MaxSize: DefaultMaxSize} -} - -type buffer struct { - Key int64 - Slice []byte -} - -// Put puts a buffer into the cache. If the buffer is already in the cache, it -// will be marked as used. Otherwise, it will be inserted. A buffers might -// be evicted to make room for the new one. -func (c *BufferLRU) Put(key int64, slice []byte) { - c.mut.Lock() - defer c.mut.Unlock() - - if c.cache == nil { - c.actualSize = 0 - c.cache = make(map[int64]*list.Element, 1000) - c.ll = list.New() - } - - bufSize := FileSize(len(slice)) - if ee, ok := c.cache[key]; ok { - oldBuf := ee.Value.(buffer) - // in this case bufSize is a delta: new size - old size - bufSize -= FileSize(len(oldBuf.Slice)) - c.ll.MoveToFront(ee) - ee.Value = buffer{key, slice} - } else { - if bufSize > c.MaxSize { - return - } - ee := c.ll.PushFront(buffer{key, slice}) - c.cache[key] = ee - } - - c.actualSize += bufSize - for c.actualSize > c.MaxSize { - last := c.ll.Back() - lastObj := last.Value.(buffer) - lastSize := FileSize(len(lastObj.Slice)) - - c.ll.Remove(last) - delete(c.cache, lastObj.Key) - c.actualSize -= lastSize - } -} - -// Get returns a buffer by its key. It marks the buffer as used. If the buffer -// is not in the cache, (nil, false) will be returned. -func (c *BufferLRU) Get(key int64) ([]byte, bool) { - c.mut.Lock() - defer c.mut.Unlock() - - ee, ok := c.cache[key] - if !ok { - return nil, false - } - - c.ll.MoveToFront(ee) - return ee.Value.(buffer).Slice, true -} - -// Clear the content of this buffer cache. -func (c *BufferLRU) Clear() { - c.mut.Lock() - defer c.mut.Unlock() - - c.ll = nil - c.cache = nil - c.actualSize = 0 -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/cache/common.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/cache/common.go deleted file mode 100644 index 2b7f36a..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/cache/common.go +++ /dev/null @@ -1,39 +0,0 @@ -package cache - -import "gopkg.in/src-d/go-git.v4/plumbing" - -const ( - Byte FileSize = 1 << (iota * 10) - KiByte - MiByte - GiByte -) - -type FileSize int64 - -const DefaultMaxSize FileSize = 96 * MiByte - -// Object is an interface to a object cache. -type Object interface { - // Put puts the given object into the cache. Whether this object will - // actually be put into the cache or not is implementation specific. - Put(o plumbing.EncodedObject) - // Get gets an object from the cache given its hash. The second return value - // is true if the object was returned, and false otherwise. - Get(k plumbing.Hash) (plumbing.EncodedObject, bool) - // Clear clears every object from the cache. - Clear() -} - -// Buffer is an interface to a buffer cache. -type Buffer interface { - // Put puts a buffer into the cache. If the buffer is already in the cache, - // it will be marked as used. Otherwise, it will be inserted. Buffer might - // be evicted to make room for the new one. - Put(key int64, slice []byte) - // Get returns a buffer by its key. It marks the buffer as used. If the - // buffer is not in the cache, (nil, false) will be returned. - Get(key int64) ([]byte, bool) - // Clear clears every object from the cache. - Clear() -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/cache/object_lru.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/cache/object_lru.go deleted file mode 100644 index cd3712b..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/cache/object_lru.go +++ /dev/null @@ -1,101 +0,0 @@ -package cache - -import ( - "container/list" - "sync" - - "gopkg.in/src-d/go-git.v4/plumbing" -) - -// ObjectLRU implements an object cache with an LRU eviction policy and a -// maximum size (measured in object size). -type ObjectLRU struct { - MaxSize FileSize - - actualSize FileSize - ll *list.List - cache map[interface{}]*list.Element - mut sync.Mutex -} - -// NewObjectLRU creates a new ObjectLRU with the given maximum size. The maximum -// size will never be exceeded. -func NewObjectLRU(maxSize FileSize) *ObjectLRU { - return &ObjectLRU{MaxSize: maxSize} -} - -// NewObjectLRUDefault creates a new ObjectLRU with the default cache size. -func NewObjectLRUDefault() *ObjectLRU { - return &ObjectLRU{MaxSize: DefaultMaxSize} -} - -// Put puts an object into the cache. If the object is already in the cache, it -// will be marked as used. Otherwise, it will be inserted. A single object might -// be evicted to make room for the new object. -func (c *ObjectLRU) Put(obj plumbing.EncodedObject) { - c.mut.Lock() - defer c.mut.Unlock() - - if c.cache == nil { - c.actualSize = 0 - c.cache = make(map[interface{}]*list.Element, 1000) - c.ll = list.New() - } - - objSize := FileSize(obj.Size()) - key := obj.Hash() - if ee, ok := c.cache[key]; ok { - oldObj := ee.Value.(plumbing.EncodedObject) - // in this case objSize is a delta: new size - old size - objSize -= FileSize(oldObj.Size()) - c.ll.MoveToFront(ee) - ee.Value = obj - } else { - if objSize > c.MaxSize { - return - } - ee := c.ll.PushFront(obj) - c.cache[key] = ee - } - - c.actualSize += objSize - for c.actualSize > c.MaxSize { - last := c.ll.Back() - if last == nil { - c.actualSize = 0 - break - } - - lastObj := last.Value.(plumbing.EncodedObject) - lastSize := FileSize(lastObj.Size()) - - c.ll.Remove(last) - delete(c.cache, lastObj.Hash()) - c.actualSize -= lastSize - } -} - -// Get returns an object by its hash. It marks the object as used. If the object -// is not in the cache, (nil, false) will be returned. -func (c *ObjectLRU) Get(k plumbing.Hash) (plumbing.EncodedObject, bool) { - c.mut.Lock() - defer c.mut.Unlock() - - ee, ok := c.cache[k] - if !ok { - return nil, false - } - - c.ll.MoveToFront(ee) - return ee.Value.(plumbing.EncodedObject), true -} - -// Clear the content of this object cache. -func (c *ObjectLRU) Clear() { - c.mut.Lock() - defer c.mut.Unlock() - - c.ll = nil - c.cache = nil - c.actualSize = 0 -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/error.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/error.go deleted file mode 100644 index a3ebed3..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/error.go +++ /dev/null @@ -1,35 +0,0 @@ -package plumbing - -import "fmt" - -type PermanentError struct { - Err error -} - -func NewPermanentError(err error) *PermanentError { - if err == nil { - return nil - } - - return &PermanentError{Err: err} -} - -func (e *PermanentError) Error() string { - return fmt.Sprintf("permanent client error: %s", e.Err.Error()) -} - -type UnexpectedError struct { - Err error -} - -func NewUnexpectedError(err error) *UnexpectedError { - if err == nil { - return nil - } - - return &UnexpectedError{Err: err} -} - -func (e *UnexpectedError) Error() string { - return fmt.Sprintf("unexpected client error: %s", e.Err.Error()) -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/filemode/filemode.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/filemode/filemode.go deleted file mode 100644 index 0994bc4..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/filemode/filemode.go +++ /dev/null @@ -1,188 +0,0 @@ -package filemode - -import ( - "encoding/binary" - "fmt" - "os" - "strconv" -) - -// A FileMode represents the kind of tree entries used by git. It -// resembles regular file systems modes, although FileModes are -// considerably simpler (there are not so many), and there are some, -// like Submodule that has no file system equivalent. -type FileMode uint32 - -const ( - // Empty is used as the FileMode of tree elements when comparing - // trees in the following situations: - // - // - the mode of tree elements before their creation. - the mode of - // tree elements after their deletion. - the mode of unmerged - // elements when checking the index. - // - // Empty has no file system equivalent. As Empty is the zero value - // of FileMode, it is also returned by New and - // NewFromOsNewFromOSFileMode along with an error, when they fail. - Empty FileMode = 0 - // Dir represent a Directory. - Dir FileMode = 0040000 - // Regular represent non-executable files. Please note this is not - // the same as golang regular files, which include executable files. - Regular FileMode = 0100644 - // Deprecated represent non-executable files with the group writable - // bit set. This mode was supported by the first versions of git, - // but it has been deprecatred nowadays. This library uses them - // internally, so you can read old packfiles, but will treat them as - // Regulars when interfacing with the outside world. This is the - // standard git behaviuor. - Deprecated FileMode = 0100664 - // Executable represents executable files. - Executable FileMode = 0100755 - // Symlink represents symbolic links to files. - Symlink FileMode = 0120000 - // Submodule represents git submodules. This mode has no file system - // equivalent. - Submodule FileMode = 0160000 -) - -// New takes the octal string representation of a FileMode and returns -// the FileMode and a nil error. If the string can not be parsed to a -// 32 bit unsigned octal number, it returns Empty and the parsing error. -// -// Example: "40000" means Dir, "100644" means Regular. -// -// Please note this function does not check if the returned FileMode -// is valid in git or if it is malformed. For instance, "1" will -// return the malformed FileMode(1) and a nil error. -func New(s string) (FileMode, error) { - n, err := strconv.ParseUint(s, 8, 32) - if err != nil { - return Empty, err - } - - return FileMode(n), nil -} - -// NewFromOSFileMode returns the FileMode used by git to represent -// the provided file system modes and a nil error on success. If the -// file system mode cannot be mapped to any valid git mode (as with -// sockets or named pipes), it will return Empty and an error. -// -// Note that some git modes cannot be generated from os.FileModes, like -// Deprecated and Submodule; while Empty will be returned, along with an -// error, only when the method fails. -func NewFromOSFileMode(m os.FileMode) (FileMode, error) { - if m.IsRegular() { - if isSetTemporary(m) { - return Empty, fmt.Errorf("no equivalent git mode for %s", m) - } - if isSetCharDevice(m) { - return Empty, fmt.Errorf("no equivalent git mode for %s", m) - } - if isSetUserExecutable(m) { - return Executable, nil - } - return Regular, nil - } - - if m.IsDir() { - return Dir, nil - } - - if isSetSymLink(m) { - return Symlink, nil - } - - return Empty, fmt.Errorf("no equivalent git mode for %s", m) -} - -func isSetCharDevice(m os.FileMode) bool { - return m&os.ModeCharDevice != 0 -} - -func isSetTemporary(m os.FileMode) bool { - return m&os.ModeTemporary != 0 -} - -func isSetUserExecutable(m os.FileMode) bool { - return m&0100 != 0 -} - -func isSetSymLink(m os.FileMode) bool { - return m&os.ModeSymlink != 0 -} - -// Bytes return a slice of 4 bytes with the mode in little endian -// encoding. -func (m FileMode) Bytes() []byte { - ret := make([]byte, 4) - binary.LittleEndian.PutUint32(ret, uint32(m)) - return ret[:] -} - -// IsMalformed returns if the FileMode should not appear in a git packfile, -// this is: Empty and any other mode not mentioned as a constant in this -// package. -func (m FileMode) IsMalformed() bool { - return m != Dir && - m != Regular && - m != Deprecated && - m != Executable && - m != Symlink && - m != Submodule -} - -// String returns the FileMode as a string in the standatd git format, -// this is, an octal number padded with ceros to 7 digits. Malformed -// modes are printed in that same format, for easier debugging. -// -// Example: Regular is "0100644", Empty is "0000000". -func (m FileMode) String() string { - return fmt.Sprintf("%07o", uint32(m)) -} - -// IsRegular returns if the FileMode represents that of a regular file, -// this is, either Regular or Deprecated. Please note that Executable -// are not regular even though in the UNIX tradition, they usually are: -// See the IsFile method. -func (m FileMode) IsRegular() bool { - return m == Regular || - m == Deprecated -} - -// IsFile returns if the FileMode represents that of a file, this is, -// Regular, Deprecated, Excutable or Link. -func (m FileMode) IsFile() bool { - return m == Regular || - m == Deprecated || - m == Executable || - m == Symlink -} - -// ToOSFileMode returns the os.FileMode to be used when creating file -// system elements with the given git mode and a nil error on success. -// -// When the provided mode cannot be mapped to a valid file system mode -// (e.g. Submodule) it returns os.FileMode(0) and an error. -// -// The returned file mode does not take into account the umask. -func (m FileMode) ToOSFileMode() (os.FileMode, error) { - switch m { - case Dir: - return os.ModePerm | os.ModeDir, nil - case Submodule: - return os.ModePerm | os.ModeDir, nil - case Regular: - return os.FileMode(0644), nil - // Deprecated is no longer allowed: treated as a Regular instead - case Deprecated: - return os.FileMode(0644), nil - case Executable: - return os.FileMode(0755), nil - case Symlink: - return os.ModePerm | os.ModeSymlink, nil - } - - return os.FileMode(0), fmt.Errorf("malformed mode (%s)", m) -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/config/common.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/config/common.go deleted file mode 100644 index 8f98ad1..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/config/common.go +++ /dev/null @@ -1,99 +0,0 @@ -package config - -// New creates a new config instance. -func New() *Config { - return &Config{} -} - -// Config contains all the sections, comments and includes from a config file. -type Config struct { - Comment *Comment - Sections Sections - Includes Includes -} - -// Includes is a list of Includes in a config file. -type Includes []*Include - -// Include is a reference to an included config file. -type Include struct { - Path string - Config *Config -} - -// Comment string without the prefix '#' or ';'. -type Comment string - -const ( - // NoSubsection token is passed to Config.Section and Config.SetSection to - // represent the absence of a section. - NoSubsection = "" -) - -// Section returns a existing section with the given name or creates a new one. -func (c *Config) Section(name string) *Section { - for i := len(c.Sections) - 1; i >= 0; i-- { - s := c.Sections[i] - if s.IsName(name) { - return s - } - } - - s := &Section{Name: name} - c.Sections = append(c.Sections, s) - return s -} - -// AddOption adds an option to a given section and subsection. Use the -// NoSubsection constant for the subsection argument if no subsection is wanted. -func (c *Config) AddOption(section string, subsection string, key string, value string) *Config { - if subsection == "" { - c.Section(section).AddOption(key, value) - } else { - c.Section(section).Subsection(subsection).AddOption(key, value) - } - - return c -} - -// SetOption sets an option to a given section and subsection. Use the -// NoSubsection constant for the subsection argument if no subsection is wanted. -func (c *Config) SetOption(section string, subsection string, key string, value string) *Config { - if subsection == "" { - c.Section(section).SetOption(key, value) - } else { - c.Section(section).Subsection(subsection).SetOption(key, value) - } - - return c -} - -// RemoveSection removes a section from a config file. -func (c *Config) RemoveSection(name string) *Config { - result := Sections{} - for _, s := range c.Sections { - if !s.IsName(name) { - result = append(result, s) - } - } - - c.Sections = result - return c -} - -// RemoveSubsection remove s a subsection from a config file. -func (c *Config) RemoveSubsection(section string, subsection string) *Config { - for _, s := range c.Sections { - if s.IsName(section) { - result := Subsections{} - for _, ss := range s.Subsections { - if !ss.IsName(subsection) { - result = append(result, ss) - } - } - s.Subsections = result - } - } - - return c -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/config/decoder.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/config/decoder.go deleted file mode 100644 index 0f02ce1..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/config/decoder.go +++ /dev/null @@ -1,37 +0,0 @@ -package config - -import ( - "io" - - "github.com/src-d/gcfg" -) - -// A Decoder reads and decodes config files from an input stream. -type Decoder struct { - io.Reader -} - -// NewDecoder returns a new decoder that reads from r. -func NewDecoder(r io.Reader) *Decoder { - return &Decoder{r} -} - -// Decode reads the whole config from its input and stores it in the -// value pointed to by config. -func (d *Decoder) Decode(config *Config) error { - cb := func(s string, ss string, k string, v string, bv bool) error { - if ss == "" && k == "" { - config.Section(s) - return nil - } - - if ss != "" && k == "" { - config.Section(s).Subsection(ss) - return nil - } - - config.AddOption(s, ss, k, v) - return nil - } - return gcfg.ReadWithCallback(d, cb) -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/config/doc.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/config/doc.go deleted file mode 100644 index 3986c83..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/config/doc.go +++ /dev/null @@ -1,122 +0,0 @@ -// Package config implements encoding and decoding of git config files. -// -// Configuration File -// ------------------ -// -// The Git configuration file contains a number of variables that affect -// the Git commands' behavior. The `.git/config` file in each repository -// is used to store the configuration for that repository, and -// `$HOME/.gitconfig` is used to store a per-user configuration as -// fallback values for the `.git/config` file. The file `/etc/gitconfig` -// can be used to store a system-wide default configuration. -// -// The configuration variables are used by both the Git plumbing -// and the porcelains. The variables are divided into sections, wherein -// the fully qualified variable name of the variable itself is the last -// dot-separated segment and the section name is everything before the last -// dot. The variable names are case-insensitive, allow only alphanumeric -// characters and `-`, and must start with an alphabetic character. Some -// variables may appear multiple times; we say then that the variable is -// multivalued. -// -// Syntax -// ~~~~~~ -// -// The syntax is fairly flexible and permissive; whitespaces are mostly -// ignored. The '#' and ';' characters begin comments to the end of line, -// blank lines are ignored. -// -// The file consists of sections and variables. A section begins with -// the name of the section in square brackets and continues until the next -// section begins. Section names are case-insensitive. Only alphanumeric -// characters, `-` and `.` are allowed in section names. Each variable -// must belong to some section, which means that there must be a section -// header before the first setting of a variable. -// -// Sections can be further divided into subsections. To begin a subsection -// put its name in double quotes, separated by space from the section name, -// in the section header, like in the example below: -// -// -------- -// [section "subsection"] -// -// -------- -// -// Subsection names are case sensitive and can contain any characters except -// newline (doublequote `"` and backslash can be included by escaping them -// as `\"` and `\\`, respectively). Section headers cannot span multiple -// lines. Variables may belong directly to a section or to a given subsection. -// You can have `[section]` if you have `[section "subsection"]`, but you -// don't need to. -// -// There is also a deprecated `[section.subsection]` syntax. With this -// syntax, the subsection name is converted to lower-case and is also -// compared case sensitively. These subsection names follow the same -// restrictions as section names. -// -// All the other lines (and the remainder of the line after the section -// header) are recognized as setting variables, in the form -// 'name = value' (or just 'name', which is a short-hand to say that -// the variable is the boolean "true"). -// The variable names are case-insensitive, allow only alphanumeric characters -// and `-`, and must start with an alphabetic character. -// -// A line that defines a value can be continued to the next line by -// ending it with a `\`; the backquote and the end-of-line are -// stripped. Leading whitespaces after 'name =', the remainder of the -// line after the first comment character '#' or ';', and trailing -// whitespaces of the line are discarded unless they are enclosed in -// double quotes. Internal whitespaces within the value are retained -// verbatim. -// -// Inside double quotes, double quote `"` and backslash `\` characters -// must be escaped: use `\"` for `"` and `\\` for `\`. -// -// The following escape sequences (beside `\"` and `\\`) are recognized: -// `\n` for newline character (NL), `\t` for horizontal tabulation (HT, TAB) -// and `\b` for backspace (BS). Other char escape sequences (including octal -// escape sequences) are invalid. -// -// Includes -// ~~~~~~~~ -// -// You can include one config file from another by setting the special -// `include.path` variable to the name of the file to be included. The -// variable takes a pathname as its value, and is subject to tilde -// expansion. -// -// The included file is expanded immediately, as if its contents had been -// found at the location of the include directive. If the value of the -// `include.path` variable is a relative path, the path is considered to be -// relative to the configuration file in which the include directive was -// found. See below for examples. -// -// -// Example -// ~~~~~~~ -// -// # Core variables -// [core] -// ; Don't trust file modes -// filemode = false -// -// # Our diff algorithm -// [diff] -// external = /usr/local/bin/diff-wrapper -// renames = true -// -// [branch "devel"] -// remote = origin -// merge = refs/heads/devel -// -// # Proxy settings -// [core] -// gitProxy="ssh" for "kernel.org" -// gitProxy=default-proxy ; for the rest -// -// [include] -// path = /path/to/foo.inc ; include by absolute path -// path = foo ; expand "foo" relative to the current file -// path = ~/foo ; expand "foo" in your `$HOME` directory -// -package config diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/config/encoder.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/config/encoder.go deleted file mode 100644 index 4eac896..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/config/encoder.go +++ /dev/null @@ -1,77 +0,0 @@ -package config - -import ( - "fmt" - "io" - "strings" -) - -// An Encoder writes config files to an output stream. -type Encoder struct { - w io.Writer -} - -// NewEncoder returns a new encoder that writes to w. -func NewEncoder(w io.Writer) *Encoder { - return &Encoder{w} -} - -// Encode writes the config in git config format to the stream of the encoder. -func (e *Encoder) Encode(cfg *Config) error { - for _, s := range cfg.Sections { - if err := e.encodeSection(s); err != nil { - return err - } - } - - return nil -} - -func (e *Encoder) encodeSection(s *Section) error { - if len(s.Options) > 0 { - if err := e.printf("[%s]\n", s.Name); err != nil { - return err - } - - if err := e.encodeOptions(s.Options); err != nil { - return err - } - } - - for _, ss := range s.Subsections { - if err := e.encodeSubsection(s.Name, ss); err != nil { - return err - } - } - - return nil -} - -func (e *Encoder) encodeSubsection(sectionName string, s *Subsection) error { - //TODO: escape - if err := e.printf("[%s \"%s\"]\n", sectionName, s.Name); err != nil { - return err - } - - return e.encodeOptions(s.Options) -} - -func (e *Encoder) encodeOptions(opts Options) error { - for _, o := range opts { - pattern := "\t%s = %s\n" - if strings.Contains(o.Value, "\\") { - pattern = "\t%s = %q\n" - } - - if err := e.printf(pattern, o.Key, o.Value); err != nil { - return err - } - } - - return nil -} - -func (e *Encoder) printf(msg string, args ...interface{}) error { - _, err := fmt.Fprintf(e.w, msg, args...) - return err -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/config/option.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/config/option.go deleted file mode 100644 index d4775e4..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/config/option.go +++ /dev/null @@ -1,117 +0,0 @@ -package config - -import ( - "fmt" - "strings" -) - -// Option defines a key/value entity in a config file. -type Option struct { - // Key preserving original caseness. - // Use IsKey instead to compare key regardless of caseness. - Key string - // Original value as string, could be not normalized. - Value string -} - -type Options []*Option - -// IsKey returns true if the given key matches -// this option's key in a case-insensitive comparison. -func (o *Option) IsKey(key string) bool { - return strings.ToLower(o.Key) == strings.ToLower(key) -} - -func (opts Options) GoString() string { - var strs []string - for _, opt := range opts { - strs = append(strs, fmt.Sprintf("%#v", opt)) - } - - return strings.Join(strs, ", ") -} - -// Get gets the value for the given key if set, -// otherwise it returns the empty string. -// -// Note that there is no difference -// -// This matches git behaviour since git v1.8.1-rc1, -// if there are multiple definitions of a key, the -// last one wins. -// -// See: http://article.gmane.org/gmane.linux.kernel/1407184 -// -// In order to get all possible values for the same key, -// use GetAll. -func (opts Options) Get(key string) string { - for i := len(opts) - 1; i >= 0; i-- { - o := opts[i] - if o.IsKey(key) { - return o.Value - } - } - return "" -} - -// GetAll returns all possible values for the same key. -func (opts Options) GetAll(key string) []string { - result := []string{} - for _, o := range opts { - if o.IsKey(key) { - result = append(result, o.Value) - } - } - return result -} - -func (opts Options) withoutOption(key string) Options { - result := Options{} - for _, o := range opts { - if !o.IsKey(key) { - result = append(result, o) - } - } - return result -} - -func (opts Options) withAddedOption(key string, value string) Options { - return append(opts, &Option{key, value}) -} - -func (opts Options) withSettedOption(key string, values ...string) Options { - var result Options - var added []string - for _, o := range opts { - if !o.IsKey(key) { - result = append(result, o) - continue - } - - if contains(values, o.Value) { - added = append(added, o.Value) - result = append(result, o) - continue - } - } - - for _, value := range values { - if contains(added, value) { - continue - } - - result = result.withAddedOption(key, value) - } - - return result -} - -func contains(haystack []string, needle string) bool { - for _, s := range haystack { - if s == needle { - return true - } - } - - return false -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/config/section.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/config/section.go deleted file mode 100644 index 4a17e3b..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/config/section.go +++ /dev/null @@ -1,146 +0,0 @@ -package config - -import ( - "fmt" - "strings" -) - -// Section is the representation of a section inside git configuration files. -// Each Section contains Options that are used by both the Git plumbing -// and the porcelains. -// Sections can be further divided into subsections. To begin a subsection -// put its name in double quotes, separated by space from the section name, -// in the section header, like in the example below: -// -// [section "subsection"] -// -// All the other lines (and the remainder of the line after the section header) -// are recognized as option variables, in the form "name = value" (or just name, -// which is a short-hand to say that the variable is the boolean "true"). -// The variable names are case-insensitive, allow only alphanumeric characters -// and -, and must start with an alphabetic character: -// -// [section "subsection1"] -// option1 = value1 -// option2 -// [section "subsection2"] -// option3 = value2 -// -type Section struct { - Name string - Options Options - Subsections Subsections -} - -type Subsection struct { - Name string - Options Options -} - -type Sections []*Section - -func (s Sections) GoString() string { - var strs []string - for _, ss := range s { - strs = append(strs, fmt.Sprintf("%#v", ss)) - } - - return strings.Join(strs, ", ") -} - -type Subsections []*Subsection - -func (s Subsections) GoString() string { - var strs []string - for _, ss := range s { - strs = append(strs, fmt.Sprintf("%#v", ss)) - } - - return strings.Join(strs, ", ") -} - -// IsName checks if the name provided is equals to the Section name, case insensitive. -func (s *Section) IsName(name string) bool { - return strings.ToLower(s.Name) == strings.ToLower(name) -} - -// Option return the value for the specified key. Empty string is returned if -// key does not exists. -func (s *Section) Option(key string) string { - return s.Options.Get(key) -} - -// AddOption adds a new Option to the Section. The updated Section is returned. -func (s *Section) AddOption(key string, value string) *Section { - s.Options = s.Options.withAddedOption(key, value) - return s -} - -// SetOption adds a new Option to the Section. If the option already exists, is replaced. -// The updated Section is returned. -func (s *Section) SetOption(key string, value string) *Section { - s.Options = s.Options.withSettedOption(key, value) - return s -} - -// Remove an option with the specified key. The updated Section is returned. -func (s *Section) RemoveOption(key string) *Section { - s.Options = s.Options.withoutOption(key) - return s -} - -// Subsection returns a Subsection from the specified Section. If the -// Subsection does not exists, new one is created and added to Section. -func (s *Section) Subsection(name string) *Subsection { - for i := len(s.Subsections) - 1; i >= 0; i-- { - ss := s.Subsections[i] - if ss.IsName(name) { - return ss - } - } - - ss := &Subsection{Name: name} - s.Subsections = append(s.Subsections, ss) - return ss -} - -// HasSubsection checks if the Section has a Subsection with the specified name. -func (s *Section) HasSubsection(name string) bool { - for _, ss := range s.Subsections { - if ss.IsName(name) { - return true - } - } - - return false -} - -// IsName checks if the name of the subsection is exactly the specified name. -func (s *Subsection) IsName(name string) bool { - return s.Name == name -} - -// Option returns an option with the specified key. If the option does not exists, -// empty spring will be returned. -func (s *Subsection) Option(key string) string { - return s.Options.Get(key) -} - -// AddOption adds a new Option to the Subsection. The updated Subsection is returned. -func (s *Subsection) AddOption(key string, value string) *Subsection { - s.Options = s.Options.withAddedOption(key, value) - return s -} - -// SetOption adds a new Option to the Subsection. If the option already exists, is replaced. -// The updated Subsection is returned. -func (s *Subsection) SetOption(key string, value ...string) *Subsection { - s.Options = s.Options.withSettedOption(key, value...) - return s -} - -// RemoveOption removes the option with the specified key. The updated Subsection is returned. -func (s *Subsection) RemoveOption(key string) *Subsection { - s.Options = s.Options.withoutOption(key) - return s -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/diff/patch.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/diff/patch.go deleted file mode 100644 index 7c6cf4a..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/diff/patch.go +++ /dev/null @@ -1,58 +0,0 @@ -package diff - -import ( - "gopkg.in/src-d/go-git.v4/plumbing" - "gopkg.in/src-d/go-git.v4/plumbing/filemode" -) - -// Operation defines the operation of a diff item. -type Operation int - -const ( - // Equal item represents a equals diff. - Equal Operation = iota - // Add item represents an insert diff. - Add - // Delete item represents a delete diff. - Delete -) - -// Patch represents a collection of steps to transform several files. -type Patch interface { - // FilePatches returns a slice of patches per file. - FilePatches() []FilePatch - // Message returns an optional message that can be at the top of the - // Patch representation. - Message() string -} - -// FilePatch represents the necessary steps to transform one file to another. -type FilePatch interface { - // IsBinary returns true if this patch is representing a binary file. - IsBinary() bool - // Files returns the from and to Files, with all the necessary metadata to - // about them. If the patch creates a new file, "from" will be nil. - // If the patch deletes a file, "to" will be nil. - Files() (from, to File) - // Chunks returns a slice of ordered changes to transform "from" File to - // "to" File. If the file is a binary one, Chunks will be empty. - Chunks() []Chunk -} - -// File contains all the file metadata necessary to print some patch formats. -type File interface { - // Hash returns the File Hash. - Hash() plumbing.Hash - // Mode returns the FileMode. - Mode() filemode.FileMode - // Path returns the complete Path to the file, including the filename. - Path() string -} - -// Chunk represents a portion of a file transformation to another. -type Chunk interface { - // Content contains the portion of the file. - Content() string - // Type contains the Operation to do with this Chunk. - Type() Operation -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/diff/unified_encoder.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/diff/unified_encoder.go deleted file mode 100644 index 169242d..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/diff/unified_encoder.go +++ /dev/null @@ -1,360 +0,0 @@ -package diff - -import ( - "bytes" - "fmt" - "io" - "strings" - - "gopkg.in/src-d/go-git.v4/plumbing" -) - -const ( - diffInit = "diff --git a/%s b/%s\n" - - chunkStart = "@@ -" - chunkMiddle = " +" - chunkEnd = " @@%s\n" - chunkCount = "%d,%d" - - noFilePath = "/dev/null" - aDir = "a/" - bDir = "b/" - - fPath = "--- %s\n" - tPath = "+++ %s\n" - binary = "Binary files %s and %s differ\n" - - addLine = "+%s\n" - deleteLine = "-%s\n" - equalLine = " %s\n" - - oldMode = "old mode %o\n" - newMode = "new mode %o\n" - deletedFileMode = "deleted file mode %o\n" - newFileMode = "new file mode %o\n" - - renameFrom = "from" - renameTo = "to" - renameFileMode = "rename %s %s\n" - - indexAndMode = "index %s..%s %o\n" - indexNoMode = "index %s..%s\n" - - DefaultContextLines = 3 -) - -// UnifiedEncoder encodes an unified diff into the provided Writer. -// There are some unsupported features: -// - Similarity index for renames -// - Sort hash representation -type UnifiedEncoder struct { - io.Writer - - // ctxLines is the count of unchanged lines that will appear - // surrounding a change. - ctxLines int - - buf bytes.Buffer -} - -func NewUnifiedEncoder(w io.Writer, ctxLines int) *UnifiedEncoder { - return &UnifiedEncoder{ctxLines: ctxLines, Writer: w} -} - -func (e *UnifiedEncoder) Encode(patch Patch) error { - e.printMessage(patch.Message()) - - if err := e.encodeFilePatch(patch.FilePatches()); err != nil { - return err - } - - _, err := e.buf.WriteTo(e) - - return err -} - -func (e *UnifiedEncoder) encodeFilePatch(filePatches []FilePatch) error { - for _, p := range filePatches { - f, t := p.Files() - if err := e.header(f, t, p.IsBinary()); err != nil { - return err - } - - g := newHunksGenerator(p.Chunks(), e.ctxLines) - for _, c := range g.Generate() { - c.WriteTo(&e.buf) - } - } - - return nil -} - -func (e *UnifiedEncoder) printMessage(message string) { - isEmpty := message == "" - hasSuffix := strings.HasSuffix(message, "\n") - if !isEmpty && !hasSuffix { - message += "\n" - } - - e.buf.WriteString(message) -} - -func (e *UnifiedEncoder) header(from, to File, isBinary bool) error { - switch { - case from == nil && to == nil: - return nil - case from != nil && to != nil: - hashEquals := from.Hash() == to.Hash() - - fmt.Fprintf(&e.buf, diffInit, from.Path(), to.Path()) - - if from.Mode() != to.Mode() { - fmt.Fprintf(&e.buf, oldMode+newMode, from.Mode(), to.Mode()) - } - - if from.Path() != to.Path() { - fmt.Fprintf(&e.buf, - renameFileMode+renameFileMode, - renameFrom, from.Path(), renameTo, to.Path()) - } - - if from.Mode() != to.Mode() && !hashEquals { - fmt.Fprintf(&e.buf, indexNoMode, from.Hash(), to.Hash()) - } else if !hashEquals { - fmt.Fprintf(&e.buf, indexAndMode, from.Hash(), to.Hash(), from.Mode()) - } - - if !hashEquals { - e.pathLines(isBinary, aDir+from.Path(), bDir+to.Path()) - } - case from == nil: - fmt.Fprintf(&e.buf, diffInit, to.Path(), to.Path()) - fmt.Fprintf(&e.buf, newFileMode, to.Mode()) - fmt.Fprintf(&e.buf, indexNoMode, plumbing.ZeroHash, to.Hash()) - e.pathLines(isBinary, noFilePath, bDir+to.Path()) - case to == nil: - fmt.Fprintf(&e.buf, diffInit, from.Path(), from.Path()) - fmt.Fprintf(&e.buf, deletedFileMode, from.Mode()) - fmt.Fprintf(&e.buf, indexNoMode, from.Hash(), plumbing.ZeroHash) - e.pathLines(isBinary, aDir+from.Path(), noFilePath) - } - - return nil -} - -func (e *UnifiedEncoder) pathLines(isBinary bool, fromPath, toPath string) { - format := fPath + tPath - if isBinary { - format = binary - } - - fmt.Fprintf(&e.buf, format, fromPath, toPath) -} - -type hunksGenerator struct { - fromLine, toLine int - ctxLines int - chunks []Chunk - current *hunk - hunks []*hunk - beforeContext, afterContext []string -} - -func newHunksGenerator(chunks []Chunk, ctxLines int) *hunksGenerator { - return &hunksGenerator{ - chunks: chunks, - ctxLines: ctxLines, - } -} - -func (c *hunksGenerator) Generate() []*hunk { - for i, chunk := range c.chunks { - ls := splitLines(chunk.Content()) - lsLen := len(ls) - - switch chunk.Type() { - case Equal: - c.fromLine += lsLen - c.toLine += lsLen - c.processEqualsLines(ls, i) - case Delete: - if lsLen != 0 { - c.fromLine++ - } - - c.processHunk(i, chunk.Type()) - c.fromLine += lsLen - 1 - c.current.AddOp(chunk.Type(), ls...) - case Add: - if lsLen != 0 { - c.toLine++ - } - c.processHunk(i, chunk.Type()) - c.toLine += lsLen - 1 - c.current.AddOp(chunk.Type(), ls...) - } - - if i == len(c.chunks)-1 && c.current != nil { - c.hunks = append(c.hunks, c.current) - } - } - - return c.hunks -} - -func (c *hunksGenerator) processHunk(i int, op Operation) { - if c.current != nil { - return - } - - var ctxPrefix string - linesBefore := len(c.beforeContext) - if linesBefore > c.ctxLines { - ctxPrefix = " " + c.beforeContext[linesBefore-c.ctxLines-1] - c.beforeContext = c.beforeContext[linesBefore-c.ctxLines:] - linesBefore = c.ctxLines - } - - c.current = &hunk{ctxPrefix: ctxPrefix} - c.current.AddOp(Equal, c.beforeContext...) - - switch op { - case Delete: - c.current.fromLine, c.current.toLine = - c.addLineNumbers(c.fromLine, c.toLine, linesBefore, i, Add) - case Add: - c.current.toLine, c.current.fromLine = - c.addLineNumbers(c.toLine, c.fromLine, linesBefore, i, Delete) - } - - c.beforeContext = nil -} - -// addLineNumbers obtains the line numbers in a new chunk -func (c *hunksGenerator) addLineNumbers(la, lb int, linesBefore int, i int, op Operation) (cla, clb int) { - cla = la - linesBefore - // we need to search for a reference for the next diff - switch { - case linesBefore != 0 && c.ctxLines != 0: - if lb > c.ctxLines { - clb = lb - c.ctxLines + 1 - } else { - clb = 1 - } - case c.ctxLines == 0: - clb = lb - case i != len(c.chunks)-1: - next := c.chunks[i+1] - if next.Type() == op || next.Type() == Equal { - // this diff will be into this chunk - clb = lb + 1 - } - } - - return -} - -func (c *hunksGenerator) processEqualsLines(ls []string, i int) { - if c.current == nil { - c.beforeContext = append(c.beforeContext, ls...) - return - } - - c.afterContext = append(c.afterContext, ls...) - if len(c.afterContext) <= c.ctxLines*2 && i != len(c.chunks)-1 { - c.current.AddOp(Equal, c.afterContext...) - c.afterContext = nil - } else { - ctxLines := c.ctxLines - if ctxLines > len(c.afterContext) { - ctxLines = len(c.afterContext) - } - c.current.AddOp(Equal, c.afterContext[:ctxLines]...) - c.hunks = append(c.hunks, c.current) - - c.current = nil - c.beforeContext = c.afterContext[ctxLines:] - c.afterContext = nil - } -} - -func splitLines(s string) []string { - out := strings.Split(s, "\n") - if out[len(out)-1] == "" { - out = out[:len(out)-1] - } - - return out -} - -type hunk struct { - fromLine int - toLine int - - fromCount int - toCount int - - ctxPrefix string - ops []*op -} - -func (c *hunk) WriteTo(buf *bytes.Buffer) { - buf.WriteString(chunkStart) - - if c.fromCount == 1 { - fmt.Fprintf(buf, "%d", c.fromLine) - } else { - fmt.Fprintf(buf, chunkCount, c.fromLine, c.fromCount) - } - - buf.WriteString(chunkMiddle) - - if c.toCount == 1 { - fmt.Fprintf(buf, "%d", c.toLine) - } else { - fmt.Fprintf(buf, chunkCount, c.toLine, c.toCount) - } - - fmt.Fprintf(buf, chunkEnd, c.ctxPrefix) - - for _, d := range c.ops { - buf.WriteString(d.String()) - } -} - -func (c *hunk) AddOp(t Operation, s ...string) { - ls := len(s) - switch t { - case Add: - c.toCount += ls - case Delete: - c.fromCount += ls - case Equal: - c.toCount += ls - c.fromCount += ls - } - - for _, l := range s { - c.ops = append(c.ops, &op{l, t}) - } -} - -type op struct { - text string - t Operation -} - -func (o *op) String() string { - var prefix string - switch o.t { - case Add: - prefix = addLine - case Delete: - prefix = deleteLine - case Equal: - prefix = equalLine - } - - return fmt.Sprintf(prefix, o.text) -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/gitignore/dir.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/gitignore/dir.go deleted file mode 100644 index 1e88970..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/gitignore/dir.go +++ /dev/null @@ -1,136 +0,0 @@ -package gitignore - -import ( - "bytes" - "io/ioutil" - "os" - "os/user" - "strings" - - "gopkg.in/src-d/go-billy.v4" - "gopkg.in/src-d/go-git.v4/plumbing/format/config" - gioutil "gopkg.in/src-d/go-git.v4/utils/ioutil" -) - -const ( - commentPrefix = "#" - coreSection = "core" - eol = "\n" - excludesfile = "excludesfile" - gitDir = ".git" - gitignoreFile = ".gitignore" - gitconfigFile = ".gitconfig" - systemFile = "/etc/gitconfig" -) - -// readIgnoreFile reads a specific git ignore file. -func readIgnoreFile(fs billy.Filesystem, path []string, ignoreFile string) (ps []Pattern, err error) { - f, err := fs.Open(fs.Join(append(path, ignoreFile)...)) - if err == nil { - defer f.Close() - - if data, err := ioutil.ReadAll(f); err == nil { - for _, s := range strings.Split(string(data), eol) { - if !strings.HasPrefix(s, commentPrefix) && len(strings.TrimSpace(s)) > 0 { - ps = append(ps, ParsePattern(s, path)) - } - } - } - } else if !os.IsNotExist(err) { - return nil, err - } - - return -} - -// ReadPatterns reads gitignore patterns recursively traversing through the directory -// structure. The result is in the ascending order of priority (last higher). -func ReadPatterns(fs billy.Filesystem, path []string) (ps []Pattern, err error) { - ps, _ = readIgnoreFile(fs, path, gitignoreFile) - - var fis []os.FileInfo - fis, err = fs.ReadDir(fs.Join(path...)) - if err != nil { - return - } - - for _, fi := range fis { - if fi.IsDir() && fi.Name() != gitDir { - var subps []Pattern - subps, err = ReadPatterns(fs, append(path, fi.Name())) - if err != nil { - return - } - - if len(subps) > 0 { - ps = append(ps, subps...) - } - } - } - - return -} - -func loadPatterns(fs billy.Filesystem, path string) (ps []Pattern, err error) { - f, err := fs.Open(path) - if err != nil { - if os.IsNotExist(err) { - return nil, nil - } - return nil, err - } - - defer gioutil.CheckClose(f, &err) - - b, err := ioutil.ReadAll(f) - if err != nil { - return - } - - d := config.NewDecoder(bytes.NewBuffer(b)) - - raw := config.New() - if err = d.Decode(raw); err != nil { - return - } - - s := raw.Section(coreSection) - efo := s.Options.Get(excludesfile) - if efo == "" { - return nil, nil - } - - ps, err = readIgnoreFile(fs, nil, efo) - if os.IsNotExist(err) { - return nil, nil - } - - return -} - -// LoadGlobalPatterns loads gitignore patterns from from the gitignore file -// declared in a user's ~/.gitconfig file. If the ~/.gitconfig file does not -// exist the function will return nil. If the core.excludesfile property -// is not declared, the function will return nil. If the file pointed to by -// the core.excludesfile property does not exist, the function will return nil. -// -// The function assumes fs is rooted at the root filesystem. -func LoadGlobalPatterns(fs billy.Filesystem) (ps []Pattern, err error) { - usr, err := user.Current() - if err != nil { - return - } - - return loadPatterns(fs, fs.Join(usr.HomeDir, gitconfigFile)) -} - -// LoadSystemPatterns loads gitignore patterns from from the gitignore file -// declared in a system's /etc/gitconfig file. If the ~/.gitconfig file does -// not exist the function will return nil. If the core.excludesfile property -// is not declared, the function will return nil. If the file pointed to by -// the core.excludesfile property does not exist, the function will return nil. -// -// The function assumes fs is rooted at the root filesystem. -func LoadSystemPatterns(fs billy.Filesystem) (ps []Pattern, err error) { - return loadPatterns(fs, systemFile) -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/gitignore/doc.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/gitignore/doc.go deleted file mode 100644 index eecd4ba..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/gitignore/doc.go +++ /dev/null @@ -1,70 +0,0 @@ -// Package gitignore implements matching file system paths to gitignore patterns that -// can be automatically read from a git repository tree in the order of definition -// priorities. It support all pattern formats as specified in the original gitignore -// documentation, copied below: -// -// Pattern format -// ============== -// -// - A blank line matches no files, so it can serve as a separator for readability. -// -// - A line starting with # serves as a comment. Put a backslash ("\") in front of -// the first hash for patterns that begin with a hash. -// -// - Trailing spaces are ignored unless they are quoted with backslash ("\"). -// -// - An optional prefix "!" which negates the pattern; any matching file excluded -// by a previous pattern will become included again. It is not possible to -// re-include a file if a parent directory of that file is excluded. -// Git doesn’t list excluded directories for performance reasons, so -// any patterns on contained files have no effect, no matter where they are -// defined. Put a backslash ("\") in front of the first "!" for patterns -// that begin with a literal "!", for example, "\!important!.txt". -// -// - If the pattern ends with a slash, it is removed for the purpose of the -// following description, but it would only find a match with a directory. -// In other words, foo/ will match a directory foo and paths underneath it, -// but will not match a regular file or a symbolic link foo (this is consistent -// with the way how pathspec works in general in Git). -// -// - If the pattern does not contain a slash /, Git treats it as a shell glob -// pattern and checks for a match against the pathname relative to the location -// of the .gitignore file (relative to the toplevel of the work tree if not -// from a .gitignore file). -// -// - Otherwise, Git treats the pattern as a shell glob suitable for consumption -// by fnmatch(3) with the FNM_PATHNAME flag: wildcards in the pattern will -// not match a / in the pathname. For example, "Documentation/*.html" matches -// "Documentation/git.html" but not "Documentation/ppc/ppc.html" or -// "tools/perf/Documentation/perf.html". -// -// - A leading slash matches the beginning of the pathname. For example, -// "/*.c" matches "cat-file.c" but not "mozilla-sha1/sha1.c". -// -// Two consecutive asterisks ("**") in patterns matched against full pathname -// may have special meaning: -// -// - A leading "**" followed by a slash means match in all directories. -// For example, "**/foo" matches file or directory "foo" anywhere, the same as -// pattern "foo". "**/foo/bar" matches file or directory "bar" -// anywhere that is directly under directory "foo". -// -// - A trailing "/**" matches everything inside. For example, "abc/**" matches -// all files inside directory "abc", relative to the location of the -// .gitignore file, with infinite depth. -// -// - A slash followed by two consecutive asterisks then a slash matches -// zero or more directories. For example, "a/**/b" matches "a/b", "a/x/b", -// "a/x/y/b" and so on. -// -// - Other consecutive asterisks are considered invalid. -// -// Copyright and license -// ===================== -// -// Copyright (c) Oleg Sklyar, Silvertern and source{d} -// -// The package code was donated to source{d} to include, modify and develop -// further as a part of the `go-git` project, release it on the license of -// the whole project or delete it from the project. -package gitignore diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/gitignore/matcher.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/gitignore/matcher.go deleted file mode 100644 index bd1e9e2..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/gitignore/matcher.go +++ /dev/null @@ -1,30 +0,0 @@ -package gitignore - -// Matcher defines a global multi-pattern matcher for gitignore patterns -type Matcher interface { - // Match matches patterns in the order of priorities. As soon as an inclusion or - // exclusion is found, not further matching is performed. - Match(path []string, isDir bool) bool -} - -// NewMatcher constructs a new global matcher. Patterns must be given in the order of -// increasing priority. That is most generic settings files first, then the content of -// the repo .gitignore, then content of .gitignore down the path or the repo and then -// the content command line arguments. -func NewMatcher(ps []Pattern) Matcher { - return &matcher{ps} -} - -type matcher struct { - patterns []Pattern -} - -func (m *matcher) Match(path []string, isDir bool) bool { - n := len(m.patterns) - for i := n - 1; i >= 0; i-- { - if match := m.patterns[i].Match(path, isDir); match > NoMatch { - return match == Exclude - } - } - return false -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/gitignore/pattern.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/gitignore/pattern.go deleted file mode 100644 index 098cb50..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/gitignore/pattern.go +++ /dev/null @@ -1,153 +0,0 @@ -package gitignore - -import ( - "path/filepath" - "strings" -) - -// MatchResult defines outcomes of a match, no match, exclusion or inclusion. -type MatchResult int - -const ( - // NoMatch defines the no match outcome of a match check - NoMatch MatchResult = iota - // Exclude defines an exclusion of a file as a result of a match check - Exclude - // Include defines an explicit inclusion of a file as a result of a match check - Include -) - -const ( - inclusionPrefix = "!" - zeroToManyDirs = "**" - patternDirSep = "/" -) - -// Pattern defines a single gitignore pattern. -type Pattern interface { - // Match matches the given path to the pattern. - Match(path []string, isDir bool) MatchResult -} - -type pattern struct { - domain []string - pattern []string - inclusion bool - dirOnly bool - isGlob bool -} - -// ParsePattern parses a gitignore pattern string into the Pattern structure. -func ParsePattern(p string, domain []string) Pattern { - res := pattern{domain: domain} - - if strings.HasPrefix(p, inclusionPrefix) { - res.inclusion = true - p = p[1:] - } - - if !strings.HasSuffix(p, "\\ ") { - p = strings.TrimRight(p, " ") - } - - if strings.HasSuffix(p, patternDirSep) { - res.dirOnly = true - p = p[:len(p)-1] - } - - if strings.Contains(p, patternDirSep) { - res.isGlob = true - } - - res.pattern = strings.Split(p, patternDirSep) - return &res -} - -func (p *pattern) Match(path []string, isDir bool) MatchResult { - if len(path) <= len(p.domain) { - return NoMatch - } - for i, e := range p.domain { - if path[i] != e { - return NoMatch - } - } - - path = path[len(p.domain):] - if p.isGlob && !p.globMatch(path, isDir) { - return NoMatch - } else if !p.isGlob && !p.simpleNameMatch(path, isDir) { - return NoMatch - } - - if p.inclusion { - return Include - } else { - return Exclude - } -} - -func (p *pattern) simpleNameMatch(path []string, isDir bool) bool { - for i, name := range path { - if match, err := filepath.Match(p.pattern[0], name); err != nil { - return false - } else if !match { - continue - } - if p.dirOnly && !isDir && i == len(path)-1 { - return false - } - return true - } - return false -} - -func (p *pattern) globMatch(path []string, isDir bool) bool { - matched := false - canTraverse := false - for i, pattern := range p.pattern { - if pattern == "" { - canTraverse = false - continue - } - if pattern == zeroToManyDirs { - if i == len(p.pattern)-1 { - break - } - canTraverse = true - continue - } - if strings.Contains(pattern, zeroToManyDirs) { - return false - } - if len(path) == 0 { - return false - } - if canTraverse { - canTraverse = false - for len(path) > 0 { - e := path[0] - path = path[1:] - if match, err := filepath.Match(pattern, e); err != nil { - return false - } else if match { - matched = true - break - } else if len(path) == 0 { - // if nothing left then fail - matched = false - } - } - } else { - if match, err := filepath.Match(pattern, path[0]); err != nil || !match { - return false - } - matched = true - path = path[1:] - } - } - if matched && p.dirOnly && !isDir && len(path) == 0 { - matched = false - } - return matched -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/idxfile/decoder.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/idxfile/decoder.go deleted file mode 100644 index 9e9c176..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/idxfile/decoder.go +++ /dev/null @@ -1,177 +0,0 @@ -package idxfile - -import ( - "bufio" - "bytes" - "errors" - "io" - - "gopkg.in/src-d/go-git.v4/utils/binary" -) - -var ( - // ErrUnsupportedVersion is returned by Decode when the idx file version - // is not supported. - ErrUnsupportedVersion = errors.New("Unsuported version") - // ErrMalformedIdxFile is returned by Decode when the idx file is corrupted. - ErrMalformedIdxFile = errors.New("Malformed IDX file") -) - -const ( - fanout = 256 - objectIDLength = 20 -) - -// Decoder reads and decodes idx files from an input stream. -type Decoder struct { - *bufio.Reader -} - -// NewDecoder builds a new idx stream decoder, that reads from r. -func NewDecoder(r io.Reader) *Decoder { - return &Decoder{bufio.NewReader(r)} -} - -// Decode reads from the stream and decode the content into the MemoryIndex struct. -func (d *Decoder) Decode(idx *MemoryIndex) error { - if err := validateHeader(d); err != nil { - return err - } - - flow := []func(*MemoryIndex, io.Reader) error{ - readVersion, - readFanout, - readObjectNames, - readCRC32, - readOffsets, - readChecksums, - } - - for _, f := range flow { - if err := f(idx, d); err != nil { - return err - } - } - - return nil -} - -func validateHeader(r io.Reader) error { - var h = make([]byte, 4) - if _, err := io.ReadFull(r, h); err != nil { - return err - } - - if !bytes.Equal(h, idxHeader) { - return ErrMalformedIdxFile - } - - return nil -} - -func readVersion(idx *MemoryIndex, r io.Reader) error { - v, err := binary.ReadUint32(r) - if err != nil { - return err - } - - if v > VersionSupported { - return ErrUnsupportedVersion - } - - idx.Version = v - return nil -} - -func readFanout(idx *MemoryIndex, r io.Reader) error { - for k := 0; k < fanout; k++ { - n, err := binary.ReadUint32(r) - if err != nil { - return err - } - - idx.Fanout[k] = n - idx.FanoutMapping[k] = noMapping - } - - return nil -} - -func readObjectNames(idx *MemoryIndex, r io.Reader) error { - for k := 0; k < fanout; k++ { - var buckets uint32 - if k == 0 { - buckets = idx.Fanout[k] - } else { - buckets = idx.Fanout[k] - idx.Fanout[k-1] - } - - if buckets == 0 { - continue - } - - idx.FanoutMapping[k] = len(idx.Names) - - nameLen := int(buckets * objectIDLength) - bin := make([]byte, nameLen) - if _, err := io.ReadFull(r, bin); err != nil { - return err - } - - idx.Names = append(idx.Names, bin) - idx.Offset32 = append(idx.Offset32, make([]byte, buckets*4)) - idx.CRC32 = append(idx.CRC32, make([]byte, buckets*4)) - } - - return nil -} - -func readCRC32(idx *MemoryIndex, r io.Reader) error { - for k := 0; k < fanout; k++ { - if pos := idx.FanoutMapping[k]; pos != noMapping { - if _, err := io.ReadFull(r, idx.CRC32[pos]); err != nil { - return err - } - } - } - - return nil -} - -func readOffsets(idx *MemoryIndex, r io.Reader) error { - var o64cnt int - for k := 0; k < fanout; k++ { - if pos := idx.FanoutMapping[k]; pos != noMapping { - if _, err := io.ReadFull(r, idx.Offset32[pos]); err != nil { - return err - } - - for p := 0; p < len(idx.Offset32[pos]); p += 4 { - if idx.Offset32[pos][p]&(byte(1)<<7) > 0 { - o64cnt++ - } - } - } - } - - if o64cnt > 0 { - idx.Offset64 = make([]byte, o64cnt*8) - if _, err := io.ReadFull(r, idx.Offset64); err != nil { - return err - } - } - - return nil -} - -func readChecksums(idx *MemoryIndex, r io.Reader) error { - if _, err := io.ReadFull(r, idx.PackfileChecksum[:]); err != nil { - return err - } - - if _, err := io.ReadFull(r, idx.IdxChecksum[:]); err != nil { - return err - } - - return nil -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/idxfile/doc.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/idxfile/doc.go deleted file mode 100644 index 1e628ab..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/idxfile/doc.go +++ /dev/null @@ -1,128 +0,0 @@ -// Package idxfile implements encoding and decoding of packfile idx files. -// -// == Original (version 1) pack-*.idx files have the following format: -// -// - The header consists of 256 4-byte network byte order -// integers. N-th entry of this table records the number of -// objects in the corresponding pack, the first byte of whose -// object name is less than or equal to N. This is called the -// 'first-level fan-out' table. -// -// - The header is followed by sorted 24-byte entries, one entry -// per object in the pack. Each entry is: -// -// 4-byte network byte order integer, recording where the -// object is stored in the packfile as the offset from the -// beginning. -// -// 20-byte object name. -// -// - The file is concluded with a trailer: -// -// A copy of the 20-byte SHA1 checksum at the end of -// corresponding packfile. -// -// 20-byte SHA1-checksum of all of the above. -// -// Pack Idx file: -// -// -- +--------------------------------+ -// fanout | fanout[0] = 2 (for example) |-. -// table +--------------------------------+ | -// | fanout[1] | | -// +--------------------------------+ | -// | fanout[2] | | -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | -// | fanout[255] = total objects |---. -// -- +--------------------------------+ | | -// main | offset | | | -// index | object name 00XXXXXXXXXXXXXXXX | | | -// tab +--------------------------------+ | | -// | offset | | | -// | object name 00XXXXXXXXXXXXXXXX | | | -// +--------------------------------+<+ | -// .-| offset | | -// | | object name 01XXXXXXXXXXXXXXXX | | -// | +--------------------------------+ | -// | | offset | | -// | | object name 01XXXXXXXXXXXXXXXX | | -// | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | -// | | offset | | -// | | object name FFXXXXXXXXXXXXXXXX | | -// --| +--------------------------------+<--+ -// trailer | | packfile checksum | -// | +--------------------------------+ -// | | idxfile checksum | -// | +--------------------------------+ -// .---------. -// | -// Pack file entry: <+ -// -// packed object header: -// 1-byte size extension bit (MSB) -// type (next 3 bit) -// size0 (lower 4-bit) -// n-byte sizeN (as long as MSB is set, each 7-bit) -// size0..sizeN form 4+7+7+..+7 bit integer, size0 -// is the least significant part, and sizeN is the -// most significant part. -// packed object data: -// If it is not DELTA, then deflated bytes (the size above -// is the size before compression). -// If it is REF_DELTA, then -// 20-byte base object name SHA1 (the size above is the -// size of the delta data that follows). -// delta data, deflated. -// If it is OFS_DELTA, then -// n-byte offset (see below) interpreted as a negative -// offset from the type-byte of the header of the -// ofs-delta entry (the size above is the size of -// the delta data that follows). -// delta data, deflated. -// -// offset encoding: -// n bytes with MSB set in all but the last one. -// The offset is then the number constructed by -// concatenating the lower 7 bit of each byte, and -// for n >= 2 adding 2^7 + 2^14 + ... + 2^(7*(n-1)) -// to the result. -// -// == Version 2 pack-*.idx files support packs larger than 4 GiB, and -// have some other reorganizations. They have the format: -// -// - A 4-byte magic number '\377tOc' which is an unreasonable -// fanout[0] value. -// -// - A 4-byte version number (= 2) -// -// - A 256-entry fan-out table just like v1. -// -// - A table of sorted 20-byte SHA1 object names. These are -// packed together without offset values to reduce the cache -// footprint of the binary search for a specific object name. -// -// - A table of 4-byte CRC32 values of the packed object data. -// This is new in v2 so compressed data can be copied directly -// from pack to pack during repacking without undetected -// data corruption. -// -// - A table of 4-byte offset values (in network byte order). -// These are usually 31-bit pack file offsets, but large -// offsets are encoded as an index into the next table with -// the msbit set. -// -// - A table of 8-byte offset entries (empty for pack files less -// than 2 GiB). Pack files are organized with heavily used -// objects toward the front, so most object references should -// not need to refer to this table. -// -// - The same trailer as a v1 pack file: -// -// A copy of the 20-byte SHA1 checksum at the end of -// corresponding packfile. -// -// 20-byte SHA1-checksum of all of the above. -// -// Source: -// https://www.kernel.org/pub/software/scm/git/docs/v1.7.5/technical/pack-format.txt -package idxfile diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/idxfile/encoder.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/idxfile/encoder.go deleted file mode 100644 index e479511..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/idxfile/encoder.go +++ /dev/null @@ -1,142 +0,0 @@ -package idxfile - -import ( - "crypto/sha1" - "hash" - "io" - - "gopkg.in/src-d/go-git.v4/utils/binary" -) - -// Encoder writes MemoryIndex structs to an output stream. -type Encoder struct { - io.Writer - hash hash.Hash -} - -// NewEncoder returns a new stream encoder that writes to w. -func NewEncoder(w io.Writer) *Encoder { - h := sha1.New() - mw := io.MultiWriter(w, h) - return &Encoder{mw, h} -} - -// Encode encodes an MemoryIndex to the encoder writer. -func (e *Encoder) Encode(idx *MemoryIndex) (int, error) { - flow := []func(*MemoryIndex) (int, error){ - e.encodeHeader, - e.encodeFanout, - e.encodeHashes, - e.encodeCRC32, - e.encodeOffsets, - e.encodeChecksums, - } - - sz := 0 - for _, f := range flow { - i, err := f(idx) - sz += i - - if err != nil { - return sz, err - } - } - - return sz, nil -} - -func (e *Encoder) encodeHeader(idx *MemoryIndex) (int, error) { - c, err := e.Write(idxHeader) - if err != nil { - return c, err - } - - return c + 4, binary.WriteUint32(e, idx.Version) -} - -func (e *Encoder) encodeFanout(idx *MemoryIndex) (int, error) { - for _, c := range idx.Fanout { - if err := binary.WriteUint32(e, c); err != nil { - return 0, err - } - } - - return fanout * 4, nil -} - -func (e *Encoder) encodeHashes(idx *MemoryIndex) (int, error) { - var size int - for k := 0; k < fanout; k++ { - pos := idx.FanoutMapping[k] - if pos == noMapping { - continue - } - - n, err := e.Write(idx.Names[pos]) - if err != nil { - return size, err - } - size += n - } - return size, nil -} - -func (e *Encoder) encodeCRC32(idx *MemoryIndex) (int, error) { - var size int - for k := 0; k < fanout; k++ { - pos := idx.FanoutMapping[k] - if pos == noMapping { - continue - } - - n, err := e.Write(idx.CRC32[pos]) - if err != nil { - return size, err - } - - size += n - } - - return size, nil -} - -func (e *Encoder) encodeOffsets(idx *MemoryIndex) (int, error) { - var size int - for k := 0; k < fanout; k++ { - pos := idx.FanoutMapping[k] - if pos == noMapping { - continue - } - - n, err := e.Write(idx.Offset32[pos]) - if err != nil { - return size, err - } - - size += n - } - - if len(idx.Offset64) > 0 { - n, err := e.Write(idx.Offset64) - if err != nil { - return size, err - } - - size += n - } - - return size, nil -} - -func (e *Encoder) encodeChecksums(idx *MemoryIndex) (int, error) { - if _, err := e.Write(idx.PackfileChecksum[:]); err != nil { - return 0, err - } - - copy(idx.IdxChecksum[:], e.hash.Sum(nil)[:20]) - if _, err := e.Write(idx.IdxChecksum[:]); err != nil { - return 0, err - } - - return 40, nil -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/idxfile/idxfile.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/idxfile/idxfile.go deleted file mode 100644 index 14b5860..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/idxfile/idxfile.go +++ /dev/null @@ -1,346 +0,0 @@ -package idxfile - -import ( - "bytes" - "io" - "sort" - - encbin "encoding/binary" - - "gopkg.in/src-d/go-git.v4/plumbing" -) - -const ( - // VersionSupported is the only idx version supported. - VersionSupported = 2 - - noMapping = -1 -) - -var ( - idxHeader = []byte{255, 't', 'O', 'c'} -) - -// Index represents an index of a packfile. -type Index interface { - // Contains checks whether the given hash is in the index. - Contains(h plumbing.Hash) (bool, error) - // FindOffset finds the offset in the packfile for the object with - // the given hash. - FindOffset(h plumbing.Hash) (int64, error) - // FindCRC32 finds the CRC32 of the object with the given hash. - FindCRC32(h plumbing.Hash) (uint32, error) - // FindHash finds the hash for the object with the given offset. - FindHash(o int64) (plumbing.Hash, error) - // Count returns the number of entries in the index. - Count() (int64, error) - // Entries returns an iterator to retrieve all index entries. - Entries() (EntryIter, error) - // EntriesByOffset returns an iterator to retrieve all index entries ordered - // by offset. - EntriesByOffset() (EntryIter, error) -} - -// MemoryIndex is the in memory representation of an idx file. -type MemoryIndex struct { - Version uint32 - Fanout [256]uint32 - // FanoutMapping maps the position in the fanout table to the position - // in the Names, Offset32 and CRC32 slices. This improves the memory - // usage by not needing an array with unnecessary empty slots. - FanoutMapping [256]int - Names [][]byte - Offset32 [][]byte - CRC32 [][]byte - Offset64 []byte - PackfileChecksum [20]byte - IdxChecksum [20]byte - - offsetHash map[int64]plumbing.Hash - offsetHashIsFull bool -} - -var _ Index = (*MemoryIndex)(nil) - -// NewMemoryIndex returns an instance of a new MemoryIndex. -func NewMemoryIndex() *MemoryIndex { - return &MemoryIndex{} -} - -func (idx *MemoryIndex) findHashIndex(h plumbing.Hash) (int, bool) { - k := idx.FanoutMapping[h[0]] - if k == noMapping { - return 0, false - } - - if len(idx.Names) <= k { - return 0, false - } - - data := idx.Names[k] - high := uint64(len(idx.Offset32[k])) >> 2 - if high == 0 { - return 0, false - } - - low := uint64(0) - for { - mid := (low + high) >> 1 - offset := mid * objectIDLength - - cmp := bytes.Compare(h[:], data[offset:offset+objectIDLength]) - if cmp < 0 { - high = mid - } else if cmp == 0 { - return int(mid), true - } else { - low = mid + 1 - } - - if low >= high { - break - } - } - - return 0, false -} - -// Contains implements the Index interface. -func (idx *MemoryIndex) Contains(h plumbing.Hash) (bool, error) { - _, ok := idx.findHashIndex(h) - return ok, nil -} - -// FindOffset implements the Index interface. -func (idx *MemoryIndex) FindOffset(h plumbing.Hash) (int64, error) { - if len(idx.FanoutMapping) <= int(h[0]) { - return 0, plumbing.ErrObjectNotFound - } - - k := idx.FanoutMapping[h[0]] - i, ok := idx.findHashIndex(h) - if !ok { - return 0, plumbing.ErrObjectNotFound - } - - offset := idx.getOffset(k, i) - - if !idx.offsetHashIsFull { - // Save the offset for reverse lookup - if idx.offsetHash == nil { - idx.offsetHash = make(map[int64]plumbing.Hash) - } - idx.offsetHash[int64(offset)] = h - } - - return int64(offset), nil -} - -const isO64Mask = uint64(1) << 31 - -func (idx *MemoryIndex) getOffset(firstLevel, secondLevel int) uint64 { - offset := secondLevel << 2 - ofs := encbin.BigEndian.Uint32(idx.Offset32[firstLevel][offset : offset+4]) - - if (uint64(ofs) & isO64Mask) != 0 { - offset := 8 * (uint64(ofs) & ^isO64Mask) - n := encbin.BigEndian.Uint64(idx.Offset64[offset : offset+8]) - return n - } - - return uint64(ofs) -} - -// FindCRC32 implements the Index interface. -func (idx *MemoryIndex) FindCRC32(h plumbing.Hash) (uint32, error) { - k := idx.FanoutMapping[h[0]] - i, ok := idx.findHashIndex(h) - if !ok { - return 0, plumbing.ErrObjectNotFound - } - - return idx.getCRC32(k, i), nil -} - -func (idx *MemoryIndex) getCRC32(firstLevel, secondLevel int) uint32 { - offset := secondLevel << 2 - return encbin.BigEndian.Uint32(idx.CRC32[firstLevel][offset : offset+4]) -} - -// FindHash implements the Index interface. -func (idx *MemoryIndex) FindHash(o int64) (plumbing.Hash, error) { - var hash plumbing.Hash - var ok bool - - if idx.offsetHash != nil { - if hash, ok = idx.offsetHash[o]; ok { - return hash, nil - } - } - - // Lazily generate the reverse offset/hash map if required. - if !idx.offsetHashIsFull || idx.offsetHash == nil { - if err := idx.genOffsetHash(); err != nil { - return plumbing.ZeroHash, err - } - - hash, ok = idx.offsetHash[o] - } - - if !ok { - return plumbing.ZeroHash, plumbing.ErrObjectNotFound - } - - return hash, nil -} - -// genOffsetHash generates the offset/hash mapping for reverse search. -func (idx *MemoryIndex) genOffsetHash() error { - count, err := idx.Count() - if err != nil { - return err - } - - idx.offsetHash = make(map[int64]plumbing.Hash, count) - idx.offsetHashIsFull = true - - var hash plumbing.Hash - i := uint32(0) - for firstLevel, fanoutValue := range idx.Fanout { - mappedFirstLevel := idx.FanoutMapping[firstLevel] - for secondLevel := uint32(0); i < fanoutValue; i++ { - copy(hash[:], idx.Names[mappedFirstLevel][secondLevel*objectIDLength:]) - offset := int64(idx.getOffset(mappedFirstLevel, int(secondLevel))) - idx.offsetHash[offset] = hash - secondLevel++ - } - } - - return nil -} - -// Count implements the Index interface. -func (idx *MemoryIndex) Count() (int64, error) { - return int64(idx.Fanout[fanout-1]), nil -} - -// Entries implements the Index interface. -func (idx *MemoryIndex) Entries() (EntryIter, error) { - return &idxfileEntryIter{idx, 0, 0, 0}, nil -} - -// EntriesByOffset implements the Index interface. -func (idx *MemoryIndex) EntriesByOffset() (EntryIter, error) { - count, err := idx.Count() - if err != nil { - return nil, err - } - - iter := &idxfileEntryOffsetIter{ - entries: make(entriesByOffset, count), - } - - entries, err := idx.Entries() - if err != nil { - return nil, err - } - - for pos := 0; int64(pos) < count; pos++ { - entry, err := entries.Next() - if err != nil { - return nil, err - } - - iter.entries[pos] = entry - } - - sort.Sort(iter.entries) - - return iter, nil -} - -// EntryIter is an iterator that will return the entries in a packfile index. -type EntryIter interface { - // Next returns the next entry in the packfile index. - Next() (*Entry, error) - // Close closes the iterator. - Close() error -} - -type idxfileEntryIter struct { - idx *MemoryIndex - total int - firstLevel, secondLevel int -} - -func (i *idxfileEntryIter) Next() (*Entry, error) { - for { - if i.firstLevel >= fanout { - return nil, io.EOF - } - - if i.total >= int(i.idx.Fanout[i.firstLevel]) { - i.firstLevel++ - i.secondLevel = 0 - continue - } - - mappedFirstLevel := i.idx.FanoutMapping[i.firstLevel] - entry := new(Entry) - copy(entry.Hash[:], i.idx.Names[mappedFirstLevel][i.secondLevel*objectIDLength:]) - entry.Offset = i.idx.getOffset(mappedFirstLevel, i.secondLevel) - entry.CRC32 = i.idx.getCRC32(mappedFirstLevel, i.secondLevel) - - i.secondLevel++ - i.total++ - - return entry, nil - } -} - -func (i *idxfileEntryIter) Close() error { - i.firstLevel = fanout - return nil -} - -// Entry is the in memory representation of an object entry in the idx file. -type Entry struct { - Hash plumbing.Hash - CRC32 uint32 - Offset uint64 -} - -type idxfileEntryOffsetIter struct { - entries entriesByOffset - pos int -} - -func (i *idxfileEntryOffsetIter) Next() (*Entry, error) { - if i.pos >= len(i.entries) { - return nil, io.EOF - } - - entry := i.entries[i.pos] - i.pos++ - - return entry, nil -} - -func (i *idxfileEntryOffsetIter) Close() error { - i.pos = len(i.entries) + 1 - return nil -} - -type entriesByOffset []*Entry - -func (o entriesByOffset) Len() int { - return len(o) -} - -func (o entriesByOffset) Less(i int, j int) bool { - return o[i].Offset < o[j].Offset -} - -func (o entriesByOffset) Swap(i int, j int) { - o[i], o[j] = o[j], o[i] -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/idxfile/writer.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/idxfile/writer.go deleted file mode 100644 index fcc78c5..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/idxfile/writer.go +++ /dev/null @@ -1,186 +0,0 @@ -package idxfile - -import ( - "bytes" - "fmt" - "math" - "sort" - "sync" - - "gopkg.in/src-d/go-git.v4/plumbing" - "gopkg.in/src-d/go-git.v4/utils/binary" -) - -// objects implements sort.Interface and uses hash as sorting key. -type objects []Entry - -// Writer implements a packfile Observer interface and is used to generate -// indexes. -type Writer struct { - m sync.Mutex - - count uint32 - checksum plumbing.Hash - objects objects - offset64 uint32 - finished bool - index *MemoryIndex - added map[plumbing.Hash]struct{} -} - -// Index returns a previously created MemoryIndex or creates a new one if -// needed. -func (w *Writer) Index() (*MemoryIndex, error) { - w.m.Lock() - defer w.m.Unlock() - - if w.index == nil { - return w.createIndex() - } - - return w.index, nil -} - -// Add appends new object data. -func (w *Writer) Add(h plumbing.Hash, pos uint64, crc uint32) { - w.m.Lock() - defer w.m.Unlock() - - if w.added == nil { - w.added = make(map[plumbing.Hash]struct{}) - } - - if _, ok := w.added[h]; !ok { - w.added[h] = struct{}{} - w.objects = append(w.objects, Entry{h, crc, pos}) - } - -} - -func (w *Writer) Finished() bool { - return w.finished -} - -// OnHeader implements packfile.Observer interface. -func (w *Writer) OnHeader(count uint32) error { - w.count = count - w.objects = make(objects, 0, count) - return nil -} - -// OnInflatedObjectHeader implements packfile.Observer interface. -func (w *Writer) OnInflatedObjectHeader(t plumbing.ObjectType, objSize int64, pos int64) error { - return nil -} - -// OnInflatedObjectContent implements packfile.Observer interface. -func (w *Writer) OnInflatedObjectContent(h plumbing.Hash, pos int64, crc uint32, _ []byte) error { - w.Add(h, uint64(pos), crc) - return nil -} - -// OnFooter implements packfile.Observer interface. -func (w *Writer) OnFooter(h plumbing.Hash) error { - w.checksum = h - w.finished = true - _, err := w.createIndex() - if err != nil { - return err - } - - return nil -} - -// creatIndex returns a filled MemoryIndex with the information filled by -// the observer callbacks. -func (w *Writer) createIndex() (*MemoryIndex, error) { - if !w.finished { - return nil, fmt.Errorf("the index still hasn't finished building") - } - - idx := new(MemoryIndex) - w.index = idx - - sort.Sort(w.objects) - - // unmap all fans by default - for i := range idx.FanoutMapping { - idx.FanoutMapping[i] = noMapping - } - - buf := new(bytes.Buffer) - - last := -1 - bucket := -1 - for i, o := range w.objects { - fan := o.Hash[0] - - // fill the gaps between fans - for j := last + 1; j < int(fan); j++ { - idx.Fanout[j] = uint32(i) - } - - // update the number of objects for this position - idx.Fanout[fan] = uint32(i + 1) - - // we move from one bucket to another, update counters and allocate - // memory - if last != int(fan) { - bucket++ - idx.FanoutMapping[fan] = bucket - last = int(fan) - - idx.Names = append(idx.Names, make([]byte, 0)) - idx.Offset32 = append(idx.Offset32, make([]byte, 0)) - idx.CRC32 = append(idx.CRC32, make([]byte, 0)) - } - - idx.Names[bucket] = append(idx.Names[bucket], o.Hash[:]...) - - offset := o.Offset - if offset > math.MaxInt32 { - offset = w.addOffset64(offset) - } - - buf.Truncate(0) - binary.WriteUint32(buf, uint32(offset)) - idx.Offset32[bucket] = append(idx.Offset32[bucket], buf.Bytes()...) - - buf.Truncate(0) - binary.WriteUint32(buf, o.CRC32) - idx.CRC32[bucket] = append(idx.CRC32[bucket], buf.Bytes()...) - } - - for j := last + 1; j < 256; j++ { - idx.Fanout[j] = uint32(len(w.objects)) - } - - idx.Version = VersionSupported - idx.PackfileChecksum = w.checksum - - return idx, nil -} - -func (w *Writer) addOffset64(pos uint64) uint64 { - buf := new(bytes.Buffer) - binary.WriteUint64(buf, pos) - w.index.Offset64 = append(w.index.Offset64, buf.Bytes()...) - - index := uint64(w.offset64 | (1 << 31)) - w.offset64++ - - return index -} - -func (o objects) Len() int { - return len(o) -} - -func (o objects) Less(i int, j int) bool { - cmp := bytes.Compare(o[i].Hash[:], o[j].Hash[:]) - return cmp < 0 -} - -func (o objects) Swap(i int, j int) { - o[i], o[j] = o[j], o[i] -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/index/decoder.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/index/decoder.go deleted file mode 100644 index 98f92fd..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/index/decoder.go +++ /dev/null @@ -1,477 +0,0 @@ -package index - -import ( - "bufio" - "bytes" - "crypto/sha1" - "errors" - "hash" - "io" - "io/ioutil" - "strconv" - "time" - - "gopkg.in/src-d/go-git.v4/plumbing" - "gopkg.in/src-d/go-git.v4/utils/binary" -) - -var ( - // DecodeVersionSupported is the range of supported index versions - DecodeVersionSupported = struct{ Min, Max uint32 }{Min: 2, Max: 4} - - // ErrMalformedSignature is returned by Decode when the index header file is - // malformed - ErrMalformedSignature = errors.New("malformed index signature file") - // ErrInvalidChecksum is returned by Decode if the SHA1 hash mismatch with - // the read content - ErrInvalidChecksum = errors.New("invalid checksum") - - errUnknownExtension = errors.New("unknown extension") -) - -const ( - entryHeaderLength = 62 - entryExtended = 0x4000 - entryValid = 0x8000 - nameMask = 0xfff - intentToAddMask = 1 << 13 - skipWorkTreeMask = 1 << 14 -) - -// A Decoder reads and decodes index files from an input stream. -type Decoder struct { - r io.Reader - hash hash.Hash - lastEntry *Entry - - extReader *bufio.Reader -} - -// NewDecoder returns a new decoder that reads from r. -func NewDecoder(r io.Reader) *Decoder { - h := sha1.New() - return &Decoder{ - r: io.TeeReader(r, h), - hash: h, - extReader: bufio.NewReader(nil), - } -} - -// Decode reads the whole index object from its input and stores it in the -// value pointed to by idx. -func (d *Decoder) Decode(idx *Index) error { - var err error - idx.Version, err = validateHeader(d.r) - if err != nil { - return err - } - - entryCount, err := binary.ReadUint32(d.r) - if err != nil { - return err - } - - if err := d.readEntries(idx, int(entryCount)); err != nil { - return err - } - - return d.readExtensions(idx) -} - -func (d *Decoder) readEntries(idx *Index, count int) error { - for i := 0; i < count; i++ { - e, err := d.readEntry(idx) - if err != nil { - return err - } - - d.lastEntry = e - idx.Entries = append(idx.Entries, e) - } - - return nil -} - -func (d *Decoder) readEntry(idx *Index) (*Entry, error) { - e := &Entry{} - - var msec, mnsec, sec, nsec uint32 - var flags uint16 - - flow := []interface{}{ - &sec, &nsec, - &msec, &mnsec, - &e.Dev, - &e.Inode, - &e.Mode, - &e.UID, - &e.GID, - &e.Size, - &e.Hash, - &flags, - } - - if err := binary.Read(d.r, flow...); err != nil { - return nil, err - } - - read := entryHeaderLength - - if sec != 0 || nsec != 0 { - e.CreatedAt = time.Unix(int64(sec), int64(nsec)) - } - - if msec != 0 || mnsec != 0 { - e.ModifiedAt = time.Unix(int64(msec), int64(mnsec)) - } - - e.Stage = Stage(flags>>12) & 0x3 - - if flags&entryExtended != 0 { - extended, err := binary.ReadUint16(d.r) - if err != nil { - return nil, err - } - - read += 2 - e.IntentToAdd = extended&intentToAddMask != 0 - e.SkipWorktree = extended&skipWorkTreeMask != 0 - } - - if err := d.readEntryName(idx, e, flags); err != nil { - return nil, err - } - - return e, d.padEntry(idx, e, read) -} - -func (d *Decoder) readEntryName(idx *Index, e *Entry, flags uint16) error { - var name string - var err error - - switch idx.Version { - case 2, 3: - len := flags & nameMask - name, err = d.doReadEntryName(len) - case 4: - name, err = d.doReadEntryNameV4() - default: - return ErrUnsupportedVersion - } - - if err != nil { - return err - } - - e.Name = name - return nil -} - -func (d *Decoder) doReadEntryNameV4() (string, error) { - l, err := binary.ReadVariableWidthInt(d.r) - if err != nil { - return "", err - } - - var base string - if d.lastEntry != nil { - base = d.lastEntry.Name[:len(d.lastEntry.Name)-int(l)] - } - - name, err := binary.ReadUntil(d.r, '\x00') - if err != nil { - return "", err - } - - return base + string(name), nil -} - -func (d *Decoder) doReadEntryName(len uint16) (string, error) { - name := make([]byte, len) - _, err := io.ReadFull(d.r, name[:]) - - return string(name), err -} - -// Index entries are padded out to the next 8 byte alignment -// for historical reasons related to how C Git read the files. -func (d *Decoder) padEntry(idx *Index, e *Entry, read int) error { - if idx.Version == 4 { - return nil - } - - entrySize := read + len(e.Name) - padLen := 8 - entrySize%8 - _, err := io.CopyN(ioutil.Discard, d.r, int64(padLen)) - return err -} - -func (d *Decoder) readExtensions(idx *Index) error { - // TODO: support 'Split index' and 'Untracked cache' extensions, take in - // count that they are not supported by jgit or libgit - - var expected []byte - var err error - - var header [4]byte - for { - expected = d.hash.Sum(nil) - - var n int - if n, err = io.ReadFull(d.r, header[:]); err != nil { - if n == 0 { - err = io.EOF - } - - break - } - - err = d.readExtension(idx, header[:]) - if err != nil { - break - } - } - - if err != errUnknownExtension { - return err - } - - return d.readChecksum(expected, header) -} - -func (d *Decoder) readExtension(idx *Index, header []byte) error { - switch { - case bytes.Equal(header, treeExtSignature): - r, err := d.getExtensionReader() - if err != nil { - return err - } - - idx.Cache = &Tree{} - d := &treeExtensionDecoder{r} - if err := d.Decode(idx.Cache); err != nil { - return err - } - case bytes.Equal(header, resolveUndoExtSignature): - r, err := d.getExtensionReader() - if err != nil { - return err - } - - idx.ResolveUndo = &ResolveUndo{} - d := &resolveUndoDecoder{r} - if err := d.Decode(idx.ResolveUndo); err != nil { - return err - } - case bytes.Equal(header, endOfIndexEntryExtSignature): - r, err := d.getExtensionReader() - if err != nil { - return err - } - - idx.EndOfIndexEntry = &EndOfIndexEntry{} - d := &endOfIndexEntryDecoder{r} - if err := d.Decode(idx.EndOfIndexEntry); err != nil { - return err - } - default: - return errUnknownExtension - } - - return nil -} - -func (d *Decoder) getExtensionReader() (*bufio.Reader, error) { - len, err := binary.ReadUint32(d.r) - if err != nil { - return nil, err - } - - d.extReader.Reset(&io.LimitedReader{R: d.r, N: int64(len)}) - return d.extReader, nil -} - -func (d *Decoder) readChecksum(expected []byte, alreadyRead [4]byte) error { - var h plumbing.Hash - copy(h[:4], alreadyRead[:]) - - if _, err := io.ReadFull(d.r, h[4:]); err != nil { - return err - } - - if !bytes.Equal(h[:], expected) { - return ErrInvalidChecksum - } - - return nil -} - -func validateHeader(r io.Reader) (version uint32, err error) { - var s = make([]byte, 4) - if _, err := io.ReadFull(r, s); err != nil { - return 0, err - } - - if !bytes.Equal(s, indexSignature) { - return 0, ErrMalformedSignature - } - - version, err = binary.ReadUint32(r) - if err != nil { - return 0, err - } - - if version < DecodeVersionSupported.Min || version > DecodeVersionSupported.Max { - return 0, ErrUnsupportedVersion - } - - return -} - -type treeExtensionDecoder struct { - r *bufio.Reader -} - -func (d *treeExtensionDecoder) Decode(t *Tree) error { - for { - e, err := d.readEntry() - if err != nil { - if err == io.EOF { - return nil - } - - return err - } - - if e == nil { - continue - } - - t.Entries = append(t.Entries, *e) - } -} - -func (d *treeExtensionDecoder) readEntry() (*TreeEntry, error) { - e := &TreeEntry{} - - path, err := binary.ReadUntil(d.r, '\x00') - if err != nil { - return nil, err - } - - e.Path = string(path) - - count, err := binary.ReadUntil(d.r, ' ') - if err != nil { - return nil, err - } - - i, err := strconv.Atoi(string(count)) - if err != nil { - return nil, err - } - - // An entry can be in an invalidated state and is represented by having a - // negative number in the entry_count field. - if i == -1 { - return nil, nil - } - - e.Entries = i - trees, err := binary.ReadUntil(d.r, '\n') - if err != nil { - return nil, err - } - - i, err = strconv.Atoi(string(trees)) - if err != nil { - return nil, err - } - - e.Trees = i - _, err = io.ReadFull(d.r, e.Hash[:]) - - return e, nil -} - -type resolveUndoDecoder struct { - r *bufio.Reader -} - -func (d *resolveUndoDecoder) Decode(ru *ResolveUndo) error { - for { - e, err := d.readEntry() - if err != nil { - if err == io.EOF { - return nil - } - - return err - } - - ru.Entries = append(ru.Entries, *e) - } -} - -func (d *resolveUndoDecoder) readEntry() (*ResolveUndoEntry, error) { - e := &ResolveUndoEntry{ - Stages: make(map[Stage]plumbing.Hash), - } - - path, err := binary.ReadUntil(d.r, '\x00') - if err != nil { - return nil, err - } - - e.Path = string(path) - - for i := 0; i < 3; i++ { - if err := d.readStage(e, Stage(i+1)); err != nil { - return nil, err - } - } - - for s := range e.Stages { - var hash plumbing.Hash - if _, err := io.ReadFull(d.r, hash[:]); err != nil { - return nil, err - } - - e.Stages[s] = hash - } - - return e, nil -} - -func (d *resolveUndoDecoder) readStage(e *ResolveUndoEntry, s Stage) error { - ascii, err := binary.ReadUntil(d.r, '\x00') - if err != nil { - return err - } - - stage, err := strconv.ParseInt(string(ascii), 8, 64) - if err != nil { - return err - } - - if stage != 0 { - e.Stages[s] = plumbing.ZeroHash - } - - return nil -} - -type endOfIndexEntryDecoder struct { - r *bufio.Reader -} - -func (d *endOfIndexEntryDecoder) Decode(e *EndOfIndexEntry) error { - var err error - e.Offset, err = binary.ReadUint32(d.r) - if err != nil { - return err - } - - _, err = io.ReadFull(d.r, e.Hash[:]) - return err -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/index/doc.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/index/doc.go deleted file mode 100644 index 39ae6ad..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/index/doc.go +++ /dev/null @@ -1,360 +0,0 @@ -// Package index implements encoding and decoding of index format files. -// -// Git index format -// ================ -// -// == The Git index file has the following format -// -// All binary numbers are in network byte order. Version 2 is described -// here unless stated otherwise. -// -// - A 12-byte header consisting of -// -// 4-byte signature: -// The signature is { 'D', 'I', 'R', 'C' } (stands for "dircache") -// -// 4-byte version number: -// The current supported versions are 2, 3 and 4. -// -// 32-bit number of index entries. -// -// - A number of sorted index entries (see below). -// -// - Extensions -// -// Extensions are identified by signature. Optional extensions can -// be ignored if Git does not understand them. -// -// Git currently supports cached tree and resolve undo extensions. -// -// 4-byte extension signature. If the first byte is 'A'..'Z' the -// extension is optional and can be ignored. -// -// 32-bit size of the extension -// -// Extension data -// -// - 160-bit SHA-1 over the content of the index file before this -// checksum. -// -// == Index entry -// -// Index entries are sorted in ascending order on the name field, -// interpreted as a string of unsigned bytes (i.e. memcmp() order, no -// localization, no special casing of directory separator '/'). Entries -// with the same name are sorted by their stage field. -// -// 32-bit ctime seconds, the last time a file's metadata changed -// this is stat(2) data -// -// 32-bit ctime nanosecond fractions -// this is stat(2) data -// -// 32-bit mtime seconds, the last time a file's data changed -// this is stat(2) data -// -// 32-bit mtime nanosecond fractions -// this is stat(2) data -// -// 32-bit dev -// this is stat(2) data -// -// 32-bit ino -// this is stat(2) data -// -// 32-bit mode, split into (high to low bits) -// -// 4-bit object type -// valid values in binary are 1000 (regular file), 1010 (symbolic link) -// and 1110 (gitlink) -// -// 3-bit unused -// -// 9-bit unix permission. Only 0755 and 0644 are valid for regular files. -// Symbolic links and gitlinks have value 0 in this field. -// -// 32-bit uid -// this is stat(2) data -// -// 32-bit gid -// this is stat(2) data -// -// 32-bit file size -// This is the on-disk size from stat(2), truncated to 32-bit. -// -// 160-bit SHA-1 for the represented object -// -// A 16-bit 'flags' field split into (high to low bits) -// -// 1-bit assume-valid flag -// -// 1-bit extended flag (must be zero in version 2) -// -// 2-bit stage (during merge) -// -// 12-bit name length if the length is less than 0xFFF; otherwise 0xFFF -// is stored in this field. -// -// (Version 3 or later) A 16-bit field, only applicable if the -// "extended flag" above is 1, split into (high to low bits). -// -// 1-bit reserved for future -// -// 1-bit skip-worktree flag (used by sparse checkout) -// -// 1-bit intent-to-add flag (used by "git add -N") -// -// 13-bit unused, must be zero -// -// Entry path name (variable length) relative to top level directory -// (without leading slash). '/' is used as path separator. The special -// path components ".", ".." and ".git" (without quotes) are disallowed. -// Trailing slash is also disallowed. -// -// The exact encoding is undefined, but the '.' and '/' characters -// are encoded in 7-bit ASCII and the encoding cannot contain a NUL -// byte (iow, this is a UNIX pathname). -// -// (Version 4) In version 4, the entry path name is prefix-compressed -// relative to the path name for the previous entry (the very first -// entry is encoded as if the path name for the previous entry is an -// empty string). At the beginning of an entry, an integer N in the -// variable width encoding (the same encoding as the offset is encoded -// for OFS_DELTA pack entries; see pack-format.txt) is stored, followed -// by a NUL-terminated string S. Removing N bytes from the end of the -// path name for the previous entry, and replacing it with the string S -// yields the path name for this entry. -// -// 1-8 nul bytes as necessary to pad the entry to a multiple of eight bytes -// while keeping the name NUL-terminated. -// -// (Version 4) In version 4, the padding after the pathname does not -// exist. -// -// Interpretation of index entries in split index mode is completely -// different. See below for details. -// -// == Extensions -// -// === Cached tree -// -// Cached tree extension contains pre-computed hashes for trees that can -// be derived from the index. It helps speed up tree object generation -// from index for a new commit. -// -// When a path is updated in index, the path must be invalidated and -// removed from tree cache. -// -// The signature for this extension is { 'T', 'R', 'E', 'E' }. -// -// A series of entries fill the entire extension; each of which -// consists of: -// -// - NUL-terminated path component (relative to its parent directory); -// -// - ASCII decimal number of entries in the index that is covered by the -// tree this entry represents (entry_count); -// -// - A space (ASCII 32); -// -// - ASCII decimal number that represents the number of subtrees this -// tree has; -// -// - A newline (ASCII 10); and -// -// - 160-bit object name for the object that would result from writing -// this span of index as a tree. -// -// An entry can be in an invalidated state and is represented by having -// a negative number in the entry_count field. In this case, there is no -// object name and the next entry starts immediately after the newline. -// When writing an invalid entry, -1 should always be used as entry_count. -// -// The entries are written out in the top-down, depth-first order. The -// first entry represents the root level of the repository, followed by the -// first subtree--let's call this A--of the root level (with its name -// relative to the root level), followed by the first subtree of A (with -// its name relative to A), ... -// -// === Resolve undo -// -// A conflict is represented in the index as a set of higher stage entries. -// When a conflict is resolved (e.g. with "git add path"), these higher -// stage entries will be removed and a stage-0 entry with proper resolution -// is added. -// -// When these higher stage entries are removed, they are saved in the -// resolve undo extension, so that conflicts can be recreated (e.g. with -// "git checkout -m"), in case users want to redo a conflict resolution -// from scratch. -// -// The signature for this extension is { 'R', 'E', 'U', 'C' }. -// -// A series of entries fill the entire extension; each of which -// consists of: -// -// - NUL-terminated pathname the entry describes (relative to the root of -// the repository, i.e. full pathname); -// -// - Three NUL-terminated ASCII octal numbers, entry mode of entries in -// stage 1 to 3 (a missing stage is represented by "0" in this field); -// and -// -// - At most three 160-bit object names of the entry in stages from 1 to 3 -// (nothing is written for a missing stage). -// -// === Split index -// -// In split index mode, the majority of index entries could be stored -// in a separate file. This extension records the changes to be made on -// top of that to produce the final index. -// -// The signature for this extension is { 'l', 'i', 'n', 'k' }. -// -// The extension consists of: -// -// - 160-bit SHA-1 of the shared index file. The shared index file path -// is $GIT_DIR/sharedindex.. If all 160 bits are zero, the -// index does not require a shared index file. -// -// - An ewah-encoded delete bitmap, each bit represents an entry in the -// shared index. If a bit is set, its corresponding entry in the -// shared index will be removed from the final index. Note, because -// a delete operation changes index entry positions, but we do need -// original positions in replace phase, it's best to just mark -// entries for removal, then do a mass deletion after replacement. -// -// - An ewah-encoded replace bitmap, each bit represents an entry in -// the shared index. If a bit is set, its corresponding entry in the -// shared index will be replaced with an entry in this index -// file. All replaced entries are stored in sorted order in this -// index. The first "1" bit in the replace bitmap corresponds to the -// first index entry, the second "1" bit to the second entry and so -// on. Replaced entries may have empty path names to save space. -// -// The remaining index entries after replaced ones will be added to the -// final index. These added entries are also sorted by entry name then -// stage. -// -// == Untracked cache -// -// Untracked cache saves the untracked file list and necessary data to -// verify the cache. The signature for this extension is { 'U', 'N', -// 'T', 'R' }. -// -// The extension starts with -// -// - A sequence of NUL-terminated strings, preceded by the size of the -// sequence in variable width encoding. Each string describes the -// environment where the cache can be used. -// -// - Stat data of $GIT_DIR/info/exclude. See "Index entry" section from -// ctime field until "file size". -// -// - Stat data of plumbing.excludesfile -// -// - 32-bit dir_flags (see struct dir_struct) -// -// - 160-bit SHA-1 of $GIT_DIR/info/exclude. Null SHA-1 means the file -// does not exist. -// -// - 160-bit SHA-1 of plumbing.excludesfile. Null SHA-1 means the file does -// not exist. -// -// - NUL-terminated string of per-dir exclude file name. This usually -// is ".gitignore". -// -// - The number of following directory blocks, variable width -// encoding. If this number is zero, the extension ends here with a -// following NUL. -// -// - A number of directory blocks in depth-first-search order, each -// consists of -// -// - The number of untracked entries, variable width encoding. -// -// - The number of sub-directory blocks, variable width encoding. -// -// - The directory name terminated by NUL. -// -// - A number of untracked file/dir names terminated by NUL. -// -// The remaining data of each directory block is grouped by type: -// -// - An ewah bitmap, the n-th bit marks whether the n-th directory has -// valid untracked cache entries. -// -// - An ewah bitmap, the n-th bit records "check-only" bit of -// read_directory_recursive() for the n-th directory. -// -// - An ewah bitmap, the n-th bit indicates whether SHA-1 and stat data -// is valid for the n-th directory and exists in the next data. -// -// - An array of stat data. The n-th data corresponds with the n-th -// "one" bit in the previous ewah bitmap. -// -// - An array of SHA-1. The n-th SHA-1 corresponds with the n-th "one" bit -// in the previous ewah bitmap. -// -// - One NUL. -// -// == File System Monitor cache -// -// The file system monitor cache tracks files for which the core.fsmonitor -// hook has told us about changes. The signature for this extension is -// { 'F', 'S', 'M', 'N' }. -// -// The extension starts with -// -// - 32-bit version number: the current supported version is 1. -// -// - 64-bit time: the extension data reflects all changes through the given -// time which is stored as the nanoseconds elapsed since midnight, -// January 1, 1970. -// -// - 32-bit bitmap size: the size of the CE_FSMONITOR_VALID bitmap. -// -// - An ewah bitmap, the n-th bit indicates whether the n-th index entry -// is not CE_FSMONITOR_VALID. -// -// == End of Index Entry -// -// The End of Index Entry (EOIE) is used to locate the end of the variable -// length index entries and the beginning of the extensions. Code can take -// advantage of this to quickly locate the index extensions without having -// to parse through all of the index entries. -// -// Because it must be able to be loaded before the variable length cache -// entries and other index extensions, this extension must be written last. -// The signature for this extension is { 'E', 'O', 'I', 'E' }. -// -// The extension consists of: -// -// - 32-bit offset to the end of the index entries -// -// - 160-bit SHA-1 over the extension types and their sizes (but not -// their contents). E.g. if we have "TREE" extension that is N-bytes -// long, "REUC" extension that is M-bytes long, followed by "EOIE", -// then the hash would be: -// -// SHA-1("TREE" + + -// "REUC" + ) -// -// == Index Entry Offset Table -// -// The Index Entry Offset Table (IEOT) is used to help address the CPU -// cost of loading the index by enabling multi-threading the process of -// converting cache entries from the on-disk format to the in-memory format. -// The signature for this extension is { 'I', 'E', 'O', 'T' }. -// -// The extension consists of: -// -// - 32-bit version (currently 1) -// -// - A number of index offset entries each consisting of: -// -// - 32-bit offset from the beginning of the file to the first cache entry -// in this block of entries. -// -// - 32-bit count of cache entries in this blockpackage index -package index diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/index/encoder.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/index/encoder.go deleted file mode 100644 index 7111314..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/index/encoder.go +++ /dev/null @@ -1,150 +0,0 @@ -package index - -import ( - "bytes" - "crypto/sha1" - "errors" - "hash" - "io" - "sort" - "time" - - "gopkg.in/src-d/go-git.v4/utils/binary" -) - -var ( - // EncodeVersionSupported is the range of supported index versions - EncodeVersionSupported uint32 = 2 - - // ErrInvalidTimestamp is returned by Encode if a Index with a Entry with - // negative timestamp values - ErrInvalidTimestamp = errors.New("negative timestamps are not allowed") -) - -// An Encoder writes an Index to an output stream. -type Encoder struct { - w io.Writer - hash hash.Hash -} - -// NewEncoder returns a new encoder that writes to w. -func NewEncoder(w io.Writer) *Encoder { - h := sha1.New() - mw := io.MultiWriter(w, h) - return &Encoder{mw, h} -} - -// Encode writes the Index to the stream of the encoder. -func (e *Encoder) Encode(idx *Index) error { - // TODO: support versions v3 and v4 - // TODO: support extensions - if idx.Version != EncodeVersionSupported { - return ErrUnsupportedVersion - } - - if err := e.encodeHeader(idx); err != nil { - return err - } - - if err := e.encodeEntries(idx); err != nil { - return err - } - - return e.encodeFooter() -} - -func (e *Encoder) encodeHeader(idx *Index) error { - return binary.Write(e.w, - indexSignature, - idx.Version, - uint32(len(idx.Entries)), - ) -} - -func (e *Encoder) encodeEntries(idx *Index) error { - sort.Sort(byName(idx.Entries)) - - for _, entry := range idx.Entries { - if err := e.encodeEntry(entry); err != nil { - return err - } - - wrote := entryHeaderLength + len(entry.Name) - if err := e.padEntry(wrote); err != nil { - return err - } - } - - return nil -} - -func (e *Encoder) encodeEntry(entry *Entry) error { - if entry.IntentToAdd || entry.SkipWorktree { - return ErrUnsupportedVersion - } - - sec, nsec, err := e.timeToUint32(&entry.CreatedAt) - if err != nil { - return err - } - - msec, mnsec, err := e.timeToUint32(&entry.ModifiedAt) - if err != nil { - return err - } - - flags := uint16(entry.Stage&0x3) << 12 - if l := len(entry.Name); l < nameMask { - flags |= uint16(l) - } else { - flags |= nameMask - } - - flow := []interface{}{ - sec, nsec, - msec, mnsec, - entry.Dev, - entry.Inode, - entry.Mode, - entry.UID, - entry.GID, - entry.Size, - entry.Hash[:], - flags, - } - - if err := binary.Write(e.w, flow...); err != nil { - return err - } - - return binary.Write(e.w, []byte(entry.Name)) -} - -func (e *Encoder) timeToUint32(t *time.Time) (uint32, uint32, error) { - if t.IsZero() { - return 0, 0, nil - } - - if t.Unix() < 0 || t.UnixNano() < 0 { - return 0, 0, ErrInvalidTimestamp - } - - return uint32(t.Unix()), uint32(t.Nanosecond()), nil -} - -func (e *Encoder) padEntry(wrote int) error { - padLen := 8 - wrote%8 - - _, err := e.w.Write(bytes.Repeat([]byte{'\x00'}, padLen)) - return err -} - -func (e *Encoder) encodeFooter() error { - return binary.Write(e.w, e.hash.Sum(nil)) -} - -type byName []*Entry - -func (l byName) Len() int { return len(l) } -func (l byName) Swap(i, j int) { l[i], l[j] = l[j], l[i] } -func (l byName) Less(i, j int) bool { return l[i].Name < l[j].Name } diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/index/index.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/index/index.go deleted file mode 100644 index 6653c91..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/index/index.go +++ /dev/null @@ -1,213 +0,0 @@ -package index - -import ( - "bytes" - "errors" - "fmt" - "path/filepath" - "time" - - "gopkg.in/src-d/go-git.v4/plumbing" - "gopkg.in/src-d/go-git.v4/plumbing/filemode" -) - -var ( - // ErrUnsupportedVersion is returned by Decode when the index file version - // is not supported. - ErrUnsupportedVersion = errors.New("unsupported version") - // ErrEntryNotFound is returned by Index.Entry, if an entry is not found. - ErrEntryNotFound = errors.New("entry not found") - - indexSignature = []byte{'D', 'I', 'R', 'C'} - treeExtSignature = []byte{'T', 'R', 'E', 'E'} - resolveUndoExtSignature = []byte{'R', 'E', 'U', 'C'} - endOfIndexEntryExtSignature = []byte{'E', 'O', 'I', 'E'} -) - -// Stage during merge -type Stage int - -const ( - // Merged is the default stage, fully merged - Merged Stage = 1 - // AncestorMode is the base revision - AncestorMode Stage = 1 - // OurMode is the first tree revision, ours - OurMode Stage = 2 - // TheirMode is the second tree revision, theirs - TheirMode Stage = 3 -) - -// Index contains the information about which objects are currently checked out -// in the worktree, having information about the working files. Changes in -// worktree are detected using this Index. The Index is also used during merges -type Index struct { - // Version is index version - Version uint32 - // Entries collection of entries represented by this Index. The order of - // this collection is not guaranteed - Entries []*Entry - // Cache represents the 'Cached tree' extension - Cache *Tree - // ResolveUndo represents the 'Resolve undo' extension - ResolveUndo *ResolveUndo - // EndOfIndexEntry represents the 'End of Index Entry' extension - EndOfIndexEntry *EndOfIndexEntry -} - -// Add creates a new Entry and returns it. The caller should first check that -// another entry with the same path does not exist. -func (i *Index) Add(path string) *Entry { - e := &Entry{ - Name: filepath.ToSlash(path), - } - - i.Entries = append(i.Entries, e) - return e -} - -// Entry returns the entry that match the given path, if any. -func (i *Index) Entry(path string) (*Entry, error) { - path = filepath.ToSlash(path) - for _, e := range i.Entries { - if e.Name == path { - return e, nil - } - } - - return nil, ErrEntryNotFound -} - -// Remove remove the entry that match the give path and returns deleted entry. -func (i *Index) Remove(path string) (*Entry, error) { - path = filepath.ToSlash(path) - for index, e := range i.Entries { - if e.Name == path { - i.Entries = append(i.Entries[:index], i.Entries[index+1:]...) - return e, nil - } - } - - return nil, ErrEntryNotFound -} - -// Glob returns the all entries matching pattern or nil if there is no matching -// entry. The syntax of patterns is the same as in filepath.Glob. -func (i *Index) Glob(pattern string) (matches []*Entry, err error) { - pattern = filepath.ToSlash(pattern) - for _, e := range i.Entries { - m, err := match(pattern, e.Name) - if err != nil { - return nil, err - } - - if m { - matches = append(matches, e) - } - } - - return -} - -// String is equivalent to `git ls-files --stage --debug` -func (i *Index) String() string { - buf := bytes.NewBuffer(nil) - for _, e := range i.Entries { - buf.WriteString(e.String()) - } - - return buf.String() -} - -// Entry represents a single file (or stage of a file) in the cache. An entry -// represents exactly one stage of a file. If a file path is unmerged then -// multiple Entry instances may appear for the same path name. -type Entry struct { - // Hash is the SHA1 of the represented file - Hash plumbing.Hash - // Name is the Entry path name relative to top level directory - Name string - // CreatedAt time when the tracked path was created - CreatedAt time.Time - // ModifiedAt time when the tracked path was changed - ModifiedAt time.Time - // Dev and Inode of the tracked path - Dev, Inode uint32 - // Mode of the path - Mode filemode.FileMode - // UID and GID, userid and group id of the owner - UID, GID uint32 - // Size is the length in bytes for regular files - Size uint32 - // Stage on a merge is defines what stage is representing this entry - // https://git-scm.com/book/en/v2/Git-Tools-Advanced-Merging - Stage Stage - // SkipWorktree used in sparse checkouts - // https://git-scm.com/docs/git-read-tree#_sparse_checkout - SkipWorktree bool - // IntentToAdd record only the fact that the path will be added later - // https://git-scm.com/docs/git-add ("git add -N") - IntentToAdd bool -} - -func (e Entry) String() string { - buf := bytes.NewBuffer(nil) - - fmt.Fprintf(buf, "%06o %s %d\t%s\n", e.Mode, e.Hash, e.Stage, e.Name) - fmt.Fprintf(buf, " ctime: %d:%d\n", e.CreatedAt.Unix(), e.CreatedAt.Nanosecond()) - fmt.Fprintf(buf, " mtime: %d:%d\n", e.ModifiedAt.Unix(), e.ModifiedAt.Nanosecond()) - fmt.Fprintf(buf, " dev: %d\tino: %d\n", e.Dev, e.Inode) - fmt.Fprintf(buf, " uid: %d\tgid: %d\n", e.UID, e.GID) - fmt.Fprintf(buf, " size: %d\tflags: %x\n", e.Size, 0) - - return buf.String() -} - -// Tree contains pre-computed hashes for trees that can be derived from the -// index. It helps speed up tree object generation from index for a new commit. -type Tree struct { - Entries []TreeEntry -} - -// TreeEntry entry of a cached Tree -type TreeEntry struct { - // Path component (relative to its parent directory) - Path string - // Entries is the number of entries in the index that is covered by the tree - // this entry represents. - Entries int - // Trees is the number that represents the number of subtrees this tree has - Trees int - // Hash object name for the object that would result from writing this span - // of index as a tree. - Hash plumbing.Hash -} - -// ResolveUndo is used when a conflict is resolved (e.g. with "git add path"), -// these higher stage entries are removed and a stage-0 entry with proper -// resolution is added. When these higher stage entries are removed, they are -// saved in the resolve undo extension. -type ResolveUndo struct { - Entries []ResolveUndoEntry -} - -// ResolveUndoEntry contains the information about a conflict when is resolved -type ResolveUndoEntry struct { - Path string - Stages map[Stage]plumbing.Hash -} - -// EndOfIndexEntry is the End of Index Entry (EOIE) is used to locate the end of -// the variable length index entries and the beginning of the extensions. Code -// can take advantage of this to quickly locate the index extensions without -// having to parse through all of the index entries. -// -// Because it must be able to be loaded before the variable length cache -// entries and other index extensions, this extension must be written last. -type EndOfIndexEntry struct { - // Offset to the end of the index entries - Offset uint32 - // Hash is a SHA-1 over the extension types and their sizes (but not - // their contents). - Hash plumbing.Hash -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/index/match.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/index/match.go deleted file mode 100644 index 2891d7d..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/index/match.go +++ /dev/null @@ -1,186 +0,0 @@ -package index - -import ( - "path/filepath" - "runtime" - "unicode/utf8" -) - -// match is filepath.Match with support to match fullpath and not only filenames -// code from: -// https://github.com/golang/go/blob/39852bf4cce6927e01d0136c7843f65a801738cb/src/path/filepath/match.go#L44-L224 -func match(pattern, name string) (matched bool, err error) { -Pattern: - for len(pattern) > 0 { - var star bool - var chunk string - star, chunk, pattern = scanChunk(pattern) - - // Look for match at current position. - t, ok, err := matchChunk(chunk, name) - // if we're the last chunk, make sure we've exhausted the name - // otherwise we'll give a false result even if we could still match - // using the star - if ok && (len(t) == 0 || len(pattern) > 0) { - name = t - continue - } - if err != nil { - return false, err - } - if star { - // Look for match skipping i+1 bytes. - // Cannot skip /. - for i := 0; i < len(name); i++ { - t, ok, err := matchChunk(chunk, name[i+1:]) - if ok { - // if we're the last chunk, make sure we exhausted the name - if len(pattern) == 0 && len(t) > 0 { - continue - } - name = t - continue Pattern - } - if err != nil { - return false, err - } - } - } - return false, nil - } - return len(name) == 0, nil -} - -// scanChunk gets the next segment of pattern, which is a non-star string -// possibly preceded by a star. -func scanChunk(pattern string) (star bool, chunk, rest string) { - for len(pattern) > 0 && pattern[0] == '*' { - pattern = pattern[1:] - star = true - } - inrange := false - var i int -Scan: - for i = 0; i < len(pattern); i++ { - switch pattern[i] { - case '\\': - if runtime.GOOS != "windows" { - // error check handled in matchChunk: bad pattern. - if i+1 < len(pattern) { - i++ - } - } - case '[': - inrange = true - case ']': - inrange = false - case '*': - if !inrange { - break Scan - } - } - } - return star, pattern[0:i], pattern[i:] -} - -// matchChunk checks whether chunk matches the beginning of s. -// If so, it returns the remainder of s (after the match). -// Chunk is all single-character operators: literals, char classes, and ?. -func matchChunk(chunk, s string) (rest string, ok bool, err error) { - for len(chunk) > 0 { - if len(s) == 0 { - return - } - switch chunk[0] { - case '[': - // character class - r, n := utf8.DecodeRuneInString(s) - s = s[n:] - chunk = chunk[1:] - // We can't end right after '[', we're expecting at least - // a closing bracket and possibly a caret. - if len(chunk) == 0 { - err = filepath.ErrBadPattern - return - } - // possibly negated - negated := chunk[0] == '^' - if negated { - chunk = chunk[1:] - } - // parse all ranges - match := false - nrange := 0 - for { - if len(chunk) > 0 && chunk[0] == ']' && nrange > 0 { - chunk = chunk[1:] - break - } - var lo, hi rune - if lo, chunk, err = getEsc(chunk); err != nil { - return - } - hi = lo - if chunk[0] == '-' { - if hi, chunk, err = getEsc(chunk[1:]); err != nil { - return - } - } - if lo <= r && r <= hi { - match = true - } - nrange++ - } - if match == negated { - return - } - - case '?': - _, n := utf8.DecodeRuneInString(s) - s = s[n:] - chunk = chunk[1:] - - case '\\': - if runtime.GOOS != "windows" { - chunk = chunk[1:] - if len(chunk) == 0 { - err = filepath.ErrBadPattern - return - } - } - fallthrough - - default: - if chunk[0] != s[0] { - return - } - s = s[1:] - chunk = chunk[1:] - } - } - return s, true, nil -} - -// getEsc gets a possibly-escaped character from chunk, for a character class. -func getEsc(chunk string) (r rune, nchunk string, err error) { - if len(chunk) == 0 || chunk[0] == '-' || chunk[0] == ']' { - err = filepath.ErrBadPattern - return - } - if chunk[0] == '\\' && runtime.GOOS != "windows" { - chunk = chunk[1:] - if len(chunk) == 0 { - err = filepath.ErrBadPattern - return - } - } - r, n := utf8.DecodeRuneInString(chunk) - if r == utf8.RuneError && n == 1 { - err = filepath.ErrBadPattern - } - nchunk = chunk[n:] - if len(nchunk) == 0 { - err = filepath.ErrBadPattern - } - return -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/objfile/doc.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/objfile/doc.go deleted file mode 100644 index a714516..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/objfile/doc.go +++ /dev/null @@ -1,2 +0,0 @@ -// Package objfile implements encoding and decoding of object files. -package objfile diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/objfile/reader.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/objfile/reader.go deleted file mode 100644 index c4467e4..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/objfile/reader.go +++ /dev/null @@ -1,114 +0,0 @@ -package objfile - -import ( - "compress/zlib" - "errors" - "io" - "strconv" - - "gopkg.in/src-d/go-git.v4/plumbing" - "gopkg.in/src-d/go-git.v4/plumbing/format/packfile" -) - -var ( - ErrClosed = errors.New("objfile: already closed") - ErrHeader = errors.New("objfile: invalid header") - ErrNegativeSize = errors.New("objfile: negative object size") -) - -// Reader reads and decodes compressed objfile data from a provided io.Reader. -// Reader implements io.ReadCloser. Close should be called when finished with -// the Reader. Close will not close the underlying io.Reader. -type Reader struct { - multi io.Reader - zlib io.ReadCloser - hasher plumbing.Hasher -} - -// NewReader returns a new Reader reading from r. -func NewReader(r io.Reader) (*Reader, error) { - zlib, err := zlib.NewReader(r) - if err != nil { - return nil, packfile.ErrZLib.AddDetails(err.Error()) - } - - return &Reader{ - zlib: zlib, - }, nil -} - -// Header reads the type and the size of object, and prepares the reader for read -func (r *Reader) Header() (t plumbing.ObjectType, size int64, err error) { - var raw []byte - raw, err = r.readUntil(' ') - if err != nil { - return - } - - t, err = plumbing.ParseObjectType(string(raw)) - if err != nil { - return - } - - raw, err = r.readUntil(0) - if err != nil { - return - } - - size, err = strconv.ParseInt(string(raw), 10, 64) - if err != nil { - err = ErrHeader - return - } - - defer r.prepareForRead(t, size) - return -} - -// readSlice reads one byte at a time from r until it encounters delim or an -// error. -func (r *Reader) readUntil(delim byte) ([]byte, error) { - var buf [1]byte - value := make([]byte, 0, 16) - for { - if n, err := r.zlib.Read(buf[:]); err != nil && (err != io.EOF || n == 0) { - if err == io.EOF { - return nil, ErrHeader - } - return nil, err - } - - if buf[0] == delim { - return value, nil - } - - value = append(value, buf[0]) - } -} - -func (r *Reader) prepareForRead(t plumbing.ObjectType, size int64) { - r.hasher = plumbing.NewHasher(t, size) - r.multi = io.TeeReader(r.zlib, r.hasher) -} - -// Read reads len(p) bytes into p from the object data stream. It returns -// the number of bytes read (0 <= n <= len(p)) and any error encountered. Even -// if Read returns n < len(p), it may use all of p as scratch space during the -// call. -// -// If Read encounters the end of the data stream it will return err == io.EOF, -// either in the current call if n > 0 or in a subsequent call. -func (r *Reader) Read(p []byte) (n int, err error) { - return r.multi.Read(p) -} - -// Hash returns the hash of the object data stream that has been read so far. -func (r *Reader) Hash() plumbing.Hash { - return r.hasher.Sum() -} - -// Close releases any resources consumed by the Reader. Calling Close does not -// close the wrapped io.Reader originally passed to NewReader. -func (r *Reader) Close() error { - return r.zlib.Close() -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/objfile/writer.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/objfile/writer.go deleted file mode 100644 index 5555243..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/objfile/writer.go +++ /dev/null @@ -1,109 +0,0 @@ -package objfile - -import ( - "compress/zlib" - "errors" - "io" - "strconv" - - "gopkg.in/src-d/go-git.v4/plumbing" -) - -var ( - ErrOverflow = errors.New("objfile: declared data length exceeded (overflow)") -) - -// Writer writes and encodes data in compressed objfile format to a provided -// io.Writer. Close should be called when finished with the Writer. Close will -// not close the underlying io.Writer. -type Writer struct { - raw io.Writer - zlib io.WriteCloser - hasher plumbing.Hasher - multi io.Writer - - closed bool - pending int64 // number of unwritten bytes -} - -// NewWriter returns a new Writer writing to w. -// -// The returned Writer implements io.WriteCloser. Close should be called when -// finished with the Writer. Close will not close the underlying io.Writer. -func NewWriter(w io.Writer) *Writer { - return &Writer{ - raw: w, - zlib: zlib.NewWriter(w), - } -} - -// WriteHeader writes the type and the size and prepares to accept the object's -// contents. If an invalid t is provided, plumbing.ErrInvalidType is returned. If a -// negative size is provided, ErrNegativeSize is returned. -func (w *Writer) WriteHeader(t plumbing.ObjectType, size int64) error { - if !t.Valid() { - return plumbing.ErrInvalidType - } - if size < 0 { - return ErrNegativeSize - } - - b := t.Bytes() - b = append(b, ' ') - b = append(b, []byte(strconv.FormatInt(size, 10))...) - b = append(b, 0) - - defer w.prepareForWrite(t, size) - _, err := w.zlib.Write(b) - - return err -} - -func (w *Writer) prepareForWrite(t plumbing.ObjectType, size int64) { - w.pending = size - - w.hasher = plumbing.NewHasher(t, size) - w.multi = io.MultiWriter(w.zlib, w.hasher) -} - -// Write writes the object's contents. Write returns the error ErrOverflow if -// more than size bytes are written after WriteHeader. -func (w *Writer) Write(p []byte) (n int, err error) { - if w.closed { - return 0, ErrClosed - } - - overwrite := false - if int64(len(p)) > w.pending { - p = p[0:w.pending] - overwrite = true - } - - n, err = w.multi.Write(p) - w.pending -= int64(n) - if err == nil && overwrite { - err = ErrOverflow - return - } - - return -} - -// Hash returns the hash of the object data stream that has been written so far. -// It can be called before or after Close. -func (w *Writer) Hash() plumbing.Hash { - return w.hasher.Sum() // Not yet closed, return hash of data written so far -} - -// Close releases any resources consumed by the Writer. -// -// Calling Close does not close the wrapped io.Writer originally passed to -// NewWriter. -func (w *Writer) Close() error { - if err := w.zlib.Close(); err != nil { - return err - } - - w.closed = true - return nil -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/common.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/common.go deleted file mode 100644 index f82c1ab..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/common.go +++ /dev/null @@ -1,78 +0,0 @@ -package packfile - -import ( - "bytes" - "compress/zlib" - "io" - "sync" - - "gopkg.in/src-d/go-git.v4/plumbing/storer" - "gopkg.in/src-d/go-git.v4/utils/ioutil" -) - -var signature = []byte{'P', 'A', 'C', 'K'} - -const ( - // VersionSupported is the packfile version supported by this package - VersionSupported uint32 = 2 - - firstLengthBits = uint8(4) // the first byte into object header has 4 bits to store the length - lengthBits = uint8(7) // subsequent bytes has 7 bits to store the length - maskFirstLength = 15 // 0000 1111 - maskContinue = 0x80 // 1000 0000 - maskLength = uint8(127) // 0111 1111 - maskType = uint8(112) // 0111 0000 -) - -// UpdateObjectStorage updates the storer with the objects in the given -// packfile. -func UpdateObjectStorage(s storer.Storer, packfile io.Reader) error { - if pw, ok := s.(storer.PackfileWriter); ok { - return WritePackfileToObjectStorage(pw, packfile) - } - - p, err := NewParserWithStorage(NewScanner(packfile), s) - if err != nil { - return err - } - - _, err = p.Parse() - return err -} - -// WritePackfileToObjectStorage writes all the packfile objects into the given -// object storage. -func WritePackfileToObjectStorage( - sw storer.PackfileWriter, - packfile io.Reader, -) (err error) { - w, err := sw.PackfileWriter() - if err != nil { - return err - } - - defer ioutil.CheckClose(w, &err) - - var n int64 - n, err = io.Copy(w, packfile) - if err == nil && n == 0 { - return ErrEmptyPackfile - } - - return err -} - -var bufPool = sync.Pool{ - New: func() interface{} { - return bytes.NewBuffer(nil) - }, -} - -var zlibInitBytes = []byte{0x78, 0x9c, 0x01, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x01} - -var zlibReaderPool = sync.Pool{ - New: func() interface{} { - r, _ := zlib.NewReader(bytes.NewReader(zlibInitBytes)) - return r - }, -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/delta_index.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/delta_index.go deleted file mode 100644 index 07a6112..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/delta_index.go +++ /dev/null @@ -1,297 +0,0 @@ -package packfile - -const blksz = 16 -const maxChainLength = 64 - -// deltaIndex is a modified version of JGit's DeltaIndex adapted to our current -// design. -type deltaIndex struct { - table []int - entries []int - mask int -} - -func (idx *deltaIndex) init(buf []byte) { - scanner := newDeltaIndexScanner(buf, len(buf)) - idx.mask = scanner.mask - idx.table = scanner.table - idx.entries = make([]int, countEntries(scanner)+1) - idx.copyEntries(scanner) -} - -// findMatch returns the offset of src where the block starting at tgtOffset -// is and the length of the match. A length of 0 means there was no match. A -// length of -1 means the src length is lower than the blksz and whatever -// other positive length is the length of the match in bytes. -func (idx *deltaIndex) findMatch(src, tgt []byte, tgtOffset int) (srcOffset, l int) { - if len(tgt) < tgtOffset+s { - return 0, len(tgt) - tgtOffset - } - - if len(src) < blksz { - return 0, -1 - } - - if len(tgt) >= tgtOffset+s && len(src) >= blksz { - h := hashBlock(tgt, tgtOffset) - tIdx := h & idx.mask - eIdx := idx.table[tIdx] - if eIdx != 0 { - srcOffset = idx.entries[eIdx] - } else { - return - } - - l = matchLength(src, tgt, tgtOffset, srcOffset) - } - - return -} - -func matchLength(src, tgt []byte, otgt, osrc int) (l int) { - lensrc := len(src) - lentgt := len(tgt) - for (osrc < lensrc && otgt < lentgt) && src[osrc] == tgt[otgt] { - l++ - osrc++ - otgt++ - } - return -} - -func countEntries(scan *deltaIndexScanner) (cnt int) { - // Figure out exactly how many entries we need. As we do the - // enumeration truncate any delta chains longer than what we - // are willing to scan during encode. This keeps the encode - // logic linear in the size of the input rather than quadratic. - for i := 0; i < len(scan.table); i++ { - h := scan.table[i] - if h == 0 { - continue - } - - size := 0 - for { - size++ - if size == maxChainLength { - scan.next[h] = 0 - break - } - h = scan.next[h] - - if h == 0 { - break - } - } - cnt += size - } - - return -} - -func (idx *deltaIndex) copyEntries(scanner *deltaIndexScanner) { - // Rebuild the entries list from the scanner, positioning all - // blocks in the same hash chain next to each other. We can - // then later discard the next list, along with the scanner. - // - next := 1 - for i := 0; i < len(idx.table); i++ { - h := idx.table[i] - if h == 0 { - continue - } - - idx.table[i] = next - for { - idx.entries[next] = scanner.entries[h] - next++ - h = scanner.next[h] - - if h == 0 { - break - } - } - } -} - -type deltaIndexScanner struct { - table []int - entries []int - next []int - mask int - count int -} - -func newDeltaIndexScanner(buf []byte, size int) *deltaIndexScanner { - size -= size % blksz - worstCaseBlockCnt := size / blksz - if worstCaseBlockCnt < 1 { - return new(deltaIndexScanner) - } - - tableSize := tableSize(worstCaseBlockCnt) - scanner := &deltaIndexScanner{ - table: make([]int, tableSize), - mask: tableSize - 1, - entries: make([]int, worstCaseBlockCnt+1), - next: make([]int, worstCaseBlockCnt+1), - } - - scanner.scan(buf, size) - return scanner -} - -// slightly modified version of JGit's DeltaIndexScanner. We store the offset on the entries -// instead of the entries and the key, so we avoid operations to retrieve the offset later, as -// we don't use the key. -// See: https://github.com/eclipse/jgit/blob/005e5feb4ecd08c4e4d141a38b9e7942accb3212/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/DeltaIndexScanner.java -func (s *deltaIndexScanner) scan(buf []byte, end int) { - lastHash := 0 - ptr := end - blksz - - for { - key := hashBlock(buf, ptr) - tIdx := key & s.mask - head := s.table[tIdx] - if head != 0 && lastHash == key { - s.entries[head] = ptr - } else { - s.count++ - eIdx := s.count - s.entries[eIdx] = ptr - s.next[eIdx] = head - s.table[tIdx] = eIdx - } - - lastHash = key - ptr -= blksz - - if 0 > ptr { - break - } - } -} - -func tableSize(worstCaseBlockCnt int) int { - shift := 32 - leadingZeros(uint32(worstCaseBlockCnt)) - sz := 1 << uint(shift-1) - if sz < worstCaseBlockCnt { - sz <<= 1 - } - return sz -} - -// use https://golang.org/pkg/math/bits/#LeadingZeros32 in the future -func leadingZeros(x uint32) (n int) { - if x >= 1<<16 { - x >>= 16 - n = 16 - } - if x >= 1<<8 { - x >>= 8 - n += 8 - } - n += int(len8tab[x]) - return 32 - n -} - -var len8tab = [256]uint8{ - 0x00, 0x01, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, - 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, - 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, - 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, - 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, - 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, - 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, -} - -func hashBlock(raw []byte, ptr int) int { - // The first 4 steps collapse out into a 4 byte big-endian decode, - // with a larger right shift as we combined shift lefts together. - // - hash := ((uint32(raw[ptr]) & 0xff) << 24) | - ((uint32(raw[ptr+1]) & 0xff) << 16) | - ((uint32(raw[ptr+2]) & 0xff) << 8) | - (uint32(raw[ptr+3]) & 0xff) - hash ^= T[hash>>31] - - hash = ((hash << 8) | (uint32(raw[ptr+4]) & 0xff)) ^ T[hash>>23] - hash = ((hash << 8) | (uint32(raw[ptr+5]) & 0xff)) ^ T[hash>>23] - hash = ((hash << 8) | (uint32(raw[ptr+6]) & 0xff)) ^ T[hash>>23] - hash = ((hash << 8) | (uint32(raw[ptr+7]) & 0xff)) ^ T[hash>>23] - - hash = ((hash << 8) | (uint32(raw[ptr+8]) & 0xff)) ^ T[hash>>23] - hash = ((hash << 8) | (uint32(raw[ptr+9]) & 0xff)) ^ T[hash>>23] - hash = ((hash << 8) | (uint32(raw[ptr+10]) & 0xff)) ^ T[hash>>23] - hash = ((hash << 8) | (uint32(raw[ptr+11]) & 0xff)) ^ T[hash>>23] - - hash = ((hash << 8) | (uint32(raw[ptr+12]) & 0xff)) ^ T[hash>>23] - hash = ((hash << 8) | (uint32(raw[ptr+13]) & 0xff)) ^ T[hash>>23] - hash = ((hash << 8) | (uint32(raw[ptr+14]) & 0xff)) ^ T[hash>>23] - hash = ((hash << 8) | (uint32(raw[ptr+15]) & 0xff)) ^ T[hash>>23] - - return int(hash) -} - -var T = []uint32{0x00000000, 0xd4c6b32d, 0x7d4bd577, - 0xa98d665a, 0x2e5119c3, 0xfa97aaee, 0x531accb4, 0x87dc7f99, - 0x5ca23386, 0x886480ab, 0x21e9e6f1, 0xf52f55dc, 0x72f32a45, - 0xa6359968, 0x0fb8ff32, 0xdb7e4c1f, 0x6d82d421, 0xb944670c, - 0x10c90156, 0xc40fb27b, 0x43d3cde2, 0x97157ecf, 0x3e981895, - 0xea5eabb8, 0x3120e7a7, 0xe5e6548a, 0x4c6b32d0, 0x98ad81fd, - 0x1f71fe64, 0xcbb74d49, 0x623a2b13, 0xb6fc983e, 0x0fc31b6f, - 0xdb05a842, 0x7288ce18, 0xa64e7d35, 0x219202ac, 0xf554b181, - 0x5cd9d7db, 0x881f64f6, 0x536128e9, 0x87a79bc4, 0x2e2afd9e, - 0xfaec4eb3, 0x7d30312a, 0xa9f68207, 0x007be45d, 0xd4bd5770, - 0x6241cf4e, 0xb6877c63, 0x1f0a1a39, 0xcbcca914, 0x4c10d68d, - 0x98d665a0, 0x315b03fa, 0xe59db0d7, 0x3ee3fcc8, 0xea254fe5, - 0x43a829bf, 0x976e9a92, 0x10b2e50b, 0xc4745626, 0x6df9307c, - 0xb93f8351, 0x1f8636de, 0xcb4085f3, 0x62cde3a9, 0xb60b5084, - 0x31d72f1d, 0xe5119c30, 0x4c9cfa6a, 0x985a4947, 0x43240558, - 0x97e2b675, 0x3e6fd02f, 0xeaa96302, 0x6d751c9b, 0xb9b3afb6, - 0x103ec9ec, 0xc4f87ac1, 0x7204e2ff, 0xa6c251d2, 0x0f4f3788, - 0xdb8984a5, 0x5c55fb3c, 0x88934811, 0x211e2e4b, 0xf5d89d66, - 0x2ea6d179, 0xfa606254, 0x53ed040e, 0x872bb723, 0x00f7c8ba, - 0xd4317b97, 0x7dbc1dcd, 0xa97aaee0, 0x10452db1, 0xc4839e9c, - 0x6d0ef8c6, 0xb9c84beb, 0x3e143472, 0xead2875f, 0x435fe105, - 0x97995228, 0x4ce71e37, 0x9821ad1a, 0x31accb40, 0xe56a786d, - 0x62b607f4, 0xb670b4d9, 0x1ffdd283, 0xcb3b61ae, 0x7dc7f990, - 0xa9014abd, 0x008c2ce7, 0xd44a9fca, 0x5396e053, 0x8750537e, - 0x2edd3524, 0xfa1b8609, 0x2165ca16, 0xf5a3793b, 0x5c2e1f61, - 0x88e8ac4c, 0x0f34d3d5, 0xdbf260f8, 0x727f06a2, 0xa6b9b58f, - 0x3f0c6dbc, 0xebcade91, 0x4247b8cb, 0x96810be6, 0x115d747f, - 0xc59bc752, 0x6c16a108, 0xb8d01225, 0x63ae5e3a, 0xb768ed17, - 0x1ee58b4d, 0xca233860, 0x4dff47f9, 0x9939f4d4, 0x30b4928e, - 0xe47221a3, 0x528eb99d, 0x86480ab0, 0x2fc56cea, 0xfb03dfc7, - 0x7cdfa05e, 0xa8191373, 0x01947529, 0xd552c604, 0x0e2c8a1b, - 0xdaea3936, 0x73675f6c, 0xa7a1ec41, 0x207d93d8, 0xf4bb20f5, - 0x5d3646af, 0x89f0f582, 0x30cf76d3, 0xe409c5fe, 0x4d84a3a4, - 0x99421089, 0x1e9e6f10, 0xca58dc3d, 0x63d5ba67, 0xb713094a, - 0x6c6d4555, 0xb8abf678, 0x11269022, 0xc5e0230f, 0x423c5c96, - 0x96faefbb, 0x3f7789e1, 0xebb13acc, 0x5d4da2f2, 0x898b11df, - 0x20067785, 0xf4c0c4a8, 0x731cbb31, 0xa7da081c, 0x0e576e46, - 0xda91dd6b, 0x01ef9174, 0xd5292259, 0x7ca44403, 0xa862f72e, - 0x2fbe88b7, 0xfb783b9a, 0x52f55dc0, 0x8633eeed, 0x208a5b62, - 0xf44ce84f, 0x5dc18e15, 0x89073d38, 0x0edb42a1, 0xda1df18c, - 0x739097d6, 0xa75624fb, 0x7c2868e4, 0xa8eedbc9, 0x0163bd93, - 0xd5a50ebe, 0x52797127, 0x86bfc20a, 0x2f32a450, 0xfbf4177d, - 0x4d088f43, 0x99ce3c6e, 0x30435a34, 0xe485e919, 0x63599680, - 0xb79f25ad, 0x1e1243f7, 0xcad4f0da, 0x11aabcc5, 0xc56c0fe8, - 0x6ce169b2, 0xb827da9f, 0x3ffba506, 0xeb3d162b, 0x42b07071, - 0x9676c35c, 0x2f49400d, 0xfb8ff320, 0x5202957a, 0x86c42657, - 0x011859ce, 0xd5deeae3, 0x7c538cb9, 0xa8953f94, 0x73eb738b, - 0xa72dc0a6, 0x0ea0a6fc, 0xda6615d1, 0x5dba6a48, 0x897cd965, - 0x20f1bf3f, 0xf4370c12, 0x42cb942c, 0x960d2701, 0x3f80415b, - 0xeb46f276, 0x6c9a8def, 0xb85c3ec2, 0x11d15898, 0xc517ebb5, - 0x1e69a7aa, 0xcaaf1487, 0x632272dd, 0xb7e4c1f0, 0x3038be69, - 0xe4fe0d44, 0x4d736b1e, 0x99b5d833, -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/delta_selector.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/delta_selector.go deleted file mode 100644 index 6710085..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/delta_selector.go +++ /dev/null @@ -1,369 +0,0 @@ -package packfile - -import ( - "sort" - "sync" - - "gopkg.in/src-d/go-git.v4/plumbing" - "gopkg.in/src-d/go-git.v4/plumbing/storer" -) - -const ( - // deltas based on deltas, how many steps we can do. - // 50 is the default value used in JGit - maxDepth = int64(50) -) - -// applyDelta is the set of object types that we should apply deltas -var applyDelta = map[plumbing.ObjectType]bool{ - plumbing.BlobObject: true, - plumbing.TreeObject: true, -} - -type deltaSelector struct { - storer storer.EncodedObjectStorer -} - -func newDeltaSelector(s storer.EncodedObjectStorer) *deltaSelector { - return &deltaSelector{s} -} - -// ObjectsToPack creates a list of ObjectToPack from the hashes -// provided, creating deltas if it's suitable, using an specific -// internal logic. `packWindow` specifies the size of the sliding -// window used to compare objects for delta compression; 0 turns off -// delta compression entirely. -func (dw *deltaSelector) ObjectsToPack( - hashes []plumbing.Hash, - packWindow uint, -) ([]*ObjectToPack, error) { - otp, err := dw.objectsToPack(hashes, packWindow) - if err != nil { - return nil, err - } - - if packWindow == 0 { - return otp, nil - } - - dw.sort(otp) - - var objectGroups [][]*ObjectToPack - var prev *ObjectToPack - i := -1 - for _, obj := range otp { - if prev == nil || prev.Type() != obj.Type() { - objectGroups = append(objectGroups, []*ObjectToPack{obj}) - i++ - prev = obj - } else { - objectGroups[i] = append(objectGroups[i], obj) - } - } - - var wg sync.WaitGroup - var once sync.Once - for _, objs := range objectGroups { - objs := objs - wg.Add(1) - go func() { - if walkErr := dw.walk(objs, packWindow); walkErr != nil { - once.Do(func() { - err = walkErr - }) - } - wg.Done() - }() - } - wg.Wait() - - if err != nil { - return nil, err - } - - return otp, nil -} - -func (dw *deltaSelector) objectsToPack( - hashes []plumbing.Hash, - packWindow uint, -) ([]*ObjectToPack, error) { - var objectsToPack []*ObjectToPack - for _, h := range hashes { - var o plumbing.EncodedObject - var err error - if packWindow == 0 { - o, err = dw.encodedObject(h) - } else { - o, err = dw.encodedDeltaObject(h) - } - if err != nil { - return nil, err - } - - otp := newObjectToPack(o) - if _, ok := o.(plumbing.DeltaObject); ok { - otp.CleanOriginal() - } - - objectsToPack = append(objectsToPack, otp) - } - - if packWindow == 0 { - return objectsToPack, nil - } - - if err := dw.fixAndBreakChains(objectsToPack); err != nil { - return nil, err - } - - return objectsToPack, nil -} - -func (dw *deltaSelector) encodedDeltaObject(h plumbing.Hash) (plumbing.EncodedObject, error) { - edos, ok := dw.storer.(storer.DeltaObjectStorer) - if !ok { - return dw.encodedObject(h) - } - - return edos.DeltaObject(plumbing.AnyObject, h) -} - -func (dw *deltaSelector) encodedObject(h plumbing.Hash) (plumbing.EncodedObject, error) { - return dw.storer.EncodedObject(plumbing.AnyObject, h) -} - -func (dw *deltaSelector) fixAndBreakChains(objectsToPack []*ObjectToPack) error { - m := make(map[plumbing.Hash]*ObjectToPack, len(objectsToPack)) - for _, otp := range objectsToPack { - m[otp.Hash()] = otp - } - - for _, otp := range objectsToPack { - if err := dw.fixAndBreakChainsOne(m, otp); err != nil { - return err - } - } - - return nil -} - -func (dw *deltaSelector) fixAndBreakChainsOne(objectsToPack map[plumbing.Hash]*ObjectToPack, otp *ObjectToPack) error { - if !otp.Object.Type().IsDelta() { - return nil - } - - // Initial ObjectToPack instances might have a delta assigned to Object - // but no actual base initially. Once Base is assigned to a delta, it means - // we already fixed it. - if otp.Base != nil { - return nil - } - - do, ok := otp.Object.(plumbing.DeltaObject) - if !ok { - // if this is not a DeltaObject, then we cannot retrieve its base, - // so we have to break the delta chain here. - return dw.undeltify(otp) - } - - base, ok := objectsToPack[do.BaseHash()] - if !ok { - // The base of the delta is not in our list of objects to pack, so - // we break the chain. - return dw.undeltify(otp) - } - - if err := dw.fixAndBreakChainsOne(objectsToPack, base); err != nil { - return err - } - - otp.SetDelta(base, otp.Object) - return nil -} - -func (dw *deltaSelector) restoreOriginal(otp *ObjectToPack) error { - if otp.Original != nil { - return nil - } - - if !otp.Object.Type().IsDelta() { - return nil - } - - obj, err := dw.encodedObject(otp.Hash()) - if err != nil { - return err - } - - otp.SetOriginal(obj) - - return nil -} - -// undeltify undeltifies an *ObjectToPack by retrieving the original object from -// the storer and resetting it. -func (dw *deltaSelector) undeltify(otp *ObjectToPack) error { - if err := dw.restoreOriginal(otp); err != nil { - return err - } - - otp.Object = otp.Original - otp.Depth = 0 - return nil -} - -func (dw *deltaSelector) sort(objectsToPack []*ObjectToPack) { - sort.Sort(byTypeAndSize(objectsToPack)) -} - -func (dw *deltaSelector) walk( - objectsToPack []*ObjectToPack, - packWindow uint, -) error { - indexMap := make(map[plumbing.Hash]*deltaIndex) - for i := 0; i < len(objectsToPack); i++ { - // Clean up the index map and reconstructed delta objects for anything - // outside our pack window, to save memory. - if i > int(packWindow) { - obj := objectsToPack[i-int(packWindow)] - - delete(indexMap, obj.Hash()) - - if obj.IsDelta() { - obj.SaveOriginalMetadata() - obj.CleanOriginal() - } - } - - target := objectsToPack[i] - - // If we already have a delta, we don't try to find a new one for this - // object. This happens when a delta is set to be reused from an existing - // packfile. - if target.IsDelta() { - continue - } - - // We only want to create deltas from specific types. - if !applyDelta[target.Type()] { - continue - } - - for j := i - 1; j >= 0 && i-j < int(packWindow); j-- { - base := objectsToPack[j] - // Objects must use only the same type as their delta base. - // Since objectsToPack is sorted by type and size, once we find - // a different type, we know we won't find more of them. - if base.Type() != target.Type() { - break - } - - if err := dw.tryToDeltify(indexMap, base, target); err != nil { - return err - } - } - } - - return nil -} - -func (dw *deltaSelector) tryToDeltify(indexMap map[plumbing.Hash]*deltaIndex, base, target *ObjectToPack) error { - // Original object might not be present if we're reusing a delta, so we - // ensure it is restored. - if err := dw.restoreOriginal(target); err != nil { - return err - } - - if err := dw.restoreOriginal(base); err != nil { - return err - } - - // If the sizes are radically different, this is a bad pairing. - if target.Size() < base.Size()>>4 { - return nil - } - - msz := dw.deltaSizeLimit( - target.Object.Size(), - base.Depth, - target.Depth, - target.IsDelta(), - ) - - // Nearly impossible to fit useful delta. - if msz <= 8 { - return nil - } - - // If we have to insert a lot to make this work, find another. - if base.Size()-target.Size() > msz { - return nil - } - - if _, ok := indexMap[base.Hash()]; !ok { - indexMap[base.Hash()] = new(deltaIndex) - } - - // Now we can generate the delta using originals - delta, err := getDelta(indexMap[base.Hash()], base.Original, target.Original) - if err != nil { - return err - } - - // if delta better than target - if delta.Size() < msz { - target.SetDelta(base, delta) - } - - return nil -} - -func (dw *deltaSelector) deltaSizeLimit(targetSize int64, baseDepth int, - targetDepth int, targetDelta bool) int64 { - if !targetDelta { - // Any delta should be no more than 50% of the original size - // (for text files deflate of whole form should shrink 50%). - n := targetSize >> 1 - - // Evenly distribute delta size limits over allowed depth. - // If src is non-delta (depth = 0), delta <= 50% of original. - // If src is almost at limit (9/10), delta <= 10% of original. - return n * (maxDepth - int64(baseDepth)) / maxDepth - } - - // With a delta base chosen any new delta must be "better". - // Retain the distribution described above. - d := int64(targetDepth) - n := targetSize - - // If target depth is bigger than maxDepth, this delta is not suitable to be used. - if d >= maxDepth { - return 0 - } - - // If src is whole (depth=0) and base is near limit (depth=9/10) - // any delta using src can be 10x larger and still be better. - // - // If src is near limit (depth=9/10) and base is whole (depth=0) - // a new delta dependent on src must be 1/10th the size. - return n * (maxDepth - int64(baseDepth)) / (maxDepth - d) -} - -type byTypeAndSize []*ObjectToPack - -func (a byTypeAndSize) Len() int { return len(a) } - -func (a byTypeAndSize) Swap(i, j int) { a[i], a[j] = a[j], a[i] } - -func (a byTypeAndSize) Less(i, j int) bool { - if a[i].Type() < a[j].Type() { - return false - } - - if a[i].Type() > a[j].Type() { - return true - } - - return a[i].Size() > a[j].Size() -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/diff_delta.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/diff_delta.go deleted file mode 100644 index 43f87a0..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/diff_delta.go +++ /dev/null @@ -1,200 +0,0 @@ -package packfile - -import ( - "bytes" - - "gopkg.in/src-d/go-git.v4/plumbing" -) - -// See https://github.com/jelmer/dulwich/blob/master/dulwich/pack.py and -// https://github.com/tarruda/node-git-core/blob/master/src/js/delta.js -// for more info - -const ( - // Standard chunk size used to generate fingerprints - s = 16 - - // https://github.com/git/git/blob/f7466e94375b3be27f229c78873f0acf8301c0a5/diff-delta.c#L428 - // Max size of a copy operation (64KB) - maxCopySize = 64 * 1024 -) - -// GetDelta returns an EncodedObject of type OFSDeltaObject. Base and Target object, -// will be loaded into memory to be able to create the delta object. -// To generate target again, you will need the obtained object and "base" one. -// Error will be returned if base or target object cannot be read. -func GetDelta(base, target plumbing.EncodedObject) (plumbing.EncodedObject, error) { - return getDelta(new(deltaIndex), base, target) -} - -func getDelta(index *deltaIndex, base, target plumbing.EncodedObject) (plumbing.EncodedObject, error) { - br, err := base.Reader() - if err != nil { - return nil, err - } - defer br.Close() - tr, err := target.Reader() - if err != nil { - return nil, err - } - defer tr.Close() - - bb := bufPool.Get().(*bytes.Buffer) - defer bufPool.Put(bb) - bb.Reset() - - _, err = bb.ReadFrom(br) - if err != nil { - return nil, err - } - - tb := bufPool.Get().(*bytes.Buffer) - defer bufPool.Put(tb) - tb.Reset() - - _, err = tb.ReadFrom(tr) - if err != nil { - return nil, err - } - - db := diffDelta(index, bb.Bytes(), tb.Bytes()) - delta := &plumbing.MemoryObject{} - _, err = delta.Write(db) - if err != nil { - return nil, err - } - - delta.SetSize(int64(len(db))) - delta.SetType(plumbing.OFSDeltaObject) - - return delta, nil -} - -// DiffDelta returns the delta that transforms src into tgt. -func DiffDelta(src, tgt []byte) []byte { - return diffDelta(new(deltaIndex), src, tgt) -} - -func diffDelta(index *deltaIndex, src []byte, tgt []byte) []byte { - buf := bufPool.Get().(*bytes.Buffer) - defer bufPool.Put(buf) - buf.Reset() - buf.Write(deltaEncodeSize(len(src))) - buf.Write(deltaEncodeSize(len(tgt))) - - if len(index.entries) == 0 { - index.init(src) - } - - ibuf := bufPool.Get().(*bytes.Buffer) - defer bufPool.Put(ibuf) - ibuf.Reset() - for i := 0; i < len(tgt); i++ { - offset, l := index.findMatch(src, tgt, i) - - if l == 0 { - // couldn't find a match, just write the current byte and continue - ibuf.WriteByte(tgt[i]) - } else if l < 0 { - // src is less than blksz, copy the rest of the target to avoid - // calls to findMatch - for ; i < len(tgt); i++ { - ibuf.WriteByte(tgt[i]) - } - } else if l < s { - // remaining target is less than blksz, copy what's left of it - // and avoid calls to findMatch - for j := i; j < i+l; j++ { - ibuf.WriteByte(tgt[j]) - } - i += l - 1 - } else { - encodeInsertOperation(ibuf, buf) - - rl := l - aOffset := offset - for rl > 0 { - if rl < maxCopySize { - buf.Write(encodeCopyOperation(aOffset, rl)) - break - } - - buf.Write(encodeCopyOperation(aOffset, maxCopySize)) - rl -= maxCopySize - aOffset += maxCopySize - } - - i += l - 1 - } - } - - encodeInsertOperation(ibuf, buf) - - // buf.Bytes() is only valid until the next modifying operation on the buffer. Copy it. - return append([]byte{}, buf.Bytes()...) -} - -func encodeInsertOperation(ibuf, buf *bytes.Buffer) { - if ibuf.Len() == 0 { - return - } - - b := ibuf.Bytes() - s := ibuf.Len() - o := 0 - for { - if s <= 127 { - break - } - buf.WriteByte(byte(127)) - buf.Write(b[o : o+127]) - s -= 127 - o += 127 - } - buf.WriteByte(byte(s)) - buf.Write(b[o : o+s]) - - ibuf.Reset() -} - -func deltaEncodeSize(size int) []byte { - var ret []byte - c := size & 0x7f - size >>= 7 - for { - if size == 0 { - break - } - - ret = append(ret, byte(c|0x80)) - c = size & 0x7f - size >>= 7 - } - ret = append(ret, byte(c)) - - return ret -} - -func encodeCopyOperation(offset, length int) []byte { - code := 0x80 - var opcodes []byte - - var i uint - for i = 0; i < 4; i++ { - f := 0xff << (i * 8) - if offset&f != 0 { - opcodes = append(opcodes, byte(offset&f>>(i*8))) - code |= 0x01 << i - } - } - - for i = 0; i < 3; i++ { - f := 0xff << (i * 8) - if length&f != 0 { - opcodes = append(opcodes, byte(length&f>>(i*8))) - code |= 0x10 << i - } - } - - return append([]byte{byte(code)}, opcodes...) -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/doc.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/doc.go deleted file mode 100644 index 2882a7f..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/doc.go +++ /dev/null @@ -1,39 +0,0 @@ -// Package packfile implements encoding and decoding of packfile format. -// -// == pack-*.pack files have the following format: -// -// - A header appears at the beginning and consists of the following: -// -// 4-byte signature: -// The signature is: {'P', 'A', 'C', 'K'} -// -// 4-byte version number (network byte order): -// GIT currently accepts version number 2 or 3 but -// generates version 2 only. -// -// 4-byte number of objects contained in the pack (network byte order) -// -// Observation: we cannot have more than 4G versions ;-) and -// more than 4G objects in a pack. -// -// - The header is followed by number of object entries, each of -// which looks like this: -// -// (undeltified representation) -// n-byte type and length (3-bit type, (n-1)*7+4-bit length) -// compressed data -// -// (deltified representation) -// n-byte type and length (3-bit type, (n-1)*7+4-bit length) -// 20-byte base object name -// compressed delta data -// -// Observation: length of each object is encoded in a variable -// length format and is not constrained to 32-bit or anything. -// -// - The trailer records 20-byte SHA1 checksum of all of the above. -// -// -// Source: -// https://www.kernel.org/pub/software/scm/git/docs/v1.7.5/technical/pack-protocol.txt -package packfile diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/encoder.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/encoder.go deleted file mode 100644 index b077918..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/encoder.go +++ /dev/null @@ -1,219 +0,0 @@ -package packfile - -import ( - "compress/zlib" - "crypto/sha1" - "fmt" - "io" - - "gopkg.in/src-d/go-git.v4/plumbing" - "gopkg.in/src-d/go-git.v4/plumbing/storer" - "gopkg.in/src-d/go-git.v4/utils/binary" -) - -// Encoder gets the data from the storage and write it into the writer in PACK -// format -type Encoder struct { - selector *deltaSelector - w *offsetWriter - zw *zlib.Writer - hasher plumbing.Hasher - - useRefDeltas bool -} - -// NewEncoder creates a new packfile encoder using a specific Writer and -// EncodedObjectStorer. By default deltas used to generate the packfile will be -// OFSDeltaObject. To use Reference deltas, set useRefDeltas to true. -func NewEncoder(w io.Writer, s storer.EncodedObjectStorer, useRefDeltas bool) *Encoder { - h := plumbing.Hasher{ - Hash: sha1.New(), - } - mw := io.MultiWriter(w, h) - ow := newOffsetWriter(mw) - zw := zlib.NewWriter(mw) - return &Encoder{ - selector: newDeltaSelector(s), - w: ow, - zw: zw, - hasher: h, - useRefDeltas: useRefDeltas, - } -} - -// Encode creates a packfile containing all the objects referenced in -// hashes and writes it to the writer in the Encoder. `packWindow` -// specifies the size of the sliding window used to compare objects -// for delta compression; 0 turns off delta compression entirely. -func (e *Encoder) Encode( - hashes []plumbing.Hash, - packWindow uint, -) (plumbing.Hash, error) { - objects, err := e.selector.ObjectsToPack(hashes, packWindow) - if err != nil { - return plumbing.ZeroHash, err - } - - return e.encode(objects) -} - -func (e *Encoder) encode(objects []*ObjectToPack) (plumbing.Hash, error) { - if err := e.head(len(objects)); err != nil { - return plumbing.ZeroHash, err - } - - for _, o := range objects { - if err := e.entry(o); err != nil { - return plumbing.ZeroHash, err - } - } - - return e.footer() -} - -func (e *Encoder) head(numEntries int) error { - return binary.Write( - e.w, - signature, - int32(VersionSupported), - int32(numEntries), - ) -} - -func (e *Encoder) entry(o *ObjectToPack) error { - if o.WantWrite() { - // A cycle exists in this delta chain. This should only occur if a - // selected object representation disappeared during writing - // (for example due to a concurrent repack) and a different base - // was chosen, forcing a cycle. Select something other than a - // delta, and write this object. - e.selector.restoreOriginal(o) - o.BackToOriginal() - } - - if o.IsWritten() { - return nil - } - - o.MarkWantWrite() - - if err := e.writeBaseIfDelta(o); err != nil { - return err - } - - // We need to check if we already write that object due a cyclic delta chain - if o.IsWritten() { - return nil - } - - o.Offset = e.w.Offset() - - if o.IsDelta() { - if err := e.writeDeltaHeader(o); err != nil { - return err - } - } else { - if err := e.entryHead(o.Type(), o.Size()); err != nil { - return err - } - } - - e.zw.Reset(e.w) - or, err := o.Object.Reader() - if err != nil { - return err - } - - _, err = io.Copy(e.zw, or) - if err != nil { - return err - } - - return e.zw.Close() -} - -func (e *Encoder) writeBaseIfDelta(o *ObjectToPack) error { - if o.IsDelta() && !o.Base.IsWritten() { - // We must write base first - return e.entry(o.Base) - } - - return nil -} - -func (e *Encoder) writeDeltaHeader(o *ObjectToPack) error { - // Write offset deltas by default - t := plumbing.OFSDeltaObject - if e.useRefDeltas { - t = plumbing.REFDeltaObject - } - - if err := e.entryHead(t, o.Object.Size()); err != nil { - return err - } - - if e.useRefDeltas { - return e.writeRefDeltaHeader(o.Base.Hash()) - } else { - return e.writeOfsDeltaHeader(o) - } -} - -func (e *Encoder) writeRefDeltaHeader(base plumbing.Hash) error { - return binary.Write(e.w, base) -} - -func (e *Encoder) writeOfsDeltaHeader(o *ObjectToPack) error { - // for OFS_DELTA, offset of the base is interpreted as negative offset - // relative to the type-byte of the header of the ofs-delta entry. - relativeOffset := o.Offset - o.Base.Offset - if relativeOffset <= 0 { - return fmt.Errorf("bad offset for OFS_DELTA entry: %d", relativeOffset) - } - - return binary.WriteVariableWidthInt(e.w, relativeOffset) -} - -func (e *Encoder) entryHead(typeNum plumbing.ObjectType, size int64) error { - t := int64(typeNum) - header := []byte{} - c := (t << firstLengthBits) | (size & maskFirstLength) - size >>= firstLengthBits - for { - if size == 0 { - break - } - header = append(header, byte(c|maskContinue)) - c = size & int64(maskLength) - size >>= lengthBits - } - - header = append(header, byte(c)) - _, err := e.w.Write(header) - - return err -} - -func (e *Encoder) footer() (plumbing.Hash, error) { - h := e.hasher.Sum() - return h, binary.Write(e.w, h) -} - -type offsetWriter struct { - w io.Writer - offset int64 -} - -func newOffsetWriter(w io.Writer) *offsetWriter { - return &offsetWriter{w: w} -} - -func (ow *offsetWriter) Write(p []byte) (n int, err error) { - n, err = ow.w.Write(p) - ow.offset += int64(n) - return n, err -} - -func (ow *offsetWriter) Offset() int64 { - return ow.offset -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/error.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/error.go deleted file mode 100644 index c0b9163..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/error.go +++ /dev/null @@ -1,30 +0,0 @@ -package packfile - -import "fmt" - -// Error specifies errors returned during packfile parsing. -type Error struct { - reason, details string -} - -// NewError returns a new error. -func NewError(reason string) *Error { - return &Error{reason: reason} -} - -// Error returns a text representation of the error. -func (e *Error) Error() string { - if e.details == "" { - return e.reason - } - - return fmt.Sprintf("%s: %s", e.reason, e.details) -} - -// AddDetails adds details to an error, with additional text. -func (e *Error) AddDetails(format string, args ...interface{}) *Error { - return &Error{ - reason: e.reason, - details: fmt.Sprintf(format, args...), - } -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/fsobject.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/fsobject.go deleted file mode 100644 index a268bce..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/fsobject.go +++ /dev/null @@ -1,116 +0,0 @@ -package packfile - -import ( - "io" - - billy "gopkg.in/src-d/go-billy.v4" - "gopkg.in/src-d/go-git.v4/plumbing" - "gopkg.in/src-d/go-git.v4/plumbing/cache" - "gopkg.in/src-d/go-git.v4/plumbing/format/idxfile" -) - -// FSObject is an object from the packfile on the filesystem. -type FSObject struct { - hash plumbing.Hash - h *ObjectHeader - offset int64 - size int64 - typ plumbing.ObjectType - index idxfile.Index - fs billy.Filesystem - path string - cache cache.Object -} - -// NewFSObject creates a new filesystem object. -func NewFSObject( - hash plumbing.Hash, - finalType plumbing.ObjectType, - offset int64, - contentSize int64, - index idxfile.Index, - fs billy.Filesystem, - path string, - cache cache.Object, -) *FSObject { - return &FSObject{ - hash: hash, - offset: offset, - size: contentSize, - typ: finalType, - index: index, - fs: fs, - path: path, - cache: cache, - } -} - -// Reader implements the plumbing.EncodedObject interface. -func (o *FSObject) Reader() (io.ReadCloser, error) { - obj, ok := o.cache.Get(o.hash) - if ok && obj != o { - reader, err := obj.Reader() - if err != nil { - return nil, err - } - - return reader, nil - } - - f, err := o.fs.Open(o.path) - if err != nil { - return nil, err - } - - p := NewPackfileWithCache(o.index, nil, f, o.cache) - r, err := p.getObjectContent(o.offset) - if err != nil { - _ = f.Close() - return nil, err - } - - if err := f.Close(); err != nil { - return nil, err - } - - return r, nil -} - -// SetSize implements the plumbing.EncodedObject interface. This method -// is a noop. -func (o *FSObject) SetSize(int64) {} - -// SetType implements the plumbing.EncodedObject interface. This method is -// a noop. -func (o *FSObject) SetType(plumbing.ObjectType) {} - -// Hash implements the plumbing.EncodedObject interface. -func (o *FSObject) Hash() plumbing.Hash { return o.hash } - -// Size implements the plumbing.EncodedObject interface. -func (o *FSObject) Size() int64 { return o.size } - -// Type implements the plumbing.EncodedObject interface. -func (o *FSObject) Type() plumbing.ObjectType { - return o.typ -} - -// Writer implements the plumbing.EncodedObject interface. This method always -// returns a nil writer. -func (o *FSObject) Writer() (io.WriteCloser, error) { - return nil, nil -} - -type objectReader struct { - io.ReadCloser - f billy.File -} - -func (r *objectReader) Close() error { - if err := r.ReadCloser.Close(); err != nil { - _ = r.f.Close() - return err - } - - return r.f.Close() -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/object_pack.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/object_pack.go deleted file mode 100644 index dfea571..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/object_pack.go +++ /dev/null @@ -1,164 +0,0 @@ -package packfile - -import ( - "gopkg.in/src-d/go-git.v4/plumbing" -) - -// ObjectToPack is a representation of an object that is going to be into a -// pack file. -type ObjectToPack struct { - // The main object to pack, it could be any object, including deltas - Object plumbing.EncodedObject - // Base is the object that a delta is based on (it could be also another delta). - // If the main object is not a delta, Base will be null - Base *ObjectToPack - // Original is the object that we can generate applying the delta to - // Base, or the same object as Object in the case of a non-delta - // object. - Original plumbing.EncodedObject - // Depth is the amount of deltas needed to resolve to obtain Original - // (delta based on delta based on ...) - Depth int - - // offset in pack when object has been already written, or 0 if it - // has not been written yet - Offset int64 - - // Information from the original object - resolvedOriginal bool - originalType plumbing.ObjectType - originalSize int64 - originalHash plumbing.Hash -} - -// newObjectToPack creates a correct ObjectToPack based on a non-delta object -func newObjectToPack(o plumbing.EncodedObject) *ObjectToPack { - return &ObjectToPack{ - Object: o, - Original: o, - } -} - -// newDeltaObjectToPack creates a correct ObjectToPack for a delta object, based on -// his base (could be another delta), the delta target (in this case called original), -// and the delta Object itself -func newDeltaObjectToPack(base *ObjectToPack, original, delta plumbing.EncodedObject) *ObjectToPack { - return &ObjectToPack{ - Object: delta, - Base: base, - Original: original, - Depth: base.Depth + 1, - } -} - -// BackToOriginal converts that ObjectToPack to a non-deltified object if it was one -func (o *ObjectToPack) BackToOriginal() { - if o.IsDelta() && o.Original != nil { - o.Object = o.Original - o.Base = nil - o.Depth = 0 - } -} - -// IsWritten returns if that ObjectToPack was -// already written into the packfile or not -func (o *ObjectToPack) IsWritten() bool { - return o.Offset > 1 -} - -// MarkWantWrite marks this ObjectToPack as WantWrite -// to avoid delta chain loops -func (o *ObjectToPack) MarkWantWrite() { - o.Offset = 1 -} - -// WantWrite checks if this ObjectToPack was marked as WantWrite before -func (o *ObjectToPack) WantWrite() bool { - return o.Offset == 1 -} - -// SetOriginal sets both Original and saves size, type and hash. If object -// is nil Original is set but previous resolved values are kept -func (o *ObjectToPack) SetOriginal(obj plumbing.EncodedObject) { - o.Original = obj - o.SaveOriginalMetadata() -} - -// SaveOriginalMetadata saves size, type and hash of Original object -func (o *ObjectToPack) SaveOriginalMetadata() { - if o.Original != nil { - o.originalSize = o.Original.Size() - o.originalType = o.Original.Type() - o.originalHash = o.Original.Hash() - o.resolvedOriginal = true - } -} - -// CleanOriginal sets Original to nil -func (o *ObjectToPack) CleanOriginal() { - o.Original = nil -} - -func (o *ObjectToPack) Type() plumbing.ObjectType { - if o.Original != nil { - return o.Original.Type() - } - - if o.resolvedOriginal { - return o.originalType - } - - if o.Base != nil { - return o.Base.Type() - } - - if o.Object != nil { - return o.Object.Type() - } - - panic("cannot get type") -} - -func (o *ObjectToPack) Hash() plumbing.Hash { - if o.Original != nil { - return o.Original.Hash() - } - - if o.resolvedOriginal { - return o.originalHash - } - - do, ok := o.Object.(plumbing.DeltaObject) - if ok { - return do.ActualHash() - } - - panic("cannot get hash") -} - -func (o *ObjectToPack) Size() int64 { - if o.Original != nil { - return o.Original.Size() - } - - if o.resolvedOriginal { - return o.originalSize - } - - do, ok := o.Object.(plumbing.DeltaObject) - if ok { - return do.ActualSize() - } - - panic("cannot get ObjectToPack size") -} - -func (o *ObjectToPack) IsDelta() bool { - return o.Base != nil -} - -func (o *ObjectToPack) SetDelta(base *ObjectToPack, delta plumbing.EncodedObject) { - o.Object = delta - o.Base = base - o.Depth = base.Depth + 1 -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/packfile.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/packfile.go deleted file mode 100644 index 21a15de..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/packfile.go +++ /dev/null @@ -1,562 +0,0 @@ -package packfile - -import ( - "bytes" - "io" - "os" - - billy "gopkg.in/src-d/go-billy.v4" - "gopkg.in/src-d/go-git.v4/plumbing" - "gopkg.in/src-d/go-git.v4/plumbing/cache" - "gopkg.in/src-d/go-git.v4/plumbing/format/idxfile" - "gopkg.in/src-d/go-git.v4/plumbing/storer" -) - -var ( - // ErrInvalidObject is returned by Decode when an invalid object is - // found in the packfile. - ErrInvalidObject = NewError("invalid git object") - // ErrZLib is returned by Decode when there was an error unzipping - // the packfile contents. - ErrZLib = NewError("zlib reading error") -) - -// When reading small objects from packfile it is beneficial to do so at -// once to exploit the buffered I/O. In many cases the objects are so small -// that they were already loaded to memory when the object header was -// loaded from the packfile. Wrapping in FSObject would cause this buffered -// data to be thrown away and then re-read later, with the additional -// seeking causing reloads from disk. Objects smaller than this threshold -// are now always read into memory and stored in cache instead of being -// wrapped in FSObject. -const smallObjectThreshold = 16 * 1024 - -// Packfile allows retrieving information from inside a packfile. -type Packfile struct { - idxfile.Index - fs billy.Filesystem - file billy.File - s *Scanner - deltaBaseCache cache.Object - offsetToType map[int64]plumbing.ObjectType -} - -// NewPackfileWithCache creates a new Packfile with the given object cache. -// If the filesystem is provided, the packfile will return FSObjects, otherwise -// it will return MemoryObjects. -func NewPackfileWithCache( - index idxfile.Index, - fs billy.Filesystem, - file billy.File, - cache cache.Object, -) *Packfile { - s := NewScanner(file) - return &Packfile{ - index, - fs, - file, - s, - cache, - make(map[int64]plumbing.ObjectType), - } -} - -// NewPackfile returns a packfile representation for the given packfile file -// and packfile idx. -// If the filesystem is provided, the packfile will return FSObjects, otherwise -// it will return MemoryObjects. -func NewPackfile(index idxfile.Index, fs billy.Filesystem, file billy.File) *Packfile { - return NewPackfileWithCache(index, fs, file, cache.NewObjectLRUDefault()) -} - -// Get retrieves the encoded object in the packfile with the given hash. -func (p *Packfile) Get(h plumbing.Hash) (plumbing.EncodedObject, error) { - offset, err := p.FindOffset(h) - if err != nil { - return nil, err - } - - return p.objectAtOffset(offset, h) -} - -// GetByOffset retrieves the encoded object from the packfile at the given -// offset. -func (p *Packfile) GetByOffset(o int64) (plumbing.EncodedObject, error) { - hash, err := p.FindHash(o) - if err != nil { - return nil, err - } - - return p.objectAtOffset(o, hash) -} - -// GetSizeByOffset retrieves the size of the encoded object from the -// packfile with the given offset. -func (p *Packfile) GetSizeByOffset(o int64) (size int64, err error) { - if _, err := p.s.SeekFromStart(o); err != nil { - if err == io.EOF || isInvalid(err) { - return 0, plumbing.ErrObjectNotFound - } - - return 0, err - } - - h, err := p.nextObjectHeader() - if err != nil { - return 0, err - } - return p.getObjectSize(h) -} - -func (p *Packfile) objectHeaderAtOffset(offset int64) (*ObjectHeader, error) { - h, err := p.s.SeekObjectHeader(offset) - p.s.pendingObject = nil - return h, err -} - -func (p *Packfile) nextObjectHeader() (*ObjectHeader, error) { - h, err := p.s.NextObjectHeader() - p.s.pendingObject = nil - return h, err -} - -func (p *Packfile) getDeltaObjectSize(buf *bytes.Buffer) int64 { - delta := buf.Bytes() - _, delta = decodeLEB128(delta) // skip src size - sz, _ := decodeLEB128(delta) - return int64(sz) -} - -func (p *Packfile) getObjectSize(h *ObjectHeader) (int64, error) { - switch h.Type { - case plumbing.CommitObject, plumbing.TreeObject, plumbing.BlobObject, plumbing.TagObject: - return h.Length, nil - case plumbing.REFDeltaObject, plumbing.OFSDeltaObject: - buf := bufPool.Get().(*bytes.Buffer) - defer bufPool.Put(buf) - buf.Reset() - - if _, _, err := p.s.NextObject(buf); err != nil { - return 0, err - } - - return p.getDeltaObjectSize(buf), nil - default: - return 0, ErrInvalidObject.AddDetails("type %q", h.Type) - } -} - -func (p *Packfile) getObjectType(h *ObjectHeader) (typ plumbing.ObjectType, err error) { - switch h.Type { - case plumbing.CommitObject, plumbing.TreeObject, plumbing.BlobObject, plumbing.TagObject: - return h.Type, nil - case plumbing.REFDeltaObject, plumbing.OFSDeltaObject: - var offset int64 - if h.Type == plumbing.REFDeltaObject { - offset, err = p.FindOffset(h.Reference) - if err != nil { - return - } - } else { - offset = h.OffsetReference - } - - if baseType, ok := p.offsetToType[offset]; ok { - typ = baseType - } else { - h, err = p.objectHeaderAtOffset(offset) - if err != nil { - return - } - - typ, err = p.getObjectType(h) - if err != nil { - return - } - } - default: - err = ErrInvalidObject.AddDetails("type %q", h.Type) - } - - p.offsetToType[h.Offset] = typ - - return -} - -func (p *Packfile) objectAtOffset(offset int64, hash plumbing.Hash) (plumbing.EncodedObject, error) { - if obj, ok := p.cacheGet(hash); ok { - return obj, nil - } - - h, err := p.objectHeaderAtOffset(offset) - if err != nil { - if err == io.EOF || isInvalid(err) { - return nil, plumbing.ErrObjectNotFound - } - return nil, err - } - - return p.getNextObject(h, hash) -} - -func (p *Packfile) getNextObject(h *ObjectHeader, hash plumbing.Hash) (plumbing.EncodedObject, error) { - var err error - - // If we have no filesystem, we will return a MemoryObject instead - // of an FSObject. - if p.fs == nil { - return p.getNextMemoryObject(h) - } - - // If the object is small enough then read it completely into memory now since - // it is already read from disk into buffer anyway. For delta objects we want - // to perform the optimization too, but we have to be careful about applying - // small deltas on big objects. - var size int64 - if h.Length <= smallObjectThreshold { - if h.Type != plumbing.OFSDeltaObject && h.Type != plumbing.REFDeltaObject { - return p.getNextMemoryObject(h) - } - - // For delta objects we read the delta data and apply the small object - // optimization only if the expanded version of the object still meets - // the small object threshold condition. - buf := bufPool.Get().(*bytes.Buffer) - defer bufPool.Put(buf) - buf.Reset() - if _, _, err := p.s.NextObject(buf); err != nil { - return nil, err - } - - size = p.getDeltaObjectSize(buf) - if size <= smallObjectThreshold { - var obj = new(plumbing.MemoryObject) - obj.SetSize(size) - if h.Type == plumbing.REFDeltaObject { - err = p.fillREFDeltaObjectContentWithBuffer(obj, h.Reference, buf) - } else { - err = p.fillOFSDeltaObjectContentWithBuffer(obj, h.OffsetReference, buf) - } - return obj, err - } - } else { - size, err = p.getObjectSize(h) - if err != nil { - return nil, err - } - } - - typ, err := p.getObjectType(h) - if err != nil { - return nil, err - } - - p.offsetToType[h.Offset] = typ - - return NewFSObject( - hash, - typ, - h.Offset, - size, - p.Index, - p.fs, - p.file.Name(), - p.deltaBaseCache, - ), nil -} - -func (p *Packfile) getObjectContent(offset int64) (io.ReadCloser, error) { - h, err := p.objectHeaderAtOffset(offset) - if err != nil { - return nil, err - } - - // getObjectContent is called from FSObject, so we have to explicitly - // get memory object here to avoid recursive cycle - obj, err := p.getNextMemoryObject(h) - if err != nil { - return nil, err - } - - return obj.Reader() -} - -func (p *Packfile) getNextMemoryObject(h *ObjectHeader) (plumbing.EncodedObject, error) { - var obj = new(plumbing.MemoryObject) - obj.SetSize(h.Length) - obj.SetType(h.Type) - - var err error - switch h.Type { - case plumbing.CommitObject, plumbing.TreeObject, plumbing.BlobObject, plumbing.TagObject: - err = p.fillRegularObjectContent(obj) - case plumbing.REFDeltaObject: - err = p.fillREFDeltaObjectContent(obj, h.Reference) - case plumbing.OFSDeltaObject: - err = p.fillOFSDeltaObjectContent(obj, h.OffsetReference) - default: - err = ErrInvalidObject.AddDetails("type %q", h.Type) - } - - if err != nil { - return nil, err - } - - p.offsetToType[h.Offset] = obj.Type() - - return obj, nil -} - -func (p *Packfile) fillRegularObjectContent(obj plumbing.EncodedObject) error { - w, err := obj.Writer() - if err != nil { - return err - } - - _, _, err = p.s.NextObject(w) - p.cachePut(obj) - - return err -} - -func (p *Packfile) fillREFDeltaObjectContent(obj plumbing.EncodedObject, ref plumbing.Hash) error { - buf := bufPool.Get().(*bytes.Buffer) - defer bufPool.Put(buf) - buf.Reset() - _, _, err := p.s.NextObject(buf) - if err != nil { - return err - } - - return p.fillREFDeltaObjectContentWithBuffer(obj, ref, buf) -} - -func (p *Packfile) fillREFDeltaObjectContentWithBuffer(obj plumbing.EncodedObject, ref plumbing.Hash, buf *bytes.Buffer) error { - var err error - - base, ok := p.cacheGet(ref) - if !ok { - base, err = p.Get(ref) - if err != nil { - return err - } - } - - obj.SetType(base.Type()) - err = ApplyDelta(obj, base, buf.Bytes()) - p.cachePut(obj) - - return err -} - -func (p *Packfile) fillOFSDeltaObjectContent(obj plumbing.EncodedObject, offset int64) error { - buf := bufPool.Get().(*bytes.Buffer) - defer bufPool.Put(buf) - buf.Reset() - _, _, err := p.s.NextObject(buf) - if err != nil { - return err - } - - return p.fillOFSDeltaObjectContentWithBuffer(obj, offset, buf) -} - -func (p *Packfile) fillOFSDeltaObjectContentWithBuffer(obj plumbing.EncodedObject, offset int64, buf *bytes.Buffer) error { - hash, err := p.FindHash(offset) - if err != nil { - return err - } - - base, err := p.objectAtOffset(offset, hash) - if err != nil { - return err - } - - obj.SetType(base.Type()) - err = ApplyDelta(obj, base, buf.Bytes()) - p.cachePut(obj) - - return err -} - -func (p *Packfile) cacheGet(h plumbing.Hash) (plumbing.EncodedObject, bool) { - if p.deltaBaseCache == nil { - return nil, false - } - - return p.deltaBaseCache.Get(h) -} - -func (p *Packfile) cachePut(obj plumbing.EncodedObject) { - if p.deltaBaseCache == nil { - return - } - - p.deltaBaseCache.Put(obj) -} - -// GetAll returns an iterator with all encoded objects in the packfile. -// The iterator returned is not thread-safe, it should be used in the same -// thread as the Packfile instance. -func (p *Packfile) GetAll() (storer.EncodedObjectIter, error) { - return p.GetByType(plumbing.AnyObject) -} - -// GetByType returns all the objects of the given type. -func (p *Packfile) GetByType(typ plumbing.ObjectType) (storer.EncodedObjectIter, error) { - switch typ { - case plumbing.AnyObject, - plumbing.BlobObject, - plumbing.TreeObject, - plumbing.CommitObject, - plumbing.TagObject: - entries, err := p.EntriesByOffset() - if err != nil { - return nil, err - } - - return &objectIter{ - // Easiest way to provide an object decoder is just to pass a Packfile - // instance. To not mess with the seeks, it's a new instance with a - // different scanner but the same cache and offset to hash map for - // reusing as much cache as possible. - p: p, - iter: entries, - typ: typ, - }, nil - default: - return nil, plumbing.ErrInvalidType - } -} - -// ID returns the ID of the packfile, which is the checksum at the end of it. -func (p *Packfile) ID() (plumbing.Hash, error) { - prev, err := p.file.Seek(-20, io.SeekEnd) - if err != nil { - return plumbing.ZeroHash, err - } - - var hash plumbing.Hash - if _, err := io.ReadFull(p.file, hash[:]); err != nil { - return plumbing.ZeroHash, err - } - - if _, err := p.file.Seek(prev, io.SeekStart); err != nil { - return plumbing.ZeroHash, err - } - - return hash, nil -} - -// Scanner returns the packfile's Scanner -func (p *Packfile) Scanner() *Scanner { - return p.s -} - -// Close the packfile and its resources. -func (p *Packfile) Close() error { - closer, ok := p.file.(io.Closer) - if !ok { - return nil - } - - return closer.Close() -} - -type objectIter struct { - p *Packfile - typ plumbing.ObjectType - iter idxfile.EntryIter -} - -func (i *objectIter) Next() (plumbing.EncodedObject, error) { - for { - e, err := i.iter.Next() - if err != nil { - return nil, err - } - - if i.typ != plumbing.AnyObject { - if typ, ok := i.p.offsetToType[int64(e.Offset)]; ok { - if typ != i.typ { - continue - } - } else if obj, ok := i.p.cacheGet(e.Hash); ok { - if obj.Type() != i.typ { - i.p.offsetToType[int64(e.Offset)] = obj.Type() - continue - } - return obj, nil - } else { - h, err := i.p.objectHeaderAtOffset(int64(e.Offset)) - if err != nil { - return nil, err - } - - if h.Type == plumbing.REFDeltaObject || h.Type == plumbing.OFSDeltaObject { - typ, err := i.p.getObjectType(h) - if err != nil { - return nil, err - } - if typ != i.typ { - i.p.offsetToType[int64(e.Offset)] = typ - continue - } - // getObjectType will seek in the file so we cannot use getNextObject safely - return i.p.objectAtOffset(int64(e.Offset), e.Hash) - } else { - if h.Type != i.typ { - i.p.offsetToType[int64(e.Offset)] = h.Type - continue - } - return i.p.getNextObject(h, e.Hash) - } - } - } - - obj, err := i.p.objectAtOffset(int64(e.Offset), e.Hash) - if err != nil { - return nil, err - } - - return obj, nil - } -} - -func (i *objectIter) ForEach(f func(plumbing.EncodedObject) error) error { - for { - o, err := i.Next() - if err != nil { - if err == io.EOF { - return nil - } - return err - } - - if err := f(o); err != nil { - return err - } - } -} - -func (i *objectIter) Close() { - i.iter.Close() -} - -// isInvalid checks whether an error is an os.PathError with an os.ErrInvalid -// error inside. It also checks for the windows error, which is different from -// os.ErrInvalid. -func isInvalid(err error) bool { - pe, ok := err.(*os.PathError) - if !ok { - return false - } - - errstr := pe.Err.Error() - return errstr == errInvalidUnix || errstr == errInvalidWindows -} - -// errInvalidWindows is the Windows equivalent to os.ErrInvalid -const errInvalidWindows = "The parameter is incorrect." - -var errInvalidUnix = os.ErrInvalid.Error() diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/parser.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/parser.go deleted file mode 100644 index 71cbba9..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/parser.go +++ /dev/null @@ -1,483 +0,0 @@ -package packfile - -import ( - "bytes" - "errors" - "io" - - "gopkg.in/src-d/go-git.v4/plumbing" - "gopkg.in/src-d/go-git.v4/plumbing/cache" - "gopkg.in/src-d/go-git.v4/plumbing/storer" -) - -var ( - // ErrReferenceDeltaNotFound is returned when the reference delta is not - // found. - ErrReferenceDeltaNotFound = errors.New("reference delta not found") - - // ErrNotSeekableSource is returned when the source for the parser is not - // seekable and a storage was not provided, so it can't be parsed. - ErrNotSeekableSource = errors.New("parser source is not seekable and storage was not provided") - - // ErrDeltaNotCached is returned when the delta could not be found in cache. - ErrDeltaNotCached = errors.New("delta could not be found in cache") -) - -// Observer interface is implemented by index encoders. -type Observer interface { - // OnHeader is called when a new packfile is opened. - OnHeader(count uint32) error - // OnInflatedObjectHeader is called for each object header read. - OnInflatedObjectHeader(t plumbing.ObjectType, objSize int64, pos int64) error - // OnInflatedObjectContent is called for each decoded object. - OnInflatedObjectContent(h plumbing.Hash, pos int64, crc uint32, content []byte) error - // OnFooter is called when decoding is done. - OnFooter(h plumbing.Hash) error -} - -// Parser decodes a packfile and calls any observer associated to it. Is used -// to generate indexes. -type Parser struct { - storage storer.EncodedObjectStorer - scanner *Scanner - count uint32 - oi []*objectInfo - oiByHash map[plumbing.Hash]*objectInfo - oiByOffset map[int64]*objectInfo - hashOffset map[plumbing.Hash]int64 - checksum plumbing.Hash - - cache *cache.BufferLRU - // delta content by offset, only used if source is not seekable - deltas map[int64][]byte - - ob []Observer -} - -// NewParser creates a new Parser. The Scanner source must be seekable. -// If it's not, NewParserWithStorage should be used instead. -func NewParser(scanner *Scanner, ob ...Observer) (*Parser, error) { - return NewParserWithStorage(scanner, nil, ob...) -} - -// NewParserWithStorage creates a new Parser. The scanner source must either -// be seekable or a storage must be provided. -func NewParserWithStorage( - scanner *Scanner, - storage storer.EncodedObjectStorer, - ob ...Observer, -) (*Parser, error) { - if !scanner.IsSeekable && storage == nil { - return nil, ErrNotSeekableSource - } - - var deltas map[int64][]byte - if !scanner.IsSeekable { - deltas = make(map[int64][]byte) - } - - return &Parser{ - storage: storage, - scanner: scanner, - ob: ob, - count: 0, - cache: cache.NewBufferLRUDefault(), - deltas: deltas, - }, nil -} - -func (p *Parser) forEachObserver(f func(o Observer) error) error { - for _, o := range p.ob { - if err := f(o); err != nil { - return err - } - } - return nil -} - -func (p *Parser) onHeader(count uint32) error { - return p.forEachObserver(func(o Observer) error { - return o.OnHeader(count) - }) -} - -func (p *Parser) onInflatedObjectHeader( - t plumbing.ObjectType, - objSize int64, - pos int64, -) error { - return p.forEachObserver(func(o Observer) error { - return o.OnInflatedObjectHeader(t, objSize, pos) - }) -} - -func (p *Parser) onInflatedObjectContent( - h plumbing.Hash, - pos int64, - crc uint32, - content []byte, -) error { - return p.forEachObserver(func(o Observer) error { - return o.OnInflatedObjectContent(h, pos, crc, content) - }) -} - -func (p *Parser) onFooter(h plumbing.Hash) error { - return p.forEachObserver(func(o Observer) error { - return o.OnFooter(h) - }) -} - -// Parse start decoding phase of the packfile. -func (p *Parser) Parse() (plumbing.Hash, error) { - if err := p.init(); err != nil { - return plumbing.ZeroHash, err - } - - if err := p.indexObjects(); err != nil { - return plumbing.ZeroHash, err - } - - var err error - p.checksum, err = p.scanner.Checksum() - if err != nil && err != io.EOF { - return plumbing.ZeroHash, err - } - - if err := p.resolveDeltas(); err != nil { - return plumbing.ZeroHash, err - } - - if err := p.onFooter(p.checksum); err != nil { - return plumbing.ZeroHash, err - } - - return p.checksum, nil -} - -func (p *Parser) init() error { - _, c, err := p.scanner.Header() - if err != nil { - return err - } - - if err := p.onHeader(c); err != nil { - return err - } - - p.count = c - p.oiByHash = make(map[plumbing.Hash]*objectInfo, p.count) - p.oiByOffset = make(map[int64]*objectInfo, p.count) - p.oi = make([]*objectInfo, p.count) - - return nil -} - -func (p *Parser) indexObjects() error { - buf := new(bytes.Buffer) - - for i := uint32(0); i < p.count; i++ { - buf.Reset() - - oh, err := p.scanner.NextObjectHeader() - if err != nil { - return err - } - - delta := false - var ota *objectInfo - switch t := oh.Type; t { - case plumbing.OFSDeltaObject: - delta = true - - parent, ok := p.oiByOffset[oh.OffsetReference] - if !ok { - return plumbing.ErrObjectNotFound - } - - ota = newDeltaObject(oh.Offset, oh.Length, t, parent) - parent.Children = append(parent.Children, ota) - case plumbing.REFDeltaObject: - delta = true - parent, ok := p.oiByHash[oh.Reference] - if !ok { - // can't find referenced object in this pack file - // this must be a "thin" pack. - parent = &objectInfo{ //Placeholder parent - SHA1: oh.Reference, - ExternalRef: true, // mark as an external reference that must be resolved - Type: plumbing.AnyObject, - DiskType: plumbing.AnyObject, - } - p.oiByHash[oh.Reference] = parent - } - ota = newDeltaObject(oh.Offset, oh.Length, t, parent) - parent.Children = append(parent.Children, ota) - - default: - ota = newBaseObject(oh.Offset, oh.Length, t) - } - - _, crc, err := p.scanner.NextObject(buf) - if err != nil { - return err - } - - ota.Crc32 = crc - ota.Length = oh.Length - - data := buf.Bytes() - if !delta { - sha1, err := getSHA1(ota.Type, data) - if err != nil { - return err - } - - ota.SHA1 = sha1 - p.oiByHash[ota.SHA1] = ota - } - - if p.storage != nil && !delta { - obj := new(plumbing.MemoryObject) - obj.SetSize(oh.Length) - obj.SetType(oh.Type) - if _, err := obj.Write(data); err != nil { - return err - } - - if _, err := p.storage.SetEncodedObject(obj); err != nil { - return err - } - } - - if delta && !p.scanner.IsSeekable { - p.deltas[oh.Offset] = make([]byte, len(data)) - copy(p.deltas[oh.Offset], data) - } - - p.oiByOffset[oh.Offset] = ota - p.oi[i] = ota - } - - return nil -} - -func (p *Parser) resolveDeltas() error { - for _, obj := range p.oi { - content, err := p.get(obj) - if err != nil { - return err - } - - if err := p.onInflatedObjectHeader(obj.Type, obj.Length, obj.Offset); err != nil { - return err - } - - if err := p.onInflatedObjectContent(obj.SHA1, obj.Offset, obj.Crc32, content); err != nil { - return err - } - - if !obj.IsDelta() && len(obj.Children) > 0 { - for _, child := range obj.Children { - if _, err := p.resolveObject(child, content); err != nil { - return err - } - } - - // Remove the delta from the cache. - if obj.DiskType.IsDelta() && !p.scanner.IsSeekable { - delete(p.deltas, obj.Offset) - } - } - } - - return nil -} - -func (p *Parser) get(o *objectInfo) (b []byte, err error) { - var ok bool - if !o.ExternalRef { // skip cache check for placeholder parents - b, ok = p.cache.Get(o.Offset) - } - - // If it's not on the cache and is not a delta we can try to find it in the - // storage, if there's one. External refs must enter here. - if !ok && p.storage != nil && !o.Type.IsDelta() { - e, err := p.storage.EncodedObject(plumbing.AnyObject, o.SHA1) - if err != nil { - return nil, err - } - o.Type = e.Type() - - r, err := e.Reader() - if err != nil { - return nil, err - } - - b = make([]byte, e.Size()) - if _, err = r.Read(b); err != nil { - return nil, err - } - } - - if b != nil { - return b, nil - } - - if o.ExternalRef { - // we were not able to resolve a ref in a thin pack - return nil, ErrReferenceDeltaNotFound - } - - var data []byte - if o.DiskType.IsDelta() { - base, err := p.get(o.Parent) - if err != nil { - return nil, err - } - - data, err = p.resolveObject(o, base) - if err != nil { - return nil, err - } - } else { - data, err = p.readData(o) - if err != nil { - return nil, err - } - } - - if len(o.Children) > 0 { - p.cache.Put(o.Offset, data) - } - - return data, nil -} - -func (p *Parser) resolveObject( - o *objectInfo, - base []byte, -) ([]byte, error) { - if !o.DiskType.IsDelta() { - return nil, nil - } - - data, err := p.readData(o) - if err != nil { - return nil, err - } - - data, err = applyPatchBase(o, data, base) - if err != nil { - return nil, err - } - - if p.storage != nil { - obj := new(plumbing.MemoryObject) - obj.SetSize(o.Size()) - obj.SetType(o.Type) - if _, err := obj.Write(data); err != nil { - return nil, err - } - - if _, err := p.storage.SetEncodedObject(obj); err != nil { - return nil, err - } - } - - return data, nil -} - -func (p *Parser) readData(o *objectInfo) ([]byte, error) { - if !p.scanner.IsSeekable && o.DiskType.IsDelta() { - data, ok := p.deltas[o.Offset] - if !ok { - return nil, ErrDeltaNotCached - } - - return data, nil - } - - if _, err := p.scanner.SeekObjectHeader(o.Offset); err != nil { - return nil, err - } - - buf := new(bytes.Buffer) - if _, _, err := p.scanner.NextObject(buf); err != nil { - return nil, err - } - - return buf.Bytes(), nil -} - -func applyPatchBase(ota *objectInfo, data, base []byte) ([]byte, error) { - patched, err := PatchDelta(base, data) - if err != nil { - return nil, err - } - - if ota.SHA1 == plumbing.ZeroHash { - ota.Type = ota.Parent.Type - sha1, err := getSHA1(ota.Type, patched) - if err != nil { - return nil, err - } - - ota.SHA1 = sha1 - ota.Length = int64(len(patched)) - } - - return patched, nil -} - -func getSHA1(t plumbing.ObjectType, data []byte) (plumbing.Hash, error) { - hasher := plumbing.NewHasher(t, int64(len(data))) - if _, err := hasher.Write(data); err != nil { - return plumbing.ZeroHash, err - } - - return hasher.Sum(), nil -} - -type objectInfo struct { - Offset int64 - Length int64 - Type plumbing.ObjectType - DiskType plumbing.ObjectType - ExternalRef bool // indicates this is an external reference in a thin pack file - - Crc32 uint32 - - Parent *objectInfo - Children []*objectInfo - SHA1 plumbing.Hash -} - -func newBaseObject(offset, length int64, t plumbing.ObjectType) *objectInfo { - return newDeltaObject(offset, length, t, nil) -} - -func newDeltaObject( - offset, length int64, - t plumbing.ObjectType, - parent *objectInfo, -) *objectInfo { - obj := &objectInfo{ - Offset: offset, - Length: length, - Type: t, - DiskType: t, - Crc32: 0, - Parent: parent, - } - - return obj -} - -func (o *objectInfo) IsDelta() bool { - return o.Type.IsDelta() -} - -func (o *objectInfo) Size() int64 { - return o.Length -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/patch_delta.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/patch_delta.go deleted file mode 100644 index a972f1c..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/patch_delta.go +++ /dev/null @@ -1,229 +0,0 @@ -package packfile - -import ( - "errors" - "io/ioutil" - - "gopkg.in/src-d/go-git.v4/plumbing" -) - -// See https://github.com/git/git/blob/49fa3dc76179e04b0833542fa52d0f287a4955ac/delta.h -// https://github.com/git/git/blob/c2c5f6b1e479f2c38e0e01345350620944e3527f/patch-delta.c, -// and https://github.com/tarruda/node-git-core/blob/master/src/js/delta.js -// for details about the delta format. - -const deltaSizeMin = 4 - -// ApplyDelta writes to target the result of applying the modification deltas in delta to base. -func ApplyDelta(target, base plumbing.EncodedObject, delta []byte) error { - r, err := base.Reader() - if err != nil { - return err - } - - w, err := target.Writer() - if err != nil { - return err - } - - src, err := ioutil.ReadAll(r) - if err != nil { - return err - } - - dst, err := PatchDelta(src, delta) - if err != nil { - return err - } - - target.SetSize(int64(len(dst))) - - _, err = w.Write(dst) - return err -} - -var ( - ErrInvalidDelta = errors.New("invalid delta") - ErrDeltaCmd = errors.New("wrong delta command") -) - -// PatchDelta returns the result of applying the modification deltas in delta to src. -// An error will be returned if delta is corrupted (ErrDeltaLen) or an action command -// is not copy from source or copy from delta (ErrDeltaCmd). -func PatchDelta(src, delta []byte) ([]byte, error) { - if len(delta) < deltaSizeMin { - return nil, ErrInvalidDelta - } - - srcSz, delta := decodeLEB128(delta) - if srcSz != uint(len(src)) { - return nil, ErrInvalidDelta - } - - targetSz, delta := decodeLEB128(delta) - remainingTargetSz := targetSz - - var cmd byte - dest := make([]byte, 0, targetSz) - for { - if len(delta) == 0 { - return nil, ErrInvalidDelta - } - - cmd = delta[0] - delta = delta[1:] - if isCopyFromSrc(cmd) { - var offset, sz uint - var err error - offset, delta, err = decodeOffset(cmd, delta) - if err != nil { - return nil, err - } - - sz, delta, err = decodeSize(cmd, delta) - if err != nil { - return nil, err - } - - if invalidSize(sz, targetSz) || - invalidOffsetSize(offset, sz, srcSz) { - break - } - dest = append(dest, src[offset:offset+sz]...) - remainingTargetSz -= sz - } else if isCopyFromDelta(cmd) { - sz := uint(cmd) // cmd is the size itself - if invalidSize(sz, targetSz) { - return nil, ErrInvalidDelta - } - - if uint(len(delta)) < sz { - return nil, ErrInvalidDelta - } - - dest = append(dest, delta[0:sz]...) - remainingTargetSz -= sz - delta = delta[sz:] - } else { - return nil, ErrDeltaCmd - } - - if remainingTargetSz <= 0 { - break - } - } - - return dest, nil -} - -// Decodes a number encoded as an unsigned LEB128 at the start of some -// binary data and returns the decoded number and the rest of the -// stream. -// -// This must be called twice on the delta data buffer, first to get the -// expected source buffer size, and again to get the target buffer size. -func decodeLEB128(input []byte) (uint, []byte) { - var num, sz uint - var b byte - for { - b = input[sz] - num |= (uint(b) & payload) << (sz * 7) // concats 7 bits chunks - sz++ - - if uint(b)&continuation == 0 || sz == uint(len(input)) { - break - } - } - - return num, input[sz:] -} - -const ( - payload = 0x7f // 0111 1111 - continuation = 0x80 // 1000 0000 -) - -func isCopyFromSrc(cmd byte) bool { - return (cmd & 0x80) != 0 -} - -func isCopyFromDelta(cmd byte) bool { - return (cmd&0x80) == 0 && cmd != 0 -} - -func decodeOffset(cmd byte, delta []byte) (uint, []byte, error) { - var offset uint - if (cmd & 0x01) != 0 { - if len(delta) == 0 { - return 0, nil, ErrInvalidDelta - } - offset = uint(delta[0]) - delta = delta[1:] - } - if (cmd & 0x02) != 0 { - if len(delta) == 0 { - return 0, nil, ErrInvalidDelta - } - offset |= uint(delta[0]) << 8 - delta = delta[1:] - } - if (cmd & 0x04) != 0 { - if len(delta) == 0 { - return 0, nil, ErrInvalidDelta - } - offset |= uint(delta[0]) << 16 - delta = delta[1:] - } - if (cmd & 0x08) != 0 { - if len(delta) == 0 { - return 0, nil, ErrInvalidDelta - } - offset |= uint(delta[0]) << 24 - delta = delta[1:] - } - - return offset, delta, nil -} - -func decodeSize(cmd byte, delta []byte) (uint, []byte, error) { - var sz uint - if (cmd & 0x10) != 0 { - if len(delta) == 0 { - return 0, nil, ErrInvalidDelta - } - sz = uint(delta[0]) - delta = delta[1:] - } - if (cmd & 0x20) != 0 { - if len(delta) == 0 { - return 0, nil, ErrInvalidDelta - } - sz |= uint(delta[0]) << 8 - delta = delta[1:] - } - if (cmd & 0x40) != 0 { - if len(delta) == 0 { - return 0, nil, ErrInvalidDelta - } - sz |= uint(delta[0]) << 16 - delta = delta[1:] - } - if sz == 0 { - sz = 0x10000 - } - - return sz, delta, nil -} - -func invalidSize(sz, targetSz uint) bool { - return sz > targetSz -} - -func invalidOffsetSize(offset, sz, srcSz uint) bool { - return sumOverflows(offset, sz) || - offset+sz > srcSz -} - -func sumOverflows(a, b uint) bool { - return a+b < a -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/scanner.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/scanner.go deleted file mode 100644 index 7b44192..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/scanner.go +++ /dev/null @@ -1,466 +0,0 @@ -package packfile - -import ( - "bufio" - "bytes" - "compress/zlib" - "fmt" - "hash" - "hash/crc32" - "io" - stdioutil "io/ioutil" - "sync" - - "gopkg.in/src-d/go-git.v4/plumbing" - "gopkg.in/src-d/go-git.v4/utils/binary" - "gopkg.in/src-d/go-git.v4/utils/ioutil" -) - -var ( - // ErrEmptyPackfile is returned by ReadHeader when no data is found in the packfile - ErrEmptyPackfile = NewError("empty packfile") - // ErrBadSignature is returned by ReadHeader when the signature in the packfile is incorrect. - ErrBadSignature = NewError("malformed pack file signature") - // ErrUnsupportedVersion is returned by ReadHeader when the packfile version is - // different than VersionSupported. - ErrUnsupportedVersion = NewError("unsupported packfile version") - // ErrSeekNotSupported returned if seek is not support - ErrSeekNotSupported = NewError("not seek support") -) - -// ObjectHeader contains the information related to the object, this information -// is collected from the previous bytes to the content of the object. -type ObjectHeader struct { - Type plumbing.ObjectType - Offset int64 - Length int64 - Reference plumbing.Hash - OffsetReference int64 -} - -type Scanner struct { - r *scannerReader - crc hash.Hash32 - - // pendingObject is used to detect if an object has been read, or still - // is waiting to be read - pendingObject *ObjectHeader - version, objects uint32 - - // lsSeekable says if this scanner can do Seek or not, to have a Scanner - // seekable a r implementing io.Seeker is required - IsSeekable bool -} - -// NewScanner returns a new Scanner based on a reader, if the given reader -// implements io.ReadSeeker the Scanner will be also Seekable -func NewScanner(r io.Reader) *Scanner { - _, ok := r.(io.ReadSeeker) - - crc := crc32.NewIEEE() - return &Scanner{ - r: newScannerReader(r, crc), - crc: crc, - IsSeekable: ok, - } -} - -func (s *Scanner) Reset(r io.Reader) { - _, ok := r.(io.ReadSeeker) - - s.r.Reset(r) - s.crc.Reset() - s.IsSeekable = ok - s.pendingObject = nil - s.version = 0 - s.objects = 0 -} - -// Header reads the whole packfile header (signature, version and object count). -// It returns the version and the object count and performs checks on the -// validity of the signature and the version fields. -func (s *Scanner) Header() (version, objects uint32, err error) { - if s.version != 0 { - return s.version, s.objects, nil - } - - sig, err := s.readSignature() - if err != nil { - if err == io.EOF { - err = ErrEmptyPackfile - } - - return - } - - if !s.isValidSignature(sig) { - err = ErrBadSignature - return - } - - version, err = s.readVersion() - s.version = version - if err != nil { - return - } - - if !s.isSupportedVersion(version) { - err = ErrUnsupportedVersion.AddDetails("%d", version) - return - } - - objects, err = s.readCount() - s.objects = objects - return -} - -// readSignature reads an returns the signature field in the packfile. -func (s *Scanner) readSignature() ([]byte, error) { - var sig = make([]byte, 4) - if _, err := io.ReadFull(s.r, sig); err != nil { - return []byte{}, err - } - - return sig, nil -} - -// isValidSignature returns if sig is a valid packfile signature. -func (s *Scanner) isValidSignature(sig []byte) bool { - return bytes.Equal(sig, signature) -} - -// readVersion reads and returns the version field of a packfile. -func (s *Scanner) readVersion() (uint32, error) { - return binary.ReadUint32(s.r) -} - -// isSupportedVersion returns whether version v is supported by the parser. -// The current supported version is VersionSupported, defined above. -func (s *Scanner) isSupportedVersion(v uint32) bool { - return v == VersionSupported -} - -// readCount reads and returns the count of objects field of a packfile. -func (s *Scanner) readCount() (uint32, error) { - return binary.ReadUint32(s.r) -} - -// SeekObjectHeader seeks to specified offset and returns the ObjectHeader -// for the next object in the reader -func (s *Scanner) SeekObjectHeader(offset int64) (*ObjectHeader, error) { - // if seeking we assume that you are not interested in the header - if s.version == 0 { - s.version = VersionSupported - } - - if _, err := s.r.Seek(offset, io.SeekStart); err != nil { - return nil, err - } - - h, err := s.nextObjectHeader() - if err != nil { - return nil, err - } - - h.Offset = offset - return h, nil -} - -// NextObjectHeader returns the ObjectHeader for the next object in the reader -func (s *Scanner) NextObjectHeader() (*ObjectHeader, error) { - if err := s.doPending(); err != nil { - return nil, err - } - - offset, err := s.r.Seek(0, io.SeekCurrent) - if err != nil { - return nil, err - } - - h, err := s.nextObjectHeader() - if err != nil { - return nil, err - } - - h.Offset = offset - return h, nil -} - -// nextObjectHeader returns the ObjectHeader for the next object in the reader -// without the Offset field -func (s *Scanner) nextObjectHeader() (*ObjectHeader, error) { - s.r.Flush() - s.crc.Reset() - - h := &ObjectHeader{} - s.pendingObject = h - - var err error - h.Offset, err = s.r.Seek(0, io.SeekCurrent) - if err != nil { - return nil, err - } - - h.Type, h.Length, err = s.readObjectTypeAndLength() - if err != nil { - return nil, err - } - - switch h.Type { - case plumbing.OFSDeltaObject: - no, err := binary.ReadVariableWidthInt(s.r) - if err != nil { - return nil, err - } - - h.OffsetReference = h.Offset - no - case plumbing.REFDeltaObject: - var err error - h.Reference, err = binary.ReadHash(s.r) - if err != nil { - return nil, err - } - } - - return h, nil -} - -func (s *Scanner) doPending() error { - if s.version == 0 { - var err error - s.version, s.objects, err = s.Header() - if err != nil { - return err - } - } - - return s.discardObjectIfNeeded() -} - -func (s *Scanner) discardObjectIfNeeded() error { - if s.pendingObject == nil { - return nil - } - - h := s.pendingObject - n, _, err := s.NextObject(stdioutil.Discard) - if err != nil { - return err - } - - if n != h.Length { - return fmt.Errorf( - "error discarding object, discarded %d, expected %d", - n, h.Length, - ) - } - - return nil -} - -// ReadObjectTypeAndLength reads and returns the object type and the -// length field from an object entry in a packfile. -func (s *Scanner) readObjectTypeAndLength() (plumbing.ObjectType, int64, error) { - t, c, err := s.readType() - if err != nil { - return t, 0, err - } - - l, err := s.readLength(c) - - return t, l, err -} - -func (s *Scanner) readType() (plumbing.ObjectType, byte, error) { - var c byte - var err error - if c, err = s.r.ReadByte(); err != nil { - return plumbing.ObjectType(0), 0, err - } - - typ := parseType(c) - - return typ, c, nil -} - -func parseType(b byte) plumbing.ObjectType { - return plumbing.ObjectType((b & maskType) >> firstLengthBits) -} - -// the length is codified in the last 4 bits of the first byte and in -// the last 7 bits of subsequent bytes. Last byte has a 0 MSB. -func (s *Scanner) readLength(first byte) (int64, error) { - length := int64(first & maskFirstLength) - - c := first - shift := firstLengthBits - var err error - for c&maskContinue > 0 { - if c, err = s.r.ReadByte(); err != nil { - return 0, err - } - - length += int64(c&maskLength) << shift - shift += lengthBits - } - - return length, nil -} - -// NextObject writes the content of the next object into the reader, returns -// the number of bytes written, the CRC32 of the content and an error, if any -func (s *Scanner) NextObject(w io.Writer) (written int64, crc32 uint32, err error) { - s.pendingObject = nil - written, err = s.copyObject(w) - - s.r.Flush() - crc32 = s.crc.Sum32() - s.crc.Reset() - - return -} - -// ReadRegularObject reads and write a non-deltified object -// from it zlib stream in an object entry in the packfile. -func (s *Scanner) copyObject(w io.Writer) (n int64, err error) { - zr := zlibReaderPool.Get().(io.ReadCloser) - defer zlibReaderPool.Put(zr) - - if err = zr.(zlib.Resetter).Reset(s.r, nil); err != nil { - return 0, fmt.Errorf("zlib reset error: %s", err) - } - - defer ioutil.CheckClose(zr, &err) - buf := byteSlicePool.Get().([]byte) - n, err = io.CopyBuffer(w, zr, buf) - byteSlicePool.Put(buf) - return -} - -var byteSlicePool = sync.Pool{ - New: func() interface{} { - return make([]byte, 32*1024) - }, -} - -// SeekFromStart sets a new offset from start, returns the old position before -// the change. -func (s *Scanner) SeekFromStart(offset int64) (previous int64, err error) { - // if seeking we assume that you are not interested in the header - if s.version == 0 { - s.version = VersionSupported - } - - previous, err = s.r.Seek(0, io.SeekCurrent) - if err != nil { - return -1, err - } - - _, err = s.r.Seek(offset, io.SeekStart) - return previous, err -} - -// Checksum returns the checksum of the packfile -func (s *Scanner) Checksum() (plumbing.Hash, error) { - err := s.discardObjectIfNeeded() - if err != nil { - return plumbing.ZeroHash, err - } - - return binary.ReadHash(s.r) -} - -// Close reads the reader until io.EOF -func (s *Scanner) Close() error { - buf := byteSlicePool.Get().([]byte) - _, err := io.CopyBuffer(stdioutil.Discard, s.r, buf) - byteSlicePool.Put(buf) - return err -} - -// Flush is a no-op (deprecated) -func (s *Scanner) Flush() error { - return nil -} - -// scannerReader has the following characteristics: -// - Provides an io.SeekReader impl for bufio.Reader, when the underlying -// reader supports it. -// - Keeps track of the current read position, for when the underlying reader -// isn't an io.SeekReader, but we still want to know the current offset. -// - Writes to the hash writer what it reads, with the aid of a smaller buffer. -// The buffer helps avoid a performance penality for performing small writes -// to the crc32 hash writer. -type scannerReader struct { - reader io.Reader - crc io.Writer - rbuf *bufio.Reader - wbuf *bufio.Writer - offset int64 -} - -func newScannerReader(r io.Reader, h io.Writer) *scannerReader { - sr := &scannerReader{ - rbuf: bufio.NewReader(nil), - wbuf: bufio.NewWriterSize(nil, 64), - crc: h, - } - sr.Reset(r) - - return sr -} - -func (r *scannerReader) Reset(reader io.Reader) { - r.reader = reader - r.rbuf.Reset(r.reader) - r.wbuf.Reset(r.crc) - - r.offset = 0 - if seeker, ok := r.reader.(io.ReadSeeker); ok { - r.offset, _ = seeker.Seek(0, io.SeekCurrent) - } -} - -func (r *scannerReader) Read(p []byte) (n int, err error) { - n, err = r.rbuf.Read(p) - - r.offset += int64(n) - if _, err := r.wbuf.Write(p[:n]); err != nil { - return n, err - } - return -} - -func (r *scannerReader) ReadByte() (b byte, err error) { - b, err = r.rbuf.ReadByte() - if err == nil { - r.offset++ - return b, r.wbuf.WriteByte(b) - } - return -} - -func (r *scannerReader) Flush() error { - return r.wbuf.Flush() -} - -// Seek seeks to a location. If the underlying reader is not an io.ReadSeeker, -// then only whence=io.SeekCurrent is supported, any other operation fails. -func (r *scannerReader) Seek(offset int64, whence int) (int64, error) { - var err error - - if seeker, ok := r.reader.(io.ReadSeeker); !ok { - if whence != io.SeekCurrent || offset != 0 { - return -1, ErrSeekNotSupported - } - } else { - if whence == io.SeekCurrent && offset == 0 { - return r.offset, nil - } - - r.offset, err = seeker.Seek(offset, whence) - r.rbuf.Reset(r.reader) - } - - return r.offset, err -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/pktline/encoder.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/pktline/encoder.go deleted file mode 100644 index 6d40979..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/pktline/encoder.go +++ /dev/null @@ -1,122 +0,0 @@ -// Package pktline implements reading payloads form pkt-lines and encoding -// pkt-lines from payloads. -package pktline - -import ( - "bytes" - "errors" - "fmt" - "io" -) - -// An Encoder writes pkt-lines to an output stream. -type Encoder struct { - w io.Writer -} - -const ( - // MaxPayloadSize is the maximum payload size of a pkt-line in bytes. - MaxPayloadSize = 65516 - - // For compatibility with canonical Git implementation, accept longer pkt-lines - OversizePayloadMax = 65520 -) - -var ( - // FlushPkt are the contents of a flush-pkt pkt-line. - FlushPkt = []byte{'0', '0', '0', '0'} - // Flush is the payload to use with the Encode method to encode a flush-pkt. - Flush = []byte{} - // FlushString is the payload to use with the EncodeString method to encode a flush-pkt. - FlushString = "" - // ErrPayloadTooLong is returned by the Encode methods when any of the - // provided payloads is bigger than MaxPayloadSize. - ErrPayloadTooLong = errors.New("payload is too long") -) - -// NewEncoder returns a new encoder that writes to w. -func NewEncoder(w io.Writer) *Encoder { - return &Encoder{ - w: w, - } -} - -// Flush encodes a flush-pkt to the output stream. -func (e *Encoder) Flush() error { - _, err := e.w.Write(FlushPkt) - return err -} - -// Encode encodes a pkt-line with the payload specified and write it to -// the output stream. If several payloads are specified, each of them -// will get streamed in their own pkt-lines. -func (e *Encoder) Encode(payloads ...[]byte) error { - for _, p := range payloads { - if err := e.encodeLine(p); err != nil { - return err - } - } - - return nil -} - -func (e *Encoder) encodeLine(p []byte) error { - if len(p) > MaxPayloadSize { - return ErrPayloadTooLong - } - - if bytes.Equal(p, Flush) { - return e.Flush() - } - - n := len(p) + 4 - if _, err := e.w.Write(asciiHex16(n)); err != nil { - return err - } - _, err := e.w.Write(p) - return err -} - -// Returns the hexadecimal ascii representation of the 16 less -// significant bits of n. The length of the returned slice will always -// be 4. Example: if n is 1234 (0x4d2), the return value will be -// []byte{'0', '4', 'd', '2'}. -func asciiHex16(n int) []byte { - var ret [4]byte - ret[0] = byteToASCIIHex(byte(n & 0xf000 >> 12)) - ret[1] = byteToASCIIHex(byte(n & 0x0f00 >> 8)) - ret[2] = byteToASCIIHex(byte(n & 0x00f0 >> 4)) - ret[3] = byteToASCIIHex(byte(n & 0x000f)) - - return ret[:] -} - -// turns a byte into its hexadecimal ascii representation. Example: -// from 11 (0xb) to 'b'. -func byteToASCIIHex(n byte) byte { - if n < 10 { - return '0' + n - } - - return 'a' - 10 + n -} - -// EncodeString works similarly as Encode but payloads are specified as strings. -func (e *Encoder) EncodeString(payloads ...string) error { - for _, p := range payloads { - if err := e.Encode([]byte(p)); err != nil { - return err - } - } - - return nil -} - -// Encodef encodes a single pkt-line with the payload formatted as -// the format specifier. The rest of the arguments will be used in -// the format string. -func (e *Encoder) Encodef(format string, a ...interface{}) error { - return e.EncodeString( - fmt.Sprintf(format, a...), - ) -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/pktline/scanner.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/pktline/scanner.go deleted file mode 100644 index 99aab46..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/pktline/scanner.go +++ /dev/null @@ -1,134 +0,0 @@ -package pktline - -import ( - "errors" - "io" -) - -const ( - lenSize = 4 -) - -// ErrInvalidPktLen is returned by Err() when an invalid pkt-len is found. -var ErrInvalidPktLen = errors.New("invalid pkt-len found") - -// Scanner provides a convenient interface for reading the payloads of a -// series of pkt-lines. It takes an io.Reader providing the source, -// which then can be tokenized through repeated calls to the Scan -// method. -// -// After each Scan call, the Bytes method will return the payload of the -// corresponding pkt-line on a shared buffer, which will be 65516 bytes -// or smaller. Flush pkt-lines are represented by empty byte slices. -// -// Scanning stops at EOF or the first I/O error. -type Scanner struct { - r io.Reader // The reader provided by the client - err error // Sticky error - payload []byte // Last pkt-payload - len [lenSize]byte // Last pkt-len -} - -// NewScanner returns a new Scanner to read from r. -func NewScanner(r io.Reader) *Scanner { - return &Scanner{ - r: r, - } -} - -// Err returns the first error encountered by the Scanner. -func (s *Scanner) Err() error { - return s.err -} - -// Scan advances the Scanner to the next pkt-line, whose payload will -// then be available through the Bytes method. Scanning stops at EOF -// or the first I/O error. After Scan returns false, the Err method -// will return any error that occurred during scanning, except that if -// it was io.EOF, Err will return nil. -func (s *Scanner) Scan() bool { - var l int - l, s.err = s.readPayloadLen() - if s.err == io.EOF { - s.err = nil - return false - } - if s.err != nil { - return false - } - - if cap(s.payload) < l { - s.payload = make([]byte, 0, l) - } - - if _, s.err = io.ReadFull(s.r, s.payload[:l]); s.err != nil { - return false - } - s.payload = s.payload[:l] - - return true -} - -// Bytes returns the most recent payload generated by a call to Scan. -// The underlying array may point to data that will be overwritten by a -// subsequent call to Scan. It does no allocation. -func (s *Scanner) Bytes() []byte { - return s.payload -} - -// Method readPayloadLen returns the payload length by reading the -// pkt-len and subtracting the pkt-len size. -func (s *Scanner) readPayloadLen() (int, error) { - if _, err := io.ReadFull(s.r, s.len[:]); err != nil { - if err == io.ErrUnexpectedEOF { - return 0, ErrInvalidPktLen - } - - return 0, err - } - - n, err := hexDecode(s.len) - if err != nil { - return 0, err - } - - switch { - case n == 0: - return 0, nil - case n <= lenSize: - return 0, ErrInvalidPktLen - case n > OversizePayloadMax+lenSize: - return 0, ErrInvalidPktLen - default: - return n - lenSize, nil - } -} - -// Turns the hexadecimal representation of a number in a byte slice into -// a number. This function substitute strconv.ParseUint(string(buf), 16, -// 16) and/or hex.Decode, to avoid generating new strings, thus helping the -// GC. -func hexDecode(buf [lenSize]byte) (int, error) { - var ret int - for i := 0; i < lenSize; i++ { - n, err := asciiHexToByte(buf[i]) - if err != nil { - return 0, ErrInvalidPktLen - } - ret = 16*ret + int(n) - } - return ret, nil -} - -// turns the hexadecimal ascii representation of a byte into its -// numerical value. Example: from 'b' to 11 (0xb). -func asciiHexToByte(b byte) (byte, error) { - switch { - case b >= '0' && b <= '9': - return b - '0', nil - case b >= 'a' && b <= 'f': - return b - 'a' + 10, nil - default: - return 0, ErrInvalidPktLen - } -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/hash.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/hash.go deleted file mode 100644 index 8e60877..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/hash.go +++ /dev/null @@ -1,73 +0,0 @@ -package plumbing - -import ( - "bytes" - "crypto/sha1" - "encoding/hex" - "hash" - "sort" - "strconv" -) - -// Hash SHA1 hased content -type Hash [20]byte - -// ZeroHash is Hash with value zero -var ZeroHash Hash - -// ComputeHash compute the hash for a given ObjectType and content -func ComputeHash(t ObjectType, content []byte) Hash { - h := NewHasher(t, int64(len(content))) - h.Write(content) - return h.Sum() -} - -// NewHash return a new Hash from a hexadecimal hash representation -func NewHash(s string) Hash { - b, _ := hex.DecodeString(s) - - var h Hash - copy(h[:], b) - - return h -} - -func (h Hash) IsZero() bool { - var empty Hash - return h == empty -} - -func (h Hash) String() string { - return hex.EncodeToString(h[:]) -} - -type Hasher struct { - hash.Hash -} - -func NewHasher(t ObjectType, size int64) Hasher { - h := Hasher{sha1.New()} - h.Write(t.Bytes()) - h.Write([]byte(" ")) - h.Write([]byte(strconv.FormatInt(size, 10))) - h.Write([]byte{0}) - return h -} - -func (h Hasher) Sum() (hash Hash) { - copy(hash[:], h.Hash.Sum(nil)) - return -} - -// HashesSort sorts a slice of Hashes in increasing order. -func HashesSort(a []Hash) { - sort.Sort(HashSlice(a)) -} - -// HashSlice attaches the methods of sort.Interface to []Hash, sorting in -// increasing order. -type HashSlice []Hash - -func (p HashSlice) Len() int { return len(p) } -func (p HashSlice) Less(i, j int) bool { return bytes.Compare(p[i][:], p[j][:]) < 0 } -func (p HashSlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] } diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/memory.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/memory.go deleted file mode 100644 index b8e1e1b..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/memory.go +++ /dev/null @@ -1,61 +0,0 @@ -package plumbing - -import ( - "bytes" - "io" - "io/ioutil" -) - -// MemoryObject on memory Object implementation -type MemoryObject struct { - t ObjectType - h Hash - cont []byte - sz int64 -} - -// Hash returns the object Hash, the hash is calculated on-the-fly the first -// time it's called, in all subsequent calls the same Hash is returned even -// if the type or the content have changed. The Hash is only generated if the -// size of the content is exactly the object size. -func (o *MemoryObject) Hash() Hash { - if o.h == ZeroHash && int64(len(o.cont)) == o.sz { - o.h = ComputeHash(o.t, o.cont) - } - - return o.h -} - -// Type return the ObjectType -func (o *MemoryObject) Type() ObjectType { return o.t } - -// SetType sets the ObjectType -func (o *MemoryObject) SetType(t ObjectType) { o.t = t } - -// Size return the size of the object -func (o *MemoryObject) Size() int64 { return o.sz } - -// SetSize set the object size, a content of the given size should be written -// afterwards -func (o *MemoryObject) SetSize(s int64) { o.sz = s } - -// Reader returns a ObjectReader used to read the object's content. -func (o *MemoryObject) Reader() (io.ReadCloser, error) { - return ioutil.NopCloser(bytes.NewBuffer(o.cont)), nil -} - -// Writer returns a ObjectWriter used to write the object's content. -func (o *MemoryObject) Writer() (io.WriteCloser, error) { - return o, nil -} - -func (o *MemoryObject) Write(p []byte) (n int, err error) { - o.cont = append(o.cont, p...) - o.sz = int64(len(o.cont)) - - return len(p), nil -} - -// Close releases any resources consumed by the object when it is acting as a -// ObjectWriter. -func (o *MemoryObject) Close() error { return nil } diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/object.go deleted file mode 100644 index 2655dee..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object.go +++ /dev/null @@ -1,111 +0,0 @@ -// package plumbing implement the core interfaces and structs used by go-git -package plumbing - -import ( - "errors" - "io" -) - -var ( - ErrObjectNotFound = errors.New("object not found") - // ErrInvalidType is returned when an invalid object type is provided. - ErrInvalidType = errors.New("invalid object type") -) - -// Object is a generic representation of any git object -type EncodedObject interface { - Hash() Hash - Type() ObjectType - SetType(ObjectType) - Size() int64 - SetSize(int64) - Reader() (io.ReadCloser, error) - Writer() (io.WriteCloser, error) -} - -// DeltaObject is an EncodedObject representing a delta. -type DeltaObject interface { - EncodedObject - // BaseHash returns the hash of the object used as base for this delta. - BaseHash() Hash - // ActualHash returns the hash of the object after applying the delta. - ActualHash() Hash - // Size returns the size of the object after applying the delta. - ActualSize() int64 -} - -// ObjectType internal object type -// Integer values from 0 to 7 map to those exposed by git. -// AnyObject is used to represent any from 0 to 7. -type ObjectType int8 - -const ( - InvalidObject ObjectType = 0 - CommitObject ObjectType = 1 - TreeObject ObjectType = 2 - BlobObject ObjectType = 3 - TagObject ObjectType = 4 - // 5 reserved for future expansion - OFSDeltaObject ObjectType = 6 - REFDeltaObject ObjectType = 7 - - AnyObject ObjectType = -127 -) - -func (t ObjectType) String() string { - switch t { - case CommitObject: - return "commit" - case TreeObject: - return "tree" - case BlobObject: - return "blob" - case TagObject: - return "tag" - case OFSDeltaObject: - return "ofs-delta" - case REFDeltaObject: - return "ref-delta" - case AnyObject: - return "any" - default: - return "unknown" - } -} - -func (t ObjectType) Bytes() []byte { - return []byte(t.String()) -} - -// Valid returns true if t is a valid ObjectType. -func (t ObjectType) Valid() bool { - return t >= CommitObject && t <= REFDeltaObject -} - -// IsDelta returns true for any ObjectTyoe that represents a delta (i.e. -// REFDeltaObject or OFSDeltaObject). -func (t ObjectType) IsDelta() bool { - return t == REFDeltaObject || t == OFSDeltaObject -} - -// ParseObjectType parses a string representation of ObjectType. It returns an -// error on parse failure. -func ParseObjectType(value string) (typ ObjectType, err error) { - switch value { - case "commit": - typ = CommitObject - case "tree": - typ = TreeObject - case "blob": - typ = BlobObject - case "tag": - typ = TagObject - case "ofs-delta": - typ = OFSDeltaObject - case "ref-delta": - typ = REFDeltaObject - default: - err = ErrInvalidType - } - return -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/blob.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/blob.go deleted file mode 100644 index f376baa..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/blob.go +++ /dev/null @@ -1,144 +0,0 @@ -package object - -import ( - "io" - - "gopkg.in/src-d/go-git.v4/plumbing" - "gopkg.in/src-d/go-git.v4/plumbing/storer" - "gopkg.in/src-d/go-git.v4/utils/ioutil" -) - -// Blob is used to store arbitrary data - it is generally a file. -type Blob struct { - // Hash of the blob. - Hash plumbing.Hash - // Size of the (uncompressed) blob. - Size int64 - - obj plumbing.EncodedObject -} - -// GetBlob gets a blob from an object storer and decodes it. -func GetBlob(s storer.EncodedObjectStorer, h plumbing.Hash) (*Blob, error) { - o, err := s.EncodedObject(plumbing.BlobObject, h) - if err != nil { - return nil, err - } - - return DecodeBlob(o) -} - -// DecodeObject decodes an encoded object into a *Blob. -func DecodeBlob(o plumbing.EncodedObject) (*Blob, error) { - b := &Blob{} - if err := b.Decode(o); err != nil { - return nil, err - } - - return b, nil -} - -// ID returns the object ID of the blob. The returned value will always match -// the current value of Blob.Hash. -// -// ID is present to fulfill the Object interface. -func (b *Blob) ID() plumbing.Hash { - return b.Hash -} - -// Type returns the type of object. It always returns plumbing.BlobObject. -// -// Type is present to fulfill the Object interface. -func (b *Blob) Type() plumbing.ObjectType { - return plumbing.BlobObject -} - -// Decode transforms a plumbing.EncodedObject into a Blob struct. -func (b *Blob) Decode(o plumbing.EncodedObject) error { - if o.Type() != plumbing.BlobObject { - return ErrUnsupportedObject - } - - b.Hash = o.Hash() - b.Size = o.Size() - b.obj = o - - return nil -} - -// Encode transforms a Blob into a plumbing.EncodedObject. -func (b *Blob) Encode(o plumbing.EncodedObject) (err error) { - o.SetType(plumbing.BlobObject) - - w, err := o.Writer() - if err != nil { - return err - } - - defer ioutil.CheckClose(w, &err) - - r, err := b.Reader() - if err != nil { - return err - } - - defer ioutil.CheckClose(r, &err) - - _, err = io.Copy(w, r) - return err -} - -// Reader returns a reader allow the access to the content of the blob -func (b *Blob) Reader() (io.ReadCloser, error) { - return b.obj.Reader() -} - -// BlobIter provides an iterator for a set of blobs. -type BlobIter struct { - storer.EncodedObjectIter - s storer.EncodedObjectStorer -} - -// NewBlobIter takes a storer.EncodedObjectStorer and a -// storer.EncodedObjectIter and returns a *BlobIter that iterates over all -// blobs contained in the storer.EncodedObjectIter. -// -// Any non-blob object returned by the storer.EncodedObjectIter is skipped. -func NewBlobIter(s storer.EncodedObjectStorer, iter storer.EncodedObjectIter) *BlobIter { - return &BlobIter{iter, s} -} - -// Next moves the iterator to the next blob and returns a pointer to it. If -// there are no more blobs, it returns io.EOF. -func (iter *BlobIter) Next() (*Blob, error) { - for { - obj, err := iter.EncodedObjectIter.Next() - if err != nil { - return nil, err - } - - if obj.Type() != plumbing.BlobObject { - continue - } - - return DecodeBlob(obj) - } -} - -// ForEach call the cb function for each blob contained on this iter until -// an error happens or the end of the iter is reached. If ErrStop is sent -// the iteration is stop but no error is returned. The iterator is closed. -func (iter *BlobIter) ForEach(cb func(*Blob) error) error { - return iter.EncodedObjectIter.ForEach(func(obj plumbing.EncodedObject) error { - if obj.Type() != plumbing.BlobObject { - return nil - } - - b, err := DecodeBlob(obj) - if err != nil { - return err - } - - return cb(b) - }) -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/change.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/change.go deleted file mode 100644 index a1b4c27..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/change.go +++ /dev/null @@ -1,157 +0,0 @@ -package object - -import ( - "bytes" - "context" - "fmt" - "strings" - - "gopkg.in/src-d/go-git.v4/utils/merkletrie" -) - -// Change values represent a detected change between two git trees. For -// modifications, From is the original status of the node and To is its -// final status. For insertions, From is the zero value and for -// deletions To is the zero value. -type Change struct { - From ChangeEntry - To ChangeEntry -} - -var empty = ChangeEntry{} - -// Action returns the kind of action represented by the change, an -// insertion, a deletion or a modification. -func (c *Change) Action() (merkletrie.Action, error) { - if c.From == empty && c.To == empty { - return merkletrie.Action(0), - fmt.Errorf("malformed change: empty from and to") - } - if c.From == empty { - return merkletrie.Insert, nil - } - if c.To == empty { - return merkletrie.Delete, nil - } - - return merkletrie.Modify, nil -} - -// Files return the files before and after a change. -// For insertions from will be nil. For deletions to will be nil. -func (c *Change) Files() (from, to *File, err error) { - action, err := c.Action() - if err != nil { - return - } - - if action == merkletrie.Insert || action == merkletrie.Modify { - to, err = c.To.Tree.TreeEntryFile(&c.To.TreeEntry) - if !c.To.TreeEntry.Mode.IsFile() { - return nil, nil, nil - } - - if err != nil { - return - } - } - - if action == merkletrie.Delete || action == merkletrie.Modify { - from, err = c.From.Tree.TreeEntryFile(&c.From.TreeEntry) - if !c.From.TreeEntry.Mode.IsFile() { - return nil, nil, nil - } - - if err != nil { - return - } - } - - return -} - -func (c *Change) String() string { - action, err := c.Action() - if err != nil { - return fmt.Sprintf("malformed change") - } - - return fmt.Sprintf("", action, c.name()) -} - -// Patch returns a Patch with all the file changes in chunks. This -// representation can be used to create several diff outputs. -func (c *Change) Patch() (*Patch, error) { - return c.PatchContext(context.Background()) -} - -// Patch returns a Patch with all the file changes in chunks. This -// representation can be used to create several diff outputs. -// If context expires, an non-nil error will be returned -// Provided context must be non-nil -func (c *Change) PatchContext(ctx context.Context) (*Patch, error) { - return getPatchContext(ctx, "", c) -} - -func (c *Change) name() string { - if c.From != empty { - return c.From.Name - } - - return c.To.Name -} - -// ChangeEntry values represent a node that has suffered a change. -type ChangeEntry struct { - // Full path of the node using "/" as separator. - Name string - // Parent tree of the node that has changed. - Tree *Tree - // The entry of the node. - TreeEntry TreeEntry -} - -// Changes represents a collection of changes between two git trees. -// Implements sort.Interface lexicographically over the path of the -// changed files. -type Changes []*Change - -func (c Changes) Len() int { - return len(c) -} - -func (c Changes) Swap(i, j int) { - c[i], c[j] = c[j], c[i] -} - -func (c Changes) Less(i, j int) bool { - return strings.Compare(c[i].name(), c[j].name()) < 0 -} - -func (c Changes) String() string { - var buffer bytes.Buffer - buffer.WriteString("[") - comma := "" - for _, v := range c { - buffer.WriteString(comma) - buffer.WriteString(v.String()) - comma = ", " - } - buffer.WriteString("]") - - return buffer.String() -} - -// Patch returns a Patch with all the changes in chunks. This -// representation can be used to create several diff outputs. -func (c Changes) Patch() (*Patch, error) { - return c.PatchContext(context.Background()) -} - -// Patch returns a Patch with all the changes in chunks. This -// representation can be used to create several diff outputs. -// If context expires, an non-nil error will be returned -// Provided context must be non-nil -func (c Changes) PatchContext(ctx context.Context) (*Patch, error) { - return getPatchContext(ctx, "", c...) -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/change_adaptor.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/change_adaptor.go deleted file mode 100644 index 491c399..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/change_adaptor.go +++ /dev/null @@ -1,61 +0,0 @@ -package object - -import ( - "errors" - "fmt" - - "gopkg.in/src-d/go-git.v4/utils/merkletrie" - "gopkg.in/src-d/go-git.v4/utils/merkletrie/noder" -) - -// The following functions transform changes types form the merkletrie -// package to changes types from this package. - -func newChange(c merkletrie.Change) (*Change, error) { - ret := &Change{} - - var err error - if ret.From, err = newChangeEntry(c.From); err != nil { - return nil, fmt.Errorf("From field: %s", err) - } - - if ret.To, err = newChangeEntry(c.To); err != nil { - return nil, fmt.Errorf("To field: %s", err) - } - - return ret, nil -} - -func newChangeEntry(p noder.Path) (ChangeEntry, error) { - if p == nil { - return empty, nil - } - - asTreeNoder, ok := p.Last().(*treeNoder) - if !ok { - return ChangeEntry{}, errors.New("cannot transform non-TreeNoders") - } - - return ChangeEntry{ - Name: p.String(), - Tree: asTreeNoder.parent, - TreeEntry: TreeEntry{ - Name: asTreeNoder.name, - Mode: asTreeNoder.mode, - Hash: asTreeNoder.hash, - }, - }, nil -} - -func newChanges(src merkletrie.Changes) (Changes, error) { - ret := make(Changes, len(src)) - var err error - for i, e := range src { - ret[i], err = newChange(e) - if err != nil { - return nil, fmt.Errorf("change #%d: %s", i, err) - } - } - - return ret, nil -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/commit.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/commit.go deleted file mode 100644 index 6b50934..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/commit.go +++ /dev/null @@ -1,430 +0,0 @@ -package object - -import ( - "bufio" - "bytes" - "context" - "errors" - "fmt" - "io" - "strings" - - "golang.org/x/crypto/openpgp" - - "gopkg.in/src-d/go-git.v4/plumbing" - "gopkg.in/src-d/go-git.v4/plumbing/storer" - "gopkg.in/src-d/go-git.v4/utils/ioutil" -) - -const ( - beginpgp string = "-----BEGIN PGP SIGNATURE-----" - endpgp string = "-----END PGP SIGNATURE-----" - headerpgp string = "gpgsig" -) - -// Hash represents the hash of an object -type Hash plumbing.Hash - -// Commit points to a single tree, marking it as what the project looked like -// at a certain point in time. It contains meta-information about that point -// in time, such as a timestamp, the author of the changes since the last -// commit, a pointer to the previous commit(s), etc. -// http://shafiulazam.com/gitbook/1_the_git_object_model.html -type Commit struct { - // Hash of the commit object. - Hash plumbing.Hash - // Author is the original author of the commit. - Author Signature - // Committer is the one performing the commit, might be different from - // Author. - Committer Signature - // PGPSignature is the PGP signature of the commit. - PGPSignature string - // Message is the commit message, contains arbitrary text. - Message string - // TreeHash is the hash of the root tree of the commit. - TreeHash plumbing.Hash - // ParentHashes are the hashes of the parent commits of the commit. - ParentHashes []plumbing.Hash - - s storer.EncodedObjectStorer -} - -// GetCommit gets a commit from an object storer and decodes it. -func GetCommit(s storer.EncodedObjectStorer, h plumbing.Hash) (*Commit, error) { - o, err := s.EncodedObject(plumbing.CommitObject, h) - if err != nil { - return nil, err - } - - return DecodeCommit(s, o) -} - -// DecodeCommit decodes an encoded object into a *Commit and associates it to -// the given object storer. -func DecodeCommit(s storer.EncodedObjectStorer, o plumbing.EncodedObject) (*Commit, error) { - c := &Commit{s: s} - if err := c.Decode(o); err != nil { - return nil, err - } - - return c, nil -} - -// Tree returns the Tree from the commit. -func (c *Commit) Tree() (*Tree, error) { - return GetTree(c.s, c.TreeHash) -} - -// PatchContext returns the Patch between the actual commit and the provided one. -// Error will be return if context expires. Provided context must be non-nil. -func (c *Commit) PatchContext(ctx context.Context, to *Commit) (*Patch, error) { - fromTree, err := c.Tree() - if err != nil { - return nil, err - } - - toTree, err := to.Tree() - if err != nil { - return nil, err - } - - return fromTree.PatchContext(ctx, toTree) -} - -// Patch returns the Patch between the actual commit and the provided one. -func (c *Commit) Patch(to *Commit) (*Patch, error) { - return c.PatchContext(context.Background(), to) -} - -// Parents return a CommitIter to the parent Commits. -func (c *Commit) Parents() CommitIter { - return NewCommitIter(c.s, - storer.NewEncodedObjectLookupIter(c.s, plumbing.CommitObject, c.ParentHashes), - ) -} - -// NumParents returns the number of parents in a commit. -func (c *Commit) NumParents() int { - return len(c.ParentHashes) -} - -var ErrParentNotFound = errors.New("commit parent not found") - -// Parent returns the ith parent of a commit. -func (c *Commit) Parent(i int) (*Commit, error) { - if len(c.ParentHashes) == 0 || i > len(c.ParentHashes)-1 { - return nil, ErrParentNotFound - } - - return GetCommit(c.s, c.ParentHashes[i]) -} - -// File returns the file with the specified "path" in the commit and a -// nil error if the file exists. If the file does not exist, it returns -// a nil file and the ErrFileNotFound error. -func (c *Commit) File(path string) (*File, error) { - tree, err := c.Tree() - if err != nil { - return nil, err - } - - return tree.File(path) -} - -// Files returns a FileIter allowing to iterate over the Tree -func (c *Commit) Files() (*FileIter, error) { - tree, err := c.Tree() - if err != nil { - return nil, err - } - - return tree.Files(), nil -} - -// ID returns the object ID of the commit. The returned value will always match -// the current value of Commit.Hash. -// -// ID is present to fulfill the Object interface. -func (c *Commit) ID() plumbing.Hash { - return c.Hash -} - -// Type returns the type of object. It always returns plumbing.CommitObject. -// -// Type is present to fulfill the Object interface. -func (c *Commit) Type() plumbing.ObjectType { - return plumbing.CommitObject -} - -// Decode transforms a plumbing.EncodedObject into a Commit struct. -func (c *Commit) Decode(o plumbing.EncodedObject) (err error) { - if o.Type() != plumbing.CommitObject { - return ErrUnsupportedObject - } - - c.Hash = o.Hash() - - reader, err := o.Reader() - if err != nil { - return err - } - defer ioutil.CheckClose(reader, &err) - - r := bufPool.Get().(*bufio.Reader) - defer bufPool.Put(r) - r.Reset(reader) - - var message bool - var pgpsig bool - for { - line, err := r.ReadBytes('\n') - if err != nil && err != io.EOF { - return err - } - - if pgpsig { - if len(line) > 0 && line[0] == ' ' { - line = bytes.TrimLeft(line, " ") - c.PGPSignature += string(line) - continue - } else { - pgpsig = false - } - } - - if !message { - line = bytes.TrimSpace(line) - if len(line) == 0 { - message = true - continue - } - - split := bytes.SplitN(line, []byte{' '}, 2) - - var data []byte - if len(split) == 2 { - data = split[1] - } - - switch string(split[0]) { - case "tree": - c.TreeHash = plumbing.NewHash(string(data)) - case "parent": - c.ParentHashes = append(c.ParentHashes, plumbing.NewHash(string(data))) - case "author": - c.Author.Decode(data) - case "committer": - c.Committer.Decode(data) - case headerpgp: - c.PGPSignature += string(data) + "\n" - pgpsig = true - } - } else { - c.Message += string(line) - } - - if err == io.EOF { - return nil - } - } -} - -// Encode transforms a Commit into a plumbing.EncodedObject. -func (b *Commit) Encode(o plumbing.EncodedObject) error { - return b.encode(o, true) -} - -// EncodeWithoutSignature export a Commit into a plumbing.EncodedObject without the signature (correspond to the payload of the PGP signature). -func (b *Commit) EncodeWithoutSignature(o plumbing.EncodedObject) error { - return b.encode(o, false) -} - -func (b *Commit) encode(o plumbing.EncodedObject, includeSig bool) (err error) { - o.SetType(plumbing.CommitObject) - w, err := o.Writer() - if err != nil { - return err - } - - defer ioutil.CheckClose(w, &err) - - if _, err = fmt.Fprintf(w, "tree %s\n", b.TreeHash.String()); err != nil { - return err - } - - for _, parent := range b.ParentHashes { - if _, err = fmt.Fprintf(w, "parent %s\n", parent.String()); err != nil { - return err - } - } - - if _, err = fmt.Fprint(w, "author "); err != nil { - return err - } - - if err = b.Author.Encode(w); err != nil { - return err - } - - if _, err = fmt.Fprint(w, "\ncommitter "); err != nil { - return err - } - - if err = b.Committer.Encode(w); err != nil { - return err - } - - if b.PGPSignature != "" && includeSig { - if _, err = fmt.Fprint(w, "\n"+headerpgp+" "); err != nil { - return err - } - - // Split all the signature lines and re-write with a left padding and - // newline. Use join for this so it's clear that a newline should not be - // added after this section, as it will be added when the message is - // printed. - signature := strings.TrimSuffix(b.PGPSignature, "\n") - lines := strings.Split(signature, "\n") - if _, err = fmt.Fprint(w, strings.Join(lines, "\n ")); err != nil { - return err - } - } - - if _, err = fmt.Fprintf(w, "\n\n%s", b.Message); err != nil { - return err - } - - return err -} - -// Stats returns the stats of a commit. -func (c *Commit) Stats() (FileStats, error) { - return c.StatsContext(context.Background()) -} - -// StatsContext returns the stats of a commit. Error will be return if context -// expires. Provided context must be non-nil. -func (c *Commit) StatsContext(ctx context.Context) (FileStats, error) { - fromTree, err := c.Tree() - if err != nil { - return nil, err - } - - toTree := &Tree{} - if c.NumParents() != 0 { - firstParent, err := c.Parents().Next() - if err != nil { - return nil, err - } - - toTree, err = firstParent.Tree() - if err != nil { - return nil, err - } - } - - patch, err := toTree.PatchContext(ctx, fromTree) - if err != nil { - return nil, err - } - - return getFileStatsFromFilePatches(patch.FilePatches()), nil -} - -func (c *Commit) String() string { - return fmt.Sprintf( - "%s %s\nAuthor: %s\nDate: %s\n\n%s\n", - plumbing.CommitObject, c.Hash, c.Author.String(), - c.Author.When.Format(DateFormat), indent(c.Message), - ) -} - -// Verify performs PGP verification of the commit with a provided armored -// keyring and returns openpgp.Entity associated with verifying key on success. -func (c *Commit) Verify(armoredKeyRing string) (*openpgp.Entity, error) { - keyRingReader := strings.NewReader(armoredKeyRing) - keyring, err := openpgp.ReadArmoredKeyRing(keyRingReader) - if err != nil { - return nil, err - } - - // Extract signature. - signature := strings.NewReader(c.PGPSignature) - - encoded := &plumbing.MemoryObject{} - // Encode commit components, excluding signature and get a reader object. - if err := c.EncodeWithoutSignature(encoded); err != nil { - return nil, err - } - er, err := encoded.Reader() - if err != nil { - return nil, err - } - - return openpgp.CheckArmoredDetachedSignature(keyring, er, signature) -} - -func indent(t string) string { - var output []string - for _, line := range strings.Split(t, "\n") { - if len(line) != 0 { - line = " " + line - } - - output = append(output, line) - } - - return strings.Join(output, "\n") -} - -// CommitIter is a generic closable interface for iterating over commits. -type CommitIter interface { - Next() (*Commit, error) - ForEach(func(*Commit) error) error - Close() -} - -// storerCommitIter provides an iterator from commits in an EncodedObjectStorer. -type storerCommitIter struct { - storer.EncodedObjectIter - s storer.EncodedObjectStorer -} - -// NewCommitIter takes a storer.EncodedObjectStorer and a -// storer.EncodedObjectIter and returns a CommitIter that iterates over all -// commits contained in the storer.EncodedObjectIter. -// -// Any non-commit object returned by the storer.EncodedObjectIter is skipped. -func NewCommitIter(s storer.EncodedObjectStorer, iter storer.EncodedObjectIter) CommitIter { - return &storerCommitIter{iter, s} -} - -// Next moves the iterator to the next commit and returns a pointer to it. If -// there are no more commits, it returns io.EOF. -func (iter *storerCommitIter) Next() (*Commit, error) { - obj, err := iter.EncodedObjectIter.Next() - if err != nil { - return nil, err - } - - return DecodeCommit(iter.s, obj) -} - -// ForEach call the cb function for each commit contained on this iter until -// an error appends or the end of the iter is reached. If ErrStop is sent -// the iteration is stopped but no error is returned. The iterator is closed. -func (iter *storerCommitIter) ForEach(cb func(*Commit) error) error { - return iter.EncodedObjectIter.ForEach(func(obj plumbing.EncodedObject) error { - c, err := DecodeCommit(iter.s, obj) - if err != nil { - return err - } - - return cb(c) - }) -} - -func (iter *storerCommitIter) Close() { - iter.EncodedObjectIter.Close() -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/commit_walker.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/commit_walker.go deleted file mode 100644 index 0eff059..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/commit_walker.go +++ /dev/null @@ -1,327 +0,0 @@ -package object - -import ( - "container/list" - "io" - - "gopkg.in/src-d/go-git.v4/plumbing" - "gopkg.in/src-d/go-git.v4/plumbing/storer" - "gopkg.in/src-d/go-git.v4/storage" -) - -type commitPreIterator struct { - seenExternal map[plumbing.Hash]bool - seen map[plumbing.Hash]bool - stack []CommitIter - start *Commit -} - -// NewCommitPreorderIter returns a CommitIter that walks the commit history, -// starting at the given commit and visiting its parents in pre-order. -// The given callback will be called for each visited commit. Each commit will -// be visited only once. If the callback returns an error, walking will stop -// and will return the error. Other errors might be returned if the history -// cannot be traversed (e.g. missing objects). Ignore allows to skip some -// commits from being iterated. -func NewCommitPreorderIter( - c *Commit, - seenExternal map[plumbing.Hash]bool, - ignore []plumbing.Hash, -) CommitIter { - seen := make(map[plumbing.Hash]bool) - for _, h := range ignore { - seen[h] = true - } - - return &commitPreIterator{ - seenExternal: seenExternal, - seen: seen, - stack: make([]CommitIter, 0), - start: c, - } -} - -func (w *commitPreIterator) Next() (*Commit, error) { - var c *Commit - for { - if w.start != nil { - c = w.start - w.start = nil - } else { - current := len(w.stack) - 1 - if current < 0 { - return nil, io.EOF - } - - var err error - c, err = w.stack[current].Next() - if err == io.EOF { - w.stack = w.stack[:current] - continue - } - - if err != nil { - return nil, err - } - } - - if w.seen[c.Hash] || w.seenExternal[c.Hash] { - continue - } - - w.seen[c.Hash] = true - - if c.NumParents() > 0 { - w.stack = append(w.stack, filteredParentIter(c, w.seen)) - } - - return c, nil - } -} - -func filteredParentIter(c *Commit, seen map[plumbing.Hash]bool) CommitIter { - var hashes []plumbing.Hash - for _, h := range c.ParentHashes { - if !seen[h] { - hashes = append(hashes, h) - } - } - - return NewCommitIter(c.s, - storer.NewEncodedObjectLookupIter(c.s, plumbing.CommitObject, hashes), - ) -} - -func (w *commitPreIterator) ForEach(cb func(*Commit) error) error { - for { - c, err := w.Next() - if err == io.EOF { - break - } - if err != nil { - return err - } - - err = cb(c) - if err == storer.ErrStop { - break - } - if err != nil { - return err - } - } - - return nil -} - -func (w *commitPreIterator) Close() {} - -type commitPostIterator struct { - stack []*Commit - seen map[plumbing.Hash]bool -} - -// NewCommitPostorderIter returns a CommitIter that walks the commit -// history like WalkCommitHistory but in post-order. This means that after -// walking a merge commit, the merged commit will be walked before the base -// it was merged on. This can be useful if you wish to see the history in -// chronological order. Ignore allows to skip some commits from being iterated. -func NewCommitPostorderIter(c *Commit, ignore []plumbing.Hash) CommitIter { - seen := make(map[plumbing.Hash]bool) - for _, h := range ignore { - seen[h] = true - } - - return &commitPostIterator{ - stack: []*Commit{c}, - seen: seen, - } -} - -func (w *commitPostIterator) Next() (*Commit, error) { - for { - if len(w.stack) == 0 { - return nil, io.EOF - } - - c := w.stack[len(w.stack)-1] - w.stack = w.stack[:len(w.stack)-1] - - if w.seen[c.Hash] { - continue - } - - w.seen[c.Hash] = true - - return c, c.Parents().ForEach(func(p *Commit) error { - w.stack = append(w.stack, p) - return nil - }) - } -} - -func (w *commitPostIterator) ForEach(cb func(*Commit) error) error { - for { - c, err := w.Next() - if err == io.EOF { - break - } - if err != nil { - return err - } - - err = cb(c) - if err == storer.ErrStop { - break - } - if err != nil { - return err - } - } - - return nil -} - -func (w *commitPostIterator) Close() {} - -// commitAllIterator stands for commit iterator for all refs. -type commitAllIterator struct { - // currCommit points to the current commit. - currCommit *list.Element -} - -// NewCommitAllIter returns a new commit iterator for all refs. -// repoStorer is a repo Storer used to get commits and references. -// commitIterFunc is a commit iterator function, used to iterate through ref commits in chosen order -func NewCommitAllIter(repoStorer storage.Storer, commitIterFunc func(*Commit) CommitIter) (CommitIter, error) { - commitsPath := list.New() - commitsLookup := make(map[plumbing.Hash]*list.Element) - head, err := storer.ResolveReference(repoStorer, plumbing.HEAD) - if err == nil { - err = addReference(repoStorer, commitIterFunc, head, commitsPath, commitsLookup) - } - - if err != nil && err != plumbing.ErrReferenceNotFound { - return nil, err - } - - // add all references along with the HEAD - refIter, err := repoStorer.IterReferences() - if err != nil { - return nil, err - } - defer refIter.Close() - - for { - ref, err := refIter.Next() - if err == io.EOF { - break - } - - if err == plumbing.ErrReferenceNotFound { - continue - } - - if err != nil { - return nil, err - } - - if err = addReference(repoStorer, commitIterFunc, ref, commitsPath, commitsLookup); err != nil { - return nil, err - } - } - - return &commitAllIterator{commitsPath.Front()}, nil -} - -func addReference( - repoStorer storage.Storer, - commitIterFunc func(*Commit) CommitIter, - ref *plumbing.Reference, - commitsPath *list.List, - commitsLookup map[plumbing.Hash]*list.Element) error { - - _, exists := commitsLookup[ref.Hash()] - if exists { - // we already have it - skip the reference. - return nil - } - - refCommit, _ := GetCommit(repoStorer, ref.Hash()) - if refCommit == nil { - // if it's not a commit - skip it. - return nil - } - - var ( - refCommits []*Commit - parent *list.Element - ) - // collect all ref commits to add - commitIter := commitIterFunc(refCommit) - for c, e := commitIter.Next(); e == nil; { - parent, exists = commitsLookup[c.Hash] - if exists { - break - } - refCommits = append(refCommits, c) - c, e = commitIter.Next() - } - commitIter.Close() - - if parent == nil { - // common parent - not found - // add all commits to the path from this ref (maybe it's a HEAD and we don't have anything, yet) - for _, c := range refCommits { - parent = commitsPath.PushBack(c) - commitsLookup[c.Hash] = parent - } - } else { - // add ref's commits to the path in reverse order (from the latest) - for i := len(refCommits) - 1; i >= 0; i-- { - c := refCommits[i] - // insert before found common parent - parent = commitsPath.InsertBefore(c, parent) - commitsLookup[c.Hash] = parent - } - } - - return nil -} - -func (it *commitAllIterator) Next() (*Commit, error) { - if it.currCommit == nil { - return nil, io.EOF - } - - c := it.currCommit.Value.(*Commit) - it.currCommit = it.currCommit.Next() - - return c, nil -} - -func (it *commitAllIterator) ForEach(cb func(*Commit) error) error { - for { - c, err := it.Next() - if err == io.EOF { - break - } - if err != nil { - return err - } - - err = cb(c) - if err == storer.ErrStop { - break - } - if err != nil { - return err - } - } - - return nil -} - -func (it *commitAllIterator) Close() { - it.currCommit = nil -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/commit_walker_bfs.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/commit_walker_bfs.go deleted file mode 100644 index dabfe75..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/commit_walker_bfs.go +++ /dev/null @@ -1,100 +0,0 @@ -package object - -import ( - "io" - - "gopkg.in/src-d/go-git.v4/plumbing" - "gopkg.in/src-d/go-git.v4/plumbing/storer" -) - -type bfsCommitIterator struct { - seenExternal map[plumbing.Hash]bool - seen map[plumbing.Hash]bool - queue []*Commit -} - -// NewCommitIterBSF returns a CommitIter that walks the commit history, -// starting at the given commit and visiting its parents in pre-order. -// The given callback will be called for each visited commit. Each commit will -// be visited only once. If the callback returns an error, walking will stop -// and will return the error. Other errors might be returned if the history -// cannot be traversed (e.g. missing objects). Ignore allows to skip some -// commits from being iterated. -func NewCommitIterBSF( - c *Commit, - seenExternal map[plumbing.Hash]bool, - ignore []plumbing.Hash, -) CommitIter { - seen := make(map[plumbing.Hash]bool) - for _, h := range ignore { - seen[h] = true - } - - return &bfsCommitIterator{ - seenExternal: seenExternal, - seen: seen, - queue: []*Commit{c}, - } -} - -func (w *bfsCommitIterator) appendHash(store storer.EncodedObjectStorer, h plumbing.Hash) error { - if w.seen[h] || w.seenExternal[h] { - return nil - } - c, err := GetCommit(store, h) - if err != nil { - return err - } - w.queue = append(w.queue, c) - return nil -} - -func (w *bfsCommitIterator) Next() (*Commit, error) { - var c *Commit - for { - if len(w.queue) == 0 { - return nil, io.EOF - } - c = w.queue[0] - w.queue = w.queue[1:] - - if w.seen[c.Hash] || w.seenExternal[c.Hash] { - continue - } - - w.seen[c.Hash] = true - - for _, h := range c.ParentHashes { - err := w.appendHash(c.s, h) - if err != nil { - return nil, err - } - } - - return c, nil - } -} - -func (w *bfsCommitIterator) ForEach(cb func(*Commit) error) error { - for { - c, err := w.Next() - if err == io.EOF { - break - } - if err != nil { - return err - } - - err = cb(c) - if err == storer.ErrStop { - break - } - if err != nil { - return err - } - } - - return nil -} - -func (w *bfsCommitIterator) Close() {} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/commit_walker_bfs_filtered.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/commit_walker_bfs_filtered.go deleted file mode 100644 index b12523d..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/commit_walker_bfs_filtered.go +++ /dev/null @@ -1,176 +0,0 @@ -package object - -import ( - "io" - - "gopkg.in/src-d/go-git.v4/plumbing" - "gopkg.in/src-d/go-git.v4/plumbing/storer" -) - -// NewFilterCommitIter returns a CommitIter that walks the commit history, -// starting at the passed commit and visiting its parents in Breadth-first order. -// The commits returned by the CommitIter will validate the passed CommitFilter. -// The history won't be transversed beyond a commit if isLimit is true for it. -// Each commit will be visited only once. -// If the commit history can not be traversed, or the Close() method is called, -// the CommitIter won't return more commits. -// If no isValid is passed, all ancestors of from commit will be valid. -// If no isLimit is limmit, all ancestors of all commits will be visited. -func NewFilterCommitIter( - from *Commit, - isValid *CommitFilter, - isLimit *CommitFilter, -) CommitIter { - var validFilter CommitFilter - if isValid == nil { - validFilter = func(_ *Commit) bool { - return true - } - } else { - validFilter = *isValid - } - - var limitFilter CommitFilter - if isLimit == nil { - limitFilter = func(_ *Commit) bool { - return false - } - } else { - limitFilter = *isLimit - } - - return &filterCommitIter{ - isValid: validFilter, - isLimit: limitFilter, - visited: map[plumbing.Hash]struct{}{}, - queue: []*Commit{from}, - } -} - -// CommitFilter returns a boolean for the passed Commit -type CommitFilter func(*Commit) bool - -// filterCommitIter implments CommitIter -type filterCommitIter struct { - isValid CommitFilter - isLimit CommitFilter - visited map[plumbing.Hash]struct{} - queue []*Commit - lastErr error -} - -// Next returns the next commit of the CommitIter. -// It will return io.EOF if there are no more commits to visit, -// or an error if the history could not be traversed. -func (w *filterCommitIter) Next() (*Commit, error) { - var commit *Commit - var err error - for { - commit, err = w.popNewFromQueue() - if err != nil { - return nil, w.close(err) - } - - w.visited[commit.Hash] = struct{}{} - - if !w.isLimit(commit) { - err = w.addToQueue(commit.s, commit.ParentHashes...) - if err != nil { - return nil, w.close(err) - } - } - - if w.isValid(commit) { - return commit, nil - } - } -} - -// ForEach runs the passed callback over each Commit returned by the CommitIter -// until the callback returns an error or there is no more commits to traverse. -func (w *filterCommitIter) ForEach(cb func(*Commit) error) error { - for { - commit, err := w.Next() - if err == io.EOF { - break - } - - if err != nil { - return err - } - - if err := cb(commit); err == storer.ErrStop { - break - } else if err != nil { - return err - } - } - - return nil -} - -// Error returns the error that caused that the CommitIter is no longer returning commits -func (w *filterCommitIter) Error() error { - return w.lastErr -} - -// Close closes the CommitIter -func (w *filterCommitIter) Close() { - w.visited = map[plumbing.Hash]struct{}{} - w.queue = []*Commit{} - w.isLimit = nil - w.isValid = nil -} - -// close closes the CommitIter with an error -func (w *filterCommitIter) close(err error) error { - w.Close() - w.lastErr = err - return err -} - -// popNewFromQueue returns the first new commit from the internal fifo queue, -// or an io.EOF error if the queue is empty -func (w *filterCommitIter) popNewFromQueue() (*Commit, error) { - var first *Commit - for { - if len(w.queue) == 0 { - if w.lastErr != nil { - return nil, w.lastErr - } - - return nil, io.EOF - } - - first = w.queue[0] - w.queue = w.queue[1:] - if _, ok := w.visited[first.Hash]; ok { - continue - } - - return first, nil - } -} - -// addToQueue adds the passed commits to the internal fifo queue if they weren't seen -// or returns an error if the passed hashes could not be used to get valid commits -func (w *filterCommitIter) addToQueue( - store storer.EncodedObjectStorer, - hashes ...plumbing.Hash, -) error { - for _, hash := range hashes { - if _, ok := w.visited[hash]; ok { - continue - } - - commit, err := GetCommit(store, hash) - if err != nil { - return err - } - - w.queue = append(w.queue, commit) - } - - return nil -} - diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/commit_walker_ctime.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/commit_walker_ctime.go deleted file mode 100644 index 0191614..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/commit_walker_ctime.go +++ /dev/null @@ -1,103 +0,0 @@ -package object - -import ( - "io" - - "github.com/emirpasic/gods/trees/binaryheap" - - "gopkg.in/src-d/go-git.v4/plumbing" - "gopkg.in/src-d/go-git.v4/plumbing/storer" -) - -type commitIteratorByCTime struct { - seenExternal map[plumbing.Hash]bool - seen map[plumbing.Hash]bool - heap *binaryheap.Heap -} - -// NewCommitIterCTime returns a CommitIter that walks the commit history, -// starting at the given commit and visiting its parents while preserving Committer Time order. -// this appears to be the closest order to `git log` -// The given callback will be called for each visited commit. Each commit will -// be visited only once. If the callback returns an error, walking will stop -// and will return the error. Other errors might be returned if the history -// cannot be traversed (e.g. missing objects). Ignore allows to skip some -// commits from being iterated. -func NewCommitIterCTime( - c *Commit, - seenExternal map[plumbing.Hash]bool, - ignore []plumbing.Hash, -) CommitIter { - seen := make(map[plumbing.Hash]bool) - for _, h := range ignore { - seen[h] = true - } - - heap := binaryheap.NewWith(func(a, b interface{}) int { - if a.(*Commit).Committer.When.Before(b.(*Commit).Committer.When) { - return 1 - } - return -1 - }) - heap.Push(c) - - return &commitIteratorByCTime{ - seenExternal: seenExternal, - seen: seen, - heap: heap, - } -} - -func (w *commitIteratorByCTime) Next() (*Commit, error) { - var c *Commit - for { - cIn, ok := w.heap.Pop() - if !ok { - return nil, io.EOF - } - c = cIn.(*Commit) - - if w.seen[c.Hash] || w.seenExternal[c.Hash] { - continue - } - - w.seen[c.Hash] = true - - for _, h := range c.ParentHashes { - if w.seen[h] || w.seenExternal[h] { - continue - } - pc, err := GetCommit(c.s, h) - if err != nil { - return nil, err - } - w.heap.Push(pc) - } - - return c, nil - } -} - -func (w *commitIteratorByCTime) ForEach(cb func(*Commit) error) error { - for { - c, err := w.Next() - if err == io.EOF { - break - } - if err != nil { - return err - } - - err = cb(c) - if err == storer.ErrStop { - break - } - if err != nil { - return err - } - } - - return nil -} - -func (w *commitIteratorByCTime) Close() {} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/commit_walker_file.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/commit_walker_file.go deleted file mode 100644 index 6f16e61..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/commit_walker_file.go +++ /dev/null @@ -1,145 +0,0 @@ -package object - -import ( - "io" - - "gopkg.in/src-d/go-git.v4/plumbing" - - "gopkg.in/src-d/go-git.v4/plumbing/storer" -) - -type commitFileIter struct { - fileName string - sourceIter CommitIter - currentCommit *Commit - checkParent bool -} - -// NewCommitFileIterFromIter returns a commit iterator which performs diffTree between -// successive trees returned from the commit iterator from the argument. The purpose of this is -// to find the commits that explain how the files that match the path came to be. -// If checkParent is true then the function double checks if potential parent (next commit in a path) -// is one of the parents in the tree (it's used by `git log --all`). -func NewCommitFileIterFromIter(fileName string, commitIter CommitIter, checkParent bool) CommitIter { - iterator := new(commitFileIter) - iterator.sourceIter = commitIter - iterator.fileName = fileName - iterator.checkParent = checkParent - return iterator -} - -func (c *commitFileIter) Next() (*Commit, error) { - if c.currentCommit == nil { - var err error - c.currentCommit, err = c.sourceIter.Next() - if err != nil { - return nil, err - } - } - commit, commitErr := c.getNextFileCommit() - - // Setting current-commit to nil to prevent unwanted states when errors are raised - if commitErr != nil { - c.currentCommit = nil - } - return commit, commitErr -} - -func (c *commitFileIter) getNextFileCommit() (*Commit, error) { - for { - // Parent-commit can be nil if the current-commit is the initial commit - parentCommit, parentCommitErr := c.sourceIter.Next() - if parentCommitErr != nil { - // If the parent-commit is beyond the initial commit, keep it nil - if parentCommitErr != io.EOF { - return nil, parentCommitErr - } - parentCommit = nil - } - - // Fetch the trees of the current and parent commits - currentTree, currTreeErr := c.currentCommit.Tree() - if currTreeErr != nil { - return nil, currTreeErr - } - - var parentTree *Tree - if parentCommit != nil { - var parentTreeErr error - parentTree, parentTreeErr = parentCommit.Tree() - if parentTreeErr != nil { - return nil, parentTreeErr - } - } - - // Find diff between current and parent trees - changes, diffErr := DiffTree(currentTree, parentTree) - if diffErr != nil { - return nil, diffErr - } - - found := c.hasFileChange(changes, parentCommit) - - // Storing the current-commit in-case a change is found, and - // Updating the current-commit for the next-iteration - prevCommit := c.currentCommit - c.currentCommit = parentCommit - - if found { - return prevCommit, nil - } - - // If not matches found and if parent-commit is beyond the initial commit, then return with EOF - if parentCommit == nil { - return nil, io.EOF - } - } -} - -func (c *commitFileIter) hasFileChange(changes Changes, parent *Commit) bool { - for _, change := range changes { - if change.name() != c.fileName { - continue - } - - // filename matches, now check if source iterator contains all commits (from all refs) - if c.checkParent { - if parent != nil && isParentHash(parent.Hash, c.currentCommit) { - return true - } - continue - } - - return true - } - - return false -} - -func isParentHash(hash plumbing.Hash, commit *Commit) bool { - for _, h := range commit.ParentHashes { - if h == hash { - return true - } - } - return false -} - -func (c *commitFileIter) ForEach(cb func(*Commit) error) error { - for { - commit, nextErr := c.Next() - if nextErr != nil { - return nextErr - } - err := cb(commit) - if err == storer.ErrStop { - return nil - } else if err != nil { - return err - } - } -} - -func (c *commitFileIter) Close() { - c.sourceIter.Close() -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/common.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/common.go deleted file mode 100644 index 3591f5f..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/common.go +++ /dev/null @@ -1,12 +0,0 @@ -package object - -import ( - "bufio" - "sync" -) - -var bufPool = sync.Pool{ - New: func() interface{} { - return bufio.NewReader(nil) - }, -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/difftree.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/difftree.go deleted file mode 100644 index a30a29e..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/difftree.go +++ /dev/null @@ -1,37 +0,0 @@ -package object - -import ( - "bytes" - "context" - - "gopkg.in/src-d/go-git.v4/utils/merkletrie" - "gopkg.in/src-d/go-git.v4/utils/merkletrie/noder" -) - -// DiffTree compares the content and mode of the blobs found via two -// tree objects. -func DiffTree(a, b *Tree) (Changes, error) { - return DiffTreeContext(context.Background(), a, b) -} - -// DiffTree compares the content and mode of the blobs found via two -// tree objects. Provided context must be non-nil. -// An error will be return if context expires -func DiffTreeContext(ctx context.Context, a, b *Tree) (Changes, error) { - from := NewTreeRootNode(a) - to := NewTreeRootNode(b) - - hashEqual := func(a, b noder.Hasher) bool { - return bytes.Equal(a.Hash(), b.Hash()) - } - - merkletrieChanges, err := merkletrie.DiffTreeContext(ctx, from, to, hashEqual) - if err != nil { - if err == merkletrie.ErrCanceled { - return nil, ErrCanceled - } - return nil, err - } - - return newChanges(merkletrieChanges) -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/file.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/file.go deleted file mode 100644 index 1c5fdbb..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/file.go +++ /dev/null @@ -1,137 +0,0 @@ -package object - -import ( - "bytes" - "io" - "strings" - - "gopkg.in/src-d/go-git.v4/plumbing/filemode" - "gopkg.in/src-d/go-git.v4/plumbing/storer" - "gopkg.in/src-d/go-git.v4/utils/binary" - "gopkg.in/src-d/go-git.v4/utils/ioutil" -) - -// File represents git file objects. -type File struct { - // Name is the path of the file. It might be relative to a tree, - // depending of the function that generates it. - Name string - // Mode is the file mode. - Mode filemode.FileMode - // Blob with the contents of the file. - Blob -} - -// NewFile returns a File based on the given blob object -func NewFile(name string, m filemode.FileMode, b *Blob) *File { - return &File{Name: name, Mode: m, Blob: *b} -} - -// Contents returns the contents of a file as a string. -func (f *File) Contents() (content string, err error) { - reader, err := f.Reader() - if err != nil { - return "", err - } - defer ioutil.CheckClose(reader, &err) - - buf := new(bytes.Buffer) - if _, err := buf.ReadFrom(reader); err != nil { - return "", err - } - - return buf.String(), nil -} - -// IsBinary returns if the file is binary or not -func (f *File) IsBinary() (bin bool, err error) { - reader, err := f.Reader() - if err != nil { - return false, err - } - defer ioutil.CheckClose(reader, &err) - - return binary.IsBinary(reader) -} - -// Lines returns a slice of lines from the contents of a file, stripping -// all end of line characters. If the last line is empty (does not end -// in an end of line), it is also stripped. -func (f *File) Lines() ([]string, error) { - content, err := f.Contents() - if err != nil { - return nil, err - } - - splits := strings.Split(content, "\n") - // remove the last line if it is empty - if splits[len(splits)-1] == "" { - return splits[:len(splits)-1], nil - } - - return splits, nil -} - -// FileIter provides an iterator for the files in a tree. -type FileIter struct { - s storer.EncodedObjectStorer - w TreeWalker -} - -// NewFileIter takes a storer.EncodedObjectStorer and a Tree and returns a -// *FileIter that iterates over all files contained in the tree, recursively. -func NewFileIter(s storer.EncodedObjectStorer, t *Tree) *FileIter { - return &FileIter{s: s, w: *NewTreeWalker(t, true, nil)} -} - -// Next moves the iterator to the next file and returns a pointer to it. If -// there are no more files, it returns io.EOF. -func (iter *FileIter) Next() (*File, error) { - for { - name, entry, err := iter.w.Next() - if err != nil { - return nil, err - } - - if entry.Mode == filemode.Dir || entry.Mode == filemode.Submodule { - continue - } - - blob, err := GetBlob(iter.s, entry.Hash) - if err != nil { - return nil, err - } - - return NewFile(name, entry.Mode, blob), nil - } -} - -// ForEach call the cb function for each file contained in this iter until -// an error happens or the end of the iter is reached. If plumbing.ErrStop is sent -// the iteration is stop but no error is returned. The iterator is closed. -func (iter *FileIter) ForEach(cb func(*File) error) error { - defer iter.Close() - - for { - f, err := iter.Next() - if err != nil { - if err == io.EOF { - return nil - } - - return err - } - - if err := cb(f); err != nil { - if err == storer.ErrStop { - return nil - } - - return err - } - } -} - -func (iter *FileIter) Close() { - iter.w.Close() -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/merge_base.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/merge_base.go deleted file mode 100644 index 6f2568d..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/merge_base.go +++ /dev/null @@ -1,210 +0,0 @@ -package object - -import ( - "fmt" - "sort" - - "gopkg.in/src-d/go-git.v4/plumbing" - "gopkg.in/src-d/go-git.v4/plumbing/storer" -) - -// errIsReachable is thrown when first commit is an ancestor of the second -var errIsReachable = fmt.Errorf("first is reachable from second") - -// MergeBase mimics the behavior of `git merge-base actual other`, returning the -// best common ancestor between the actual and the passed one. -// The best common ancestors can not be reached from other common ancestors. -func (c *Commit) MergeBase(other *Commit) ([]*Commit, error) { - // use sortedByCommitDateDesc strategy - sorted := sortByCommitDateDesc(c, other) - newer := sorted[0] - older := sorted[1] - - newerHistory, err := ancestorsIndex(older, newer) - if err == errIsReachable { - return []*Commit{older}, nil - } - - if err != nil { - return nil, err - } - - var res []*Commit - inNewerHistory := isInIndexCommitFilter(newerHistory) - resIter := NewFilterCommitIter(older, &inNewerHistory, &inNewerHistory) - _ = resIter.ForEach(func(commit *Commit) error { - res = append(res, commit) - return nil - }) - - return Independents(res) -} - -// IsAncestor returns true if the actual commit is ancestor of the passed one. -// It returns an error if the history is not transversable -// It mimics the behavior of `git merge --is-ancestor actual other` -func (c *Commit) IsAncestor(other *Commit) (bool, error) { - found := false - iter := NewCommitPreorderIter(other, nil, nil) - err := iter.ForEach(func(comm *Commit) error { - if comm.Hash != c.Hash { - return nil - } - - found = true - return storer.ErrStop - }) - - return found, err -} - -// ancestorsIndex returns a map with the ancestors of the starting commit if the -// excluded one is not one of them. It returns errIsReachable if the excluded commit -// is ancestor of the starting, or another error if the history is not traversable. -func ancestorsIndex(excluded, starting *Commit) (map[plumbing.Hash]struct{}, error) { - if excluded.Hash.String() == starting.Hash.String() { - return nil, errIsReachable - } - - startingHistory := map[plumbing.Hash]struct{}{} - startingIter := NewCommitIterBSF(starting, nil, nil) - err := startingIter.ForEach(func(commit *Commit) error { - if commit.Hash == excluded.Hash { - return errIsReachable - } - - startingHistory[commit.Hash] = struct{}{} - return nil - }) - - if err != nil { - return nil, err - } - - return startingHistory, nil -} - -// Independents returns a subset of the passed commits, that are not reachable the others -// It mimics the behavior of `git merge-base --independent commit...`. -func Independents(commits []*Commit) ([]*Commit, error) { - // use sortedByCommitDateDesc strategy - candidates := sortByCommitDateDesc(commits...) - candidates = removeDuplicated(candidates) - - seen := map[plumbing.Hash]struct{}{} - var isLimit CommitFilter = func(commit *Commit) bool { - _, ok := seen[commit.Hash] - return ok - } - - if len(candidates) < 2 { - return candidates, nil - } - - pos := 0 - for { - from := candidates[pos] - others := remove(candidates, from) - fromHistoryIter := NewFilterCommitIter(from, nil, &isLimit) - err := fromHistoryIter.ForEach(func(fromAncestor *Commit) error { - for _, other := range others { - if fromAncestor.Hash == other.Hash { - candidates = remove(candidates, other) - others = remove(others, other) - } - } - - if len(candidates) == 1 { - return storer.ErrStop - } - - seen[fromAncestor.Hash] = struct{}{} - return nil - }) - - if err != nil { - return nil, err - } - - nextPos := indexOf(candidates, from) + 1 - if nextPos >= len(candidates) { - break - } - - pos = nextPos - } - - return candidates, nil -} - -// sortByCommitDateDesc returns the passed commits, sorted by `committer.When desc` -// -// Following this strategy, it is tried to reduce the time needed when walking -// the history from one commit to reach the others. It is assumed that ancestors -// use to be committed before its descendant; -// That way `Independents(A^, A)` will be processed as being `Independents(A, A^)`; -// so starting by `A` it will be reached `A^` way sooner than walking from `A^` -// to the initial commit, and then from `A` to `A^`. -func sortByCommitDateDesc(commits ...*Commit) []*Commit { - sorted := make([]*Commit, len(commits)) - copy(sorted, commits) - sort.Slice(sorted, func(i, j int) bool { - return sorted[i].Committer.When.After(sorted[j].Committer.When) - }) - - return sorted -} - -// indexOf returns the first position where target was found in the passed commits -func indexOf(commits []*Commit, target *Commit) int { - for i, commit := range commits { - if target.Hash == commit.Hash { - return i - } - } - - return -1 -} - -// remove returns the passed commits excluding the commit toDelete -func remove(commits []*Commit, toDelete *Commit) []*Commit { - res := make([]*Commit, len(commits)) - j := 0 - for _, commit := range commits { - if commit.Hash == toDelete.Hash { - continue - } - - res[j] = commit - j++ - } - - return res[:j] -} - -// removeDuplicated removes duplicated commits from the passed slice of commits -func removeDuplicated(commits []*Commit) []*Commit { - seen := make(map[plumbing.Hash]struct{}, len(commits)) - res := make([]*Commit, len(commits)) - j := 0 - for _, commit := range commits { - if _, ok := seen[commit.Hash]; ok { - continue - } - - seen[commit.Hash] = struct{}{} - res[j] = commit - j++ - } - - return res[:j] -} - -// isInIndexCommitFilter returns a commitFilter that returns true -// if the commit is in the passed index. -func isInIndexCommitFilter(index map[plumbing.Hash]struct{}) CommitFilter { - return func(c *Commit) bool { - _, ok := index[c.Hash] - return ok - } -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/object.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/object.go deleted file mode 100644 index e960e50..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/object.go +++ /dev/null @@ -1,237 +0,0 @@ -// Package object contains implementations of all Git objects and utility -// functions to work with them. -package object - -import ( - "bytes" - "errors" - "fmt" - "io" - "strconv" - "time" - - "gopkg.in/src-d/go-git.v4/plumbing" - "gopkg.in/src-d/go-git.v4/plumbing/storer" -) - -// ErrUnsupportedObject trigger when a non-supported object is being decoded. -var ErrUnsupportedObject = errors.New("unsupported object type") - -// Object is a generic representation of any git object. It is implemented by -// Commit, Tree, Blob, and Tag, and includes the functions that are common to -// them. -// -// Object is returned when an object can be of any type. It is frequently used -// with a type cast to acquire the specific type of object: -// -// func process(obj Object) { -// switch o := obj.(type) { -// case *Commit: -// // o is a Commit -// case *Tree: -// // o is a Tree -// case *Blob: -// // o is a Blob -// case *Tag: -// // o is a Tag -// } -// } -// -// This interface is intentionally different from plumbing.EncodedObject, which -// is a lower level interface used by storage implementations to read and write -// objects in its encoded form. -type Object interface { - ID() plumbing.Hash - Type() plumbing.ObjectType - Decode(plumbing.EncodedObject) error - Encode(plumbing.EncodedObject) error -} - -// GetObject gets an object from an object storer and decodes it. -func GetObject(s storer.EncodedObjectStorer, h plumbing.Hash) (Object, error) { - o, err := s.EncodedObject(plumbing.AnyObject, h) - if err != nil { - return nil, err - } - - return DecodeObject(s, o) -} - -// DecodeObject decodes an encoded object into an Object and associates it to -// the given object storer. -func DecodeObject(s storer.EncodedObjectStorer, o plumbing.EncodedObject) (Object, error) { - switch o.Type() { - case plumbing.CommitObject: - return DecodeCommit(s, o) - case plumbing.TreeObject: - return DecodeTree(s, o) - case plumbing.BlobObject: - return DecodeBlob(o) - case plumbing.TagObject: - return DecodeTag(s, o) - default: - return nil, plumbing.ErrInvalidType - } -} - -// DateFormat is the format being used in the original git implementation -const DateFormat = "Mon Jan 02 15:04:05 2006 -0700" - -// Signature is used to identify who and when created a commit or tag. -type Signature struct { - // Name represents a person name. It is an arbitrary string. - Name string - // Email is an email, but it cannot be assumed to be well-formed. - Email string - // When is the timestamp of the signature. - When time.Time -} - -// Decode decodes a byte slice into a signature -func (s *Signature) Decode(b []byte) { - open := bytes.LastIndexByte(b, '<') - close := bytes.LastIndexByte(b, '>') - if open == -1 || close == -1 { - return - } - - if close < open { - return - } - - s.Name = string(bytes.Trim(b[:open], " ")) - s.Email = string(b[open+1 : close]) - - hasTime := close+2 < len(b) - if hasTime { - s.decodeTimeAndTimeZone(b[close+2:]) - } -} - -// Encode encodes a Signature into a writer. -func (s *Signature) Encode(w io.Writer) error { - if _, err := fmt.Fprintf(w, "%s <%s> ", s.Name, s.Email); err != nil { - return err - } - if err := s.encodeTimeAndTimeZone(w); err != nil { - return err - } - return nil -} - -var timeZoneLength = 5 - -func (s *Signature) decodeTimeAndTimeZone(b []byte) { - space := bytes.IndexByte(b, ' ') - if space == -1 { - space = len(b) - } - - ts, err := strconv.ParseInt(string(b[:space]), 10, 64) - if err != nil { - return - } - - s.When = time.Unix(ts, 0).In(time.UTC) - var tzStart = space + 1 - if tzStart >= len(b) || tzStart+timeZoneLength > len(b) { - return - } - - // Include a dummy year in this time.Parse() call to avoid a bug in Go: - // https://github.com/golang/go/issues/19750 - // - // Parsing the timezone with no other details causes the tl.Location() call - // below to return time.Local instead of the parsed zone in some cases - tl, err := time.Parse("2006 -0700", "1970 "+string(b[tzStart:tzStart+timeZoneLength])) - if err != nil { - return - } - - s.When = s.When.In(tl.Location()) -} - -func (s *Signature) encodeTimeAndTimeZone(w io.Writer) error { - u := s.When.Unix() - if u < 0 { - u = 0 - } - _, err := fmt.Fprintf(w, "%d %s", u, s.When.Format("-0700")) - return err -} - -func (s *Signature) String() string { - return fmt.Sprintf("%s <%s>", s.Name, s.Email) -} - -// ObjectIter provides an iterator for a set of objects. -type ObjectIter struct { - storer.EncodedObjectIter - s storer.EncodedObjectStorer -} - -// NewObjectIter takes a storer.EncodedObjectStorer and a -// storer.EncodedObjectIter and returns an *ObjectIter that iterates over all -// objects contained in the storer.EncodedObjectIter. -func NewObjectIter(s storer.EncodedObjectStorer, iter storer.EncodedObjectIter) *ObjectIter { - return &ObjectIter{iter, s} -} - -// Next moves the iterator to the next object and returns a pointer to it. If -// there are no more objects, it returns io.EOF. -func (iter *ObjectIter) Next() (Object, error) { - for { - obj, err := iter.EncodedObjectIter.Next() - if err != nil { - return nil, err - } - - o, err := iter.toObject(obj) - if err == plumbing.ErrInvalidType { - continue - } - - if err != nil { - return nil, err - } - - return o, nil - } -} - -// ForEach call the cb function for each object contained on this iter until -// an error happens or the end of the iter is reached. If ErrStop is sent -// the iteration is stop but no error is returned. The iterator is closed. -func (iter *ObjectIter) ForEach(cb func(Object) error) error { - return iter.EncodedObjectIter.ForEach(func(obj plumbing.EncodedObject) error { - o, err := iter.toObject(obj) - if err == plumbing.ErrInvalidType { - return nil - } - - if err != nil { - return err - } - - return cb(o) - }) -} - -func (iter *ObjectIter) toObject(obj plumbing.EncodedObject) (Object, error) { - switch obj.Type() { - case plumbing.BlobObject: - blob := &Blob{} - return blob, blob.Decode(obj) - case plumbing.TreeObject: - tree := &Tree{s: iter.s} - return tree, tree.Decode(obj) - case plumbing.CommitObject: - commit := &Commit{} - return commit, commit.Decode(obj) - case plumbing.TagObject: - tag := &Tag{} - return tag, tag.Decode(obj) - default: - return nil, plumbing.ErrInvalidType - } -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/patch.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/patch.go deleted file mode 100644 index 32454ac..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/patch.go +++ /dev/null @@ -1,346 +0,0 @@ -package object - -import ( - "bytes" - "context" - "errors" - "fmt" - "io" - "math" - "strings" - - "gopkg.in/src-d/go-git.v4/plumbing" - "gopkg.in/src-d/go-git.v4/plumbing/filemode" - fdiff "gopkg.in/src-d/go-git.v4/plumbing/format/diff" - "gopkg.in/src-d/go-git.v4/utils/diff" - - dmp "github.com/sergi/go-diff/diffmatchpatch" -) - -var ( - ErrCanceled = errors.New("operation canceled") -) - -func getPatch(message string, changes ...*Change) (*Patch, error) { - ctx := context.Background() - return getPatchContext(ctx, message, changes...) -} - -func getPatchContext(ctx context.Context, message string, changes ...*Change) (*Patch, error) { - var filePatches []fdiff.FilePatch - for _, c := range changes { - select { - case <-ctx.Done(): - return nil, ErrCanceled - default: - } - - fp, err := filePatchWithContext(ctx, c) - if err != nil { - return nil, err - } - - filePatches = append(filePatches, fp) - } - - return &Patch{message, filePatches}, nil -} - -func filePatchWithContext(ctx context.Context, c *Change) (fdiff.FilePatch, error) { - from, to, err := c.Files() - if err != nil { - return nil, err - } - fromContent, fIsBinary, err := fileContent(from) - if err != nil { - return nil, err - } - - toContent, tIsBinary, err := fileContent(to) - if err != nil { - return nil, err - } - - if fIsBinary || tIsBinary { - return &textFilePatch{from: c.From, to: c.To}, nil - } - - diffs := diff.Do(fromContent, toContent) - - var chunks []fdiff.Chunk - for _, d := range diffs { - select { - case <-ctx.Done(): - return nil, ErrCanceled - default: - } - - var op fdiff.Operation - switch d.Type { - case dmp.DiffEqual: - op = fdiff.Equal - case dmp.DiffDelete: - op = fdiff.Delete - case dmp.DiffInsert: - op = fdiff.Add - } - - chunks = append(chunks, &textChunk{d.Text, op}) - } - - return &textFilePatch{ - chunks: chunks, - from: c.From, - to: c.To, - }, nil - -} - -func filePatch(c *Change) (fdiff.FilePatch, error) { - return filePatchWithContext(context.Background(), c) -} - -func fileContent(f *File) (content string, isBinary bool, err error) { - if f == nil { - return - } - - isBinary, err = f.IsBinary() - if err != nil || isBinary { - return - } - - content, err = f.Contents() - - return -} - -// textPatch is an implementation of fdiff.Patch interface -type Patch struct { - message string - filePatches []fdiff.FilePatch -} - -func (t *Patch) FilePatches() []fdiff.FilePatch { - return t.filePatches -} - -func (t *Patch) Message() string { - return t.message -} - -func (p *Patch) Encode(w io.Writer) error { - ue := fdiff.NewUnifiedEncoder(w, fdiff.DefaultContextLines) - - return ue.Encode(p) -} - -func (p *Patch) Stats() FileStats { - return getFileStatsFromFilePatches(p.FilePatches()) -} - -func (p *Patch) String() string { - buf := bytes.NewBuffer(nil) - err := p.Encode(buf) - if err != nil { - return fmt.Sprintf("malformed patch: %s", err.Error()) - } - - return buf.String() -} - -// changeEntryWrapper is an implementation of fdiff.File interface -type changeEntryWrapper struct { - ce ChangeEntry -} - -func (f *changeEntryWrapper) Hash() plumbing.Hash { - if !f.ce.TreeEntry.Mode.IsFile() { - return plumbing.ZeroHash - } - - return f.ce.TreeEntry.Hash -} - -func (f *changeEntryWrapper) Mode() filemode.FileMode { - return f.ce.TreeEntry.Mode -} -func (f *changeEntryWrapper) Path() string { - if !f.ce.TreeEntry.Mode.IsFile() { - return "" - } - - return f.ce.Name -} - -func (f *changeEntryWrapper) Empty() bool { - return !f.ce.TreeEntry.Mode.IsFile() -} - -// textFilePatch is an implementation of fdiff.FilePatch interface -type textFilePatch struct { - chunks []fdiff.Chunk - from, to ChangeEntry -} - -func (tf *textFilePatch) Files() (from fdiff.File, to fdiff.File) { - f := &changeEntryWrapper{tf.from} - t := &changeEntryWrapper{tf.to} - - if !f.Empty() { - from = f - } - - if !t.Empty() { - to = t - } - - return -} - -func (t *textFilePatch) IsBinary() bool { - return len(t.chunks) == 0 -} - -func (t *textFilePatch) Chunks() []fdiff.Chunk { - return t.chunks -} - -// textChunk is an implementation of fdiff.Chunk interface -type textChunk struct { - content string - op fdiff.Operation -} - -func (t *textChunk) Content() string { - return t.content -} - -func (t *textChunk) Type() fdiff.Operation { - return t.op -} - -// FileStat stores the status of changes in content of a file. -type FileStat struct { - Name string - Addition int - Deletion int -} - -func (fs FileStat) String() string { - return printStat([]FileStat{fs}) -} - -// FileStats is a collection of FileStat. -type FileStats []FileStat - -func (fileStats FileStats) String() string { - return printStat(fileStats) -} - -func printStat(fileStats []FileStat) string { - padLength := float64(len(" ")) - newlineLength := float64(len("\n")) - separatorLength := float64(len("|")) - // Soft line length limit. The text length calculation below excludes - // length of the change number. Adding that would take it closer to 80, - // but probably not more than 80, until it's a huge number. - lineLength := 72.0 - - // Get the longest filename and longest total change. - var longestLength float64 - var longestTotalChange float64 - for _, fs := range fileStats { - if int(longestLength) < len(fs.Name) { - longestLength = float64(len(fs.Name)) - } - totalChange := fs.Addition + fs.Deletion - if int(longestTotalChange) < totalChange { - longestTotalChange = float64(totalChange) - } - } - - // Parts of the output: - // |<+++/---> - // example: " main.go | 10 +++++++--- " - - // - leftTextLength := padLength + longestLength + padLength - - // <+++++/-----> - // Excluding number length here. - rightTextLength := padLength + padLength + newlineLength - - totalTextArea := leftTextLength + separatorLength + rightTextLength - heightOfHistogram := lineLength - totalTextArea - - // Scale the histogram. - var scaleFactor float64 - if longestTotalChange > heightOfHistogram { - // Scale down to heightOfHistogram. - scaleFactor = longestTotalChange / heightOfHistogram - } else { - scaleFactor = 1.0 - } - - finalOutput := "" - for _, fs := range fileStats { - addn := float64(fs.Addition) - deln := float64(fs.Deletion) - adds := strings.Repeat("+", int(math.Floor(addn/scaleFactor))) - dels := strings.Repeat("-", int(math.Floor(deln/scaleFactor))) - finalOutput += fmt.Sprintf(" %s | %d %s%s\n", fs.Name, (fs.Addition + fs.Deletion), adds, dels) - } - - return finalOutput -} - -func getFileStatsFromFilePatches(filePatches []fdiff.FilePatch) FileStats { - var fileStats FileStats - - for _, fp := range filePatches { - // ignore empty patches (binary files, submodule refs updates) - if len(fp.Chunks()) == 0 { - continue - } - - cs := FileStat{} - from, to := fp.Files() - if from == nil { - // New File is created. - cs.Name = to.Path() - } else if to == nil { - // File is deleted. - cs.Name = from.Path() - } else if from.Path() != to.Path() { - // File is renamed. Not supported. - // cs.Name = fmt.Sprintf("%s => %s", from.Path(), to.Path()) - } else { - cs.Name = from.Path() - } - - for _, chunk := range fp.Chunks() { - s := chunk.Content() - if len(s) == 0 { - continue - } - - switch chunk.Type() { - case fdiff.Add: - cs.Addition += strings.Count(s, "\n") - if s[len(s)-1] != '\n' { - cs.Addition++ - } - case fdiff.Delete: - cs.Deletion += strings.Count(s, "\n") - if s[len(s)-1] != '\n' { - cs.Deletion++ - } - } - } - - fileStats = append(fileStats, cs) - } - - return fileStats -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/tag.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/tag.go deleted file mode 100644 index 9ee5509..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/tag.go +++ /dev/null @@ -1,357 +0,0 @@ -package object - -import ( - "bufio" - "bytes" - "fmt" - "io" - stdioutil "io/ioutil" - "strings" - - "golang.org/x/crypto/openpgp" - - "gopkg.in/src-d/go-git.v4/plumbing" - "gopkg.in/src-d/go-git.v4/plumbing/storer" - "gopkg.in/src-d/go-git.v4/utils/ioutil" -) - -// Tag represents an annotated tag object. It points to a single git object of -// any type, but tags typically are applied to commit or blob objects. It -// provides a reference that associates the target with a tag name. It also -// contains meta-information about the tag, including the tagger, tag date and -// message. -// -// Note that this is not used for lightweight tags. -// -// https://git-scm.com/book/en/v2/Git-Internals-Git-References#Tags -type Tag struct { - // Hash of the tag. - Hash plumbing.Hash - // Name of the tag. - Name string - // Tagger is the one who created the tag. - Tagger Signature - // Message is an arbitrary text message. - Message string - // PGPSignature is the PGP signature of the tag. - PGPSignature string - // TargetType is the object type of the target. - TargetType plumbing.ObjectType - // Target is the hash of the target object. - Target plumbing.Hash - - s storer.EncodedObjectStorer -} - -// GetTag gets a tag from an object storer and decodes it. -func GetTag(s storer.EncodedObjectStorer, h plumbing.Hash) (*Tag, error) { - o, err := s.EncodedObject(plumbing.TagObject, h) - if err != nil { - return nil, err - } - - return DecodeTag(s, o) -} - -// DecodeTag decodes an encoded object into a *Commit and associates it to the -// given object storer. -func DecodeTag(s storer.EncodedObjectStorer, o plumbing.EncodedObject) (*Tag, error) { - t := &Tag{s: s} - if err := t.Decode(o); err != nil { - return nil, err - } - - return t, nil -} - -// ID returns the object ID of the tag, not the object that the tag references. -// The returned value will always match the current value of Tag.Hash. -// -// ID is present to fulfill the Object interface. -func (t *Tag) ID() plumbing.Hash { - return t.Hash -} - -// Type returns the type of object. It always returns plumbing.TagObject. -// -// Type is present to fulfill the Object interface. -func (t *Tag) Type() plumbing.ObjectType { - return plumbing.TagObject -} - -// Decode transforms a plumbing.EncodedObject into a Tag struct. -func (t *Tag) Decode(o plumbing.EncodedObject) (err error) { - if o.Type() != plumbing.TagObject { - return ErrUnsupportedObject - } - - t.Hash = o.Hash() - - reader, err := o.Reader() - if err != nil { - return err - } - defer ioutil.CheckClose(reader, &err) - - r := bufPool.Get().(*bufio.Reader) - defer bufPool.Put(r) - r.Reset(reader) - for { - var line []byte - line, err = r.ReadBytes('\n') - if err != nil && err != io.EOF { - return err - } - - line = bytes.TrimSpace(line) - if len(line) == 0 { - break // Start of message - } - - split := bytes.SplitN(line, []byte{' '}, 2) - switch string(split[0]) { - case "object": - t.Target = plumbing.NewHash(string(split[1])) - case "type": - t.TargetType, err = plumbing.ParseObjectType(string(split[1])) - if err != nil { - return err - } - case "tag": - t.Name = string(split[1]) - case "tagger": - t.Tagger.Decode(split[1]) - } - - if err == io.EOF { - return nil - } - } - - data, err := stdioutil.ReadAll(r) - if err != nil { - return err - } - - var pgpsig bool - // Check if data contains PGP signature. - if bytes.Contains(data, []byte(beginpgp)) { - // Split the lines at newline. - messageAndSig := bytes.Split(data, []byte("\n")) - - for _, l := range messageAndSig { - if pgpsig { - if bytes.Contains(l, []byte(endpgp)) { - t.PGPSignature += endpgp + "\n" - break - } else { - t.PGPSignature += string(l) + "\n" - } - continue - } - - // Check if it's the beginning of a PGP signature. - if bytes.Contains(l, []byte(beginpgp)) { - t.PGPSignature += beginpgp + "\n" - pgpsig = true - continue - } - - t.Message += string(l) + "\n" - } - } else { - t.Message = string(data) - } - - return nil -} - -// Encode transforms a Tag into a plumbing.EncodedObject. -func (t *Tag) Encode(o plumbing.EncodedObject) error { - return t.encode(o, true) -} - -// EncodeWithoutSignature export a Tag into a plumbing.EncodedObject without the signature (correspond to the payload of the PGP signature). -func (t *Tag) EncodeWithoutSignature(o plumbing.EncodedObject) error { - return t.encode(o, false) -} - -func (t *Tag) encode(o plumbing.EncodedObject, includeSig bool) (err error) { - o.SetType(plumbing.TagObject) - w, err := o.Writer() - if err != nil { - return err - } - defer ioutil.CheckClose(w, &err) - - if _, err = fmt.Fprintf(w, - "object %s\ntype %s\ntag %s\ntagger ", - t.Target.String(), t.TargetType.Bytes(), t.Name); err != nil { - return err - } - - if err = t.Tagger.Encode(w); err != nil { - return err - } - - if _, err = fmt.Fprint(w, "\n\n"); err != nil { - return err - } - - if _, err = fmt.Fprint(w, t.Message); err != nil { - return err - } - - // Note that this is highly sensitive to what it sent along in the message. - // Message *always* needs to end with a newline, or else the message and the - // signature will be concatenated into a corrupt object. Since this is a - // lower-level method, we assume you know what you are doing and have already - // done the needful on the message in the caller. - if includeSig { - if _, err = fmt.Fprint(w, t.PGPSignature); err != nil { - return err - } - } - - return err -} - -// Commit returns the commit pointed to by the tag. If the tag points to a -// different type of object ErrUnsupportedObject will be returned. -func (t *Tag) Commit() (*Commit, error) { - if t.TargetType != plumbing.CommitObject { - return nil, ErrUnsupportedObject - } - - o, err := t.s.EncodedObject(plumbing.CommitObject, t.Target) - if err != nil { - return nil, err - } - - return DecodeCommit(t.s, o) -} - -// Tree returns the tree pointed to by the tag. If the tag points to a commit -// object the tree of that commit will be returned. If the tag does not point -// to a commit or tree object ErrUnsupportedObject will be returned. -func (t *Tag) Tree() (*Tree, error) { - switch t.TargetType { - case plumbing.CommitObject: - c, err := t.Commit() - if err != nil { - return nil, err - } - - return c.Tree() - case plumbing.TreeObject: - return GetTree(t.s, t.Target) - default: - return nil, ErrUnsupportedObject - } -} - -// Blob returns the blob pointed to by the tag. If the tag points to a -// different type of object ErrUnsupportedObject will be returned. -func (t *Tag) Blob() (*Blob, error) { - if t.TargetType != plumbing.BlobObject { - return nil, ErrUnsupportedObject - } - - return GetBlob(t.s, t.Target) -} - -// Object returns the object pointed to by the tag. -func (t *Tag) Object() (Object, error) { - o, err := t.s.EncodedObject(t.TargetType, t.Target) - if err != nil { - return nil, err - } - - return DecodeObject(t.s, o) -} - -// String returns the meta information contained in the tag as a formatted -// string. -func (t *Tag) String() string { - obj, _ := t.Object() - - return fmt.Sprintf( - "%s %s\nTagger: %s\nDate: %s\n\n%s\n%s", - plumbing.TagObject, t.Name, t.Tagger.String(), t.Tagger.When.Format(DateFormat), - t.Message, objectAsString(obj), - ) -} - -// Verify performs PGP verification of the tag with a provided armored -// keyring and returns openpgp.Entity associated with verifying key on success. -func (t *Tag) Verify(armoredKeyRing string) (*openpgp.Entity, error) { - keyRingReader := strings.NewReader(armoredKeyRing) - keyring, err := openpgp.ReadArmoredKeyRing(keyRingReader) - if err != nil { - return nil, err - } - - // Extract signature. - signature := strings.NewReader(t.PGPSignature) - - encoded := &plumbing.MemoryObject{} - // Encode tag components, excluding signature and get a reader object. - if err := t.EncodeWithoutSignature(encoded); err != nil { - return nil, err - } - er, err := encoded.Reader() - if err != nil { - return nil, err - } - - return openpgp.CheckArmoredDetachedSignature(keyring, er, signature) -} - -// TagIter provides an iterator for a set of tags. -type TagIter struct { - storer.EncodedObjectIter - s storer.EncodedObjectStorer -} - -// NewTagIter takes a storer.EncodedObjectStorer and a -// storer.EncodedObjectIter and returns a *TagIter that iterates over all -// tags contained in the storer.EncodedObjectIter. -// -// Any non-tag object returned by the storer.EncodedObjectIter is skipped. -func NewTagIter(s storer.EncodedObjectStorer, iter storer.EncodedObjectIter) *TagIter { - return &TagIter{iter, s} -} - -// Next moves the iterator to the next tag and returns a pointer to it. If -// there are no more tags, it returns io.EOF. -func (iter *TagIter) Next() (*Tag, error) { - obj, err := iter.EncodedObjectIter.Next() - if err != nil { - return nil, err - } - - return DecodeTag(iter.s, obj) -} - -// ForEach call the cb function for each tag contained on this iter until -// an error happens or the end of the iter is reached. If ErrStop is sent -// the iteration is stop but no error is returned. The iterator is closed. -func (iter *TagIter) ForEach(cb func(*Tag) error) error { - return iter.EncodedObjectIter.ForEach(func(obj plumbing.EncodedObject) error { - t, err := DecodeTag(iter.s, obj) - if err != nil { - return err - } - - return cb(t) - }) -} - -func objectAsString(obj Object) string { - switch o := obj.(type) { - case *Commit: - return o.String() - default: - return "" - } -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/tree.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/tree.go deleted file mode 100644 index d0b4fff..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/tree.go +++ /dev/null @@ -1,520 +0,0 @@ -package object - -import ( - "bufio" - "context" - "errors" - "fmt" - "io" - "path" - "path/filepath" - "strings" - - "gopkg.in/src-d/go-git.v4/plumbing" - "gopkg.in/src-d/go-git.v4/plumbing/filemode" - "gopkg.in/src-d/go-git.v4/plumbing/storer" - "gopkg.in/src-d/go-git.v4/utils/ioutil" -) - -const ( - maxTreeDepth = 1024 - startingStackSize = 8 -) - -// New errors defined by this package. -var ( - ErrMaxTreeDepth = errors.New("maximum tree depth exceeded") - ErrFileNotFound = errors.New("file not found") - ErrDirectoryNotFound = errors.New("directory not found") - ErrEntryNotFound = errors.New("entry not found") -) - -// Tree is basically like a directory - it references a bunch of other trees -// and/or blobs (i.e. files and sub-directories) -type Tree struct { - Entries []TreeEntry - Hash plumbing.Hash - - s storer.EncodedObjectStorer - m map[string]*TreeEntry - t map[string]*Tree // tree path cache -} - -// GetTree gets a tree from an object storer and decodes it. -func GetTree(s storer.EncodedObjectStorer, h plumbing.Hash) (*Tree, error) { - o, err := s.EncodedObject(plumbing.TreeObject, h) - if err != nil { - return nil, err - } - - return DecodeTree(s, o) -} - -// DecodeTree decodes an encoded object into a *Tree and associates it to the -// given object storer. -func DecodeTree(s storer.EncodedObjectStorer, o plumbing.EncodedObject) (*Tree, error) { - t := &Tree{s: s} - if err := t.Decode(o); err != nil { - return nil, err - } - - return t, nil -} - -// TreeEntry represents a file -type TreeEntry struct { - Name string - Mode filemode.FileMode - Hash plumbing.Hash -} - -// File returns the hash of the file identified by the `path` argument. -// The path is interpreted as relative to the tree receiver. -func (t *Tree) File(path string) (*File, error) { - e, err := t.FindEntry(path) - if err != nil { - return nil, ErrFileNotFound - } - - blob, err := GetBlob(t.s, e.Hash) - if err != nil { - if err == plumbing.ErrObjectNotFound { - return nil, ErrFileNotFound - } - return nil, err - } - - return NewFile(path, e.Mode, blob), nil -} - -// Size returns the plaintext size of an object, without reading it -// into memory. -func (t *Tree) Size(path string) (int64, error) { - e, err := t.FindEntry(path) - if err != nil { - return 0, ErrEntryNotFound - } - - return t.s.EncodedObjectSize(e.Hash) -} - -// Tree returns the tree identified by the `path` argument. -// The path is interpreted as relative to the tree receiver. -func (t *Tree) Tree(path string) (*Tree, error) { - e, err := t.FindEntry(path) - if err != nil { - return nil, ErrDirectoryNotFound - } - - tree, err := GetTree(t.s, e.Hash) - if err == plumbing.ErrObjectNotFound { - return nil, ErrDirectoryNotFound - } - - return tree, err -} - -// TreeEntryFile returns the *File for a given *TreeEntry. -func (t *Tree) TreeEntryFile(e *TreeEntry) (*File, error) { - blob, err := GetBlob(t.s, e.Hash) - if err != nil { - return nil, err - } - - return NewFile(e.Name, e.Mode, blob), nil -} - -// FindEntry search a TreeEntry in this tree or any subtree. -func (t *Tree) FindEntry(path string) (*TreeEntry, error) { - if t.t == nil { - t.t = make(map[string]*Tree) - } - - pathParts := strings.Split(path, "/") - startingTree := t - pathCurrent := "" - - // search for the longest path in the tree path cache - for i := len(pathParts) - 1; i > 1; i-- { - path := filepath.Join(pathParts[:i]...) - - tree, ok := t.t[path] - if ok { - startingTree = tree - pathParts = pathParts[i:] - pathCurrent = path - - break - } - } - - var tree *Tree - var err error - for tree = startingTree; len(pathParts) > 1; pathParts = pathParts[1:] { - if tree, err = tree.dir(pathParts[0]); err != nil { - return nil, err - } - - pathCurrent = filepath.Join(pathCurrent, pathParts[0]) - t.t[pathCurrent] = tree - } - - return tree.entry(pathParts[0]) -} - -func (t *Tree) dir(baseName string) (*Tree, error) { - entry, err := t.entry(baseName) - if err != nil { - return nil, ErrDirectoryNotFound - } - - obj, err := t.s.EncodedObject(plumbing.TreeObject, entry.Hash) - if err != nil { - return nil, err - } - - tree := &Tree{s: t.s} - err = tree.Decode(obj) - - return tree, err -} - -func (t *Tree) entry(baseName string) (*TreeEntry, error) { - if t.m == nil { - t.buildMap() - } - - entry, ok := t.m[baseName] - if !ok { - return nil, ErrEntryNotFound - } - - return entry, nil -} - -// Files returns a FileIter allowing to iterate over the Tree -func (t *Tree) Files() *FileIter { - return NewFileIter(t.s, t) -} - -// ID returns the object ID of the tree. The returned value will always match -// the current value of Tree.Hash. -// -// ID is present to fulfill the Object interface. -func (t *Tree) ID() plumbing.Hash { - return t.Hash -} - -// Type returns the type of object. It always returns plumbing.TreeObject. -func (t *Tree) Type() plumbing.ObjectType { - return plumbing.TreeObject -} - -// Decode transform an plumbing.EncodedObject into a Tree struct -func (t *Tree) Decode(o plumbing.EncodedObject) (err error) { - if o.Type() != plumbing.TreeObject { - return ErrUnsupportedObject - } - - t.Hash = o.Hash() - if o.Size() == 0 { - return nil - } - - t.Entries = nil - t.m = nil - - reader, err := o.Reader() - if err != nil { - return err - } - defer ioutil.CheckClose(reader, &err) - - r := bufPool.Get().(*bufio.Reader) - defer bufPool.Put(r) - r.Reset(reader) - for { - str, err := r.ReadString(' ') - if err != nil { - if err == io.EOF { - break - } - - return err - } - str = str[:len(str)-1] // strip last byte (' ') - - mode, err := filemode.New(str) - if err != nil { - return err - } - - name, err := r.ReadString(0) - if err != nil && err != io.EOF { - return err - } - - var hash plumbing.Hash - if _, err = io.ReadFull(r, hash[:]); err != nil { - return err - } - - baseName := name[:len(name)-1] - t.Entries = append(t.Entries, TreeEntry{ - Hash: hash, - Mode: mode, - Name: baseName, - }) - } - - return nil -} - -// Encode transforms a Tree into a plumbing.EncodedObject. -func (t *Tree) Encode(o plumbing.EncodedObject) (err error) { - o.SetType(plumbing.TreeObject) - w, err := o.Writer() - if err != nil { - return err - } - - defer ioutil.CheckClose(w, &err) - for _, entry := range t.Entries { - if _, err = fmt.Fprintf(w, "%o %s", entry.Mode, entry.Name); err != nil { - return err - } - - if _, err = w.Write([]byte{0x00}); err != nil { - return err - } - - if _, err = w.Write(entry.Hash[:]); err != nil { - return err - } - } - - return err -} - -func (t *Tree) buildMap() { - t.m = make(map[string]*TreeEntry) - for i := 0; i < len(t.Entries); i++ { - t.m[t.Entries[i].Name] = &t.Entries[i] - } -} - -// Diff returns a list of changes between this tree and the provided one -func (from *Tree) Diff(to *Tree) (Changes, error) { - return DiffTree(from, to) -} - -// Diff returns a list of changes between this tree and the provided one -// Error will be returned if context expires -// Provided context must be non nil -func (from *Tree) DiffContext(ctx context.Context, to *Tree) (Changes, error) { - return DiffTreeContext(ctx, from, to) -} - -// Patch returns a slice of Patch objects with all the changes between trees -// in chunks. This representation can be used to create several diff outputs. -func (from *Tree) Patch(to *Tree) (*Patch, error) { - return from.PatchContext(context.Background(), to) -} - -// Patch returns a slice of Patch objects with all the changes between trees -// in chunks. This representation can be used to create several diff outputs. -// If context expires, an error will be returned -// Provided context must be non-nil -func (from *Tree) PatchContext(ctx context.Context, to *Tree) (*Patch, error) { - changes, err := DiffTreeContext(ctx, from, to) - if err != nil { - return nil, err - } - - return changes.PatchContext(ctx) -} - -// treeEntryIter facilitates iterating through the TreeEntry objects in a Tree. -type treeEntryIter struct { - t *Tree - pos int -} - -func (iter *treeEntryIter) Next() (TreeEntry, error) { - if iter.pos >= len(iter.t.Entries) { - return TreeEntry{}, io.EOF - } - iter.pos++ - return iter.t.Entries[iter.pos-1], nil -} - -// TreeWalker provides a means of walking through all of the entries in a Tree. -type TreeWalker struct { - stack []*treeEntryIter - base string - recursive bool - seen map[plumbing.Hash]bool - - s storer.EncodedObjectStorer - t *Tree -} - -// NewTreeWalker returns a new TreeWalker for the given tree. -// -// It is the caller's responsibility to call Close() when finished with the -// tree walker. -func NewTreeWalker(t *Tree, recursive bool, seen map[plumbing.Hash]bool) *TreeWalker { - stack := make([]*treeEntryIter, 0, startingStackSize) - stack = append(stack, &treeEntryIter{t, 0}) - - return &TreeWalker{ - stack: stack, - recursive: recursive, - seen: seen, - - s: t.s, - t: t, - } -} - -// Next returns the next object from the tree. Objects are returned in order -// and subtrees are included. After the last object has been returned further -// calls to Next() will return io.EOF. -// -// In the current implementation any objects which cannot be found in the -// underlying repository will be skipped automatically. It is possible that this -// may change in future versions. -func (w *TreeWalker) Next() (name string, entry TreeEntry, err error) { - var obj *Tree - for { - current := len(w.stack) - 1 - if current < 0 { - // Nothing left on the stack so we're finished - err = io.EOF - return - } - - if current > maxTreeDepth { - // We're probably following bad data or some self-referencing tree - err = ErrMaxTreeDepth - return - } - - entry, err = w.stack[current].Next() - if err == io.EOF { - // Finished with the current tree, move back up to the parent - w.stack = w.stack[:current] - w.base, _ = path.Split(w.base) - w.base = strings.TrimSuffix(w.base, "/") - continue - } - - if err != nil { - return - } - - if w.seen[entry.Hash] { - continue - } - - if entry.Mode == filemode.Dir { - obj, err = GetTree(w.s, entry.Hash) - } - - name = simpleJoin(w.base, entry.Name) - - if err != nil { - err = io.EOF - return - } - - break - } - - if !w.recursive { - return - } - - if obj != nil { - w.stack = append(w.stack, &treeEntryIter{obj, 0}) - w.base = simpleJoin(w.base, entry.Name) - } - - return -} - -// Tree returns the tree that the tree walker most recently operated on. -func (w *TreeWalker) Tree() *Tree { - current := len(w.stack) - 1 - if w.stack[current].pos == 0 { - current-- - } - - if current < 0 { - return nil - } - - return w.stack[current].t -} - -// Close releases any resources used by the TreeWalker. -func (w *TreeWalker) Close() { - w.stack = nil -} - -// TreeIter provides an iterator for a set of trees. -type TreeIter struct { - storer.EncodedObjectIter - s storer.EncodedObjectStorer -} - -// NewTreeIter takes a storer.EncodedObjectStorer and a -// storer.EncodedObjectIter and returns a *TreeIter that iterates over all -// tree contained in the storer.EncodedObjectIter. -// -// Any non-tree object returned by the storer.EncodedObjectIter is skipped. -func NewTreeIter(s storer.EncodedObjectStorer, iter storer.EncodedObjectIter) *TreeIter { - return &TreeIter{iter, s} -} - -// Next moves the iterator to the next tree and returns a pointer to it. If -// there are no more trees, it returns io.EOF. -func (iter *TreeIter) Next() (*Tree, error) { - for { - obj, err := iter.EncodedObjectIter.Next() - if err != nil { - return nil, err - } - - if obj.Type() != plumbing.TreeObject { - continue - } - - return DecodeTree(iter.s, obj) - } -} - -// ForEach call the cb function for each tree contained on this iter until -// an error happens or the end of the iter is reached. If ErrStop is sent -// the iteration is stop but no error is returned. The iterator is closed. -func (iter *TreeIter) ForEach(cb func(*Tree) error) error { - return iter.EncodedObjectIter.ForEach(func(obj plumbing.EncodedObject) error { - if obj.Type() != plumbing.TreeObject { - return nil - } - - t, err := DecodeTree(iter.s, obj) - if err != nil { - return err - } - - return cb(t) - }) -} - -func simpleJoin(parent, child string) string { - if len(parent) > 0 { - return parent + "/" + child - } - return child -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/treenoder.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/treenoder.go deleted file mode 100644 index 52f0e61..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/treenoder.go +++ /dev/null @@ -1,136 +0,0 @@ -package object - -import ( - "io" - - "gopkg.in/src-d/go-git.v4/plumbing" - "gopkg.in/src-d/go-git.v4/plumbing/filemode" - "gopkg.in/src-d/go-git.v4/utils/merkletrie/noder" -) - -// A treenoder is a helper type that wraps git trees into merkletrie -// noders. -// -// As a merkletrie noder doesn't understand the concept of modes (e.g. -// file permissions), the treenoder includes the mode of the git tree in -// the hash, so changes in the modes will be detected as modifications -// to the file contents by the merkletrie difftree algorithm. This is -// consistent with how the "git diff-tree" command works. -type treeNoder struct { - parent *Tree // the root node is its own parent - name string // empty string for the root node - mode filemode.FileMode - hash plumbing.Hash - children []noder.Noder // memoized -} - -// NewTreeRootNode returns the root node of a Tree -func NewTreeRootNode(t *Tree) noder.Noder { - if t == nil { - return &treeNoder{} - } - - return &treeNoder{ - parent: t, - name: "", - mode: filemode.Dir, - hash: t.Hash, - } -} - -func (t *treeNoder) isRoot() bool { - return t.name == "" -} - -func (t *treeNoder) String() string { - return "treeNoder <" + t.name + ">" -} - -func (t *treeNoder) Hash() []byte { - if t.mode == filemode.Deprecated { - return append(t.hash[:], filemode.Regular.Bytes()...) - } - return append(t.hash[:], t.mode.Bytes()...) -} - -func (t *treeNoder) Name() string { - return t.name -} - -func (t *treeNoder) IsDir() bool { - return t.mode == filemode.Dir -} - -// Children will return the children of a treenoder as treenoders, -// building them from the children of the wrapped git tree. -func (t *treeNoder) Children() ([]noder.Noder, error) { - if t.mode != filemode.Dir { - return noder.NoChildren, nil - } - - // children are memoized for efficiency - if t.children != nil { - return t.children, nil - } - - // the parent of the returned children will be ourself as a tree if - // we are a not the root treenoder. The root is special as it - // is is own parent. - parent := t.parent - if !t.isRoot() { - var err error - if parent, err = t.parent.Tree(t.name); err != nil { - return nil, err - } - } - - return transformChildren(parent) -} - -// Returns the children of a tree as treenoders. -// Efficiency is key here. -func transformChildren(t *Tree) ([]noder.Noder, error) { - var err error - var e TreeEntry - - // there will be more tree entries than children in the tree, - // due to submodules and empty directories, but I think it is still - // worth it to pre-allocate the whole array now, even if sometimes - // is bigger than needed. - ret := make([]noder.Noder, 0, len(t.Entries)) - - walker := NewTreeWalker(t, false, nil) // don't recurse - // don't defer walker.Close() for efficiency reasons. - for { - _, e, err = walker.Next() - if err == io.EOF { - break - } - if err != nil { - walker.Close() - return nil, err - } - - ret = append(ret, &treeNoder{ - parent: t, - name: e.Name, - mode: e.Mode, - hash: e.Hash, - }) - } - walker.Close() - - return ret, nil -} - -// len(t.tree.Entries) != the number of elements walked by treewalker -// for some reason because of empty directories, submodules, etc, so we -// have to walk here. -func (t *treeNoder) NumChildren() (int, error) { - children, err := t.Children() - if err != nil { - return 0, err - } - - return len(children), nil -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/advrefs.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/advrefs.go deleted file mode 100644 index 487ee19..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/advrefs.go +++ /dev/null @@ -1,203 +0,0 @@ -package packp - -import ( - "fmt" - "sort" - "strings" - - "gopkg.in/src-d/go-git.v4/plumbing" - "gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/capability" - "gopkg.in/src-d/go-git.v4/plumbing/storer" - "gopkg.in/src-d/go-git.v4/storage/memory" -) - -// AdvRefs values represent the information transmitted on an -// advertised-refs message. Values from this type are not zero-value -// safe, use the New function instead. -type AdvRefs struct { - // Prefix stores prefix payloads. - // - // When using this message over (smart) HTTP, you have to add a pktline - // before the whole thing with the following payload: - // - // '# service=$servicename" LF - // - // Moreover, some (all) git HTTP smart servers will send a flush-pkt - // just after the first pkt-line. - // - // To accommodate both situations, the Prefix field allow you to store - // any data you want to send before the actual pktlines. It will also - // be filled up with whatever is found on the line. - Prefix [][]byte - // Head stores the resolved HEAD reference if present. - // This can be present with git-upload-pack, not with git-receive-pack. - Head *plumbing.Hash - // Capabilities are the capabilities. - Capabilities *capability.List - // References are the hash references. - References map[string]plumbing.Hash - // Peeled are the peeled hash references. - Peeled map[string]plumbing.Hash - // Shallows are the shallow object ids. - Shallows []plumbing.Hash -} - -// NewAdvRefs returns a pointer to a new AdvRefs value, ready to be used. -func NewAdvRefs() *AdvRefs { - return &AdvRefs{ - Prefix: [][]byte{}, - Capabilities: capability.NewList(), - References: make(map[string]plumbing.Hash), - Peeled: make(map[string]plumbing.Hash), - Shallows: []plumbing.Hash{}, - } -} - -func (a *AdvRefs) AddReference(r *plumbing.Reference) error { - switch r.Type() { - case plumbing.SymbolicReference: - v := fmt.Sprintf("%s:%s", r.Name().String(), r.Target().String()) - a.Capabilities.Add(capability.SymRef, v) - case plumbing.HashReference: - a.References[r.Name().String()] = r.Hash() - default: - return plumbing.ErrInvalidType - } - - return nil -} - -func (a *AdvRefs) AllReferences() (memory.ReferenceStorage, error) { - s := memory.ReferenceStorage{} - if err := a.addRefs(s); err != nil { - return s, plumbing.NewUnexpectedError(err) - } - - return s, nil -} - -func (a *AdvRefs) addRefs(s storer.ReferenceStorer) error { - for name, hash := range a.References { - ref := plumbing.NewReferenceFromStrings(name, hash.String()) - if err := s.SetReference(ref); err != nil { - return err - } - } - - if a.supportSymrefs() { - return a.addSymbolicRefs(s) - } - - return a.resolveHead(s) -} - -// If the server does not support symrefs capability, -// we need to guess the reference where HEAD is pointing to. -// -// Git versions prior to 1.8.4.3 has an special procedure to get -// the reference where is pointing to HEAD: -// - Check if a reference called master exists. If exists and it -// has the same hash as HEAD hash, we can say that HEAD is pointing to master -// - If master does not exists or does not have the same hash as HEAD, -// order references and check in that order if that reference has the same -// hash than HEAD. If yes, set HEAD pointing to that branch hash -// - If no reference is found, throw an error -func (a *AdvRefs) resolveHead(s storer.ReferenceStorer) error { - if a.Head == nil { - return nil - } - - ref, err := s.Reference(plumbing.Master) - - // check first if HEAD is pointing to master - if err == nil { - ok, err := a.createHeadIfCorrectReference(ref, s) - if err != nil { - return err - } - - if ok { - return nil - } - } - - if err != nil && err != plumbing.ErrReferenceNotFound { - return err - } - - // From here we are trying to guess the branch that HEAD is pointing - refIter, err := s.IterReferences() - if err != nil { - return err - } - - var refNames []string - err = refIter.ForEach(func(r *plumbing.Reference) error { - refNames = append(refNames, string(r.Name())) - return nil - }) - if err != nil { - return err - } - - sort.Strings(refNames) - - var headSet bool - for _, refName := range refNames { - ref, err := s.Reference(plumbing.ReferenceName(refName)) - if err != nil { - return err - } - ok, err := a.createHeadIfCorrectReference(ref, s) - if err != nil { - return err - } - if ok { - headSet = true - break - } - } - - if !headSet { - return plumbing.ErrReferenceNotFound - } - - return nil -} - -func (a *AdvRefs) createHeadIfCorrectReference( - reference *plumbing.Reference, - s storer.ReferenceStorer) (bool, error) { - if reference.Hash() == *a.Head { - headRef := plumbing.NewSymbolicReference(plumbing.HEAD, reference.Name()) - if err := s.SetReference(headRef); err != nil { - return false, err - } - - return true, nil - } - - return false, nil -} - -func (a *AdvRefs) addSymbolicRefs(s storer.ReferenceStorer) error { - for _, symref := range a.Capabilities.Get(capability.SymRef) { - chunks := strings.Split(symref, ":") - if len(chunks) != 2 { - err := fmt.Errorf("bad number of `:` in symref value (%q)", symref) - return plumbing.NewUnexpectedError(err) - } - name := plumbing.ReferenceName(chunks[0]) - target := plumbing.ReferenceName(chunks[1]) - ref := plumbing.NewSymbolicReference(name, target) - if err := s.SetReference(ref); err != nil { - return nil - } - } - - return nil -} - -func (a *AdvRefs) supportSymrefs() bool { - return a.Capabilities.Supports(capability.SymRef) -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/advrefs_decode.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/advrefs_decode.go deleted file mode 100644 index 1b4c62c..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/advrefs_decode.go +++ /dev/null @@ -1,288 +0,0 @@ -package packp - -import ( - "bytes" - "encoding/hex" - "errors" - "fmt" - "io" - - "gopkg.in/src-d/go-git.v4/plumbing" - "gopkg.in/src-d/go-git.v4/plumbing/format/pktline" -) - -// Decode reads the next advertised-refs message form its input and -// stores it in the AdvRefs. -func (a *AdvRefs) Decode(r io.Reader) error { - d := newAdvRefsDecoder(r) - return d.Decode(a) -} - -type advRefsDecoder struct { - s *pktline.Scanner // a pkt-line scanner from the input stream - line []byte // current pkt-line contents, use parser.nextLine() to make it advance - nLine int // current pkt-line number for debugging, begins at 1 - hash plumbing.Hash // last hash read - err error // sticky error, use the parser.error() method to fill this out - data *AdvRefs // parsed data is stored here -} - -var ( - // ErrEmptyAdvRefs is returned by Decode if it gets an empty advertised - // references message. - ErrEmptyAdvRefs = errors.New("empty advertised-ref message") - // ErrEmptyInput is returned by Decode if the input is empty. - ErrEmptyInput = errors.New("empty input") -) - -func newAdvRefsDecoder(r io.Reader) *advRefsDecoder { - return &advRefsDecoder{ - s: pktline.NewScanner(r), - } -} - -func (d *advRefsDecoder) Decode(v *AdvRefs) error { - d.data = v - - for state := decodePrefix; state != nil; { - state = state(d) - } - - return d.err -} - -type decoderStateFn func(*advRefsDecoder) decoderStateFn - -// fills out the parser stiky error -func (d *advRefsDecoder) error(format string, a ...interface{}) { - msg := fmt.Sprintf( - "pkt-line %d: %s", d.nLine, - fmt.Sprintf(format, a...), - ) - - d.err = NewErrUnexpectedData(msg, d.line) -} - -// Reads a new pkt-line from the scanner, makes its payload available as -// p.line and increments p.nLine. A successful invocation returns true, -// otherwise, false is returned and the sticky error is filled out -// accordingly. Trims eols at the end of the payloads. -func (d *advRefsDecoder) nextLine() bool { - d.nLine++ - - if !d.s.Scan() { - if d.err = d.s.Err(); d.err != nil { - return false - } - - if d.nLine == 1 { - d.err = ErrEmptyInput - return false - } - - d.error("EOF") - return false - } - - d.line = d.s.Bytes() - d.line = bytes.TrimSuffix(d.line, eol) - - return true -} - -// The HTTP smart prefix is often followed by a flush-pkt. -func decodePrefix(d *advRefsDecoder) decoderStateFn { - if ok := d.nextLine(); !ok { - return nil - } - - if !isPrefix(d.line) { - return decodeFirstHash - } - - tmp := make([]byte, len(d.line)) - copy(tmp, d.line) - d.data.Prefix = append(d.data.Prefix, tmp) - if ok := d.nextLine(); !ok { - return nil - } - - if !isFlush(d.line) { - return decodeFirstHash - } - - d.data.Prefix = append(d.data.Prefix, pktline.Flush) - if ok := d.nextLine(); !ok { - return nil - } - - return decodeFirstHash -} - -func isPrefix(payload []byte) bool { - return len(payload) > 0 && payload[0] == '#' -} - -// If the first hash is zero, then a no-refs is coming. Otherwise, a -// list-of-refs is coming, and the hash will be followed by the first -// advertised ref. -func decodeFirstHash(p *advRefsDecoder) decoderStateFn { - // If the repository is empty, we receive a flush here (HTTP). - if isFlush(p.line) { - p.err = ErrEmptyAdvRefs - return nil - } - - if len(p.line) < hashSize { - p.error("cannot read hash, pkt-line too short") - return nil - } - - if _, err := hex.Decode(p.hash[:], p.line[:hashSize]); err != nil { - p.error("invalid hash text: %s", err) - return nil - } - - p.line = p.line[hashSize:] - - if p.hash.IsZero() { - return decodeSkipNoRefs - } - - return decodeFirstRef -} - -// Skips SP "capabilities^{}" NUL -func decodeSkipNoRefs(p *advRefsDecoder) decoderStateFn { - if len(p.line) < len(noHeadMark) { - p.error("too short zero-id ref") - return nil - } - - if !bytes.HasPrefix(p.line, noHeadMark) { - p.error("malformed zero-id ref") - return nil - } - - p.line = p.line[len(noHeadMark):] - - return decodeCaps -} - -// decode the refname, expects SP refname NULL -func decodeFirstRef(l *advRefsDecoder) decoderStateFn { - if len(l.line) < 3 { - l.error("line too short after hash") - return nil - } - - if !bytes.HasPrefix(l.line, sp) { - l.error("no space after hash") - return nil - } - l.line = l.line[1:] - - chunks := bytes.SplitN(l.line, null, 2) - if len(chunks) < 2 { - l.error("NULL not found") - return nil - } - ref := chunks[0] - l.line = chunks[1] - - if bytes.Equal(ref, []byte(head)) { - l.data.Head = &l.hash - } else { - l.data.References[string(ref)] = l.hash - } - - return decodeCaps -} - -func decodeCaps(p *advRefsDecoder) decoderStateFn { - if err := p.data.Capabilities.Decode(p.line); err != nil { - p.error("invalid capabilities: %s", err) - return nil - } - - return decodeOtherRefs -} - -// The refs are either tips (obj-id SP refname) or a peeled (obj-id SP refname^{}). -// If there are no refs, then there might be a shallow or flush-ptk. -func decodeOtherRefs(p *advRefsDecoder) decoderStateFn { - if ok := p.nextLine(); !ok { - return nil - } - - if bytes.HasPrefix(p.line, shallow) { - return decodeShallow - } - - if len(p.line) == 0 { - return nil - } - - saveTo := p.data.References - if bytes.HasSuffix(p.line, peeled) { - p.line = bytes.TrimSuffix(p.line, peeled) - saveTo = p.data.Peeled - } - - ref, hash, err := readRef(p.line) - if err != nil { - p.error("%s", err) - return nil - } - saveTo[ref] = hash - - return decodeOtherRefs -} - -// Reads a ref-name -func readRef(data []byte) (string, plumbing.Hash, error) { - chunks := bytes.Split(data, sp) - switch { - case len(chunks) == 1: - return "", plumbing.ZeroHash, fmt.Errorf("malformed ref data: no space was found") - case len(chunks) > 2: - return "", plumbing.ZeroHash, fmt.Errorf("malformed ref data: more than one space found") - default: - return string(chunks[1]), plumbing.NewHash(string(chunks[0])), nil - } -} - -// Keeps reading shallows until a flush-pkt is found -func decodeShallow(p *advRefsDecoder) decoderStateFn { - if !bytes.HasPrefix(p.line, shallow) { - p.error("malformed shallow prefix, found %q... instead", p.line[:len(shallow)]) - return nil - } - p.line = bytes.TrimPrefix(p.line, shallow) - - if len(p.line) != hashSize { - p.error(fmt.Sprintf( - "malformed shallow hash: wrong length, expected 40 bytes, read %d bytes", - len(p.line))) - return nil - } - - text := p.line[:hashSize] - var h plumbing.Hash - if _, err := hex.Decode(h[:], text); err != nil { - p.error("invalid hash text: %s", err) - return nil - } - - p.data.Shallows = append(p.data.Shallows, h) - - if ok := p.nextLine(); !ok { - return nil - } - - if len(p.line) == 0 { - return nil // succesfull parse of the advertised-refs message - } - - return decodeShallow -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/advrefs_encode.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/advrefs_encode.go deleted file mode 100644 index c23e3fe..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/advrefs_encode.go +++ /dev/null @@ -1,176 +0,0 @@ -package packp - -import ( - "bytes" - "fmt" - "io" - "sort" - - "gopkg.in/src-d/go-git.v4/plumbing" - "gopkg.in/src-d/go-git.v4/plumbing/format/pktline" - "gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/capability" -) - -// Encode writes the AdvRefs encoding to a writer. -// -// All the payloads will end with a newline character. Capabilities, -// references and shallows are written in alphabetical order, except for -// peeled references that always follow their corresponding references. -func (a *AdvRefs) Encode(w io.Writer) error { - e := newAdvRefsEncoder(w) - return e.Encode(a) -} - -type advRefsEncoder struct { - data *AdvRefs // data to encode - pe *pktline.Encoder // where to write the encoded data - firstRefName string // reference name to encode in the first pkt-line (HEAD if present) - firstRefHash plumbing.Hash // hash referenced to encode in the first pkt-line (HEAD if present) - sortedRefs []string // hash references to encode ordered by increasing order - err error // sticky error - -} - -func newAdvRefsEncoder(w io.Writer) *advRefsEncoder { - return &advRefsEncoder{ - pe: pktline.NewEncoder(w), - } -} - -func (e *advRefsEncoder) Encode(v *AdvRefs) error { - e.data = v - e.sortRefs() - e.setFirstRef() - - for state := encodePrefix; state != nil; { - state = state(e) - } - - return e.err -} - -func (e *advRefsEncoder) sortRefs() { - if len(e.data.References) > 0 { - refs := make([]string, 0, len(e.data.References)) - for refName := range e.data.References { - refs = append(refs, refName) - } - - sort.Strings(refs) - e.sortedRefs = refs - } -} - -func (e *advRefsEncoder) setFirstRef() { - if e.data.Head != nil { - e.firstRefName = head - e.firstRefHash = *e.data.Head - return - } - - if len(e.sortedRefs) > 0 { - refName := e.sortedRefs[0] - e.firstRefName = refName - e.firstRefHash = e.data.References[refName] - } -} - -type encoderStateFn func(*advRefsEncoder) encoderStateFn - -func encodePrefix(e *advRefsEncoder) encoderStateFn { - for _, p := range e.data.Prefix { - if bytes.Equal(p, pktline.Flush) { - if e.err = e.pe.Flush(); e.err != nil { - return nil - } - continue - } - if e.err = e.pe.Encodef("%s\n", string(p)); e.err != nil { - return nil - } - } - - return encodeFirstLine -} - -// Adds the first pkt-line payload: head hash, head ref and capabilities. -// If HEAD ref is not found, the first reference ordered in increasing order will be used. -// If there aren't HEAD neither refs, the first line will be "PKT-LINE(zero-id SP "capabilities^{}" NUL capability-list)". -// See: https://github.com/git/git/blob/master/Documentation/technical/pack-protocol.txt -// See: https://github.com/git/git/blob/master/Documentation/technical/protocol-common.txt -func encodeFirstLine(e *advRefsEncoder) encoderStateFn { - const formatFirstLine = "%s %s\x00%s\n" - var firstLine string - capabilities := formatCaps(e.data.Capabilities) - - if e.firstRefName == "" { - firstLine = fmt.Sprintf(formatFirstLine, plumbing.ZeroHash.String(), "capabilities^{}", capabilities) - } else { - firstLine = fmt.Sprintf(formatFirstLine, e.firstRefHash.String(), e.firstRefName, capabilities) - - } - - if e.err = e.pe.EncodeString(firstLine); e.err != nil { - return nil - } - - return encodeRefs -} - -func formatCaps(c *capability.List) string { - if c == nil { - return "" - } - - return c.String() -} - -// Adds the (sorted) refs: hash SP refname EOL -// and their peeled refs if any. -func encodeRefs(e *advRefsEncoder) encoderStateFn { - for _, r := range e.sortedRefs { - if r == e.firstRefName { - continue - } - - hash := e.data.References[r] - if e.err = e.pe.Encodef("%s %s\n", hash.String(), r); e.err != nil { - return nil - } - - if hash, ok := e.data.Peeled[r]; ok { - if e.err = e.pe.Encodef("%s %s^{}\n", hash.String(), r); e.err != nil { - return nil - } - } - } - - return encodeShallow -} - -// Adds the (sorted) shallows: "shallow" SP hash EOL -func encodeShallow(e *advRefsEncoder) encoderStateFn { - sorted := sortShallows(e.data.Shallows) - for _, hash := range sorted { - if e.err = e.pe.Encodef("shallow %s\n", hash); e.err != nil { - return nil - } - } - - return encodeFlush -} - -func sortShallows(c []plumbing.Hash) []string { - ret := []string{} - for _, h := range c { - ret = append(ret, h.String()) - } - sort.Strings(ret) - - return ret -} - -func encodeFlush(e *advRefsEncoder) encoderStateFn { - e.err = e.pe.Flush() - return nil -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/capability/capability.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/capability/capability.go deleted file mode 100644 index a129781..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/capability/capability.go +++ /dev/null @@ -1,252 +0,0 @@ -// Package capability defines the server and client capabilities. -package capability - -// Capability describes a server or client capability. -type Capability string - -func (n Capability) String() string { - return string(n) -} - -const ( - // MultiACK capability allows the server to return "ACK obj-id continue" as - // soon as it finds a commit that it can use as a common base, between the - // client's wants and the client's have set. - // - // By sending this early, the server can potentially head off the client - // from walking any further down that particular branch of the client's - // repository history. The client may still need to walk down other - // branches, sending have lines for those, until the server has a - // complete cut across the DAG, or the client has said "done". - // - // Without multi_ack, a client sends have lines in --date-order until - // the server has found a common base. That means the client will send - // have lines that are already known by the server to be common, because - // they overlap in time with another branch that the server hasn't found - // a common base on yet. - // - // For example suppose the client has commits in caps that the server - // doesn't and the server has commits in lower case that the client - // doesn't, as in the following diagram: - // - // +---- u ---------------------- x - // / +----- y - // / / - // a -- b -- c -- d -- E -- F - // \ - // +--- Q -- R -- S - // - // If the client wants x,y and starts out by saying have F,S, the server - // doesn't know what F,S is. Eventually the client says "have d" and - // the server sends "ACK d continue" to let the client know to stop - // walking down that line (so don't send c-b-a), but it's not done yet, - // it needs a base for x. The client keeps going with S-R-Q, until a - // gets reached, at which point the server has a clear base and it all - // ends. - // - // Without multi_ack the client would have sent that c-b-a chain anyway, - // interleaved with S-R-Q. - MultiACK Capability = "multi_ack" - // MultiACKDetailed is an extension of multi_ack that permits client to - // better understand the server's in-memory state. - MultiACKDetailed Capability = "multi_ack_detailed" - // NoDone should only be used with the smart HTTP protocol. If - // multi_ack_detailed and no-done are both present, then the sender is - // free to immediately send a pack following its first "ACK obj-id ready" - // message. - // - // Without no-done in the smart HTTP protocol, the server session would - // end and the client has to make another trip to send "done" before - // the server can send the pack. no-done removes the last round and - // thus slightly reduces latency. - NoDone Capability = "no-done" - // ThinPack is one with deltas which reference base objects not - // contained within the pack (but are known to exist at the receiving - // end). This can reduce the network traffic significantly, but it - // requires the receiving end to know how to "thicken" these packs by - // adding the missing bases to the pack. - // - // The upload-pack server advertises 'thin-pack' when it can generate - // and send a thin pack. A client requests the 'thin-pack' capability - // when it understands how to "thicken" it, notifying the server that - // it can receive such a pack. A client MUST NOT request the - // 'thin-pack' capability if it cannot turn a thin pack into a - // self-contained pack. - // - // Receive-pack, on the other hand, is assumed by default to be able to - // handle thin packs, but can ask the client not to use the feature by - // advertising the 'no-thin' capability. A client MUST NOT send a thin - // pack if the server advertises the 'no-thin' capability. - // - // The reasons for this asymmetry are historical. The receive-pack - // program did not exist until after the invention of thin packs, so - // historically the reference implementation of receive-pack always - // understood thin packs. Adding 'no-thin' later allowed receive-pack - // to disable the feature in a backwards-compatible manner. - ThinPack Capability = "thin-pack" - // Sideband means that server can send, and client understand multiplexed - // progress reports and error info interleaved with the packfile itself. - // - // These two options are mutually exclusive. A modern client always - // favors Sideband64k. - // - // Either mode indicates that the packfile data will be streamed broken - // up into packets of up to either 1000 bytes in the case of 'side_band', - // or 65520 bytes in the case of 'side_band_64k'. Each packet is made up - // of a leading 4-byte pkt-line length of how much data is in the packet, - // followed by a 1-byte stream code, followed by the actual data. - // - // The stream code can be one of: - // - // 1 - pack data - // 2 - progress messages - // 3 - fatal error message just before stream aborts - // - // The "side-band-64k" capability came about as a way for newer clients - // that can handle much larger packets to request packets that are - // actually crammed nearly full, while maintaining backward compatibility - // for the older clients. - // - // Further, with side-band and its up to 1000-byte messages, it's actually - // 999 bytes of payload and 1 byte for the stream code. With side-band-64k, - // same deal, you have up to 65519 bytes of data and 1 byte for the stream - // code. - // - // The client MUST send only maximum of one of "side-band" and "side- - // band-64k". Server MUST diagnose it as an error if client requests - // both. - Sideband Capability = "side-band" - Sideband64k Capability = "side-band-64k" - // OFSDelta server can send, and client understand PACKv2 with delta - // referring to its base by position in pack rather than by an obj-id. That - // is, they can send/read OBJ_OFS_DELTA (aka type 6) in a packfile. - OFSDelta Capability = "ofs-delta" - // Agent the server may optionally send this capability to notify the client - // that the server is running version `X`. The client may optionally return - // its own agent string by responding with an `agent=Y` capability (but it - // MUST NOT do so if the server did not mention the agent capability). The - // `X` and `Y` strings may contain any printable ASCII characters except - // space (i.e., the byte range 32 < x < 127), and are typically of the form - // "package/version" (e.g., "git/1.8.3.1"). The agent strings are purely - // informative for statistics and debugging purposes, and MUST NOT be used - // to programmatically assume the presence or absence of particular features. - Agent Capability = "agent" - // Shallow capability adds "deepen", "shallow" and "unshallow" commands to - // the fetch-pack/upload-pack protocol so clients can request shallow - // clones. - Shallow Capability = "shallow" - // DeepenSince adds "deepen-since" command to fetch-pack/upload-pack - // protocol so the client can request shallow clones that are cut at a - // specific time, instead of depth. Internally it's equivalent of doing - // "rev-list --max-age=" on the server side. "deepen-since" - // cannot be used with "deepen". - DeepenSince Capability = "deepen-since" - // DeepenNot adds "deepen-not" command to fetch-pack/upload-pack - // protocol so the client can request shallow clones that are cut at a - // specific revision, instead of depth. Internally it's equivalent of - // doing "rev-list --not " on the server side. "deepen-not" - // cannot be used with "deepen", but can be used with "deepen-since". - DeepenNot Capability = "deepen-not" - // DeepenRelative if this capability is requested by the client, the - // semantics of "deepen" command is changed. The "depth" argument is the - // depth from the current shallow boundary, instead of the depth from - // remote refs. - DeepenRelative Capability = "deepen-relative" - // NoProgress the client was started with "git clone -q" or something, and - // doesn't want that side band 2. Basically the client just says "I do not - // wish to receive stream 2 on sideband, so do not send it to me, and if - // you did, I will drop it on the floor anyway". However, the sideband - // channel 3 is still used for error responses. - NoProgress Capability = "no-progress" - // IncludeTag capability is about sending annotated tags if we are - // sending objects they point to. If we pack an object to the client, and - // a tag object points exactly at that object, we pack the tag object too. - // In general this allows a client to get all new annotated tags when it - // fetches a branch, in a single network connection. - // - // Clients MAY always send include-tag, hardcoding it into a request when - // the server advertises this capability. The decision for a client to - // request include-tag only has to do with the client's desires for tag - // data, whether or not a server had advertised objects in the - // refs/tags/* namespace. - // - // Servers MUST pack the tags if their referrant is packed and the client - // has requested include-tags. - // - // Clients MUST be prepared for the case where a server has ignored - // include-tag and has not actually sent tags in the pack. In such - // cases the client SHOULD issue a subsequent fetch to acquire the tags - // that include-tag would have otherwise given the client. - // - // The server SHOULD send include-tag, if it supports it, regardless - // of whether or not there are tags available. - IncludeTag Capability = "include-tag" - // ReportStatus the receive-pack process can receive a 'report-status' - // capability, which tells it that the client wants a report of what - // happened after a packfile upload and reference update. If the pushing - // client requests this capability, after unpacking and updating references - // the server will respond with whether the packfile unpacked successfully - // and if each reference was updated successfully. If any of those were not - // successful, it will send back an error message. See pack-protocol.txt - // for example messages. - ReportStatus Capability = "report-status" - // DeleteRefs If the server sends back this capability, it means that - // it is capable of accepting a zero-id value as the target - // value of a reference update. It is not sent back by the client, it - // simply informs the client that it can be sent zero-id values - // to delete references - DeleteRefs Capability = "delete-refs" - // Quiet If the receive-pack server advertises this capability, it is - // capable of silencing human-readable progress output which otherwise may - // be shown when processing the received pack. A send-pack client should - // respond with the 'quiet' capability to suppress server-side progress - // reporting if the local progress reporting is also being suppressed - // (e.g., via `push -q`, or if stderr does not go to a tty). - Quiet Capability = "quiet" - // Atomic If the server sends this capability it is capable of accepting - // atomic pushes. If the pushing client requests this capability, the server - // will update the refs in one atomic transaction. Either all refs are - // updated or none. - Atomic Capability = "atomic" - // PushOptions If the server sends this capability it is able to accept - // push options after the update commands have been sent, but before the - // packfile is streamed. If the pushing client requests this capability, - // the server will pass the options to the pre- and post- receive hooks - // that process this push request. - PushOptions Capability = "push-options" - // AllowTipSHA1InWant if the upload-pack server advertises this capability, - // fetch-pack may send "want" lines with SHA-1s that exist at the server but - // are not advertised by upload-pack. - AllowTipSHA1InWant Capability = "allow-tip-sha1-in-want" - // AllowReachableSHA1InWant if the upload-pack server advertises this - // capability, fetch-pack may send "want" lines with SHA-1s that exist at - // the server but are not advertised by upload-pack. - AllowReachableSHA1InWant Capability = "allow-reachable-sha1-in-want" - // PushCert the receive-pack server that advertises this capability is - // willing to accept a signed push certificate, and asks the to be - // included in the push certificate. A send-pack client MUST NOT - // send a push-cert packet unless the receive-pack server advertises - // this capability. - PushCert Capability = "push-cert" - // SymRef symbolic reference support for better negotiation. - SymRef Capability = "symref" -) - -const DefaultAgent = "go-git/4.x" - -var known = map[Capability]bool{ - MultiACK: true, MultiACKDetailed: true, NoDone: true, ThinPack: true, - Sideband: true, Sideband64k: true, OFSDelta: true, Agent: true, - Shallow: true, DeepenSince: true, DeepenNot: true, DeepenRelative: true, - NoProgress: true, IncludeTag: true, ReportStatus: true, DeleteRefs: true, - Quiet: true, Atomic: true, PushOptions: true, AllowTipSHA1InWant: true, - AllowReachableSHA1InWant: true, PushCert: true, SymRef: true, -} - -var requiresArgument = map[Capability]bool{ - Agent: true, PushCert: true, SymRef: true, -} - -var multipleArgument = map[Capability]bool{ - SymRef: true, -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/capability/list.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/capability/list.go deleted file mode 100644 index 26a79b6..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/capability/list.go +++ /dev/null @@ -1,196 +0,0 @@ -package capability - -import ( - "bytes" - "errors" - "fmt" - "strings" -) - -var ( - // ErrArgumentsRequired is returned if no arguments are giving with a - // capability that requires arguments - ErrArgumentsRequired = errors.New("arguments required") - // ErrArguments is returned if arguments are given with a capabilities that - // not supports arguments - ErrArguments = errors.New("arguments not allowed") - // ErrEmtpyArgument is returned when an empty value is given - ErrEmtpyArgument = errors.New("empty argument") - // ErrMultipleArguments multiple argument given to a capabilities that not - // support it - ErrMultipleArguments = errors.New("multiple arguments not allowed") -) - -// List represents a list of capabilities -type List struct { - m map[Capability]*entry - sort []string -} - -type entry struct { - Name Capability - Values []string -} - -// NewList returns a new List of capabilities -func NewList() *List { - return &List{ - m: make(map[Capability]*entry), - } -} - -// IsEmpty returns true if the List is empty -func (l *List) IsEmpty() bool { - return len(l.sort) == 0 -} - -// Decode decodes list of capabilities from raw into the list -func (l *List) Decode(raw []byte) error { - // git 1.x receive pack used to send a leading space on its - // git-receive-pack capabilities announcement. We just trim space to be - // tolerant to space changes in different versions. - raw = bytes.TrimSpace(raw) - - if len(raw) == 0 { - return nil - } - - for _, data := range bytes.Split(raw, []byte{' '}) { - pair := bytes.SplitN(data, []byte{'='}, 2) - - c := Capability(pair[0]) - if len(pair) == 1 { - if err := l.Add(c); err != nil { - return err - } - - continue - } - - if err := l.Add(c, string(pair[1])); err != nil { - return err - } - } - - return nil -} - -// Get returns the values for a capability -func (l *List) Get(capability Capability) []string { - if _, ok := l.m[capability]; !ok { - return nil - } - - return l.m[capability].Values -} - -// Set sets a capability removing the previous values -func (l *List) Set(capability Capability, values ...string) error { - if _, ok := l.m[capability]; ok { - delete(l.m, capability) - } - - return l.Add(capability, values...) -} - -// Add adds a capability, values are optional -func (l *List) Add(c Capability, values ...string) error { - if err := l.validate(c, values); err != nil { - return err - } - - if !l.Supports(c) { - l.m[c] = &entry{Name: c} - l.sort = append(l.sort, c.String()) - } - - if len(values) == 0 { - return nil - } - - if known[c] && !multipleArgument[c] && len(l.m[c].Values) > 0 { - return ErrMultipleArguments - } - - l.m[c].Values = append(l.m[c].Values, values...) - return nil -} - -func (l *List) validateNoEmptyArgs(values []string) error { - for _, v := range values { - if v == "" { - return ErrEmtpyArgument - } - } - return nil -} - -func (l *List) validate(c Capability, values []string) error { - if !known[c] { - return l.validateNoEmptyArgs(values) - } - if requiresArgument[c] && len(values) == 0 { - return ErrArgumentsRequired - } - - if !requiresArgument[c] && len(values) != 0 { - return ErrArguments - } - - if !multipleArgument[c] && len(values) > 1 { - return ErrMultipleArguments - } - return l.validateNoEmptyArgs(values) -} - -// Supports returns true if capability is present -func (l *List) Supports(capability Capability) bool { - _, ok := l.m[capability] - return ok -} - -// Delete deletes a capability from the List -func (l *List) Delete(capability Capability) { - if !l.Supports(capability) { - return - } - - delete(l.m, capability) - for i, c := range l.sort { - if c != string(capability) { - continue - } - - l.sort = append(l.sort[:i], l.sort[i+1:]...) - return - } -} - -// All returns a slice with all defined capabilities. -func (l *List) All() []Capability { - var cs []Capability - for _, key := range l.sort { - cs = append(cs, Capability(key)) - } - - return cs -} - -// String generates the capabilities strings, the capabilities are sorted in -// insertion order -func (l *List) String() string { - var o []string - for _, key := range l.sort { - cap := l.m[Capability(key)] - if len(cap.Values) == 0 { - o = append(o, key) - continue - } - - for _, value := range cap.Values { - o = append(o, fmt.Sprintf("%s=%s", key, value)) - } - } - - return strings.Join(o, " ") -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/common.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/common.go deleted file mode 100644 index ab07ac8..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/common.go +++ /dev/null @@ -1,70 +0,0 @@ -package packp - -import ( - "fmt" -) - -type stateFn func() stateFn - -const ( - // common - hashSize = 40 - - // advrefs - head = "HEAD" - noHead = "capabilities^{}" -) - -var ( - // common - sp = []byte(" ") - eol = []byte("\n") - eq = []byte{'='} - - // advertised-refs - null = []byte("\x00") - peeled = []byte("^{}") - noHeadMark = []byte(" capabilities^{}\x00") - - // upload-request - want = []byte("want ") - shallow = []byte("shallow ") - deepen = []byte("deepen") - deepenCommits = []byte("deepen ") - deepenSince = []byte("deepen-since ") - deepenReference = []byte("deepen-not ") - - // shallow-update - unshallow = []byte("unshallow ") - - // server-response - ack = []byte("ACK") - nak = []byte("NAK") - - // updreq - shallowNoSp = []byte("shallow") -) - -func isFlush(payload []byte) bool { - return len(payload) == 0 -} - -// ErrUnexpectedData represents an unexpected data decoding a message -type ErrUnexpectedData struct { - Msg string - Data []byte -} - -// NewErrUnexpectedData returns a new ErrUnexpectedData containing the data and -// the message given -func NewErrUnexpectedData(msg string, data []byte) error { - return &ErrUnexpectedData{Msg: msg, Data: data} -} - -func (err *ErrUnexpectedData) Error() string { - if len(err.Data) == 0 { - return err.Msg - } - - return fmt.Sprintf("%s (%s)", err.Msg, err.Data) -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/doc.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/doc.go deleted file mode 100644 index 4950d1d..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/doc.go +++ /dev/null @@ -1,724 +0,0 @@ -package packp - -/* - -A nice way to trace the real data transmitted and received by git, use: - -GIT_TRACE_PACKET=true git ls-remote http://github.com/src-d/go-git -GIT_TRACE_PACKET=true git clone http://github.com/src-d/go-git - -Here follows a copy of the current protocol specification at the time of -this writing. - -(Please notice that most http git servers will add a flush-pkt after the -first pkt-line when using HTTP smart.) - - -Documentation Common to Pack and Http Protocols -=============================================== - -ABNF Notation -------------- - -ABNF notation as described by RFC 5234 is used within the protocol documents, -except the following replacement core rules are used: ----- - HEXDIG = DIGIT / "a" / "b" / "c" / "d" / "e" / "f" ----- - -We also define the following common rules: ----- - NUL = %x00 - zero-id = 40*"0" - obj-id = 40*(HEXDIGIT) - - refname = "HEAD" - refname /= "refs/" ----- - -A refname is a hierarchical octet string beginning with "refs/" and -not violating the 'git-check-ref-format' command's validation rules. -More specifically, they: - -. They can include slash `/` for hierarchical (directory) - grouping, but no slash-separated component can begin with a - dot `.`. - -. They must contain at least one `/`. This enforces the presence of a - category like `heads/`, `tags/` etc. but the actual names are not - restricted. - -. They cannot have two consecutive dots `..` anywhere. - -. They cannot have ASCII control characters (i.e. bytes whose - values are lower than \040, or \177 `DEL`), space, tilde `~`, - caret `^`, colon `:`, question-mark `?`, asterisk `*`, - or open bracket `[` anywhere. - -. They cannot end with a slash `/` or a dot `.`. - -. They cannot end with the sequence `.lock`. - -. They cannot contain a sequence `@{`. - -. They cannot contain a `\\`. - - -pkt-line Format ---------------- - -Much (but not all) of the payload is described around pkt-lines. - -A pkt-line is a variable length binary string. The first four bytes -of the line, the pkt-len, indicates the total length of the line, -in hexadecimal. The pkt-len includes the 4 bytes used to contain -the length's hexadecimal representation. - -A pkt-line MAY contain binary data, so implementors MUST ensure -pkt-line parsing/formatting routines are 8-bit clean. - -A non-binary line SHOULD BE terminated by an LF, which if present -MUST be included in the total length. Receivers MUST treat pkt-lines -with non-binary data the same whether or not they contain the trailing -LF (stripping the LF if present, and not complaining when it is -missing). - -The maximum length of a pkt-line's data component is 65516 bytes. -Implementations MUST NOT send pkt-line whose length exceeds 65520 -(65516 bytes of payload + 4 bytes of length data). - -Implementations SHOULD NOT send an empty pkt-line ("0004"). - -A pkt-line with a length field of 0 ("0000"), called a flush-pkt, -is a special case and MUST be handled differently than an empty -pkt-line ("0004"). - ----- - pkt-line = data-pkt / flush-pkt - - data-pkt = pkt-len pkt-payload - pkt-len = 4*(HEXDIG) - pkt-payload = (pkt-len - 4)*(OCTET) - - flush-pkt = "0000" ----- - -Examples (as C-style strings): - ----- - pkt-line actual value - --------------------------------- - "0006a\n" "a\n" - "0005a" "a" - "000bfoobar\n" "foobar\n" - "0004" "" ----- - -Packfile transfer protocols -=========================== - -Git supports transferring data in packfiles over the ssh://, git://, http:// and -file:// transports. There exist two sets of protocols, one for pushing -data from a client to a server and another for fetching data from a -server to a client. The three transports (ssh, git, file) use the same -protocol to transfer data. http is documented in http-protocol.txt. - -The processes invoked in the canonical Git implementation are 'upload-pack' -on the server side and 'fetch-pack' on the client side for fetching data; -then 'receive-pack' on the server and 'send-pack' on the client for pushing -data. The protocol functions to have a server tell a client what is -currently on the server, then for the two to negotiate the smallest amount -of data to send in order to fully update one or the other. - -pkt-line Format ---------------- - -The descriptions below build on the pkt-line format described in -protocol-common.txt. When the grammar indicate `PKT-LINE(...)`, unless -otherwise noted the usual pkt-line LF rules apply: the sender SHOULD -include a LF, but the receiver MUST NOT complain if it is not present. - -Transports ----------- -There are three transports over which the packfile protocol is -initiated. The Git transport is a simple, unauthenticated server that -takes the command (almost always 'upload-pack', though Git -servers can be configured to be globally writable, in which 'receive- -pack' initiation is also allowed) with which the client wishes to -communicate and executes it and connects it to the requesting -process. - -In the SSH transport, the client just runs the 'upload-pack' -or 'receive-pack' process on the server over the SSH protocol and then -communicates with that invoked process over the SSH connection. - -The file:// transport runs the 'upload-pack' or 'receive-pack' -process locally and communicates with it over a pipe. - -Git Transport -------------- - -The Git transport starts off by sending the command and repository -on the wire using the pkt-line format, followed by a NUL byte and a -hostname parameter, terminated by a NUL byte. - - 0032git-upload-pack /project.git\0host=myserver.com\0 - --- - git-proto-request = request-command SP pathname NUL [ host-parameter NUL ] - request-command = "git-upload-pack" / "git-receive-pack" / - "git-upload-archive" ; case sensitive - pathname = *( %x01-ff ) ; exclude NUL - host-parameter = "host=" hostname [ ":" port ] --- - -Only host-parameter is allowed in the git-proto-request. Clients -MUST NOT attempt to send additional parameters. It is used for the -git-daemon name based virtual hosting. See --interpolated-path -option to git daemon, with the %H/%CH format characters. - -Basically what the Git client is doing to connect to an 'upload-pack' -process on the server side over the Git protocol is this: - - $ echo -e -n \ - "0039git-upload-pack /schacon/gitbook.git\0host=example.com\0" | - nc -v example.com 9418 - -If the server refuses the request for some reasons, it could abort -gracefully with an error message. - ----- - error-line = PKT-LINE("ERR" SP explanation-text) ----- - - -SSH Transport -------------- - -Initiating the upload-pack or receive-pack processes over SSH is -executing the binary on the server via SSH remote execution. -It is basically equivalent to running this: - - $ ssh git.example.com "git-upload-pack '/project.git'" - -For a server to support Git pushing and pulling for a given user over -SSH, that user needs to be able to execute one or both of those -commands via the SSH shell that they are provided on login. On some -systems, that shell access is limited to only being able to run those -two commands, or even just one of them. - -In an ssh:// format URI, it's absolute in the URI, so the '/' after -the host name (or port number) is sent as an argument, which is then -read by the remote git-upload-pack exactly as is, so it's effectively -an absolute path in the remote filesystem. - - git clone ssh://user@example.com/project.git - | - v - ssh user@example.com "git-upload-pack '/project.git'" - -In a "user@host:path" format URI, its relative to the user's home -directory, because the Git client will run: - - git clone user@example.com:project.git - | - v - ssh user@example.com "git-upload-pack 'project.git'" - -The exception is if a '~' is used, in which case -we execute it without the leading '/'. - - ssh://user@example.com/~alice/project.git, - | - v - ssh user@example.com "git-upload-pack '~alice/project.git'" - -A few things to remember here: - -- The "command name" is spelled with dash (e.g. git-upload-pack), but - this can be overridden by the client; - -- The repository path is always quoted with single quotes. - -Fetching Data From a Server ---------------------------- - -When one Git repository wants to get data that a second repository -has, the first can 'fetch' from the second. This operation determines -what data the server has that the client does not then streams that -data down to the client in packfile format. - - -Reference Discovery -------------------- - -When the client initially connects the server will immediately respond -with a listing of each reference it has (all branches and tags) along -with the object name that each reference currently points to. - - $ echo -e -n "0039git-upload-pack /schacon/gitbook.git\0host=example.com\0" | - nc -v example.com 9418 - 00887217a7c7e582c46cec22a130adf4b9d7d950fba0 HEAD\0multi_ack thin-pack - side-band side-band-64k ofs-delta shallow no-progress include-tag - 00441d3fcd5ced445d1abc402225c0b8a1299641f497 refs/heads/integration - 003f7217a7c7e582c46cec22a130adf4b9d7d950fba0 refs/heads/master - 003cb88d2441cac0977faf98efc80305012112238d9d refs/tags/v0.9 - 003c525128480b96c89e6418b1e40909bf6c5b2d580f refs/tags/v1.0 - 003fe92df48743b7bc7d26bcaabfddde0a1e20cae47c refs/tags/v1.0^{} - 0000 - -The returned response is a pkt-line stream describing each ref and -its current value. The stream MUST be sorted by name according to -the C locale ordering. - -If HEAD is a valid ref, HEAD MUST appear as the first advertised -ref. If HEAD is not a valid ref, HEAD MUST NOT appear in the -advertisement list at all, but other refs may still appear. - -The stream MUST include capability declarations behind a NUL on the -first ref. The peeled value of a ref (that is "ref^{}") MUST be -immediately after the ref itself, if presented. A conforming server -MUST peel the ref if it's an annotated tag. - ----- - advertised-refs = (no-refs / list-of-refs) - *shallow - flush-pkt - - no-refs = PKT-LINE(zero-id SP "capabilities^{}" - NUL capability-list) - - list-of-refs = first-ref *other-ref - first-ref = PKT-LINE(obj-id SP refname - NUL capability-list) - - other-ref = PKT-LINE(other-tip / other-peeled) - other-tip = obj-id SP refname - other-peeled = obj-id SP refname "^{}" - - shallow = PKT-LINE("shallow" SP obj-id) - - capability-list = capability *(SP capability) - capability = 1*(LC_ALPHA / DIGIT / "-" / "_") - LC_ALPHA = %x61-7A ----- - -Server and client MUST use lowercase for obj-id, both MUST treat obj-id -as case-insensitive. - -See protocol-capabilities.txt for a list of allowed server capabilities -and descriptions. - -Packfile Negotiation --------------------- -After reference and capabilities discovery, the client can decide to -terminate the connection by sending a flush-pkt, telling the server it can -now gracefully terminate, and disconnect, when it does not need any pack -data. This can happen with the ls-remote command, and also can happen when -the client already is up-to-date. - -Otherwise, it enters the negotiation phase, where the client and -server determine what the minimal packfile necessary for transport is, -by telling the server what objects it wants, its shallow objects -(if any), and the maximum commit depth it wants (if any). The client -will also send a list of the capabilities it wants to be in effect, -out of what the server said it could do with the first 'want' line. - ----- - upload-request = want-list - *shallow-line - *1depth-request - flush-pkt - - want-list = first-want - *additional-want - - shallow-line = PKT-LINE("shallow" SP obj-id) - - depth-request = PKT-LINE("deepen" SP depth) / - PKT-LINE("deepen-since" SP timestamp) / - PKT-LINE("deepen-not" SP ref) - - first-want = PKT-LINE("want" SP obj-id SP capability-list) - additional-want = PKT-LINE("want" SP obj-id) - - depth = 1*DIGIT ----- - -Clients MUST send all the obj-ids it wants from the reference -discovery phase as 'want' lines. Clients MUST send at least one -'want' command in the request body. Clients MUST NOT mention an -obj-id in a 'want' command which did not appear in the response -obtained through ref discovery. - -The client MUST write all obj-ids which it only has shallow copies -of (meaning that it does not have the parents of a commit) as -'shallow' lines so that the server is aware of the limitations of -the client's history. - -The client now sends the maximum commit history depth it wants for -this transaction, which is the number of commits it wants from the -tip of the history, if any, as a 'deepen' line. A depth of 0 is the -same as not making a depth request. The client does not want to receive -any commits beyond this depth, nor does it want objects needed only to -complete those commits. Commits whose parents are not received as a -result are defined as shallow and marked as such in the server. This -information is sent back to the client in the next step. - -Once all the 'want's and 'shallow's (and optional 'deepen') are -transferred, clients MUST send a flush-pkt, to tell the server side -that it is done sending the list. - -Otherwise, if the client sent a positive depth request, the server -will determine which commits will and will not be shallow and -send this information to the client. If the client did not request -a positive depth, this step is skipped. - ----- - shallow-update = *shallow-line - *unshallow-line - flush-pkt - - shallow-line = PKT-LINE("shallow" SP obj-id) - - unshallow-line = PKT-LINE("unshallow" SP obj-id) ----- - -If the client has requested a positive depth, the server will compute -the set of commits which are no deeper than the desired depth. The set -of commits start at the client's wants. - -The server writes 'shallow' lines for each -commit whose parents will not be sent as a result. The server writes -an 'unshallow' line for each commit which the client has indicated is -shallow, but is no longer shallow at the currently requested depth -(that is, its parents will now be sent). The server MUST NOT mark -as unshallow anything which the client has not indicated was shallow. - -Now the client will send a list of the obj-ids it has using 'have' -lines, so the server can make a packfile that only contains the objects -that the client needs. In multi_ack mode, the canonical implementation -will send up to 32 of these at a time, then will send a flush-pkt. The -canonical implementation will skip ahead and send the next 32 immediately, -so that there is always a block of 32 "in-flight on the wire" at a time. - ----- - upload-haves = have-list - compute-end - - have-list = *have-line - have-line = PKT-LINE("have" SP obj-id) - compute-end = flush-pkt / PKT-LINE("done") ----- - -If the server reads 'have' lines, it then will respond by ACKing any -of the obj-ids the client said it had that the server also has. The -server will ACK obj-ids differently depending on which ack mode is -chosen by the client. - -In multi_ack mode: - - * the server will respond with 'ACK obj-id continue' for any common - commits. - - * once the server has found an acceptable common base commit and is - ready to make a packfile, it will blindly ACK all 'have' obj-ids - back to the client. - - * the server will then send a 'NAK' and then wait for another response - from the client - either a 'done' or another list of 'have' lines. - -In multi_ack_detailed mode: - - * the server will differentiate the ACKs where it is signaling - that it is ready to send data with 'ACK obj-id ready' lines, and - signals the identified common commits with 'ACK obj-id common' lines. - -Without either multi_ack or multi_ack_detailed: - - * upload-pack sends "ACK obj-id" on the first common object it finds. - After that it says nothing until the client gives it a "done". - - * upload-pack sends "NAK" on a flush-pkt if no common object - has been found yet. If one has been found, and thus an ACK - was already sent, it's silent on the flush-pkt. - -After the client has gotten enough ACK responses that it can determine -that the server has enough information to send an efficient packfile -(in the canonical implementation, this is determined when it has received -enough ACKs that it can color everything left in the --date-order queue -as common with the server, or the --date-order queue is empty), or the -client determines that it wants to give up (in the canonical implementation, -this is determined when the client sends 256 'have' lines without getting -any of them ACKed by the server - meaning there is nothing in common and -the server should just send all of its objects), then the client will send -a 'done' command. The 'done' command signals to the server that the client -is ready to receive its packfile data. - -However, the 256 limit *only* turns on in the canonical client -implementation if we have received at least one "ACK %s continue" -during a prior round. This helps to ensure that at least one common -ancestor is found before we give up entirely. - -Once the 'done' line is read from the client, the server will either -send a final 'ACK obj-id' or it will send a 'NAK'. 'obj-id' is the object -name of the last commit determined to be common. The server only sends -ACK after 'done' if there is at least one common base and multi_ack or -multi_ack_detailed is enabled. The server always sends NAK after 'done' -if there is no common base found. - -Then the server will start sending its packfile data. - ----- - server-response = *ack_multi ack / nak - ack_multi = PKT-LINE("ACK" SP obj-id ack_status) - ack_status = "continue" / "common" / "ready" - ack = PKT-LINE("ACK" SP obj-id) - nak = PKT-LINE("NAK") ----- - -A simple clone may look like this (with no 'have' lines): - ----- - C: 0054want 74730d410fcb6603ace96f1dc55ea6196122532d multi_ack \ - side-band-64k ofs-delta\n - C: 0032want 7d1665144a3a975c05f1f43902ddaf084e784dbe\n - C: 0032want 5a3f6be755bbb7deae50065988cbfa1ffa9ab68a\n - C: 0032want 7e47fe2bd8d01d481f44d7af0531bd93d3b21c01\n - C: 0032want 74730d410fcb6603ace96f1dc55ea6196122532d\n - C: 0000 - C: 0009done\n - - S: 0008NAK\n - S: [PACKFILE] ----- - -An incremental update (fetch) response might look like this: - ----- - C: 0054want 74730d410fcb6603ace96f1dc55ea6196122532d multi_ack \ - side-band-64k ofs-delta\n - C: 0032want 7d1665144a3a975c05f1f43902ddaf084e784dbe\n - C: 0032want 5a3f6be755bbb7deae50065988cbfa1ffa9ab68a\n - C: 0000 - C: 0032have 7e47fe2bd8d01d481f44d7af0531bd93d3b21c01\n - C: [30 more have lines] - C: 0032have 74730d410fcb6603ace96f1dc55ea6196122532d\n - C: 0000 - - S: 003aACK 7e47fe2bd8d01d481f44d7af0531bd93d3b21c01 continue\n - S: 003aACK 74730d410fcb6603ace96f1dc55ea6196122532d continue\n - S: 0008NAK\n - - C: 0009done\n - - S: 0031ACK 74730d410fcb6603ace96f1dc55ea6196122532d\n - S: [PACKFILE] ----- - - -Packfile Data -------------- - -Now that the client and server have finished negotiation about what -the minimal amount of data that needs to be sent to the client is, the server -will construct and send the required data in packfile format. - -See pack-format.txt for what the packfile itself actually looks like. - -If 'side-band' or 'side-band-64k' capabilities have been specified by -the client, the server will send the packfile data multiplexed. - -Each packet starting with the packet-line length of the amount of data -that follows, followed by a single byte specifying the sideband the -following data is coming in on. - -In 'side-band' mode, it will send up to 999 data bytes plus 1 control -code, for a total of up to 1000 bytes in a pkt-line. In 'side-band-64k' -mode it will send up to 65519 data bytes plus 1 control code, for a -total of up to 65520 bytes in a pkt-line. - -The sideband byte will be a '1', '2' or a '3'. Sideband '1' will contain -packfile data, sideband '2' will be used for progress information that the -client will generally print to stderr and sideband '3' is used for error -information. - -If no 'side-band' capability was specified, the server will stream the -entire packfile without multiplexing. - - -Pushing Data To a Server ------------------------- - -Pushing data to a server will invoke the 'receive-pack' process on the -server, which will allow the client to tell it which references it should -update and then send all the data the server will need for those new -references to be complete. Once all the data is received and validated, -the server will then update its references to what the client specified. - -Authentication --------------- - -The protocol itself contains no authentication mechanisms. That is to be -handled by the transport, such as SSH, before the 'receive-pack' process is -invoked. If 'receive-pack' is configured over the Git transport, those -repositories will be writable by anyone who can access that port (9418) as -that transport is unauthenticated. - -Reference Discovery -------------------- - -The reference discovery phase is done nearly the same way as it is in the -fetching protocol. Each reference obj-id and name on the server is sent -in packet-line format to the client, followed by a flush-pkt. The only -real difference is that the capability listing is different - the only -possible values are 'report-status', 'delete-refs', 'ofs-delta' and -'push-options'. - -Reference Update Request and Packfile Transfer ----------------------------------------------- - -Once the client knows what references the server is at, it can send a -list of reference update requests. For each reference on the server -that it wants to update, it sends a line listing the obj-id currently on -the server, the obj-id the client would like to update it to and the name -of the reference. - -This list is followed by a flush-pkt. Then the push options are transmitted -one per packet followed by another flush-pkt. After that the packfile that -should contain all the objects that the server will need to complete the new -references will be sent. - ----- - update-request = *shallow ( command-list | push-cert ) [packfile] - - shallow = PKT-LINE("shallow" SP obj-id) - - command-list = PKT-LINE(command NUL capability-list) - *PKT-LINE(command) - flush-pkt - - command = create / delete / update - create = zero-id SP new-id SP name - delete = old-id SP zero-id SP name - update = old-id SP new-id SP name - - old-id = obj-id - new-id = obj-id - - push-cert = PKT-LINE("push-cert" NUL capability-list LF) - PKT-LINE("certificate version 0.1" LF) - PKT-LINE("pusher" SP ident LF) - PKT-LINE("pushee" SP url LF) - PKT-LINE("nonce" SP nonce LF) - PKT-LINE(LF) - *PKT-LINE(command LF) - *PKT-LINE(gpg-signature-lines LF) - PKT-LINE("push-cert-end" LF) - - packfile = "PACK" 28*(OCTET) ----- - -If the receiving end does not support delete-refs, the sending end MUST -NOT ask for delete command. - -If the receiving end does not support push-cert, the sending end -MUST NOT send a push-cert command. When a push-cert command is -sent, command-list MUST NOT be sent; the commands recorded in the -push certificate is used instead. - -The packfile MUST NOT be sent if the only command used is 'delete'. - -A packfile MUST be sent if either create or update command is used, -even if the server already has all the necessary objects. In this -case the client MUST send an empty packfile. The only time this -is likely to happen is if the client is creating -a new branch or a tag that points to an existing obj-id. - -The server will receive the packfile, unpack it, then validate each -reference that is being updated that it hasn't changed while the request -was being processed (the obj-id is still the same as the old-id), and -it will run any update hooks to make sure that the update is acceptable. -If all of that is fine, the server will then update the references. - -Push Certificate ----------------- - -A push certificate begins with a set of header lines. After the -header and an empty line, the protocol commands follow, one per -line. Note that the trailing LF in push-cert PKT-LINEs is _not_ -optional; it must be present. - -Currently, the following header fields are defined: - -`pusher` ident:: - Identify the GPG key in "Human Readable Name " - format. - -`pushee` url:: - The repository URL (anonymized, if the URL contains - authentication material) the user who ran `git push` - intended to push into. - -`nonce` nonce:: - The 'nonce' string the receiving repository asked the - pushing user to include in the certificate, to prevent - replay attacks. - -The GPG signature lines are a detached signature for the contents -recorded in the push certificate before the signature block begins. -The detached signature is used to certify that the commands were -given by the pusher, who must be the signer. - -Report Status -------------- - -After receiving the pack data from the sender, the receiver sends a -report if 'report-status' capability is in effect. -It is a short listing of what happened in that update. It will first -list the status of the packfile unpacking as either 'unpack ok' or -'unpack [error]'. Then it will list the status for each of the references -that it tried to update. Each line is either 'ok [refname]' if the -update was successful, or 'ng [refname] [error]' if the update was not. - ----- - report-status = unpack-status - 1*(command-status) - flush-pkt - - unpack-status = PKT-LINE("unpack" SP unpack-result) - unpack-result = "ok" / error-msg - - command-status = command-ok / command-fail - command-ok = PKT-LINE("ok" SP refname) - command-fail = PKT-LINE("ng" SP refname SP error-msg) - - error-msg = 1*(OCTECT) ; where not "ok" ----- - -Updates can be unsuccessful for a number of reasons. The reference can have -changed since the reference discovery phase was originally sent, meaning -someone pushed in the meantime. The reference being pushed could be a -non-fast-forward reference and the update hooks or configuration could be -set to not allow that, etc. Also, some references can be updated while others -can be rejected. - -An example client/server communication might look like this: - ----- - S: 007c74730d410fcb6603ace96f1dc55ea6196122532d refs/heads/local\0report-status delete-refs ofs-delta\n - S: 003e7d1665144a3a975c05f1f43902ddaf084e784dbe refs/heads/debug\n - S: 003f74730d410fcb6603ace96f1dc55ea6196122532d refs/heads/master\n - S: 003f74730d410fcb6603ace96f1dc55ea6196122532d refs/heads/team\n - S: 0000 - - C: 003e7d1665144a3a975c05f1f43902ddaf084e784dbe 74730d410fcb6603ace96f1dc55ea6196122532d refs/heads/debug\n - C: 003e74730d410fcb6603ace96f1dc55ea6196122532d 5a3f6be755bbb7deae50065988cbfa1ffa9ab68a refs/heads/master\n - C: 0000 - C: [PACKDATA] - - S: 000eunpack ok\n - S: 0018ok refs/heads/debug\n - S: 002ang refs/heads/master non-fast-forward\n ----- -*/ diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/report_status.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/report_status.go deleted file mode 100644 index 29c1a4c..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/report_status.go +++ /dev/null @@ -1,165 +0,0 @@ -package packp - -import ( - "bytes" - "fmt" - "io" - "strings" - - "gopkg.in/src-d/go-git.v4/plumbing" - "gopkg.in/src-d/go-git.v4/plumbing/format/pktline" -) - -const ( - ok = "ok" -) - -// ReportStatus is a report status message, as used in the git-receive-pack -// process whenever the 'report-status' capability is negotiated. -type ReportStatus struct { - UnpackStatus string - CommandStatuses []*CommandStatus -} - -// NewReportStatus creates a new ReportStatus message. -func NewReportStatus() *ReportStatus { - return &ReportStatus{} -} - -// Error returns the first error if any. -func (s *ReportStatus) Error() error { - if s.UnpackStatus != ok { - return fmt.Errorf("unpack error: %s", s.UnpackStatus) - } - - for _, s := range s.CommandStatuses { - if err := s.Error(); err != nil { - return err - } - } - - return nil -} - -// Encode writes the report status to a writer. -func (s *ReportStatus) Encode(w io.Writer) error { - e := pktline.NewEncoder(w) - if err := e.Encodef("unpack %s\n", s.UnpackStatus); err != nil { - return err - } - - for _, cs := range s.CommandStatuses { - if err := cs.encode(w); err != nil { - return err - } - } - - return e.Flush() -} - -// Decode reads from the given reader and decodes a report-status message. It -// does not read more input than what is needed to fill the report status. -func (s *ReportStatus) Decode(r io.Reader) error { - scan := pktline.NewScanner(r) - if err := s.scanFirstLine(scan); err != nil { - return err - } - - if err := s.decodeReportStatus(scan.Bytes()); err != nil { - return err - } - - flushed := false - for scan.Scan() { - b := scan.Bytes() - if isFlush(b) { - flushed = true - break - } - - if err := s.decodeCommandStatus(b); err != nil { - return err - } - } - - if !flushed { - return fmt.Errorf("missing flush") - } - - return scan.Err() -} - -func (s *ReportStatus) scanFirstLine(scan *pktline.Scanner) error { - if scan.Scan() { - return nil - } - - if scan.Err() != nil { - return scan.Err() - } - - return io.ErrUnexpectedEOF -} - -func (s *ReportStatus) decodeReportStatus(b []byte) error { - if isFlush(b) { - return fmt.Errorf("premature flush") - } - - b = bytes.TrimSuffix(b, eol) - - line := string(b) - fields := strings.SplitN(line, " ", 2) - if len(fields) != 2 || fields[0] != "unpack" { - return fmt.Errorf("malformed unpack status: %s", line) - } - - s.UnpackStatus = fields[1] - return nil -} - -func (s *ReportStatus) decodeCommandStatus(b []byte) error { - b = bytes.TrimSuffix(b, eol) - - line := string(b) - fields := strings.SplitN(line, " ", 3) - status := ok - if len(fields) == 3 && fields[0] == "ng" { - status = fields[2] - } else if len(fields) != 2 || fields[0] != "ok" { - return fmt.Errorf("malformed command status: %s", line) - } - - cs := &CommandStatus{ - ReferenceName: plumbing.ReferenceName(fields[1]), - Status: status, - } - s.CommandStatuses = append(s.CommandStatuses, cs) - return nil -} - -// CommandStatus is the status of a reference in a report status. -// See ReportStatus struct. -type CommandStatus struct { - ReferenceName plumbing.ReferenceName - Status string -} - -// Error returns the error, if any. -func (s *CommandStatus) Error() error { - if s.Status == ok { - return nil - } - - return fmt.Errorf("command error on %s: %s", - s.ReferenceName.String(), s.Status) -} - -func (s *CommandStatus) encode(w io.Writer) error { - e := pktline.NewEncoder(w) - if s.Error() == nil { - return e.Encodef("ok %s\n", s.ReferenceName.String()) - } - - return e.Encodef("ng %s %s\n", s.ReferenceName.String(), s.Status) -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/shallowupd.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/shallowupd.go deleted file mode 100644 index fce4e3b..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/shallowupd.go +++ /dev/null @@ -1,92 +0,0 @@ -package packp - -import ( - "bytes" - "fmt" - "io" - - "gopkg.in/src-d/go-git.v4/plumbing" - "gopkg.in/src-d/go-git.v4/plumbing/format/pktline" -) - -const ( - shallowLineLen = 48 - unshallowLineLen = 50 -) - -type ShallowUpdate struct { - Shallows []plumbing.Hash - Unshallows []plumbing.Hash -} - -func (r *ShallowUpdate) Decode(reader io.Reader) error { - s := pktline.NewScanner(reader) - - for s.Scan() { - line := s.Bytes() - line = bytes.TrimSpace(line) - - var err error - switch { - case bytes.HasPrefix(line, shallow): - err = r.decodeShallowLine(line) - case bytes.HasPrefix(line, unshallow): - err = r.decodeUnshallowLine(line) - case bytes.Equal(line, pktline.Flush): - return nil - } - - if err != nil { - return err - } - } - - return s.Err() -} - -func (r *ShallowUpdate) decodeShallowLine(line []byte) error { - hash, err := r.decodeLine(line, shallow, shallowLineLen) - if err != nil { - return err - } - - r.Shallows = append(r.Shallows, hash) - return nil -} - -func (r *ShallowUpdate) decodeUnshallowLine(line []byte) error { - hash, err := r.decodeLine(line, unshallow, unshallowLineLen) - if err != nil { - return err - } - - r.Unshallows = append(r.Unshallows, hash) - return nil -} - -func (r *ShallowUpdate) decodeLine(line, prefix []byte, expLen int) (plumbing.Hash, error) { - if len(line) != expLen { - return plumbing.ZeroHash, fmt.Errorf("malformed %s%q", prefix, line) - } - - raw := string(line[expLen-40 : expLen]) - return plumbing.NewHash(raw), nil -} - -func (r *ShallowUpdate) Encode(w io.Writer) error { - e := pktline.NewEncoder(w) - - for _, h := range r.Shallows { - if err := e.Encodef("%s%s\n", shallow, h.String()); err != nil { - return err - } - } - - for _, h := range r.Unshallows { - if err := e.Encodef("%s%s\n", unshallow, h.String()); err != nil { - return err - } - } - - return e.Flush() -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/sideband/common.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/sideband/common.go deleted file mode 100644 index de50012..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/sideband/common.go +++ /dev/null @@ -1,33 +0,0 @@ -package sideband - -// Type sideband type "side-band" or "side-band-64k" -type Type int8 - -const ( - // Sideband legacy sideband type up to 1000-byte messages - Sideband Type = iota - // Sideband64k sideband type up to 65519-byte messages - Sideband64k Type = iota - - // MaxPackedSize for Sideband type - MaxPackedSize = 1000 - // MaxPackedSize64k for Sideband64k type - MaxPackedSize64k = 65520 -) - -// Channel sideband channel -type Channel byte - -// WithPayload encode the payload as a message -func (ch Channel) WithPayload(payload []byte) []byte { - return append([]byte{byte(ch)}, payload...) -} - -const ( - // PackData packfile content - PackData Channel = 1 - // ProgressMessage progress messages - ProgressMessage Channel = 2 - // ErrorMessage fatal error message just before stream aborts - ErrorMessage Channel = 3 -) diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/sideband/demux.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/sideband/demux.go deleted file mode 100644 index 352336d..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/sideband/demux.go +++ /dev/null @@ -1,148 +0,0 @@ -package sideband - -import ( - "errors" - "fmt" - "io" - - "gopkg.in/src-d/go-git.v4/plumbing/format/pktline" -) - -// ErrMaxPackedExceeded returned by Read, if the maximum packed size is exceeded -var ErrMaxPackedExceeded = errors.New("max. packed size exceeded") - -// Progress where the progress information is stored -type Progress interface { - io.Writer -} - -// Demuxer demultiplexes the progress reports and error info interleaved with the -// packfile itself. -// -// A sideband has three different channels the main one, called PackData, contains -// the packfile data; the ErrorMessage channel, that contains server errors; and -// the last one, ProgressMessage channel, containing information about the ongoing -// task happening in the server (optional, can be suppressed sending NoProgress -// or Quiet capabilities to the server) -// -// In order to demultiplex the data stream, method `Read` should be called to -// retrieve the PackData channel, the incoming data from the ProgressMessage is -// written at `Progress` (if any), if any message is retrieved from the -// ErrorMessage channel an error is returned and we can assume that the -// connection has been closed. -type Demuxer struct { - t Type - r io.Reader - s *pktline.Scanner - - max int - pending []byte - - // Progress is where the progress messages are stored - Progress Progress -} - -// NewDemuxer returns a new Demuxer for the given t and read from r -func NewDemuxer(t Type, r io.Reader) *Demuxer { - max := MaxPackedSize64k - if t == Sideband { - max = MaxPackedSize - } - - return &Demuxer{ - t: t, - r: r, - max: max, - s: pktline.NewScanner(r), - } -} - -// Read reads up to len(p) bytes from the PackData channel into p, an error can -// be return if an error happens when reading or if a message is sent in the -// ErrorMessage channel. -// -// When a ProgressMessage is read, is not copy to b, instead of this is written -// to the Progress -func (d *Demuxer) Read(b []byte) (n int, err error) { - var read, req int - - req = len(b) - for read < req { - n, err := d.doRead(b[read:req]) - read += n - - if err != nil { - return read, err - } - } - - return read, nil -} - -func (d *Demuxer) doRead(b []byte) (int, error) { - read, err := d.nextPackData() - size := len(read) - wanted := len(b) - - if size > wanted { - d.pending = read[wanted:] - } - - if wanted > size { - wanted = size - } - - size = copy(b, read[:wanted]) - return size, err -} - -func (d *Demuxer) nextPackData() ([]byte, error) { - content := d.getPending() - if len(content) != 0 { - return content, nil - } - - if !d.s.Scan() { - if err := d.s.Err(); err != nil { - return nil, err - } - - return nil, io.EOF - } - - content = d.s.Bytes() - - size := len(content) - if size == 0 { - return nil, nil - } else if size > d.max { - return nil, ErrMaxPackedExceeded - } - - switch Channel(content[0]) { - case PackData: - return content[1:], nil - case ProgressMessage: - if d.Progress != nil { - _, err := d.Progress.Write(content[1:]) - return nil, err - } - case ErrorMessage: - return nil, fmt.Errorf("unexpected error: %s", content[1:]) - default: - return nil, fmt.Errorf("unknown channel %s", content) - } - - return nil, nil -} - -func (d *Demuxer) getPending() (b []byte) { - if len(d.pending) == 0 { - return nil - } - - content := d.pending - d.pending = nil - - return content -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/sideband/doc.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/sideband/doc.go deleted file mode 100644 index c5d2429..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/sideband/doc.go +++ /dev/null @@ -1,31 +0,0 @@ -// Package sideband implements a sideband mutiplex/demultiplexer -package sideband - -// If 'side-band' or 'side-band-64k' capabilities have been specified by -// the client, the server will send the packfile data multiplexed. -// -// Either mode indicates that the packfile data will be streamed broken -// up into packets of up to either 1000 bytes in the case of 'side_band', -// or 65520 bytes in the case of 'side_band_64k'. Each packet is made up -// of a leading 4-byte pkt-line length of how much data is in the packet, -// followed by a 1-byte stream code, followed by the actual data. -// -// The stream code can be one of: -// -// 1 - pack data -// 2 - progress messages -// 3 - fatal error message just before stream aborts -// -// The "side-band-64k" capability came about as a way for newer clients -// that can handle much larger packets to request packets that are -// actually crammed nearly full, while maintaining backward compatibility -// for the older clients. -// -// Further, with side-band and its up to 1000-byte messages, it's actually -// 999 bytes of payload and 1 byte for the stream code. With side-band-64k, -// same deal, you have up to 65519 bytes of data and 1 byte for the stream -// code. -// -// The client MUST send only maximum of one of "side-band" and "side- -// band-64k". Server MUST diagnose it as an error if client requests -// both. diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/sideband/muxer.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/sideband/muxer.go deleted file mode 100644 index 45fecc2..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/sideband/muxer.go +++ /dev/null @@ -1,65 +0,0 @@ -package sideband - -import ( - "io" - - "gopkg.in/src-d/go-git.v4/plumbing/format/pktline" -) - -// Muxer multiplex the packfile along with the progress messages and the error -// information. The multiplex is perform using pktline format. -type Muxer struct { - max int - e *pktline.Encoder -} - -const chLen = 1 - -// NewMuxer returns a new Muxer for the given t that writes on w. -// -// If t is equal to `Sideband` the max pack size is set to MaxPackedSize, in any -// other value is given, max pack is set to MaxPackedSize64k, that is the -// maximum length of a line in pktline format. -func NewMuxer(t Type, w io.Writer) *Muxer { - max := MaxPackedSize64k - if t == Sideband { - max = MaxPackedSize - } - - return &Muxer{ - max: max - chLen, - e: pktline.NewEncoder(w), - } -} - -// Write writes p in the PackData channel -func (m *Muxer) Write(p []byte) (int, error) { - return m.WriteChannel(PackData, p) -} - -// WriteChannel writes p in the given channel. This method can be used with any -// channel, but is recommend use it only for the ProgressMessage and -// ErrorMessage channels and use Write for the PackData channel -func (m *Muxer) WriteChannel(t Channel, p []byte) (int, error) { - wrote := 0 - size := len(p) - for wrote < size { - n, err := m.doWrite(t, p[wrote:]) - wrote += n - - if err != nil { - return wrote, err - } - } - - return wrote, nil -} - -func (m *Muxer) doWrite(ch Channel, p []byte) (int, error) { - sz := len(p) - if sz > m.max { - sz = m.max - } - - return sz, m.e.Encode(ch.WithPayload(p[:sz])) -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/srvresp.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/srvresp.go deleted file mode 100644 index 6a91991..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/srvresp.go +++ /dev/null @@ -1,127 +0,0 @@ -package packp - -import ( - "bufio" - "bytes" - "errors" - "fmt" - "io" - - "gopkg.in/src-d/go-git.v4/plumbing" - "gopkg.in/src-d/go-git.v4/plumbing/format/pktline" -) - -const ackLineLen = 44 - -// ServerResponse object acknowledgement from upload-pack service -type ServerResponse struct { - ACKs []plumbing.Hash -} - -// Decode decodes the response into the struct, isMultiACK should be true, if -// the request was done with multi_ack or multi_ack_detailed capabilities. -func (r *ServerResponse) Decode(reader *bufio.Reader, isMultiACK bool) error { - // TODO: implement support for multi_ack or multi_ack_detailed responses - if isMultiACK { - return errors.New("multi_ack and multi_ack_detailed are not supported") - } - - s := pktline.NewScanner(reader) - - for s.Scan() { - line := s.Bytes() - - if err := r.decodeLine(line); err != nil { - return err - } - - // we need to detect when the end of a response header and the beginning - // of a packfile header happened, some requests to the git daemon - // produces a duplicate ACK header even when multi_ack is not supported. - stop, err := r.stopReading(reader) - if err != nil { - return err - } - - if stop { - break - } - } - - return s.Err() -} - -// stopReading detects when a valid command such as ACK or NAK is found to be -// read in the buffer without moving the read pointer. -func (r *ServerResponse) stopReading(reader *bufio.Reader) (bool, error) { - ahead, err := reader.Peek(7) - if err == io.EOF { - return true, nil - } - - if err != nil { - return false, err - } - - if len(ahead) > 4 && r.isValidCommand(ahead[0:3]) { - return false, nil - } - - if len(ahead) == 7 && r.isValidCommand(ahead[4:]) { - return false, nil - } - - return true, nil -} - -func (r *ServerResponse) isValidCommand(b []byte) bool { - commands := [][]byte{ack, nak} - for _, c := range commands { - if bytes.Equal(b, c) { - return true - } - } - - return false -} - -func (r *ServerResponse) decodeLine(line []byte) error { - if len(line) == 0 { - return fmt.Errorf("unexpected flush") - } - - if bytes.Equal(line[0:3], ack) { - return r.decodeACKLine(line) - } - - if bytes.Equal(line[0:3], nak) { - return nil - } - - return fmt.Errorf("unexpected content %q", string(line)) -} - -func (r *ServerResponse) decodeACKLine(line []byte) error { - if len(line) < ackLineLen { - return fmt.Errorf("malformed ACK %q", line) - } - - sp := bytes.Index(line, []byte(" ")) - h := plumbing.NewHash(string(line[sp+1 : sp+41])) - r.ACKs = append(r.ACKs, h) - return nil -} - -// Encode encodes the ServerResponse into a writer. -func (r *ServerResponse) Encode(w io.Writer) error { - if len(r.ACKs) > 1 { - return errors.New("multi_ack and multi_ack_detailed are not supported") - } - - e := pktline.NewEncoder(w) - if len(r.ACKs) == 0 { - return e.Encodef("%s\n", nak) - } - - return e.Encodef("%s %s\n", ack, r.ACKs[0].String()) -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/ulreq.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/ulreq.go deleted file mode 100644 index 74109d8..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/ulreq.go +++ /dev/null @@ -1,168 +0,0 @@ -package packp - -import ( - "fmt" - "time" - - "gopkg.in/src-d/go-git.v4/plumbing" - "gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/capability" -) - -// UploadRequest values represent the information transmitted on a -// upload-request message. Values from this type are not zero-value -// safe, use the New function instead. -// This is a low level type, use UploadPackRequest instead. -type UploadRequest struct { - Capabilities *capability.List - Wants []plumbing.Hash - Shallows []plumbing.Hash - Depth Depth -} - -// Depth values stores the desired depth of the requested packfile: see -// DepthCommit, DepthSince and DepthReference. -type Depth interface { - isDepth() - IsZero() bool -} - -// DepthCommits values stores the maximum number of requested commits in -// the packfile. Zero means infinite. A negative value will have -// undefined consequences. -type DepthCommits int - -func (d DepthCommits) isDepth() {} - -func (d DepthCommits) IsZero() bool { - return d == 0 -} - -// DepthSince values requests only commits newer than the specified time. -type DepthSince time.Time - -func (d DepthSince) isDepth() {} - -func (d DepthSince) IsZero() bool { - return time.Time(d).IsZero() -} - -// DepthReference requests only commits not to found in the specified reference. -type DepthReference string - -func (d DepthReference) isDepth() {} - -func (d DepthReference) IsZero() bool { - return string(d) == "" -} - -// NewUploadRequest returns a pointer to a new UploadRequest value, ready to be -// used. It has no capabilities, wants or shallows and an infinite depth. Please -// note that to encode an upload-request it has to have at least one wanted hash. -func NewUploadRequest() *UploadRequest { - return &UploadRequest{ - Capabilities: capability.NewList(), - Wants: []plumbing.Hash{}, - Shallows: []plumbing.Hash{}, - Depth: DepthCommits(0), - } -} - -// NewUploadRequestFromCapabilities returns a pointer to a new UploadRequest -// value, the request capabilities are filled with the most optiomal ones, based -// on the adv value (advertaised capabilities), the UploadRequest generated it -// has no wants or shallows and an infinite depth. -func NewUploadRequestFromCapabilities(adv *capability.List) *UploadRequest { - r := NewUploadRequest() - - if adv.Supports(capability.MultiACKDetailed) { - r.Capabilities.Set(capability.MultiACKDetailed) - } else if adv.Supports(capability.MultiACK) { - r.Capabilities.Set(capability.MultiACK) - } - - if adv.Supports(capability.Sideband64k) { - r.Capabilities.Set(capability.Sideband64k) - } else if adv.Supports(capability.Sideband) { - r.Capabilities.Set(capability.Sideband) - } - - if adv.Supports(capability.ThinPack) { - r.Capabilities.Set(capability.ThinPack) - } - - if adv.Supports(capability.OFSDelta) { - r.Capabilities.Set(capability.OFSDelta) - } - - if adv.Supports(capability.Agent) { - r.Capabilities.Set(capability.Agent, capability.DefaultAgent) - } - - return r -} - -// Validate validates the content of UploadRequest, following the next rules: -// - Wants MUST have at least one reference -// - capability.Shallow MUST be present if Shallows is not empty -// - is a non-zero DepthCommits is given capability.Shallow MUST be present -// - is a DepthSince is given capability.Shallow MUST be present -// - is a DepthReference is given capability.DeepenNot MUST be present -// - MUST contain only maximum of one of capability.Sideband and capability.Sideband64k -// - MUST contain only maximum of one of capability.MultiACK and capability.MultiACKDetailed -func (r *UploadRequest) Validate() error { - if len(r.Wants) == 0 { - return fmt.Errorf("want can't be empty") - } - - if err := r.validateRequiredCapabilities(); err != nil { - return err - } - - if err := r.validateConflictCapabilities(); err != nil { - return err - } - - return nil -} - -func (r *UploadRequest) validateRequiredCapabilities() error { - msg := "missing capability %s" - - if len(r.Shallows) != 0 && !r.Capabilities.Supports(capability.Shallow) { - return fmt.Errorf(msg, capability.Shallow) - } - - switch r.Depth.(type) { - case DepthCommits: - if r.Depth != DepthCommits(0) { - if !r.Capabilities.Supports(capability.Shallow) { - return fmt.Errorf(msg, capability.Shallow) - } - } - case DepthSince: - if !r.Capabilities.Supports(capability.DeepenSince) { - return fmt.Errorf(msg, capability.DeepenSince) - } - case DepthReference: - if !r.Capabilities.Supports(capability.DeepenNot) { - return fmt.Errorf(msg, capability.DeepenNot) - } - } - - return nil -} - -func (r *UploadRequest) validateConflictCapabilities() error { - msg := "capabilities %s and %s are mutually exclusive" - if r.Capabilities.Supports(capability.Sideband) && - r.Capabilities.Supports(capability.Sideband64k) { - return fmt.Errorf(msg, capability.Sideband, capability.Sideband64k) - } - - if r.Capabilities.Supports(capability.MultiACK) && - r.Capabilities.Supports(capability.MultiACKDetailed) { - return fmt.Errorf(msg, capability.MultiACK, capability.MultiACKDetailed) - } - - return nil -} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/ulreq_decode.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/ulreq_decode.go deleted file mode 100644 index bcd642d..0000000 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/ulreq_decode.go +++ /dev/null @@ -1,257 +0,0 @@ -package packp - -import ( - "bytes" - "encoding/hex" - "fmt" - "io" - "strconv" - "time" - - "gopkg.in/src-d/go-git.v4/plumbing" - "gopkg.in/src-d/go-git.v4/plumbing/format/pktline" -) - -// Decode reads the next upload-request form its input and -// stores it in the UploadRequest. -func (u *UploadRequest) Decode(r io.Reader) error { - d := newUlReqDecoder(r) - return d.Decode(u) -} - -type ulReqDecoder struct { - s *pktline.Scanner // a pkt-line scanner from the input stream - line []byte // current pkt-line contents, use parser.nextLine() to make it advance - nLine int // current pkt-line number for debugging, begins at 1 - err error // sticky error, use the parser.error() method to fill this out - data *UploadRequest // parsed data is stored here -} - -func newUlReqDecoder(r io.Reader) *ulReqDecoder { - return &ulReqDecoder{ - s: pktline.NewScanner(r), - } -} - -func (d *ulReqDecoder) Decode(v *UploadRequest) error { - d.data = v - - for state := d.decodeFirstWant; state != nil; { - state = state() - } - - return d.err -} - -// fills out the parser stiky error -func (d *ulReqDecoder) error(format string, a ...interface{}) { - msg := fmt.Sprintf( - "pkt-line %d: %s", d.nLine, - fmt.Sprintf(format, a...), - ) - - d.err = NewErrUnexpectedData(msg, d.line) -} - -// Reads a new pkt-line from the scanner, makes its payload available as -// p.line and increments p.nLine. A successful invocation returns true, -// otherwise, false is returned and the sticky error is filled out -// accordingly. Trims eols at the end of the payloads. -func (d *ulReqDecoder) nextLine() bool { - d.nLine++ - - if !d.s.Scan() { - if d.err = d.s.Err(); d.err != nil { - return false - } - - d.error("EOF") - return false - } - - d.line = d.s.Bytes() - d.line = bytes.TrimSuffix(d.line, eol) - - return true -} - -// Expected format: want [ capabilities] -func (d *ulReqDecoder) decodeFirstWant() stateFn { - if ok := d.nextLine(); !ok { - return nil - } - - if !bytes.HasPrefix(d.line, want) { - d.error("missing 'want ' prefix") - return nil - } - d.line = bytes.TrimPrefix(d.line, want) - - hash, ok := d.readHash() - if !ok { - return nil - } - d.data.Wants = append(d.data.Wants, hash) - - return d.decodeCaps -} - -func (d *ulReqDecoder) readHash() (plumbing.Hash, bool) { - if len(d.line) < hashSize { - d.err = fmt.Errorf("malformed hash: %v", d.line) - return plumbing.ZeroHash, false - } - - var hash plumbing.Hash - if _, err := hex.Decode(hash[:], d.line[:hashSize]); err != nil { - d.error("invalid hash text: %s", err) - return plumbing.ZeroHash, false - } - d.line = d.line[hashSize:] - - return hash, true -} - -// Expected format: sp cap1 sp cap2 sp cap3... -func (d *ulReqDecoder) decodeCaps() stateFn { - d.line = bytes.TrimPrefix(d.line, sp) - if err := d.data.Capabilities.Decode(d.line); err != nil { - d.error("invalid capabilities: %s", err) - } - - return d.decodeOtherWants -} - -// Expected format: want -func (d *ulReqDecoder) decodeOtherWants() stateFn { - if ok := d.nextLine(); !ok { - return nil - } - - if bytes.HasPrefix(d.line, shallow) { - return d.decodeShallow - } - - if bytes.HasPrefix(d.line, deepen) { - return d.decodeDeepen - } - - if len(d.line) == 0 { - return nil - } - - if !bytes.HasPrefix(d.line, want) { - d.error("unexpected payload while expecting a want: %q", d.line) - return nil - } - d.line = bytes.TrimPrefix(d.line, want) - - hash, ok := d.readHash() - if !ok { - return nil - } - d.data.Wants = append(d.data.Wants, hash) - - return d.decodeOtherWants -} - -// Expected format: shallow -func (d *ulReqDecoder) decodeShallow() stateFn { - if bytes.HasPrefix(d.line, deepen) { - return d.decodeDeepen - } - - if len(d.line) == 0 { - return nil - } - - if !bytes.HasPrefix(d.line, shallow) { - d.error("unexpected payload while expecting a shallow: %q", d.line) - return nil - } - d.line = bytes.TrimPrefix(d.line, shallow) - - hash, ok := d.readHash() - if !ok { - return nil - } - d.data.Shallows = append(d.data.Shallows, hash) - - if ok := d.nextLine(); !ok { - return nil - } - - return d.decodeShallow -} - -// Expected format: deepen / deepen-since

    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π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 z%0A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ȬbStAVE9T!GgR>O*gE1$jDG;r#B+ZZn>K-R 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%0A^#CSDj_7sZ)+NG<2qbbtT*Y)#M60q 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

    ho0=$3?Fcy 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