add image and artifact stores

This commit is contained in:
xuu committed 2020-09-04 17:18:58 -06:00
1 parent a55162b6b4
commit 61e4b82e84
18 files changed
+2090 -224

No files matched your search

+1 -1
View File
@@ -254,7 +254,7 @@ func publicSwaggerJson() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "public/swagger.json", size: 4895, mode: os.FileMode(0644), modTime: time.Unix(1598898929, 0)}
info := bindataFileInfo{name: "public/swagger.json", size: 4895, mode: os.FileMode(0644), modTime: time.Unix(1599169378, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x71, 0xcc, 0xe, 0x5f, 0xc1, 0xe9, 0xd6, 0xa9, 0x46, 0x93, 0xde, 0x3d, 0x71, 0x10, 0x7f, 0xa9, 0x1e, 0x98, 0x11, 0x70, 0xc6, 0xcf, 0x1c, 0xa, 0x57, 0x84, 0xfc, 0x3c, 0xf7, 0x28, 0x3, 0x67}}
return a, nil
}
+193
View File
@@ -0,0 +1,193 @@
package routes
import (
"archive/tar"
"crypto/sha256"
"encoding/base64"
"io"
"io/ioutil"
"net/http"
"os"
"path/filepath"
"strconv"
"strings"
"github.com/gorilla/mux"
"sour.is/x/toolbox/httpsrv"
"sour.is/x/toolbox/log"
)
func init() {
a := &Artifact{}
httpsrv.RegisterModule("artifact", a.config)
httpsrv.HttpRegister("artifact", httpsrv.HttpRoutes{
{Name: "get-path", Method: "GET", Pattern: "/a/{name}/{path:.*}", HandlerFunc: a.get},
{Name: "get", Method: "GET", Pattern: "/a/{name}", HandlerFunc: a.get},
{Name: "put", Method: "PUT", Pattern: "/a", HandlerFunc: a.put},
})
}
type Artifact struct {
store string
maxSize int64
}
func (a *Artifact) config(config map[string]string) {
a.store = "data/"
if config["store"] != "" {
a.store = config["store"]
}
if !chkStore(a.store) {
log.Criticalf("Artifact Store location [%s] does not exist or is not writable.", a.store)
}
log.Noticef("Artifact Store location set to [%s]", a.store)
a.maxSize = 50 * 1024 * 1024
if s, ok := config["max-size"]; ok {
if i, err := strconv.Atoi(s); err == nil {
a.maxSize = int64(i)
}
}
log.Noticef("Artifact: store max-size set to [%d]", a.maxSize)
}
func (a *Artifact) get(w http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r)
name := vars["name"]
path, hasPath := vars["path"]
ext := filepath.Ext(name)
id := strings.TrimSuffix(name, ext)
fname := filepath.Join(a.store, id)
if !chkFile(fname) {
httpsrv.WriteError(w, http.StatusNotFound, "Not Found")
return
}
if chkGone(fname) {
httpsrv.WriteError(w, http.StatusGone, "Gone")
return
}
f, err := os.Open(fname)
if err != nil {
log.Fatal(err)
}
defer f.Close()
if !hasPath {
pr := NewPreviewReader(f)
mime, err := ReadMIME(pr, name)
if err != nil {
httpsrv.WriteError(w, http.StatusInternalServerError, err.Error())
return
}
w.Header().Set("Content-Type", mime)
w.Header().Set("X-Content-Type-Options", "nosniff")
io.Copy(w, pr.Drain())
return
}
rdr, err := Decompress(f)
if err != nil {
httpsrv.WriteError(w, http.StatusInternalServerError, err.Error())
return
}
if cl, ok := rdr.(io.ReadCloser); ok {
defer cl.Close()
}
tr := tar.NewReader(rdr)
if path == "..." {
var paths []string
for {
hdr, err := tr.Next()
if err == io.EOF {
break // End of archive
}
if err != nil {
log.Fatal(err)
}
paths = append(paths, hdr.Name)
}
httpsrv.WriteObject(w, http.StatusOK, paths)
return
}
for {
hdr, err := tr.Next()
if err == io.EOF {
break // End of archive
}
if err != nil {
log.Fatal(err)
}
if hdr.Name == path {
pr := NewPreviewReader(tr)
mime, err := ReadMIME(pr, hdr.Name)
if err != nil {
httpsrv.WriteError(w, http.StatusInternalServerError, err.Error())
return
}
w.Header().Set("Content-Type", mime)
if _, err := io.Copy(w, pr.Drain()); err != nil {
log.Fatal(err)
}
w.WriteHeader(http.StatusOK)
return
}
}
httpsrv.WriteError(w, http.StatusNotFound, "Not Found in Archive")
}
func (a *Artifact) put(w http.ResponseWriter, r *http.Request) {
defer r.Body.Close()
if h := r.Header.Get("Content-Length"); h != "" {
if i, err := strconv.Atoi(h); err == nil {
if int64(i) > a.maxSize {
http.Error(w, "ERR Size Too Large", http.StatusRequestEntityTooLarge)
return
}
}
}
rdr := io.LimitReader(r.Body, 500*1024*1024)
pr := NewPreviewReader(rdr)
rdr = pr.Drain()
s256 := sha256.New()
tmp, err := ioutil.TempFile(a.store, "arch-")
if err != nil {
httpsrv.WriteError(w, 400, err.Error())
return
}
defer os.Remove(tmp.Name())
m := io.MultiWriter(s256, tmp)
if _, err := io.Copy(m, rdr); err != nil {
httpsrv.WriteError(w, 400, err.Error())
}
tmp.Close()
id := base64.RawURLEncoding.EncodeToString(s256.Sum(nil)[12:])
fname := filepath.Join(a.store, id)
log.Debugs("Artifact: moving file", "src", tmp.Name(), "dst", fname)
os.Rename(tmp.Name(), fname)
httpsrv.WriteText(w, http.StatusCreated, id)
}
+80 -80
View File
@@ -1,13 +1,13 @@
// Code generated by github.com/sour-is/go-assetfs, DO NOT EDIT.
// sources:
// ../../public/asset-manifest.json (1.232kB)
// ../../public/asset-manifest.json (1.274kB)
// ../../public/favicon.ico (1.406kB)
// ../../public/index.html (2.17kB)
// ../../public/manifest.json (314B)
// ../../public/index.html (2.191kB)
// ../../public/manifest.json (316B)
// ../../public/paste.sh (1.6kB)
// ../../public/precache-manifest.89e28f4263961b30acac0ac081cf2992.js (752B)
// ../../public/service-worker.js (1.183kB)
// ../../public/precache-manifest.5b28f60f1dfb49acbc56101a135f3061.js (773B)
// ../../public/service-worker.js (1.189kB)
// ../../public/static/css/2.1d5ea050.chunk.css (903B)
// ../../public/static/css/2.1d5ea050.chunk.css.map (1.731kB)
// ../../public/static/css/main.efdd1938.chunk.css (2.58kB)
@@ -15,10 +15,10 @@
// ../../public/static/js/2.6b9faf2a.chunk.js (2.423MB)
// ../../public/static/js/2.6b9faf2a.chunk.js.LICENSE.txt (3.394kB)
// ../../public/static/js/2.6b9faf2a.chunk.js.map (6.312MB)
// ../../public/static/js/main.b612bd5a.chunk.js (13.984kB)
// ../../public/static/js/main.b612bd5a.chunk.js.map (36.397kB)
// ../../public/static/js/runtime-main.3617f9c7.js (1.551kB)
// ../../public/static/js/runtime-main.3617f9c7.js.map (8.27kB)
// ../../public/static/js/main.aceb7093.chunk.js (14.02kB)
// ../../public/static/js/main.aceb7093.chunk.js.map (36.471kB)
// ../../public/static/js/runtime-main.a4bc2b48.js (1.554kB)
// ../../public/static/js/runtime-main.a4bc2b48.js.map (8.273kB)
package routes
@@ -88,7 +88,7 @@ func (fi bindataFileInfo) Sys() interface{} {
return nil
}
var _publicAssetManifestJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x94\x31\x6f\xbb\x30\x10\xc5\x77\x3e\x85\xc5\xfc\x8f\x03\xe6\x1f\x82\xbb\x56\x19\x2a\x55\x5d\x3a\x56\x1d\xcc\x71\x56\x4c\x82\x13\x81\xd3\xa6\xaa\xf2\xdd\x2b\x10\xa9\x0c\x98\xd4\xaa\x3a\xda\x79\xbf\x77\x77\xef\x62\x3e\x03\x42\x42\xa9\xf6\xd8\x84\x77\xa4\x3d\x10\x12\x56\x42\x69\x0a\x4d\x7b\x13\x2e\x1b\x23\x8c\x82\x25\x34\xcd\xb2\xbb\x47\x59\x14\x31\x4f\x32\x0a\xdb\x93\xde\x75\xb2\x7f\x16\x56\x0e\xa8\xb2\x87\xf2\x34\x66\x79\xb1\x12\x3d\x54\x8e\x19\x5a\x89\xa3\x17\xd7\x09\x7b\xb6\x3e\x69\xa3\x2a\x5c\xb8\xeb\x0e\x7e\x4d\xd2\x78\x2d\x39\xac\xad\xca\x23\xda\xd1\xc1\x9c\x83\xdd\x83\x95\x0e\xa3\x71\xb1\x42\x11\xad\x22\x2b\x9a\x51\x82\x4e\xcd\xd0\xaa\x6c\x55\x69\xce\xa5\x90\xcc\xca\x6b\xd8\x9a\x4b\xe1\x63\xe3\x98\x72\x4e\xd5\xdb\x29\x5d\xe0\x99\x6e\x4d\xb5\xef\x38\xeb\xd8\x0b\x8e\x35\x82\x80\x6d\x1b\x93\x56\x12\x1b\x43\x33\x8e\x2c\x93\xff\x59\x9a\xf0\x34\xce\x93\x48\x80\x80\x48\x40\x94\xc5\x20\x19\xe7\xec\x3a\xce\xef\xc8\xeb\x98\x58\xbf\x29\xc0\xc5\xfb\xa1\xde\x61\xfd\x9d\xd0\xe4\xd6\x6f\x4f\xe3\x5c\x6e\xea\xa6\x96\x33\x0f\xc3\xe5\x7a\x4b\xea\xb5\xc1\xc7\x87\xfb\xcd\xd3\xf3\x86\x9a\xb3\xf1\xd8\xa4\xad\x0e\x08\xb9\xb4\x25\x42\xd4\xa6\xfe\x38\x1e\x94\x36\x6d\x6a\x2f\xe3\xaa\x3f\xbd\x9c\x3f\xf9\x3f\x7b\x87\x38\xb5\x9b\xf9\xa2\x04\x84\xbc\x06\x97\xaf\x00\x00\x00\xff\xff\x06\xe0\x68\x52\xd0\x04\x00\x00")
var _publicAssetManifestJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x94\x31\x6f\xbb\x30\x10\xc5\x77\x3e\x85\xc5\xfc\x8f\xc1\x10\xf8\x87\xae\x55\x86\x4a\x55\x97\x8e\x55\x07\xdb\x9c\x15\x93\xe0\x44\xd8\x69\x53\x55\xf9\xee\x95\x11\x51\x1d\xc0\xa9\x55\x75\x8c\xfd\x7e\xef\xee\xde\xc5\x7c\x46\x08\xc5\x42\xee\x40\xc7\x77\xc8\xfe\x40\x28\x6e\xa9\x54\x98\x6b\x7b\x12\x27\x47\x99\x68\x43\x8d\xe4\x09\xd7\x3a\xe9\xaf\x40\xd4\x35\xa9\xf2\x15\xe6\x9b\xa3\xda\xf6\xca\x7f\x0e\xd9\x8c\xc1\x66\xe0\x28\x07\xf6\x3f\xad\xf2\x81\x6b\xc6\x18\x6e\xe9\x21\x14\xed\xb5\x03\xde\x1d\x95\x91\x2d\x2c\xbc\xd5\xaf\x04\x74\xc9\x78\xc6\x96\x2b\xa7\xfe\xc8\x60\xbe\x0f\x9f\x89\xdb\x89\x93\x54\x86\x49\x5d\x00\x4d\x8b\xd4\x89\x69\x1a\xe8\xac\xec\xda\xad\xb1\xaa\x92\x55\x82\x8a\x8c\x7e\x67\x37\x69\x70\x4e\x14\xe2\x34\x3f\xae\x4f\x38\x38\x4a\x55\xc3\x09\x6f\x4c\xbb\xbb\xa0\xce\xc9\xa0\x39\x74\xc0\x29\xdf\xd8\xc8\x94\x14\xa0\x0d\x2e\x58\xb6\x12\x65\x2a\x48\x2d\xd8\xb2\xa2\x9c\xf1\xa2\x24\x29\xa1\x24\x2f\x44\x9e\x96\xc4\x99\xeb\x77\xf0\x65\x5e\xe8\xde\x24\x87\xc5\xfb\xbe\xdb\x42\xe7\xa6\x35\xb9\x08\xdb\xdc\x4c\x46\x37\xa5\x53\x57\xcf\xcb\xf1\x18\xdf\x52\x07\xed\xf4\xf1\xe1\x7e\xfd\xf4\xbc\xc6\xe6\x64\xc2\x76\xeb\x02\x11\x42\x67\x5b\x25\x06\x65\xba\x8f\xc3\x5e\x2a\x63\x13\x7c\x19\x17\xfe\xe9\x5d\xfd\xc9\xff\x3c\x38\xca\xa9\x9d\xe7\xab\x13\x21\xf4\x1a\x9d\xbf\x02\x00\x00\xff\xff\x4e\xbe\x46\xa2\xfa\x04\x00\x00")
func publicAssetManifestJsonBytes() ([]byte, error) {
return bindataRead(
@@ -103,8 +103,8 @@ func publicAssetManifestJson() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "public/asset-manifest.json", size: 1232, mode: os.FileMode(0644), modTime: time.Unix(1598898920, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1d, 0x5f, 0x89, 0x1d, 0x97, 0x9e, 0xb4, 0xb, 0x40, 0xf1, 0xb3, 0xd0, 0xc4, 0x83, 0x54, 0x81, 0xa1, 0xf, 0x28, 0xc1, 0x19, 0x76, 0xbc, 0xda, 0xe9, 0x85, 0xf9, 0xd2, 0x2b, 0x2c, 0x42, 0xbd}}
info := bindataFileInfo{name: "public/asset-manifest.json", size: 1274, mode: os.FileMode(0644), modTime: time.Unix(1599169371, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5, 0x79, 0x9b, 0x4d, 0x87, 0xaf, 0x36, 0x10, 0x75, 0x90, 0xe5, 0xe8, 0x6b, 0xc5, 0xac, 0x5c, 0x89, 0x7b, 0x98, 0x3c, 0xc, 0xb0, 0x56, 0xfd, 0x5f, 0x47, 0x3d, 0x6b, 0x11, 0x87, 0xd7, 0x53}}
return a, nil
}
@@ -123,12 +123,12 @@ func publicFaviconIco() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "public/favicon.ico", size: 1406, mode: os.FileMode(0644), modTime: time.Unix(1598898920, 0)}
info := bindataFileInfo{name: "public/favicon.ico", size: 1406, mode: os.FileMode(0644), modTime: time.Unix(1599169371, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa8, 0xd7, 0x88, 0x1f, 0xb2, 0xec, 0x4c, 0x44, 0x6, 0xe0, 0x9, 0xf3, 0x63, 0x66, 0x79, 0x3a, 0xde, 0x56, 0xb, 0x35, 0xe6, 0x21, 0x9, 0xe6, 0x72, 0xbc, 0xe7, 0x8c, 0xce, 0xb4, 0x3, 0xc1}}
return a, nil
}
var _publicIndexHtml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x56\x6f\x6f\xdb\x36\x13\xff\x2a\x32\x1f\x40\x10\x11\x9a\x96\xf3\xb4\x45\x6b\x8b\xde\x9b\xbd\x2a\xb0\xb5\x40\xf7\x66\x10\x84\x82\xa6\x4e\x11\x13\x9a\x14\xc8\x93\xb3\xc0\xd1\x77\x1f\x28\xc9\x76\xd3\x35\x5b\x0d\xc3\x22\x8f\xf7\x3b\xfe\xee\x8f\xee\x5c\x2c\x6a\xa7\xf0\xa9\x83\xa4\xc5\x83\xd9\x15\xf1\x37\x31\xd2\xde\x09\x02\x96\xec\x8a\x16\x64\xbd\x2b\x0e\x80\x32\x51\xad\xf4\x01\x50\x90\x1e\x9b\xe5\x7b\x32\x4b\xad\x3c\x80\x20\x47\x0d\x8f\x9d\xf3\x48\x12\xe5\x2c\x82\x45\x41\x1e\x75\x8d\xad\xa8\xe1\xa8\x15\x2c\xc7\x0d\xd3\x56\xa3\x96\x66\x19\x94\x34\x20\xd6\x2c\xb4\x5e\xdb\x87\x25\xba\x65\xa3\x51\x58\xf7\xd2\x26\xb6\x70\x80\xa5\x72\xc6\xf9\x6f\xcc\xfe\x2f\x1f\x3f\x64\x57\x18\x6d\x1f\x12\x0f\x46\x90\x83\xb4\xba\x81\x80\x24\x69\x3d\x34\x82\xac\xce\x02\x7e\x1f\x9c\x7d\xa1\x1a\x5a\xe7\x51\xf5\x98\x68\xe5\xec\x45\xbf\x91\xc7\xb8\xe7\x5a\x45\x0e\xa8\xd1\xc0\xee\xd7\xdf\xdf\xdc\x26\x9f\x65\x40\x28\x56\x93\x64\x32\x33\x43\x02\x4a\xd4\x6a\xa5\x42\x58\xdd\xf2\x75\xfd\x16\x64\xfe\x36\xe7\xaa\xed\xed\x03\x57\x21\x90\xf9\x3a\x7c\x32\x10\x5a\x00\x24\xaf\xc2\x0f\x52\x5b\x0e\x4d\x5d\xaf\x3f\xfc\xff\xfd\xbf\x5b\x58\x4d\xe9\xd8\xbb\xfa\x69\x57\x58\x17\x94\xd7\x1d\xee\xfe\x74\x7d\x62\x01\xea\x04\x5d\x02\x56\xee\x0d\x24\x1f\xe5\x51\x7e\x19\x4f\xa3\xd0\xf7\x36\xc1\x56\x87\x44\x76\x1d\x2f\x56\x17\x60\x51\xeb\x63\xa2\x6b\x41\xbc\x73\xa3\xf9\x5a\x1f\x77\xc5\x7c\xb8\x68\x7a\xab\x50\x3b\x9b\x01\x3d\x9d\xd7\x09\x66\x48\x4f\x8d\xf3\xd9\x51\xfa\xc4\x32\xc3\xa4\xc0\x32\xaf\x58\x27\xb0\x5c\x57\xac\x11\x58\xde\x56\x4c\x89\x9c\x05\x51\x56\x5b\x55\x48\x6e\xc0\xde\x61\xbb\x55\x37\x37\xd4\x08\x59\xaa\x8a\x7d\xda\xdf\x83\x42\xde\x79\x87\x2e\xd6\x1e\x6f\x65\xf8\xf4\x68\x3f\x7b\xd7\x81\xc7\x27\xae\xa4\x31\x99\x63\x86\xa6\xa9\x2b\x4d\x95\xa6\x81\x77\x7d\x68\xb3\xb8\x29\xf3\x8a\xb2\xb8\x10\xf9\x36\xf2\xb0\x89\xb6\x49\x47\x7f\xca\x64\xc7\x2c\x4d\xd3\x0c\x4a\x5b\x89\xae\xb4\x15\x1d\x2d\xe8\x34\xd5\x19\xd2\x6d\x38\x33\xa5\x81\x87\x56\x37\x98\xd1\x8c\x6e\x3d\x60\xef\x6d\xd2\x8f\x0c\xb8\xec\x3a\xf3\x94\xf5\xac\x79\x7e\x2e\x2b\xca\x7c\x46\x87\x4b\x68\x7c\x76\x8d\x0c\x30\x14\xf9\x16\x8b\xfe\x6c\x13\x6f\x6e\xae\xa7\x5e\xf4\x25\x56\xcc\x8a\x45\xce\xa4\x58\x6f\x65\xe1\xcf\x7a\x32\xea\x45\x9d\x4e\xf8\x52\x56\xdb\x7c\x21\x84\x2b\xbb\x2a\x4d\x33\x2b\x16\x6b\x3a\xd8\x34\xcd\x7a\x1e\x3a\xa3\x15\x64\xb8\x5c\xb2\x35\x65\x20\x4c\x66\x78\x10\x3e\x06\x87\x0e\x33\x65\x18\xc6\x1c\x89\xd3\xc0\x9c\x38\xad\x37\xf9\xc0\xfa\x98\x93\x0b\x61\x13\x73\xa9\x9b\xcc\x96\x58\xd1\x19\x14\xd7\x1c\xfe\x8a\xef\x72\xd8\x4e\x5c\xa3\x48\x9c\xf4\x06\x99\xd9\x2c\xd6\x6c\x3e\xdc\x9c\x86\xe1\x1c\x1c\x88\xa0\x31\xc2\xfe\x8c\x65\x9e\x5d\xd7\x86\x32\xcf\x4d\xf4\xf6\x22\x1b\x0c\x3f\x08\x60\x86\x2b\x61\x99\xe1\xb5\xb8\x56\x1b\x43\xe6\xe9\xc9\x70\x17\x97\xf4\xf9\x79\x4e\x6d\x0d\x8d\xb6\x70\x4e\xe8\xa8\x76\x02\xdb\x1f\xc0\xc7\x8a\xdf\x2c\x72\x76\x07\xb8\xf1\x03\x1d\x98\xe1\x5e\x7c\x5b\xbd\xa4\xb7\x13\xba\x26\x0b\x11\xab\xc3\x35\xc9\x97\xa7\xc3\xde\x99\x34\x9d\x9e\x1c\xdd\x17\xf4\xda\xde\xfd\x21\xef\xd2\xf4\xb5\x1b\xff\xa9\xcb\x4e\x47\x69\x7a\xd8\x90\xdf\x5c\xdd\x1b\x20\x03\x65\xaf\x81\xc9\xd7\xaf\x10\x66\xb5\x33\x6c\x91\x4f\x74\xf1\x85\xfb\x63\x52\xd6\x29\xc6\x52\x15\x26\x03\x4a\xd9\xfb\x14\xcf\x19\x82\xad\x6e\xb2\x37\xf1\x94\xb8\xf1\x2a\x22\xce\x3e\x41\x9a\xc6\x2f\xbf\xde\x74\x05\x4d\xb9\x9c\xc9\x29\x0f\x12\x21\xb3\xbd\x31\x34\x9a\x33\xdc\x67\xfe\x35\xea\x9e\x91\x1a\x1a\xd9\x1b\x24\xdf\x47\x7c\xf2\x02\x06\xca\x6e\x47\x42\x61\x8c\xcb\x35\xc8\x40\x2f\xad\x22\xbe\xa6\x40\x0d\xaf\x33\xcf\x2c\xbb\xb8\x8b\xf4\xf4\x4d\x11\x0d\x7c\xaf\x6d\x3d\xf2\x62\x96\x5e\x5e\x3e\x1f\x63\x64\x5f\xa4\x34\xda\x44\xf1\x9d\xb7\xbf\x5c\x34\xae\x56\xf9\xcc\x7d\xd8\xfc\xe0\xf0\x52\xc1\x91\x17\x32\x22\x09\x43\xca\x30\x5e\xe7\xbe\x4b\xc9\xac\xf8\x53\x7d\x26\x02\xa2\x8d\x4e\x90\x15\x19\x23\x2f\x45\xec\xbf\xfc\x11\xf6\x9d\x54\x0f\x1f\x83\xb3\x5d\x17\x47\xcb\x2b\xe2\xd8\x5d\x58\x27\xe4\xd4\x74\xc6\x98\x48\xba\x9d\xb6\x02\x99\x14\x92\x87\xb1\x01\x4c\x1d\x2c\xde\xd0\xc4\x7e\x78\xed\xb6\xcd\xcd\x0d\xc5\x4c\x96\x4d\x45\x47\x02\x5a\x74\xdb\xd8\xad\xb2\xb2\xa2\xc5\xea\xdc\xff\xa7\x67\x12\xbc\xba\x8e\xa4\xfb\x38\xd0\xde\xed\x3f\x34\xb2\xb9\x95\xf3\x38\xba\x0f\x71\x3a\xfc\x07\x6a\x9c\x63\xfb\x77\xeb\xdb\x7d\xfd\xf6\xc7\xc0\xd5\x34\xb8\x56\xe3\x5f\x8d\xbf\x03\x00\x00\xff\xff\x7c\xaf\x42\xeb\x7a\x08\x00\x00")
var _publicIndexHtml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x56\x6f\x6f\xdb\xb6\x13\xfe\x2a\x32\x7f\x80\x20\x22\x34\x2d\xa7\xed\x6f\xad\x2d\x7a\x6f\xf6\xaa\xc0\xd6\x02\xdd\x9b\x41\x10\x0a\x9a\x3a\x45\x4c\x68\x52\x20\x4f\xce\x0c\x47\xdf\x7d\xa0\xe4\x3f\x49\xd7\x74\x0d\x82\x88\x3a\xde\xf3\xf0\xe1\xdd\xe9\x2e\xc5\xac\x76\x0a\x0f\x1d\x24\x2d\xee\xcc\xa6\x88\x7f\x13\x23\xed\x9d\x20\x60\xc9\xa6\x68\x41\xd6\x9b\x62\x07\x28\x13\xd5\x4a\x1f\x00\x05\xe9\xb1\x99\xbf\x27\x27\xab\x95\x3b\x10\x64\xaf\xe1\xb1\x73\x1e\x49\xa2\x9c\x45\xb0\x28\xc8\xa3\xae\xb1\x15\x35\xec\xb5\x82\xf9\xf8\xc2\xb4\xd5\xa8\xa5\x99\x07\x25\x0d\x88\x25\x0b\xad\xd7\xf6\x61\x8e\x6e\xde\x68\x14\xd6\xbd\xe4\xc4\x16\x76\x30\x57\xce\x38\xff\x8c\xf6\x7f\xf9\xf8\x43\x36\x85\xd1\xf6\x21\xf1\x60\x04\xd9\x49\xab\x1b\x08\x48\x92\xd6\x43\x23\xc8\xa2\xd7\x8b\xb3\x8d\xdf\x07\x67\x5f\x78\x87\xd6\x79\x54\x3d\x26\x5a\x39\xfb\x1c\xd2\xc8\x7d\x34\x71\xad\xa2\x12\xd4\x68\x60\xf3\xdb\x1f\x6f\x6f\x93\xcf\x32\x20\x14\x8b\xc9\x32\x31\x5d\x51\x01\x25\x6a\xb5\x50\x21\x2c\x6e\xf9\xb2\x7e\x07\x32\x7f\x97\x73\xd5\xf6\xf6\x81\xab\x10\xc8\xe9\x50\x3c\x18\x08\x2d\x00\x92\x1f\x31\xec\xa4\xb6\x1c\x9a\xba\x5e\x7e\x78\xf3\xfe\xc7\x24\x8b\x29\x35\x5b\x57\x1f\x36\x85\x75\x41\x79\xdd\xe1\xe6\x2f\xd7\x27\x16\xa0\x4e\xd0\x25\x60\xe5\xd6\x40\xf2\x51\xee\xe5\x97\x71\x37\x1a\x7d\x6f\x13\x6c\x75\x48\x64\xd7\xf1\x62\x71\x01\x16\xb5\xde\x27\xba\x16\xc4\x3b\x37\xd2\xd7\x7a\xbf\x29\x4e\x9b\xb3\xa6\xb7\x0a\xb5\xb3\x19\xd0\xe3\x79\x9d\x60\x86\xf4\xd8\x38\x9f\xed\xa5\x4f\x2c\x33\x4c\x0a\x2c\xf3\x8a\x69\x81\xe5\xb2\x62\x9d\xc0\xf2\xb6\x62\x4a\xe4\x2c\x88\xb2\x5a\xab\x42\x72\x03\xf6\x0e\xdb\xb5\xba\xb9\xa1\x46\xc8\x52\x55\xec\xd3\xf6\x1e\x14\xf2\xce\x3b\x74\xb1\x0e\x79\x2b\xc3\xa7\x47\xfb\xd9\xbb\x0e\x3c\x1e\xb8\x92\xc6\x64\x8e\x19\x9a\xa6\xae\x34\x55\x9a\x06\xde\xf5\xa1\xcd\xe2\x4b\x99\x57\x94\xc5\x85\xc8\xd7\x51\x87\x4d\xb4\x4d\x34\xfd\x29\x4a\xcd\x2c\x4d\xd3\x0c\x4a\x5b\x09\x5d\xda\x8a\x8e\x0c\x4d\x9a\x36\x19\xd2\x75\x38\x2b\xa5\x81\x87\x56\x37\x98\xd1\x8c\xae\x3d\x60\xef\x6d\xd2\x8f\x0a\xb8\xec\x3a\x73\xc8\x7a\xd6\x3d\x3d\x95\x15\x65\x3e\xa3\xc3\x25\x34\x3e\xbb\x46\x06\x18\x8a\x7c\x8d\x45\x7f\xe6\xc4\x9b\x9b\xeb\xae\x17\x7d\x89\x15\xb3\x62\x96\x33\x29\x96\x6b\x59\xf8\xb3\x9f\x8c\x7e\xd1\x47\x0b\x5f\xca\x6a\x9d\xcf\x84\x70\xa5\xae\xd2\x34\xb3\x62\xb6\xa4\x83\x4d\xd3\xac\xe7\xa1\x33\x5a\x41\x86\xf3\x39\x5b\x52\x06\xc2\x64\x86\x07\xe1\x63\x70\xe8\x70\x92\x0c\xc3\x98\x23\x71\x1c\x98\x13\xc7\xe5\x2a\x1f\x58\x1f\x73\x72\x11\x6c\x62\x2e\x75\x93\xd9\x12\x2b\x7a\x02\xc5\x35\x87\xbf\xe3\x77\x1d\xd6\x93\xd6\x68\x12\x47\xbd\x42\x66\x56\xb3\x25\x3b\x6d\xae\x8e\xc3\x70\x0e\x0e\x44\xd0\x18\x61\x7f\xc6\x32\xcf\xae\x6b\x43\x99\xe7\x26\xde\xf6\x62\x1b\x0c\xdf\x09\x60\x86\x2b\x61\x99\xe1\xb5\xb8\x56\x1b\x43\xe6\xe9\xd1\x70\x17\x97\xf4\xe9\xe9\x94\xda\x1a\x1a\x6d\xe1\x9c\xd0\xd1\xed\x08\xb6\xdf\x81\x8f\x15\xbf\x9a\xe5\xec\x0e\x70\xe5\x07\x3a\x30\xc3\xbd\x78\x5e\xbd\xa4\xb7\x13\xba\x26\x33\x11\xab\xc3\x35\xc9\x97\xc3\x6e\xeb\x4c\x9a\x4e\x4f\x8e\xee\x0b\x7a\x6d\xef\xfe\x94\x77\x69\xfa\xda\x89\xff\xf6\x65\xc7\xbd\x34\x3d\xac\xc8\xef\xae\xee\x0d\x90\x81\xb2\xd7\xc0\xe4\xeb\x57\x08\x27\xb7\x33\x6c\x96\x4f\x72\xf1\xc5\xf5\xc7\xa4\x2c\x53\x8c\xa5\x2a\x4c\x06\x94\xb2\xf7\x29\x9e\x33\x04\x6b\xdd\x64\x6f\xe3\x2e\x71\xe3\x51\x44\x9c\xef\x04\x69\x1a\x7f\xf9\xf5\xa4\x2b\x68\xca\xe5\x49\x9c\xf2\x20\x11\x32\xdb\x1b\x43\x23\x9d\xe1\x3e\xf3\xaf\x49\xf7\x8c\xd4\xd0\xc8\xde\x20\xf9\x36\xe2\xd3\x2d\x60\xa0\xec\x76\x14\x14\xc6\xb8\x5c\x83\x0c\xf4\xd2\x2a\xe2\x67\x0a\xd4\xf0\x3a\xf3\xcc\xb2\xcb\x75\x91\x1e\x9f\x15\xd1\xc0\xb7\xda\xd6\xa3\x2e\x66\xe9\xe5\xe3\xf3\x31\x46\xf6\x45\x4a\x23\x27\x8a\x6f\x6e\xfb\xeb\xc5\xe3\xca\xca\x4f\xda\x87\xd5\x77\x36\x2f\x15\x1c\x75\x21\x23\x92\x30\xa4\x0c\xe3\x71\xee\x9b\x94\x9c\x1c\x7f\xaa\xcf\x44\x40\xe4\xe8\xa6\x5e\x4f\xc6\xe0\x4b\x11\x5b\x30\x7f\x84\x6d\x27\xd5\xc3\xc7\xe0\x6c\xd7\xc5\x19\xf3\x8a\x39\x36\x18\xa6\x85\x9c\xfa\xce\x18\x16\x49\xd7\xd3\xab\x40\x26\x85\xe4\x61\xec\x01\x53\x13\x8b\x27\x74\x22\x5f\x77\xd7\x86\xdb\xdd\xdc\x50\xcc\x64\xd9\x55\x74\x14\xd0\x08\xbd\x8e\x0d\x2b\x2b\x2b\x5a\x2c\xce\x23\x60\x7a\x26\xc1\xab\x17\x83\xe9\x3e\x4e\xb6\xff\x6f\x3f\x34\xb2\xb9\x95\xa7\xa1\x74\x1f\xe2\x8c\xf8\x6f\xe0\x38\xd0\xa4\x82\xed\x2f\xf9\x87\x37\xdf\xc5\x2e\xa6\x09\xb6\x18\xff\xff\xf8\x27\x00\x00\xff\xff\x20\x00\x89\xac\x8f\x08\x00\x00")
func publicIndexHtmlBytes() ([]byte, error) {
return bindataRead(
@@ -143,12 +143,12 @@ func publicIndexHtml() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "public/index.html", size: 2170, mode: os.FileMode(0644), modTime: time.Unix(1598898920, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x48, 0x23, 0x6, 0x89, 0x49, 0xfe, 0x14, 0x2c, 0x2a, 0x2a, 0x37, 0xec, 0xb9, 0x3e, 0x1e, 0x27, 0xcd, 0x81, 0x3, 0xdf, 0xbb, 0x5c, 0x3f, 0xc, 0x34, 0x36, 0xe9, 0xbc, 0xf6, 0x5c, 0x46, 0x9c}}
info := bindataFileInfo{name: "public/index.html", size: 2191, mode: os.FileMode(0644), modTime: time.Unix(1599169371, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xba, 0x50, 0x0, 0xc9, 0x95, 0x21, 0x48, 0xd8, 0x1e, 0x20, 0x68, 0xa6, 0x18, 0x5e, 0x49, 0x2c, 0x2, 0x28, 0xb9, 0x3, 0x9c, 0x8c, 0xdb, 0xb, 0x1c, 0x60, 0x32, 0xdb, 0xce, 0x5d, 0xcc, 0xf2}}
return a, nil
}
var _publicManifestJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x64\x8f\xc1\x4e\x03\x21\x10\x86\xef\x3c\xc5\x04\xaf\xba\xb5\x94\xec\xa1\x67\xcf\xc6\xbb\x31\x9b\x91\xa5\x5d\x22\xcb\x34\x30\x35\xd4\xa6\xef\x6e\x06\x34\x1e\xe4\xc0\x61\xbe\x6f\x7e\x7e\xae\x0a\x40\x97\x85\x32\x4f\x09\x57\xaf\xf7\xa0\x9f\x9e\xad\x81\x17\x2c\xec\xf5\xbd\xd0\xdf\x79\x1b\x01\x13\x45\x38\x50\x06\xd1\xba\x10\x1c\xa5\xa2\xf7\xf0\xaa\x00\x00\xae\xed\x96\xd4\xec\x64\xed\x80\x9f\x22\x0c\xc1\x51\xd3\x3b\x0b\x5f\x5e\x56\xf4\x68\xeb\x68\x61\x67\xea\xce\x80\xb1\xd5\x58\xd8\x8e\x75\x3b\xfe\x99\x7c\x39\xb5\xd7\xc3\x8a\x47\xbf\xa9\x0f\x92\xa5\x1b\xbc\x29\x80\xb7\x56\xa0\x30\x66\x9e\xce\x39\x8a\x38\x6c\x42\x9a\x7d\x1d\x16\x5e\x63\xef\x37\x87\x72\x8a\x78\x11\x58\x18\xd3\x8c\x91\xd2\xcf\xdf\x78\xf1\xab\x9f\x1c\x45\xca\x82\xef\x1e\xdb\xe9\xec\x1d\xdd\xc7\x31\xd3\x39\xcd\xff\x05\x75\x53\xdf\x01\x00\x00\xff\xff\x5e\x63\xda\x82\x3a\x01\x00\x00")
var _publicManifestJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x64\x8f\xb1\x4e\xc3\x30\x10\x86\x77\x3f\xc5\xc9\xac\xd0\x50\xd7\xca\xd0\x99\x19\xb1\x23\x14\x1d\x8e\xdb\x58\x38\xbe\xca\xbe\x20\x97\x2a\xef\x8e\xce\x01\x31\xe0\xc1\xc3\x7d\xdf\xfd\xfe\x7d\x53\x00\xba\x4c\x94\x79\x48\x38\x7b\x7d\x04\xfd\xf4\x6c\x0d\xbc\x60\x61\xaf\xef\x85\xfe\xce\xdb\x08\x98\x28\xc2\x89\x32\x88\xb6\x09\xc1\x51\x2a\xfa\x08\xaf\x0a\x00\xe0\xd6\x6e\x49\xcd\x4e\xd6\x4e\xf8\x29\xc2\x2e\x38\x6a\xfa\xc6\xc2\x97\x97\x15\xdd\xdb\xda\x5b\x38\x98\x7a\x30\x60\x6c\x35\x16\xf6\x7d\xdd\xf7\x7f\x26\x5f\x2f\xed\xf5\x30\xe3\xd9\x77\xf5\x41\xb2\x74\x83\xab\x02\x78\x6b\x05\x0a\x63\xe6\x61\xc9\x51\xc4\x6e\x09\x5d\x48\xa3\xaf\xbb\x89\xe7\xb8\x35\x1c\x43\xb9\x44\xbc\x0a\x2e\x8c\x69\xc4\x48\xe9\xe7\x77\x3c\xf9\xd9\x0f\x8e\x22\x65\xc1\x77\x8f\xed\x6c\xec\x1d\xdd\xc7\x39\xd3\x92\xc6\xff\x82\x5a\xd5\x77\x00\x00\x00\xff\xff\x0c\x7f\x57\xd0\x3c\x01\x00\x00")
func publicManifestJsonBytes() ([]byte, error) {
return bindataRead(
@@ -163,8 +163,8 @@ func publicManifestJson() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "public/manifest.json", size: 314, mode: os.FileMode(0644), modTime: time.Unix(1598898920, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x84, 0xae, 0xfa, 0x9b, 0xa1, 0xa5, 0x6c, 0x1e, 0x9f, 0x38, 0xe4, 0xe, 0x17, 0x0, 0xff, 0x9b, 0x86, 0x21, 0x4a, 0x69, 0xb2, 0xb3, 0x6b, 0x70, 0x24, 0xc6, 0x9e, 0x5d, 0x3b, 0x46, 0x56, 0x78}}
info := bindataFileInfo{name: "public/manifest.json", size: 316, mode: os.FileMode(0644), modTime: time.Unix(1599169371, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2b, 0xcf, 0x43, 0xba, 0x4a, 0x5, 0xb1, 0x8, 0xbc, 0xa7, 0x2e, 0xa5, 0x84, 0x8e, 0x4, 0x4b, 0x0, 0xf2, 0x9d, 0xc5, 0x86, 0x99, 0x41, 0xca, 0xea, 0x86, 0x31, 0x7a, 0x26, 0xdd, 0xe, 0x92}}
return a, nil
}
@@ -183,32 +183,32 @@ func publicPasteSh() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "public/paste.sh", size: 1600, mode: os.FileMode(0755), modTime: time.Unix(1598898920, 0)}
info := bindataFileInfo{name: "public/paste.sh", size: 1600, mode: os.FileMode(0755), modTime: time.Unix(1599169371, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x90, 0xe0, 0xa6, 0x70, 0x30, 0x16, 0xec, 0xb8, 0xfb, 0xee, 0xdb, 0x2b, 0x2a, 0xc6, 0x95, 0x53, 0x37, 0xb3, 0xbc, 0x14, 0xd1, 0x4f, 0x13, 0x5a, 0x31, 0x9a, 0xb8, 0xb9, 0x61, 0xda, 0xda, 0x6d}}
return a, nil
}
var _publicPrecacheManifest89e28f4263961b30acac0ac081cf2992Js = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x90\x4d\x6b\x22\x41\x10\x86\xef\xf3\x2b\x9a\x39\x29\xb8\x6d\x7f\x7f\xec\xb2\xa7\xe0\x21\x90\xe4\x92\xa3\x88\xd4\x54\x77\xe3\x18\x1d\xc3\x74\x1b\x84\x98\xff\x1e\x4c\xcc\x25\x44\x51\xc8\xb9\xaa\x9e\xa7\xde\x37\xc7\x55\xa2\xf3\xf9\x73\x1f\x11\x70\x11\xef\xa1\x6b\x53\xcc\x85\xfc\x27\x83\x53\xa3\xfd\x9e\x4c\x67\x43\x8a\x9b\x0e\xa1\x0c\xa6\x15\x21\xaf\x15\x21\x84\xd4\x7d\x7c\x69\x73\xbb\xe9\xea\xbf\xa4\xf6\x89\x29\xcd\x94\xb0\xc1\x6a\xdb\x78\x8d\x10\x45\x23\x85\x0e\xd6\x7b\x04\xe1\xeb\xd1\xe7\xcd\xb6\x5f\x1d\xd6\xc7\x6d\x17\xe2\x8e\x2e\xca\x7a\x55\x57\x84\xbc\x8d\x7e\xa6\x72\x29\x84\x44\xa9\x43\x02\x65\x2c\x3a\x26\x53\xf8\x4e\xca\x05\x4a\x8b\x63\xcc\x79\x2c\x28\x0f\x3a\x02\xd3\x8c\xe2\x62\xdb\x3d\x51\xcc\xf9\x1c\xde\x79\x6e\xb8\xf4\x1e\xa2\x32\x8e\xa3\x16\x91\xb1\x33\xf8\x35\xb4\x1d\x8d\x29\x04\xee\xa5\xbb\xcc\x70\x45\x80\xe5\xe1\x7f\xd3\xf8\x04\x49\xc0\x91\xbe\x3c\x0b\x57\x3e\x24\xc5\x01\x74\x4c\xdc\x0a\x2f\x18\xb3\x60\x92\xd4\x5a\x26\x8f\x4e\xeb\xab\x44\xf4\xee\xf6\x66\xf2\xf0\x38\xa1\x65\x57\x7e\xa9\xb3\xe5\xb1\xb2\xc6\x70\xd1\x04\x7d\x59\x28\x86\x18\x35\x53\x46\x39\xd6\x38\xde\x00\xa0\x77\xa7\xf9\xfd\xb6\x2b\xed\x3a\xfe\xf9\xf0\x48\xc3\x6d\xf2\x68\xbf\x0c\xd5\x6c\xf8\xef\x3d\x00\x00\xff\xff\x81\x4b\x5a\x79\xf0\x02\x00\x00")
var _publicPrecacheManifest5b28f60f1dfb49acbc56101a135f3061Js = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\xd0\xbd\x8a\x1b\x31\x14\x05\xe0\x7e\x9e\x42\x4c\xb5\x0b\x1b\x8d\xfe\x7f\x12\x52\x85\x2d\x02\x49\x9a\x94\xcb\x62\xa4\x2b\x5d\x2c\xc7\x1e\x87\x91\x26\x18\xe2\xbc\x7b\x30\x76\x3a\x67\xb0\x61\x6b\xe9\x9e\x8f\x73\x6a\xde\x22\x5d\xad\x7e\x4e\x19\x02\xac\xf3\xd7\x30\x16\xcc\xb5\x91\x8f\xe4\xe1\x7f\x4f\xc7\x23\x79\x79\x7d\xa4\xb0\x1f\x21\xb4\x87\x97\x8e\x90\xdf\x1d\x21\x84\xf4\x53\xfe\x55\x6a\xd9\x8f\xfd\x7b\xd2\x33\xc6\xbc\xcc\x2a\x18\xe7\xc1\x5b\xab\x39\xb8\xc4\x32\x08\xcd\x84\x12\xc6\xc9\xfe\xe9\x7c\x33\x4f\xdb\xd3\xf7\x61\x2e\x43\x19\x53\x3e\xd0\x75\xdb\x6d\xfb\x8e\x90\x3f\x4f\xd7\x83\xb9\x14\x42\x82\xd4\x09\x83\x32\x16\x1c\x93\x98\xae\x84\xd5\x16\x5a\x81\x01\x6a\x1d\x04\xe5\x49\xe7\xc0\x34\xa3\xb0\x9e\xc7\x1f\x14\x6a\x5d\x12\x02\x17\x91\x59\x81\x0a\xa3\x62\xce\x1b\x9e\xbc\x5d\x16\x76\xa1\x8c\x34\x63\x4a\xdc\x4b\x77\x1b\x72\x5f\x8d\xcd\xa9\x85\x89\x1e\x03\x8a\x70\x01\x36\x8b\xf9\xca\x27\x54\x3c\x04\x9d\x91\x5b\xe1\x05\x63\x36\x18\x94\x5a\x4b\xf4\xe0\xb4\xbe\xd7\xa2\x5f\x3e\x7f\x7a\xfe\xf6\xfd\x99\xb6\x43\x7b\xbb\xf1\x36\x97\xed\x02\xe4\x68\x99\x97\x37\x55\x33\x09\xb4\xe0\xc8\xd1\x4b\x05\x22\x5a\x69\x30\x2e\x12\xd3\x3c\xb6\xb2\xcb\xef\xce\x94\x8a\x20\xa2\x72\xff\x90\xee\xf5\xf1\xc3\xdf\x00\x00\x00\xff\xff\xeb\x8f\x22\x55\x05\x03\x00\x00")
func publicPrecacheManifest89e28f4263961b30acac0ac081cf2992JsBytes() ([]byte, error) {
func publicPrecacheManifest5b28f60f1dfb49acbc56101a135f3061JsBytes() ([]byte, error) {
return bindataRead(
_publicPrecacheManifest89e28f4263961b30acac0ac081cf2992Js,
"public/precache-manifest.89e28f4263961b30acac0ac081cf2992.js",
_publicPrecacheManifest5b28f60f1dfb49acbc56101a135f3061Js,
"public/precache-manifest.5b28f60f1dfb49acbc56101a135f3061.js",
)
}
func publicPrecacheManifest89e28f4263961b30acac0ac081cf2992Js() (*asset, error) {
bytes, err := publicPrecacheManifest89e28f4263961b30acac0ac081cf2992JsBytes()
func publicPrecacheManifest5b28f60f1dfb49acbc56101a135f3061Js() (*asset, error) {
bytes, err := publicPrecacheManifest5b28f60f1dfb49acbc56101a135f3061JsBytes()
if err != nil {
return nil, err
}
info := bindataFileInfo{name: "public/precache-manifest.89e28f4263961b30acac0ac081cf2992.js", size: 752, mode: os.FileMode(0644), modTime: time.Unix(1598898920, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd0, 0xe4, 0xd2, 0xcb, 0x6e, 0x3c, 0xc0, 0x6, 0xb6, 0xc, 0xa7, 0x9b, 0x86, 0xcb, 0x2e, 0xf0, 0xd, 0x41, 0x68, 0x82, 0xf4, 0xfd, 0x4c, 0x1f, 0xbf, 0xe5, 0x30, 0xb8, 0x5a, 0x97, 0xf5, 0x61}}
info := bindataFileInfo{name: "public/precache-manifest.5b28f60f1dfb49acbc56101a135f3061.js", size: 773, mode: os.FileMode(0644), modTime: time.Unix(1599169371, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xcc, 0x73, 0xc8, 0x1c, 0xbf, 0x90, 0xb4, 0xe6, 0x87, 0x12, 0x80, 0xd0, 0x3b, 0x4e, 0x4d, 0xdd, 0x8f, 0x4e, 0xdb, 0xe0, 0xfa, 0xdc, 0xa8, 0x1c, 0xb0, 0x21, 0x30, 0xd7, 0xb9, 0x3d, 0xc0, 0x4f}}
return a, nil
}
var _publicServiceWorkerJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x93\x71\x6f\xdb\x36\x10\xc5\xff\xd7\xa7\xb8\x19\x43\x6d\xa7\x0e\x99\x38\x45\x11\x37\xf0\x86\xa2\xdb\xba\xa0\x59\x91\xda\x29\x8c\x21\x71\x03\x9a\x3c\x49\x9c\x29\x9e\xc6\xa3\xe2\x1a\x6d\xbf\xfb\x40\x59\x4e\xb7\xae\xfe\xcf\x26\xdf\xfd\x78\xef\xee\x49\x1e\x1d\x65\x70\x04\x0b\x74\x9a\x2a\x84\x48\xb0\xa5\x26\xc0\x82\xc2\x7a\x45\x1f\x8f\x6b\xda\x60\x40\x03\x8c\xe1\xc1\x6a\x84\x0d\x85\x35\x86\x1f\x32\x68\xab\xfe\xa4\xa6\xef\x1c\x78\x44\x93\x2a\x03\x16\x96\x23\x06\x88\xa5\x65\xc8\xad\x43\xb0\x7e\xc7\xdb\xe0\x0a\x54\x5d\x83\xf2\x26\x1d\x00\x97\xd4\x38\x93\x18\xc6\xb2\x5a\x39\x84\xdf\x6f\x6e\xae\x41\x2b\x5d\x5a\x5f\x40\x4e\xff\x86\x44\x22\x91\xa4\x73\x44\x28\x63\xac\xf9\x85\x94\x05\x91\x28\x9c\xf4\xe5\xbb\xf2\x75\xdd\xb5\x73\x53\x22\x04\xe4\x08\x94\x43\x2c\x11\x34\x19\x04\xcb\xa0\x9a\x48\xc7\x05\x7a\x0c\x2a\xa2\x11\x70\xed\x50\x31\x82\x21\xdf\x8f\xd0\xd4\x46\x45\xfc\xfa\xda\xae\xa7\x80\x3a\xba\xed\x05\x58\xcf\x11\x95\x19\x41\xa5\xd6\x08\xba\x54\xbe\x40\xfe\x76\x4a\xb0\x6a\xac\x33\xa0\xc9\xe7\xb6\x68\x82\x8a\x96\x7c\xc2\x24\xb3\x01\x8f\x43\xd3\x0d\x61\x27\xab\x03\x69\x64\x3e\xe4\x68\xac\x66\xbf\x70\x99\xc1\x91\xcc\x32\x5b\xd5\x14\xe2\x5c\x07\x5b\x47\x1e\xf4\xf6\x4a\x8e\x14\x54\x81\xa2\x20\x2a\x1c\xaa\xda\xb2\xd0\x54\xc9\x4d\xb7\x33\x6d\xbc\x0c\xd8\x7a\x64\xf9\x4c\x9c\x89\xd3\xc7\x2b\xde\x88\xbf\xb8\x37\xbc\xf8\x16\x9d\x01\xf4\x64\x1d\x30\xcd\x1f\x8f\x2b\xe5\x6d\x8e\x1c\xc5\xf9\x04\xc7\xe7\xf9\xb3\xf1\xf3\xb3\xc9\xf3\xd3\xd5\xd9\x89\xd2\x4a\x9f\x28\x7d\x72\x7e\xaa\xf3\xf1\x64\x32\x4e\xb0\x2c\xd1\x18\x5d\x2e\x94\x31\xbf\x3e\xa0\x8f\x57\x29\x04\x1e\xc3\xa0\x5f\x21\xb3\x2a\xb0\x3f\x82\x01\xa6\x9b\x21\x4c\x7f\x82\x4f\x19\x80\xcd\xbb\x13\x61\x54\x54\xf0\xe4\x09\x7c\xfd\x27\xe2\xb6\x46\x98\x4e\xa7\xd0\x9f\xbf\xb9\xbc\xbe\x5f\xbc\xbc\xbc\xb9\x7c\xfb\xba\x3f\x6c\x2b\x01\xda\xb7\x78\x6d\xeb\x85\xb2\xd1\xfa\x62\x30\xbc\xc8\x00\xbe\x64\x5f\x52\x23\x9d\x51\xa1\x29\xa0\xd0\xce\xa2\x8f\xfc\xca\x29\x5b\x25\x55\xd6\x85\x3d\xe5\xa4\x13\xce\x17\x62\x6f\xfb\xa5\x37\x33\x6a\x22\x0e\x86\x50\x61\x2c\xc9\x00\xe6\xb9\xd5\x09\xe1\xb6\x6d\x32\x91\xbb\x95\x72\x4d\xde\xa4\x18\x24\x5a\xc0\xbf\x1b\xe4\xc8\x6d\x68\xdf\xcf\xae\x38\x85\x3e\xc5\xef\x71\x8c\x07\x36\x3d\x9f\xbc\x9b\xa9\x55\xbb\xe9\xd6\xd3\xfd\xfd\xbe\x95\x3f\xba\x4a\x98\xc2\xed\x52\x68\xf2\x5a\xc5\xc1\x21\xcd\xe7\xcf\x70\xbb\x1c\x5e\x3c\x5a\xef\x04\xd6\x17\xff\xb7\x76\x80\x31\x82\x4f\xff\x99\x5e\xa0\x26\x4d\x56\xec\x3f\xe8\xb7\xea\xc1\x16\x6d\xac\x77\x98\xef\x3c\x55\x60\x7c\x95\x90\x6f\x70\xfb\x1b\x85\xf7\xb3\xab\x41\x4f\x5a\x6f\xf0\xa3\x28\x63\xe5\x7a\xc3\x51\xbb\xbd\x0c\x60\xe5\x94\x5e\x3b\xcb\xf1\x05\xdc\xca\x0f\x77\xf2\x5e\x8e\xe4\x9d\xbc\xfd\x70\x27\x7f\x5e\x3e\xbd\x13\xe9\xc7\xf2\xe9\x8f\x72\x39\x6a\x17\xfa\x4f\x00\x00\x00\xff\xff\xb8\x5c\xfa\x90\x9f\x04\x00\x00")
var _publicServiceWorkerJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x53\x61\x6f\xdb\x36\x10\xfd\xae\x5f\x71\x0b\x86\xda\x4e\x1d\x32\x6e\x9a\x60\x6d\xe0\x0d\x45\xb7\x75\x41\xb3\x22\xb5\x53\x18\x43\xe2\x06\x14\x79\x92\x38\x53\x3c\x8d\x47\xc5\x35\xda\xfe\xf7\x81\xb2\x9c\x6e\xd9\xfc\x4d\x22\xdf\xbd\xbb\x77\xef\x51\x1e\x1e\x66\x70\x08\x0b\x74\x9a\x6a\x84\x48\xb0\xa1\x36\xc0\x82\xc2\x2a\xa7\x4f\x47\x0d\xad\x31\xa0\x01\xc6\x70\x6f\x35\xc2\x9a\xc2\x0a\xc3\x77\x19\x74\x55\x7f\x50\x3b\x70\x0e\x3c\xa2\x49\x95\x01\x4b\xcb\x11\x03\xc4\xca\x32\x14\xd6\x21\x58\xbf\xe5\x5b\x63\x0e\xaa\x69\x40\x79\x93\x0e\x80\x2b\x6a\x9d\x49\x1c\xc6\xb2\xca\x1d\xc2\x6f\xd7\xd7\x57\xa0\x95\xae\xac\x2f\xa1\xa0\x7f\x92\x44\x22\x91\xa0\x73\x44\xa8\x62\x6c\xf8\xa5\x94\x25\x91\x28\x9d\xf4\xd5\xfb\xea\x4d\xd3\x8f\x73\x5d\x21\x04\xe4\x08\x54\x40\xac\x10\x34\x19\x04\xcb\xa0\xda\x48\x47\x25\x7a\x0c\x2a\xa2\x11\x70\xe5\x50\x31\x82\x21\x3f\x88\xd0\x36\x46\x45\xfc\xd6\x6d\x3b\x53\x40\x1d\xdd\xe6\x1c\xac\xe7\x88\xca\x8c\xa1\x56\x2b\x04\x5d\x29\x5f\x22\x3f\xde\x12\xe4\xad\x75\x06\x34\xf9\xc2\x96\x6d\x50\xd1\x92\x4f\x34\x49\x6c\xc0\xa3\xd0\xf6\x4b\xd8\xc2\x9a\x40\x1a\x99\xf7\x29\x7a\xa6\x66\x3f\x73\x95\xc1\xa1\xcc\x32\x5b\x37\x14\xe2\x5c\x07\xdb\x44\x1e\x1e\xec\x90\x1c\x29\xa8\x12\x45\x49\x54\x3a\x54\x8d\x65\xa1\xa9\x96\xeb\xde\x33\x6d\xbc\x0c\xd8\x69\x64\xf9\x5c\x9c\x88\xc9\xc3\x15\xaf\xc5\x9f\x7c\x30\x3a\x7f\x4c\x9d\x01\x1c\xc8\xd6\xca\x26\x60\xb2\x00\x8f\x6a\xe5\x6d\x81\x1c\xc5\x69\xfe\xec\x87\xe2\xec\xb8\x98\x98\x22\x7f\xfe\x42\xe9\x5c\x9f\x9e\x4d\x8e\x27\x6a\x72\x72\x5a\x9c\x1c\x9f\x4d\x12\x5f\x96\x08\x19\x5d\x21\x94\x31\xbf\xdc\xa3\x8f\x97\x29\x07\x1e\xc3\x70\x50\x23\xb3\x2a\x71\x30\x86\x21\xa6\x9b\x11\x4c\x7f\x84\xcf\x19\x80\x2d\xfa\x13\x61\x54\x54\xf0\xe4\x09\x7c\xfb\x13\x71\xd3\x20\x4c\xa7\x53\x18\xcc\xdf\x5e\x5c\xdd\x2d\x5e\x5d\x5c\x5f\xbc\x7b\x33\x18\x75\x95\x00\x5d\x2f\x5e\xd9\x66\xa1\x6c\xb4\xbe\x1c\x8e\xce\x33\x80\xaf\xd9\xd7\x34\x48\xaf\x55\x68\x0a\x28\xb4\xb3\xe8\x23\xbf\x76\xca\xd6\x09\x95\xf5\x79\x4f\x51\xe9\x81\xf3\x85\xd8\xc9\x7e\xe5\xcd\x8c\xda\x88\xc3\x11\xd4\x18\x2b\x32\x80\x45\x61\x75\xa2\x70\x9b\x2e\x9c\xc8\xbd\xab\xdc\x90\x37\x29\x09\x89\x2d\xe0\x5f\x2d\x72\xe4\x2e\xb7\x1f\x66\x97\x9c\x72\x9f\x12\xf8\xb0\xc6\x3d\x66\xcf\x5f\xbc\x9f\xa9\xbc\x33\xbb\xd3\x74\x77\xb7\x1b\xe5\xf7\xbe\x12\xa6\x70\xb3\x14\x9a\xbc\x56\x71\xb8\x0f\xf3\xe5\x0b\xdc\x2c\x47\xe7\x0f\xd2\x7b\x80\xf5\xe5\x7f\xa5\xed\xe1\x18\xc3\xe7\x7f\x6d\x2f\x50\x9b\x36\x2b\x76\x6f\xfa\x9d\xba\xb7\x65\x97\xec\x2d\xcd\xff\xb4\x2a\x31\xbe\x4e\x94\x6f\x71\xf3\x2b\x85\x0f\xb3\xcb\x61\x97\x29\xeb\x0d\x7e\x12\x55\xac\xdd\xc1\x68\xdc\x19\x98\x01\xe4\x4e\xe9\x95\xb3\x1c\x5f\xc2\x8d\xfc\x78\x2b\xef\xe4\x58\xde\xca\x9b\x8f\xb7\xf2\xa7\xe5\xd3\x5b\x91\x3e\x96\x4f\xbf\x97\xcb\x71\xe7\xe9\xdf\x01\x00\x00\xff\xff\xef\x0a\x0d\x37\xa5\x04\x00\x00")
func publicServiceWorkerJsBytes() ([]byte, error) {
return bindataRead(
@@ -223,8 +223,8 @@ func publicServiceWorkerJs() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "public/service-worker.js", size: 1183, mode: os.FileMode(0644), modTime: time.Unix(1598898920, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc2, 0xe8, 0x48, 0x6e, 0x4f, 0x6b, 0x69, 0x8b, 0x6d, 0x25, 0x1a, 0xb1, 0x1d, 0x1, 0x60, 0x71, 0x72, 0x7e, 0x90, 0xd8, 0x46, 0xab, 0x9e, 0xfe, 0xb6, 0xc6, 0x61, 0x7b, 0xf5, 0xd6, 0x9c, 0x65}}
info := bindataFileInfo{name: "public/service-worker.js", size: 1189, mode: os.FileMode(0644), modTime: time.Unix(1599169371, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1, 0x33, 0xa9, 0x72, 0x40, 0xa, 0x7a, 0x46, 0x26, 0x31, 0x22, 0x17, 0xd8, 0x24, 0x5b, 0x5b, 0xf4, 0x3a, 0x61, 0xd2, 0x98, 0xa5, 0x81, 0x13, 0x1a, 0x39, 0xfd, 0x22, 0x12, 0x9e, 0xd7, 0x9c}}
return a, nil
}
@@ -243,7 +243,7 @@ func publicStaticCss21d5ea050ChunkCss() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "public/static/css/2.1d5ea050.chunk.css", size: 903, mode: os.FileMode(0644), modTime: time.Unix(1598898920, 0)}
info := bindataFileInfo{name: "public/static/css/2.1d5ea050.chunk.css", size: 903, mode: os.FileMode(0644), modTime: time.Unix(1599169371, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xdc, 0x80, 0x68, 0xd5, 0x10, 0x29, 0x95, 0x2e, 0x4, 0x57, 0x5, 0x3b, 0x88, 0xb3, 0xa4, 0xb2, 0xdc, 0xf7, 0x9f, 0xb4, 0x54, 0x8a, 0xe8, 0x72, 0xf6, 0x86, 0xc1, 0xa9, 0x61, 0x19, 0xa9, 0x5}}
return a, nil
}
@@ -263,7 +263,7 @@ func publicStaticCss21d5ea050ChunkCssMap() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "public/static/css/2.1d5ea050.chunk.css.map", size: 1731, mode: os.FileMode(0644), modTime: time.Unix(1598898920, 0)}
info := bindataFileInfo{name: "public/static/css/2.1d5ea050.chunk.css.map", size: 1731, mode: os.FileMode(0644), modTime: time.Unix(1599169371, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xda, 0x6e, 0xc3, 0x26, 0xe9, 0xa1, 0x2a, 0x1, 0x16, 0x8d, 0x4d, 0x4c, 0xce, 0x20, 0x2d, 0x5, 0x4d, 0x9, 0x23, 0xb2, 0x3a, 0xdd, 0xab, 0x97, 0x34, 0x5a, 0x1d, 0x44, 0x9d, 0x3c, 0x6d, 0xc1}}
return a, nil
}
@@ -283,7 +283,7 @@ func publicStaticCssMainEfdd1938ChunkCss() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "public/static/css/main.efdd1938.chunk.css", size: 2580, mode: os.FileMode(0644), modTime: time.Unix(1598898920, 0)}
info := bindataFileInfo{name: "public/static/css/main.efdd1938.chunk.css", size: 2580, mode: os.FileMode(0644), modTime: time.Unix(1599169371, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6, 0x99, 0x5e, 0x47, 0x5f, 0x46, 0xeb, 0x75, 0x87, 0x6f, 0xa6, 0x90, 0xdf, 0x3d, 0x88, 0xb0, 0x38, 0xb8, 0x26, 0xf2, 0x3f, 0x53, 0xb2, 0x28, 0xd2, 0xe, 0xd3, 0xcd, 0xe0, 0x92, 0x38, 0xba}}
return a, nil
}
@@ -303,7 +303,7 @@ func publicStaticCssMainEfdd1938ChunkCssMap() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "public/static/css/main.efdd1938.chunk.css.map", size: 5866, mode: os.FileMode(0644), modTime: time.Unix(1598898920, 0)}
info := bindataFileInfo{name: "public/static/css/main.efdd1938.chunk.css.map", size: 5866, mode: os.FileMode(0644), modTime: time.Unix(1599169371, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb8, 0x26, 0xb9, 0x9e, 0x7f, 0x69, 0x71, 0xea, 0x2e, 0x94, 0x85, 0x27, 0xd9, 0xc2, 0xe0, 0x5d, 0x5d, 0x61, 0x57, 0x80, 0x74, 0x11, 0x68, 0x9a, 0x69, 0x85, 0x3d, 0x98, 0x5e, 0x89, 0xc1, 0xa9}}
return a, nil
}
@@ -323,7 +323,7 @@ func publicStaticJs26b9faf2aChunkJs() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "public/static/js/2.6b9faf2a.chunk.js", size: 2423663, mode: os.FileMode(0644), modTime: time.Unix(1598898920, 0)}
info := bindataFileInfo{name: "public/static/js/2.6b9faf2a.chunk.js", size: 2423663, mode: os.FileMode(0644), modTime: time.Unix(1599169371, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2d, 0xe8, 0x9f, 0xa7, 0x6d, 0x26, 0xfa, 0xb, 0xdd, 0x46, 0xfc, 0xf8, 0xd5, 0xb5, 0x37, 0x29, 0xa, 0xd9, 0x5c, 0x82, 0x60, 0xc9, 0x2f, 0xab, 0x4, 0xef, 0x3f, 0xe0, 0xfa, 0xb0, 0x39, 0x1b}}
return a, nil
}
@@ -343,7 +343,7 @@ func publicStaticJs26b9faf2aChunkJsLicenseTxt() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "public/static/js/2.6b9faf2a.chunk.js.LICENSE.txt", size: 3394, mode: os.FileMode(0644), modTime: time.Unix(1598898920, 0)}
info := bindataFileInfo{name: "public/static/js/2.6b9faf2a.chunk.js.LICENSE.txt", size: 3394, mode: os.FileMode(0644), modTime: time.Unix(1599169371, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb0, 0x26, 0x0, 0x4a, 0x36, 0x36, 0x2e, 0x97, 0xc9, 0x7f, 0x8c, 0x33, 0xd5, 0xc7, 0x2f, 0x3, 0xe0, 0xf8, 0x3d, 0x27, 0x62, 0x4a, 0xb0, 0x3f, 0x1f, 0xc1, 0x34, 0x9b, 0x89, 0x9f, 0x1a, 0xa}}
return a, nil
}
@@ -363,88 +363,88 @@ func publicStaticJs26b9faf2aChunkJsMap() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "public/static/js/2.6b9faf2a.chunk.js.map", size: 6312587, mode: os.FileMode(0644), modTime: time.Unix(1598898920, 0)}
info := bindataFileInfo{name: "public/static/js/2.6b9faf2a.chunk.js.map", size: 6312587, mode: os.FileMode(0644), modTime: time.Unix(1599169371, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x68, 0x46, 0x75, 0xc4, 0x59, 0x8c, 0x27, 0x18, 0x5b, 0xb2, 0xb1, 0xd0, 0x8e, 0x4b, 0xed, 0xdd, 0x75, 0x40, 0xef, 0x0, 0xc8, 0x76, 0xd8, 0xdf, 0xb2, 0x74, 0xf7, 0xdb, 0x8f, 0xdb, 0x26, 0x33}}
return a, nil
}
var _publicStaticJsMainB612bd5aChunkJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x3a\xed\x72\xdb\xb6\xb2\xff\xef\x53\xc0\x68\xc7\x05\x8e\x20\x5a\x94\x6d\xd9\xa1\xca\x78\x12\x27\x6d\xd3\x3a\x4e\x1a\x27\xfd\x38\x8a\x4e\x07\x22\x57\x12\x63\x0a\x60\x41\xc8\xb2\x6a\xf3\xdd\xef\x00\x20\x29\xc9\xa2\xdc\x64\xee\xe9\xf5\x0f\x8b\x58\x2c\x16\x8b\xc5\x7e\x02\x20\x7a\x9a\xe4\xde\x02\x46\x19\x8f\xae\x7f\xcc\xa5\xc8\x32\x9e\x6b\x08\x9b\xc1\xf7\xf7\x83\x21\xf5\xb2\x79\x3e\x25\x83\x41\x67\xc8\xee\xfc\xd3\x4e\x30\x9e\x8b\x48\x27\x52\x10\x60\x9a\x09\x7a\x07\x1e\xdc\x66\x52\xe9\x3c\x14\xe4\xa4\xe7\xd3\x82\xf9\xa7\xc7\x5b\x58\x06\xda\x6b\x80\x1e\x9e\x1c\x35\x40\x7b\xbd\xcd\x79\x1c\xec\xb8\x01\x76\xb2\x0d\x3b\x39\xdd\x86\x9d\x6e\xd3\x3b\xe9\x6c\x8f\x3d\xe9\x3c\xd9\x86\xf9\x0d\x63\xfd\x5e\x03\x6c\x7b\xde\x93\xc3\x06\xbc\xc3\x06\xbc\xe3\x86\x39\x8e\x0f\xb7\x61\x3d\x7f\x4b\x5a\x78\x9e\x03\xca\xb5\x4a\x22\x8d\xfb\xc2\x53\x44\xd3\xfe\x0d\x57\x88\x33\x15\x0a\xd2\xa1\x4c\x86\xc2\x13\x44\x51\x96\x84\x82\xf8\x27\x3e\x65\x91\x85\x24\x94\xe5\x21\x11\xc4\x3f\x3d\xa6\x4c\x90\xe3\x63\x4a\x59\x1a\x0a\x72\xdc\xa3\x6c\x6e\x7e\x4f\x29\xcb\xcc\xef\x09\x65\x53\x3b\xf4\x94\xb2\x59\x28\x48\x8f\xb2\xd8\x0d\xec\x99\x81\xfe\x49\x97\x52\x36\x0e\x05\x39\x3c\xa5\x6c\x19\x0a\xd2\xf5\x29\xbb\x31\x23\x9f\x50\x36\x31\x98\x87\x27\x47\x06\xf3\xf0\xe4\xd8\x0d\x38\xa4\x94\x8d\x2c\x13\x13\xca\x5e\x5a\xda\x47\x94\xdd\x5a\xc8\x4b\xca\xae\x42\x41\x9e\x1c\x53\xb6\xb0\x80\x2b\xca\xae\x0d\xa0\x47\xd9\xa5\x05\x5c\x53\x76\x1e\x76\xfa\x62\x9e\xa6\x61\x18\xa6\x32\xe2\xe9\x95\x96\x8a\x4f\xc0\x9b\x80\x7e\xa5\x61\x46\x70\x0e\x79\x9e\x48\xd1\x4e\x62\x4c\xcf\x78\x38\x20\x03\x1f\x4e\x86\xad\xb6\x0f\x87\xad\xf6\x91\xf9\x77\x6a\xfe\xf9\xe0\xfb\xd4\x53\x90\xa5\x3c\x02\x72\x30\xe8\xf8\xa7\xc3\x83\x09\x23\x2b\x21\xd3\x3b\x05\x7a\xae\x04\x21\xf0\x1f\xff\x78\x3f\x52\xcb\x4c\x4b\x33\xcf\x3b\x2e\x62\x39\xfb\x85\xa7\x73\xc8\x89\x80\x05\xfa\x90\x08\x7d\xfa\x4c\x29\xbe\x24\x3e\xa5\x83\xce\x90\x3e\x7d\x0a\x07\x47\xd4\xd3\xf2\x4a\xab\x44\x4c\x88\xdf\xa3\x05\xa5\xac\x33\x0c\x08\xff\x0c\xbe\xbd\x3c\x4b\x13\x4d\x70\x80\x29\x1d\xf8\xc3\x90\x64\x5c\xe5\xf0\x4a\x68\xc2\x07\xfe\x90\xf9\x3d\xda\xf2\xd7\xa8\x1f\xf6\xdc\xc6\x7f\x0a\xb9\xf7\x49\x26\xc2\x0e\xec\x57\x2b\x41\x6f\x48\xb5\x14\xf4\x50\x85\x6e\x64\x12\xa3\x4e\x18\x86\x62\x7f\x9f\x88\xf0\xae\xa0\x6c\x05\xf2\xa6\xc0\x63\x50\xb9\xe9\xaa\xbe\x0d\x8a\x53\xb2\x70\x83\x16\x67\x8a\x49\x96\xd0\xbb\xb1\x54\xc4\xf4\x47\x28\x11\xa8\xa6\xa5\xf6\xf7\x89\xb2\xe4\x15\x4d\xc6\x44\x79\x53\x9e\xbf\x59\x88\xb7\x4a\x66\xa0\xf4\x92\x44\x94\xde\x99\x51\x79\x88\x03\xdc\x8a\xfa\xdc\xcb\x81\xab\x68\x4a\x72\xfa\xb4\xb3\xbf\x4f\x78\xc8\xeb\xbd\xca\x99\x1a\x44\x43\xca\x62\x48\x41\x03\xb2\x8d\xa2\x5c\x9f\xf0\x66\xa0\xa7\x32\x0e\x75\xb9\x8e\xbd\x30\x94\x96\xff\x91\x8c\x97\x21\xce\xad\xc0\x70\x18\x86\x7a\x99\x81\x1c\x23\x79\x7f\x2f\x51\x22\x72\xcd\x45\x64\xda\x4e\xa2\x67\x32\xf8\xf1\xea\xcd\xa5\xe7\xd0\x93\xf1\x92\x48\x4a\x57\x14\xc1\x0a\x0b\x88\xa0\x94\xd5\x92\x19\xac\xef\xe0\x30\xfc\xd4\x32\x2b\x21\xe7\xad\xd6\xe6\x46\xb1\x31\xe8\x68\x4a\x38\x13\xb4\xe8\x3b\xae\xef\x26\xa0\x57\xc6\x2d\x98\xaa\xb7\x8b\x13\xcd\xf0\xf7\x2f\xdf\x63\x06\x4c\x94\xf3\xd3\x82\x65\xf3\x4d\x7c\x26\x37\x47\xbc\xfd\x50\x8e\x50\x06\x59\xe6\x7f\x83\xfd\xe6\x6a\x1d\x9d\xeb\x68\xfa\x38\xfe\xb3\xf7\xe7\x3f\xac\x06\xc4\x90\x3e\xc2\xfc\x8b\x97\x17\x2f\xdf\xbf\x7c\xc0\xbf\xdb\xb9\x2f\x1d\xa5\x60\x26\x6f\xbe\x74\x54\x51\x14\x1b\xe6\x96\x37\x98\x1b\xfb\xe4\x54\xfa\xad\x75\x47\xc7\x94\xbd\xb7\xce\xe6\x2d\x65\x2f\x8c\xf7\x39\xa1\xec\xc2\x02\x5e\x50\xf6\xcc\x38\xc1\x0e\x65\xaf\x2c\xe0\x19\x65\xef\x0c\xc6\x11\x65\xcf\x2d\xe0\x1d\x65\x1f\x2c\x91\x1e\x65\x7f\x59\xc8\x07\xca\x7e\xb2\x90\x13\xca\x7e\xb5\x90\x9f\x28\xfb\x21\xbc\x24\x94\x50\xf6\x3a\x7c\x43\x28\xfb\x31\xdc\xf6\x39\x08\xce\x9e\x7b\x7c\x4d\xff\x60\xdd\x57\x85\xc3\xd6\x01\xc3\x78\x0d\xf4\xf1\xe0\x60\xc2\xf0\x1f\x1b\xa0\x96\x01\xb5\x31\x0d\x30\x2e\xd8\x1f\x4d\x93\xfc\x48\xde\x13\x4a\x2e\x08\x25\x40\x29\x2d\xd8\x2f\x4d\x48\xeb\xa0\xca\xb8\x75\x88\x31\x13\xc6\x13\x7f\x0b\x5e\x0a\x62\xa2\xa7\x7d\xd1\x6a\x51\xdd\x0a\x09\xee\xe0\x16\x0c\xc4\x70\xc3\xf9\x51\x2f\x4f\x93\x08\x48\xbb\x4b\x4b\xa5\x47\x7f\x79\xdc\xb3\x6e\x8d\x68\x5a\x90\x85\xc7\xbd\xc9\x5f\x49\x66\x38\x29\xd8\xd7\xe1\x43\x47\x95\x8c\x89\x70\x2e\x82\x87\xaf\x3c\xee\xc5\x60\xfd\xb1\x0d\x8f\x15\x45\xbe\xc1\xbe\xe5\x93\x09\xe3\x99\x42\xf0\x16\x52\xc5\xb9\x09\x88\x9b\xee\xfa\xe8\x5f\xaa\xe4\xdf\x04\xc9\x4e\xdf\x2c\xd0\xad\xab\x82\xf7\x5b\x2d\x41\x0d\x58\x87\x6a\x20\x86\x8c\x87\x87\x7d\xfe\x34\xec\xf4\xdb\x6d\x4e\xe5\x20\x69\xb5\x86\xa1\x7e\xfa\xf4\xf4\x5f\x7c\xbf\x7b\x7c\x5c\xb1\x22\x0b\xc2\x29\xfb\x5b\xd1\x8d\x96\x1a\x2e\x56\xe2\x33\x9e\x92\xf8\xdd\xd3\x7d\x23\x3f\x7a\xa6\x5b\xa1\x93\xa0\x37\x56\x72\x76\x3e\xe5\xea\x5c\xc6\x40\x6c\x67\xe0\x3f\xe9\x1a\xec\x6e\xf7\xc8\x61\xef\xef\xfb\xdd\x53\x3b\xfe\x49\xd7\x40\x5a\xfe\x90\x9e\x91\x1d\x24\x08\x39\xf4\xdd\xb0\x6f\xbf\xed\xd1\x16\xe9\x1d\x56\x43\x28\x13\xad\xd0\xa7\x41\xb7\x7b\x64\xc9\x1f\x75\x76\x93\xdf\x82\x75\x1f\x9d\xd2\x3f\xae\xa6\xf4\xbb\xb4\xLine truncated
var _publicStaticJsMainAceb7093ChunkJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x3a\x6b\x73\xdb\xb6\xb2\xdf\xef\xaf\x80\xd1\x8e\x0b\x1c\x41\xb4\x28\xf9\x15\xaa\x8c\x27\x71\xd2\x36\xad\xe3\xa4\x71\xd2\xc7\x51\x74\x3a\x10\xb9\x92\x18\x53\x00\x0b\x40\x96\x55\x5b\xff\xfd\x0e\x00\x52\x0f\x8b\x72\x93\xb9\xa7\xd7\x1f\x2c\x62\xb1\x58\x2c\x16\xfb\x04\x40\xcc\x38\xd3\xc1\x0c\x06\x05\x4f\xae\x7f\xd4\x52\x14\x05\xd7\x06\xe2\x7a\xf0\xfd\x7d\xaf\x4f\x83\x62\xaa\xc7\xa4\xd7\x6b\xf5\xd9\x5d\x78\xda\x8a\x86\x53\x91\x98\x4c\x0a\x02\xcc\x30\x41\xef\x20\x80\xdb\x42\x2a\xa3\x63\x41\x4e\x8e\x43\xba\x60\xe1\xe9\xd1\x16\x96\x85\x1e\xd7\x40\x3b\x27\x87\x35\xd0\xe3\xe3\xcd\x79\x3c\xec\xa8\x06\x76\xb2\x0d\x3b\x39\xdd\x86\x9d\x6e\xd3\x3b\x69\x6d\x8f\x3d\x69\x3d\xd9\x86\x85\x35\x63\xc3\xe3\x1a\xd8\xf6\xbc\x27\x9d\x1a\xbc\x4e\x0d\xde\x51\xcd\x1c\x47\x9d\x6d\xd8\x71\xb8\x25\x2d\x3c\xd5\x80\xb4\x51\x59\x62\x70\x57\x04\x8a\x18\xda\xbd\xe1\x0a\x71\xa6\x62\x41\x5a\x94\xc9\x58\x04\x82\x28\xca\xb2\x58\x90\xf0\x24\xa4\x2c\x71\x90\x8c\x32\x1d\x13\x41\xc2\xd3\x23\xca\x04\x39\x3a\xa2\x94\xe5\xb1\x20\x47\xc7\x94\x4d\xed\xef\x29\x65\x85\xfd\x3d\xa1\x6c\xe2\x86\x9e\x52\x36\x8e\x05\x39\xa6\x2c\xf5\x03\x8f\xed\xc0\xf0\xa4\x4d\x29\x1b\xc6\x82\x74\x4e\x29\x9b\xc7\x82\xb4\x43\xca\x6e\xec\xc8\x27\x94\x8d\x2c\x66\xe7\xe4\xd0\x62\x76\x4e\x8e\xfc\x80\x0e\xa5\x6c\xe0\x98\x18\x51\xf6\xd2\xd1\x3e\xa4\xec\xd6\x41\x5e\x52\x36\x8b\x05\x79\x72\x44\xd9\x95\x03\xcc\x28\xbb\xb6\x80\x63\xca\x2e\x1d\xe0\x9a\xb2\xf3\xb8\xd5\x15\xd3\x3c\x8f\xe3\x38\x97\x09\xcf\xaf\x8c\x54\x7c\x04\xc1\x08\xcc\x2b\x03\x13\x82\x35\x68\x9d\x49\xd1\xcc\x52\x4c\xcf\x78\xdc\x23\xbd\x10\x4e\xfa\x8d\x66\x08\x9d\x46\xf3\xd0\xfe\x3b\xb5\xff\x42\x08\x43\x1a\x28\x28\x72\x9e\x00\x39\xe8\xb5\xc2\xd3\xfe\xc1\x88\x91\x95\x90\xe9\x9d\x02\x33\x55\x82\x10\xf8\x4f\x78\xb4\x9f\xa8\x79\x61\xa4\x9d\xe7\x1d\x17\xa9\x9c\xfc\xc2\xf3\x29\x68\x22\x60\x86\x3e\x64\xc2\x9c\x3e\x53\x8a\xcf\x49\x48\x69\xaf\xd5\xa7\x4f\x9f\xc2\xc1\x21\x0d\x8c\xbc\x32\x2a\x13\x23\x12\x1e\xd3\x05\xa5\xac\xd5\x8f\x08\xff\x0c\xbe\x03\x5d\xe4\x99\x21\x38\xc2\x94\xf6\xc2\x7e\x4c\x0a\xae\x34\xbc\x12\x86\xf0\x5e\xd8\x67\xe1\x31\x6d\x84\x6b\xd4\x3b\xc7\x7e\xe3\x3f\xc5\x3c\xf8\x24\x33\xe1\x06\x76\xab\x95\xa0\x37\xa4\x5a\x0a\x7a\xa8\x42\x37\x32\x4b\x51\x2b\x8e\x63\xb1\xbf\x4f\x44\x7c\xb7\xa0\x6c\x05\x0a\xc6\xc0\x53\x50\xda\x76\x55\xdf\x16\xc5\x2b\x59\xbc\x41\x8b\x33\xc5\x24\xcb\xe8\xdd\x50\x2a\x62\xfb\x13\x94\x09\xb4\xa4\xa5\xf6\xf7\x89\x72\xe4\x15\xcd\x86\x44\x05\x63\xae\xdf\xcc\xc4\x5b\x25\x0b\x50\x66\x4e\x12\x4a\xef\xec\x28\x1d\xe3\x08\x37\x92\x2e\x0f\x34\x70\x95\x8c\x89\xa6\x4f\x5b\xfb\xfb\x84\xc7\x7c\xb9\x57\x9a\xa9\x5e\xd2\xa7\x2c\x85\x1c\x0c\x20\xd7\x58\x94\xeb\x13\xc1\x04\xcc\x58\xa6\xb1\x29\xd7\xb1\x17\xc7\xd2\xf1\x3f\x90\xe9\x3c\xc6\xda\x09\x0c\xc7\x71\x6c\xe6\x05\xc8\x21\x92\xf7\xf7\x12\x65\x42\x1b\x2e\x12\xdb\xf6\x12\x3d\x93\xd1\x8f\x57\x6f\x2e\x03\x8f\x9e\x0d\xe7\x44\x52\xba\xa2\x08\x4e\x58\x40\x04\xa5\x6c\x29\x99\xde\xfa\x0e\xf6\xe3\x4f\x0d\xbb\x12\x72\xde\x68\x6c\x6e\x14\x1b\x82\x49\xc6\x84\x33\x41\x17\x5d\xcf\xf5\xdd\x08\xcc\xca\xb8\x05\x53\xcb\xed\xe2\xc4\x30\xfc\xfd\xcb\xf7\x98\x01\x13\xe5\xfc\x74\xc1\x8a\xe9\x26\x3e\x93\x9b\x23\xde\x7e\x28\x47\x28\x8b\x2c\xf5\xdf\x60\xbf\xb9\x5a\x47\xe7\x26\x19\x3f\x8e\xff\xec\xfd\xf9\x0f\xab\x01\x29\xe4\x8f\x30\xff\xe2\xe5\xc5\xcb\xf7\x2f\x1f\xf0\xef\x77\xee\x4b\x47\x29\x98\xc8\x9b\x2f\x1d\xb5\x58\x2c\x36\xcc\x4d\xd7\x98\x1b\xfb\xe4\x55\xfa\xad\x73\x47\x47\x94\xbd\x77\xce\xe6\x2d\x65\x2f\xac\xf7\x39\xa1\xec\xc2\x01\x5e\x50\xf6\xcc\x3a\xc1\x16\x65\xaf\x1c\xe0\x19\x65\xef\x2c\xc6\x21\x65\xcf\x1d\xe0\x1d\x65\x1f\x1c\x91\x63\xca\xfe\x72\x90\x0f\x94\xfd\xe4\x20\x27\x94\xfd\xea\x20\x3f\x51\xf6\x43\x7c\x49\x28\xa1\xec\x75\xfc\x86\x50\xf6\x63\xbc\xed\x73\x10\x9c\x3d\x0f\xf8\x9a\xfe\xc1\xba\xaf\x8a\xfb\x8d\x03\x86\xf1\x1a\xe8\xe3\xc1\xc1\x88\xe1\x3f\x36\x40\x0d\x0b\x6a\x62\x1a\x61\xbc\x60\x7f\xd4\x4d\xf2\x23\x79\x4f\x28\xb9\x20\x94\x00\xa5\x74\xc1\x7e\xa9\x43\x5a\x07\x55\xc6\x6d\x62\x8c\x99\xb0\x9e\xf8\x5b\x08\x72\x10\x23\x33\xee\x8a\x46\x83\x9a\x46\x4c\x70\x0b\x37\xa0\x27\xfa\x1b\xce\x8f\x06\x3a\xcf\x12\x20\xcd\x36\x2d\x95\x1e\xfd\x15\xf0\xc0\xb9\x35\x62\xe8\x82\x5c\x05\x3c\x18\xfd\x95\x15\x96\x93\x05\xfb\x3a\x7e\xe8\xa8\xb2\x21\x11\xde\x45\xf0\xf8\x55\xc0\x83\x14\x9c\x3f\x76\xe1\xb1\xa2\xc8\x37\xd8\x77\x7c\x32\x61\x3d\x53\x0c\xc1\x4c\xaa\x54\xdb\x80\xb8\xe9\xae\x0f\xff\xa5\x4a\xfe\x6d\x90\x6c\x75\xed\x02\xfd\xba\x2a\x78\xb7\xd1\x10\xd4\x82\x4d\xac\x7a\xa2\xcf\x78\xdc\xe9\xf2\xa7\x71\xab\xdb\x6c\x72\x2a\x7b\x59\xa3\xd1\x8f\xcd\xd3\xa7\xa7\xff\xe2\xfb\xed\xa3\xa3\x8a\x15\xb9\x20\x9c\xb2\xbf\x15\xdd\x60\x6e\xe0\x62\x25\x3e\xeb\x29\x49\xd8\x3e\xdd\xb7\xf2\xa3\x67\xa6\x11\x7b\x09\x06\x43\x25\x27\xe7\x63\xae\xce\x65\x0a\xc4\x75\x46\xe1\x93\xb6\xc5\x6e\xb7\x0f\x3d\xf6\xfe\x7e\xd8\x3e\x75\xe3\x9f\xb4\x2d\xa4\x11\xf6\xe9\x19\xd9\x41\x82\x90\x4e\xe8\x87\x7d\xfb\xed\x31\x6d\x90\xe3\x4e\x35\x84\x32\xd1\x88\x43\x1a\xb5\xdb\x87\x8e\xfc\x61\x6b\x37\xf9\x2d\x58\xfb\xd1\x29\xc3\xa3\x6a\xca\xb0\x4d\x1b\x64\xLine truncated
func publicStaticJsMainB612bd5aChunkJsBytes() ([]byte, error) {
func publicStaticJsMainAceb7093ChunkJsBytes() ([]byte, error) {
return bindataRead(
_publicStaticJsMainB612bd5aChunkJs,
"public/static/js/main.b612bd5a.chunk.js",
_publicStaticJsMainAceb7093ChunkJs,
"public/static/js/main.aceb7093.chunk.js",
)
}
func publicStaticJsMainB612bd5aChunkJs() (*asset, error) {
bytes, err := publicStaticJsMainB612bd5aChunkJsBytes()
func publicStaticJsMainAceb7093ChunkJs() (*asset, error) {
bytes, err := publicStaticJsMainAceb7093ChunkJsBytes()
if err != nil {
return nil, err
}
info := bindataFileInfo{name: "public/static/js/main.b612bd5a.chunk.js", size: 13984, mode: os.FileMode(0644), modTime: time.Unix(1598898920, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x58, 0x18, 0xd8, 0x32, 0x20, 0xc1, 0x35, 0xa, 0x73, 0xd4, 0xf3, 0xbd, 0x78, 0xb0, 0xb7, 0x99, 0xcf, 0xdd, 0x6a, 0x8b, 0x59, 0xe, 0x22, 0xad, 0x8e, 0xb1, 0xab, 0x37, 0x3a, 0x55, 0x44, 0x2e}}
info := bindataFileInfo{name: "public/static/js/main.aceb7093.chunk.js", size: 14020, mode: os.FileMode(0644), modTime: time.Unix(1599169371, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x74, 0x4b, 0xbc, 0x4f, 0x17, 0xec, 0xe4, 0x4d, 0xae, 0xe2, 0x64, 0xc0, 0x76, 0xbf, 0x5b, 0xd8, 0xd0, 0xe5, 0xd6, 0xb5, 0xce, 0x51, 0x5a, 0xce, 0xf9, 0xe4, 0x5e, 0xf, 0xa8, 0x51, 0xf0, 0xa0}}
return a, nil
}
var _publicStaticJsMainB612bd5aChunkJsMap = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x7d\x8b\x57\xe2\xc8\xd2\xf8\xbf\xd2\xc3\xb7\x67\x81\xcf\xc8\xc3\xf7\x38\xea\x9c\x4e\x88\x88\x88\xa8\xe8\x38\x8e\x78\xef\x06\x68\x20\x12\x92\x98\x04\xf1\xb1\xfe\xef\xbf\x53\x55\x9d\x27\xe8\xcc\xde\xbd\xf7\x7e\xe7\x37\x7b\x16\x93\xee\xea\xea\xea\xea\x7a\xe7\xf5\x9a\x7b\x14\x9e\x6f\x3a\x76\x6e\x77\x5d\xc9\xf9\xce\xcc\xeb\x0b\x3f\xb7\x7b\x9b\x73\x0d\x3f\x10\xe5\x0b\x31\x75\x02\xd1\x11\xde\xa3\xd9\x17\xa5\x7b\x3f\xa7\xc8\x8e\x33\xf8\xa5\x06\xee\xba\x74\xe0\x89\x91\xe9\x07\xc2\x93\xe0\xd7\x8e\x37\x11\x1e\x75\x99\xf6\x40\x3c\xc1\xe1\x9d\x92\xb3\x8d\x29\x4d\x01\x1d\x5a\xfb\xea\xf4\x52\xbf\xc8\x29\x39\xcb\xe9\x1b\x56\x27\x70\x3c\x63\x24\x72\x4a\x6e\x24\x82\x46\x20\xa6\x88\xd6\xb5\x8c\x3e\xb4\xf5\xe1\x7f\xef\xd9\x0d\x1c\x02\xb8\x30\xec\x81\x33\xfd\x66\x58\x33\x01\xb8\xae\x4c\x3b\xd8\xe1\x9e\x67\x3c\xe7\x94\x5c\xe0\x74\x02\xcf\xb4\x47\x39\x25\xe7\xbb\x96\x19\x20\xe5\x9e\x2f\x1a\x36\x1c\x76\xf4\x4e\xa7\xd1\x3e\xcd\x29\xb9\x7b\xc7\xb4\x71\x92\xc4\x42\x73\x4a\x6e\xe6\x59\x39\x25\x37\x84\xae\xbe\x63\x0f\x4d\xc0\x33\xb3\x07\x62\x68\xda\x62\x90\x53\x72\x63\x61\x0c\x84\x07\xb3\x8a\x27\xd1\x9f\x05\x30\x66\x2a\x82\xb1\x03\x9d\x0f\x33\xe1\x3d\xe3\x84\xcf\x96\x63\x40\x8b\x09\x43\x0c\xbf\x3d\xb7\xcf\x3c\xc7\x15\x5e\x00\xdd\xb6\x10\x03\x0b\x06\xfa\xc2\xf0\xfa\xe3\x9c\x92\xeb\x39\x03\xe8\x88\x28\x3f\xee\x20\x8d\x3e\x9e\x9b\x43\xe8\x1b\x8a\x00\x41\x47\x02\x97\x34\xc3\x5f\xc7\xa7\xf5\x51\xd7\x40\x58\x88\x34\x62\x20\x71\x41\x88\x81\x87\x0c\xc3\xe5\x3e\xc0\x74\x5b\x1b\x39\x25\xa7\xf2\x8e\x8e\x07\xfd\xf1\x24\xa7\xe4\x2e\x1a\x67\x7a\xab\x56\xdd\xaa\x00\x21\x47\x7c\x6d\x73\x2b\xa7\xe4\x5e\x4c\x17\x78\x2a\x9e\x60\x9e\x99\x01\xdb\x25\xec\x51\x00\xb3\xf9\x16\x71\xec\x48\xff\x1e\xf2\x18\x60\xaa\x5b\x06\x9e\x4e\x70\xaf\x68\xfc\x40\xc0\x0e\xc2\xd1\x0b\x60\x7b\x02\xe1\xd1\x3b\xd4\x01\xdb\x9a\x53\x72\x73\x18\xf5\x08\xfb\x02\x27\xf0\xbf\xe3\x0d\x80\xcd\xbd\x9c\x92\x03\xf2\x66\x3b\x00\xd1\x7b\x0e\xc4\x49\x48\xc1\xd0\x73\xa6\xda\xd8\xf0\x34\x67\x20\x88\x5b\x3b\x28\x72\x43\xcb\xc0\x7d\xb9\xba\x3c\x84\x86\x5e\x44\x32\x90\x34\x0b\x86\x3b\x51\x03\x6e\xb3\xc4\xc0\x81\x8c\x33\xde\xb9\xd4\xff\xc9\xcf\x1a\x80\xef\xd9\x0e\x8c\x27\xe0\x25\x6d\xb7\x6b\x7a\x22\x3c\x43\x35\xd0\x3c\x41\x13\x09\xcf\x73\x3c\xc0\x6f\x77\x66\xbd\x29\xca\x9c\x63\x6b\x63\xc3\x46\x89\x26\x3c\x11\x0a\xa0\x68\xe6\xc1\xcc\xc2\x0e\x3c\xc7\x45\x81\xb1\x0c\x94\xc6\xbe\x65\xf8\xfe\xa9\x31\x15\xc8\x11\xcf\x26\x69\xb0\xa9\x61\x88\x73\x98\x20\x56\x8f\x20\xfa\x20\x79\x06\x30\x75\x22\x50\xf0\x9f\x5d\x41\x3b\x3c\x33\x3d\x94\x55\xcf\x99\x03\xad\x63\x4f\x0c\x81\xd7\xce\xdc\x96\x52\x89\xd4\x7f\x33\xc5\x9c\xa4\x73\x1c\xef\x44\x13\x51\x11\xa1\x30\xb6\x6f\xba\x63\x41\x4b\x3b\x45\x70\xc7\xd6\x88\x64\xd8\xda\xb6\x1b\xf8\xd4\x66\x99\xfd\x09\x4e\x6e\x0c\xda\xb6\x05\xfd\x73\xd3\x1e\x38\x73\xa9\xdf\x01\x18\x1a\x25\xe7\x78\xe6\x08\xd7\x09\x84\x06\x86\x47\xb2\xec\x0b\x4b\xf4\xf1\x00\xad\x50\x48\x1f\xb0\xc5\x73\x5c\x98\xc0\x9f\xf5\xfc\x48\xa9\x03\xe2\xb9\x1f\x18\x5e\xa0\x47\x1c\xec\x99\x36\xac\xcc\x18\x0c\xe2\x36\x61\x87\xd2\x25\x1e\x85\x8d\xa4\xf6\x9d\x19\xda\x01\xd2\x21\x5c\xb9\x6b\x8c\xc4\x77\xf9\xf7\x86\xb8\x29\x05\xaa\x46\x33\x05\x63\xd3\x47\xfe\xf5\x67\x53\x81\xa3\x61\x16\xc0\x78\x02\x66\xcf\x46\xfe\xf8\x22\xe8\x48\xca\x70\x32\x14\x2c\xd1\x9f\xe0\x46\xb8\x1e\xb6\xd5\xc4\xd0\x98\x59\xd0\x35\x36\xfd\xc0\x41\x53\x11\x8c\x85\x1d\x99\x15\xe0\x16\xb4\x79\x26\xe8\xea\x40\x9a\x30\x64\x89\x78\x42\x45\x74\x4e\xc0\x5a\x0a\xa0\x2c\x32\x16\x61\xe3\xa5\x39\x8d\x1b\x2d\x03\xff\x98\x36\x59\x0a\x0f\xb9\xe3\x8f\x41\x87\x6c\xdc\x96\x76\xef\x9e\xb8\x0e\x52\x68\xe2\x66\x7b\x64\xf4\x7c\x07\x8d\x93\xe5\x00\x02\x87\xb6\x15\x79\x27\xcd\x8c\x2d\x9e\x82\x33\xb9\x33\x9a\x33\x75\x1d\x9b\xd6\xcb\x5d\x20\xd1\x70\x4d\x1a\xe1\x3a\x36\x5a\x84\x43\xcf\x18\x49\xbe\xb9\x06\x6a\x5d\x3f\x31\xc8\xf4\x91\xf8\x31\x59\x32\xd5\x71\x2c\x61\x20\x43\x1c\x3f\x90\x72\x3f\x95\xf3\x86\x6e\xe6\x9b\x61\x99\x83\xce\x35\xac\x67\x7e\x85\xe6\xda\x36\x1e\xcd\x91\x11\x38\xb4\x11\x09\x27\x94\x18\x15\x1d\x7a\x91\x34\xda\x33\x77\x60\x04\x62\xe8\xcc\x90\x3b\xa6\xed\x07\x86\x65\x99\xf6\x28\x1a\x1c\x37\x21\x3c\xca\x5e\x3f\xd4\xeb\xbe\x03\x92\x66\x59\x08\x79\x21\x8c\x7e\x50\x6b\xb7\x70\x1a\x9b\xf6\x72\x24\x02\xdd\x12\xb0\x76\xf5\xb9\x01\x33\x5c\x5d\x9c\x90\x54\xf7\x85\xef\x4b\x59\x9e\x45\x6e\xb2\x3d\x94\x1a\xf4\x8c\x3e\x27\x45\xb8\x54\x5c\x14\x29\x5a\xff\x3b\xcb\x4c\xb7\xdf\xa1\x89\x70\x4d\x7b\xe4\xe7\x76\x73\x6b\x82\x37\x4d\x95\x2b\xba\xb2\x76\xca\x79\x4f\x53\x74\xce\xaf\x14\x9d\x6b\x5b\xaa\xd2\xe6\xfc\x51\xd3\x14\x83\x73\x43\x53\xce\x39\x3f\x57\xfa\x5c\x7b\x54\x8f\x00\xa6\xa1\xe8\xfc\xf4\x48\xd1\x38\xd7\x94\x16\xe7\x2d\xa5\xc9\x79\x33\xf1\x03\x6d\x0d\x1a\x74\x05\x18\x3b\x1c\x20\xeb\xf0\x73\xce\xb5\x4d\x8d\x03\x12\xa7\x06\x2d\x65\x4d\x83\xa9\xda\x9a\x32\x52\x39\x1f\xa9\x4a\x83\xf3\x86\xa6\x5c\x73\x7e\x8d\x87\x80\xd0\x90\x93\xd6\x39\xaf\x37\x00\x59\x47\x69\xf3\xa6\xad\x2b\x0d\xae\xf7\x2e\xb1\x4f\x4f\x13\xca\xfb\x6d\x22\xac\xc5\xb5\x75\x0d\x10\xb5\x34\x1c\xf8\x1d\xa0\x75\xc0\xdLine truncated
var _publicStaticJsMainAceb7093ChunkJsMap = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\xbd\x8b\x57\xe2\x4a\xf2\x38\xfe\xaf\xf4\xb0\xf7\x5c\xe0\x63\xe4\xe1\x7b\x1c\x75\x4e\x27\x44\x44\x44\x54\x74\x1c\x47\xfc\xec\x0d\xd0\x40\x24\x24\x99\x24\x80\x8f\xeb\xff\xfe\x3b\x55\xd5\x79\x82\xde\xb9\xbb\xfb\xd9\xef\xf9\xdd\x3d\xeb\x24\xdd\xd5\xd5\xd5\xd5\xf5\x4e\x27\xbc\xe6\xe6\xc2\xf3\x4d\xc7\xce\xed\x6f\x2a\x39\xdf\x99\x79\x7d\xe1\xe7\xf6\xef\x73\xae\xe1\x07\xa2\x7c\x25\xa6\x4e\x20\x3a\xc2\x9b\x9b\x7d\x51\x7a\xf4\x73\x8a\xec\xb8\x80\xbf\xd4\xc0\x5d\x97\x2e\x3c\x31\x32\xfd\x40\x78\x12\xfc\xd6\xf1\x26\xc2\xa3\x2e\xd3\x1e\x88\x27\xb8\x7c\x50\x72\xb6\x31\xa5\x29\xa0\x43\x6b\xdf\x9c\x5f\xeb\x57\x39\x25\x67\x39\x7d\xc3\xea\x04\x8e\x67\x8c\x44\x4e\xc9\x8d\x44\xd0\x08\xc4\x14\xd1\xba\x96\xd1\x87\xb6\x3e\xfc\xdf\x7b\x76\x03\x87\x00\xae\x0c\x7b\xe0\x4c\xbf\x19\xd6\x4c\x00\xae\x1b\xd3\x0e\xf6\xb8\xe7\x19\xcf\x39\x25\x17\x38\x9d\xc0\x33\xed\x51\x4e\xc9\xf9\xae\x65\x06\x48\xb9\xe7\x8b\x86\x0d\x97\x1d\xbd\xd3\x69\xb4\xcf\x73\x4a\xee\xd1\x31\x6d\x9c\x24\xb1\xd0\x9c\x92\x9b\x79\x56\x4e\xc9\x0d\xa1\xab\xef\xd8\x43\x13\xf0\xcc\xec\x81\x18\x9a\xb6\x18\xe4\x94\xdc\x58\x18\x03\xe1\xc1\xac\xe2\x49\xf4\x67\x01\x8c\x99\x8a\x60\xec\x40\xe7\xcf\x99\xf0\x9e\x71\xc2\x67\xcb\x31\xa0\xc5\x84\x21\x86\xdf\x5e\xd8\x17\x9e\xe3\x0a\x2f\x80\x6e\x5b\x88\x81\x05\x03\x7d\x61\x78\xfd\x71\x4e\xc9\xf5\x9c\x01\x74\x44\x94\x9f\x76\x90\x46\x1f\xef\xcd\x21\xf4\x0d\x45\x80\xa0\x23\x81\x4b\x9a\xe1\x5f\xc7\xa7\xf5\x51\xd7\x40\x58\x88\x34\x62\x20\x71\x41\x88\x81\x87\x0c\xc3\xe5\xfe\x84\xe9\x76\xb6\x72\x4a\x4e\xe5\x1d\x1d\x2f\xfa\xe3\x49\x4e\xc9\x5d\x35\x2e\xf4\x56\xad\xba\x53\x01\x42\x4e\xf8\xc6\xf6\x4e\x4e\xc9\xbd\x98\x2e\xf0\x54\x3c\xc1\x3c\x33\x03\xb6\x4b\xd8\xa3\x00\x66\xf3\x2d\xe2\xd8\x89\xfe\x3d\xe4\x31\xc0\x54\x77\x0c\xbc\x9d\xe0\x5e\xd1\xf8\x81\x80\x1d\x84\xab\x17\xc0\xf6\x04\xc2\xa3\x77\xa8\x03\xb6\x35\xa7\xe4\x16\x30\x6a\x0e\xfb\x02\x37\xf0\x7f\xc7\x1b\x00\x9b\x7b\x39\x25\x07\xe4\xcd\xf6\x00\xa2\xf7\x1c\x88\xb3\x90\x82\xa1\xe7\x4c\xb5\xb1\xe1\x69\xce\x40\x10\xb7\xf6\x50\xe4\x86\x96\x81\xfb\x72\x73\x7d\x0c\x0d\xbd\x88\x64\x20\x69\x16\x0c\xf7\xa2\x06\xdc\x66\x89\x81\x03\x19\x17\xbc\x73\xad\xff\x93\x5f\x34\x00\xdf\xb3\x1d\x18\x4f\xc0\x4b\xda\x6e\xd7\xf4\x44\x78\x87\x6a\xa0\x79\x82\x26\x12\x9e\xe7\x78\x80\xdf\xee\xcc\x7a\x53\x94\x39\xc7\xd6\xc6\x86\x8d\x12\x4d\x78\x22\x14\x40\xd1\xcc\x83\x99\x85\x1d\x78\x8e\x8b\x02\x63\x19\x28\x8d\x7d\xcb\xf0\xfd\x73\x63\x2a\x90\x23\x9e\x4d\xd2\x60\x53\xc3\x10\xe7\x30\x41\xac\xe6\x20\xfa\x20\x79\x06\x30\x75\x22\x50\xf0\x9f\x5d\x41\x3b\x3c\x33\x3d\x94\x55\xcf\x59\x00\xad\x63\x4f\x0c\x01\x9f\x69\x0f\x9c\x85\x54\xb8\x00\x34\x5f\xc9\x39\x9e\x39\xc2\x89\x07\xce\xc2\x96\x22\x8b\x4b\xfb\x66\x8a\x05\x89\xee\x38\xde\xa6\x26\xce\x43\xab\x00\xc4\x7d\xd3\x1d\x0b\x5a\xf7\x39\x82\x3b\xb6\x46\xeb\x81\x7d\x6f\xbb\x81\x4f\x6d\x96\xd9\x9f\x20\x65\xc6\xa0\x6d\x5b\x88\x03\xe8\x35\x3c\x92\x65\x5f\x58\xa2\x8f\x17\x68\x85\x42\x12\x80\x2d\x9e\xe3\x02\x0e\x7f\xd6\xf3\x23\xa5\x0e\x88\xe7\x7e\x60\x78\x81\x1e\x71\xb0\x67\xda\x40\xbc\x31\x18\xc4\x6d\xc2\x0e\xa5\x4b\xcc\x85\x8d\xd4\xf4\x9d\x19\xda\x01\xd2\x21\x5c\x9c\x6b\x8c\xc4\x77\xf9\xef\x1d\x71\x53\x0a\x54\x8d\x66\x0a\xc6\xa6\x8f\x2c\xea\xcf\xa6\x02\x47\xc3\x2c\x80\xf1\x0c\xcc\x9e\x8d\x2c\xf0\x45\xd0\x91\x94\xe1\x64\x28\x58\xa2\x3f\xc1\x8d\x70\x3d\x6c\xab\x89\xa1\x31\xb3\xa0\x6b\x6c\xfa\x81\x83\xa6\x22\x18\x0b\x3b\x32\x2b\xb0\x39\xd0\xe6\x99\xa0\xab\x03\x69\xc2\x90\x25\xe2\x09\x15\xd1\x39\x03\x6b\x29\x80\xb2\xc8\x58\x84\x8d\xd7\xe6\x34\x6e\xb4\x0c\xfc\xc7\xb4\xc9\x52\x78\xc8\x1d\x7f\x0c\x3a\x64\xa3\x14\xb4\x7b\x8f\xc4\x75\x90\x42\x13\xf7\xd3\x23\xa3\xe7\x3b\x68\x9c\x2c\x07\x10\x38\xb4\x73\xc8\x3b\x69\x66\x6c\xf1\x14\x5c\xc8\x9d\xd1\x9c\xa9\xeb\xd8\xb4\x5e\xee\x02\x89\x86\x6b\xd2\x08\xd7\xb1\xd1\x22\xf4\x0c\x5f\x48\x09\x3e\xf6\x8c\x91\x64\xa1\x6b\xa0\x02\xf6\x13\xe3\x4d\x1f\xd7\x31\x26\xa3\xa6\x3a\x8e\x25\x0c\xe4\x8d\xe3\x07\x12\xc1\x54\x92\x10\x7a\x9c\x6f\x86\x65\x0e\x3a\xb7\xb0\xb4\xc5\x0d\x5a\x6e\xdb\x98\x9b\x23\x23\x70\x68\x4f\x12\xfe\x28\x31\x2a\xba\xf4\x22\x3d\xb0\x67\xee\xc0\x08\xc4\xd0\x99\x21\xa3\x4c\xdb\x0f\x0c\xcb\x32\xed\x51\x34\x38\x6e\x42\x78\x14\xc3\x7e\xa8\xe2\x7d\x07\x84\xce\xb2\x10\xf2\x4a\x18\xfd\xa0\xd6\x6e\xe1\x34\x36\x6d\xeb\x48\x04\xba\x25\x60\xed\xea\x73\x03\x66\xb8\xb9\x3a\x23\x01\xef\x0b\xdf\x97\x62\x3d\x8b\x3c\x66\x7b\x28\xf5\xe5\x19\xdd\x4f\x8a\x70\xa9\xa6\x28\x5d\xb4\xfe\x77\x96\x99\x6e\x7f\x40\x6b\xe1\x9a\xf6\xc8\xcf\xed\xe7\x36\x04\x6f\x9a\x2a\x57\x74\x65\xe3\x9c\xf3\x9e\xa6\xe8\x9c\xdf\x28\x3a\xd7\x76\x54\xa5\xcd\xf9\x5c\xd3\x14\x83\x73\x43\x53\x2e\x39\xbf\x54\xfa\x5c\x9b\xab\x27\x00\xd3\x50\x74\x7e\x7e\xa2\x68\x9c\x6b\x4a\x8b\xf3\x96\xd2\xe4\xbc\x99\xf8\x03\x6d\x0d\x1a\x74\x03\x18\x3b\x1c\x20\xeb\xf0\xe7\x92\x6b\xdb\x1a\x07\x24\x4e\x0d\x5a\xca\x9a\x06\x53\xb5\x35\x65\xa4\x72\x3e\x52\x95\x06\xe7\x0d\x4d\xb9\xe5\xfc\x16\x2f\x01\xa1\x21\x27\xad\x73\x5e\x6f\x00\xb2\x8e\xd2\xe6\x4d\x5b\x57\x1a\x5c\xef\x5d\x63\x9f\x9e\x26\x94\xf7\xdb\x44\x58\x8b\x6b\x9b\x1a\x20\x6a\x6Line truncated
func publicStaticJsMainB612bd5aChunkJsMapBytes() ([]byte, error) {
func publicStaticJsMainAceb7093ChunkJsMapBytes() ([]byte, error) {
return bindataRead(
_publicStaticJsMainB612bd5aChunkJsMap,
"public/static/js/main.b612bd5a.chunk.js.map",
_publicStaticJsMainAceb7093ChunkJsMap,
"public/static/js/main.aceb7093.chunk.js.map",
)
}
func publicStaticJsMainB612bd5aChunkJsMap() (*asset, error) {
bytes, err := publicStaticJsMainB612bd5aChunkJsMapBytes()
func publicStaticJsMainAceb7093ChunkJsMap() (*asset, error) {
bytes, err := publicStaticJsMainAceb7093ChunkJsMapBytes()
if err != nil {
return nil, err
}
info := bindataFileInfo{name: "public/static/js/main.b612bd5a.chunk.js.map", size: 36397, mode: os.FileMode(0644), modTime: time.Unix(1598898920, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x46, 0x1b, 0xec, 0x77, 0xa4, 0x69, 0x1f, 0xa1, 0xa5, 0xa7, 0xa6, 0x9a, 0x73, 0x38, 0xc7, 0xa4, 0x9d, 0x3, 0xb, 0x5f, 0x31, 0xfb, 0x7d, 0x59, 0x2f, 0x27, 0xc9, 0x4, 0x19, 0xa9, 0xbe, 0xf0}}
info := bindataFileInfo{name: "public/static/js/main.aceb7093.chunk.js.map", size: 36471, mode: os.FileMode(0644), modTime: time.Unix(1599169371, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9f, 0x87, 0x23, 0xc, 0x5b, 0x6b, 0x99, 0x61, 0xcf, 0xc1, 0xf5, 0x3, 0xa, 0x1f, 0xd7, 0x9c, 0x96, 0x1e, 0x42, 0xe7, 0x12, 0x4, 0x5d, 0xd2, 0xf1, 0x56, 0x40, 0xba, 0xb7, 0xcb, 0x57, 0xf5}}
return a, nil
}
var _publicStaticJsRuntimeMain3617f9c7Js = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x54\xdf\x8f\xdb\x36\x0c\x7e\xdf\x5f\x91\x78\x80\x20\x22\x3c\x9d\xd3\x0d\xeb\x16\x1f\xb1\xf7\x61\x45\x87\x75\x7b\x32\x8c\x42\x71\xe4\xc4\x9d\x22\x09\x32\xdd\xee\xe0\xf3\xff\x3e\xc8\x89\x9d\xf6\xd6\x03\x0a\x04\x08\x2d\xf1\xc7\xc7\xef\xa3\xb8\x6e\x7a\x57\x73\xeb\x9d\x34\x30\xcc\xf6\x8a\x25\xc3\xd0\xf8\x28\x3f\xea\xb8\x72\x68\x51\x13\x97\x79\x85\x81\xb8\xdc\x56\xd8\x10\x97\xaf\x2a\xac\x29\xc7\x8e\xca\xaa\xa8\x1f\xb4\xb2\xc6\x1d\xf9\x54\xd4\x9b\x0d\x58\xd2\x65\x5d\xe1\xdb\xfd\x07\x53\xb3\x0a\xd1\xb3\xe7\xc7\x60\xd4\x49\x77\x6f\x3f\xb9\x3f\xa2\x0f\x26\xf2\xa3\xaa\xb5\xb5\xd2\xa3\x05\x21\x7c\x69\x2b\x21\x3a\x15\xfa\xee\x24\xd3\x47\x99\x57\x80\xc9\xa0\xbc\x48\x38\xdc\xaa\x75\xab\x00\xdf\x94\x32\xa0\x03\x21\xa4\x29\x5d\x45\xa1\x74\x15\x4c\x19\x5a\x21\x5a\xc9\x50\x74\x33\x52\xe8\x54\x77\x6a\x1b\x96\x20\xa1\x88\x86\xfb\xe8\x56\xfd\x84\x40\xe9\x10\xec\xa3\xec\xb1\x79\x7a\x2a\x2b\xc0\x28\x61\x5c\xa8\x89\xf2\xc6\x8c\x41\xa6\xbc\xe0\x87\x7e\xce\xc9\x9b\xcd\xed\x36\x52\x5f\x72\x85\x8e\xd6\x39\x6a\xda\x16\xfa\x21\xce\x7e\x3a\xf9\x25\x9f\x40\xb1\xd4\x55\x91\xaf\x89\x7c\x19\x2a\x21\xa4\xa3\xf5\x16\x46\x27\x84\xec\x55\x17\x6c\x5b\x1b\xc9\x77\x77\xb8\x05\x34\x64\xa5\x55\x1d\xc5\x44\x0e\x8c\x57\xc8\x66\x9c\x34\xa2\x61\x44\x4f\xc3\x76\x97\x8f\xd8\x27\x4d\x16\xc0\x36\x69\xd9\x36\xd2\x95\x5c\xc1\x35\x28\xd9\xca\xfc\x1b\x7c\xe4\xae\xb8\x60\x4d\x47\x34\xb4\x3b\x46\xbb\x5b\x6f\xf1\x7a\xb9\x1b\xc6\x71\x26\xc7\xa4\xa0\x89\xe1\x38\xc7\x62\xc4\x9b\x6d\x01\xa3\xb2\xa9\xdb\xe5\x6c\xb4\xea\x4c\x06\xad\xaa\xc9\xa1\x55\x07\xba\x4d\x1b\x32\x46\x18\xac\xf2\xc9\x84\xa7\xa7\xab\xb4\x07\xd3\xb4\xce\xcc\x82\x4e\x6e\x83\x71\xfd\xd9\x44\xbd\xb7\x66\xb7\xce\xf1\x68\x78\x17\x47\x18\xd1\xaa\x48\x9f\x4f\x6f\xd6\xbb\x4b\xf4\x21\x5b\x13\xa5\xf1\xf0\xcd\xea\xdd\xe3\x79\xef\xad\x10\x97\x7f\xc5\xfe\x1d\xc7\xd6\x1d\xff\xd2\x47\x21\x5e\x2a\xf9\x7f\x5f\x1c\x3e\x6a\xdb\x9b\x5d\xf6\xc6\x1f\x7a\x6b\xb2\x11\xf0\xa5\xe0\xec\xfd\x7b\xd3\x5d\xdd\xe6\xb0\x75\x7e\xc1\xcb\x5f\xf4\x3f\xa9\xb2\x15\x9c\x66\x95\xac\x34\x00\xf8\xb3\xe0\x59\x22\x53\xb4\x8d\xfc\x31\xdd\x66\x7e\x2a\x95\xd1\xd2\x94\x11\x22\xfd\xd4\xad\xd4\x2d\xea\xa2\xe6\x15\x5d\x1d\x8d\x66\x23\x5d\x6f\x2d\xa4\x7c\x56\x45\x19\x5f\xc2\x1e\x31\x3b\x98\x46\xf7\x96\xb3\xe7\x9c\x5f\xda\x30\x23\xe0\xab\x09\x51\x37\x11\x93\xad\x17\x40\xb0\x2c\x8b\xf4\x50\x0d\x58\x75\x90\x11\x1d\x2e\xfd\x32\x0c\x9f\x8d\xd1\xa8\xf6\xad\x3b\x4c\xb8\xd0\xc1\xf2\xfc\x62\x22\xc9\x7d\x21\x6a\xca\xc9\xf4\xac\xdb\x5f\x17\x8f\x5b\x56\x75\xc5\x3e\xee\xbe\x72\xb9\xcc\x70\xc2\xc5\x98\xe9\x0c\x19\x90\x53\x39\xff\x4c\x93\xab\xe3\x37\x6d\x9a\x14\x90\x72\x04\xca\xee\xb3\x89\x79\x4d\x7c\x6a\x3b\xf5\xc9\xec\x83\xae\xff\xf9\xad\xf3\x2e\x04\xdd\xb1\x79\xe1\x38\xed\x17\x0c\xa4\x2f\x6b\x67\xe2\x44\x43\x71\xf9\x24\x46\x4d\x5a\x75\xd3\x0a\xb8\xec\xb0\x54\xa1\x49\x1b\xf1\xb6\x6f\x9b\xcd\x06\x58\xea\xb2\xa9\x60\x02\xd0\x52\x28\xd2\xbe\x92\x65\x05\xc5\x77\xf7\xf7\xdf\xaf\x3a\xdf\xc7\xda\xbc\xd1\x21\xb4\xee\xf8\xf7\x9f\xbf\x53\xec\x1d\xb7\x67\x73\x77\xd6\xad\x53\x3f\xfc\xb4\x7d\xdd\xfc\x52\xbf\x56\x1f\x3a\x75\xd6\xe1\xbf\x00\x00\x00\xff\xff\x21\x0f\xcd\x16\x0f\x06\x00\x00")
var _publicStaticJsRuntimeMainA4bc2b48Js = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x54\xdf\x8b\xe3\x36\x10\x7e\xef\x5f\x91\xb8\x20\x24\x32\xab\x75\x96\x7d\x38\xe2\x1d\xfa\x5e\x7a\x5c\xe9\xb5\x4f\xc6\x1c\x8a\x23\x27\xba\x2a\x92\x90\x47\x77\x5d\xbc\xfe\xdf\x8b\x9c\xd8\xb9\xdb\x76\xe1\x20\x90\xb1\x34\x3f\xbe\xf9\xbe\xd1\xac\xbb\xe4\x5a\x32\xde\x71\x2d\x86\xd9\x5e\x11\x27\x31\x74\x3e\xf2\x2f\x2a\xae\x1c\x58\x50\x48\x75\xd9\x80\x41\xaa\xb7\x0d\x04\xa4\xfa\xa1\x81\x16\x4b\xe8\xb1\x6e\xaa\xf6\x49\x49\xab\xdd\x91\x4e\x55\xbb\xd9\x08\x8b\xaa\x6e\x1b\xf8\xb0\xff\xac\x5b\x92\x21\x7a\xf2\xf4\x1c\xb4\x3c\xa9\xfe\xc3\x57\xf7\x7b\xf4\x41\x47\x7a\x96\xad\xb2\x96\x7b\xb0\x82\x31\x5f\xdb\x86\xb1\x5e\x86\xd4\x9f\x78\xfe\xa8\xcb\x46\x40\x36\xb0\xac\x32\x0e\xb7\x32\x6e\x65\xc4\x0f\xa5\x34\xe0\x04\x63\x5c\xd7\xae\x41\x53\xbb\x46\x4c\x19\x3a\xc6\x3a\x4e\xa2\xea\x67\xa4\xa2\x97\xfd\xc9\x74\xc4\x05\x17\x55\xd4\x94\xa2\x5b\xa5\x09\x81\x54\x21\xd8\x67\x9e\x20\xbc\xbc\xd4\x8d\x80\xc8\xc5\xb8\x50\x13\xf9\x8d\x19\x0d\x84\x65\x45\x4f\x69\xce\x49\x9b\xcd\xed\x36\x62\xaa\xa9\x01\x87\xeb\x12\x14\x6e\x2b\xf5\x14\x67\x3f\x95\xfd\xb2\x8f\xc1\x58\xab\xa6\x2a\xd7\x88\xbe\x36\x0d\x63\xdc\xe1\x7a\x2b\x46\xc7\x18\x4f\xb2\x0f\xd6\xb4\x9a\xd3\xdd\x1d\x6c\x05\x68\xb4\xdc\xca\x1e\x63\x26\x47\x8c\x57\xc8\x7a\x9c\x34\xc2\x61\x04\x8f\xc3\x76\x57\x8e\x90\xb2\x26\x0b\x60\x9b\xb5\x34\x1d\x77\x35\x35\xe2\x1a\x94\x6d\xa9\xff\x09\x3e\x52\x5f\x5d\xb0\xe6\x23\x1c\xcc\x8e\xc0\xee\xd6\x5b\xb8\x5e\xee\x86\x71\x9c\xc9\xd1\x39\x68\x62\x38\xce\xb1\x10\xe1\x66\x5b\x01\x51\xda\xdc\xed\x72\x36\x5a\x79\x46\x0d\x56\xb6\xe8\xc0\xca\x03\xde\xa6\x0d\x08\xa2\x18\xac\xf4\xd9\x14\x2f\x2f\x57\x69\x0f\xba\x33\x4e\xcf\x82\x4e\x6e\x83\x76\xe9\xac\xa3\xda\x5b\xbd\x5b\x97\x70\xd4\xb4\x8b\xa3\x18\xc1\xca\x88\xdf\x4e\x6f\x91\xdc\x25\xfa\x50\xac\x11\xf3\x78\xf8\x6e\xf5\xf1\xf9\xbc\xf7\x96\xb1\xcb\xbf\x24\xff\x91\xa2\x71\xc7\x3f\xd5\x91\xb1\xb7\x4a\xfe\xd7\x17\x86\x2f\xca\x26\xbd\x2b\xde\xfb\x43\xb2\xba\x18\x05\xbc\x15\x5c\x7c\xfa\xa4\xfb\xab\xdb\x1c\xb6\x2e\x2f\x78\xe9\xbb\xfe\x27\x55\xb6\x8c\xf2\xac\xa2\xe5\x5a\x08\x78\xc7\x68\x96\x48\x57\xa6\xe3\x8f\xf9\xb6\xf0\x53\xa9\x02\x97\xa6\x34\x63\xf9\x27\x6f\xa5\x6e\x51\x17\x35\xaf\xe8\xda\xa8\x15\x69\xee\x92\xb5\x22\xe7\xb3\x32\xf2\xf8\x16\xf6\x08\xc5\x41\x77\x2a\x59\x2a\x5e\x73\x7e\x69\x43\x8f\x02\x1e\x26\x44\xfd\x44\x4c\xb1\x5e\x00\x89\x65\x59\xe4\x87\xaa\x85\x95\x07\x1e\xc1\xc1\xd2\x2f\x89\xe1\x9b\x31\x1a\xe5\xde\xb8\xc3\x84\x0b\x9c\x58\x9e\x5f\xcc\x24\xb9\xef\x44\xcd\x39\x09\x5f\x75\xfb\xcb\xe2\x71\xcb\x2a\xaf\xd8\xc7\xdd\xff\x5c\x2e\x33\x9c\x71\x11\x14\xaa\x00\x12\x40\xb9\x9c\x7f\xa5\xc9\xd5\xf1\x87\x36\x4d\x0e\xc8\x39\x02\x16\xf7\xc9\xdc\x17\x13\xf9\x0a\xe9\x64\x7a\xf9\x55\xef\x83\x6a\xff\xfe\xb5\xf7\x2e\x04\xd5\x93\x7e\xe3\x38\xaf\x18\x30\xa8\x2e\x9b\x67\xa2\x45\x89\xea\xf2\x89\x04\x0a\x95\xec\xa7\x2d\x70\x59\x63\xb9\x42\xc0\xb2\x0a\xb7\x95\x1b\x36\x1b\x41\x5c\xd5\xa1\x11\x13\x80\x0e\x4d\x95\x57\x16\xaf\x1b\x51\xfd\x74\x7f\xff\xf3\xaa\xf7\x29\xb6\xfa\xbd\x0a\xc1\xb8\xe3\x5f\x7f\xfc\x86\x31\x39\x32\x67\x7d\x77\x56\xc6\x49\xf5\xb8\x6f\x1f\xf6\x8f\xef\xe4\xe7\x5e\x9e\x55\xf8\x37\x00\x00\xff\xff\xfb\x4d\x5a\xa6\x12\x06\x00\x00")
func publicStaticJsRuntimeMain3617f9c7JsBytes() ([]byte, error) {
func publicStaticJsRuntimeMainA4bc2b48JsBytes() ([]byte, error) {
return bindataRead(
_publicStaticJsRuntimeMain3617f9c7Js,
"public/static/js/runtime-main.3617f9c7.js",
_publicStaticJsRuntimeMainA4bc2b48Js,
"public/static/js/runtime-main.a4bc2b48.js",
)
}
func publicStaticJsRuntimeMain3617f9c7Js() (*asset, error) {
bytes, err := publicStaticJsRuntimeMain3617f9c7JsBytes()
func publicStaticJsRuntimeMainA4bc2b48Js() (*asset, error) {
bytes, err := publicStaticJsRuntimeMainA4bc2b48JsBytes()
if err != nil {
return nil, err
}
info := bindataFileInfo{name: "public/static/js/runtime-main.3617f9c7.js", size: 1551, mode: os.FileMode(0644), modTime: time.Unix(1598898920, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x29, 0xe4, 0x35, 0x9b, 0xcc, 0x55, 0x79, 0xdc, 0x6c, 0xbd, 0xbc, 0x6c, 0xb9, 0x46, 0xf3, 0x37, 0xc0, 0xd1, 0xcc, 0x24, 0x46, 0x38, 0x9d, 0xa7, 0xe6, 0xc7, 0xfe, 0xe5, 0xec, 0xe1, 0x91, 0x20}}
info := bindataFileInfo{name: "public/static/js/runtime-main.a4bc2b48.js", size: 1554, mode: os.FileMode(0644), modTime: time.Unix(1599169371, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1a, 0x26, 0xba, 0x1f, 0x3f, 0x83, 0x83, 0x6d, 0x2a, 0xd2, 0xf2, 0xc4, 0x3f, 0x58, 0x9b, 0x38, 0x6a, 0x1e, 0x62, 0xef, 0x38, 0x2e, 0x1b, 0xdf, 0x54, 0xf5, 0x76, 0xb8, 0x4c, 0x40, 0xb, 0xcc}}
return a, nil
}
var _publicStaticJsRuntimeMain3617f9c7JsMap = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x59\x6b\x73\xda\x38\xf7\xff\x2a\x5a\xbf\xd8\xc0\xac\x0a\x49\x2f\xff\x76\xc9\x9f\x79\x46\x16\xc4\x71\x68\x4a\x09\x4d\xd3\x6c\xc8\x64\x1c\x10\xe0\x60\x6c\xd7\x16\xb9\xb4\x9b\xef\xfe\xcc\x39\x92\x6c\x19\x9c\xdd\x3e\x6f\x08\x48\xe7\xf2\x3b\x57\x1d\x29\x3f\x9d\x7b\x91\xe5\x61\x12\x3b\x9d\x37\xd4\xc9\x93\x4d\x36\x15\xb9\xd3\xb9\x72\x5a\xad\xf6\x83\xb8\x4d\x83\xe9\xaa\x7d\x9b\x24\x32\x97\x59\x90\x3a\xd7\xd4\x89\x83\xb5\x22\xd0\xbb\x27\x79\x12\xa7\x3c\x88\xa2\xdb\x60\xba\x72\xa8\x33\x0b\x64\xe0\x50\x67\x9d\xcc\x36\x91\xf0\x67\x0e\x75\xa6\xcb\x4d\xbc\xb2\xbf\xe5\xb8\x9f\x89\x53\xa4\x81\x5f\xe2\x51\x4c\x37\xd2\x5a\x08\x1d\xea\x64\x22\x4f\xa2\x7b\xfc\x19\x89\x78\x21\x97\x0e\x75\x86\xb7\x77\x62\x2a\x1d\xea\xa4\x59\x22\x13\xf9\x94\x0a\x87\x3a\xcb\x20\x1f\x3e\xc4\x9f\xb3\x24\x15\x99\x7c\x02\x3d\x41\x14\x81\x90\x38\x97\x41\x14\x89\x19\x07\xbd\x20\x27\xdd\xe4\xcb\x02\x1c\x2e\x04\x99\x88\x25\xda\x70\xb4\x89\xa7\x12\x1c\x41\x9d\x7c\x19\xce\x41\xc9\x4c\xcc\x45\x96\x89\x59\x89\x2b\x48\xd3\x08\x35\x2c\xc5\x74\xd5\xdb\xd9\xce\x44\xbe\x89\x76\x39\x1d\xea\xcc\x37\xd1\x3c\x04\x2c\x0e\x75\xee\x90\x20\x45\x97\xe4\x69\x14\x4e\x81\xe0\xe6\x46\x3b\xf4\x26\x13\xdf\x37\x61\x26\x6e\x6e\x60\xdb\x36\xa3\xd4\x73\x80\x3e\x4b\x93\x4c\xe6\x85\x39\xe0\x26\xf8\x01\xe8\x40\x81\xa3\x62\xe5\x50\x67\x21\xa4\x14\x99\x43\x9d\x44\x21\x0b\x63\x61\x39\x4b\xc4\x9b\xb5\xc8\x82\xdb\x48\x93\x82\x19\x0e\x75\xc6\x4f\xeb\xdb\x04\x04\xca\x64\x2c\xb3\x30\x5e\x7c\x09\x16\x0e\x75\xee\x83\x68\x03\x84\x52\xe9\x55\xc8\x45\x5e\xd8\x19\x03\xa0\x69\x26\x02\x09\xbf\x56\x02\x34\xdc\x86\x31\xa2\x01\x04\x56\xfc\x0c\x80\x14\x5c\x02\x11\x60\x59\x16\xc0\x82\x5c\x86\x20\x25\x89\x66\x3b\x81\x41\x67\x5d\x53\x67\x1d\xa4\x69\x18\x2f\x72\xa7\xe3\x04\x8c\xf7\xe9\x98\xb1\x31\xa3\x7d\xc6\xbe\xbb\x9c\x7a\x6c\xf4\xde\xa5\x3e\xfb\xcc\xa8\xcf\x4e\x7d\x0e\xeb\xe7\xf0\xf9\xe9\x2b\x7e\xbf\x38\x86\xcf\x01\xf5\x18\x5f\xba\x3e\x7c\x9f\x9e\x14\x2b\xb1\x3b\x80\xef\xa1\xfb\xd1\x2c\xf9\xc7\xa7\xf0\x15\x09\x3d\x25\x00\x08\x53\xde\xc3\x65\x14\x36\x1e\xd0\x21\x63\xa3\x23\xea\x33\xfe\xc3\x3d\x29\x34\xb2\xb1\xa7\xd4\x78\xb0\x3f\xe4\xf4\x1c\x37\x04\x63\x82\xd3\x01\x63\x03\xae\x94\x7d\xa3\x3e\x63\x97\x17\xf0\x63\x81\x3f\x78\x7a\x84\x38\xc6\x43\x24\xeb\x99\x1d\x8f\xb1\x31\xf5\x59\xff\x91\x5f\x58\x4b\xf0\xbd\xff\x0e\x6c\x66\x7e\x0f\x18\x2e\x3d\xda\x67\xfc\xaf\xc1\x0b\x5a\xcf\x80\x37\x38\xa6\x03\xc6\xd3\xde\x14\x7e\x8c\x66\x20\x07\xd9\xd8\xe5\x31\xf5\xd9\x20\xe2\xd4\x67\x47\x9e\x80\xf5\xef\x2e\x3a\x37\x71\x97\x2e\xf5\x58\x5f\xf2\x21\x62\xe3\x74\xc4\xf8\x0c\xb1\x8d\xcf\x41\xd5\x97\xaf\xd4\x63\xc3\x1e\x1d\xb2\x63\xa6\xf1\x9d\xa0\xc2\x01\x3d\x65\xec\xb4\xa7\x8c\xbd\x05\x91\x2b\x40\xeb\xdd\xf7\x04\x58\x73\xa6\x03\x88\x5f\x7d\xd6\x63\x68\x09\xf8\x86\xfb\xf3\xd2\xf9\x08\xc2\xbf\x54\x82\xbf\x16\x1e\x67\x03\xca\x99\xd7\x46\xbc\x8a\x73\xe1\x2a\x4d\x27\x8a\xf4\x2f\x88\xc1\x1d\x0f\x5d\xb4\x11\xa4\x9e\xf1\x6d\xa9\x47\xf0\x29\x66\x28\x74\xe1\x1a\xa9\xfc\x4f\x5e\x40\x61\x23\x0c\xb5\xe8\x83\x34\x0f\x96\xdf\xb8\xdf\x94\x82\x4b\x30\x72\x7a\xa4\xc4\x7b\xac\xff\x86\x03\x0e\x7e\xf4\x51\x6d\x8f\x30\x0c\xa9\x96\xea\x31\xfe\xce\x15\xe8\xb4\x53\xe5\x55\xed\x5c\x85\xe9\x13\x2a\xa1\x03\xe6\xcb\x3e\xf2\x81\xd7\xfc\x33\x84\x31\x82\xbd\x35\x98\x31\x88\x21\x16\x7d\xf4\x23\x67\x3c\x73\x43\xfc\x05\xd9\xe6\xb1\xbf\xf4\x86\xc7\x3c\xe9\xa2\x6b\xc7\x4a\xc3\x01\xae\xbd\x43\x3f\x78\x6f\xb5\x93\xf0\x27\x8f\x5d\x54\x56\x59\x64\xe7\x1f\x5c\x3a\x62\x5e\x6c\x39\x61\x7c\x6c\x13\x5c\x82\xf2\x1f\x1c\x53\xd5\x03\x6b\xf9\xf1\x82\xa3\x74\xfc\x7e\x44\x47\x2a\x5f\xcf\x21\x5a\x9f\x98\x82\xac\x72\xed\xfc\x02\x33\x23\xc1\xa5\x61\x0f\x29\x95\x9b\x99\xb5\x72\x02\x80\xdb\x3d\x54\x30\x44\xc9\x10\x34\xef\xa4\x57\xd0\x0c\xe6\x27\xca\x38\xcc\x49\x3f\x06\x79\xde\xa3\x7b\xa9\x16\x47\x85\x4f\xbd\x47\xf7\x48\xad\x8d\x55\xec\xc1\x2f\x1f\xcb\x30\x9c\x82\x74\xfe\x86\x7f\x53\x44\xc8\xdf\x3f\xd3\xfb\x3e\xe3\x11\x7f\xa7\x5c\xf4\x87\x8b\x95\xf4\xc5\x62\xa5\x9c\xb1\xbe\x4f\x2f\x55\x76\x81\x28\x88\x34\xa4\xfe\x60\xd9\xd7\x02\x55\x4e\x2a\xb5\x98\x90\xdf\xe8\x77\x97\xb1\x6f\x01\xd8\xb9\xef\x32\x5d\xaa\x01\xe3\x07\x3c\xe5\xbb\x9a\x02\x4d\x70\xc9\x58\x80\xfa\x38\xd4\xd4\x90\x5e\xb0\xfe\xfb\x5e\x56\xc3\x40\x03\xc6\xa6\x48\x29\x70\x93\x0e\xd8\xe8\xbe\x87\xfe\x61\x89\x9b\x58\x70\x94\x33\x21\xaf\xfb\xf7\xe0\x85\xde\x39\x2c\x60\xfb\x64\xe7\xe8\xb4\x91\x61\x5b\x43\x12\xf3\x36\xfe\xfa\xdc\xc7\x3e\x87\xc2\x81\x8a\xa7\xae\x69\x46\xb0\xe7\x31\xf6\xc1\xa5\x2b\x97\xb1\xaf\x58\x19\xb9\xcb\xb0\x7d\x61\x78\x4f\x3d\x7a\x01\xde\x02\x5e\xc8\x28\xbe\xc4\x4a\xf6\xb1\x24\x07\x3f\x94\x39\xfb\xea\x0f\x3d\x65\xde\x3d\x88\x3e\x62\x8f\xae\xed\xcc\xfe\x10\xfc\x28\xdd\x1f\x15\xeb\xcf\x95\x61\xe7\x80\x04\xac\xff\x52\xc6\x05\xdb\xd0\x10\x6b\x53\xf6\x4a\x98\x6f\x5d\x1a\xba\x8c\x7d\x39\xd2\xe5\x05\x40\xf0\xe3\x14\x52\x74\x88\x15\x39\x34\x1e\xc0\xec\xe9\x63\xd3\xf4\xfb\xea\x8c\x50\xcd\xcb\x03\xa8\x43\x43\x7f\x0a\x49\xc3\x46\xaa\xdf\xc2\xc7\x69\x0f\xd4\xfe\xe9\x6b\x77\x79\xcc\x3f\xbb\xd7\x22\x5f\x5b\xb1\x90\x58\x8d\x4b\xae\Line truncated
var _publicStaticJsRuntimeMainA4bc2b48JsMap = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x59\x7b\x53\xdb\x38\xb4\xff\x2a\x5a\xff\xb1\x24\xb3\x6a\x02\x94\x4e\xd9\x70\x33\x77\x64\x25\x18\x93\xd2\x34\xa4\x94\xb2\x84\x61\x9c\x44\x21\x06\xc7\x76\x6d\x85\x47\xbb\x7c\xf7\x3b\xe7\x48\xb2\xe5\xc4\xec\xee\xfd\x27\x24\xd2\x79\xfc\xce\x53\x47\xe2\x97\xf3\x28\xb2\x3c\x4c\x62\xa7\xf3\x9e\x3a\x79\xb2\xce\x66\x22\x77\x3a\xd7\x4e\xab\xd5\x7e\x12\xd3\x34\x98\x3d\xb4\xa7\x49\x22\x73\x99\x05\xa9\x73\x43\x9d\x38\x58\x29\x02\xbd\x7b\x9a\x27\x71\xca\x83\x28\x9a\x06\xb3\x07\x87\x3a\xf3\x40\x06\x0e\x75\x56\xc9\x7c\x1d\x09\x7f\xee\x50\x67\xb6\x5c\xc7\x0f\xf6\xb7\x1c\xf7\x33\x71\x86\x34\xf0\x4b\x3c\x8b\xd9\x5a\x5a\x0b\xa1\x43\x9d\x4c\xe4\x49\xf4\x88\x3f\x23\x11\xdf\xc9\xa5\x43\x9d\xe1\xf4\x5e\xcc\xa4\x43\x9d\x34\x4b\x64\x22\x5f\x52\xe1\x50\x67\x19\xe4\xc3\xa7\xf8\x4b\x96\xa4\x22\x93\x2f\xa0\x27\x88\x22\x10\x12\xe7\x32\x88\x22\x31\xe7\xa0\x17\xe4\xa4\xeb\x7c\x59\x80\xc3\x85\x20\x13\xb1\x44\x1b\x8e\xd7\xf1\x4c\x82\x23\xa8\x93\x2f\xc3\x05\x28\x99\x8b\x85\xc8\x32\x31\x2f\x71\x05\x69\x1a\xa1\x86\xa5\x98\x3d\xf4\xb6\xb6\x33\x91\xaf\xa3\x6d\x4e\x87\x3a\x8b\x75\xb4\x08\x01\x8b\x43\x9d\x7b\x24\x48\xd1\x25\x79\x1a\x85\x33\x20\xb8\xbd\xd5\x0e\xbd\xcd\xc4\x8f\x75\x98\x89\xdb\x5b\xd8\xb6\xcd\x28\xf5\xec\xa1\xcf\xd2\x24\x93\x79\x61\x0e\xb8\x09\x7e\x00\x3a\x50\xe0\xa8\x58\x39\xd4\xb9\x13\x52\x8a\xcc\xa1\x4e\xa2\x90\x85\xb1\xb0\x9c\x25\xe2\xf5\x4a\x64\xc1\x34\xd2\xa4\x60\x86\x43\x9d\xf1\xcb\x6a\x9a\x80\x40\x99\x8c\x65\x16\xc6\x77\x5f\x83\x3b\x87\x3a\x8f\x41\xb4\x06\x42\xa9\xf4\x2a\xe4\x22\x2f\xec\x8c\x01\xd0\x2c\x13\x81\x84\x5f\x0f\x02\x34\x4c\xc3\x18\xd1\x00\x02\x2b\x7e\x06\x40\x0a\x2e\x81\x08\xb0\x2c\x0b\x60\x41\x2e\x43\x90\x92\x44\xf3\xad\xc0\xa0\xb3\x6e\xa8\xb3\x0a\xd2\x34\x8c\xef\x72\xa7\xe3\x04\x8c\xf7\xe9\x98\xb1\x31\xa3\x7d\xc6\x7e\xb8\x9c\x7a\x6c\xf4\xd1\xa5\x3e\xfb\xc2\xa8\xcf\xce\x7c\x0e\xeb\x17\xf0\xf9\xf9\x1b\x7e\xbf\x3c\x81\xcf\x01\xf5\x18\x5f\xba\x3e\x7c\x9f\x9d\x16\x2b\xb1\x3b\x80\xef\xa1\xfb\xc9\x2c\xf9\x27\x67\xf0\x15\x09\x3d\x25\x00\x08\x53\xde\xc3\x65\x14\x36\x1e\xd0\x21\x63\xa3\x63\xea\x33\xfe\xd3\x3d\x2d\x34\xb2\xb1\xa7\xd4\x78\xb0\x3f\xe4\xf4\x02\x37\x04\x63\x82\xd3\x01\x63\x03\xae\x94\x7d\xa7\x3e\x63\x57\x97\xf0\xe3\x0e\x7f\xf0\xf4\x18\x71\x8c\x87\x48\xd6\x33\x3b\x1e\x63\x63\xea\xb3\xfe\x33\xbf\xb4\x96\xe0\x7b\xff\x03\xd8\xcc\xfc\x1e\x30\x5c\x79\xb4\xcf\xf8\x5f\x83\x37\xb4\x9e\x03\x6f\x70\x42\x07\x8c\xa7\xbd\x19\xfc\x18\xcd\x41\x0e\xb2\xb1\xab\x13\xea\xb3\x41\xc4\xa9\xcf\x8e\x3d\x01\xeb\x3f\x5c\x74\x6e\xe2\x2e\x5d\xea\xb1\xbe\xe4\x43\xc4\xc6\xe9\x88\xf1\x39\x62\x1b\x5f\x80\xaa\xaf\xdf\xa8\xc7\x86\x3d\x3a\x64\x27\x4c\xe3\x3b\x45\x85\x03\x7a\xc6\xd8\x59\x4f\x19\x3b\x05\x91\x0f\x80\xd6\x7b\xec\x09\xb0\xe6\x5c\x07\x10\xbf\xfa\xac\xc7\xd0\x12\xf0\x0d\xf7\x17\xa5\xf3\x11\x84\x7f\xa5\x04\x7f\x2b\x3c\xce\x06\x94\x33\xaf\x8d\x78\x15\xe7\x9d\xab\x34\x9d\x2a\xd2\xbf\x20\x06\xf7\x3c\x74\xd1\x46\x90\x7a\xce\x37\xa5\x1e\xc3\xa7\x98\xa3\xd0\x3b\xd7\x48\xe5\x7f\xf2\x02\x0a\x1b\x61\xa8\x45\x1f\xa4\x79\xb0\xfc\xde\xfd\xae\x14\x5c\x81\x91\xb3\x63\x25\xde\x63\xfd\xf7\x1c\x70\xf0\xe3\x4f\x6a\x7b\x84\x61\x48\xb5\x54\x8f\xf1\x0f\xae\x40\xa7\x9d\x29\xaf\x6a\xe7\x2a\x4c\x9f\x51\x09\x1d\x30\x5f\xf6\x91\x0f\xbc\xe6\x9f\x23\x8c\x11\xec\xad\xc0\x8c\x41\x0c\xb1\xe8\xa3\x1f\x39\xe3\x99\x1b\xe2\x2f\xc8\x36\x8f\xfd\xa5\x37\x3c\xe6\x49\x17\x5d\x3b\x56\x1a\xf6\x70\xed\x03\xfa\xc1\x3b\xd0\x4e\xc2\x9f\x3c\x76\x51\x59\x65\x91\x5d\x1c\xba\x74\xc4\xbc\xd8\x72\xc2\xf8\xc4\x26\xb8\x02\xe5\x3f\x39\xa6\xaa\x07\xd6\xf2\x93\x3b\x8e\xd2\xf1\xfb\x31\x1d\xa9\x7c\xbd\x80\x68\x7d\x66\x0a\xb2\xca\xb5\x8b\x4b\xcc\x8c\x04\x97\x86\x3d\xa4\x54\x6e\x66\xd6\xca\x29\x00\x6e\xf7\x50\xc1\x10\x25\x43\xd0\xbc\xd3\x5e\x41\x33\x58\x9c\x2a\xe3\x30\x27\xfd\x18\xe4\x79\xcf\xee\x95\x5a\x1c\x15\x3e\xf5\x9e\xdd\x63\xb5\x36\x56\xb1\x07\xbf\x7c\x2a\xc3\x70\x06\xd2\xf9\x7b\xfe\x5d\x11\x21\x7f\xff\x5c\xef\xfb\x8c\x47\xfc\x83\x72\xd1\x1f\x2e\x56\xd2\x57\x8b\x95\x72\xc6\xfa\x3e\xbd\x52\xd9\x05\xa2\x20\xd2\x90\xfa\x83\x65\x5f\x0b\x54\x39\xa9\xd4\x62\x42\x7e\xa7\x3f\x5c\xc6\xbe\x07\x60\xe7\xae\xcb\x74\xa9\x06\x8c\xef\xf1\x94\x6f\x6b\x0a\x34\xc1\x15\x63\x01\xea\xe3\x50\x53\x43\x7a\xc9\xfa\x1f\x7b\x59\x0d\x03\x0d\x18\x9b\x21\xa5\xc0\x4d\x3a\x60\xa3\xc7\x1e\xfa\x87\x25\x6e\x62\xc1\x51\xce\x84\xbc\xee\x3f\x82\x17\x7a\x17\xb0\x80\xed\x93\x5d\xa0\xd3\x46\x86\x6d\x05\x49\xcc\xdb\xf8\xeb\x4b\x1f\xfb\x1c\x0a\x07\x2a\x9e\xba\xa6\x19\xc1\x9e\xc7\xd8\xa1\x4b\x1f\x5c\xc6\xbe\x61\x65\xe4\x2e\xc3\xf6\x85\xe1\x3d\xf3\xe8\x25\x78\x0b\x78\x21\xa3\xf8\x12\x2b\xd9\xc7\x92\x1c\xfc\x54\xe6\xec\xaa\x3f\xf4\x8c\x79\x8f\x20\xfa\x98\x3d\xbb\xb6\x33\xfb\x43\xf0\xa3\x74\x7f\x56\xac\xbf\x50\x86\x5d\x00\x12\xb0\xfe\x6b\x19\x17\x6c\x43\x43\xac\x4d\xd9\x2b\x61\x1e\xb8\x34\x74\x19\xfb\x7a\xac\xcb\x0b\x80\xe0\xc7\x19\xa4\xe8\x10\x2b\x72\x68\x3c\x80\xd9\xd3\xc7\xa6\xe9\xf7\xd5\x19\xa1\x9a\x97\x07\x50\x87\x86\xfe\x0c\x92\x86\x8d\x54\xbf\x85\x8f\xb3\x1e\xa8\xfd\xd3\xd7\xee\xf2\x98\x7f\xfe\xa8\x45\xee\x5b\xb1\x90\x58\x8d\x4b\xae\Line truncated
func publicStaticJsRuntimeMain3617f9c7JsMapBytes() ([]byte, error) {
func publicStaticJsRuntimeMainA4bc2b48JsMapBytes() ([]byte, error) {
return bindataRead(
_publicStaticJsRuntimeMain3617f9c7JsMap,
"public/static/js/runtime-main.3617f9c7.js.map",
_publicStaticJsRuntimeMainA4bc2b48JsMap,
"public/static/js/runtime-main.a4bc2b48.js.map",
)
}
func publicStaticJsRuntimeMain3617f9c7JsMap() (*asset, error) {
bytes, err := publicStaticJsRuntimeMain3617f9c7JsMapBytes()
func publicStaticJsRuntimeMainA4bc2b48JsMap() (*asset, error) {
bytes, err := publicStaticJsRuntimeMainA4bc2b48JsMapBytes()
if err != nil {
return nil, err
}
info := bindataFileInfo{name: "public/static/js/runtime-main.3617f9c7.js.map", size: 8270, mode: os.FileMode(0644), modTime: time.Unix(1598898920, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7, 0x1a, 0x8e, 0xf0, 0xc6, 0xc5, 0x6f, 0xd2, 0x5c, 0xc, 0xc5, 0x8f, 0x7b, 0xc5, 0x98, 0x25, 0x6c, 0xb2, 0xf0, 0xb7, 0xa4, 0x2c, 0x43, 0xeb, 0xed, 0x89, 0x76, 0xc0, 0xa9, 0xd5, 0x74, 0x78}}
info := bindataFileInfo{name: "public/static/js/runtime-main.a4bc2b48.js.map", size: 8273, mode: os.FileMode(0644), modTime: time.Unix(1599169371, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc4, 0x2c, 0x1c, 0x4e, 0xe5, 0xf2, 0x3e, 0xe3, 0x30, 0xa8, 0xf3, 0xf4, 0x8b, 0x41, 0x1c, 0xe1, 0x86, 0xb1, 0x6d, 0xa4, 0x96, 0xef, 0x83, 0x52, 0x62, 0x6c, 0xde, 0x2b, 0x9b, 0xe, 0x91, 0x63}}
return a, nil
}
@@ -549,7 +549,7 @@ var _bindata = map[string]func() (*asset, error){
"public/paste.sh": publicPasteSh,
"public/precache-manifest.89e28f4263961b30acac0ac081cf2992.js": publicPrecacheManifest89e28f4263961b30acac0ac081cf2992Js,
"public/precache-manifest.5b28f60f1dfb49acbc56101a135f3061.js": publicPrecacheManifest5b28f60f1dfb49acbc56101a135f3061Js,
"public/service-worker.js": publicServiceWorkerJs,
@@ -567,13 +567,13 @@ var _bindata = map[string]func() (*asset, error){
"public/static/js/2.6b9faf2a.chunk.js.map": publicStaticJs26b9faf2aChunkJsMap,
"public/static/js/main.b612bd5a.chunk.js": publicStaticJsMainB612bd5aChunkJs,
"public/static/js/main.aceb7093.chunk.js": publicStaticJsMainAceb7093ChunkJs,
"public/static/js/main.b612bd5a.chunk.js.map": publicStaticJsMainB612bd5aChunkJsMap,
"public/static/js/main.aceb7093.chunk.js.map": publicStaticJsMainAceb7093ChunkJsMap,
"public/static/js/runtime-main.3617f9c7.js": publicStaticJsRuntimeMain3617f9c7Js,
"public/static/js/runtime-main.a4bc2b48.js": publicStaticJsRuntimeMainA4bc2b48Js,
"public/static/js/runtime-main.3617f9c7.js.map": publicStaticJsRuntimeMain3617f9c7JsMap,
"public/static/js/runtime-main.a4bc2b48.js.map": publicStaticJsRuntimeMainA4bc2b48JsMap,
}
// AssetDir returns the file names below a certain
@@ -623,7 +623,7 @@ var _bintree = &bintree{nil, map[string]*bintree{
"index.html": &bintree{publicIndexHtml, map[string]*bintree{}},
"manifest.json": &bintree{publicManifestJson, map[string]*bintree{}},
"paste.sh": &bintree{publicPasteSh, map[string]*bintree{}},
"precache-manifest.89e28f4263961b30acac0ac081cf2992.js": &bintree{publicPrecacheManifest89e28f4263961b30acac0ac081cf2992Js, map[string]*bintree{}},
"precache-manifest.5b28f60f1dfb49acbc56101a135f3061.js": &bintree{publicPrecacheManifest5b28f60f1dfb49acbc56101a135f3061Js, map[string]*bintree{}},
"service-worker.js": &bintree{publicServiceWorkerJs, map[string]*bintree{}},
"static": &bintree{nil, map[string]*bintree{
"css": &bintree{nil, map[string]*bintree{
@@ -636,10 +636,10 @@ var _bintree = &bintree{nil, map[string]*bintree{
"2.6b9faf2a.chunk.js": &bintree{publicStaticJs26b9faf2aChunkJs, map[string]*bintree{}},
"2.6b9faf2a.chunk.js.LICENSE.txt": &bintree{publicStaticJs26b9faf2aChunkJsLicenseTxt, map[string]*bintree{}},
"2.6b9faf2a.chunk.js.map": &bintree{publicStaticJs26b9faf2aChunkJsMap, map[string]*bintree{}},
"main.b612bd5a.chunk.js": &bintree{publicStaticJsMainB612bd5aChunkJs, map[string]*bintree{}},
"main.b612bd5a.chunk.js.map": &bintree{publicStaticJsMainB612bd5aChunkJsMap, map[string]*bintree{}},
"runtime-main.3617f9c7.js": &bintree{publicStaticJsRuntimeMain3617f9c7Js, map[string]*bintree{}},
"runtime-main.3617f9c7.js.map": &bintree{publicStaticJsRuntimeMain3617f9c7JsMap, map[string]*bintree{}},
"main.aceb7093.chunk.js": &bintree{publicStaticJsMainAceb7093ChunkJs, map[string]*bintree{}},
"main.aceb7093.chunk.js.map": &bintree{publicStaticJsMainAceb7093ChunkJsMap, map[string]*bintree{}},
"runtime-main.a4bc2b48.js": &bintree{publicStaticJsRuntimeMainA4bc2b48Js, map[string]*bintree{}},
"runtime-main.a4bc2b48.js.map": &bintree{publicStaticJsRuntimeMainA4bc2b48JsMap, map[string]*bintree{}},
}},
}},
}},
+37
View File
@@ -0,0 +1,37 @@
package routes
import (
"compress/bzip2"
"compress/gzip"
"io"
"github.com/andybalholm/brotli"
xz "github.com/remyoudompheng/go-liblzma"
"sour.is/x/toolbox/log"
)
func Decompress(in io.Reader) (io.Reader, error) {
rdr := NewPreviewReader(in)
mime, err := ReadMIMEWithSize(rdr, "", 32768)
if err != nil {
return rdr.Drain(), err
}
r := rdr.Drain()
switch mime {
case "application/gzip":
r, err = gzip.NewReader(r)
case "application/x-bzip2":
r = bzip2.NewReader(r)
case "application/x-xz":
r, err = xz.NewReader(r)
case "application/brotli":
r = brotli.NewReader(r)
}
log.Debugs("Decompress:", "mime", mime)
return r, err
}
+149
View File
@@ -0,0 +1,149 @@
package routes
import (
"crypto/sha256"
"encoding/base64"
"io"
"io/ioutil"
"net/http"
"os"
"path/filepath"
"strconv"
"strings"
"github.com/gorilla/mux"
"github.com/h2non/filetype"
"sour.is/x/toolbox/httpsrv"
"sour.is/x/toolbox/log"
)
func init() {
a := &Image{}
httpsrv.RegisterModule("image", a.config)
httpsrv.HttpRegister("image", httpsrv.HttpRoutes{
{Name: "getImage", Method: "GET", Pattern: "/i/{name}", HandlerFunc: a.get},
{Name: "putImage", Method: "PUT", Pattern: "/i", HandlerFunc: a.put},
})
}
type Image struct {
store string
maxSize int64
}
func (a *Image) config(config map[string]string) {
a.store = "data/"
if config["store"] != "" {
a.store = config["store"]
}
if !chkStore(a.store) {
log.Criticalf("Image: store location [%s] does not exist or is not writable.", a.store)
}
log.Noticef("Image: store location set to [%s]", a.store)
a.maxSize = 10 * 1024 * 1024
if s, ok := config["max-size"]; ok {
if i, err := strconv.Atoi(s); err == nil {
a.maxSize = int64(i)
}
}
log.Noticef("Image: store max-size set to [%d]", a.maxSize)
}
func (a *Image) get(w http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r)
name := vars["name"]
ext := filepath.Ext(name)
id := strings.TrimSuffix(name, ext)
fname := filepath.Join(a.store, id)
if !chkFile(fname) {
httpsrv.WriteError(w, http.StatusNotFound, "Not Found")
return
}
if chkGone(fname) {
httpsrv.WriteError(w, http.StatusGone, "Gone")
return
}
f, err := os.Open(fname)
if err != nil {
log.Fatal(err)
}
defer f.Close()
pr := NewPreviewReader(f)
mime, err := ReadMIME(pr, name)
w.Header().Set("Content-Type", mime)
w.Header().Set("X-Content-Type-Options", "nosniff")
io.Copy(w, pr.Drain())
}
func (a *Image) put(w http.ResponseWriter, r *http.Request) {
defer r.Body.Close()
if h := r.Header.Get("Content-Length"); h != "" {
log.Debugs("Artifact:", "content-length", h, "max-length", a.maxSize)
if i, err := strconv.Atoi(h); err == nil {
if int64(i) > a.maxSize {
log.Error("ERR Size Too Large")
http.Error(w, "ERR Size Too Large", http.StatusRequestEntityTooLarge)
return
}
}
}
rdr := io.LimitReader(r.Body, a.maxSize)
pr := NewPreviewReader(rdr)
if !isImageOrVideo(pr) {
httpsrv.WriteError(w, http.StatusUnsupportedMediaType, "ERR Not Image")
return
}
rdr = pr.Drain()
s256 := sha256.New()
tmp, err := ioutil.TempFile(a.store, "image-")
if err != nil {
httpsrv.WriteError(w, 400, err.Error())
return
}
defer os.Remove(tmp.Name())
m := io.MultiWriter(s256, tmp)
if _, err = io.Copy(m, rdr); err != nil {
httpsrv.WriteError(w, 400, err.Error())
return
}
tmp.Close()
id := base64.RawURLEncoding.EncodeToString(s256.Sum(nil)[12:])
fname := filepath.Join(a.store, id)
log.Debugs("Image: moving file", "src", tmp.Name(), "dst", fname)
err = os.Rename(tmp.Name(), fname)
if err != nil {
httpsrv.WriteError(w, 400, err.Error())
return
}
httpsrv.WriteText(w, http.StatusCreated, id)
}
func isImageOrVideo(in io.Reader) bool {
buf := make([]byte, 320)
_, err := in.Read(buf)
if err != nil {
return false
}
return filetype.IsImage(buf) || filetype.IsVideo(buf)
}
+85 -70
View File
@@ -5,11 +5,11 @@ import (
"crypto/rand"
"crypto/sha256"
"encoding/base64"
"encoding/json"
"io"
"io/ioutil"
"net/http"
"os"
"path/filepath"
"strconv"
"strings"
"time"
@@ -20,55 +20,67 @@ import (
"sour.is/x/toolbox/log"
)
var store string
var randBytes int
func init() {
httpsrv.RegisterModule("paste", setConfig)
p := &Paste{}
httpsrv.RegisterModule("paste", p.setConfig)
httpsrv.HttpRegister("paste", httpsrv.HttpRoutes{
{Name: "getRandom", Method: "GET", Pattern: "/paste/rng", HandlerFunc: getRandom},
{Name: "getPaste", Method: "GET", Pattern: "/paste/{id}", HandlerFunc: getPaste},
{Name: "getPaste", Method: "GET", Pattern: "/paste/get/{id}", HandlerFunc: getPaste},
{Name: "postPaste", Method: "POST", Pattern: "/paste", HandlerFunc: postPaste},
{Name: "getRandom", Method: "GET", Pattern: "/paste/rng", HandlerFunc: p.getRandom},
{Name: "getPaste", Method: "GET", Pattern: "/paste/{id}", HandlerFunc: p.getPaste},
{Name: "getPaste", Method: "GET", Pattern: "/paste/get/{id}", HandlerFunc: p.getPaste},
{Name: "postPaste", Method: "POST", Pattern: "/paste", HandlerFunc: p.postPaste},
{Name: "getRandom", Method: "GET", Pattern: "/api/rng", HandlerFunc: getRandom},
{Name: "getPaste", Method: "GET", Pattern: "/api/{id}", HandlerFunc: getPaste},
{Name: "getPaste", Method: "GET", Pattern: "/api/get/{id}", HandlerFunc: getPaste},
{Name: "postPaste", Method: "POST", Pattern: "/api", HandlerFunc: postPaste},
{Name: "getRandom", Method: "GET", Pattern: "/api/rng", HandlerFunc: p.getRandom},
{Name: "getPaste", Method: "GET", Pattern: "/api/{id}", HandlerFunc: p.getPaste},
{Name: "getPaste", Method: "GET", Pattern: "/api/get/{id}", HandlerFunc: p.getPaste},
{Name: "postPaste", Method: "POST", Pattern: "/api", HandlerFunc: p.postPaste},
})
}
func setConfig(config map[string]string) {
type Paste struct {
store string
randBytes int
}
store = "data/"
func (p *Paste) setConfig(config map[string]string) {
p.store = "data/"
if config["store"] != "" {
store = config["store"]
p.store = config["store"]
}
if !chkStore(store) {
log.Criticalf("[routes::Paste] Store location [%s] does not exist or is not writable.", store)
if !chkStore(p.store) {
log.Criticalf("Paste: store location [%s] does not exist or is not writable.", p.store)
}
log.Noticef("[paste::getPaste] Store location set to [%s]", store)
log.Noticef("Paste: store location set to [%s]", p.store)
randBytes = 1024
p.randBytes = 1024
if config["random"] != "" {
randBytes, _ = strconv.Atoi(config["random"])
log.Noticef("[paste:getRandom] set random size to %d bytes", randBytes)
p.randBytes, _ = strconv.Atoi(config["random"])
log.Noticef("Paste: set random size to %d bytes", p.randBytes)
}
}
func chkStore(path string) bool {
file, err := os.Stat(path)
if err == nil {
return true
if err != nil && os.IsNotExist(err) {
err = os.MkdirAll(path, 0744)
if err != nil {
return false
}
file, err = os.Stat(path)
}
if os.IsNotExist(err) {
if err != nil {
return false
}
if !file.IsDir() {
return false
}
if unix.Access(path, unix.W_OK&unix.R_OK) != nil {
return false
}
@@ -78,15 +90,14 @@ func chkStore(path string) bool {
func chkFile(path string) bool {
file, err := os.Stat(path)
if err == nil {
return true
}
if os.IsNotExist(err) {
if err != nil {
return false
}
if file.IsDir() {
return false
}
if unix.Access(path, unix.W_OK&unix.R_OK) != nil {
return false
}
@@ -99,50 +110,55 @@ func chkGone(path string) bool {
if err != nil {
return true
}
if file.Size() == 0 {
return true
}
return false
}
func getRandom(w http.ResponseWriter, r *http.Request) {
s := make([]byte, randBytes)
rand.Read(s)
func (p *Paste) getRandom(w http.ResponseWriter, _ *http.Request) {
s := make([]byte, p.randBytes)
_, _ = rand.Read(s)
w.Header().Set("content-type", "application/octet-stream")
w.WriteHeader(http.StatusOK)
w.Write(s)
_, _ = w.Write(s)
}
func getPaste(w http.ResponseWriter, r *http.Request) {
func (p *Paste) getPaste(w http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r)
id := vars["id"]
if !chkFile(store + id) {
w.WriteHeader(http.StatusNotFound)
w.Write([]byte("ERR Not Found"))
fname := filepath.Join(p.store, id)
if !chkFile(fname) {
httpsrv.WriteText(w, http.StatusNotFound, "ERR Not Found")
return
}
if chkGone(store + id) {
w.WriteHeader(http.StatusGone)
w.Write([]byte("ERR Gone"))
if chkGone(fname) {
httpsrv.WriteText(w, http.StatusGone, "ERR Gone")
return
}
head, err := os.Open(store + id)
f, err := os.Open(fname)
if err != nil {
log.Fatal(err)
httpsrv.WriteText(w, http.StatusInternalServerError, "ERR Reading Content")
}
defer head.Close()
defer f.Close()
pr := NewPreviewReader(f)
keep := true
scanner := bufio.NewScanner(head)
scanner := bufio.NewScanner(pr)
for scanner.Scan() {
txt := scanner.Text()
log.Debug(txt)
// End of header found
if txt == "" {
break
}
@@ -157,9 +173,9 @@ func getPaste(w http.ResponseWriter, r *http.Request) {
log.Debugf("%d > %d", now, exp)
if now > exp {
w.WriteHeader(http.StatusGone)
w.Write([]byte("ERR Gone"))
_, _ = w.Write([]byte("ERR Gone"))
deleteFile(store + id)
deleteFile(fname)
return
}
@@ -174,47 +190,46 @@ func getPaste(w http.ResponseWriter, r *http.Request) {
}
}
file, _ := os.Open(store + id)
defer file.Close()
w.WriteHeader(http.StatusOK)
scanner = bufio.NewScanner(file)
for scanner.Scan() {
w.Write(scanner.Bytes())
w.Write([]byte("\n"))
}
io.Copy(w, pr.Drain())
if !keep {
deleteFile(store + id)
deleteFile(fname)
}
}
func postPaste(w http.ResponseWriter, r *http.Request) {
func (p *Paste) postPaste(w http.ResponseWriter, r *http.Request) {
defer r.Body.Close()
body, err := ioutil.ReadAll(io.LimitReader(r.Body, 1048576))
checkErr(err, w)
rdr := io.LimitReader(r.Body, 1048576)
s256 := sha256.Sum256(body)
id := base64.RawURLEncoding.EncodeToString(s256[12:])
s256 := sha256.New()
tmp, _ := ioutil.TempFile(p.store, "arch-")
defer os.Remove(tmp.Name())
ioutil.WriteFile(store+id, body, 0644)
m := io.MultiWriter(s256, tmp)
if _, err := io.Copy(m, rdr); err != nil {
httpsrv.WriteError(w, 400, err.Error())
}
tmp.Close()
w.WriteHeader(http.StatusCreated)
w.Write([]byte("OK " + id))
id := base64.RawURLEncoding.EncodeToString(s256.Sum(nil)[12:])
fname := filepath.Join(p.store, id)
w.WriteHeader(http.StatusCreated)
os.Rename(tmp.Name(), fname)
httpsrv.WriteText(w, http.StatusCreated, "OK "+id)
}
func checkErr(err error, w http.ResponseWriter) {
func checkErr(err error, w http.ResponseWriter) bool {
if err != nil {
w.WriteHeader(http.StatusBadRequest)
json.NewEncoder(w).Encode(err)
panic(err)
httpsrv.WriteObject(w, http.StatusBadRequest, err)
return true
}
return false
}
func deleteFile(path string) {
ioutil.WriteFile(path, []byte(""), 0644)
_ = ioutil.WriteFile(path, nil, 0644)
}
+72
View File
@@ -0,0 +1,72 @@
package routes
import (
"bytes"
"errors"
"io"
"sour.is/x/toolbox/log"
)
type PreviewReader struct {
r io.Reader
buf bytes.Buffer
}
func NewPreviewReader(r io.Reader) *PreviewReader {
return &PreviewReader{r: r}
}
var ErrReaderDrained = errors.New("io.Reader has been drained")
func (pr *PreviewReader) Read(p []byte) (n int, err error) {
if pr.r == nil {
return 0, ErrReaderDrained
}
i, err := pr.r.Read(p)
log.Debugf("PreviewReader: buffer %d bytes", i)
_, berr := pr.buf.Write(p[:i])
if berr != nil {
return i, berr
}
return i, err
}
func (pr *PreviewReader) Drain() io.Reader {
dr := &drainReader{r: pr.r, buf: &pr.buf}
pr.r = nil
return dr
}
type drainReader struct {
r io.Reader
buf *bytes.Buffer
}
func (dr *drainReader) Read(p []byte) (n int, err error) {
i := 0
// log.Debugs("drainReader:", "buf", dr.buf.Len(), "p", len(p))
if dr.buf.Len() > 0 {
i, err = dr.buf.Read(p)
if err != nil && err != io.EOF {
return i, err
}
if err != nil && err == io.EOF {
err = nil
}
if err != nil {
return i, err
}
}
ri, err := dr.r.Read(p[i:])
// log.Debugs("drainReader:", "drain", i, "read", ri, "cap", len(p), "err", err)
return ri + i, err
}
+19 -4
View File
@@ -1,11 +1,26 @@
package routes
import "sour.is/x/toolbox/httpsrv"
import (
"fmt"
"net/http"
"sour.is/x/toolbox/httpsrv"
)
func init() {
httpsrv.AssetRegister("paste", httpsrv.AssetRoutes{
{Name: "Assets", Path: "/", HandlerFunc: httpsrv.FsHtml5(assetFS())},
asset := assetFS()
fmt.Printf("%#v\n", asset)
httpsrv.HttpRegister("ui", httpsrv.HttpRoutes{
{
Name: "Assets",
Method: "GET",
Pattern: "/ui{path:.*}",
HandlerFunc: http.StripPrefix("/ui", http.FileServer(httpsrv.FsHtml5(asset))).ServeHTTP,
},
{Name: "Root", Method: "GET", Pattern: "/", HandlerFunc: http.RedirectHandler("/ui/", http.StatusFound).ServeHTTP},
})
}
//go:generate go run github.com/sour-is/go-assetfs/cmd/assetfs -pkg routes -prefix ../../ ../../public/ ../../public/static/css/ ../../public/static/js/
//go:generate go run github.com/sour-is/go-assetfs/cmd/assetfs -pkg routes -prefix ../../ ../../public/...
File diff suppressed because it is too large. Load diff