Removed go-bindata-assetfs and replaced with statik

This commit is contained in:
Nicholas Thompson authored and ncthompson committed 2019-03-13 00:18:20 +02:00
1 parent 790b05f90f
commit 206159cdea
13 files changed
+38 -391

No files matched your search

+4 -1
View File
@@ -26,7 +26,7 @@
#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.
.PHONY: test install gofmt docker
.PHONY: test install gofmt docker statik
build:
go build ./cmd/invertergui/
@@ -48,3 +48,6 @@ vet:
docker:
docker build --tag invertergui .
statik:
statik -p=frontend -src=./frontend/root
+1 -6
View File
@@ -16,12 +16,7 @@ func main() {
mk2 := NewMk2Mock()
gui := webgui.NewWebGui(mk2)
rootFs := http.FileServer(frontend.BinaryFileSystem("root"))
http.Handle("/", rootFs)
jsFs := http.FileServer(frontend.BinaryFileSystem("js"))
http.Handle("/js/", http.StripPrefix("/js", jsFs))
cssFs := http.FileServer(frontend.BinaryFileSystem("css"))
http.Handle("/css/", http.StripPrefix("/css", cssFs))
http.Handle("/", frontend.NewStatic())
http.Handle("/ws", http.HandlerFunc(gui.ServeHub))
http.Handle("/munin", http.HandlerFunc(gui.ServeMuninHTTP))
+1 -7
View File
@@ -83,13 +83,7 @@ func main() {
gui := webgui.NewWebGui(mk2)
rootFs := http.FileServer(frontend.BinaryFileSystem("root"))
http.Handle("/", rootFs)
jsFs := http.FileServer(frontend.BinaryFileSystem("js"))
http.Handle("/js/", http.StripPrefix("/js", jsFs))
cssFs := http.FileServer(frontend.BinaryFileSystem("css"))
http.Handle("/css/", http.StripPrefix("/css", cssFs))
http.Handle("/", frontend.NewStatic())
http.Handle("/ws", http.HandlerFunc(gui.ServeHub))
http.Handle("/munin", http.HandlerFunc(gui.ServeMuninHTTP))
http.Handle("/muninconfig", http.HandlerFunc(gui.ServeMuninConfigHTTP))
+15 -28
View File
@@ -1,39 +1,26 @@
package frontend
import (
"net/http"
"strings"
"github.com/rakyll/statik/fs"
assetfs "github.com/elazarl/go-bindata-assetfs"
"log"
"net/http"
)
type binaryFileSystem struct {
fs http.FileSystem
type static struct {
http.FileSystem
}
func (b *binaryFileSystem) Open(name string) (http.File, error) {
return b.fs.Open(name)
}
func (b *binaryFileSystem) Exists(prefix string, filepath string) bool {
if p := strings.TrimPrefix(filepath, prefix); len(p) < len(filepath) {
if _, err := b.fs.Open(p); err != nil {
return false
func NewStatic() http.Handler {
statikFs, err := fs.New()
if err != nil {
log.Fatal(err)
}
return true
}
return false
}
func BinaryFileSystem(root string) *binaryFileSystem {
fs := &assetfs.AssetFS{
Asset: Asset,
AssetDir: AssetDir,
AssetInfo: AssetInfo,
Prefix: root,
}
return &binaryFileSystem{
fs,
return &static{
FileSystem: statikFs,
}
}
func (s *static) ServeHTTP(w http.ResponseWriter, r *http.Request) {
http.FileServer(s).ServeHTTP(w, r)
}
-344
View File
@@ -1,344 +0,0 @@
// Code generated by go-bindata.
// sources:
// css/bootstrap.min.css
// css/bootstrap.min.css.map
// js/controller.js
// js/vue.js
// root/index.html
// DO NOT EDIT!
package frontend
import (
"bytes"
"compress/gzip"
"fmt"
"github.com/elazarl/go-bindata-assetfs"
"io"
"io/ioutil"
"os"
"path/filepath"
"strings"
"time"
)
func bindataRead(data []byte, name string) ([]byte, error) {
gz, err := gzip.NewReader(bytes.NewBuffer(data))
if err != nil {
return nil, fmt.Errorf("Read %q: %v", name, err)
}
var buf bytes.Buffer
_, err = io.Copy(&buf, gz)
clErr := gz.Close()
if err != nil {
return nil, fmt.Errorf("Read %q: %v", name, err)
}
if clErr != nil {
return nil, err
}
return buf.Bytes(), nil
}
type asset struct {
bytes []byte
info os.FileInfo
}
type bindataFileInfo struct {
name string
size int64
mode os.FileMode
modTime time.Time
}
func (fi bindataFileInfo) Name() string {
return fi.name
}
func (fi bindataFileInfo) Size() int64 {
return fi.size
}
func (fi bindataFileInfo) Mode() os.FileMode {
return fi.mode
}
func (fi bindataFileInfo) ModTime() time.Time {
return fi.modTime
}
func (fi bindataFileInfo) IsDir() bool {
return false
}
func (fi bindataFileInfo) Sys() interface{} {
return nil
}
var _cssBootstrapMinCss = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\x6b\x6f\xe4\x38\x92\x28\xfa\x7d\x7f\x85\xd6\x8d\x42\x95\xa7\x53\x59\x52\x3e\x9d\x69\x54\xdf\x99\xe9\x9d\xc1\x2e\x30\xbd\xb8\xd8\x39\x07\x38\x40\x9f\x3e\x80\x32\xc5\xcc\xd4\x94\x5e\x47\x92\x6d\xb9\x0d\xdf\xdf\x7e\xc1\x97\xc4\x47\x90\xa2\xd2\x69\xbb\x0a\x3b\x5b\xb3\x5d\x95\x54\x30\x22\x18\x0c\x86\x22\x82\x54\xf0\xf3\x1f\xfe\xf5\x5f\xbc\x3f\x78\x7f\x2e\x8a\xa6\x7e\x88\x9a\xfd\xc9\xbb\x5f\x4c\xe7\xd3\x10\x37\xfe\x7b\x91\xa1\x32\x3a\xa2\xad\x77\x6a\x9a\xb2\xde\x7e\xfe\xbc\xeb\xc0\xa6\xfb\x22\xc3\x30\x3f\x17\xe5\x63\x95\x1c\x4f\x8d\x37\x0b\xc2\x99\x3f\x0b\xc2\x8d\xf7\x3f\x4e\x45\x16\xd5\xde\xff\x1b\x55\x5f\x31\xc8\xdf\x92\x3d\xca\x6b\x14\x7b\x77\x79\x8c\x2a\xef\x97\xff\xf8\x1f\x84\x62\x84\x9b\x8a\x9c\x92\x6e\xaa\xa8\xfc\x97\x3f\x7c\x16\xb9\xc1\x4d\x8c\x19\xef\x13\x67\xe0\x88\x9a\x1d\x7f\x88\x59\xf8\x7c\xad\x31\x11\x72\x26\x90\x80\xe7\x4f\x77\xcd\xa9\xa8\x6a\x23\xf0\x43\xd2\x34\xa8\x9a\x78\xff\x91\xef\xa7\x30\xcf\x02\x0f\x49\x73\xba\xdb\x11\xea\xcd\xc3\xae\xfe\xdc\x31\xf4\x79\x97\x16\xbb\xcf\x59\x54\x37\xa8\xfa\xfc\xb7\xff\xf8\xf9\x2f\xff\xf9\xf7\xbf\x60\xfe\x3e\xff\x31\xc9\xca\xa2\x6a\xbc\xbb\x2a\xfd\x74\xc5\xd1\x1c\x8a\xbc\xa9\xa7\xc7\xa2\x38\xa6\x28\x2a\x93\x9a\x20\xdc\xd7\xf5\xff\x73\x88\xb2\x24\x7d\xfc\xf2\xb7\xa8\x29\xb6\x8b\x20\x98\xac\x83\x60\xb2\x08\x82\xa4\x89\xd2\x64\x7f\x75\x7d\xbb\xad\x8a\xa2\x79\xf2\xfd\x5d\x7a\x87\xb6\xde\x0f\xf3\xf5\x32\x5a\x1f\x6e\x7d\x3f\xc9\xe3\xe4\x58\x6c\xbd\x1f\x56\xab\x30\x38\xcc\x6e\x7d\xbf\xbc\xab\xca\x14\xc3\xac\x0e\x8b\xd9\x3e\xc4\x2d\x49\xfe\x75\xeb\xfd\x80\x6e\xe6\xe8\x66\x7f\xeb\xfb\x15\x8a\xb7\xde\x0f\x7f\x59\x2f\x7e\x9e\xff\x7c\xeb\xfb\x45\x15\xe5\x78\xbe\x7f\x38\xc4\x6b\x14\x2e\x6e\x7d\xff\x11\xa5\x69\xf1\xb0\xf5\x7e\xf8\xeb\x7c\xf3\x73\x88\x91\x1e\x2b\x84\xf2\xad\xf7\x43\x10\xec\xf6\x04\x47\x83\xa2\x74\xeb\xfd\x30\x0b\xf6\x9b\xcd\xfa\xd6\xf7\xf7\x8f\x11\x7e\x3e\x5f\x6c\x6e\xfe\xed\xcf\xb7\xbe\xff\x70\x4a\x1a\x82\xf3\x70\x20\xdd\xa3\xc7\xad\xf7\xc3\x66\xb3\x61\x3f\xfc\x38\xaa\x30\x4f\xf3\x00\xff\xc1\x3c\x56\x49\x16\x55\x8f\xe2\xd0\x6a\xb4\x2f\xf2\x98\x36\x2e\x16\x98\xaf\xfa\x6e\xbf\x47\x75\x2d\xf2\x91\xe4\x87\x42\xa2\x1b\x55\x79\x92\x1f\x45\xde\x63\x3c\xbc\x4a\x1c\x71\x8a\x35\x41\xa4\xce\xb8\x89\xe2\xdd\x72\x17\xdf\xfa\xfe\xae\x42\xd1\xd7\xb2\x48\xf2\xc6\x6f\xeb\xad\x17\xc8\x4d\x75\xb6\xf5\x96\xeb\x55\xd9\xca\xcd\x59\xbc\xf5\xd6\xab\x1b\xb5\x39\x3d\x6e\xbd\xcd\x66\xa6\x36\xb7\xe9\xd6\x0b\x67\x41\x40\xda\xb1\x5a\xf8\x54\x05\xfc\x3a\xca\x6b\xbf\x46\x55\x72\xd8\x7a\x57\x58\x1f\xae\x26\x9e\x1f\x95\x65\x8a\xfc\xfa\xb1\x6e\x50\x36\xf1\xfe\x9c\x26\xf9\xd7\x5f\xa2\xfd\xdf\xc9\xef\xbf\x16\x79\x33\xf1\xae\xfe\x8e\x8e\x05\xf2\xfe\xe7\x7f\x5c\x4d\xbc\xff\x2a\x76\x45\x53\x4c\xbc\xab\x7f\x47\xe9\x3d\x6a\x92\x7d\xe4\xfd\x27\xba\x43\x57\x13\xef\x4f\x55\x12\xa5\x13\xaf\xa7\x31\xf1\xae\xfe\x84\x71\x7b\x3f\x17\x69\x51\x79\x7f\xc9\x8a\x7f\x24\x57\x02\x36\xa0\xe5\xef\x8f\xd9\xae\x48\xaf\x14\xb6\xb3\x22\x2f\xea\x32\xda\xa3\xad\xf7\xf7\xbf\xfe\x52\xe4\x85\xff\x5f\xe8\x78\x97\x46\xd5\xc4\xfb\x05\xe5\x69\x31\xf1\x7e\x29\xf2\x68\x5f\x4c\xbc\x9f\x8b\xbc\x2e\xd2\xa8\x9e\x78\x57\x7f\x4b\x76\xa8\x8a\x9a\xa4\xc8\xf1\x53\x3c\xd2\xab\x9f\x8b\xbb\x2a\x41\x95\xf7\x9f\xe8\xe1\x6a\xe2\x75\x58\x9f\xff\x30\xf9\xc3\x76\xbb\x43\x87\xa2\x42\xf8\x5f\xd1\xa1\x41\xd5\x93\xff\x80\x76\x5f\x93\xc6\xdf\x15\xad\x5f\x27\xbf\xe3\x89\xdf\x15\x55\x8c\x2a\xdc\x72\x0b\xb6\x3e\x9f\x9a\x2c\x7d\x12\x38\xdf\xf6\xc2\xb8\x4d\x93\x1c\xf9\x27\x44\xd4\x23\x9c\x86\xcb\x5b\x4e\xa0\x41\x6d\x83\x71\x21\x3f\x8a\xff\x71\x57\x37\xdb\x30\x08\x3e\xf4\x4f\xa3\xd2\x3f\x25\xc7\x13\xd1\x2b\x7f\x8f\x25\xb9\xad\x8e\xbb\xe8\x53\x30\x21\x7f\xae\x9f\xa3\xaa\x49\xf6\x29\x9a\x44\x75\x12\xa3\xc9\x21\x39\xee\xa3\x12\x0f\x1b\xff\xf3\xae\x42\x93\x43\x51\x60\x53\x74\x42\x51\x8c\xff\x3a\x56\xc5\x5d\x39\xc9\xa2\x24\x9f\xe4\xd1\xfd\xa4\x46\x7b\x0c\xfc\x14\x27\x75\x99\x46\x8f\xdb\x5d\x5a\xec\xbf\x3e\xef\x8a\xf8\xf1\x29\x8b\xaa\x63\x92\x6f\x83\x5b\x71\x44\xdf\xb4\xda\x10\x46\xb1\x28\xb7\xc1\x74\x33\x5f\x2f\x2b\x94\xd1\xb6\x07\x2a\xf7\x45\x10\x28\xf3\xb0\xbc\xa5\x22\x25\xc6\x84\xcc\x44\x94\x26\xc7\x7c\x9b\xa2\x43\x73\xbb\x8b\xf6\x5f\xb1\xb8\xf2\x98\x09\xfe\x87\xd9\x6c\xf6\xfc\x6b\x13\xed\x92\x3c\x46\xed\x97\x2b\x3f\xbc\xfa\x6d\x7b\x28\xf6\x77\xf5\x53\x71\xd7\x60\xcc\xdb\xc0\xfb\x57\x6a\x9c\xa3\xbc\x79\x3e\x81\x6a\xb4\x2f\xf2\x06\xe5\x8d\xaa\x47\x62\x33\xe3\x2f\xb8\x2d\xee\x51\x75\xc0\x06\xf3\x3e\xa9\x93\x5d\x8a\x9e\x4f\xe1\xe4\x34\x9b\x9c\xe6\x93\xd3\x62\x72\x5a\x4e\x4e\x2b\x36\x4d\x7e\x53\x94\xdb\xe0\x96\xfd\xd8\x15\x4d\x53\x64\xdb\x60\x8a\x45\xf0\x5c\xda\x60\x42\x0c\x11\xed\x76\xd5\xaf\x4d\xd2\xa4\xe8\xb7\x09\xf9\x77\x1c\x35\x91\x5f\x54\xc9\x31\xc9\xa3\xd4\xa7\x4f\x9e\x88\x7c\x62\xb4\x2f\xe8\xba\xda\x92\x77\x19\x1e\xb5\xac\xcb\x10\x84\x17\x17\x4d\x83\xe2\xdb\x41\x80\xfd\x5d\x55\x17\xd5\xf6\x84\xd2\xf2\xb6\x5b\x59\x74\x30\x6a\x67\xbf\xfe\x9a\x94\x3e\x7e\x01\xe5\x45\x8e\x9e\xa3\x38\xae\x50\x5d\x3f\xe9\xc3\x63\x7a\xd1\x3c\xa6\x68\x9b\x17\x55\x16\xa5\x92\x16\x24\xf9\x09\x55\x49\Line truncated
func cssBootstrapMinCssBytes() ([]byte, error) {
return bindataRead(
_cssBootstrapMinCss,
"css/bootstrap.min.css",
)
}
func cssBootstrapMinCss() (*asset, error) {
bytes, err := cssBootstrapMinCssBytes()
if err != nil {
return nil, err
}
info := bindataFileInfo{name: "css/bootstrap.min.css", size: 180041, mode: os.FileMode(511), modTime: time.Unix(1551299121, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
var _cssBootstrapMinCssMap = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x7a\x79\x73\xa3\x5a\x96\xe7\xff\xfd\x29\x18\x57\x4c\x57\x55\xe8\x39\xd9\x25\x91\xe9\xcc\x68\xf6\x1d\x09\x24\x40\xf0\x1f\x9b\xe0\xb2\x8b\x45\x80\x5e\xd4\x77\x9f\x90\x6c\xa7\xfd\xaa\xfb\xf5\xeb\xa8\xe9\x98\x89\xe8\x28\x65\xda\xe2\x9e\x7b\xcf\xef\xec\xf7\x1c\x85\xfc\xf2\xbf\xb8\x1d\x7b\xf4\xf6\x3c\x94\x0d\x55\xf9\xe3\x5f\x5e\x5e\xdf\x20\xe8\x25\x4b\x82\xf8\xfe\x00\x41\x2f\x55\x32\x04\x50\x36\x0c\xed\x73\x72\x19\xc1\xf5\xfb\x13\xdb\xd4\x43\x52\x0f\xcf\xc3\xd2\x26\x4f\x50\xf4\xba\xfa\xfe\x34\x24\xf3\x00\xdf\x01\xbe\x41\x51\x16\x74\x7d\x32\x7c\x1f\x87\xf3\xf3\xf6\xe9\x8f\x70\x0e\x49\x34\x76\x60\x58\x9e\xf7\x4d\x09\xa2\xe5\x13\x64\x9c\x9c\x83\xb1\x1c\x9e\xfb\x2e\x82\xfe\x5c\x37\x75\xf2\xe7\x6f\x50\x3f\x2c\x65\xf2\x4a\x19\xeb\x3e\x38\x27\xcf\xa0\x2e\xc1\x63\x0b\x54\xe9\x63\x23\x0e\x86\xe0\xeb\xb7\x3b\x4c\x9d\x44\x6f\xdc\x7d\x52\x9e\xff\xfc\xae\xca\x00\x86\x32\xf9\xb1\x0f\xd2\x04\xaa\x9b\x01\x3a\x37\x63\x1d\x43\xff\x5a\x81\x38\x6e\x86\x6f\x90\x08\x06\x69\x0c\xa1\xfb\x76\xff\x02\xbf\x9e\x7d\xe5\x7b\xc8\x86\xee\x76\xbf\x99\x1b\xf5\xfd\x13\x54\x25\x31\x08\xbe\x3f\xf5\x51\x97\x24\xf5\x9b\x08\x08\x0a\x9b\x78\x81\x7e\x7d\x5b\x40\x50\x18\x44\x45\xda\xdd\x05\x3d\x47\x4d\xd9\x74\x5f\xa1\x3f\x9d\xd1\xfb\xbf\x6f\x3f\x8f\x54\x41\x97\x82\xfa\x2b\x84\x7c\x90\xce\x4d\x3d\x3c\x9f\x83\x0a\x94\xcb\x57\xe8\x49\x4a\xca\x6b\x32\x80\x28\x80\x8c\x64\x4c\x9e\x7e\x81\x7e\x12\x7e\x81\xe8\x0e\x04\xe5\x2f\x50\x1f\xd4\xfd\x73\x9f\x74\xe0\xfc\x0e\xf2\xb7\x7f\x79\x7b\xf8\x72\x77\x6b\x00\xea\xa4\x83\x7e\xfd\x29\x8b\x44\xda\x19\x0a\xc6\xa1\x81\x88\xf7\xa7\x6f\xd0\x04\xe2\x21\xfb\x0a\xad\x11\xa4\x9d\xbf\x41\x77\x43\x9f\x83\x12\xa4\xf5\x57\x28\x4a\xea\x21\xe9\xbe\x7d\x80\x06\xd0\xaf\xd0\xbb\x3d\x04\xba\xc5\x23\xe2\x8d\x21\x4e\xa2\xa6\x0b\x06\xd0\xd4\x5f\xa1\x7b\xe4\xee\x3c\x6f\x2c\x5f\xb3\xe6\xfa\x50\xe2\xdf\x1d\x1c\xeb\x38\xe9\xee\xc1\xfc\x24\x21\x43\xa1\x5f\xdf\x35\xda\xbe\x6a\xd4\x36\x3d\x78\x30\x74\x49\x19\x0c\xe0\x9a\x7c\x83\xca\xe4\x3c\x7c\x85\x9e\xd1\xd7\x03\x65\x32\x0c\x49\xf7\xdc\xb7\x41\x04\xea\xf4\x4e\x7f\x50\x41\x9d\x3c\x67\x09\x48\xb3\xe1\x6e\xdc\x9d\xf4\xf0\x6f\x0f\x6e\xc9\x6f\x08\xd3\xdb\x19\x14\x41\xbe\x7d\x44\xa5\x9d\x21\xe4\xd5\x5f\xc8\x9b\x8d\x7d\x16\xc4\xcd\xf4\x15\x42\x20\xf4\xb1\xf9\xa7\xf3\xf9\xfc\x61\x67\xfb\xe1\x9a\x2e\x0d\x83\xbf\x20\xbf\x40\x6f\xff\xbf\x90\x7f\xfd\xc0\xc5\xde\x10\x7f\xa3\x1d\xfa\x65\xfd\xc9\x05\x63\x09\xfd\x0a\x95\xa0\x1f\x9e\x1f\x09\xf8\xee\xd0\x9f\x08\xe4\x2b\x42\x1b\xc4\xf1\xc3\x5c\xe4\x43\x89\x12\x40\xbf\x42\x31\xe8\xdb\x32\x58\xbe\x42\x43\x10\x96\xc9\x73\x94\x94\xe5\xdf\x59\x1a\x36\x65\xfc\x33\xee\xe8\xff\xfe\x24\xfb\x4b\xd9\xa4\xcd\x67\x8c\xd7\x6a\x7b\x0e\xcb\x26\x2a\xde\x75\x78\x1e\x9a\xf6\x2b\x84\x93\x77\x0f\xfe\xed\x33\xe3\xf3\xbd\x24\xb1\xf9\x33\xff\x6f\x93\xe1\xdf\x1e\xc5\xf3\xb6\x68\xea\x72\x81\x5e\xcb\x08\x0a\xea\x18\xfa\xcb\xf3\x94\x84\x05\x18\x9e\x2b\x50\x3f\xc7\xc9\x15\x44\xc9\x73\x0b\xe6\xa4\x7c\x7e\x24\xcc\x57\x08\xfb\xeb\x2f\xbf\xc7\x7a\xaf\x27\x50\x3f\x3f\x57\xcd\xed\x1f\x60\x85\xa0\xe7\xe6\xf7\xa5\xc2\xe8\x1f\x30\xbf\x09\xff\x47\xe4\x7e\x7a\xdd\x21\xba\xa4\x6f\xca\xf1\xb5\x3a\x50\x0a\x8b\x5b\xf0\x8f\xf3\x63\x71\xdb\xce\x7f\xfd\x74\x27\x7d\x84\x08\xfd\x4f\x42\xf4\xfb\xa1\xfc\x6d\x2a\xfc\xed\xef\x2f\x9c\x3f\xf5\x63\x9a\x26\xfd\x5d\x78\xff\x49\xea\xbf\x4b\x99\x9f\x3b\xef\x17\x49\x14\x45\x1f\xb7\xd7\x7f\x80\x15\x7c\x42\x7b\xe7\x59\x3f\x5e\x7f\x77\x73\xbe\xa7\x37\x86\xfc\xfd\x9d\xfa\x5a\xf3\x28\xf1\x59\xfc\xcf\x4a\x87\x50\xe4\x83\xfe\x66\xce\x0b\xfc\xa8\xbd\x47\x73\x84\xdf\xbb\xe3\xcb\xfd\x92\xff\xf1\x76\x20\x06\x57\x28\x2a\x83\xbe\xff\xfe\xf4\xf3\xa6\x7d\xfa\xf1\xee\x8c\x97\x0c\xfd\x41\x20\xc4\x0b\x9c\xa1\xef\x1d\xe2\xa5\xfd\xf1\xd2\x0f\x5d\x53\xa7\x3f\x04\x50\x7e\x6a\x45\x77\x59\x0f\xf2\x0b\xdc\x7e\x00\xb4\x3f\x7e\x6a\x7a\xcc\x12\xa8\x07\x43\x72\x6f\x71\x67\x90\x8e\x5d\x12\x43\xc1\x00\x0d\x19\xe8\xa1\x20\x8e\xbb\xa4\xef\xa1\xb8\x49\xfa\x3b\xe4\x27\x4f\x3d\x94\x82\x86\x2c\x81\xba\xe4\x32\x26\xfd\x90\xc4\xd0\x19\x94\xc9\x97\x77\x11\xbf\x23\x4e\x3e\xbf\x42\x83\x1e\x5a\x9a\xb1\x7b\x88\xfe\x05\xaa\x82\x22\x81\xfa\xb1\x4b\xa0\x21\x7b\x08\x4f\x1e\x60\x75\x50\x25\x50\x14\xf4\x09\x54\x05\x43\x94\x25\xfd\x63\xc7\xb6\xb4\x2f\x2f\x61\xf7\x81\x29\x34\x1d\xd4\x35\xcd\x70\xdf\xe9\xa1\xbf\x94\xa0\x48\xa0\x97\xa8\x89\x93\x1f\xf7\x11\xe1\x2b\x0c\x27\x73\x50\xb5\x65\xf2\x25\x6a\x2a\xf8\x05\x7e\xec\xfc\xf5\x2e\x1e\xaa\xc6\x7e\x80\xda\xae\xb9\x82\x38\x81\x82\xfa\x27\xe2\x2b\x37\xa8\xe3\x64\xfe\x72\x1f\x43\xde\x98\xfe\x4b\x16\xbe\x04\x50\xd6\x25\xe7\xef\x4f\x77\xe1\xfd\x57\x18\xce\x92\xb2\xfd\x92\x82\x21\x1b\xc3\x87\x06\xed\x7d\x18\x80\x9f\x7e\x58\x49\x10\xbf\x9a\x3a\x96\x25\x14\x37\xd1\x58\x25\xf5\xf0\x68\x5f\x2f\x70\xf0\xe3\x53\x92\x75\x50\xd5\x74\x09\x04\xea\x73\xd3\x55\x8f\x03\x50\x10\x36\xe3\x00\x8d\x3d\xa8\x53\xe8\x3d\xf2\xbf\x1d\x36\xde\x88\xff\xa1\xba\xf7\xfc\x02\xf1\xf7\xa7\x4f\x95\xf0\xf4\x9f\x58\xf0\xaa\x7c\x3f\x04\xc3\xd8\xdf\x4d\x78\x7a\x17\x75\x78\x90\xee\xda\x42\xff\x5a\xc5\x41\x9f\x7d\xfb\x7d\x90\x61\x02\xf7\x4e\xLine truncated
func cssBootstrapMinCssMapBytes() ([]byte, error) {
return bindataRead(
_cssBootstrapMinCssMap,
"css/bootstrap.min.css.map",
)
}
func cssBootstrapMinCssMap() (*asset, error) {
bytes, err := cssBootstrapMinCssMapBytes()
if err != nil {
return nil, err
}
info := bindataFileInfo{name: "css/bootstrap.min.css.map", size: 9339, mode: os.FileMode(511), modTime: time.Unix(1551299129, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
var _jsControllerJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x54\x4b\x8b\xdb\x30\x10\xbe\xe7\x57\x0c\xea\xc5\x61\xb7\x4e\xcf\xc9\x66\x2f\x4b\xa1\x94\x3e\x0e\x5b\x5a\x4a\x29\x41\xb6\x27\x59\xb3\x8a\x46\x95\xe4\x98\xa5\xf8\xbf\x17\xcb\x6f\x49\x59\xe8\xd1\xdf\x63\x1e\x66\xf4\x1d\x2b\x99\xdb\x92\x24\x08\xe2\xc5\x03\x49\x8b\xd2\x26\x6b\xf8\xbb\x02\xb8\x70\x0d\x39\x49\xb9\x5b\xf5\x1f\x5c\x29\xd8\x83\xc4\x1a\xbe\x57\x98\xb4\x12\x00\x14\x5b\x60\x6f\xb8\x52\xec\xd6\x7d\x17\xdc\xf2\x2d\x74\x1c\x00\x55\x56\x55\xf6\x90\x57\x5a\xa3\xb4\x5b\x90\x95\x10\xb7\x4b\xee\x42\xc2\xf2\x13\x6e\xe1\x9d\x47\x1c\x35\xfe\xa9\x50\xe6\x2f\x21\xa5\xa8\x46\x3d\x83\x4b\xb9\xe8\xe2\xe1\x61\x87\x0e\x8f\x35\xe8\x18\xbf\x7e\xc6\xad\x45\xfd\x12\xe9\x30\x30\x61\x8f\xd1\xf3\xc4\x75\x94\xf0\x9b\x08\x2c\x0e\x67\x5e\x4a\xb3\x05\x56\x90\x7d\x4b\xc7\x23\x9b\x73\x3c\x33\xa4\xb3\x2b\x64\x56\x89\xe7\x2b\xd4\x51\x10\xb7\x57\xb8\x52\x5e\x50\xdb\x76\x8c\x28\x4d\x17\xd4\xed\x5d\x5c\x6b\xca\xed\x41\x50\xfd\x8a\xf9\x60\xf1\xac\x66\xbc\xa3\x9b\x15\x40\xb3\x76\x57\x55\x1e\x21\xa9\x4b\x59\x50\xfd\x8b\xfd\xc0\xec\x91\xf2\x67\xb4\xec\xf7\xba\x3f\xa0\xf6\xfa\xfa\x8b\x1b\xd9\x84\xd5\x66\xbb\xd9\x30\xb8\x81\x82\xf2\xea\x8c\xd2\xa6\x82\x72\xde\x1e\x71\xfa\x44\xc6\xc2\x0d\xb0\x4d\x6d\xd8\x7a\x37\xd6\x48\x49\xe6\x82\x0c\xc2\x1e\x86\x7b\x4f\xf0\x62\xd7\xe3\x9d\xb6\xd7\x5d\x5a\x3c\xc3\x7e\x2a\x9a\x6b\xe4\x16\xdf\x0b\x6c\xbf\x12\xc6\x87\x82\xe0\x94\x69\x29\x25\xea\x0f\xdf\x3e\x7f\x82\x3d\xb0\xbb\xec\xfe\x81\xa4\xc4\xee\x29\xb9\x5e\x45\x7a\xb7\xc9\xee\x59\xe7\x69\xdc\xb6\xe3\x30\x67\x34\x86\x9f\x5e\x1f\xa7\x52\x05\xb7\xad\xe4\xe3\xe3\xd7\x2f\xa9\xe2\xda\x60\x2b\x4a\xdb\x07\x36\x4e\x92\x93\x34\x24\x30\x15\x74\x4a\x3a\xc3\x48\x71\xa5\xd2\xe5\xf3\x83\x7d\x5f\xd4\xc3\x23\x8e\xfe\x9c\x03\x47\x8f\x47\x1c\xe3\x63\x0a\x3c\x23\x13\x71\xb9\x37\x10\x38\x1c\xda\xff\xb1\x4e\xbe\x78\xe0\x93\x7e\x01\xef\x02\x7d\xb0\xc5\x02\x0e\xf5\x91\x1d\x3c\x22\xf4\x78\x1b\xcc\xc0\xc5\x02\xcb\x34\x98\xf4\x4b\x7c\x17\x71\x04\x4b\x78\x44\xcc\xe3\x0d\xb5\x80\x63\xfa\xe0\xc7\x7a\xc4\xb8\x8a\xc0\xc2\x4c\xaa\x2e\xb1\xd4\xbc\xe2\x18\x62\xb0\x77\xe2\x09\xf0\x55\x5d\x9c\xcd\x65\x1d\xe2\xeb\xda\x64\x9b\xab\xda\x6f\x5f\xe3\x22\x6e\x2e\x72\x80\xaf\x1a\xc2\x6e\x2e\x1c\x30\x5f\x3b\x24\xdf\x5c\x3b\x60\xc1\x84\x5d\x0c\x2e\x86\xec\xa0\x58\x55\x17\x89\x7e\x59\x07\x8e\x51\x01\xd0\x00\x0a\x83\x7d\x1e\xfc\x4f\x38\x45\xa3\xe9\x27\x55\x1a\x32\x4d\xb5\x41\x0d\x05\xa1\x01\x49\x16\x4c\xa5\x14\x69\x3b\x25\xab\x99\x12\xab\x59\x35\xab\x7f\x01\x00\x00\xff\xff\x70\x7f\xb2\xda\x1a\x08\x00\x00")
func jsControllerJsBytes() ([]byte, error) {
return bindataRead(
_jsControllerJs,
"js/controller.js",
)
}
func jsControllerJs() (*asset, error) {
bytes, err := jsControllerJsBytes()
if err != nil {
return nil, err
}
info := bindataFileInfo{name: "js/controller.js", size: 2074, mode: os.FileMode(511), modTime: time.Unix(1551215770, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
var _jsVueJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\xbd\x69\x73\xe3\x36\xb3\x30\xfa\xfd\xfc\x0a\x8b\xe5\xcb\x00\x8f\x60\x8d\x9c\x3c\xcb\x09\x35\x18\xd5\x64\x96\x64\x92\xd9\x32\x4b\x36\x8d\x8e\x8a\x26\x21\x1b\x63\x0a\x54\x40\xc8\x4b\x4c\xbd\xbf\xfd\x56\x37\x00\x12\xa4\xe8\x39\x79\xeb\x56\xdd\x0f\xb6\x48\x00\xc4\xda\x68\xf4\x8e\x07\xff\x18\xfd\xd7\xd1\x3f\x8e\x7e\xd9\x89\xc9\xe7\xea\xe8\xea\xeb\xc9\xbf\x27\xff\x81\x04\x92\xd1\xa3\xaf\xa7\xa7\xff\x3c\xf9\x7a\x7a\xfa\xed\xd1\xb3\xab\x54\x1d\xfd\x5e\xee\x20\xe7\x9d\x28\x44\x5a\x89\xfc\x68\xa7\x72\xa1\x8f\xcc\x85\x38\x7a\xf5\xe2\xc3\xd1\x4b\x99\x09\x55\x89\xc9\x7f\x1d\xfd\xe3\xc1\x7f\x8d\xd6\x3b\x95\x19\x59\x2a\x22\x98\xa1\x77\x51\x79\xf6\x59\x64\x26\xe2\xdc\xdc\x6e\x45\xb9\x3e\x12\x37\xdb\x52\x9b\x2a\x8e\x23\xa8\x64\x2d\x95\xc8\xa3\x91\xcf\xdc\x94\xf9\xae\x10\x73\xfb\x33\x71\x45\xb9\x21\x34\x89\x7c\xb5\x6d\x4d\xf6\xeb\x38\xb6\xbf\x93\x74\x93\xcf\xed\x23\x31\x34\x21\x82\x8b\xba\xae\x44\xb1\xa6\x93\x5f\x76\x02\xea\xd8\x13\x73\x21\x2b\xd6\xf4\x8f\xde\x45\xbb\x4a\x1c\x55\x46\xcb\xcc\x44\xb3\xab\x54\x1f\x09\xfe\x06\xbb\x3b\x59\x6b\x21\xfe\x12\xe4\x6e\x4f\x67\xbe\xfc\x91\x21\x82\xde\x69\x61\x76\x5a\x1d\xa9\x5d\x51\x70\x2e\xf6\x4d\xa6\xea\x65\x8e\xc2\x4c\xdd\x66\x8e\xa6\xbc\xf3\x9d\x6c\xb3\x22\xe8\x89\x3a\x0f\xa6\xaa\xae\x23\xb5\xdb\x9c\x09\xdd\x4d\xab\x6e\x37\x67\x65\xd1\x4d\x3b\x2b\xcb\x42\xa4\xc1\xec\x04\x6d\x94\x07\x7d\xe3\x22\x8e\x0f\x57\x66\x0f\x53\x90\xfa\x29\xd8\xea\xd2\x94\x90\x35\x31\xe5\x7b\xec\x59\x3b\x15\x55\xd0\xeb\x85\xad\xe7\xc8\x7e\xb6\x8c\x38\xe7\xe9\x24\x4b\x8b\x82\x08\xda\xf6\x21\x83\x2f\xa0\x7e\xc3\xb7\xa9\xae\xc4\xf3\xa2\x4c\x0d\xb1\xf5\x12\x41\xe9\xcc\xf5\xcf\x3c\xe2\xd3\x38\x7e\x95\x9a\x8b\xc9\xba\x28\x4b\x4d\x0c\xe5\x9c\x9b\x38\x96\xd5\x73\xa9\xa4\x11\x9d\x5a\x77\xe1\xc8\x88\xa0\x71\x3c\x00\x27\x62\x62\x2e\x84\xba\x27\x2b\x4b\x4d\x76\xd1\x56\x58\x1c\xae\xf1\x3c\x8a\x92\xc7\x5a\xa7\xb7\x13\x59\xe1\x2f\x11\xb4\xae\x2b\x6c\xad\x9d\x1b\x18\xf5\xfc\xc7\xf7\x6f\x5e\x4f\xec\x2a\xca\xf5\x2d\x11\x0c\xaa\x60\x5f\xd3\xa4\x19\x67\xdb\xd2\x7a\x70\x42\x44\x33\x11\xb2\x7a\x9d\xbe\x26\x86\xce\x45\x62\xda\xaf\xb6\x76\x57\xad\x4b\x4d\xe0\x5b\xe5\x17\x2b\xd3\x22\x35\x82\x40\x7b\x94\x69\x2e\x26\xd5\xb6\x90\x86\x44\x2c\xa2\x4c\xf2\xe9\x4c\x3e\xd4\x93\x42\xa8\x73\x73\x31\x93\xe3\x31\x55\x0b\xbd\x90\xcb\x25\x1f\x4d\x9b\x79\x9f\xb7\xfb\xb6\x9d\x81\x05\x0c\xf0\x65\x79\x2d\xf4\x93\xb4\x12\x84\x2e\xf7\xc9\x70\xb1\xe5\x1e\x81\x27\xe7\x5b\x12\x55\x45\x69\x58\x56\x6e\xb6\xa5\x12\xca\x44\x6c\x34\xa5\xec\x0a\x32\x2e\xc5\x2d\xd3\x62\xcd\xb0\x00\xfc\x3b\xa9\xb2\x72\x2b\x98\xac\xa2\x60\x9b\x5d\xd8\x21\xca\x35\x11\xae\xcb\x76\x9e\x14\x17\x13\xa9\x72\x71\xf3\x66\x4d\x0c\x9d\xc9\x35\x51\x8f\x4e\x4e\xa9\xeb\x83\x1d\x71\x26\x88\x62\xa7\xd4\x76\x66\x73\x08\xc9\x17\x69\xf5\xe6\x5a\xbd\xd5\xe5\x56\x68\x73\xdb\xb6\x79\x6b\xdb\x74\x75\x6d\x1c\xf8\x32\x13\xac\xd7\x79\xbb\x5e\x03\x73\xee\xa7\xb1\x99\x1d\xd5\xd4\x66\x16\x6a\x59\xd7\x04\x7e\xb8\x20\x8a\xba\xde\xad\xf8\x83\x13\xf2\xe9\x9a\x3e\x38\x67\x67\xfc\x9c\x0c\x4c\xab\x98\x68\xb1\x2d\xd2\x4c\x90\x15\xeb\x22\xd5\x66\xcd\xcc\xc4\x94\x1f\xb7\x5b\xbf\x3c\x49\x14\xed\xe9\x9e\xb2\xe3\xfb\x2a\xcc\x2e\x52\xfd\xd8\x90\x29\xed\x7e\x37\x16\x93\x0a\x27\xef\x14\xbe\xbe\xe6\x0f\x3e\x7d\x47\x16\x8f\x4f\xfe\x58\x42\xef\x6e\xfe\xb7\xde\x5d\xb3\xe8\xe4\xf8\x34\xa2\x5d\x50\xd9\x53\xc4\xa8\x4f\xf8\x73\xf7\x6d\xb0\x0c\x67\x52\xe5\xf3\xc1\x21\xd9\x3c\x62\x68\x08\x68\x08\xf1\x2d\xa2\x55\x76\x1d\x34\x4f\xf5\xf9\x6e\x23\x94\xa9\x3c\x68\xbb\x4a\xf4\x5c\x3f\x3a\x9d\x8b\x49\xba\xdd\x16\xb7\xc4\xb0\xa6\x1c\x4d\x84\x5d\x5a\xc3\x54\xfb\x4c\xf7\x1e\x8e\x27\x2b\x5b\x11\xf7\x90\xc7\xd4\xbe\x05\x92\xc7\xb6\x27\x86\x9b\xba\x9e\xce\xda\x2d\xe8\x0b\x9f\x18\xa6\xb9\x12\xd7\x47\x16\x4b\x28\x3a\x53\x27\x27\x33\xaa\x71\xe1\x17\x6a\x6c\x96\x4d\x07\x5b\xb0\xba\xec\x6d\xe8\x23\xa9\x8e\x0c\x15\xf0\x0d\x40\x8c\xff\x22\xc0\xe6\x6f\x60\x11\x7c\x79\xc3\xef\xf6\x4c\xf1\xe9\x4c\x3d\xf4\xdd\x98\xa9\xf1\x18\x2b\x88\xe3\x4b\x62\x18\x3c\xb5\xd8\xb5\xad\xe6\x3d\x34\xcc\x14\xbd\x43\x68\xfc\xc0\xc3\xe9\x66\x0d\xf4\x8e\x4e\xf7\xec\x19\x1f\x5a\xfe\x60\x62\x5e\xb7\x3b\x16\x70\x35\xf5\x27\xdd\xcc\xce\x0f\x1c\x3f\x4c\xf3\xd2\xed\xda\x91\xaa\xeb\x91\xf6\x85\x54\x1c\x8f\x74\x1c\x37\x08\x92\x73\xee\x9e\x0d\x9d\x19\x7d\x8b\x4b\x2d\x79\x1f\x01\xb3\xb4\x97\x64\xeb\x96\x71\x9c\xb6\x18\xc1\x2d\x26\xe7\xc6\x3d\x02\xc2\x16\x57\x42\xdf\x06\x00\xdd\x8e\xd5\x8e\x03\xa6\x6b\x8f\x95\x89\x23\xa9\x2a\x93\xaa\x0c\x4e\x8a\xa7\xa9\x11\x71\x6c\xfa\x49\x6d\x63\xe7\xc2\x7c\x90\x1b\x41\xf0\xb8\x6a\xdf\xb0\x57\x75\xed\x7b\x35\x3a\xc5\x49\xa9\x3c\x0e\xb9\x14\xb7\x70\x92\xb0\xac\x93\x60\x9a\x05\xab\xda\x41\x64\xcd\x20\xaa\xfe\x20\x3a\x43\x58\xa8\xa5\x1f\xc5\x1e\x4f\xb7\x80\xf8\x38\xdd\xb7\x00\xf0\xb9\x7f\x94\x1c\x00\x91\x5c\x13\x5f\x1f\xf5\x03\x55\xae\x67\x27\xa7\x6d\x4d\x2f\x5b\xd4\x38\x3a\x3d\xc0\x84\xf4\xce\x00\xfa\xe3\xa3\x29\x6b\xb6\x24\xd0\x61\xed\xae\x74\x18\xf1\x15\x8f\xf2\xd4\xa4\x27\x95\xd0\x57\x42\x9f\x68\x01\x44\xa6\xc8\x23\xf6\x82\x2f\xa2\xe0\x3c\x89\x72\xa9\x45\x66\xe4\x95\x88\x58\xb4\x96\x85\x11Line truncated
func jsVueJsBytes() ([]byte, error) {
return bindataRead(
_jsVueJs,
"js/vue.js",
)
}
func jsVueJs() (*asset, error) {
bytes, err := jsVueJsBytes()
if err != nil {
return nil, err
}
info := bindataFileInfo{name: "js/vue.js", size: 93373, mode: os.FileMode(511), modTime: time.Unix(1551299281, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
var _rootIndexHtml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xdc\x59\x7f\x6f\xdb\x36\x10\xfd\xbf\x9f\xe2\xa6\x21\x40\x0b\x54\x51\xd2\x24\xc0\xea\x4a\xc6\xda\x74\xed\x02\x2c\x48\x31\x74\x19\x86\x61\x08\x28\xf1\x6c\x31\xa6\x49\x95\x3c\xd9\xf5\x82\x7c\xf7\x81\xa6\x65\xcb\x8e\xf3\xc3\xb1\xb0\xc4\xfe\xcb\x22\x79\x77\x7c\xef\xe5\xfc\x48\x39\xf1\x0f\x1f\xcf\x8e\xbf\xfe\xf5\xe5\x17\xc8\xa9\x2f\xdb\x2f\x62\xf7\x01\x92\xa9\x6e\x12\xa0\x0a\xda\x2f\x00\xe2\x1c\x19\x77\x0f\x00\x71\x1f\x89\x41\x96\x33\x63\x91\x92\xa0\xa4\x4e\xf8\x53\x00\x51\x6d\x71\xfc\x04\xa0\x58\x1f\x93\x60\x20\x70\x58\x68\x43\xc1\x64\x36\xd3\x8a\x50\x51\x12\x0c\x05\xa7\x3c\xe1\x38\x10\x19\x86\xe3\xc1\x6b\x10\x4a\x90\x60\x32\xb4\x19\x93\x98\xec\xbf\x06\x9b\x1b\xa1\x7a\x21\xe9\xb0\x23\x28\x51\xda\x57\xa9\x36\x93\x42\xf5\xc0\xa0\x4c\x02\x4b\x23\x89\x36\x47\xa4\x00\x72\x83\x9d\x24\xc8\xac\x8d\x52\xad\xc9\x92\x61\xc5\x6e\x5f\xa8\xdd\xcc\xda\x19\x4e\x12\x24\xb1\x7d\x2e\x32\x32\x5a\xc1\x69\x29\x49\x14\xb2\xb4\x70\xaa\x95\x20\x6d\xe2\xc8\x07\xf8\xe0\x71\xf5\xf6\x84\xc0\x2e\xd7\x14\xea\x4e\x07\xae\x26\x13\x00\x39\x8a\x6e\x4e\x2d\x78\x73\x54\x7c\x7f\x37\x9d\x1d\x73\x5a\x9c\x4c\x59\xd6\xeb\x1a\x5d\x2a\x1e\x66\x5a\x6a\xd3\x82\x1f\xd3\x34\xad\xad\x6b\xc3\xd1\x84\x86\x71\x51\xda\x16\x1c\xed\xed\xcc\xd6\xb8\xb0\x85\x64\xa3\x16\x08\x25\x85\xc2\x30\x95\x3a\xeb\x55\xcb\xd7\x2f\xea\xf8\xba\x06\x51\x35\x86\xf0\x0d\x43\x7e\x88\x8d\x80\xac\x61\x34\xc8\x1b\x43\x88\xfc\x80\x1f\x1c\x36\x89\x30\x75\xcd\xf5\x3c\x31\x02\x30\x25\xfa\x8c\x84\x56\x2d\x18\xe3\x14\xaa\xfb\x3b\xf2\x8f\x9a\x60\xdf\x82\x50\x1d\xf7\x3d\xc2\x45\x4a\x3f\xf7\x70\xd4\x31\xac\x8f\x76\x31\x69\xc6\x70\x6f\xa7\x36\x78\x10\x8b\xeb\xe9\xd3\xe1\xdb\xfb\x92\xc9\x30\x65\x0b\x66\x50\xd1\xb2\x02\x47\xf7\xee\x7e\x4f\x81\xb7\xf7\x22\xb8\x03\xfe\xfe\xde\xe3\xc9\x2f\x74\xcd\x33\xfd\xf6\x2d\xed\x9b\xcf\x0e\xeb\xea\x9d\x33\x4d\x5b\xa5\x77\x16\x99\x6c\x58\xef\xdc\x0e\xff\x21\xbd\x73\x5b\xb6\xff\x8c\xa3\xe9\x21\x13\x47\xfe\xb0\x75\x8f\xa9\xe6\xa3\xea\x10\xca\x8c\x28\x08\xac\xc9\x92\xe0\xd2\x46\x83\x12\x77\x2f\x6d\xd0\x8e\x23\xbf\xb0\x3c\xca\x9d\xb6\x46\x4b\x89\xe6\x8e\x60\x1a\x15\x98\x04\x84\xdf\x29\xba\x64\x03\xe6\x67\x83\xea\xbc\x1b\x0a\xc5\xf5\x70\x57\x2b\xa9\x19\x87\x04\x3a\xa5\xca\x5c\x0b\xbd\x7c\x55\x63\xec\xd6\x8e\xfd\xc9\xfe\xf2\xd5\xb4\x7d\xde\x55\xd4\x26\x9b\xfa\x61\xbe\x0f\x99\x64\xd6\x26\xc1\xa4\x5b\xc3\x43\x70\x9b\x87\x19\x2a\x42\x13\xb4\x4f\xd4\x00\x0d\xa1\x81\xcf\x7f\x9c\xc4\x51\xbe\x3f\x41\xcb\xc5\xa0\x4a\x74\xb4\x98\x50\x68\x02\x10\x3c\x09\x58\x51\x4c\xe1\xd6\xc3\x8c\x1e\x4e\xe7\x17\x0b\xc8\xda\x8a\x03\x65\xaa\xab\x81\x87\xcc\xc5\x60\x5a\x71\x6e\xf0\xd0\xf2\xa1\xed\x03\x14\x21\x2b\x49\xcf\xef\x54\x0f\x63\x86\xcf\x53\xaf\x05\xde\x0c\x0d\x5d\x37\x2c\xc4\x38\xe8\x47\x73\x41\xe3\x8b\x4b\xd0\x3e\x2b\xa9\x28\x09\x8e\x4b\xe3\x3a\x3e\x8e\xf2\xa3\x1b\x89\x63\x73\xf8\x56\x6a\xc2\xaa\xc0\x6c\x26\x68\x5f\x5d\x81\x1e\xd7\xb8\xc8\x7c\x0d\xb8\xbe\x86\xf7\x71\x34\x8b\x59\x40\x5b\x97\xa9\x36\xf1\x74\xdc\xcf\xb5\x24\xd6\xc5\xb5\xb8\x0f\x7c\x0d\xc7\xfd\x7c\x93\xb8\x7f\x32\xf8\xad\x44\x95\x8d\x1e\xc1\x7e\x21\x1a\x60\x26\x47\xa7\x2a\xeb\x04\xf9\xf5\xdf\xc5\xba\x1b\x24\xd0\x17\x3d\x44\xb3\x56\x6b\x14\xae\x82\xd3\xe1\xcf\xd5\x79\xdf\x36\xbc\xe9\x21\x4f\x68\x21\x27\x6a\x6d\x07\x11\x6a\x23\x0d\xc4\x33\x5f\xcb\x3f\x3c\xf3\x8d\xb3\x0f\xcf\xbc\x69\xf7\xf0\x62\x6c\x81\x79\x78\x79\xd6\xf0\x0e\xaf\xc4\xd6\x5b\xc7\x07\x46\x84\x66\xb4\x86\x79\x2c\x6b\xa3\xd4\x57\x9d\xf3\x93\x4d\xec\xa2\x4a\x9d\xc7\x1b\xcc\x5d\xea\xd4\x3d\x67\x93\xd5\x39\xce\x99\x79\xac\xfb\x4e\x3b\x65\x5c\xc3\x49\xb1\xb3\x51\xdc\xd7\x70\x98\x8a\x7a\xe3\x1e\xf3\xb8\xf7\xa0\xff\xe1\x35\xab\x08\x0f\x9e\xc4\xe4\x4e\x99\x50\x76\xe9\x1f\xc9\x16\x4c\xc1\x20\x4c\x85\xe2\xad\x49\xe2\xdf\x12\xf9\x45\xdf\x65\xfc\x33\x7e\x0f\x2f\x98\x6a\xde\xef\x9f\x46\x87\xf7\xa9\xd5\xa6\x20\xa1\xd5\x4a\x62\x30\x97\x96\x6e\x9d\x1a\x1f\x4a\xd9\x5b\x49\x87\xb4\x94\xbd\x67\xa1\x02\x34\x29\xc3\x27\xa9\xd9\xf2\x73\xff\x36\x1d\x3a\x2e\xe3\x59\x08\xd1\xec\x8d\xd1\xff\x98\xb5\x92\x14\x62\x92\xd4\x84\x1a\xf3\x87\xd9\x46\x18\xeb\xd9\x00\x8d\xd4\x8c\xaf\xa4\x99\x9e\x24\x6d\x5d\x07\xfd\xa6\x87\x30\xb9\x17\xac\xe6\x2b\x8c\x2e\xa4\x1e\x6e\x9d\x1e\x5f\xb1\x5f\xa0\x61\x54\x9a\xe5\x97\xc3\xbb\x1a\xe4\x82\xb0\x5f\x34\xf8\xad\x9a\x7b\x8c\x23\xff\x73\x7d\x1c\xf9\xff\xa3\xff\x17\x00\x00\xff\xff\x59\x6a\x08\xe6\x58\x1f\x00\x00")
func rootIndexHtmlBytes() ([]byte, error) {
return bindataRead(
_rootIndexHtml,
"root/index.html",
)
}
func rootIndexHtml() (*asset, error) {
bytes, err := rootIndexHtmlBytes()
if err != nil {
return nil, err
}
info := bindataFileInfo{name: "root/index.html", size: 8024, mode: os.FileMode(511), modTime: time.Unix(1551300132, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
// Asset loads and returns the asset for the given name.
// It returns an error if the asset could not be found or
// could not be loaded.
func Asset(name string) ([]byte, error) {
cannonicalName := strings.Replace(name, "\\", "/", -1)
if f, ok := _bindata[cannonicalName]; ok {
a, err := f()
if err != nil {
return nil, fmt.Errorf("Asset %s can't read by error: %v", name, err)
}
return a.bytes, nil
}
return nil, fmt.Errorf("Asset %s not found", name)
}
// MustAsset is like Asset but panics when Asset would return an error.
// It simplifies safe initialization of global variables.
func MustAsset(name string) []byte {
a, err := Asset(name)
if err != nil {
panic("asset: Asset(" + name + "): " + err.Error())
}
return a
}
// AssetInfo loads and returns the asset info for the given name.
// It returns an error if the asset could not be found or
// could not be loaded.
func AssetInfo(name string) (os.FileInfo, error) {
cannonicalName := strings.Replace(name, "\\", "/", -1)
if f, ok := _bindata[cannonicalName]; ok {
a, err := f()
if err != nil {
return nil, fmt.Errorf("AssetInfo %s can't read by error: %v", name, err)
}
return a.info, nil
}
return nil, fmt.Errorf("AssetInfo %s not found", name)
}
// AssetNames returns the names of the assets.
func AssetNames() []string {
names := make([]string, 0, len(_bindata))
for name := range _bindata {
names = append(names, name)
}
return names
}
// _bindata is a table, holding each asset generator, mapped to its name.
var _bindata = map[string]func() (*asset, error){
"css/bootstrap.min.css": cssBootstrapMinCss,
"css/bootstrap.min.css.map": cssBootstrapMinCssMap,
"js/controller.js": jsControllerJs,
"js/vue.js": jsVueJs,
"root/index.html": rootIndexHtml,
}
// AssetDir returns the file names below a certain
// directory embedded in the file by go-bindata.
// For example if you run go-bindata on data/... and data contains the
// following hierarchy:
// data/
// foo.txt
// img/
// a.png
// b.png
// then AssetDir("data") would return []string{"foo.txt", "img"}
// AssetDir("data/img") would return []string{"a.png", "b.png"}
// AssetDir("foo.txt") and AssetDir("notexist") would return an error
// AssetDir("") will return []string{"data"}.
func AssetDir(name string) ([]string, error) {
node := _bintree
if len(name) != 0 {
cannonicalName := strings.Replace(name, "\\", "/", -1)
pathList := strings.Split(cannonicalName, "/")
for _, p := range pathList {
node = node.Children[p]
if node == nil {
return nil, fmt.Errorf("Asset %s not found", name)
}
}
}
if node.Func != nil {
return nil, fmt.Errorf("Asset %s not found", name)
}
rv := make([]string, 0, len(node.Children))
for childName := range node.Children {
rv = append(rv, childName)
}
return rv, nil
}
type bintree struct {
Func func() (*asset, error)
Children map[string]*bintree
}
var _bintree = &bintree{nil, map[string]*bintree{
"css": {nil, map[string]*bintree{
"bootstrap.min.css": {cssBootstrapMinCss, map[string]*bintree{}},
"bootstrap.min.css.map": {cssBootstrapMinCssMap, map[string]*bintree{}},
}},
"js": {nil, map[string]*bintree{
"controller.js": {jsControllerJs, map[string]*bintree{}},
"vue.js": {jsVueJs, map[string]*bintree{}},
}},
"root": {nil, map[string]*bintree{
"index.html": {rootIndexHtml, map[string]*bintree{}},
}},
}}
// RestoreAsset restores an asset under the given directory
func RestoreAsset(dir, name string) error {
data, err := Asset(name)
if err != nil {
return err
}
info, err := AssetInfo(name)
if err != nil {
return err
}
err = os.MkdirAll(_filePath(dir, filepath.Dir(name)), os.FileMode(0755))
if err != nil {
return err
}
err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode())
if err != nil {
return err
}
err = os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime())
if err != nil {
return err
}
return nil
}
// RestoreAssets restores an asset under the given directory recursively
func RestoreAssets(dir, name string) error {
children, err := AssetDir(name)
// File
if err != nil {
return RestoreAsset(dir, name)
}
// Dir
for _, child := range children {
err = RestoreAssets(dir, filepath.Join(name, child))
if err != nil {
return err
}
}
return nil
}
func _filePath(dir, name string) string {
cannonicalName := strings.Replace(name, "\\", "/", -1)
return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...)
}
func assetFS() *assetfs.AssetFS {
assetInfo := func(path string) (os.FileInfo, error) {
return os.Stat(path)
}
for k := range _bintree.Children {
return &assetfs.AssetFS{Asset: Asset, AssetDir: AssetDir, AssetInfo: assetInfo, Prefix: k}
}
panic("unreachable")
}
-2
View File
@@ -1,2 +0,0 @@
#!/bin/bash
go-bindata-assetfs -pkg="frontend" css/ js/ root/
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+13
View File
@@ -0,0 +1,13 @@
// Code generated by statik. DO NOT EDIT.
// Package statik contains static assets.
package frontend
import (
"github.com/rakyll/statik/fs"
)
func init() {
data := "PK\x03\x04\x14\x00\x08\x00\x08\x00*\xa3[N\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00 \x00css/bootstrap.min.cssUT\x05\x00\x011\xf2v\\\xec\xbd\xfb\x8f\xdc8\x92 \xfc\xfb\xfd\x15\xdaj\x18\xb6\xa7Si)\xdf\x99\x05\xf773\xbd3\xb8\x05\xba\x17\x1fv\xee\x80\x03\xfa\xfa\x00e\x8a\x99\xa9\xb1^'\xa9\xaaT]\xa8\xefo\xff\xc0\x97\xc4G\x90\xa2\xb2\xb2\\\xf6\xdd\xaeg\xdbN*\x18\x11\x0c\x06C\x11A*\xf8\xe9O\xff\xf2_\xbc?y\x7f-\x8a\xa6~\x88\x9a\xc3\xd9\xbb_L\xe7\xd3\x107\xfe\xd7\"CetB;\xef\xdc4e\xbd\xfb\xf4i\xdf\x81M\x0fE\x86a~.\xca\xc7*9\x9d\x1bo\x16\x843\x7f\x16\x84[\xef\xbf\x9d\x8b,\xaa\xbd\xff7\xaa\xbe`\x90_\x92\x03\xcak\x14{wy\x8c*\xef\xd7\x7f\xfbo\x84b\x84\x9b\x8a\x9c\x92n\xaa\xa8\xfc/\x7f\xfa$r\x83\x9b\x183\xde\x07\xce\xc0 5{\xfe\x10\xb3\xf0\xe9\xa3\xc6D\xc8\x99@\x02\x9e\xbf\xdc5\xe7\xa2\xaa\x8d\xc0\x0fI\xd3\xa0j\xe2\xfd[~\x98\xc2<\x0b<$\xcd\xf9nO\xa87\x0f\xfb\xfaS\xc7\xd0\xa7}Z\xec?eQ\xdd\xa0\xea\xd3/\xff\xf6\xf3\xdf\xfe\xfd\x1f\x7f\xc3\xfc}\xfas\x92\x95E\xd5xwU\xfa\xe1\x86\xa39\x16ySOOEqJQT&5Ax\xa8\xeb\xff\xe7\x18eI\xfa\xf8\xf9\x97\xa8)v\x8b \x98\xac\x83`\xb2\x08\x82\xa4\x89\xd2\xe4p\xf3\xf1vW\x15E\xf3\xe4\xfb\xfb\xf4\x0e\xed\xbc\x1f\xe6\xebe\xb4>\xde\xfa~\x92\xc7\xc9\xa9\xd8y?\xacVap\x9c\xdd\xfa~yW\x95)\x86Y\x1d\x17\xb3C\x88[\x92\xfc\xcb\xce\xfb\x01m\xe6hs\xb8\xf5\xfd\n\xc5;\xef\x87\xbf\xad\x17?\xcf\x7f\xbe\xf5\xfd\xa2\x8ar<\xdf?\x1c\xe35\n\x17\xb7\xbe\xff\x88\xd2\xb4x\xd8y?\xfc}\xbe\xfd9\xc4HO\x15B\xf9\xce\xfb!\x08\xf6\x07\x82\xa3AQ\xba\xf3~\x98\x05\x87\xedv}\xeb\xfb\x87\xc7\x08?\x9f/\xb6\x9b\x7f\xfd\xeb\xad\xef?\x9c\x93\x86\xe0<\x1eI\xf7\xe8q\xe7\xfd\xb0\xddn\xd9\x0f?\x8e*\xcc\xd3<\xc0\x7f0\x8fU\x92E\xd5\xa38\xb4\x1a\x1d\x8a<\xa6\x8d\x8b\x05\xe6\xab\xbe;\x1cP]\x8b|$\xf9\xb1\x90\xe8FU\x9e\xe4'\x91\xf7\x18\x0f\xaf\x12G\x9cbM\x10\xa93n\xa2x\xbf\xdc\xc7\xb7\xbe\xbf\xafP\xf4\xa5,\x92\xbc\xf1\xdbz\xe7\x05rS\x9d\xed\xbc\xe5zU\xb6rs\x16\xef\xbc\xf5j\xa36\xa7\xa7\x9d\xb7\xdd\xce\xd4\xe66\xddy\xe1,\x08H;V\x0b\x9f\xaa\x80_Gy\xed\xd7\xa8J\x8e;\xef\x06\xeb\xc3\xcd\xc4\xf3\xa3\xb2L\x91_?\xd6\x0d\xca&\xde_\xd3$\xff\xf2kt\xf8\x07\xf9\xfd\xf7\"o&\xde\xcd?\xd0\xa9@\xde\x7f\xff\xb7\x9b\x89\xf7\x1f\xc5\xbeh\x8a\x89w\xf3_Qz\x8f\x9a\xe4\x10y\xff\x8e\xee\xd0\xcd\xc4\xfbK\x95D\xe9\xc4\xebiL\xbc\x9b\xbf`\xdc\xde\xcfEZT\xde\xdf\xb2\xe2\x9f\xc9\x8d\x80\x0dh\xf9\xc7c\xb6/\xd2\x1b\x85\xed\xac\xc8\x8b\xba\x8c\x0eh\xe7\xfd\xe3\xef\xbf\x16y\xe1\xff\x07:\xdd\xa5Q5\xf1~EyZL\xbc_\x8b<:\x14\x13\xef\xe7\"\xaf\x8b4\xaa'\xde\xcd/\xc9\x1eUQ\x93\x149~\x8aGz\xf3sqW%\xa8\xf2\xfe\x1d=\xdcL\xbc\x0e\xeb\xf3\x9f&\x7f\xda\xed\xf6\xe8XT\x08\xff+:6\xa8z\xf2\x1f\xd0\xfeK\xd2\xf8\xfb\xa2\xf5\xeb\xe4\x0f<\xf1\xfb\xa2\x8aQ\x85[n\xc1\xd6\xe7s\x93\xa5O\x02\xe7\xbb^\x18\xb7i\x92#\xff\x8c\x88z\x84\xd3py\xcb 4\xa8m0.\xe4G\xf1?\xef\xeaf\x17\x06\xc1\xbb\xfeiT\xfa\xe7\xe4t&z\xe5\x1f\xb0$w\xd5i\x1f}\x08&\xe4\xcf\xc7\xe7\xa8j\x92C\x8a&Q\x9d\xc4hrLN\x87\xa8\xc4\xc3\xc6\xff\xbc\xab\xd0\xe4X\x14\xd8\x14\x9dQ\x14\xe3\xbfNUqWN\xb2(\xc9'yt?\xa9\xd1\x01\x03?\xc5I]\xa6\xd1\xe3n\x9f\x16\x87/\xcf\xfb\"~|\xca\xa2\xea\x94\xe4\xbb\xe0V\x1c\xd17\xad6\x84Q,\xca]0\xdd\xce\xd7\xcb\ne\xb4\xed\x81\xca}\x11\x04\xca<,o\xa9H\x891!3\x11\xa5\xc9)\xdf\xa5\xe8\xd8\xdc\xee\xa3\xc3\x17,\xae<f\x82\xffa6\x9b=\xff\xd6D\xfb$\x8fQ\xfb\xf9\xc6\x0fo~\xdf\x1d\x8b\xc3]\xfdT\xdc5\x18\xf3.\xf0\xfe\x85\x1a\xe7(o\x9e\xcf\xa0\x1a\x1d\x8a\xbcAy\xa3\xea\x91\xd8\xcc\xf8\x0bn\x8b{T\x1d\xb1\xc1\xbcO\xead\x9f\xa2\xe7s89\xcf&\xe7\xf9\xe4\xbc\x98\x9c\x97\x93\xf3\x8aM\x93\xdf\x14\xe5.\xb8e?\xf6E\xd3\x14\xd9.\x98b\x11<\x976\x98\x10CD\xfb}\xf5[\x934)\xfa}B\xfe\x1dGM\xe4\x17UrJ\xf2(\xf5\xe9\x93'\"\x9f\x18\x1d\n\xba\xaev\xe4]\x86G-\xeb2\x04\xe1\xc5E\xd3\xa0\xf8v\x10\xe0pW\xd5E\xb5;\xa3\xb4\xbc\xedV\x16\x1d\x8c\xda\xd9\xaf\xbf$\xa5\x8f_@y\x91\xa3\xe7(\x8e+T\xd7O\xfa\xf0\x98^4\x8f)\xda\xe5E\x95E\xa9\xa4\x05I~FU\xd2<\x17\xe9\xe4.\x9d\xc4\xe9\xa0\xb4\x8a\xd4#\xb0\xde]:)\xc8\x7f\xefp\x8bB9x\x8e\x9b'Q\xfb\xd6A\xf0\x1c\xc7\n\x14\x99!N\x04k\xdd.x&k\xf0\x7f\xdf\x15\x0d\xea\xd6\xa0\x17x\x84\xf4~R7U\x91\x9f$\xc4\xfb\"\x8dQ\xf5\\gQ\xca\xcc\x0fY\x03\x9b\xe0\xdds}\xb7\x9f\xd4w\xe5SY\xd4 \x11x\x85\xd2\xa8I\xee\x91\xb0V\xd6\xcbw\x92<\x82\xdb{\x84mJ\x94\xb2\xc5\xb0\x8fj\x84\x010\xb6'\xc6\xb7?\x9d-Q\xf6\x8cqc9\xf9S\xfc+zb\xeb\x84\xbdC\xd5\xd9\xc6\xf3\xa4\xaf\xaa\xa6\x8a\xf2\xba\x8c*\x947\xcf\xd1\xee\x8cU\xbe\xc7\xb3\x0e\x96s\xb3\xd6<G\xbb\xbch>\xfcv\xae\xd0\xf1\xf7\x8f\xf4\xdf|y\xfe\xfe\x91aa\xf3\x0brcG@\x99\x99\xd8a\xe8\xfa\x7f1)\xc5\x8c<\x97\x15\x9a\x1c\x8a\x18M\xbe\xec\xe3I\x1de\xa5\xf4by\x8d\xf7\xa0\xa0\x12!\xb6\x1a\x15\x1aZ \xbdy\x8a\xee\x9a\xe2\x99\xbep4\x9dM\xb2\xd3\x93\xa2QY\x12\xc7)\xe2\x0b\x9c\xafL\xaca\xf7\xa7\xa7\x0e\xe99\x89c\x94\xab\xdaH\xfb>7\xd1>EO\x0c\xc3\xa1H\xd3\xa8\xac\xd1\x8e\xff\xe3\x99\xbd\x04\x9f\xca(\x8e\x93\xfcD\x870\xa5\xaf\x04\xde\xd6YI\xda\xcct\x0e{\x92\xea\x9b\x80a\xf3\xf1+vG\xbb=7\xe7'\x01\x8c\x1b\x914\xda\xa3\xb4{\x9b&9YXdA\xc3\xb6y\x7f\xd74E\xce\xc7QEqrWc\x13@\x9a\x15\xa5\x08\xcb\x96\x9bI\xde\xb4,[\x0f\xcb\xde\xe3\x16\x98\xf4\xf0+<<2\x9e\xe7$/\xef\x9a \xc57\xa9Q\x8a\x0e\xcd\xa4(\x1b\xea\x06\xe0\x01Line truncated
fs.Register(data)
}
+1 -1
View File
@@ -1,8 +1,8 @@
module github.com/hpdvanwyk/invertergui
require (
github.com/elazarl/go-bindata-assetfs v1.0.0
github.com/gorilla/websocket v1.4.0
github.com/mikepb/go-serial v0.0.0-20180731022703-d5134cecf05a
github.com/prometheus/client_golang v0.9.2
github.com/rakyll/statik v0.1.5
)
+3 -2
View File
@@ -1,7 +1,5 @@
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973 h1:xJ4a3vCFaGF/jqvzLMYoU8P317H5OQ+Via4RmuPwCS0=
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
github.com/elazarl/go-bindata-assetfs v1.0.0 h1:G/bYguwHIzWq9ZoyUQqrjTmJbbYn3j3CKKpKinvZLFk=
github.com/elazarl/go-bindata-assetfs v1.0.0/go.mod h1:v+YaWX3bdea5J/mo8dSETolEo7R71Vk1u8bnjau5yw4=
github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM=
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/gorilla/websocket v1.4.0 h1:WDFjx/TMzVgy9VdMMQi2K2Emtwi2QcUQsztZ/zLaH/Q=
@@ -18,5 +16,8 @@ github.com/prometheus/common v0.0.0-20181126121408-4724e9255275 h1:PnBWHBf+6L0jO
github.com/prometheus/common v0.0.0-20181126121408-4724e9255275/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro=
github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a h1:9a8MnZMP0X2nLJdBg+pBmGgkJlSaKC2KaQmTCk1XDtE=
github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
github.com/rakyll/statik v0.1.5 h1:Ly2UjURzxnsSYS0zI50fZ+srA+Fu7EbpV5hglvJvJG0=
github.com/rakyll/statik v0.1.5/go.mod h1:OEi9wJV/fMUAGx1eNjq75DKDsJVuEv1U0oYdX6GX8Zs=
golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f h1:Bl/8QSvNqXvPGPGXa2z5xUTmV7VDcZyvRZ+QQXkXTZQ=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=