diff --git a/README.md b/README.md index 627455f7..4759801d 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ Build Status License -CHANGELOG/HISTORY +CHANGELOG/HISTORY This repository provides easy to understand code snippets on how to get started with web development with the Go programming language using the [Iris](https://github.com/kataras/iris) web framework. @@ -159,11 +159,16 @@ To read the Iris documentation please navigate to [the wiki pages](https://githu * [ORM](orm) * [Using xorm(Mysql, MyMysql, Postgres, Tidb, **SQLite**, MsSql, MsSql, Oracle)](orm/xorm/main.go) * [Using gorm](orm/gorm/main.go) +* [Desktop App](desktop-app) + * [Blink](desktop-app/blink) + * [Lorca](desktop-app/lorca) + * [Webview](desktop-app/webview) * [Miscellaneous](miscellaneous) * [HTTP Method Override](https://github.com/kataras/iris/blob/master/middleware/methodoverride/methodoverride_test.go) **NEW** * [Request Logger](http_request/request-logger/main.go) * [log requests to a file](http_request/request-logger/request-logger-file/main.go) - * [Localization and Internationalization](miscellaneous/i18n/main.go) + * [Localization and Internationalization](i18n/main.go) + * [Sitemap.xml](sitemap/main.go) * [Recovery](miscellaneous/recover/main.go) * [Profiling (pprof)](miscellaneous/pprof/main.go) * [Internal Application File Logger](miscellaneous/file-logger/main.go) @@ -189,7 +194,7 @@ To read the Iris documentation please navigate to [the wiki pages](https://githu * [Cookies](cookies) * [Basic](cookies/basic/main.go) * [Encode/Decode (securecookie)](cookies/securecookie/main.go) -[Sessions](sessions) +* [Sessions](sessions) * [Overview](sessions/overview/main.go) * [Middleware](sessions/middleware/main.go) * [Secure Cookie](sessions/securecookie/main.go) diff --git a/desktop-app/blink/main.go b/desktop-app/blink/main.go new file mode 100644 index 00000000..87ae931d --- /dev/null +++ b/desktop-app/blink/main.go @@ -0,0 +1,40 @@ +package main + +import ( + "github.com/kataras/iris/v12" + "github.com/raintean/blink" +) + +const addr = "127.0.0.1:8080" + +/* + $ go build -ldflags -H=windowsgui -o myapp.exe # build for windows + $ ./myapp.exe # run the app +*/ +func main() { + go runServer() + showAndWaitWindow() +} + +func runServer() { + app := iris.New() + app.Get("/", func(ctx iris.Context) { + ctx.HTML("

Hello Desktop

") + }) + app.Run(iris.Addr(addr)) +} + +func showAndWaitWindow() { + blink.SetDebugMode(true) + if err := blink.InitBlink(); err != nil { + panic(err) + } + + view := blink.NewWebView(false, 800, 600) + view.LoadURL(addr) + view.SetWindowTitle("My App") + view.MoveToCenter() + view.ShowWindow() + + <-view.Destroy +} diff --git a/desktop-app/lorca/main.go b/desktop-app/lorca/main.go new file mode 100644 index 00000000..aa191dd5 --- /dev/null +++ b/desktop-app/lorca/main.go @@ -0,0 +1,40 @@ +package main + +import ( + "github.com/kataras/iris/v12" + "github.com/zserge/lorca" +) + +const addr = "127.0.0.1:8080" + +/* + $ go build -ldflags="-H windowsgui" -o myapp.exe # build for windows + $ ./myapp.exe # run +*/ +func main() { + go runServer() + showAndWaitWindow() +} + +func runServer() { + app := iris.New() + app.Get("/", func(ctx iris.Context) { + ctx.HTML("My App

Hello Desktop

") + }) + app.Run(iris.Addr(addr)) +} + +func showAndWaitWindow() { + webview, err := lorca.New("http://"+addr, "", 800, 600) + if err != nil { + panic(err) + } + defer webview.Close() + + // webview.SetBounds(lorca.Bounds{ + // WindowState: lorca.WindowStateFullscreen, + // }) + + // Wait for the browser window to be closed + <-webview.Done() +} diff --git a/desktop-app/webview/main.go b/desktop-app/webview/main.go new file mode 100644 index 00000000..3c211139 --- /dev/null +++ b/desktop-app/webview/main.go @@ -0,0 +1,39 @@ +package main + +import ( + "github.com/kataras/iris/v12" + "github.com/zserge/webview" +) + +const addr = "127.0.0.1:8080" + +/* + # Windows requires special linker flags for GUI apps. + # It's also recommended to use TDM-GCC-64 compiler for CGo. + # http://tdm-gcc.tdragon.net/download + # + # + $ go build -ldflags="-H windowsgui" -o myapp.exe # build for windows + $ ./myapp.exe # run + # + # + # Note: if you see "use option -std=c99 or -std=gnu99 to compile your code" + # please refer to: https://github.com/zserge/webview/issues/188 +*/ +func main() { + go runServer() + showAndWaitWindow() +} + +func runServer() { + app := iris.New() + app.Get("/", func(ctx iris.Context) { + ctx.HTML("

Hello Desktop

") + }) + app.Run(iris.Addr(addr)) +} + +func showAndWaitWindow() { + webview.Open("My App", + addr, 800, 600, true) +} diff --git a/i18n/hosts b/i18n/hosts new file mode 100644 index 00000000..fb394e4b --- /dev/null +++ b/i18n/hosts @@ -0,0 +1,26 @@ +# Copyright (c) 1993-2009 Microsoft Corp. +# +# This is a sample HOSTS file used by Microsoft TCP/IP for Windows. +# +# This file contains the mappings of IP addresses to host names. Each +# entry should be kept on an individual line. The IP address should +# be placed in the first column followed by the corresponding host name. +# The IP address and the host name should be separated by at least one +# space. +# +# Additionally, comments (such as these) may be inserted on individual +# lines or following the machine name denoted by a '#' symbol. +# +# For example: +# +# 102.54.94.97 rhino.acme.com # source server +# 38.25.63.10 x.acme.com # x client host + +# localhost name resolution is handled within DNS itself. +# 127.0.0.1 localhost +# ::1 localhost +127.0.0.1 mydomain.com +127.0.0.1 en.mydomain.com +127.0.0.1 el.mydomain.com +127.0.0.1 el-gr.mydomain.com +127.0.0.1 zh.mydomain.com \ No newline at end of file diff --git a/miscellaneous/i18n/locales/locale_el-GR.ini b/i18n/locales/el-GR/locale_el-GR.ini similarity index 100% rename from miscellaneous/i18n/locales/locale_el-GR.ini rename to i18n/locales/el-GR/locale_el-GR.ini diff --git a/miscellaneous/i18n/locales/locale_multi_first_el-GR.ini b/i18n/locales/el-GR/locale_multi_first_el-GR.ini similarity index 100% rename from miscellaneous/i18n/locales/locale_multi_first_el-GR.ini rename to i18n/locales/el-GR/locale_multi_first_el-GR.ini diff --git a/miscellaneous/i18n/locales/locale_multi_second_el-GR.ini b/i18n/locales/el-GR/locale_multi_second_el-GR.ini similarity index 100% rename from miscellaneous/i18n/locales/locale_multi_second_el-GR.ini rename to i18n/locales/el-GR/locale_multi_second_el-GR.ini diff --git a/miscellaneous/i18n/locales/locale_en-US.ini b/i18n/locales/en-US/locale_en-US.ini similarity index 100% rename from miscellaneous/i18n/locales/locale_en-US.ini rename to i18n/locales/en-US/locale_en-US.ini diff --git a/miscellaneous/i18n/locales/locale_multi_first_en-US.ini b/i18n/locales/en-US/locale_multi_first_en-US.ini similarity index 100% rename from miscellaneous/i18n/locales/locale_multi_first_en-US.ini rename to i18n/locales/en-US/locale_multi_first_en-US.ini diff --git a/miscellaneous/i18n/locales/locale_multi_second_en-US.ini b/i18n/locales/en-US/locale_multi_second_en-US.ini similarity index 100% rename from miscellaneous/i18n/locales/locale_multi_second_en-US.ini rename to i18n/locales/en-US/locale_multi_second_en-US.ini diff --git a/miscellaneous/i18n/locales/locale_zh-CN.ini b/i18n/locales/zh-CN/locale_zh-CN.ini similarity index 100% rename from miscellaneous/i18n/locales/locale_zh-CN.ini rename to i18n/locales/zh-CN/locale_zh-CN.ini diff --git a/i18n/main.go b/i18n/main.go new file mode 100644 index 00000000..4cb926a3 --- /dev/null +++ b/i18n/main.go @@ -0,0 +1,89 @@ +package main + +import ( + "github.com/kataras/iris/v12" +) + +func newApp() *iris.Application { + app := iris.New() + + // Configure i18n. + // First parameter: Glob filpath patern, + // Second variadic parameter: Optional language tags, the first one is the default/fallback one. + app.I18n.Load("./locales/*/*.ini", "en-US", "el-GR", "zh-CN") + // app.I18n.LoadAssets for go-bindata. + + // Default values: + // app.I18n.URLParameter = "lang" + // app.I18n.Subdomain = true + // + // Set to false to disallow path (local) redirects, + // see https://github.com/kataras/iris/issues/1369. + // app.I18n.PathRedirect = true + + app.Get("/", func(ctx iris.Context) { + hi := ctx.Tr("hi", "iris") + + locale := ctx.GetLocale() + + ctx.Writef("From the language %s translated output: %s", locale.Language(), hi) + }) + + app.Get("/some-path", func(ctx iris.Context) { + ctx.Writef("%s", ctx.Tr("hi", "iris")) + }) + + app.Get("/other", func(ctx iris.Context) { + language := ctx.GetLocale().Language() + + fromFirstFileValue := ctx.Tr("key1") + fromSecondFileValue := ctx.Tr("key2") + ctx.Writef("From the language: %s, translated output:\n%s=%s\n%s=%s", + language, "key1", fromFirstFileValue, + "key2", fromSecondFileValue) + }) + + // using in inside your views: + view := iris.HTML("./views", ".html") + app.RegisterView(view) + + app.Get("/templates", func(ctx iris.Context) { + ctx.View("index.html", iris.Map{ + "tr": ctx.Tr, // word, arguments... {call .tr "hi" "iris"}} + }) + + // Note that, + // Iris automatically adds a "tr" global template function as well, + // the only differene is the way you call it inside your templates and + // that it accepts a language code as its first argument: {{ tr "el-GR" "hi" "iris"}} + }) + // + + return app +} + +func main() { + app := newApp() + + // go to http://localhost:8080/el-gr/some-path + // ^ (by path prefix) + // + // or http://el.mydomain.com8080/some-path + // ^ (by subdomain - test locally with the hosts file) + // + // or http://localhost:8080/zh-CN/templates + // ^ (by path prefix with uppercase) + // + // or http://localhost:8080/some-path?lang=el-GR + // ^ (by url parameter) + // + // or http://localhost:8080 (default is en-US) + // or http://localhost:8080/?lang=zh-CN + // + // go to http://localhost:8080/other?lang=el-GR + // or http://localhost:8080/other (default is en-US) + // or http://localhost:8080/other?lang=en-US + // + // or use cookies to set the language. + app.Run(iris.Addr(":8080"), iris.WithSitemap("http://localhost:8080")) +} diff --git a/i18n/main_test.go b/i18n/main_test.go new file mode 100644 index 00000000..f625c29c --- /dev/null +++ b/i18n/main_test.go @@ -0,0 +1,86 @@ +package main + +import ( + "fmt" + "strings" + "testing" + + "github.com/kataras/iris/v12/httptest" +) + +func TestI18n(t *testing.T) { + app := newApp() + + const ( + expectedf = "From the language %s translated output: %s" + + enUS = "hello, iris" + elGR = "γεια, iris" + zhCN = "您好,iris" + ) + + var ( + tests = map[string]string{ + "en-US": fmt.Sprintf(expectedf, "en-US", enUS), + "el-GR": fmt.Sprintf(expectedf, "el-GR", elGR), + "zh-CN": fmt.Sprintf(expectedf, "zh-CN", zhCN), + } + + elgrMulti = fmt.Sprintf("From the language: %s, translated output:\n%s=%s\n%s=%s", "el-GR", + "key1", + "αυτό είναι μια τιμή από το πρώτο αρχείο: locale_multi_first", + "key2", + "αυτό είναι μια τιμή από το δεύτερο αρχείο μετάφρασης: locale_multi_second") + enusMulti = fmt.Sprintf("From the language: %s, translated output:\n%s=%s\n%s=%s", "en-US", + "key1", + "this is a value from the first file: locale_multi_first", + "key2", + "this is a value from the second file: locale_multi_second") + ) + + e := httptest.New(t, app) + // default should be en-US. + e.GET("/").Expect().Status(httptest.StatusOK).Body().Equal(tests["en-US"]) + + for lang, body := range tests { + e.GET("/").WithQueryString("lang=" + lang).Expect().Status(httptest.StatusOK). + Body().Equal(body) + + // test lowercase. + e.GET("/").WithQueryString("lang=" + strings.ToLower(lang)).Expect().Status(httptest.StatusOK). + Body().Equal(body) + + // test first part (e.g. en instead of en-US). + langFirstPart := strings.Split(lang, "-")[0] + e.GET("/").WithQueryString("lang=" + langFirstPart).Expect().Status(httptest.StatusOK). + Body().Equal(body) + + // test accept-language header prefix (i18n wrapper). + e.GET("/"+lang).WithHeader("Accept-Language", lang).Expect().Status(httptest.StatusOK). + Body().Equal(body) + + // test path prefix (i18n router wrapper). + e.GET("/" + lang).Expect().Status(httptest.StatusOK). + Body().Equal(body) + + // test path prefix with first part. + e.GET("/" + langFirstPart).Expect().Status(httptest.StatusOK). + Body().Equal(body) + } + + e.GET("/other").WithQueryString("lang=el-GR").Expect().Status(httptest.StatusOK). + Body().Equal(elgrMulti) + e.GET("/other").WithQueryString("lang=en-US").Expect().Status(httptest.StatusOK). + Body().Equal(enusMulti) + + // test path prefix (i18n router wrapper). + e.GET("/el-gr/other").Expect().Status(httptest.StatusOK). + Body().Equal(elgrMulti) + e.GET("/en/other").Expect().Status(httptest.StatusOK). + Body().Equal(enusMulti) + + e.GET("/el-GRtemplates").Expect().Status(httptest.StatusNotFound) + e.GET("/el-templates").Expect().Status(httptest.StatusNotFound) + + e.GET("/el/templates").Expect().Status(httptest.StatusOK).Body().Contains(elGR).Contains(zhCN) +} diff --git a/i18n/views/index.html b/i18n/views/index.html new file mode 100644 index 00000000..32bc8a6b --- /dev/null +++ b/i18n/views/index.html @@ -0,0 +1,9 @@ +

Test translate current locale template function [dynamic] ("word", arguments...)
call .tr "hi" "iris"

+ +{{call .tr "hi" "iris"}} + +
+ +

Test translate of any language template function [static] ("language", "word", arguments...)
tr "zh-CN" "hi" "iris"

+ +{{tr "zh-CN" "hi" "iris"}} \ No newline at end of file diff --git a/miscellaneous/i18n/main.go b/miscellaneous/i18n/main.go deleted file mode 100644 index 15fdbb5f..00000000 --- a/miscellaneous/i18n/main.go +++ /dev/null @@ -1,94 +0,0 @@ -package main - -import ( - "github.com/kataras/iris/v12" - "github.com/kataras/iris/v12/middleware/i18n" -) - -func newApp() *iris.Application { - app := iris.New() - - globalLocale := i18n.New(i18n.Config{ - Default: "en-US", - URLParameter: "lang", - Languages: map[string]string{ - "en-US": "./locales/locale_en-US.ini", - "el-GR": "./locales/locale_el-GR.ini", - "zh-CN": "./locales/locale_zh-CN.ini", - }, - }) - app.Use(globalLocale) - - app.Get("/", func(ctx iris.Context) { - // it tries to find the language by: - // ctx.Values().GetString("language") - // if that was empty then - // it tries to find from the URLParameter set on the configuration - // if not found then - // it tries to find the language by the "language" cookie - // if didn't found then it it set to the Default set on the configuration - - // hi is the key, 'iris' is the %s on the .ini file - // the second parameter is optional - - // hi := ctx.Translate("hi", "iris") - // or: - hi := i18n.Translate(ctx, "hi", "iris") - - language := ctx.Values().GetString(ctx.Application().ConfigurationReadOnly().GetTranslateLanguageContextKey()) - // return is form of 'en-US' - - // The first succeed language found saved at the cookie with name ("language"), - // you can change that by changing the value of the: iris.TranslateLanguageContextKey - ctx.Writef("From the language %s translated output: %s", language, hi) - }) - - multiLocale := i18n.New(i18n.Config{ - Default: "en-US", - URLParameter: "lang", - Languages: map[string]string{ - "en-US": "./locales/locale_multi_first_en-US.ini, ./locales/locale_multi_second_en-US.ini", - "el-GR": "./locales/locale_multi_first_el-GR.ini, ./locales/locale_multi_second_el-GR.ini", - }, - }) - - app.Get("/multi", multiLocale, func(ctx iris.Context) { - language := ctx.Values().GetString(ctx.Application().ConfigurationReadOnly().GetTranslateLanguageContextKey()) - - fromFirstFileValue := i18n.Translate(ctx, "key1") - fromSecondFileValue := i18n.Translate(ctx, "key2") - ctx.Writef("From the language: %s, translated output:\n%s=%s\n%s=%s", - language, "key1", fromFirstFileValue, - "key2", fromSecondFileValue) - }) - - // using in inside your templates: - view := iris.HTML("./templates", ".html") - app.RegisterView(view) - - app.Get("/templates", func(ctx iris.Context) { - ctx.View("index.html", iris.Map{ - "tr": ctx.Translate, - }) - // it will return "hello, iris" - // when {{call .tr "hi" "iris"}} - }) - // - - return app -} - -func main() { - app := newApp() - - // go to http://localhost:8080/?lang=el-GR - // or http://localhost:8080 (default is en-US) - // or http://localhost:8080/?lang=zh-CN - // - // go to http://localhost:8080/multi?lang=el-GR - // or http://localhost:8080/multi (default is en-US) - // or http://localhost:8080/multi?lang=en-US - // - // or use cookies to set the language. - app.Run(iris.Addr(":8080")) -} diff --git a/miscellaneous/i18n/main_test.go b/miscellaneous/i18n/main_test.go deleted file mode 100644 index 5c9b9b4b..00000000 --- a/miscellaneous/i18n/main_test.go +++ /dev/null @@ -1,48 +0,0 @@ -package main - -import ( - "fmt" - "testing" - - "github.com/kataras/iris/v12/httptest" -) - -func TestI18n(t *testing.T) { - app := newApp() - - expectedf := "From the language %s translated output: %s" - var ( - elgr = fmt.Sprintf(expectedf, "el-GR", "γεια, iris") - enus = fmt.Sprintf(expectedf, "en-US", "hello, iris") - zhcn = fmt.Sprintf(expectedf, "zh-CN", "您好,iris") - - elgrMulti = fmt.Sprintf("From the language: %s, translated output:\n%s=%s\n%s=%s", "el-GR", - "key1", - "αυτό είναι μια τιμή από το πρώτο αρχείο: locale_multi_first", - "key2", - "αυτό είναι μια τιμή από το δεύτερο αρχείο μετάφρασης: locale_multi_second") - enusMulti = fmt.Sprintf("From the language: %s, translated output:\n%s=%s\n%s=%s", "en-US", - "key1", - "this is a value from the first file: locale_multi_first", - "key2", - "this is a value from the second file: locale_multi_second") - ) - - e := httptest.New(t, app) - // default is en-US - e.GET("/").Expect().Status(httptest.StatusOK).Body().Equal(enus) - // default is en-US if lang query unable to be found - e.GET("/").Expect().Status(httptest.StatusOK).Body().Equal(enus) - - e.GET("/").WithQueryString("lang=el-GR").Expect().Status(httptest.StatusOK). - Body().Equal(elgr) - e.GET("/").WithQueryString("lang=en-US").Expect().Status(httptest.StatusOK). - Body().Equal(enus) - e.GET("/").WithQueryString("lang=zh-CN").Expect().Status(httptest.StatusOK). - Body().Equal(zhcn) - - e.GET("/multi").WithQueryString("lang=el-GR").Expect().Status(httptest.StatusOK). - Body().Equal(elgrMulti) - e.GET("/multi").WithQueryString("lang=en-US").Expect().Status(httptest.StatusOK). - Body().Equal(enusMulti) -} diff --git a/miscellaneous/i18n/templates/index.html b/miscellaneous/i18n/templates/index.html deleted file mode 100644 index 7fc7cae8..00000000 --- a/miscellaneous/i18n/templates/index.html +++ /dev/null @@ -1 +0,0 @@ -{{call .tr "hi" "iris"}} \ No newline at end of file diff --git a/sitemap/main.go b/sitemap/main.go new file mode 100644 index 00000000..fc1d3261 --- /dev/null +++ b/sitemap/main.go @@ -0,0 +1,38 @@ +package main + +import ( + "time" + + "github.com/kataras/iris/v12" +) + +const startURL = "http://localhost:8080" + +func main() { + app := newApp() + + // http://localhost:8080/sitemap.xml + // Lists only online GET static routes. + // + // Reference: https://www.sitemaps.org/protocol.html + app.Run(iris.Addr(":8080"), iris.WithSitemap(startURL)) +} + +func newApp() *iris.Application { + app := iris.New() + app.Logger().SetLevel("debug") + + lastModified, _ := time.Parse("2006-01-02T15:04:05-07:00", "2019-12-13T21:50:33+02:00") + app.Get("/home", handler).SetLastMod(lastModified).SetChangeFreq("hourly").SetPriority(1) + app.Get("/articles", handler).SetChangeFreq("daily") + app.Get("/path1", handler) + app.Get("/path2", handler) + + app.Post("/this-should-not-be-listed", handler) + app.Get("/this/{myparam}/should/not/be/listed", handler) + app.Get("/this-should-not-be-listed-offline", handler).SetStatusOffline() + + return app +} + +func handler(ctx iris.Context) { ctx.WriteString(ctx.Path()) } diff --git a/sitemap/main_test.go b/sitemap/main_test.go new file mode 100644 index 00000000..432fc9a5 --- /dev/null +++ b/sitemap/main_test.go @@ -0,0 +1,18 @@ +package main + +import ( + "testing" + + "github.com/kataras/iris/v12" + "github.com/kataras/iris/v12/httptest" +) + +func TestSitemap(t *testing.T) { + const expectedFullSitemapXML = `http://localhost:8080/home2019-12-13T21:50:33+02:00hourly1http://localhost:8080/articlesdailyhttp://localhost:8080/path1http://localhost:8080/path2` + + app := newApp() + app.Configure(iris.WithSitemap(startURL)) + + e := httptest.New(t, app) + e.GET("/sitemap.xml").Expect().Status(httptest.StatusOK).Body().Equal(expectedFullSitemapXML) +} diff --git a/tutorial/url-shortener/go.mod b/tutorial/url-shortener/go.mod index 5abddc82..7131f514 100644 --- a/tutorial/url-shortener/go.mod +++ b/tutorial/url-shortener/go.mod @@ -3,17 +3,7 @@ module github.com/iris-contrib/examples/tutorial/url-shortener go 1.13 require ( - github.com/ajg/form v1.5.1 // indirect github.com/etcd-io/bbolt v1.3.3 - github.com/google/go-querystring v1.0.0 // indirect - github.com/imkira/go-interpol v1.1.0 // indirect github.com/iris-contrib/go.uuid v2.0.0+incompatible - github.com/kataras/iris/v12 v12.0.1 - github.com/moul/http2curl v1.0.0 // indirect - github.com/sergi/go-diff v1.0.0 // indirect - github.com/valyala/fasthttp v1.5.0 // indirect - github.com/xeipuuv/gojsonschema v1.2.0 // indirect - github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0 // indirect - github.com/yudai/gojsondiff v1.0.0 // indirect - github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 // indirect + github.com/kataras/iris/v12 v12.1.0 ) diff --git a/tutorial/url-shortener/go.sum b/tutorial/url-shortener/go.sum deleted file mode 100644 index 07009dbe..00000000 --- a/tutorial/url-shortener/go.sum +++ /dev/null @@ -1,158 +0,0 @@ -github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= -github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/CloudyKit/fastprinter v0.0.0-20170127035650-74b38d55f37a h1:3SgJcK9l5uPdBC/X17wanyJAMxM33+4ZhEIV96MIH8U= -github.com/CloudyKit/fastprinter v0.0.0-20170127035650-74b38d55f37a/go.mod h1:EFZQ978U7x8IRnstaskI3IysnWY5Ao3QgZUKOXlsAdw= -github.com/CloudyKit/jet v2.1.3-0.20180809161101-62edd43e4f88+incompatible h1:rZgFj+Gtf3NMi/U5FvCvhzaxzW/TaPYgUYx3bAPz9DE= -github.com/CloudyKit/jet v2.1.3-0.20180809161101-62edd43e4f88+incompatible/go.mod h1:HPYO+50pSWkPoj9Q/eq0aRGByCL6ScRlUmiEX5Zgm+w= -github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY= -github.com/Joker/jade v1.0.1-0.20190614124447-d475f43051e7 h1:mreN1m/5VJ/Zc3b4pzj9qU6D9SRQ6Vm+3KfI328t3S8= -github.com/Joker/jade v1.0.1-0.20190614124447-d475f43051e7/go.mod h1:6E6s8o2AE4KhCrqr6GRJjdC/gNfTdxkIXvuGZZda2VM= -github.com/Shopify/goreferrer v0.0.0-20181106222321-ec9c9a553398 h1:WDC6ySpJzbxGWFh4aMxFFC28wwGp5pEuoTtvA4q/qQ4= -github.com/Shopify/goreferrer v0.0.0-20181106222321-ec9c9a553398/go.mod h1:a1uqRtAwp2Xwc6WNPJEufxJ7fx3npB4UV/JOLmbu5I0= -github.com/ajg/form v1.5.1 h1:t9c7v8JUKu/XxOGBU0yjNpaMloxGEJhUkqFRq0ibGeU= -github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= -github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible h1:Ppm0npCCsmuR9oQaBtRuZcmILVE74aXE+AmrJj8L2ns= -github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g= -github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= -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/dgraph-io/badger v1.6.0/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4= -github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= -github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385 h1:clC1lXBpe2kTj2VHdaIu9ajZQe4kcEY9j0NsnDDBZ3o= -github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385/go.mod h1:0vRUJqYpeSZifjYj7uP3BG/gKcuzL9xWVV/Y+cK33KM= -github.com/etcd-io/bbolt v1.3.3 h1:gSJmxrs37LgTqR/oyJBWok6k6SvXEUerFTbltIhXkBM= -github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= -github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo= -github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= -github.com/flosch/pongo2 v0.0.0-20190707114632-bbf5a6c351f4 h1:GY1+t5Dr9OKADM64SYnQjw/w99HMYvQ0A8/JoUkxVmc= -github.com/flosch/pongo2 v0.0.0-20190707114632-bbf5a6c351f4/go.mod h1:T9YF2M40nIgbVgp3rreNmTged+9HrbNTIQf1PsaIiTA= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/gavv/httpexpect v2.0.0+incompatible h1:1X9kcRshkSKEjNJJxX9Y9mQ5BRfbxU5kORdjhlA1yX8= -github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc= -github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98= -github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= -github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= -github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/gomodule/redigo v1.7.1-0.20190724094224-574c33c3df38/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= -github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk= -github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= -github.com/gorilla/websocket v1.4.0 h1:WDFjx/TMzVgy9VdMMQi2K2Emtwi2QcUQsztZ/zLaH/Q= -github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/imkira/go-interpol v1.1.0 h1:KIiKr0VSG2CUW1hl1jpiyuzuJeKUUpC8iM1AIE7N1Vk= -github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/iris-contrib/blackfriday v2.0.0+incompatible h1:o5sHQHHm0ToHUlAJSTjW9UWicjJSDDauOOQ2AHuIVp4= -github.com/iris-contrib/blackfriday v2.0.0+incompatible/go.mod h1:UzZ2bDEoaSGPbkg6SAB4att1aAwTmVIx/5gCVqeyUdI= -github.com/iris-contrib/go.uuid v2.0.0+incompatible h1:XZubAYg61/JwnJNbZilGjf3b3pB80+OQg2qf6c8BfWE= -github.com/iris-contrib/go.uuid v2.0.0+incompatible/go.mod h1:iz2lgM/1UnEf1kP0L/+fafWORmlnuysV2EMP8MW+qe0= -github.com/iris-contrib/i18n v0.0.0-20171121225848-987a633949d0/go.mod h1:pMCz62A0xJL6I+umB2YTlFRwWXaDFA0jy+5HzGiJjqI= -github.com/iris-contrib/schema v0.0.1 h1:10g/WnoRR+U+XXHWKBHeNy/+tZmM2kcAVGLOsz+yaDA= -github.com/iris-contrib/schema v0.0.1/go.mod h1:urYA3uvUNG1TIIjOSCzHr9/LmbQo8LrOcOqfqxa4hXw= -github.com/json-iterator/go v1.1.6 h1:MrUvLMLTMxbqFJ9kzlvat/rYZqZnW3u4wkLzWTaFwKs= -github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/juju/errors v0.0.0-20181118221551-089d3ea4e4d5 h1:rhqTjzJlm7EbkELJDKMTU7udov+Se0xZkWmugr6zGok= -github.com/juju/errors v0.0.0-20181118221551-089d3ea4e4d5/go.mod h1:W54LbzXuIE0boCoNJfwqpmkKJ1O4TCTZMetAt6jGk7Q= -github.com/juju/loggo v0.0.0-20180524022052-584905176618/go.mod h1:vgyd7OREkbtVEN/8IXZe5Ooef3LQePvuBm9UWj6ZL8U= -github.com/juju/testing v0.0.0-20180920084828-472a3e8b2073/go.mod h1:63prj8cnj0tU0S9OHjGJn+b1h0ZghCndfnbQolrYTwA= -github.com/kataras/golog v0.0.9 h1:J7Dl82843nbKQDrQM/abbNJZvQjS6PfmkkffhOTXEpM= -github.com/kataras/golog v0.0.9/go.mod h1:12HJgwBIZFNGL0EJnMRhmvGA0PQGx8VFwrZtM4CqbAk= -github.com/kataras/iris v11.1.1+incompatible h1:c2iRKvKLpTYMXKdVB8YP/+A67NtZFt9kFFy+ZwBhWD0= -github.com/kataras/iris/v12 v12.0.1 h1:Wo5S7GMWv5OAzJmvFTvss/C4TS1W0uo6LkDlSymT4rM= -github.com/kataras/iris/v12 v12.0.1/go.mod h1:udK4vLQKkdDqMGJJVd/msuMtN6hpYJhg/lSzuxjhO+U= -github.com/kataras/neffos v0.0.10/go.mod h1:ZYmJC07hQPW67eKuzlfY7SO3bC0mw83A3j6im82hfqw= -github.com/kataras/pio v0.0.0-20190103105442-ea782b38602d h1:V5Rs9ztEWdp58oayPq/ulmlqJJZeJP6pP79uP3qjcao= -github.com/kataras/pio v0.0.0-20190103105442-ea782b38602d/go.mod h1:NV88laa9UiiDuX9AhMbDPkGYSPugBOV6yTZB1l2K9Z0= -github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/compress v1.9.0 h1:GhthINjveNZAdFUD8QoQYfjxnOONZgztK/Yr6M23UTY= -github.com/klauspost/compress v1.9.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= -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/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= -github.com/mediocregopher/mediocre-go-lib v0.0.0-20181029021733-cb65787f37ed/go.mod h1:dSsfyI2zABAdhcbvkXqgxOxrCsbYeHCPgrZkku60dSg= -github.com/mediocregopher/radix/v3 v3.3.0/go.mod h1:EmfVyvspXz1uZEyPBMyGK+kjWiKQGvsUt6O3Pj+LDCQ= -github.com/microcosm-cc/bluemonday v1.0.2 h1:5lPfLTTAvAbtS0VqT+94yOtFnGfUWYyx0+iToC3Os3s= -github.com/microcosm-cc/bluemonday v1.0.2/go.mod h1:iVP4YcDBq+n/5fb23BhYFvIMq/leAFZyRl6bYmGDlGc= -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/moul/http2curl v1.0.0 h1:dRMWoAtb+ePxMlLkrCbAqh4TlPHXvoGUSQ323/9Zahs= -github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ= -github.com/nats-io/nats.go v1.8.1/go.mod h1:BrFz9vVn0fU3AcH9Vn4Kd7W0NpJ651tD5omQ3M8LwxM= -github.com/nats-io/nkeys v0.0.2/go.mod h1:dab7URMsZm6Z/jp9Z5UGa87Uutgc2mVpXLC4B7TDb/4= -github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= -github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pkg/errors v0.8.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/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= -github.com/ryanuber/columnize v2.1.0+incompatible h1:j1Wcmh8OrK4Q7GXY+V7SVSY8nUWQxHW5TkBe7YUl+2s= -github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ= -github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= -github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= -github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= -github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasthttp v1.5.0 h1:dhq+O9pmNZFF6qAXpasMO1xSm7dL4qEz2ylfZN8BG9w= -github.com/valyala/fasthttp v1.5.0/go.mod h1:eriCz9OhZjKCGfJ185a/IDgNl0bg9IbzfpcslMZXU1c= -github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= -github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c= -github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= -github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= -github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= -github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= -github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= -github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= -github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0 h1:6fRhSjgLCkTD3JnJxvaJ4Sj+TYblw757bqYgZaOq5ZY= -github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0/go.mod h1:/LWChgwKmvncFJFHJ7Gvn9wZArjbV5/FppcK2fKk/tI= -github.com/yudai/gojsondiff v1.0.0 h1:27cbfqXLVEJ1o8I6v3y9lg8Ydm53EKqHXAOMxEGlCOA= -github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg= -github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 h1:BHyfKlQyqbsFN5p3IfnEUduWvb9is428/nNb5L3U01M= -github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM= -golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 h1:VklqNMn3ovrHsnt90PveolxSbWFaJdECFbxSq0Mqo2M= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/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-20190327091125-710a502c58a2/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859 h1:R/3boaszxrf1GEUWTVDzSKVwLmSJpwZ1yqXm8j0v2QI= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297 h1:k7pJ2yAPLPgbskkFdhRCsA77k2fySZ1zf2zCjvQCiIM= -golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/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-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/tools v0.0.0-20181221001348-537d06c36207/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190327201419-c70d86f8b7cf/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= -gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=