aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCypher <cypher@server.ky>2023-09-29 13:48:56 -0500
committerCypher <cypher@server.ky>2023-09-29 13:52:03 -0500
commitbd9b0b0b273a7ef759d193f7cedfd74ed76f19d0 (patch)
tree13bb7b798fe89c9a2e58f24e4e755183ef1ef9bd
parentd20477b49ef5092ef1fe9e99396495d45b6457a2 (diff)
downloadlibrefund-bd9b0b0b273a7ef759d193f7cedfd74ed76f19d0.tar.xz
Avoid filesystem override and use embedding
Replace `go-bindata` with Go's first class support for file embedding. Now it is supported, there is less need for overriding local file assets, so remove them.
-rw-r--r--README.md1
-rw-r--r--asset_bindata.go728
-rw-r--r--file_system.go45
-rw-r--r--go.mod2
-rw-r--r--http/html_template.go15
-rw-r--r--http/http.go8
-rw-r--r--service/service.go11
7 files changed, 21 insertions, 789 deletions
diff --git a/README.md b/README.md
index 885e462..c640b9a 100644
--- a/README.md
+++ b/README.md
@@ -44,7 +44,6 @@ section.
its benefits. Make the source code clear and easy to modify. It means
test coverage to avoid regressions, and other tests to document features.
The project must be easy to fork.
- asdfsdf
3. __Simplicity__: Simple to self-host, simple to give contributions, simple
to operate. Lowering the cognitive load is a long term benefit for
diff --git a/asset_bindata.go b/asset_bindata.go
deleted file mode 100644
index a114cbf..0000000
--- a/asset_bindata.go
+++ /dev/null
@@ -1,728 +0,0 @@
-// Code generated by go-bindata. (@generated) DO NOT EDIT.
-
-// Package librefund generated by go-bindata.// sources:
-// asset/static/documentation.html
-// asset/static/index.html
-// asset/static/service-agreement.html
-// asset/static/service-agreement.md
-// asset/static/style.css
-// asset/template/about.html.tmpl
-// asset/template/contribute.html.tmpl
-// asset/template/contribute_bitcoin.html.tmpl
-// asset/template/documentation.html.tmpl
-// asset/template/header.html.tmpl
-// asset/template/objective.html.tmpl
-// asset/template/project-back-button.html.tmpl
-// asset/template/project-contributions.html.tmpl
-// asset/template/project-header.html.tmpl
-// asset/template/project-menu.html.tmpl
-// asset/template/project-updates.html.tmpl
-// asset/template/project.html.tmpl
-// asset/template/service-agreement.html.tmpl
-package librefund
-
-import (
- "bytes"
- "compress/gzip"
- "fmt"
- "net/http"
- "io"
- "io/ioutil"
- "os"
- "path/filepath"
- "strings"
- "time"
-)
-
-func bindataRead(data []byte, name string) ([]byte, error) {
- gz, err := gzip.NewReader(bytes.NewBuffer(data))
- if err != nil {
- return nil, fmt.Errorf("read %q: %v", name, err)
- }
-
- var buf bytes.Buffer
- _, err = io.Copy(&buf, gz)
- clErr := gz.Close()
-
- if err != nil {
- return nil, fmt.Errorf("read %q: %v", name, err)
- }
- if clErr != nil {
- return nil, err
- }
-
- return buf.Bytes(), nil
-}
-
-type asset struct {
- bytes []byte
- info os.FileInfo
-}
-
-type bindataFileInfo struct {
- name string
- size int64
- mode os.FileMode
- modTime time.Time
-}
-
-// Name return file name
-func (fi bindataFileInfo) Name() string {
- return filepath.Base(fi.name)
-}
-
-// Size return file size
-func (fi bindataFileInfo) Size() int64 {
- return fi.size
-}
-
-// Mode return file mode
-func (fi bindataFileInfo) Mode() os.FileMode {
- return fi.mode
-}
-
-// ModTime return file modify time
-func (fi bindataFileInfo) ModTime() time.Time {
- return fi.modTime
-}
-
-// IsDir return file whether a directory
-func (fi bindataFileInfo) IsDir() bool {
- return fi.mode&os.ModeDir != 0
-}
-
-// Sys return file is sys mode
-func (fi bindataFileInfo) Sys() interface{} {
- return nil
-}
-
-
-type assetFile struct {
- *bytes.Reader
- name string
- childInfos []os.FileInfo
- childInfoOffset int
-}
-
-type assetOperator struct{}
-
-// Open implement http.FileSystem interface
-func (f *assetOperator) Open(name string) (http.File, error) {
- var err error
- if len(name) > 0 && name[0] == '/' {
- name = name[1:]
- }
- content, err := Asset(name)
- if err == nil {
- return &assetFile{name: name, Reader: bytes.NewReader(content)}, nil
- }
- children, err := AssetDir(name)
- if err == nil {
- childInfos := make([]os.FileInfo, 0, len(children))
- for _, child := range children {
- childPath := filepath.Join(name, child)
- info, errInfo := AssetInfo(filepath.Join(name, child))
- if errInfo == nil {
- childInfos = append(childInfos, info)
- } else {
- childInfos = append(childInfos, newDirFileInfo(childPath))
- }
- }
- return &assetFile{name: name, childInfos: childInfos}, nil
- } else {
- // If the error is not found, return an error that will
- // result in a 404 error. Otherwise the server returns
- // a 500 error for files not found.
- if strings.Contains(err.Error(), "not found") {
- return nil, os.ErrNotExist
- }
- return nil, err
- }
-}
-
-// Close no need do anything
-func (f *assetFile) Close() error {
- return nil
-}
-
-// Readdir read dir's children file info
-func (f *assetFile) Readdir(count int) ([]os.FileInfo, error) {
- if len(f.childInfos) == 0 {
- return nil, os.ErrNotExist
- }
- if count <= 0 {
- return f.childInfos, nil
- }
- if f.childInfoOffset+count > len(f.childInfos) {
- count = len(f.childInfos) - f.childInfoOffset
- }
- offset := f.childInfoOffset
- f.childInfoOffset += count
- return f.childInfos[offset : offset+count], nil
-}
-
-// Stat read file info from asset item
-func (f *assetFile) Stat() (os.FileInfo, error) {
- if len(f.childInfos) != 0 {
- return newDirFileInfo(f.name), nil
- }
- return AssetInfo(f.name)
-}
-
-// newDirFileInfo return default dir file info
-func newDirFileInfo(name string) os.FileInfo {
- return &bindataFileInfo{
- name: name,
- size: 0,
- mode: os.FileMode(2147484068), // equal os.FileMode(0644)|os.ModeDir
- modTime: time.Time{}}
-}
-
-// AssetFile return a http.FileSystem instance that data backend by asset
-func AssetFile() http.FileSystem {
- return &assetOperator{}
-}
-
-var _staticDocumentationHtml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x56\xcd\x8e\x1b\x39\x0f\xbc\xf7\x53\x10\x83\xe4\x66\x78\xf2\x05\xf8\xf0\x05\x1f\x1c\x2f\x26\x87\xec\xce\x21\x58\x2c\x36\x40\x90\x23\xad\x66\x5b\xca\xa8\xc5\x5e\x91\x9a\x8e\x6f\xf3\x18\xc9\xeb\xcd\x93\x2c\x28\xb5\xff\xb2\xd9\xd3\x0c\x6c\x89\xaa\x2a\x56\x91\xde\xf8\xd7\x10\xfa\xb7\x37\xb8\xe3\xa2\x37\xdb\x3b\xfb\xb3\xb9\xf5\xaf\xb7\xdd\x66\xda\xfe\x46\x99\xe0\xc0\x05\x86\x90\x7a\x40\x98\x69\x27\x41\x09\x1c\xc7\x48\x4e\x43\xda\xc3\x50\x52\x2f\x30\x70\x06\x84\x29\xf3\x17\x72\xba\x86\x7b\x05\x8c\x91\xe7\xae\x08\x65\x01\xe5\xd3\x8d\x47\x8a\x87\x7a\x07\x30\xf5\x10\xd2\x10\x0b\x25\x47\xa0\x9e\xa0\x0f\xd9\x8e\x70\x02\x1e\x40\x7d\x90\x63\xc1\xae\x88\x3d\x85\xf6\xcc\x68\x5f\x6e\x10\x7c\xa6\xe1\xed\x8d\x57\x9d\xe4\xff\xb7\xb7\x92\x78\xee\x73\x18\x74\xed\x98\xa7\x9b\xad\xcb\x3c\xf7\x30\xa2\x3a\x1f\xd2\x7e\x73\x8b\x5b\xbb\xdb\x05\xa5\x8c\x06\x02\x7a\x7a\xa4\xc8\xd3\x48\x49\xd7\x9b\xdb\xa9\xb2\xfd\xe8\x09\x82\xd2\x28\x95\xb2\x10\x41\x0c\xa2\xd4\x03\x66\x3a\x42\x01\xde\x7d\x69\x3c\x04\x82\x0a\x8c\x18\x92\x62\x48\x94\x61\xc6\xa4\xd2\x29\xc3\xcc\xf9\x01\x38\xad\xe1\xa3\xa7\x03\x8c\x78\x80\x9d\x49\x96\x1c\x4d\x2a\x20\xc5\x79\x40\x81\xe7\xa7\x6f\xef\x08\x46\xce\x04\xa6\x12\x0c\x39\x50\xea\xe3\xe1\xf9\xe9\x3b\x70\xee\x9e\x9f\xbe\x7d\xc0\x07\x82\x1d\xa9\x52\x86\x9e\x5d\x31\xb0\x68\xfa\x3c\x3f\x7d\x5f\xc3\x1d\xf4\x24\x2e\x87\xc9\x3e\x59\x01\x7d\x9d\x42\x26\xe8\x51\x69\x05\x23\x7e\x0d\x63\x19\xab\xd0\x21\xed\x3b\x1c\xb9\x24\x5d\xc1\x1c\x62\x34\x30\x21\xb9\x58\x7a\xea\x2b\x44\xa1\x4a\x70\xf6\xa8\x95\xb8\xc3\x64\x68\x35\x87\x5d\x51\x02\xe5\x35\xbc\xe7\xdc\xd1\x57\x1c\xa7\x48\x10\x86\x7a\xca\xd8\xfe\x14\xdc\xea\x54\xa4\xb6\xf9\x9a\x47\xf7\x0f\x1e\x47\xf1\x3f\x79\xba\x78\x36\xa4\x7d\xab\x63\xc8\xb0\x39\xed\xca\x42\x73\x50\x0f\xac\xbe\xd9\xab\xbb\x36\xd2\xd1\x87\xc7\xda\x77\x02\x98\x60\x21\xb0\x82\x30\xe2\x3e\x24\x32\xc3\xf2\x54\x22\x9a\xf6\x44\xd5\x90\x3c\x51\x02\xe1\x92\x1d\x81\xf0\xa0\x33\x66\xea\x8e\xad\x37\x3c\x45\x68\x0d\x9f\xb9\x40\x0c\x0f\x04\xf4\x48\xf9\xa0\xbe\xa2\xdd\x95\x76\x62\x0e\xe2\x21\x28\x78\xec\x7f\x4a\xfa\x84\xea\x57\x36\x56\xca\xd5\x47\x4b\xa7\x60\xc2\x3d\xad\xce\x91\xbb\xba\x79\xb2\xa3\xd1\xe9\x4e\x46\xac\x4d\xcc\xad\x89\x3d\x29\x86\x28\x50\xd3\x7c\x55\x58\x14\xb5\x48\x8d\xa6\x47\x81\x17\xff\x79\xf5\xaa\x3b\x77\xb9\x6f\x82\x62\x8b\x0c\x0c\xe8\x94\xb3\x25\xed\xcd\xab\x97\xb5\xbe\x5d\x38\xf7\x5d\x19\xf6\x96\x22\xf3\x53\x57\x52\x64\xf7\x00\x2f\xde\x80\xb2\x62\xb4\x5b\xe7\x3e\x72\x12\x18\x32\x8f\x4b\xaf\xcc\xb6\x32\x62\x8c\x30\x71\x3e\x47\xbd\x96\xef\xaa\x3b\x31\x0a\x9b\x45\x3d\xc5\xde\xde\x59\x00\x15\x2d\x99\x7e\xa8\xbb\x3b\x1c\xab\x5e\x26\x78\xe9\xd6\xf3\xd3\xf7\xab\x74\x22\x0c\x34\x43\x8f\x07\x81\x88\x66\x5a\x17\x31\x8c\x52\x1f\x3f\x49\x69\x1e\xe8\x44\x31\xab\x40\x18\xa7\xcc\x8f\xb5\x45\x36\x9b\xae\x5a\x08\x7f\xf2\x48\x06\xfd\xc0\x25\xc3\xc8\x89\x0e\x10\x04\x32\x99\xda\x64\xb8\xbb\x03\x17\x13\x2e\x88\x7d\x61\x15\x5a\x06\xab\xce\x95\x9b\x8d\xcc\xe3\x80\x82\x32\x39\x1e\x9b\xc9\x2f\x18\xae\xbb\x7b\x15\xc0\x45\xb1\xa5\x80\x04\xb3\xf9\x4c\xb0\x67\x05\x17\x59\x2c\xa2\xf5\x85\x63\xab\xf7\x8c\xf1\x24\xc9\x67\x43\x78\x59\xd5\xf0\xcc\x9c\xd5\xb7\xd9\xa3\x5c\xdb\x1a\x86\x63\x9a\x9c\x0f\x13\x84\x36\xbd\x20\x92\x48\x67\xb5\xad\x66\xa3\x88\xce\x53\xbf\xaa\x0f\xd6\x02\xcd\xf3\x6d\xae\x1c\x05\x38\xbd\x7e\x3f\x54\x9e\x62\x72\x65\x42\xe1\xf4\x83\xe0\x6d\x6c\xc9\x0a\x38\xb7\x92\xe7\x8e\x39\x4c\x8e\xa2\x74\x41\x5b\x20\xc4\x73\x89\xfd\xe5\x33\x0b\xeb\x0b\x6d\x4a\x2d\x5c\x05\xc9\x98\x04\xeb\x3a\xe9\x1c\x8b\x5e\x99\x24\x93\x71\x41\x88\xb6\x05\xaa\x05\x73\x11\x35\x30\xe4\x2c\x0c\xd5\xb1\x3f\xc0\x51\x86\x81\xeb\x52\x53\x9f\xb9\xec\x3d\x70\x82\x65\x49\x8d\x41\x48\xd6\xf0\x8e\x40\x4a\xd3\xd4\x79\x72\x0f\xf5\xeb\x4c\x53\x59\xf2\x6b\x13\x66\x42\xd1\x6e\xa2\x6c\xab\xcc\x08\x9a\xf2\xba\xd8\x04\xdb\x96\xc8\xc7\x19\xb1\xac\xe6\x01\xff\xba\xd9\xbe\xbf\xfb\x63\x59\xcb\x25\x6e\xbb\x4d\x0c\x5b\xdb\xcf\x3c\x9f\xee\x9d\x1b\x2c\x53\x0c\xfa\xcb\x65\x26\x16\x79\x1e\x68\x52\x3b\x1f\xd2\xb2\x6b\x0d\xfb\x31\x88\xca\xe0\x79\xfe\xa9\xa3\xba\x18\xc6\xa0\x17\xed\x5f\xc3\x7d\x8b\x6d\x4b\xfc\x52\x3e\x63\x10\xea\xed\xd8\xeb\xff\xbe\x3c\x06\xfb\xbc\x2f\x5b\x95\xea\x9c\x54\x4f\x04\xa9\x88\x56\x55\x97\xff\xb5\x0f\x32\x09\xe5\x47\xfa\x97\x78\x74\xd7\xf1\x30\x8a\x9b\xdb\x18\x4e\x7a\x7c\xb2\x1d\xb6\xf8\xe4\x1e\x7a\x36\x71\xef\xdb\xc8\xc2\x74\x19\xf3\xbe\xa5\xf4\x72\x5b\xd8\xc0\xe8\x2e\xc7\xf0\x49\xc1\x0f\x2c\x7a\x3c\x25\xcd\xeb\x1e\x1f\xdb\xfe\x08\x16\xe9\x66\x28\x15\x68\x3f\x77\x1c\xa7\x7d\xa6\x3d\x2a\xad\xe1\xf7\x6c\xb3\x3a\x88\x14\x32\x4b\xba\x07\xca\xd0\x42\x10\xf2\xd5\xa8\xb2\x17\xd7\xf0\x31\x1f\x60\x97\x43\xda\x37\xd6\x96\x8a\x3e\x88\x2b\x22\xcb\x20\xea\x96\xdf\x11\xf6\x7f\xa6\x6a\x39\x87\x96\x87\x78\x76\xdd\x8e\x06\xce\xe4\x4d\x55\xe5\xfa\x3b\x26\x0c\x15\xde\x8e\xc8\xc2\x90\x24\xf4\x94\x97\x94\x2e\xfa\xdd\x9a\xab\xfe\x0e\x00\x00\xff\xff\x20\x87\x3c\xf0\x0c\x0a\x00\x00")
-
-func staticDocumentationHtmlBytes() ([]byte, error) {
- return bindataRead(
- _staticDocumentationHtml,
- "static/documentation.html",
- )
-}
-
-func staticDocumentationHtml() (*asset, error) {
- bytes, err := staticDocumentationHtmlBytes()
- if err != nil {
- return nil, err
- }
-
- info := bindataFileInfo{name: "static/documentation.html", size: 2572, mode: os.FileMode(420), modTime: time.Unix(1663511300, 0)}
- a := &asset{bytes: bytes, info: info}
- return a, nil
-}
-
-var _staticIndexHtml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb2\xc9\x28\x29\x29\xb0\xe3\xb2\x49\xca\x4f\xa9\xb4\xe3\x52\x50\xf0\xcb\x2f\x51\x70\xcb\x2f\xcd\x4b\xe1\xb2\xd1\x87\x88\x41\x55\x00\x02\x00\x00\xff\xff\xdb\x93\xa7\x65\x29\x00\x00\x00")
-
-func staticIndexHtmlBytes() ([]byte, error) {
- return bindataRead(
- _staticIndexHtml,
- "static/index.html",
- )
-}
-
-func staticIndexHtml() (*asset, error) {
- bytes, err := staticIndexHtmlBytes()
- if err != nil {
- return nil, err
- }
-
- info := bindataFileInfo{name: "static/index.html", size: 41, mode: os.FileMode(420), modTime: time.Unix(1663352115, 0)}
- a := &asset{bytes: bytes, info: info}
- return a, nil
-}
-
-var _staticServiceAgreementHtml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x94\xc1\x6e\xdc\x3c\x0c\x84\xef\x79\x8a\x81\xcf\xd9\x5d\x24\xff\xd5\xf1\xe5\x6f\x81\x1e\x0a\x24\x40\x5b\xf4\xcc\x4a\xdc\x98\x80\x24\x2a\x12\xe5\x24\x6f\x5f\x68\xbd\xdb\xf6\x15\xba\xf5\x4d\x18\xcb\x14\x39\x1f\x31\xe3\x7c\x07\xf1\x0f\x83\x71\x89\x75\xa7\xc7\x5d\xe5\xb2\x88\xe3\x61\xfa\xda\x15\xe8\x11\x5f\x56\x65\x3c\xcc\x77\xd3\xcd\x38\xdf\x9f\xee\xeb\xd2\x55\x7e\x1d\xa6\xc7\xf3\x69\x3c\xcc\xf7\xd3\xcd\x98\xa7\xcf\x5a\x38\x42\x72\x6d\x11\x5e\x83\x16\x54\x31\x50\x64\xbb\x85\xd3\x54\xd9\x19\x5b\x2b\x20\x2f\x59\xaa\x93\xf4\x0c\x0e\x62\xb7\xa8\xec\xe1\x15\x2c\xad\x46\xf5\x30\x8e\x59\x0b\x24\x39\xf1\xe2\x5b\x32\x34\x43\xa0\x1f\x5a\x18\x6c\x6b\x69\x46\xa4\xe7\x44\xa0\x20\x2f\x8d\xf6\xf8\x66\xe0\x24\x11\xe4\x11\xa5\x1f\x16\x4e\x42\xf1\x16\x2f\x4d\x2a\x92\x56\x2b\xcd\x83\xdf\xb8\x38\x31\x32\xd1\x84\x16\x02\x45\xa7\x6b\xe5\x7e\x49\xaa\xf4\x97\x4e\x25\x25\x83\xdf\xc0\x04\xa7\x31\xaa\xd7\x75\x80\x97\x46\xb6\xc7\x87\x5e\x92\x9a\x31\xa4\xb4\xc2\xe7\x59\x25\xa1\x70\x2e\x3c\x73\xf2\x5c\xc4\xba\xb0\x68\x68\xd9\xc8\x18\x4b\x9f\x14\x5c\x2b\xc3\x49\x08\x17\x87\x18\xdc\x70\x6c\xcf\x42\x86\xd4\x1b\x42\xa6\x22\x64\xad\xec\xf1\xf1\xcd\x71\x36\x6e\xdd\xc6\x64\x50\xe7\x88\x1d\x19\x5c\xcb\xe2\xc9\xfa\x1f\x9a\x90\x8b\x8a\xe7\xd4\x5d\xec\x4e\x49\x82\x6b\x21\x53\x9f\x1b\x7a\x3c\x8a\x13\x82\xe7\xca\xa5\x7f\x8d\x1a\x7a\x1b\xd4\x0d\x12\x0f\xae\x67\x5f\x5b\xdc\x8f\x87\xfc\x07\xe4\x56\x2e\xfb\x50\x87\xe9\x0e\x8f\xad\x5c\xb6\xa1\x6e\xb8\xaf\x07\xb7\x06\xb8\x40\xb5\x3e\x0c\x92\x5c\xe1\xc8\xc9\x28\x0c\xb0\xf7\xcc\x0f\x03\x0d\xd3\xcd\x18\x64\xda\x50\xff\xfd\xa8\xc7\x43\x90\x8d\xe6\x95\xd1\x3c\x68\xf8\x1d\xd9\xb9\xc8\x42\xee\x7d\x97\x35\x88\x7b\x1f\xa6\x7b\x3c\xad\x0a\x9e\x4e\xca\x16\xdb\xd7\x42\xff\x17\x72\xa7\xc9\x38\xd9\xee\x95\x77\xb3\x56\x1b\xa6\xff\xf0\xff\x2a\xe1\x3b\xe3\x93\x56\x3b\x43\xdf\x62\xfe\x1f\x59\x8d\x2d\xe6\xaf\x90\xe6\x29\xe6\x7f\x06\x00\x00\xff\xff\xb7\xc3\xa6\x62\xaf\x0d\x00\x00")
-
-func staticServiceAgreementHtmlBytes() ([]byte, error) {
- return bindataRead(
- _staticServiceAgreementHtml,
- "static/service-agreement.html",
- )
-}
-
-func staticServiceAgreementHtml() (*asset, error) {
- bytes, err := staticServiceAgreementHtmlBytes()
- if err != nil {
- return nil, err
- }
-
- info := bindataFileInfo{name: "static/service-agreement.html", size: 3503, mode: os.FileMode(420), modTime: time.Unix(1663352115, 0)}
- a := &asset{bytes: bytes, info: info}
- return a, nil
-}
-
-var _staticServiceAgreementMd = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x94\x31\x8f\x14\x31\x0c\x85\xfb\xfc\x8a\xf7\x03\xf6\x56\x02\x6a\x2a\x40\xa2\x40\xba\x93\x00\x51\xfb\x12\xef\x62\x29\x89\xb3\x89\x3d\xec\xfd\x7b\x14\x76\x8f\xe2\xe8\xd0\x34\xb7\x1a\x57\xa3\xb1\xe2\xf8\xbd\x4f\x79\xdf\xb8\x97\x01\x3d\xe0\x2b\xf7\x45\x22\x87\xf7\x2f\x2a\x84\xfb\x65\xb6\xf8\x57\xb8\xbb\x56\x08\x5f\xb4\x73\x81\xb4\xe1\x05\x49\xb3\x76\x0c\x31\x50\x61\xdb\x21\x6a\x1d\x1c\x8d\xcd\x3b\x28\x49\x93\x11\xa5\x1e\xc1\x59\x6c\x87\xc1\x09\x49\xc1\xe2\xa3\x68\x82\x71\x69\xda\x83\xd4\x28\x49\x92\x57\x83\x1b\x32\x3d\x6a\x67\xb0\x5d\x46\x33\x0a\x1d\x2b\x81\xb2\x9c\x9c\xf6\xf8\x6e\xe0\x2a\x05\x94\x50\x64\x7e\x2c\x5c\x85\xca\x0e\x27\x97\x11\xaa\x0e\xeb\x9e\xc0\x67\xee\x51\x8c\x4c\xb4\xc2\x73\xa6\x12\xf5\x32\x59\x06\xaa\x0c\x99\x37\xfd\x19\x29\x0d\x7c\x06\x13\xa2\x96\xa2\x49\x2f\x02\x4e\x4e\xb6\x0f\x1f\x5d\x06\xc8\x8d\x21\xdd\x3b\x5f\xb5\x4a\x45\xe7\xd6\xf9\x27\xd7\xc4\x5d\x6c\xfe\x58\x34\x7b\x33\x32\xc6\x32\x95\x82\xc7\x60\x44\xc9\xf9\xd9\x21\x06\x7b\x38\xf8\x51\xc8\x50\xe7\x42\x68\xd4\x85\xcc\xfb\x1e\x9f\xce\x91\x9b\xb1\x4f\x1b\xab\x41\x63\x24\x8e\x64\x88\xde\x24\x91\xcd\x13\x5a\xd1\xba\x4a\xe2\x3a\x5d\x9c\x4e\x49\x0d\xd1\x73\xa3\xa9\x1b\x7a\x38\x48\x14\x42\xe2\xc1\x7d\x76\x8b\xe6\xb9\x06\x4d\x83\x24\x81\xc7\xd5\x57\x2f\xfb\x10\xde\xe0\xde\xfb\x33\xf1\xf1\x97\xeb\x46\xf7\x26\xe8\x02\xb4\x07\x56\x86\x08\xac\x88\x11\x58\x17\x24\xb0\x36\x4a\x60\x65\x98\xc0\xff\xe3\x7c\xdc\x70\xde\x0e\xce\xb7\x78\xe8\xb2\x50\x7c\xc2\x83\x66\x89\x4f\x2f\xd2\x77\xcb\xdf\x57\x9f\xbf\xef\xf0\x41\xab\x71\x35\xfc\x60\x7c\xd6\x61\xff\x20\xbe\xdb\x42\xfa\xc6\x5e\xf5\x16\xd2\xb7\x84\xf3\x77\x00\x00\x00\xff\xff\x11\xf4\x99\xda\x15\x0d\x00\x00")
-
-func staticServiceAgreementMdBytes() ([]byte, error) {
- return bindataRead(
- _staticServiceAgreementMd,
- "static/service-agreement.md",
- )
-}
-
-func staticServiceAgreementMd() (*asset, error) {
- bytes, err := staticServiceAgreementMdBytes()
- if err != nil {
- return nil, err
- }
-
- info := bindataFileInfo{name: "static/service-agreement.md", size: 3349, mode: os.FileMode(420), modTime: time.Unix(1663352115, 0)}
- a := &asset{bytes: bytes, info: info}
- return a, nil
-}
-
-var _staticStyleCss = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x1a\x5b\x6f\xeb\xb6\xf9\xdd\xbf\x82\x70\x30\xe0\x24\xb3\x14\x5f\x53\x47\x07\x03\x86\xa1\x18\xd6\x87\xae\xc3\xba\x3e\x0d\x7d\xa0\x44\xca\x66\x23\x93\x2a\x49\xe5\xc4\x3d\xc8\x7f\x1f\x78\x91\x2c\x52\xa4\x2c\x9f\xf6\x00\xab\xd1\x1c\x9b\xfc\x48\x7e\xf7\x1b\x99\x71\xc6\x24\xf8\x3c\x03\x20\x49\x4e\xf0\x2d\xf9\x44\x90\x3c\x66\x60\xb5\x5a\x2e\xeb\xb7\x8f\x33\x3d\x9e\x1f\x92\x82\x55\x8c\x67\xe0\xae\x5c\xa9\xcf\x47\x3d\x2c\xf1\x9b\xec\x26\x76\xbb\x5d\x6f\x14\x61\x09\x49\x25\xba\xd9\xfd\x72\xbf\xc1\xb8\x07\x40\xe8\x2b\xe6\x32\xbe\x6d\xc9\xa8\xcc\x80\x38\x0b\x89\x4f\x49\x43\x16\x20\x81\x75\x5d\xe1\xc4\x8c\x2c\xc0\xdf\x2a\x42\x5f\xbe\x87\xc5\x8f\xfa\xf7\xdf\x19\x95\x0b\x30\xff\x11\x1f\x18\x06\x3f\x7d\x37\x5f\x80\x7f\xb3\x9c\x49\xb6\x98\x01\x00\xc0\x4f\x79\x43\x65\xb3\x00\xf3\x7f\xe0\xea\x15\x4b\x52\x40\xf0\x4f\xdc\xe0\xf9\x02\x08\x48\x45\x22\x30\x27\xa5\x39\xfa\xc4\x28\x13\x35\x2c\xb0\x3d\xff\x7b\x4c\x2b\xb6\x00\xdf\x33\x0a\x0b\xb6\x00\xdd\xb4\x45\x94\xc8\xaa\x85\x7c\x85\xfc\x43\x0f\xf5\x7b\x03\x81\x88\x80\x79\x85\x91\xcb\x2a\xb4\x51\x1f\x03\x21\x70\x85\x0b\x89\x51\x9f\xc7\xdb\xed\xd6\x9b\x2c\x7b\x02\x28\x4b\x2b\x95\x23\x86\x08\xf3\xfe\xc2\x3c\x7f\x46\xed\xda\x92\x31\xe9\xce\x5e\x56\x9e\x30\x6d\xfa\x33\xfb\x67\x88\x90\x25\x4a\xcf\xf9\xe7\x5d\x16\x31\xae\xce\x6c\x27\xd7\xdb\x6d\xb9\x87\xad\x96\x98\x39\x0e\x11\x69\x44\x06\xb6\x4a\x7d\x7a\xe3\x1d\xf5\x08\xd9\x05\x84\xd6\x8d\x34\xac\x31\x30\x19\x58\xd5\x6f\x40\xb0\x8a\x20\xc0\x0f\xf9\x87\xfd\x7e\x01\xcc\xff\xf7\x7a\xc9\xe3\x03\xf8\xcf\x0f\xdf\xfe\x90\x81\x46\x60\x50\x34\x42\xb2\x13\xa8\x39\xab\x31\x97\x04\x0b\x50\x32\x0e\x4e\x18\x11\x08\x7e\x6d\x30\x57\x23\x8c\x16\x18\xc8\x23\x3e\x03\xc8\xb1\xd6\x05\xf5\xdf\xe3\x03\x10\x4d\x5d\x33\x2e\x31\x02\xf9\x59\x01\x00\x21\x21\x45\x90\xa3\xb4\x83\x4a\x92\x9c\x63\xf8\x52\x33\x42\x65\x22\x4e\xb0\xaa\x40\x06\xb6\xfb\xa5\x21\x2b\x00\xa3\x8e\x6e\x4e\x19\x78\x5a\xc6\x61\x2a\xc8\x0f\x18\x64\x60\x3f\x02\xf3\xa6\x81\x32\xb0\x5a\xbb\x40\x0f\x8f\xb3\xf7\xd9\xec\xaf\x86\xc2\x0f\x35\xc7\x25\xe6\xd6\xc2\x12\x51\x1c\xf1\x09\x67\x00\x41\xfe\x72\xaf\xad\xf9\x62\xd7\xef\xd7\x97\x55\xe4\x70\x94\xc1\x75\x0f\xfa\x6b\xce\xde\x12\x41\x7e\x23\xf4\x90\x01\x2b\xce\x9c\x69\xd4\x4e\x90\x1f\x08\xcd\xc0\x52\xfd\xa8\x21\x42\x1a\x66\xf9\x51\xad\xcd\x19\x3a\xeb\xe5\xca\x22\x92\x12\x9e\x48\x75\x0e\x5b\x8a\xd5\x8d\xde\x94\x1e\xb9\xf7\x37\xf5\xce\xcb\x61\xf1\x72\xe0\xac\xa1\x28\x71\x76\x68\x55\xfb\x5e\xa3\x01\x35\x0e\xc3\x23\x1c\x1f\x65\x40\x8d\xc1\x5d\x70\xfe\x84\x15\x63\x14\xcd\x15\xd2\x07\x5a\x35\xdd\x74\x6a\x3a\xb2\x5f\x0b\xde\x59\xc4\xaa\x95\xa7\x25\x29\xa9\x70\x29\xd5\xb0\x3b\x2a\x59\xdd\x59\x4f\x3b\x96\x33\x29\xd9\xc9\x0e\xbf\xcf\x66\xac\x96\x84\x51\x23\x9b\x69\x4c\xe0\x92\x14\x15\xd6\x2b\x2a\x42\x71\x72\xb4\xa4\xad\xd2\x0d\x3e\xf5\x39\x0b\x1b\xc9\xcc\xef\x2e\x18\x3c\xed\x96\xf6\xdc\xbb\x82\x51\xeb\xbf\x4b\xa6\x37\xeb\x81\x99\x73\xbb\x81\xfb\xd0\xae\x0e\x91\x9b\x96\x72\x26\x88\xa2\x27\x03\x1c\x57\x50\x92\x57\xed\x8b\xf4\x39\xb0\x22\x07\x9a\x81\x02\x53\x89\x79\x0f\x05\x2a\xbf\xea\xe9\xef\xb3\x99\x71\xaf\x11\x16\x7f\x3a\x12\x89\x7b\x22\xd6\x1b\xae\x3c\xad\xe8\x3b\xbe\xbe\x3e\x58\xb1\x4f\x84\xe6\x56\x4e\x13\xc1\x25\xab\xf5\x01\x9d\xd6\x39\xe0\x66\xd0\x87\xd7\x47\x5c\x5d\xd0\x19\xe2\xd6\x32\x2e\x22\x20\xcb\xb8\x14\x61\x51\x70\x72\x51\x54\x87\xf9\xbe\xd2\xb7\x0a\xbe\x6a\x35\x8d\xc2\x57\xeb\x7a\x5c\x06\x07\xa8\x37\x7c\x09\x32\x78\x04\xda\x9e\xd1\x54\xd6\x26\x84\x4c\x84\x3c\x57\x38\x03\x94\x51\x7c\xcd\xb7\xa9\xa5\xa9\x84\xb9\xd0\xab\x11\x11\x75\x05\xcf\x19\x28\x2b\xac\xc9\x62\xaf\x98\x97\x15\xfb\x94\xbc\xb5\xca\xd7\x5b\x63\xfc\x4b\x85\xdf\x32\xb0\x8a\xf1\x31\xa4\x74\x77\xd8\xa4\x50\xf6\xe7\x81\xe3\xb3\x83\x59\xcb\xd3\x2f\x53\x9c\x4e\x02\xd7\xe0\xb5\xee\x27\x3a\x0f\x52\xbc\xfa\xc4\x61\xed\x90\x97\x16\x0d\xe7\xad\x81\x5e\x37\x9d\xf6\xdc\x96\xeb\x1d\x2f\x09\xd5\x8e\x2a\xaf\x58\xf1\xa2\xcf\xb5\x99\xe9\x72\xf9\x27\xf7\xbc\xba\xa9\x2a\x2d\x73\x7d\x62\x9f\x9b\x6a\x70\xe8\x70\x37\x7d\x1d\xd3\x02\x71\x42\x04\xa1\x47\xcc\x89\x1c\xc5\xc5\x3a\xfc\x82\x71\x68\x5c\x47\x8b\x7d\x0c\xc9\xec\xa8\x54\x02\x4c\x8d\x45\x81\x13\x1a\x8a\x30\x57\x58\xb8\xa8\xa7\x05\x6b\x94\xca\xf4\x8c\xe5\x06\xdf\x32\xcd\xe4\x2d\xdf\xbc\x98\x64\xf5\xcb\x8e\xea\x78\x29\xc8\x6f\x38\x03\xcb\x74\xaf\x42\xca\xfb\x6c\x76\x82\x24\x60\xfb\xdb\x88\xed\xef\x27\x85\xc7\x56\xad\x5d\x65\xff\xaa\x3e\x75\xb2\x69\x38\xf0\x37\xb9\x61\xbb\x64\x9a\x27\x8e\x1a\xd5\x25\xd1\x13\x05\xc7\x98\x02\x48\x11\xf8\x70\x22\xb4\x0d\x92\x3a\x7f\xbd\xb7\xa1\xd3\xca\x66\x20\xe6\x2e\xeb\xf4\x25\x6d\x27\xde\x3b\xd1\x1e\xd7\xd3\xa5\xbb\x6e\xad\xae\xb6\xc7\x2b\xe7\xda\xcd\x2e\xd3\x9d\xd5\x19\xa9\x2a\xa6\xc5\x4c\x1e\x17\x33\x89\xbe\x48\xab\x0b\x56\x55\xb0\x16\x38\x03\xed\xb7\x91\x68\xf5\xf8\x00\xfe\x05\x0f\x18\xcc\x6b\xce\x7e\xc1\x85\x9c\xab\x3c\x7b\x76\x57\x36\x54\x63\x7f\x60\xb0\x12\x20\x35\xff\x7c\xee\x79\xf6\x0c\x1c\x09\x42\x98\xc6\x1d\xf8\x20\x28\xfc\xd2\x08\x49\xca\x73\x62\x13\x98\x3e\xac\x02\x49\x94\x27\xcd\x40\xe7\x4f\x7d\x1c\x0a\xc8\x91\x1f\x3a\x3a\xdf\xbf\x76\xcc\xe1\x8f\xf3\x00\x51\x0f\xd8\x53\xaa\x4d\x9b\xd7\xf6\xb2\xb1\x6d\x3b\xa6\xca\x7c\x52\xc0\xaa\xe5\x8f\x64\xb5\xcf\x32\xe3\xa5\x6d\x07\xc2\x84\xdc\x55\xb7\xa3\xd6\x12\xab\x80\x6d\x8a\xa7\xc6\x7a\xf9\x5d\xa7\x44\xde\x7c\x8c\x87\xa9\x2e\xdc\x63\x59\x7e\x74\x95\x9f\xcf\x78\x61\xd8\x71\x80\xcf\x26\xa7\xbe\x2d\xe5\x09\x1f\x2b\x24\x94\xe2\xd6\x04\x2a\xe6\x44\x5d\x2f\xbd\x33\x58\x0e\x73\x9f\x51\x64\x1c\x5c\x06\x44\xa4\x92\xb1\x4a\x92\xfa\x77\xc5\xa3\xae\x52\xba\x96\x0c\xb4\x6a\xdf\x56\x33\xeb\x91\xd4\xd4\xa1\x7e\xb5\x0e\x14\x5d\x2b\x33\x66\x05\xab\x8b\x62\x47\xba\x7e\x39\x58\x34\x5c\x28\x48\x5d\xb7\x9b\x23\xac\x46\x3a\x01\xd3\x55\xe2\xed\x68\xd5\xd1\xb2\x4f\xa7\x05\x9a\x87\xaf\x44\x90\x9c\x54\x44\x9e\xfb\x2e\xe7\xb2\x1c\xe6\x82\x55\x8d\x49\xa9\x58\x0d\x0b\x0d\xa8\x53\x56\xc9\x21\x6d\xa1\xec\x0c\x58\xa6\x6b\x31\x1a\x42\xc6\x8b\x71\x87\x0d\x94\xf1\x13\xac\x7c\xc6\xa6\x2b\x47\xf7\xfd\x48\xfd\xc7\xb9\x26\xab\x02\xca\xe9\x58\x8f\xea\xf9\xa0\xae\x7f\x12\x4a\x09\x8f\xe7\xfa\x88\xa9\xb8\xd4\x86\x46\x64\xeb\x67\xbb\x44\xe9\x43\x62\x15\xe2\xb7\x84\x50\xa4\x7d\xee\x72\x19\x90\x92\x90\x9c\xd1\xc3\x88\x3f\x69\xc1\x6d\x12\xe8\xac\xce\x32\x58\xb6\xe9\x5b\x17\x18\xe6\xf3\xb8\x8c\x35\x66\x96\x30\x83\xf3\x72\xa0\x78\x89\x1b\x0e\xba\xa6\xae\x3b\x6a\x4d\xde\xaf\x9e\xac\xfc\xb5\xf6\xd4\x50\x67\xf2\x77\xcf\x4b\xf5\x71\xc6\x7a\xdf\xaf\x12\x39\x50\x64\xfd\xbd\x72\x75\x76\x35\xe2\x77\x14\x67\x38\xc9\x1b\x89\x93\xbc\x91\xd2\x7a\xe0\x48\x79\x7f\x21\xd4\xd2\xbd\x57\xc9\x78\xbc\x53\x32\x96\x81\x0f\xcb\xb2\xdf\xe7\xd2\x6e\xa0\x10\xba\xa5\xa5\xef\x01\xc3\x1e\x69\x40\x57\xbf\xd1\x1e\x2e\x2c\x62\xa5\xcb\x64\x3c\xad\xc4\x3f\x5f\xaf\x5a\xbc\x2d\x8f\xeb\xc5\xec\xae\x82\x12\x0b\x99\x34\x35\x52\x5f\x9c\xb1\xee\x2c\xc2\xa8\x9d\xa9\xe1\xf9\xa4\xb4\xcf\x66\x9e\xb1\x1e\x91\xb7\x69\x6a\xbf\xc4\xb6\x4e\xfb\x3f\xa3\x1b\xc7\x22\x65\xf8\xb0\xe9\x67\x79\x59\xcc\x25\x1f\xf0\x37\x1e\xdd\x56\x4d\xf6\xf3\x92\x3b\x08\x61\x3f\xc3\x15\x60\x0e\xab\x0a\xd8\xcd\xe6\xba\x34\x98\xd7\x50\x48\xe0\x6c\x64\xf3\xdf\x21\x31\xd7\xa8\x70\x22\xe9\x7a\xb4\x08\xb8\xb1\xc4\xf3\xf8\xb3\x71\x86\x7b\xfd\x95\xf1\xd2\x47\xb7\xdc\x4d\xe9\x33\xa4\x0e\x80\xab\xf4\x39\xa1\xe5\x1b\xe3\x51\x74\x25\x74\xd9\xcd\x74\xbe\x86\xbc\xea\xb5\x12\xa3\x55\xd1\x40\xd8\x26\x49\x4d\x73\x88\x0e\x8a\xfd\xc1\xf1\x4b\xcc\x69\x73\xba\x27\x13\x7c\xbf\xd4\x4b\x85\xe5\xb3\x0f\x8a\x67\x1f\x4e\xf0\x4f\x04\xa1\x2a\x62\x19\x7d\xdc\xd3\x9a\xd0\x97\x18\x61\x7a\x32\xd2\x40\xe2\x87\xfc\xc3\x7a\xbd\x5f\x80\xcd\x66\x01\x9e\xf7\xf7\xc3\xd0\xa5\x20\x56\xbb\xd5\x02\x3c\x2f\xc0\xee\x29\x72\xc3\xe0\x39\x46\x47\x90\x61\x95\x8f\x5a\x98\x07\x18\x6d\x29\x0e\x41\x87\x6a\x76\x6b\xcb\x21\xe8\x3c\x6e\xae\x3c\x3a\xca\x6b\x78\x20\x54\xfb\x6e\xfd\x5d\xbb\x4c\x0f\xe5\x01\xc8\xad\x3d\x80\xb8\xdb\x8e\xa2\x71\x1d\x8b\xf1\x60\x79\xe9\x5d\x8f\x51\x0c\x47\x8f\x81\xe1\x08\xd7\x86\xcf\x78\xda\x1c\xa5\xac\x6d\x94\x8e\x9f\xeb\x80\x05\xd1\x36\x01\x78\x1c\xf9\x89\x41\x7a\xe2\x45\xd9\xe3\x03\xf8\x96\x15\x8d\x0a\xc5\x66\xff\x87\xc7\xd9\x1d\x62\x85\x2a\xbe\x5f\xae\x88\x62\x24\xab\x55\xdf\xac\x77\x89\x5c\xf0\x75\x55\x4a\xb4\xeb\x3d\xa9\xdf\x76\xd3\x7d\x8a\x6f\xbe\x98\xca\x14\x39\xd4\xa3\xe8\x9d\x61\xbf\xc3\x74\x49\x9d\x74\x90\x75\x92\xa1\x60\x2b\x6d\x39\x66\x2b\xce\xea\xcf\x03\x9f\xed\x7b\x72\xee\x16\xc8\xc3\x36\xd6\x60\xcf\x51\x37\xe6\x40\xa6\x84\x26\xe2\xc8\xb8\x0c\x66\xe5\x36\x64\x96\x44\xf6\xeb\xb4\xb1\xdb\x3d\x9b\x5f\x96\x8c\x9f\x40\xaa\xfe\x26\x98\x73\xc6\x85\x7f\xe5\xb7\x5b\x06\x53\x81\x8b\x90\xd7\xce\x73\x82\xf5\x6e\xb7\x00\xab\xd5\x4a\xff\xb9\xa5\xd2\xf4\x7c\xec\xda\xb9\x0d\x8d\x22\x9b\x8e\xde\x20\xde\x95\xe5\x53\xf9\x54\xf6\x2c\xae\x53\xed\x60\x66\x1f\x4e\x48\x6f\xca\xa3\x6e\xb9\x60\x1e\x27\xad\x71\x34\x2e\xd6\x74\x6a\xa3\x40\x4b\xf1\x37\xc5\x72\x69\x0b\xe8\xf0\xf6\xe1\xbb\x34\xdd\x1b\x45\x84\xe3\xc2\xb8\x8d\x82\x55\xcd\x49\x37\x41\x34\x3b\x12\x22\xf1\x49\x04\x98\xf2\xf5\x9a\xa2\xd3\xae\xdc\x23\x34\x1e\x37\x9a\x4c\x83\xbb\xc0\x55\x69\x28\x4d\x84\x84\x5c\x0e\x2a\xf9\x8d\x49\x34\xed\x98\x73\x6f\x1d\x2d\x1b\xc2\xe7\xa6\x84\x0a\xc9\x9b\xc2\xef\x5f\xde\x7d\x03\xd5\x67\x6c\xc7\xe9\x89\xf5\xc4\xa3\xdd\xd7\x05\xbd\x5c\xfa\xf1\xe1\xe2\x5a\x38\x96\x0d\xa7\x09\x44\x88\x63\xa1\x5f\xf7\xfc\xc1\x0a\x32\xa5\x54\xe9\xfb\x3a\x0f\x21\xfd\x7c\x69\x11\x9d\xae\x60\x8e\x8d\x99\x38\xd2\x8b\x14\x35\xd6\xee\x54\x58\xf0\x79\xa8\xcf\x49\xbd\xdd\x3d\x4f\xb8\xb6\xad\x5c\xe7\xa5\x8d\xf3\x5c\x6d\x50\xdd\x07\x8f\xf9\xaf\x3c\xd7\xf8\x2f\x73\xa5\xeb\x6c\xfe\xb3\xe3\xce\x2f\x37\x34\xa3\x4b\x45\x93\x9f\x88\xb4\x6b\x3b\x4b\xdc\x3b\xfd\x98\xae\x31\xf7\xff\xd0\x91\xf9\x0a\x9d\x94\x7e\x3b\xf4\x16\x9e\x4d\xcf\xd1\xfc\xc6\xf3\xfb\x98\xe5\xf4\x7b\x36\x3d\x4b\x14\x61\x1f\x1e\x0c\x55\xe5\x0e\xa1\x00\x0b\xb7\x31\xff\x7a\x97\x97\xea\xf3\x31\x12\xaf\x43\xf7\xf1\x83\x82\x5e\x37\x22\x2e\xd7\x73\xa6\xf1\x63\x32\xa7\xb6\x0b\x34\xd6\x02\x6a\x61\xd2\xbe\xc9\xdc\xa8\x70\x13\x94\xc0\xad\x2c\x26\x87\x90\xb8\xa1\x3a\xbd\xf4\xb5\x31\xeb\xee\x39\x89\xb9\x22\xd4\x8f\x05\x93\x4f\x8c\xa3\x78\x7e\x35\xe8\x8e\x0c\x19\x12\x7b\x8c\x10\xa8\x8c\xed\xda\x4e\xa5\x82\x77\xb8\x17\x8f\xe9\x83\xa7\xbf\xf2\x82\x21\xfc\x55\xde\x28\xc4\x90\x78\x7c\x00\xdf\x29\x1b\x03\x4a\xde\xb5\x52\x9b\xbe\xc9\x29\x42\xe7\x3f\x2f\x9c\x31\xda\x9c\x72\xcc\x7d\xd7\xf5\xe4\xde\x30\x79\xd1\xd7\x76\xe0\xdd\x47\x74\x6d\xe2\xe5\x0f\x5f\x92\x7a\xff\xf6\xdb\x74\xd0\xcd\x83\x58\x83\x6f\x30\xd2\x05\xe3\x99\xbf\x32\x44\x66\x14\xc0\xa1\xb9\x15\x8d\x61\xf5\xe0\x79\xee\xfd\xf0\xac\xfe\x8f\xa4\xe6\xb8\x24\x6f\xe0\xcf\xd7\x31\xb8\xbe\x2c\x80\x97\xe5\xb5\xfb\x3a\x2b\xe9\x5d\x81\xc4\x5e\xc0\xf5\x27\x43\x4f\x33\x02\xdc\x77\x10\x14\x4d\xf9\x25\x74\x05\x97\x85\xe8\xe2\xed\x75\x9a\x43\x98\x53\x07\xc7\xde\xea\x05\x48\x1b\x00\x78\xb4\xb5\xfc\x0e\x15\xe9\xa3\x7a\x36\x45\x3f\xc2\xe1\xa3\x7b\xdc\xef\x1b\x55\x4c\x62\xae\x2f\x0d\xc9\x6c\x3b\x66\x85\xae\xad\xfa\xf4\x5b\xb9\xfc\x0e\xfa\x2f\xae\xcb\xb9\x23\x9e\x42\xfa\x94\xa7\x54\x51\x69\x07\xd9\x12\x04\xf1\x39\xf0\xbf\x00\x00\x00\xff\xff\xf5\x07\x2d\x06\xe6\x31\x00\x00")
-
-func staticStyleCssBytes() ([]byte, error) {
- return bindataRead(
- _staticStyleCss,
- "static/style.css",
- )
-}
-
-func staticStyleCss() (*asset, error) {
- bytes, err := staticStyleCssBytes()
- if err != nil {
- return nil, err
- }
-
- info := bindataFileInfo{name: "static/style.css", size: 12774, mode: os.FileMode(420), modTime: time.Unix(1663523159, 0)}
- a := &asset{bytes: bytes, info: info}
- return a, nil
-}
-
-var _templateAboutHtmlTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x56\x41\x6f\x1b\xbd\x11\xbd\xfb\x57\x0c\x8c\x04\xbe\xa8\x52\x6a\xa0\x68\x50\x28\x2a\x9c\x43\x5a\x1f\x82\xa2\x68\x80\x20\x47\x8a\x9c\x15\x19\x73\x39\x0b\xce\x50\x1b\x21\xc8\x7f\x2f\x86\xdc\x95\x56\x8a\x3f\xe0\xbb\xd9\x2b\x72\xf8\xe6\xcd\x7b\x8f\xdc\x7a\xe9\xe3\xee\xee\xee\xe7\x4f\xc1\x7e\x88\x46\x10\xee\x3d\x1a\x87\x79\xad\xbf\xac\xa5\x1f\xe2\x3d\xac\x7f\xfd\xba\xbb\xdb\xee\xc9\x9d\x76\x77\x00\x5b\x17\x8e\x10\xdc\x87\x7b\x4b\x49\x30\xc9\xbd\x7e\x04\x58\x96\x18\x32\x7d\x47\x2b\x7f\x79\xbd\xd4\x1f\xad\xee\x31\x95\xdf\x8e\xd5\xc5\xdb\xde\x84\xd4\x4e\xd9\x9a\x2c\xc1\x46\x6c\xff\x01\x6c\xfd\xe3\xee\x69\x4f\x45\xb6\x1b\xff\x78\xfe\x38\xec\xfe\x8d\x19\xe1\x44\x05\xba\x90\x1c\x18\x18\x71\xcf\x41\x10\x2c\xc5\x88\x56\x42\x3a\x40\x57\x92\x63\xe8\x28\x83\x81\x09\xc2\x1a\xe0\x59\xc0\xc4\x48\x23\x14\xc6\xcc\x20\x34\xd5\x9c\x37\x1e\x31\x9e\xea\x56\x30\xc9\x41\x48\x5d\x2c\x98\x2c\x82\x78\x04\x17\xb2\x2e\xa1\x04\xd4\x81\xf8\xc0\x73\x5d\x28\xac\x27\x1a\x3d\xad\x07\xea\x66\x9c\x06\x7c\xc6\xee\xc3\xbd\x17\x19\xf8\x1f\x9b\x0d\x27\x1a\x5d\x0e\x9d\xac\x2d\xd1\x70\xbf\xb3\x99\x46\x07\xbd\x11\xeb\x43\x3a\x6c\x37\x66\x57\xf1\x06\xc1\x6c\x14\x0a\x38\x3c\x62\xa4\xa1\xc7\x24\xeb\xed\x66\x58\x10\xf0\xc5\xa3\xae\xeb\xb9\xb2\xc0\x88\x10\x03\x0b\x3a\x30\x19\xcf\xb0\x68\xff\xbd\xf5\xc4\x10\x84\x41\x69\x16\x13\x12\x66\x18\x4d\x12\xed\x1e\x46\xca\x2f\x53\x55\x4a\x6b\x80\x2f\x1e\x4f\xd0\x9b\x13\xec\x95\xcc\x64\x71\x10\x06\x2e\xd6\x83\x61\x78\xf8\x88\xd0\x53\xc6\x4a\x1e\x74\x39\x60\x72\xf1\xf4\x00\x94\xe1\xe1\xb3\x79\x41\xd8\xa3\x08\xe6\xa9\x9e\x23\x5b\x14\xb9\x51\xca\x1e\xd6\x00\x4f\xe0\x90\x6d\x0e\x83\x7e\x58\x01\xfe\x18\x42\x46\x70\x46\x70\x05\xbd\xf9\x11\xfa\xd2\x57\xea\x2b\x97\x3d\x95\x24\x2b\x18\x43\x8c\xb0\xc7\xa9\x64\x48\x36\x16\x87\xae\x01\x65\xac\xdd\x8e\xde\x48\x65\xc1\x9a\xa4\x98\x25\x87\x7d\x11\x04\xa1\x35\xc0\x27\xca\x80\x3f\x4c\x3f\x44\x84\xd0\xd5\x65\xda\xfb\x54\xaf\xe1\xbd\x46\xba\x3a\xd7\xaa\x32\x58\x36\x76\xdb\xd2\xf5\x48\xbe\x7a\x5c\x9c\x1f\xd2\xa1\x55\x52\x88\xa6\x49\xf2\x4a\x64\x63\x10\x0f\x24\xbe\xc9\xf0\x5a\x6a\x53\xd1\x59\xb6\xd7\xe7\x3c\x31\x98\x34\x37\xb5\x82\xd0\x9b\x43\x48\xa8\x2a\xa7\xa1\x44\xa3\x83\x41\xac\xf2\xa5\x01\x13\x30\x95\x6c\x11\x98\x3a\x19\x97\xe2\x50\x6c\x85\x71\x3d\x15\xfe\x46\x05\x62\x78\x41\xc0\x23\xe6\x93\xf8\x8a\x7f\x5f\xda\xba\x31\xb0\x87\x20\xe0\x8d\x7b\x95\x8a\x1b\x84\xff\x22\xed\x56\x9b\x12\x3e\x4f\x74\x30\x07\x5c\x5d\x3c\x7b\xb5\xff\x2c\xde\xda\xda\x59\xb6\x33\xb6\x2f\x5e\xed\xae\xe0\x1d\x8a\x09\x91\xc1\x68\x26\x5c\x95\x67\x31\x52\xb8\x39\xdc\x1b\x86\x37\x7f\x7d\xf7\x6e\xa1\x06\xd7\xf8\x36\x53\xc5\xea\x39\xe8\x8c\x15\xca\xea\xe6\xf7\xef\xde\x36\x4d\xe9\xbe\xb3\x4a\xb4\x85\x83\xfa\xb0\xaa\xb0\xa4\x48\xf6\x05\xde\xbc\x07\x21\x31\xf1\xe2\xf3\xcb\xcc\x29\x31\x74\x99\xfa\x69\xae\x6b\x78\x02\xee\x4d\x8c\x30\x50\xbe\x04\x47\x3b\xa4\xd6\x34\x91\x49\xad\xe6\x31\xba\x4b\x18\x4d\xe8\x8a\x94\x8c\x37\xd5\xf7\xa7\xb9\xf6\xef\x79\x30\x4d\xf6\xe1\xca\xe9\x06\x3a\x1c\xc1\x99\x13\x83\xc6\x71\x06\x1b\x4d\xe8\xb9\xc2\x38\x13\x5d\xd5\xc2\x62\xb2\xf0\xec\xb4\x7e\xc8\x74\xac\x63\xd4\xe4\xbb\x1a\x36\xc0\xff\xa8\x47\xed\xe5\x44\x25\x43\x4f\x09\x4f\x10\x18\x32\xea\x30\x50\x1b\xd1\x5f\x2a\xa1\x81\x21\xcc\x35\xb5\x52\xf3\x75\x1d\x46\xed\x59\xf3\x6e\x0e\x40\x28\x83\xa5\xbe\x19\x65\xd1\x73\x9d\x29\x83\x99\xa8\x6c\x15\xa6\x92\x1c\xd4\x31\x23\xc2\x81\x04\x6c\x24\x56\xdb\xd7\x83\x66\x5d\x1c\xc8\xc4\x1b\xae\xbe\x29\xea\xe5\x11\x0a\x7e\xa4\x2c\xbe\xa5\x5b\x83\xaf\x71\x31\xd9\xd3\xfa\x30\x40\x98\xe2\x11\x22\x72\xa3\x4f\x4b\x5f\xba\xcb\x68\xac\x47\xb7\xaa\x3f\xd5\x3a\xcd\x39\x35\xbf\xce\xdc\xdc\x40\x79\xee\x2a\x03\xac\x7c\x66\x34\x4c\xe9\x66\x30\x2d\x24\x79\xa5\x19\x5b\x0b\x5f\x26\x6b\x4d\xb2\x18\x35\xda\xab\xad\x66\x46\x3c\x95\xe8\x96\x47\x4e\x74\x9c\xa9\x03\x2e\xb5\x7c\x65\x2a\x9b\xc4\xa6\x5d\x6a\x96\x58\x5e\x91\x55\x46\xa5\xc7\x40\xd4\xbb\xa8\x0a\x38\x17\x16\x05\x86\x56\x7d\x55\xf5\x7e\x03\x4d\x08\x3a\xaa\xd7\xac\xf8\x4c\xe5\xe0\x81\x12\xf8\x33\x55\x43\xa6\x3e\x30\xea\x64\x3f\x22\x70\x69\x9c\x5b\x8f\xf6\x45\x57\x41\xc6\xa1\x4c\xc1\xa0\xc2\x1c\x0c\x0b\x0c\x98\xf5\x76\xd5\x9e\x75\x32\xd2\x94\x75\x36\x74\xbd\xab\xf2\x75\x10\xf9\xc7\xdd\xa7\xa7\xff\x5e\xbd\x1c\x4a\x3c\xff\x19\xc3\xf2\x3d\x41\x63\xeb\xf2\x4a\x16\x3c\xc4\x20\xff\xfc\xdd\x68\x13\x8f\x2f\x38\x88\xee\x0a\x69\x7a\x1a\x68\x63\xb3\xd3\x85\xc0\xd3\xf8\xba\x26\x63\xe8\xc3\xac\xe0\xda\x6e\x55\x8e\xea\xbc\xc5\x43\xcb\x97\xe9\x94\x6c\x02\xa3\xd3\x75\x8f\x7f\x7b\x3b\x07\xc8\xe2\x66\xaf\xc5\x56\x17\x8b\xa5\xba\x2e\x70\x85\xb7\xaa\x04\xfe\xbd\x7d\xc8\xc8\x98\x8f\xf8\xe7\x4c\xb7\xec\x7a\xb3\xe0\xea\x8a\xb6\xaf\x7a\xf5\x4e\x8a\x7b\x06\x47\x3a\x99\xe7\x16\x9d\xcb\x1c\x07\xe3\xa6\x58\x90\xab\x98\x5a\x5e\x0d\x37\x34\x7f\x26\x96\x79\x25\x37\x17\x79\x73\x6c\xb7\x5c\xd0\x00\x69\xc2\x14\x9e\x1e\x72\x96\xd2\x21\xe3\xc1\x08\xae\x01\xfe\x93\xf5\xf8\xc0\x5c\xe6\x9b\x54\xb2\xb1\x2f\x98\xa1\xf9\x2b\xe4\x05\x08\x3d\x5c\x9d\x9d\x4f\xb0\xcf\x21\x1d\x1a\x27\xea\x37\x17\xd8\x16\xe6\x39\x04\xa7\xe7\xd0\x85\xe9\x8c\x4d\xc0\xd6\xa8\xd5\xe2\x45\xc3\x7b\xec\x28\xa3\x57\xea\x85\xea\xe3\x2c\x74\x15\xeb\x1e\xdb\x13\x81\x83\xc3\x7c\x13\x06\x4b\x92\x37\xb3\x4e\xb7\x9b\xab\x07\xf1\x76\x33\x3f\x95\xb7\x1b\x17\x8e\xbb\xbb\xed\xa6\x3d\xdb\xb7\x9b\xf6\xd2\xff\x7f\x00\x00\x00\xff\xff\x77\x15\x0c\xe0\xf1\x0b\x00\x00")
-
-func templateAboutHtmlTmplBytes() ([]byte, error) {
- return bindataRead(
- _templateAboutHtmlTmpl,
- "template/about.html.tmpl",
- )
-}
-
-func templateAboutHtmlTmpl() (*asset, error) {
- bytes, err := templateAboutHtmlTmplBytes()
- if err != nil {
- return nil, err
- }
-
- info := bindataFileInfo{name: "template/about.html.tmpl", size: 3057, mode: os.FileMode(420), modTime: time.Unix(1663522890, 0)}
- a := &asset{bytes: bytes, info: info}
- return a, nil
-}
-
-var _templateContributeHtmlTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x58\x5f\x6f\xdc\xc6\x11\x7f\xf7\xa7\x98\x2e\x8c\xd6\x06\x44\x52\x3e\x25\x2d\xe2\xf2\x58\x48\xaa\x15\x2b\xad\x5c\x21\x12\x12\x34\x41\x5a\x2c\xc9\xb9\xe3\x46\xe4\x2e\xbd\xbb\xbc\xd3\xf5\x7a\xaf\x79\x6c\x11\xb4\xef\x7e\x2e\x0a\xb4\xdf\xa9\x9f\xc0\x1f\xa1\xd8\x5d\x1e\xff\xdf\xc5\x09\x60\xc0\x27\x72\x77\xe7\x37\x33\xbf\xf9\xcd\x2c\xc3\x4c\x17\x79\xf4\x04\x60\xbb\xd5\x58\x94\x39\xd5\x08\x24\x43\x9a\xa2\xf4\xcd\x2b\x5f\x17\x65\x4e\xc0\xdf\xed\x9e\x3c\x01\x08\x63\x91\x6e\xcc\x6a\x80\x30\x65\x2b\x60\xe9\x9c\x24\x82\x6b\xe4\x9a\x40\x92\x53\xa5\xdc\xdf\x92\xc5\x95\x46\xe2\x56\x76\x4f\x2e\xa5\xf8\x16\x13\xed\x4d\x5b\x38\xb4\x3a\xa6\xc9\x83\x17\x57\x5a\x0b\xde\xdb\x72\xeb\xde\x3b\x6c\x00\x61\x41\x19\xaf\xd1\x29\x4c\x34\x13\xdc\x22\x5c\x54\x3c\x65\x7c\xe9\x2d\x05\xcd\x6b\x4c\x00\x61\x36\x8b\x2e\x1b\xa8\xa0\x05\x90\xed\x56\x8b\x7b\xa6\x73\x04\xff\x0f\xb1\x39\x98\xad\xd0\x7f\x43\x0b\xdc\xed\x48\x18\x64\xb3\x66\x6b\x95\xef\x9d\x65\xdc\x53\x99\x90\xba\x39\xd6\x38\xc0\x16\xdd\x03\xae\xd5\xa5\x14\xeb\xf4\x86\xea\x24\xc3\xb4\xf6\xd2\x1e\x93\xb3\xe8\x4b\x04\xaa\x1e\x60\x21\x24\x84\x4a\x4b\xc1\x97\xd1\x76\xdb\xd9\x7c\xc3\x38\x2b\xaa\xe2\xf7\xac\x60\xda\xbf\x95\xa8\xf5\xe6\x4e\x4b\xc6\x97\xbb\x9d\x81\xdc\x5b\x7b\xe5\xdc\x9c\x5a\x1b\x06\xf5\xe1\x3e\xbc\x7f\xf7\xb7\xff\xb6\x10\x82\x9c\x75\x91\x23\x9f\x00\x28\x29\x53\x98\x4e\xe3\xbb\x17\x9a\xe6\xb5\x6b\xc7\x6c\xfe\xf3\x3f\x07\x6c\x1a\x1b\x57\x42\x42\x61\xce\x60\x7c\x09\x1c\xd7\xd0\x50\x88\x09\xae\x4e\x60\x8d\x90\xd1\x15\x1e\x41\xf0\x39\x9a\x1c\x1f\x87\xf0\xfd\xbf\x0f\xba\xfd\x81\x09\x73\x68\x6f\x25\xae\x98\xa8\x54\x8b\x12\x53\xa0\x85\xa8\xb8\x56\xb0\x66\x79\x0e\x49\x25\x25\x72\x9d\x6f\x20\x46\x90\x35\xb4\x0f\x40\x7f\x8b\x32\xe9\x81\xfe\xdf\x77\xff\x0a\x8f\x25\xe8\x47\x22\xbf\xcf\x10\x38\x3e\xea\x5e\x7c\x7f\xa1\x80\x0b\xee\x35\x30\x59\x51\xd2\x44\x03\x53\x10\xcd\xa7\x31\x5f\xdb\x15\x23\xb0\xef\xdf\x7d\xff\xf7\x1f\x46\xcb\x85\xee\x22\x7e\xf5\x58\x32\x89\xea\x5c\xfb\xd7\xea\x2b\x94\x02\x7a\xa0\x1b\x0a\xda\xf4\x57\x5c\xb3\x7c\x1a\x52\x7b\xcc\x95\x90\x05\xd5\x40\x66\xa7\xa7\xbf\xf4\x4e\x5f\x78\xa7\x33\xd2\x41\x69\x6a\x46\x22\x4d\x32\xd0\x19\x53\x50\x0b\x03\x18\x61\xf8\x19\xbc\x7f\xf7\x8f\xef\xfa\xc6\x8f\x57\x47\x50\xe5\xb5\xd8\x04\xb5\xda\x44\x4f\x7a\xe2\xd3\x95\x9a\xdf\xa2\x4a\x24\x2b\xcd\xe3\x9e\x94\xa4\x6c\xd5\x98\xe8\xb9\xd4\xd9\xd0\x18\x0d\x83\x66\xf9\x21\x9b\x8d\x24\x3b\x66\x7a\x0b\x21\x8b\x8e\x38\x19\x28\x17\x98\x88\x02\x81\xb6\x34\xb0\xea\x83\x39\x26\x3a\xea\x07\x40\x58\xfb\xb0\xa2\x79\x85\x73\xb2\xdd\xfa\xf7\x92\x72\xb5\x40\x79\x83\x3a\x13\xe9\x6e\x47\xa2\x89\x87\x61\xe0\xf6\x75\x0f\x33\x78\xad\x01\xe7\x7d\x9f\x14\x42\x82\xff\x4a\x4a\xf3\xdf\x15\xc3\x3c\xb5\xbf\x55\x97\x0b\xb6\xdb\xd4\x9a\x6b\x5c\xf2\xd0\x2e\x21\x3d\x13\x9d\x35\xae\xbf\x10\x4b\x79\x55\xc5\x05\xd3\xa6\x4a\xcd\x4e\x40\x9e\x98\x5a\x45\x69\xc8\xae\x54\x85\xaa\x13\xd6\xfa\xa4\x7d\x66\xbb\x65\x66\x41\xed\x76\x61\xce\xf6\x46\x2c\x06\x1b\x81\xfd\x3b\x43\x98\x21\x4f\xcc\x7e\x49\xf9\x12\xe1\xe9\x03\x6e\x4e\xe0\xa9\x8d\x26\xbc\x9c\xf7\x9c\x1d\xf3\xbe\x71\xd7\x2c\xf2\x1a\x5b\xe6\x90\xdd\xee\x25\x6c\xb7\xee\xa0\xda\x6a\xcf\xdc\x10\x40\x4b\xd5\x01\x8b\xba\xcb\xdb\xf7\x36\x4c\xd4\xd2\x69\x4e\x7c\x3f\xb0\xff\xb6\xdb\x4a\xe6\x40\xda\x96\x49\x9a\xfe\xdc\x76\x62\xdb\x2d\x81\x88\xf8\xdb\x2f\x50\x2a\x26\x38\xe9\x16\x7b\xfd\xcc\xdf\xcb\x33\x81\xc2\x32\x66\x4e\x4a\xa1\x74\x3f\x97\x8c\x97\x95\x06\x4e\x0b\x9c\x93\x3e\xbf\x08\x64\x2c\x4d\x91\xcf\x89\x96\x15\x92\xa3\xe4\x3c\xc0\x8e\x41\x51\xb8\xc2\x38\x8b\xce\xad\x88\x87\x41\x76\x36\x78\x57\xb6\xed\x5e\x69\x59\xd9\xc8\x90\xe8\xae\xc4\x84\x2d\x36\x90\x89\x35\x14\x55\x92\xc1\x46\x54\xb0\x16\x55\x9e\x42\xce\x1e\xec\x48\xd1\x16\xa2\x1f\x06\x65\x87\xf6\x30\x9c\xa0\xea\x72\x95\xa6\x36\x0b\x34\x4a\xec\xd5\x3d\x85\xb4\xc6\xcb\x4a\x7b\x4b\x29\xaa\x12\x18\xcf\x19\xc7\x81\x0f\x47\x98\x76\x57\x2d\x97\xa8\x34\xa6\x97\xdd\xd6\x3a\x20\x5d\x27\xf0\x7a\x53\xe2\x9c\x48\x9a\x32\x41\x2c\x46\x07\xc6\xdb\xf3\x8f\xd4\xa9\x71\x21\xeb\x24\xc1\xd9\xf4\xdd\xf3\x36\xd1\xb6\x84\xf0\xad\x05\x06\xa7\xbb\x1d\x24\x19\x26\x0f\x98\xee\x93\x58\x93\x70\xe8\x8f\x29\x04\x1a\x63\x6e\x2a\x77\x8c\x21\x6a\xcc\x0d\xdb\xbe\xdd\x34\x0e\xce\xb0\x2e\x9a\x5a\x18\xe7\xe5\xc3\x63\x3e\x15\xb1\xc9\xe0\x24\x95\xd2\x62\xc8\xbb\x83\xe6\xbc\x52\xe2\x82\x3d\x5a\x79\xb9\xb4\x03\x45\xb2\x31\xae\x0d\xa4\x6a\x84\x80\x57\x45\x8c\xb2\x5b\x16\x93\xb9\x1f\x65\x48\x69\x2c\x0f\x2f\xbf\xd3\x58\x0e\xb3\x7e\xe9\xfc\x81\x32\xa7\x09\x66\x22\x4f\x51\xce\x09\xfa\x4b\xa3\x4d\xfe\x0d\x7d\x3c\x66\x2e\x9a\xca\xc2\x07\xd4\x5c\xa8\x0a\x9a\xe7\xd1\x0d\xe3\xce\x0a\xe3\x3d\x2b\x7d\x1e\x9c\xc0\x0d\x7d\x9c\x44\x33\x1a\x13\xed\xa9\xe3\x12\xdd\xd3\x96\xc4\x4c\x27\x82\x19\x39\x1b\x8a\xcc\x30\x17\xd9\x59\xe4\xe6\x39\xa0\x69\x2a\x51\xa9\xb1\x9e\x1c\xf4\x6e\xc4\xfe\x5b\x29\x56\x2c\x35\xbd\x7a\x45\x73\x96\x8e\xab\xa3\x9e\x6b\x2e\x1c\xbc\xd6\xe4\x7e\xde\x31\x17\x8b\x8d\xa8\x24\xac\x69\x9e\xa3\x06\x9d\x51\x0d\x05\xb5\x93\x69\x65\xa6\x7a\x3b\x10\x39\xb8\x50\x0a\x69\xdb\xbd\x58\xb8\x3d\x85\xe0\xb8\xf1\xe1\x5a\x83\xca\xac\xac\xc5\x08\xc6\x08\x28\x4d\x79\x4a\xa5\x6b\xa8\x54\x4f\xc0\xb2\xf1\x7c\xa6\x8c\x2a\x52\x05\x21\x85\x4c\xe2\x62\x4e\x32\xad\x4b\xf5\x32\x08\x90\xfb\x75\x44\x7d\xa6\x83\x35\x7b\x60\xc1\xb9\x83\x4e\x40\x53\xb9\x44\x3d\x27\x7f\x8e\x73\xca\x1f\x48\x74\x3b\xbb\xfd\xdd\xeb\x93\x91\x0d\x1b\x9e\xd9\xdd\xeb\x13\x33\x3d\x5c\x60\x92\x9d\xcd\xc2\x80\x46\xcf\xfd\x7d\x36\x87\x21\x37\xc9\x9d\xac\x1b\x89\x6f\x2b\x66\xa6\x81\x3a\x25\x12\x75\x25\xb9\x47\x1b\x40\xb6\xae\x34\x3e\xea\x3d\xff\xeb\x70\xfb\x9f\xdb\x95\x7b\xe4\x23\x88\xe3\xc2\x78\x71\xb1\xba\xb8\xb9\x7b\xf5\x47\xa5\xbf\x44\xfd\xf6\xfe\x8a\x7f\x7c\x1e\x7f\x54\x7c\xf4\xe9\xd5\xf2\x57\x8f\x9f\xd1\x37\x5f\xbc\x99\x4d\x9c\x42\xb5\x46\xc9\xe7\xe4\x4f\xcf\xea\x98\xbd\x7c\xfe\x9b\x67\x71\xf2\xe2\xaf\x5f\xbf\x38\xfb\xe6\xf9\xd7\xd4\xfb\xcb\xb9\xf7\xfa\x33\xef\xcd\xad\xf7\xd5\xa9\xf7\xc9\x37\xdb\xd9\xc7\x27\x67\x9f\xec\x9e\x0e\xe8\x34\x6a\xf3\xd0\x4c\x36\x77\x99\x58\xdf\xa3\x2c\xd4\x39\x37\x45\x9f\xb2\xa9\xe6\x60\x88\x6d\x17\x01\xe5\x29\xb4\xcb\x26\xda\xe5\x61\x89\x6a\x42\xed\x62\x6a\x9b\x40\x2c\x1e\x49\xdb\x0e\xea\x1f\x8d\xd2\x2c\x25\xe2\xbd\xb0\x86\x49\xf4\x73\x1e\xab\xf2\xd7\xdd\x96\xd0\x7f\x7f\x6d\x1a\xee\x82\xc9\xc2\xf1\xfc\x7a\x14\x4b\x89\x34\xb5\xf8\xa9\xd9\x67\xc8\xaf\x33\x6c\xe9\x59\xcf\x38\x9f\xa2\x1e\x87\xa3\x37\xee\xd4\x1f\x05\xda\x80\x4c\xd0\xb3\x1b\x22\x1a\xf9\x93\x4d\x69\x2c\x7c\x87\xd3\xf4\xa3\x64\xc8\x45\xea\x27\xaa\x8e\x91\x4a\xc6\x2b\x1b\x1f\x37\x3c\x3b\x3d\x60\xdc\xd5\xbb\xd1\x08\x13\xc4\x35\xba\xfb\xee\x12\x39\x4a\xaa\x8d\x4c\xed\x05\x49\x1b\x78\x6e\x84\x9c\x08\xcd\x48\xa6\xb4\x80\x75\xc6\xea\x11\x2a\xa1\x1c\x14\x4e\xc4\xd4\x80\x18\x3d\xec\xde\x65\x61\x21\x45\xd1\xd5\x3b\xff\x87\x44\x60\x72\x26\x18\x0b\x45\x8d\xf3\xdc\x5c\xee\xbb\x03\x14\x50\x89\xe6\x89\x62\xa9\xbd\x4f\xa4\x82\x53\xf7\xa2\xa6\x56\x4d\x19\xbf\x71\xf5\xc9\x51\x38\xbd\x4e\xee\x42\xdf\x74\xf2\x7d\x56\xfa\x53\x6d\x9f\x40\x61\x60\x32\xd4\x5c\x2e\x87\x77\xc4\xa0\xf3\x81\x6c\xbf\x31\x0c\xdc\x37\xbd\x30\x70\x5f\x02\xff\x1f\x00\x00\xff\xff\x28\xf2\xc5\xf0\x11\x14\x00\x00")
-
-func templateContributeHtmlTmplBytes() ([]byte, error) {
- return bindataRead(
- _templateContributeHtmlTmpl,
- "template/contribute.html.tmpl",
- )
-}
-
-func templateContributeHtmlTmpl() (*asset, error) {
- bytes, err := templateContributeHtmlTmplBytes()
- if err != nil {
- return nil, err
- }
-
- info := bindataFileInfo{name: "template/contribute.html.tmpl", size: 5137, mode: os.FileMode(420), modTime: time.Unix(1663523159, 0)}
- a := &asset{bytes: bytes, info: info}
- return a, nil
-}
-
-var _templateContribute_bitcoinHtmlTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x55\xdb\x6e\xdb\x30\x0c\x7d\xef\x57\x10\x7a\x2c\x66\x7b\x2b\x30\x60\xd8\xe4\x00\x5d\x87\x01\x05\x8a\xb5\xc8\x92\x0f\x50\x2c\xba\xd6\x22\x4b\xae\xc4\x24\x0b\x0c\xff\xfb\x20\x5b\x76\x2f\x6b\x2e\x7e\x8a\x44\xf2\xf8\xf0\xf0\x98\xe1\x15\xd5\x7a\x76\x71\x01\xc0\x2b\x14\x72\x76\x01\x00\xc0\x6b\x24\x01\x15\x51\x93\xe0\xd3\x46\x6d\x73\x76\x63\x0d\xa1\xa1\x64\xb1\x6f\x90\x41\x31\x9c\x72\x46\xf8\x97\xb2\x80\xf0\x0d\x8a\x4a\x38\x8f\x94\x2f\x17\x3f\x93\x2f\xec\x10\x8e\xc3\xd2\xa1\xaf\x5e\x40\x7c\x7e\x95\x6b\x44\x8d\x39\xdb\x2a\xdc\x35\xd6\xd1\x8b\xb4\x9d\x92\x54\xe5\x12\xb7\xaa\xc0\xa4\x3f\x7c\x00\x65\x14\x29\xa1\x13\x5f\x08\x8d\xf9\xa7\xf4\x63\x84\x6a\x5b\x55\x42\xba\x50\xa4\xb1\xeb\xfa\x1b\x00\x4e\xe1\x38\x6b\xdb\xf1\x9e\x67\xc3\x4d\xac\x40\x23\x63\x2e\xd7\xca\xac\xc1\xa1\xce\x99\xa7\xbd\x46\x5f\x21\x12\x03\xda\x37\x18\x1b\x2e\xbc\x67\x50\x39\x2c\x73\xd6\xb6\xe9\xdc\x5a\x5a\xce\xef\xba\x2e\xeb\xd3\xd3\x10\x0d\xa8\x3c\x1b\x04\x0d\x3f\x57\x56\xee\x63\x9b\x52\x6d\x41\xc9\x9c\xc5\xce\x18\x14\x5a\x78\x3f\x9c\x9d\x5a\x6d\x08\x63\x17\x81\x15\x61\xdd\x68\x41\x08\xac\x71\xf6\x0f\x16\x94\x04\x4c\x74\x69\xd0\x3c\xa5\xba\xd1\x0c\xd2\x87\x21\x34\xb5\xfa\x5e\xd9\x4a\x14\xeb\x64\xb5\x21\xb2\xe6\x40\xed\xa8\x53\x2d\x94\x19\x09\x8c\x0f\xf7\x58\x90\xb2\xa6\x27\xde\x88\x7d\x1d\x88\xbf\x4d\x9a\x92\xab\xab\xd9\xc3\x90\x03\x64\xa1\x42\xdd\x40\xb9\x31\x12\x82\x58\xf1\x7d\xe9\x2f\x51\x63\xd7\x31\x9e\x55\x57\x07\x71\x9a\x19\xf7\xe4\xac\x79\x9c\xe0\xe6\x58\xa2\x43\x53\x20\xcf\x62\x04\x02\xe6\x10\x9d\x82\x61\xb6\xcd\x41\xd4\x51\xff\xd8\x46\x22\xa4\x74\x18\x47\xf6\xfe\xd3\xdb\x09\x9f\x60\x7c\xd1\xad\x29\x6d\xfa\x9b\x04\x6d\x3c\x30\x4f\xc2\x11\x4a\x36\xa9\x7f\x10\xe1\x55\xf9\xad\xbf\xde\x09\x45\xca\x3c\xde\x58\x53\x2a\x57\x8b\xa0\xef\x51\x90\x77\x15\x51\x1e\x22\x0e\x94\xd6\x81\x41\xda\x59\xb7\x0e\x9f\xcd\x04\x9a\x02\x2c\x2a\xe5\xa1\xb0\x1b\x2d\x81\xc4\x1a\x41\xc0\xae\x52\x1a\xd3\x49\xc6\x23\x82\x0d\xfc\x51\x7b\x3c\xc5\x4e\xd5\x8f\xa3\x99\x9f\x5c\x61\x25\x32\xf0\xae\xc8\x59\x9a\xb6\xed\x70\xb1\x9c\xdf\x41\xfa\x5d\x51\x61\x95\x59\xce\x6f\xbb\xee\x88\xea\x6f\x1a\x5e\x38\x61\x7c\x89\x0e\xae\x87\x79\x9d\x4b\x3d\x82\x34\xc2\x8c\xdc\xa6\x81\x73\xf1\xfc\x11\xbf\x26\xf5\x6c\xaa\x7e\x58\x73\x2c\x50\x6d\x31\xbe\x39\xd8\x4b\xcc\x78\x16\x30\xcf\x10\x6e\xda\x2b\x87\x85\x85\x23\xfe\x2a\x85\xd2\xa7\xed\x95\x5d\xc2\xe2\xfe\xc7\xfd\x57\xa8\x84\x91\x1a\xa1\x74\xfd\x76\x91\x20\x8c\x04\x87\xc2\x5b\xd3\xfb\x23\x9a\x1e\x02\xea\xc6\x21\x5c\x66\x27\x86\xda\xcb\x07\x6f\x5d\x37\x90\x3a\x6f\x04\xa7\x5b\x6c\x84\x3a\xd1\xe0\x21\x1e\x6e\x18\xcc\xf9\x4c\x8e\x0c\x83\x67\x52\x6d\xff\x5b\x7c\x59\xdc\x7c\x63\x80\x67\xcf\xfb\x71\xaa\xe0\xd9\xb0\xdf\x79\x36\xfc\x99\xfe\x0b\x00\x00\xff\xff\xb0\xc3\x4a\x95\x54\x07\x00\x00")
-
-func templateContribute_bitcoinHtmlTmplBytes() ([]byte, error) {
- return bindataRead(
- _templateContribute_bitcoinHtmlTmpl,
- "template/contribute_bitcoin.html.tmpl",
- )
-}
-
-func templateContribute_bitcoinHtmlTmpl() (*asset, error) {
- bytes, err := templateContribute_bitcoinHtmlTmplBytes()
- if err != nil {
- return nil, err
- }
-
- info := bindataFileInfo{name: "template/contribute_bitcoin.html.tmpl", size: 1876, mode: os.FileMode(420), modTime: time.Unix(1663522890, 0)}
- a := &asset{bytes: bytes, info: info}
- return a, nil
-}
-
-var _templateDocumentationHtmlTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4c\x8f\xc1\x0a\x83\x30\x10\x44\xef\xfd\x8a\x25\xf7\xba\x78\xdf\x78\xea\x8f\xa4\xc9\x96\x84\x46\x23\xee\x56\x2a\xe2\xbf\x17\x35\x42\x6f\xc3\xce\xcc\x1b\x96\xa2\xf6\xb9\xbb\x01\x50\x64\x17\x76\x01\x40\x39\x0d\x6f\x98\x38\x5b\x23\xba\x64\x96\xc8\xac\x06\x74\x19\xd9\x1a\xe5\xaf\xa2\x17\x31\x10\x27\x7e\x59\x83\x47\xa4\xd9\x2f\x07\x06\x2f\x0e\x3d\x4b\x58\x2a\x30\xa4\x19\x7c\x76\x22\xd6\x68\x19\xef\x32\x3a\xcf\xe6\xf4\xf6\xe5\xb6\x7b\x14\xff\xe9\x79\x50\xa7\xa9\x0c\x84\xb1\xad\x45\x0c\x69\xae\xd2\x4d\x9a\x7c\xe6\xab\xb5\xae\xcd\xb6\xd5\xd0\x9f\x45\x78\xce\x12\x9e\x8f\xfd\x02\x00\x00\xff\xff\x2b\x17\x2c\x42\xe0\x00\x00\x00")
-
-func templateDocumentationHtmlTmplBytes() ([]byte, error) {
- return bindataRead(
- _templateDocumentationHtmlTmpl,
- "template/documentation.html.tmpl",
- )
-}
-
-func templateDocumentationHtmlTmpl() (*asset, error) {
- bytes, err := templateDocumentationHtmlTmplBytes()
- if err != nil {
- return nil, err
- }
-
- info := bindataFileInfo{name: "template/documentation.html.tmpl", size: 224, mode: os.FileMode(420), modTime: time.Unix(1663522890, 0)}
- a := &asset{bytes: bytes, info: info}
- return a, nil
-}
-
-var _templateHeaderHtmlTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4c\x90\xc1\x4e\x84\x30\x10\x86\xef\x3c\xc5\xa4\x67\x01\xbd\x99\xd8\x72\x31\xf1\xe4\x69\xc3\x3e\x40\x53\xfe\x4d\x27\x96\x82\x74\x64\x25\x0d\xef\x6e\xb6\x68\xdc\xe3\xf7\xcf\x37\x7f\x26\xa3\x3d\xec\xd0\x55\x44\x7a\x84\x58\xf2\x22\x73\x8d\xcf\x2f\x5e\x8d\x7a\x9d\xa2\x20\x4a\xdd\x6f\x33\x14\xb9\x83\x8c\x12\x7c\x4b\xeb\x65\x0c\x2f\xe4\xbc\x5d\x12\xc4\x9c\xfb\xb7\xfa\x59\xfd\xb7\x44\x3b\xc2\xa8\x95\x71\x9d\xa7\x45\xee\x76\xaf\x3c\x88\x37\x03\x56\x76\xa8\x0b\x3c\x10\x47\x16\xb6\xa1\x4e\xce\x06\x98\xa7\xe6\xb1\x14\xe5\xcc\x17\x6a\x7a\x96\x80\x7d\xaf\x88\x88\xb4\xdc\xa0\xcb\xf9\x2f\xd5\xed\x91\x14\x1b\x71\x28\x9e\x0e\x1c\x3f\x68\x41\x30\x2a\xc9\x16\x90\x3c\x20\x8a\x64\x9b\xf1\x7b\xba\x4b\x49\x91\x5f\x70\x31\x2a\xe7\xe6\x34\x4d\x72\x3e\xbd\xef\x7b\x5b\xf4\xe6\x36\xed\x2a\xdd\x1e\x6f\xf9\x09\x00\x00\xff\xff\x72\x3f\x92\x86\x1e\x01\x00\x00")
-
-func templateHeaderHtmlTmplBytes() ([]byte, error) {
- return bindataRead(
- _templateHeaderHtmlTmpl,
- "template/header.html.tmpl",
- )
-}
-
-func templateHeaderHtmlTmpl() (*asset, error) {
- bytes, err := templateHeaderHtmlTmplBytes()
- if err != nil {
- return nil, err
- }
-
- info := bindataFileInfo{name: "template/header.html.tmpl", size: 286, mode: os.FileMode(420), modTime: time.Unix(1663522890, 0)}
- a := &asset{bytes: bytes, info: info}
- return a, nil
-}
-
-var _templateObjectiveHtmlTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4c\x90\xc1\x8a\xc4\x20\x10\x44\xef\xfb\x15\x8d\xf7\x55\x72\xd7\x9c\xf6\xbc\xff\xe0\x6a\x2f\xca\x98\x44\xec\x26\x4c\x10\xff\x7d\x48\x74\x98\x80\x87\xc2\xaa\xee\x7a\xb4\x0e\xbc\xa4\xf9\x0b\x40\x07\xb4\x1e\xcb\x29\x01\x34\x47\x4e\x38\xd7\x2a\x7f\xed\x82\xad\x69\xd5\x3f\xba\x99\xe2\xfa\x80\x82\xc9\x08\xe2\x23\x21\x05\x44\x16\xc0\x47\x46\x23\x18\x9f\xac\x1c\x91\x80\x50\xf0\xdf\x08\x29\x55\x7f\x57\x54\x9e\xce\xd5\xa6\x3e\x75\xfa\x6f\xf3\xc7\x58\xed\xe3\x0e\x2e\x59\x22\x23\x78\xcb\xdf\x94\xad\x43\xd1\xbd\x13\x71\xba\x23\x85\x69\x0c\x29\x1f\xf7\x21\x6d\xe1\xe8\xde\xa0\x00\xb5\xca\x1f\x24\x57\x62\xe6\xb8\xad\xad\x8d\xfc\x2d\xa5\x55\x6f\xd7\xaa\x1f\xe2\x15\x00\x00\xff\xff\x85\x6b\x7c\xbd\x10\x01\x00\x00")
-
-func templateObjectiveHtmlTmplBytes() ([]byte, error) {
- return bindataRead(
- _templateObjectiveHtmlTmpl,
- "template/objective.html.tmpl",
- )
-}
-
-func templateObjectiveHtmlTmpl() (*asset, error) {
- bytes, err := templateObjectiveHtmlTmplBytes()
- if err != nil {
- return nil, err
- }
-
- info := bindataFileInfo{name: "template/objective.html.tmpl", size: 272, mode: os.FileMode(420), modTime: time.Unix(1663522890, 0)}
- a := &asset{bytes: bytes, info: info}
- return a, nil
-}
-
-var _templateProjectBackButtonHtmlTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4c\xce\xb1\x0d\xc2\x30\x10\x05\xd0\x3e\x53\x7c\x5d\x0f\x5e\xe0\xe2\x82\x86\x0e\xb1\xc2\x61\x5d\x44\xe0\x20\x91\x7d\xa6\x89\x52\xb2\x0d\x53\x31\x09\x22\x02\x29\xdd\xd7\xfb\xc5\xff\x7c\x97\x47\x6c\x00\xae\x86\x64\x52\x4a\x4b\x2e\xa7\x42\x5f\x03\xd8\xfa\x95\x02\x63\x35\xdb\x98\x76\x4e\xf1\xfd\x7a\xb2\xe0\x9c\xb5\x6b\x69\x9a\x6a\x36\xd0\x5e\xfd\x98\x87\x8b\x26\x27\xd0\xf8\x4f\xdb\x83\xdc\x74\x9e\x29\xee\x24\x5d\xe1\x03\x7e\x0d\x07\x89\x1c\xac\x5f\xd6\x43\xb5\xd8\x70\x58\xce\x7c\x02\x00\x00\xff\xff\x1d\x89\x15\xea\x93\x00\x00\x00")
-
-func templateProjectBackButtonHtmlTmplBytes() ([]byte, error) {
- return bindataRead(
- _templateProjectBackButtonHtmlTmpl,
- "template/project-back-button.html.tmpl",
- )
-}
-
-func templateProjectBackButtonHtmlTmpl() (*asset, error) {
- bytes, err := templateProjectBackButtonHtmlTmplBytes()
- if err != nil {
- return nil, err
- }
-
- info := bindataFileInfo{name: "template/project-back-button.html.tmpl", size: 147, mode: os.FileMode(420), modTime: time.Unix(1663522890, 0)}
- a := &asset{bytes: bytes, info: info}
- return a, nil
-}
-
-var _templateProjectContributionsHtmlTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x92\xc1\x8a\xdb\x30\x10\x86\xef\x7e\x8a\x41\xe7\x46\x72\x4b\xd3\x43\x98\x1a\x4a\xa0\x87\x42\x48\x21\x79\x01\xc5\x9a\x4d\xb4\xc8\x92\x91\xc7\x81\x20\xfc\xee\x8b\xb0\x93\x38\xc9\xee\xd1\xbf\x3f\xcd\xfc\xf3\xcf\xe0\x89\x1b\x57\x15\x45\x4a\x4c\x4d\xeb\x34\x13\x88\x13\x69\x43\x51\xe6\x3f\x92\x9b\xd6\x09\x90\xc3\x50\x14\x78\x08\xe6\x52\x15\x00\x68\xec\x19\xac\xf9\x2d\xea\xe0\x99\x3c\x8b\x2c\x02\xcc\x4b\xb4\x31\xbc\x53\xcd\x8b\xcf\x4b\x7d\x45\x37\xe4\xfb\x97\xb6\x19\xc6\x46\x5b\x3f\x76\x01\xc0\x8e\x6a\xb6\xc1\xdf\x2c\x44\x7b\xe8\xb3\xd0\x89\x2b\x02\x80\xbd\xbb\x7f\xe4\x6e\x51\xfb\x23\x81\x5c\xcf\xf9\xc9\xca\xf4\xc2\x59\xa8\x9d\xee\xba\xc7\xa2\x62\x5e\x66\x9a\x7d\xc2\xc6\xe1\x9e\x00\x00\x6c\xaf\x00\x5b\x76\x24\x2a\xec\x5a\xed\xaf\x9a\x6e\x42\x9f\x23\x4b\x49\xee\x03\x6b\x27\xff\x47\x62\xbe\xec\x38\x5a\x7f\x1c\x06\x54\x19\xae\xe0\x66\x81\x0c\xbc\x85\x08\x22\x25\xb9\x3d\xe4\x94\xec\x99\x86\x41\xa0\x6a\x5f\xfa\xce\xac\x19\xcd\x24\xaa\xad\x87\x94\xe4\x3a\x92\x66\x32\x7f\x58\xfe\x0d\xb1\xd1\x0c\x62\x13\xbc\xd1\x97\x6f\x50\xfe\x58\xfc\xd3\x7e\x51\xfe\x82\xef\xcb\x55\xf9\x73\x55\x2e\x61\xb3\xdb\x8b\xec\xc2\xd8\xf3\xd3\xe0\xcf\x12\x2a\x67\x1f\x23\x26\x6f\x66\x89\xa2\xba\xaf\x00\xd5\xb4\xb3\x51\x40\x35\xee\xb3\x40\x35\xde\x54\x81\x6a\xbc\xc3\x8f\x00\x00\x00\xff\xff\x99\x58\x1b\x7a\x8f\x02\x00\x00")
-
-func templateProjectContributionsHtmlTmplBytes() ([]byte, error) {
- return bindataRead(
- _templateProjectContributionsHtmlTmpl,
- "template/project-contributions.html.tmpl",
- )
-}
-
-func templateProjectContributionsHtmlTmpl() (*asset, error) {
- bytes, err := templateProjectContributionsHtmlTmplBytes()
- if err != nil {
- return nil, err
- }
-
- info := bindataFileInfo{name: "template/project-contributions.html.tmpl", size: 655, mode: os.FileMode(420), modTime: time.Unix(1663522890, 0)}
- a := &asset{bytes: bytes, info: info}
- return a, nil
-}
-
-var _templateProjectHeaderHtmlTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4c\x90\x3d\x4e\x03\x31\x10\x85\xfb\x9c\x62\x34\x05\xe5\x5a\x69\xc1\x71\x85\x04\x15\xa2\xa0\xa1\x42\x5e\x67\x76\x6d\x30\xb6\x35\x9e\x15\x42\xab\x70\x02\x0a\x6e\xc0\x15\x39\x02\x72\x36\x1b\xe8\x9e\x7f\xde\x7b\xdf\x8c\xf6\x64\xf7\xc4\x66\x03\xa0\x8b\x79\xcc\x13\x58\x26\xc8\x09\xc4\x13\x68\x0b\x9e\x69\xd8\xa1\x17\x29\xf5\x52\xa9\x31\x48\x57\xb9\xf3\xa2\x3e\xdc\x7b\xf1\xc4\x6a\x98\xd2\x3e\xa4\x11\x41\x2c\x8f\x24\x3b\x7c\xea\xa3\x4d\x2f\x68\x4e\x0f\x50\xec\x48\x5a\x59\x03\x92\xc1\xe5\x18\xc9\x09\xb8\x9c\x84\x43\x3f\x49\xc8\xa9\xc2\x90\x59\xab\x72\x24\xf0\x5b\x70\xd1\xd6\xba\x43\x09\x12\x09\xcd\x99\x60\x9e\x27\x8e\x80\x37\x24\xf7\x9c\x9f\xc9\x09\x02\x96\x55\x75\x77\xf6\x95\x0e\x07\x34\xf3\x2c\xf9\xa1\x39\xd7\xab\xd6\xac\x95\xdf\xb6\xf4\x8b\xd4\xd7\x72\x75\x1c\x74\x6d\xd9\x53\x75\x1c\x4a\xe3\x68\xe6\xee\xfa\xef\xdc\xbc\x0b\xd4\xf9\xf7\x1b\xf5\x35\x08\xa1\xf9\xf9\xfe\xfc\x5a\xd2\xfe\xf1\x75\xb7\x79\x85\x38\xc9\xa5\xbc\x98\x8d\x56\xeb\x96\x7f\x03\x00\x00\xff\xff\x6a\x66\x29\x1f\x6f\x01\x00\x00")
-
-func templateProjectHeaderHtmlTmplBytes() ([]byte, error) {
- return bindataRead(
- _templateProjectHeaderHtmlTmpl,
- "template/project-header.html.tmpl",
- )
-}
-
-func templateProjectHeaderHtmlTmpl() (*asset, error) {
- bytes, err := templateProjectHeaderHtmlTmplBytes()
- if err != nil {
- return nil, err
- }
-
- info := bindataFileInfo{name: "template/project-header.html.tmpl", size: 367, mode: os.FileMode(420), modTime: time.Unix(1663522890, 0)}
- a := &asset{bytes: bytes, info: info}
- return a, nil
-}
-
-var _templateProjectMenuHtmlTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x93\x4f\x4a\xf4\x30\x18\xc6\xf7\x73\x8a\x97\x1c\xa0\xbd\x40\x26\xf0\xf1\x2d\xdc\xc8\x20\xa3\x73\x80\xb4\x7d\x07\x2b\x31\xa9\xc9\x1b\x5d\x84\x9c\xc0\xa5\x3b\x41\x04\xf1\x80\x1e\x41\x92\xb6\xd2\x91\x8e\x15\xc6\x65\xde\x3f\x4f\x9e\xdf\x13\xc2\xb5\xbc\x17\x2b\x00\xee\x15\xd4\x4a\x3a\xb7\x66\x24\x2b\xc7\x52\x0d\x80\xab\x76\xa8\x86\xd0\xee\x01\xef\xa0\xb8\x44\x85\x35\x61\x03\xec\x5f\x65\x3c\xb1\x18\xd3\x02\xd4\xde\x5a\xd4\xc4\x42\x40\xe5\xb0\x2f\xa6\x83\x6e\x62\x14\x5c\xc2\xb5\xc5\xfd\x9a\x85\x50\x6c\x8d\xa1\xdd\xf6\x3c\xc6\x10\xbc\x55\xa3\x0a\xb0\xce\x9a\x1b\xac\x89\x41\xb1\x91\xb7\x49\x40\x7c\xbc\x3e\x3d\x43\x6e\xf3\x52\x0a\xe0\xa5\x6a\x7b\x57\xd9\x4b\x71\x65\x48\xaa\xff\x46\x93\x6d\x2b\x4f\xad\xd1\x2e\xc6\xdc\x5e\xb0\x7d\xd1\x5f\x74\xb0\x79\x32\xc5\xac\xe8\x3c\xd4\xfb\x0b\x1c\x8c\x01\x77\x9d\xd4\x63\xf8\xb5\xf1\x9a\xd0\x32\x11\xc2\x2c\x21\x2f\xd3\xb4\x48\x89\x4c\x03\xc9\x0e\xbf\x87\xb3\xeb\x1a\x49\x38\xc6\xf2\x9b\x50\x86\x8d\xbf\x8a\x63\x94\x3b\xf2\xba\x6f\xb0\xc1\x87\x25\xfe\x2f\x88\x45\xf2\x1f\x01\xcf\x90\x06\x53\x27\xc3\x4d\xa4\x8e\x80\x3d\xc2\x30\x30\x35\xcb\x4b\xaf\xc4\x8a\x97\xf9\xc3\x7d\x06\x00\x00\xff\xff\x7f\x65\x8a\x54\x77\x03\x00\x00")
-
-func templateProjectMenuHtmlTmplBytes() ([]byte, error) {
- return bindataRead(
- _templateProjectMenuHtmlTmpl,
- "template/project-menu.html.tmpl",
- )
-}
-
-func templateProjectMenuHtmlTmpl() (*asset, error) {
- bytes, err := templateProjectMenuHtmlTmplBytes()
- if err != nil {
- return nil, err
- }
-
- info := bindataFileInfo{name: "template/project-menu.html.tmpl", size: 887, mode: os.FileMode(420), modTime: time.Unix(1663522890, 0)}
- a := &asset{bytes: bytes, info: info}
- return a, nil
-}
-
-var _templateProjectUpdatesHtmlTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x52\xcd\x6a\xe3\x30\x10\xbe\xfb\x29\x06\xed\x35\x91\xbd\x61\xb3\x87\xa0\x18\xb2\x0b\x3d\x14\x02\x85\xa6\x0f\xa0\x58\xd3\x5a\x45\x96\x8c\x3c\x0e\x18\xe1\x77\x2f\xb6\xec\xc6\x49\xdb\x9b\xd0\xf7\xab\xd1\x88\x92\x2a\x93\x27\x49\x08\x84\x55\x6d\x24\x21\xb0\x12\xa5\x42\xcf\x07\x84\x53\x55\x1b\x06\xbc\xef\x93\x44\x9c\x9d\xea\xf2\x04\x40\x28\x7d\x01\xad\xf6\xac\x70\x96\xd0\x12\x1b\x2e\x01\x96\x16\xb5\x77\xef\x58\xd0\xfa\x7b\xab\x9f\xd8\x15\xda\xf6\x4b\xec\x40\x16\x95\xd4\x36\xa6\x00\x88\x06\x0b\xd2\xce\x8e\x15\xda\x5a\x49\xc2\x86\xcd\xe0\x60\xec\xa5\x7d\x43\xe0\x2f\x11\x9a\xf2\x46\xa5\xf4\xa4\x0b\x83\x50\x18\xd9\x34\xb3\x78\xa1\x9d\xde\x36\xc1\xb1\x3c\x1b\x73\x42\xe0\x27\x4d\x06\xfb\xfe\x86\x0e\x20\xca\xcd\xcc\xa7\x81\xc0\x72\x21\xa1\xf4\xf8\xba\x67\xbf\x96\xa2\xeb\x59\xa4\x32\x17\x69\xb9\xb9\xf3\x59\x04\xc7\x56\x4f\xed\xd9\xe8\xa6\x44\x05\xce\x42\x08\xfc\xbf\x47\x49\xa8\x0e\xc4\x1f\x9c\xaf\x24\x01\x3b\x3a\xab\x64\xb7\x82\x6c\xb3\x7e\x94\x76\x9d\xfd\x85\xdf\xdb\x5d\xf6\x67\x97\x6d\xe1\xf8\x7c\x62\x7d\xbf\x82\x73\x07\xd7\x3e\x63\x8b\x43\x4b\xa5\xf3\x73\x0d\xa5\x2f\x37\xcf\xbf\xbf\x08\x81\xff\x73\xaa\x5b\x0e\x31\x9d\xa6\xb8\x1c\x39\x5a\xf5\x49\x11\xe9\xf4\x41\x91\x20\xd2\xf9\xf3\x26\x73\x91\xc6\x45\x4a\x44\x1a\x97\xef\x23\x00\x00\xff\xff\x2b\x39\xaf\x24\x84\x02\x00\x00")
-
-func templateProjectUpdatesHtmlTmplBytes() ([]byte, error) {
- return bindataRead(
- _templateProjectUpdatesHtmlTmpl,
- "template/project-updates.html.tmpl",
- )
-}
-
-func templateProjectUpdatesHtmlTmpl() (*asset, error) {
- bytes, err := templateProjectUpdatesHtmlTmplBytes()
- if err != nil {
- return nil, err
- }
-
- info := bindataFileInfo{name: "template/project-updates.html.tmpl", size: 644, mode: os.FileMode(420), modTime: time.Unix(1663522890, 0)}
- a := &asset{bytes: bytes, info: info}
- return a, nil
-}
-
-var _templateProjectHtmlTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x57\xcd\x6e\xdc\x36\x17\xdd\xcf\x53\x5c\x30\xdf\x87\x6e\xa2\x1f\x3b\x4d\x16\x06\xad\xc2\x70\x1b\xd4\x85\xdd\x18\x63\xa7\x8b\xee\x38\xd2\xb5\xc5\x44\x22\x05\xf2\xca\xb1\x21\x68\x9b\x65\x8b\xa2\xdd\x77\xdd\x4d\xfb\x4e\x7d\x82\x3e\x42\x41\x49\x33\xa3\xbf\x49\x8d\xa0\x99\xce\x6a\x40\x1e\xf2\xde\x7b\xee\x21\x79\xc4\x53\xca\xb3\x68\xb1\xa8\x2a\xc2\xbc\xc8\x04\x21\xb0\x14\x45\x82\xc6\x77\x33\x3e\xe5\x45\xc6\xc0\xaf\xeb\xc5\x82\xaf\x74\xf2\x10\x2d\x00\x78\x22\xef\x40\x26\xc7\x2c\xd6\x8a\x50\x11\x73\x83\x00\xfd\x2d\x0a\xa3\xdf\x60\x4c\xde\xfc\x56\xbb\xd0\x39\xaa\x72\x12\xd6\x81\x79\x2e\xa4\x6a\xa3\x00\x70\x8b\x31\x49\xad\x9a\x14\x6e\x4a\x95\x48\x75\xeb\xdd\x6a\x91\x59\xb6\x86\x00\xf0\x32\x83\x38\x13\xd6\x1e\xb3\xf1\x94\x8b\x0d\xff\xeb\x62\xc2\xd1\x31\xf8\xd0\xe5\xb4\x9d\x35\x5a\xd3\xeb\xe5\x79\x33\xbb\xec\xfe\x8f\x40\x46\xa8\x5b\x04\xff\xd5\xca\x6d\x23\xef\xd0\x0e\xe6\x79\x26\xfb\xf1\x21\x16\x26\x19\xe4\x00\xc0\x8b\x35\x82\x24\x65\xc8\xa2\xaa\x22\x7d\xed\xfe\x82\xff\xad\xc8\xb1\xae\x79\x50\xec\x5a\x92\xa0\x8d\x8d\x2c\x1c\x0f\x6e\xa1\x7f\x95\x6a\x43\x5f\x6e\x07\xe7\x16\x6f\x29\xb1\x24\xc8\x8e\xd2\x71\x35\xc9\x1b\xf0\xcf\xec\xa9\xd1\xef\x92\x0b\x41\x71\x8a\xc9\xa0\xa8\x51\x61\x6e\x17\x16\xfd\xf5\xeb\x0f\x7f\xc0\x89\x7d\x2b\xd5\x2d\x54\x95\x7f\x21\x95\xcc\xcb\xfc\x5c\xe6\x92\xfc\x4b\x83\x44\x0f\x57\x64\xa4\xba\xad\x6b\x20\xed\x10\x2f\xdb\x96\xcd\x21\x46\xb1\x5c\xaf\x0b\xa1\x36\x34\x69\x9d\x91\x2c\x58\xf4\xc5\x04\x37\x8f\xf4\x08\xef\x69\x52\x66\xfb\xfb\x5a\xbf\x83\xbc\x8c\x53\x90\x16\x56\xe8\x92\x17\xf6\x2d\x26\x70\xa3\x8d\xcb\xd3\x92\x30\x04\x94\x22\xe8\x75\x83\xfd\xb9\xa8\x81\x0b\x3b\x8d\x30\x3f\xce\x83\x4c\x4e\x49\x47\xf5\x28\x96\x7f\xf9\x1d\x96\x42\x5a\x4c\x1c\x87\xd7\x9a\x44\xb6\xab\x45\x9f\x92\xb6\x26\x30\x28\xad\x3c\x83\xee\xec\x61\x02\x77\x22\x2b\x11\x4c\x9b\xdb\x8d\xd1\x39\x88\x2c\x03\x77\x37\x18\xb9\x2a\x9d\x18\xed\xa7\xa2\xee\x11\x7a\x9d\xe1\xf2\xcf\xf7\xbf\xc1\x12\xbb\x9b\x63\xc3\xe6\xb2\xab\xe7\x12\x4d\xbc\x5f\x4a\x53\x84\xb8\x34\x06\x15\x41\x4b\x2a\x88\x5c\x97\x8a\x1a\x2d\x16\x06\xef\xa4\x2e\xed\x3e\x08\x9d\x51\xdd\x4f\x3f\xc2\x59\x5e\x88\x98\x1c\x4f\xed\xbf\xff\x84\x20\x85\xf7\x34\xa0\xe0\x33\x0b\x79\x7b\xd5\x0c\xd5\x18\xeb\x2c\x6b\xcf\x6b\x2b\xcc\x7d\x9e\xda\x46\x90\x4a\x13\xf8\x5f\xdd\x17\xd2\xa0\x3d\x21\xff\xcc\x7e\x8f\x46\xc3\x63\x4e\xf8\xcf\xef\xa1\x5b\xe7\xc8\xde\x6e\xf1\x52\x9b\x5c\x10\xb0\xc3\x30\x7c\xe1\x85\x07\x5e\x78\xc8\xf6\xca\xff\xc9\xf8\x38\x83\x30\x08\x07\x61\xf8\x7f\xd8\xd0\xae\x15\x50\x2a\x2d\x24\xee\x41\xef\x58\x10\x71\x8c\x05\x61\xb2\xbf\x16\xf0\xa0\xcc\x46\x8f\x9e\xf3\x2a\x5d\xa9\x9b\x1a\xd0\x5b\x95\x44\xee\xe5\xe4\x02\x52\x83\x37\xc7\xac\xaa\xd6\x6f\x7e\x5d\x57\x55\x69\x32\x60\xa7\x1b\x38\xdb\x58\x14\xb6\x31\x0e\xcd\x13\x0d\x4c\xaf\xde\x7c\x87\xc6\xba\x67\x18\xfc\xee\x9f\xbf\x7e\xce\x58\x74\xa1\x0d\xf2\x40\x44\x3c\x48\xe4\x5d\x3f\xb3\x61\x45\xe3\x5a\xfa\x75\xf0\xa0\xf3\x3b\xd1\x62\xb1\x46\xbb\x7b\xef\x75\xe1\xb8\xb6\x5b\x65\x0d\x7c\x91\x33\x56\x96\xbc\xb2\x05\xf5\x8d\x51\x8c\x8a\xd0\x44\x3c\x3d\x8c\xce\x1b\x10\x74\x20\x1e\xa4\x87\x11\x0f\xba\xf9\x39\x27\x35\xdd\xad\x67\x84\xba\x7c\x76\xb9\xa0\x76\xed\xd8\x02\xf5\xba\xd3\x5a\xc5\x89\x04\x79\xfa\x6c\xa7\x4d\x1a\xf4\xc2\x39\x9e\xf4\xd9\x64\x79\x2f\x42\x9b\xc0\x65\xb9\xca\xa4\x4d\x5b\xcd\x56\x95\x7f\x6a\x50\x10\x26\xbd\x73\x76\xa1\x55\x22\x1e\x9e\x42\x78\xe8\x7d\x23\x94\x17\xbe\x80\x83\xe7\x47\xe1\xe7\x47\xe1\x73\xb8\xb8\xba\x66\x75\xfd\x14\x56\x0f\xb0\x91\xce\x93\xc6\x80\x9d\x94\x94\x6a\xe3\x92\x98\xe9\xb6\xeb\xe2\x74\xa8\xe8\x0b\x73\xeb\xa3\x7b\x88\xad\x3a\x1b\x45\x5e\xb6\xe5\x76\x4c\xef\x54\x65\x5d\x3f\xa9\xaa\xd1\x08\x8b\x96\x28\x12\xc8\x3b\x3d\x8e\x72\x2b\x76\x4b\xf3\xd1\xe2\x1c\x82\x07\x52\x3d\x1d\x5c\x1e\x1f\x14\xec\xe0\x9e\xf9\xb0\x6c\x07\xd0\x7f\x16\xef\xae\x9d\x7b\x12\x1e\xe4\xb9\x4b\xc8\xfd\x7d\x3e\x42\xce\x63\xd3\x3f\xb8\x8c\xdb\x77\xbf\xd1\x53\xe3\x49\x46\xf6\xb8\xbb\x1c\xb7\x95\x77\x7e\x95\x55\xd5\xf6\x3b\xa4\xae\xd9\xc4\xfa\xcf\x9d\x83\x57\x1f\xab\xfe\xc7\xa8\xfb\x5f\xd1\x50\x3b\xb9\xfe\xf4\xeb\x62\xf0\xa0\xfd\x0c\xe5\x41\xfb\xe5\xfa\x77\x00\x00\x00\xff\xff\x80\x23\x6f\xf2\xc1\x0e\x00\x00")
-
-func templateProjectHtmlTmplBytes() ([]byte, error) {
- return bindataRead(
- _templateProjectHtmlTmpl,
- "template/project.html.tmpl",
- )
-}
-
-func templateProjectHtmlTmpl() (*asset, error) {
- bytes, err := templateProjectHtmlTmplBytes()
- if err != nil {
- return nil, err
- }
-
- info := bindataFileInfo{name: "template/project.html.tmpl", size: 3777, mode: os.FileMode(420), modTime: time.Unix(1663522890, 0)}
- a := &asset{bytes: bytes, info: info}
- return a, nil
-}
-
-var _templateServiceAgreementHtmlTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x8f\x4b\xaa\xc3\x30\x0c\x45\xe7\x5e\x85\xf0\xfc\xd9\x1b\xd0\x0b\x94\x6e\xa1\x1b\x70\x23\x41\x54\xfc\xc3\x11\x81\x12\xbc\xf7\x62\x4c\xa1\x1d\x74\x28\xe9\xe8\x70\x2f\x6e\x9a\xe2\x62\xcc\x79\x2a\xa7\x1a\x83\x32\xd8\x8d\x03\x71\x73\xe3\xe2\x34\xd5\x68\xc1\xf5\x6e\x0c\xde\x0b\x3d\x17\x03\x80\x24\x07\x08\xfd\xdb\xb5\x64\xe5\xac\x76\x2c\x01\x3e\x15\xb5\x95\x07\xaf\xfa\xf7\x43\x35\x70\x4c\x41\xf2\xfc\xc4\xd0\x54\xd6\xc8\x73\x1a\x26\x77\xe3\x96\xf6\x4b\xa6\x6b\xc9\x24\x2a\x25\xef\xbd\x4f\xd6\x7f\xc1\xe8\xdf\x1a\xf4\x24\xc7\x62\xd0\xcf\x98\xe8\x67\xb3\x57\x00\x00\x00\xff\xff\x78\x9e\x95\xd1\xe1\x00\x00\x00")
-
-func templateServiceAgreementHtmlTmplBytes() ([]byte, error) {
- return bindataRead(
- _templateServiceAgreementHtmlTmpl,
- "template/service-agreement.html.tmpl",
- )
-}
-
-func templateServiceAgreementHtmlTmpl() (*asset, error) {
- bytes, err := templateServiceAgreementHtmlTmplBytes()
- if err != nil {
- return nil, err
- }
-
- info := bindataFileInfo{name: "template/service-agreement.html.tmpl", size: 225, mode: os.FileMode(420), modTime: time.Unix(1663522890, 0)}
- a := &asset{bytes: bytes, info: info}
- return a, nil
-}
-
-// Asset loads and returns the asset for the given name.
-// It returns an error if the asset could not be found or
-// could not be loaded.
-func Asset(name string) ([]byte, error) {
- canonicalName := strings.Replace(name, "\\", "/", -1)
- if f, ok := _bindata[canonicalName]; ok {
- a, err := f()
- if err != nil {
- return nil, fmt.Errorf("Asset %s can't read by error: %v", name, err)
- }
- return a.bytes, nil
- }
- return nil, fmt.Errorf("Asset %s not found", name)
-}
-
-// MustAsset is like Asset but panics when Asset would return an error.
-// It simplifies safe initialization of global variables.
-func MustAsset(name string) []byte {
- a, err := Asset(name)
- if err != nil {
- panic("asset: Asset(" + name + "): " + err.Error())
- }
-
- return a
-}
-
-// AssetInfo loads and returns the asset info for the given name.
-// It returns an error if the asset could not be found or
-// could not be loaded.
-func AssetInfo(name string) (os.FileInfo, error) {
- canonicalName := strings.Replace(name, "\\", "/", -1)
- if f, ok := _bindata[canonicalName]; ok {
- a, err := f()
- if err != nil {
- return nil, fmt.Errorf("AssetInfo %s can't read by error: %v", name, err)
- }
- return a.info, nil
- }
- return nil, fmt.Errorf("AssetInfo %s not found", name)
-}
-
-// AssetNames returns the names of the assets.
-func AssetNames() []string {
- names := make([]string, 0, len(_bindata))
- for name := range _bindata {
- names = append(names, name)
- }
- return names
-}
-
-// _bindata is a table, holding each asset generator, mapped to its name.
-var _bindata = map[string]func() (*asset, error){
- "static/documentation.html": staticDocumentationHtml,
- "static/index.html": staticIndexHtml,
- "static/service-agreement.html": staticServiceAgreementHtml,
- "static/service-agreement.md": staticServiceAgreementMd,
- "static/style.css": staticStyleCss,
- "template/about.html.tmpl": templateAboutHtmlTmpl,
- "template/contribute.html.tmpl": templateContributeHtmlTmpl,
- "template/contribute_bitcoin.html.tmpl": templateContribute_bitcoinHtmlTmpl,
- "template/documentation.html.tmpl": templateDocumentationHtmlTmpl,
- "template/header.html.tmpl": templateHeaderHtmlTmpl,
- "template/objective.html.tmpl": templateObjectiveHtmlTmpl,
- "template/project-back-button.html.tmpl": templateProjectBackButtonHtmlTmpl,
- "template/project-contributions.html.tmpl": templateProjectContributionsHtmlTmpl,
- "template/project-header.html.tmpl": templateProjectHeaderHtmlTmpl,
- "template/project-menu.html.tmpl": templateProjectMenuHtmlTmpl,
- "template/project-updates.html.tmpl": templateProjectUpdatesHtmlTmpl,
- "template/project.html.tmpl": templateProjectHtmlTmpl,
- "template/service-agreement.html.tmpl": templateServiceAgreementHtmlTmpl,
-}
-
-// AssetDir returns the file names below a certain
-// directory embedded in the file by go-bindata.
-// For example if you run go-bindata on data/... and data contains the
-// following hierarchy:
-// data/
-// foo.txt
-// img/
-// a.png
-// b.png
-// then AssetDir("data") would return []string{"foo.txt", "img"}
-// AssetDir("data/img") would return []string{"a.png", "b.png"}
-// AssetDir("foo.txt") and AssetDir("nonexistent") would return an error
-// AssetDir("") will return []string{"data"}.
-func AssetDir(name string) ([]string, error) {
- node := _bintree
- if len(name) != 0 {
- canonicalName := strings.Replace(name, "\\", "/", -1)
- pathList := strings.Split(canonicalName, "/")
- for _, p := range pathList {
- node = node.Children[p]
- if node == nil {
- return nil, fmt.Errorf("Asset %s not found", name)
- }
- }
- }
- if node.Func != nil {
- return nil, fmt.Errorf("Asset %s not found", name)
- }
- rv := make([]string, 0, len(node.Children))
- for childName := range node.Children {
- rv = append(rv, childName)
- }
- return rv, nil
-}
-
-type bintree struct {
- Func func() (*asset, error)
- Children map[string]*bintree
-}
-
-var _bintree = &bintree{nil, map[string]*bintree{
- "static": &bintree{nil, map[string]*bintree{
- "documentation.html": &bintree{staticDocumentationHtml, map[string]*bintree{}},
- "index.html": &bintree{staticIndexHtml, map[string]*bintree{}},
- "service-agreement.html": &bintree{staticServiceAgreementHtml, map[string]*bintree{}},
- "service-agreement.md": &bintree{staticServiceAgreementMd, map[string]*bintree{}},
- "style.css": &bintree{staticStyleCss, map[string]*bintree{}},
- }},
- "template": &bintree{nil, map[string]*bintree{
- "about.html.tmpl": &bintree{templateAboutHtmlTmpl, map[string]*bintree{}},
- "contribute.html.tmpl": &bintree{templateContributeHtmlTmpl, map[string]*bintree{}},
- "contribute_bitcoin.html.tmpl": &bintree{templateContribute_bitcoinHtmlTmpl, map[string]*bintree{}},
- "documentation.html.tmpl": &bintree{templateDocumentationHtmlTmpl, map[string]*bintree{}},
- "header.html.tmpl": &bintree{templateHeaderHtmlTmpl, map[string]*bintree{}},
- "objective.html.tmpl": &bintree{templateObjectiveHtmlTmpl, map[string]*bintree{}},
- "project-back-button.html.tmpl": &bintree{templateProjectBackButtonHtmlTmpl, map[string]*bintree{}},
- "project-contributions.html.tmpl": &bintree{templateProjectContributionsHtmlTmpl, map[string]*bintree{}},
- "project-header.html.tmpl": &bintree{templateProjectHeaderHtmlTmpl, map[string]*bintree{}},
- "project-menu.html.tmpl": &bintree{templateProjectMenuHtmlTmpl, map[string]*bintree{}},
- "project-updates.html.tmpl": &bintree{templateProjectUpdatesHtmlTmpl, map[string]*bintree{}},
- "project.html.tmpl": &bintree{templateProjectHtmlTmpl, map[string]*bintree{}},
- "service-agreement.html.tmpl": &bintree{templateServiceAgreementHtmlTmpl, map[string]*bintree{}},
- }},
-}}
-
-// RestoreAsset restores an asset under the given directory
-func RestoreAsset(dir, name string) error {
- data, err := Asset(name)
- if err != nil {
- return err
- }
- info, err := AssetInfo(name)
- if err != nil {
- return err
- }
- err = os.MkdirAll(_filePath(dir, filepath.Dir(name)), os.FileMode(0755))
- if err != nil {
- return err
- }
- err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode())
- if err != nil {
- return err
- }
- err = os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime())
- if err != nil {
- return err
- }
- return nil
-}
-
-// RestoreAssets restores an asset under the given directory recursively
-func RestoreAssets(dir, name string) error {
- children, err := AssetDir(name)
- // File
- if err != nil {
- return RestoreAsset(dir, name)
- }
- // Dir
- for _, child := range children {
- err = RestoreAssets(dir, filepath.Join(name, child))
- if err != nil {
- return err
- }
- }
- return nil
-}
-
-func _filePath(dir, name string) string {
- canonicalName := strings.Replace(name, "\\", "/", -1)
- return filepath.Join(append([]string{dir}, strings.Split(canonicalName, "/")...)...)
-}
diff --git a/file_system.go b/file_system.go
index 0236f27..a08bc0a 100644
--- a/file_system.go
+++ b/file_system.go
@@ -1,11 +1,10 @@
package librefund
import (
+ "embed"
"fmt"
- "net/http"
"os"
"path"
- "path/filepath"
"strings"
"time"
@@ -137,42 +136,6 @@ func (o YAMLVersionStore) SaveVersion(obj Versioner) error {
return f.Sync()
}
-// Implement Golang's File System interface objective.
-// https://go.googlesource.com/objective/+/master/design/draft-iofs.md
-
-//go:generate go-bindata -o asset_bindata.go -fs -pkg librefund -prefix ./asset ./asset/...
-
-type appFS struct {
- localDir string
- root string
-}
-
-func AppFS(localRoot string) appFS {
- return appFS{localDir: localRoot}
-}
-
-func (a appFS) ChRoot(arg string) appFS {
- a.root = path.Join(a.root, arg)
- return a
-}
-
-func (a appFS) Open(arg string) (http.File, error) {
- localRoot := path.Join(a.localDir, a.root)
-
- f, err := http.Dir(localRoot).Open(arg)
- if err == nil || !os.IsNotExist(err) {
- return f, err
- }
-
- assetPath := path.Join(a.root, arg)
- if !strings.HasPrefix(assetPath, a.root+string(filepath.Separator)) {
- // Root is controlled by the operator, don't worry about case
- // insensitive paths etc.
- assetPath = a.root
- }
- return AssetFile().Open(assetPath)
-}
-
// projectFileName returns the expected meta-data filename for a given project.
func projectFileName(projectName string) string {
return fmt.Sprintf("%s.project.yaml", projectName)
@@ -684,3 +647,9 @@ func (o *FileSystemStore) SaveObjective(obj *Objective) error {
return nil
}
+
+//go:embed asset/static/service-agreement.html
+var HTMLServiceAgreement string
+
+//go:embed asset
+var AssetDir embed.FS
diff --git a/go.mod b/go.mod
index 733e826..c59a626 100644
--- a/go.mod
+++ b/go.mod
@@ -1,6 +1,6 @@
module git.server.ky/cypher/librefund
-go 1.15
+go 1.16
require (
github.com/Rhymond/go-money v1.0.1
diff --git a/http/html_template.go b/http/html_template.go
index f6f6666..68ccc29 100644
--- a/http/html_template.go
+++ b/http/html_template.go
@@ -3,7 +3,7 @@ package http
import (
"fmt"
"html/template"
- "io/ioutil"
+ "io"
"math"
"path"
"sort"
@@ -32,30 +32,25 @@ func initTemplates(h *HTTPServer) (*template.Template, error) {
"toTitle": ToTitle,
}
- appFS := librefund.AppFS("var").ChRoot("template")
- d, err := appFS.Open(".")
- if err != nil {
- return nil, err
- }
- files, err := d.Readdir(-1)
+ entries, err := librefund.AssetDir.ReadDir("asset/template")
if err != nil {
return nil, err
}
var tmpls *template.Template
- for _, fileInfo := range files {
+ for _, fileInfo := range entries {
fileName := fileInfo.Name()
if !strings.HasSuffix(fileName, ".tmpl") {
continue
}
- f, err := appFS.Open(fileName)
+ f, err := librefund.AssetDir.Open(path.Join("asset/template", fileName))
if err != nil {
return nil, err
}
defer f.Close()
- buf, err := ioutil.ReadAll(f)
+ buf, err := io.ReadAll(f)
if err != nil {
return nil, err
}
diff --git a/http/http.go b/http/http.go
index 3240a9b..31dd37d 100644
--- a/http/http.go
+++ b/http/http.go
@@ -4,6 +4,7 @@ import (
"encoding/base64"
"fmt"
"html/template"
+ "io/fs"
"net/http"
"net/http/cgi"
"net/http/fcgi"
@@ -133,7 +134,12 @@ func (h *HTTPServer) initRoutes() error {
h.router.HandleFunc("/project/{project}/transaction/{transactionID}", h.GetTransaction).Name("GetTransaction")
h.router.HandleFunc("/contribute/bitcoin", h.ContributeBitcoin).Name("ContributeBitcoin")
h.router.HandleFunc("/contribute/qrcode/{address}.png", h.WriteQRCode).Name("WriteQRCode")
- h.router.PathPrefix("/").Handler(http.FileServer(librefund.AppFS("var").ChRoot("static")))
+
+ staticFiles, err := fs.Sub(librefund.AssetDir, "assets/static")
+ if err != nil {
+ return errors.New("setting embedded static assets: " + err.Error())
+ }
+ h.router.PathPrefix("/static").Handler(http.FileServer(http.FS(staticFiles)))
return nil
}
diff --git a/service/service.go b/service/service.go
index 8fda255..c883ac6 100644
--- a/service/service.go
+++ b/service/service.go
@@ -6,7 +6,6 @@ import (
"encoding/base32"
"fmt"
"image/png"
- "io/ioutil"
"math"
"os"
"sort"
@@ -93,17 +92,9 @@ func NewService(cfg librefund.Config) (*Service, error) {
var err error
if *cfg.ServiceAgreementEnable {
- f, err := librefund.AppFS("var").ChRoot("static").Open("service-agreement.html")
- if err != nil {
- return nil, err
- }
- termsBuf, err := ioutil.ReadAll(f)
- if err != nil {
- return nil, err
- }
ret.agreements, err = librefund.OpenAgreementStore(
*cfg.AgreementsFile,
- string(termsBuf),
+ librefund.HTMLServiceAgreement,
)
if err != nil {
return nil, err