// Package internal Code generated by go-bindata. (@generated) DO NOT EDIT.
// sources:
// template/main.tmpl
// schema.go
package internal

import (
	"bytes"
	"compress/gzip"
	"fmt"
	"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 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
}

var _templateMainTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x54\x51\x5d\x6b\xdb\x30\x14\x7d\xb6\x7e\xc5\x99\xe9\xa8\x5d\x52\xa5\xed\xdb\x06\x79\x28\x6d\x06\x19\x5b\x3b\x48\x61\x0f\x5d\x29\x8a\x7d\x9d\x88\x3a\x92\x77\xa5\x94\x05\xa1\xff\x3e\x24\x27\x61\x7b\xb2\xa5\x73\xee\xf9\xd0\x0d\x61\x7a\x21\xee\xec\xb0\x67\xbd\xde\x78\xdc\x5c\x5d\x7f\xba\x1c\x98\x1c\x19\x8f\x2f\xaa\xa1\x95\xb5\x6f\x58\x98\x46\xe2\xb6\xef\x91\x49\x0e\x09\xe7\x77\x6a\xa5\x78\xda\x68\x07\x67\x77\xdc\x10\x1a\xdb\x12\xb4\x43\xaf\x1b\x32\x8e\x5a\xec\x4c\x4b\x0c\xbf\x21\xdc\x0e\xaa\xd9\x10\x6e\xe4\xd5\x11\x45\x67\x77\xa6\x15\xda\x64\xfc\xdb\xe2\x6e\xfe\xb0\x9c\xa3\xd3\x3d\xe1\x70\xc7\xd6\x7a\xb4\x9a\xa9\xf1\x96\xf7\xb0\x1d\xfc\x3f\x66\x9e\x89\xa4\xb8\x98\xc6\x28\x44\x08\x68\xa9\xd3\x86\x50\x6e\x95\x36\x25\x62\x14\xd3\x29\xee\x52\x9e\x35\x19\x62\xe5\xa9\xc5\x6a\x8f\x73\x32\xbe\x39\x5d\x9d\x4b\xdc\x3f\xe2\xe1\xf1\x09\xf3\xfb\xc5\x93\x14\x83\x6a\xde\xd4\x9a\x90\x34\x84\xd0\xdb\xc1\xb2\x47\x25\x8a\xd2\xba\x52\x14\xe5\x6a\xef\x29\xfd\x84\x00\x4f\xdb\xa1\x57\x9e\x50\x8e\x2c\x97\x2d\x33\x34\xb0\x36\xbe\x43\xf9\xf1\x77\x09\xf9\xe3\xa0\x18\xa3\xa8\x73\xcc\xb3\x95\x72\x84\xcf\x33\xe4\xef\x11\x4f\xb3\xef\x8a\xe1\x9a\x0d\x6d\x95\xc3\x0c\xcf\x2f\x64\xbc\x5c\x18\x4f\xdc\xa9\x86\x42\x96\x66\x65\xd6\x84\xb3\xd7\x09\xce\x8c\xda\x66\x19\xf9\xa0\xb6\xe4\x92\x7e\x51\x84\x70\x79\xd0\x8f\x51\xa6\xc3\x29\x8a\x0b\xb1\x3c\xcc\xc4\x38\xc9\x5a\x64\x5a\x5c\xc6\x28\xa2\x10\xdd\xce\x34\xb9\x73\x55\x23\x88\x22\x05\xe9\xb5\x21\x87\xe7\x97\xe7\x97\x54\x5a\x14\x9d\x65\xbc\x4e\x0e\xf9\x92\xef\x18\xe5\x98\x37\x88\xa2\x58\x4d\x40\xcc\x09\xfb\xae\xd8\x6d\x54\xbf\xcc\x60\x35\x72\x6a\x51\x14\xba\xcb\x8c\x0f\x33\x18\xdd\xe7\x99\xa2\x53\xba\xaf\x88\x39\xc1\xa9\xc2\xe8\x3b\x83\x1a\x06\x32\x6d\x95\x8f\x13\xac\x6a\x91\x50\xeb\xe4\xd2\xb7\x76\xe7\xe5\x4f\xd6\x9e\xaa\xbc\x0f\xf9\xd5\x6a\x73\x24\x8e\x71\xab\xf2\x97\x29\xeb\xba\x3e\x75\x3b\xba\x24\x7b\xcb\xb9\xe4\xa8\x45\xcc\xa3\xd6\xd2\xb3\x36\xeb\xc4\x91\xf3\xc4\xa9\xea\x3a\x73\xe6\x7f\xb4\xaf\xae\xb3\xd2\x7f\x5b\x1f\x4b\x8d\x4b\x3f\x3c\x66\x8c\xe2\x6f\x00\x00\x00\xff\xff\xe4\x6e\x0c\x4d\x4b\x03\x00\x00")

func templateMainTmplBytes() ([]byte, error) {
	return bindataRead(
		_templateMainTmpl,
		"template/main.tmpl",
	)
}

func templateMainTmpl() (*asset, error) {
	bytes, err := templateMainTmplBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "template/main.tmpl", size: 843, mode: os.FileMode(420), modTime: time.Unix(1, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _schemaGo = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x59\xdd\x8f\xd3\x48\x12\x7f\x8e\xff\x8a\x22\x12\xa3\x18\x65\x1d\x76\x75\x3a\xe9\x82\xf2\xb0\x82\x41\xca\xed\x31\xac\x16\xd8\x17\x84\x58\x8f\x5d\xce\x34\xd8\x6d\xd3\xdd\x09\x93\x9d\x9d\xff\xfd\x54\x55\xdd\xfe\x88\x33\x61\x81\x1d\x5e\x26\xae\xaf\xae\xfa\xd5\x57\xdb\x2c\x16\xf0\xb4\x6e\xf6\x46\x6d\xae\x1c\xfc\xf4\xf8\xc7\xff\xfc\xd0\x18\xb4\xa8\x1d\x3c\x4f\x33\xbc\xac\xeb\x8f\xb0\xd6\x59\x02\x3f\x97\x25\xb0\x90\x05\xe2\x9b\x1d\xe6\x49\xb4\x58\xc0\xeb\x2b\x65\xc1\xd6\x5b\x93\x21\x64\x75\x8e\xa0\x2c\x94\x2a\x43\x6d\x31\x87\xad\xce\xd1\x80\xbb\x42\xf8\xb9\x49\xb3\x2b\x84\x9f\x92\xc7\x81\x0b\x45\xbd\xd5\x39\x99\x50\x9a\x45\xfe\xb7\x7e\x7a\x7e\xf1\xea\x1c\x0a\x55\x62\xa0\x99\xba\x76\x90\x2b\x83\x99\xab\xcd\x1e\xea\x02\x5c\xef\x3c\x67\x10\x93\x28\x6a\xd2\xec\x63\xba\x41\x28\xeb\x34\x8f\x22\x55\x35\xb5\x71\x30\x8b\x26\x53\xd4\x59\x9d\x2b\xbd\x59\x7c\xb0\xb5\x9e\x46\x93\x69\x51\x39\xfa\x63\xb0\x28\x31\x73\xd3\x28\x9a\x4c\x37\xca\x5d\x6d\x2f\x93\xac\xae\x16\x85\x0f\x58\xe9\x6c\x7b\x99\xba\xda\x2c\x50\xb3\xfc\x97\x64\x16\x36\xbb\xc2\x2a\x5d\x60\xbe\xc1\xaf\x91\x2f\x14\x96\xf9\x34\x8a\x23\x42\xe1\x15\xd3\xc0\xa0\xc7\xdf\x42\xaa\x01\xb5\x4b\x3c\xc3\x5d\xa5\x0e\x3e\xa7\x96\xc3\xc4\x1c\x0a\x53\x57\x90\x42\x56\x57\x4d\xa9\x08\x6b\x8b\x06\x3c\x14\x49\xe4\xf6\x0d\x06\x93\xd6\x99\x6d\xe6\xe0\x26\x9a\x5c\xa4\x15\x02\x00\x51\x94\xde\xd0\x2f\xf8\x83\xb0\x59\x4e\x75\x5a\xe1\xbc\xae\x94\xc3\xaa\x71\xfb\xe9\x1f\xd1\xe4\x69\xad\x0b\xb5\x01\x76\xc1\xff\xf6\xb2\x19\x3f\x0d\xa5\xcf\xf3\x0d\x5a\x00\x78\xfb\xee\x11\xfd\xec\x59\x26\x50\xec\x50\xf8\x39\xc5\x6d\x59\x98\x7f\x76\xc2\x8c\xc8\x81\xf4\x5a\xe7\x78\x8d\x96\xa4\xf9\x67\x27\xad\x84\x33\x10\xbf\x65\x30\x7f\xad\xad\x72\xaa\xd6\x90\xa3\xcd\x8c\xba\x44\x0b\x29\xb0\x71\x68\x02\xcb\x97\x98\xe4\xc2\x23\xd6\xea\x75\x98\x85\x33\x01\x40\x69\x07\xb0\x58\x78\x43\x7c\x7a\xb0\x22\xa4\x52\x59\x97\x44\x93\x17\xea\x1a\xf3\xb5\x26\x95\xcb\xba\x2e\x81\x6b\x3c\x57\x59\xea\xd0\x82\x2a\x7a\x0a\x94\xcf\x8a\xa4\x7f\x50\x5a\x14\x95\x5e\x7b\xbb\x72\x56\x45\xa4\xe1\x59\x42\x92\xb3\x24\x5c\x41\x71\x5c\x3a\x42\xff\x86\xca\x11\xc5\x71\xe1\xc8\xbf\x5e\xf9\x9c\xae\xa1\xb5\x2e\xea\x4e\xec\x11\xc7\x9c\xbc\xde\x37\xc8\x0c\xaf\x46\x07\x0e\xd5\x5e\xa7\x3d\xe3\x77\x9d\xe6\xd2\x83\x12\x7c\xa5\xfe\xec\xf9\xf8\x48\x69\xf7\xef\x7f\x8d\xb4\xac\xfa\xf3\xe0\xb0\x73\xbd\xad\x6c\x2b\xf6\xf6\xdd\xf0\xb8\x50\xc4\x24\x34\xd4\x7b\xa3\xd5\xa7\x6d\x7b\x20\xe7\x19\x46\xc7\x6d\x59\x68\xa8\x78\xa1\xca\x32\xbd\x2c\xf1\xa4\xa2\xf6\x42\x43\xd5\x97\x0d\x15\x67\x5a\x9e\x54\xad\xbd\xd0\x50\xf5\x19\x16\xe9\xb6\x74\xa7\xdd\xcd\x45\xe8\xa8\xe6\xef\x69\x49\xe1\x2a\xed\xd0\xd0\x54\xbb\xb9\x3d\xa2\xf9\x7e\x47\x52\x07\x40\x35\x79\xea\x30\x9c\x7f\x17\x50\x2c\xf4\xfe\xa8\x03\xeb\xaa\xda\xba\x16\xb1\x3b\x0c\xa8\x20\x34\xd4\xfd\x3d\x2d\x55\x4e\x73\x97\x53\xcc\x4d\x35\xd6\xdd\xb5\x42\x07\x15\xe5\x6a\x93\x6e\xf0\x17\xdc\x9f\xa8\x43\x2b\x42\xef\x3f\xe2\x7e\xa8\xdd\xce\x12\xa9\xc7\xe1\x63\xd0\x0e\xd3\xe8\xe0\x60\xd4\x44\xde\x9d\x8c\xd8\x06\xa1\x23\xf3\x8f\x67\xf0\x78\x1e\x30\xf9\x1b\xc6\x01\xeb\x1d\x99\x06\x1e\x92\x3b\xfb\x9f\x5a\xfd\x88\xe0\x89\x8e\x3f\x10\x3c\xec\xf1\xdf\xb0\x90\xc3\x87\x72\x06\x8b\xf7\xe3\xd3\x7f\xc3\xc2\x63\x2f\x2b\xa9\x13\xbe\xa3\x93\x3d\xd0\x27\x7a\x77\xad\x77\x68\x2c\x1e\x8a\x2a\x21\x1f\x1e\xff\x69\xab\x0c\xe6\x07\xb2\xc6\x93\x8f\x64\x4d\x26\xff\x38\x6d\x42\xff\x86\xbc\x89\x62\x97\xb8\xde\xcc\x6a\x8b\xea\x44\xb4\x61\xa9\xf7\xe7\xe2\x97\xb7\xfa\x11\xe9\x63\x6b\xbd\xd7\x5c\x6d\x67\x7d\xa1\xa5\x04\xa5\x0b\xfc\xcc\xf9\xcc\x0c\xf2\x42\x4d\x75\x40\x84\x9c\x12\x58\xf8\x97\xec\xfe\xc6\xd5\x26\x89\x8a\xad\xce\x82\xe6\x0c\x73\x78\x44\x12\xc9\xb3\x56\x22\xf6\x45\x72\x13\x4d\x34\xc2\x72\x05\x67\xf4\x78\x13\x4d\xa8\x34\x97\x82\x01\xe6\xc9\xeb\x74\x33\x27\xda\xbe\xc1\x65\x4b\xa3\x6a\x8e\x26\xdc\x15\x2d\x91\x1e\x88\x28\x88\x2f\x85\x28\x0f\x44\xf6\x75\xb4\x64\xb2\x7f\x20\x7a\xa8\x99\x25\xd1\xc3\x83\x30\x0a\x6f\x9f\x19\x85\xb7\x7f\x1b\x4d\x54\x01\x06\x0b\x72\x59\x38\x4f\xf8\xf1\xc1\x0a\xb4\x2a\x29\x9c\x89\x46\x22\xc3\xaa\x0d\xdf\x60\x11\xb3\xaa\x41\xb7\x35\x1a\x34\x76\xc8\xca\xe2\x1f\x43\x2b\xd7\x95\xd3\xd8\xb2\xee\xac\xc8\xc3\xa2\xef\xa3\x3b\x93\x9b\xde\x1c\xd0\x18\x7a\xbe\x89\x26\x96\x9d\x3e\x63\xfa\xcd\x00\x3f\xfe\x57\x74\x20\xd2\x6d\x61\xc8\x21\xca\x7c\x90\x9c\xc0\xf1\x19\xe2\xad\xbe\xec\x33\x98\x32\x4c\x49\x60\x75\x79\x09\xbb\x79\xd9\xf9\x10\x16\x71\x34\x69\xd7\x6f\xc7\x0d\x14\xe2\xfa\x0d\xb7\xec\xec\x86\x9d\x27\xc9\xe0\xb3\xfb\xbb\x70\xc9\x67\x0f\xb6\x63\x27\xd9\x2e\xbd\x65\x1b\x73\xbb\xe1\xa2\x49\xaf\x7b\x96\x9e\xdd\x51\x88\xdf\xed\x3d\xe6\x97\xa8\x67\x45\x9e\x74\xd4\x98\x8d\x84\x0d\xd2\x9e\xd1\x52\xda\xda\xb2\x05\x83\x0d\xab\xae\xa0\x42\xd9\xa8\x72\x0e\x45\xe5\x92\x73\x4a\x69\x31\x9b\x56\xca\x5a\xea\x63\x1e\x3d\x8a\x94\x8a\xda\xf8\xca\x79\xf8\x69\x3a\x27\x5b\x94\xd2\xb8\xb5\x4d\x37\xb6\xe5\x0a\xf8\xaa\x46\xfe\xd1\x15\x2e\x7e\x22\xf4\x07\x2b\x78\xcc\xc7\xd9\x82\xe9\xb0\x82\x33\x62\xb0\x32\x0d\x4b\xb9\x47\xfb\x1b\x03\xf0\xc5\x03\xb2\x54\xc3\x25\x02\xbf\xf8\x61\x0e\xae\x66\x99\x0d\x6a\x34\x29\xd7\x2a\x69\x3e\xaf\x0d\xe0\x75\x5a\x35\x25\xce\x41\xd7\x8e\x5e\x0d\xb6\x3a\xe3\xe5\x5c\xaa\x8f\x08\x4e\x55\x98\x5c\xd4\x9f\x13\xf6\xf2\x3d\x17\x2d\xf9\x49\xd3\x29\x79\x91\x1a\x7b\x95\x96\xb3\x2e\xbf\xf1\x13\x16\xe8\x21\x64\x8b\x64\x70\x6b\x5a\xf5\xaa\x21\x04\xef\xab\x98\xc7\x07\xe9\x76\x97\xe3\x37\x6f\xd6\xcf\xe0\xec\x6c\x5c\x41\x6c\xdb\xed\x1b\xf2\xc5\xbf\xc3\xb2\xc2\xcb\xa2\xef\x4d\x34\x21\xf3\x6e\xdf\x24\xbf\x28\x9d\xcf\x62\x52\x0e\xd2\xcf\xa9\x55\xff\xfa\x8b\xb9\x17\xdb\x6a\xad\x85\xfd\xb8\x47\x7b\xb9\x75\x42\xfc\x31\x10\x89\xf2\x38\x4e\x5e\xf1\x94\x16\x5e\x70\xbe\xa5\x91\x67\x77\x16\x06\x5e\x37\x98\x39\xa9\x8b\x19\x41\x3d\x8b\xe1\xa1\x8d\xb9\x3c\xb6\x5b\x95\x0f\x93\x38\x9d\x8f\xcc\x53\x4c\xb7\xfd\x91\x65\x8b\x39\x1d\xe3\xe7\x96\x4f\x89\x7f\xdd\x95\xe4\x73\xe2\x7b\xaf\xcf\xed\xbd\x95\x7e\xd5\x90\xc2\x7f\x5f\xbd\xbc\x20\x65\x5e\xab\xbe\x6e\x72\x94\xba\x61\x11\x32\xe0\x95\xeb\xcb\x0f\x14\x80\xfc\xf1\x03\x6f\x70\xe8\xcc\x86\xb3\x69\x5b\xfb\x93\x62\x98\x5d\xc2\xdb\x77\x97\x7b\x87\x52\x42\xbd\xd9\xc7\xa3\x4f\x74\x09\x3a\x79\xc1\x5e\x86\x97\x51\x79\x9c\xc5\xfd\xb5\x42\x6f\x90\x06\x33\x37\x3b\xc8\xbc\xa8\xc4\x31\xb7\x16\xab\x48\x7d\xf9\x9a\xb5\x09\x4d\x70\xd9\xcd\x41\x56\xea\xf5\xc1\xf1\x8e\x46\x63\xd8\x84\x6c\xf8\xd6\x4c\x5a\x20\x5f\x07\x82\x8d\xf6\x8c\x3b\xcc\xf4\xf3\xef\xc1\x79\xf8\x69\x09\x0f\x77\x34\x07\x64\xb2\x93\xba\xcc\x02\x2a\x04\x6a\x33\x2e\xec\x54\x6f\x90\x97\x8c\x95\x5e\x4a\xe4\x1a\xb2\x82\xb4\x69\x50\xe7\x33\x4f\x98\x77\xeb\xbc\xb7\x69\x66\x71\xec\xc7\x8b\xff\x36\xd0\x0f\xc0\x7f\x49\xb8\xcf\x10\x54\x7e\xdd\x05\xe1\x7d\x60\xc3\x9e\xa1\xf2\xeb\x81\xb7\x1c\x60\xf8\xc2\xd1\x0b\x71\x1d\xdc\x3f\xe3\x5f\xdc\x5e\x1c\xb6\x5f\x2f\x64\x47\x60\x20\x8e\xa4\x77\xd9\x72\xe4\x99\x59\xfd\x6d\x47\xac\x6e\xd7\x0d\x76\x08\xb1\x86\x1b\xe4\x76\x70\x47\x18\x8c\x3e\x1b\xfb\xc6\xeb\x4a\x8b\x7f\x5a\x3f\xec\x5d\xed\x0b\xd9\x5f\x18\xfa\x4d\xe1\xbb\x67\x66\xe1\x91\x94\x7f\x0c\xa3\x02\x3d\x6c\x23\xee\x1b\x42\x91\xbf\x7c\x0c\x52\xca\x5f\x4c\xfe\x46\x42\xbf\x3a\x97\x6a\x0e\x55\x2f\x95\xf2\xcd\x85\x0c\xfa\xbb\x6c\xdf\x09\xef\x7c\x75\xed\x67\xef\x81\x0b\x5f\xef\x03\x39\xc1\x5e\x7c\x98\x43\xd1\x39\x21\x47\x8b\x4d\x9a\x80\xde\x85\xee\xea\x35\x6c\x04\x12\x3b\xe2\xcd\x37\xb8\xc3\xfe\xd0\x56\x6b\x5f\x62\x57\x70\x16\x7e\x8b\x51\x2e\x53\x5f\x9c\x1f\xb8\xbc\xc2\x67\x30\x26\x3a\xe3\x8b\xae\xf7\x8d\x6b\x09\x6a\xde\x19\xf7\x45\xdb\x6f\x02\x5f\xc6\x60\x8b\x6e\x01\xdc\x0d\xff\xfd\x14\xc1\x71\xf8\xff\x1e\xfa\xff\x58\x29\xdc\x85\x7c\x80\x91\x65\xbe\x04\x60\xef\xc2\xdf\x6e\xce\x0e\x3e\xf8\x6c\xd2\xc6\xf6\xbf\x88\x7a\x7a\xaa\x73\xa9\xfe\x40\xa8\xd0\x5d\xd5\x39\x7c\x56\xee\x0a\x0c\x66\xf5\x0e\x0d\x75\x3c\x6a\xbb\x35\x08\xba\x86\x26\xd5\x2a\xb3\xa0\x34\x54\x32\x30\x94\xde\xf8\xb6\xef\xa5\xab\xc8\x7b\xdf\x92\xc0\x13\x63\x78\xfb\xae\xfb\x70\x79\x1b\xc3\xcc\x83\xde\x23\x1f\xee\xd2\x1c\x0b\x34\xe0\xaf\x15\x37\x02\xfb\x4e\xae\x48\xec\xdc\x2c\x7e\x02\xbb\x41\x12\xf8\xb6\x36\xc8\xc1\xc3\xd7\x21\x3a\x71\xde\xa7\xa2\xc8\xe7\xb0\xe3\x06\x28\x02\xb6\x84\x9d\xd4\x22\x0d\xef\x90\xce\x3c\x09\x01\xcc\x0f\xd0\x95\xe5\x35\x02\x57\xc8\xdf\x0b\x65\x7f\x23\x8f\xee\x1e\xb2\x42\x05\x38\x12\xbc\x0f\xdc\x06\xd1\x0c\xa0\x13\xd8\xd0\xaf\xee\xa3\xa8\xf5\x95\xc7\xc0\x85\xa5\x38\x82\x2e\x30\xbe\x17\xbc\xe1\x6d\x60\x04\x9f\x6a\xff\xdb\xa1\xfd\x04\x73\x8f\x08\x86\xa0\x8e\x60\xa8\xda\xdb\xc1\x29\x14\x43\x34\x23\x1c\x79\xde\x8e\x51\x14\xf2\xf7\x62\xd8\x5f\xbf\x23\x04\x65\x67\x0a\x7e\x2f\xba\xcd\x7d\x2f\xf8\x49\x38\x47\xd0\x13\x27\x4e\x63\x27\x51\x74\xc8\x71\x78\xed\x7d\xdb\x0d\xde\xb5\xe2\xc1\x13\x79\x45\x8b\xc2\x85\x77\xad\x55\xf7\xae\xf5\xab\x33\xf2\xc2\x06\x2b\x70\xc9\x79\x89\xd5\x6c\x30\x85\x5d\x74\x1b\xfd\x3f\x00\x00\xff\xff\x3d\x57\x95\x0a\x7e\x1d\x00\x00")

func schemaGoBytes() ([]byte, error) {
	return bindataRead(
		_schemaGo,
		"schema.go",
	)
}

func schemaGo() (*asset, error) {
	bytes, err := schemaGoBytes()
	if err != nil {
		return nil, err
	}

	info := bindataFileInfo{name: "schema.go", size: 7550, mode: os.FileMode(420), modTime: time.Unix(1, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

// Asset loads and returns the asset for the given name.
// It returns an error if the asset could not be found or
// could not be loaded.
func Asset(name string) ([]byte, error) {
	cannonicalName := strings.Replace(name, "\\", "/", -1)
	if f, ok := _bindata[cannonicalName]; ok {
		a, err := f()
		if err != nil {
			return nil, fmt.Errorf("Asset %s can't read by error: %v", name, err)
		}
		return a.bytes, nil
	}
	return nil, fmt.Errorf("Asset %s not found", name)
}

// MustAsset is like Asset but panics when Asset would return an error.
// It simplifies safe initialization of global variables.
func MustAsset(name string) []byte {
	a, err := Asset(name)
	if err != nil {
		panic("asset: Asset(" + name + "): " + err.Error())
	}

	return a
}

// AssetInfo loads and returns the asset info for the given name.
// It returns an error if the asset could not be found or
// could not be loaded.
func AssetInfo(name string) (os.FileInfo, error) {
	cannonicalName := strings.Replace(name, "\\", "/", -1)
	if f, ok := _bindata[cannonicalName]; ok {
		a, err := f()
		if err != nil {
			return nil, fmt.Errorf("AssetInfo %s can't read by error: %v", name, err)
		}
		return a.info, nil
	}
	return nil, fmt.Errorf("AssetInfo %s not found", name)
}

// AssetNames returns the names of the assets.
func AssetNames() []string {
	names := make([]string, 0, len(_bindata))
	for name := range _bindata {
		names = append(names, name)
	}
	return names
}

// _bindata is a table, holding each asset generator, mapped to its name.
var _bindata = map[string]func() (*asset, error){
	"template/main.tmpl": templateMainTmpl,
	"schema.go":          schemaGo,
}

// AssetDir returns the file names below a certain
// directory embedded in the file by go-bindata.
// For example if you run go-bindata on data/... and data contains the
// following hierarchy:
//     data/
//       foo.txt
//       img/
//         a.png
//         b.png
// then AssetDir("data") would return []string{"foo.txt", "img"}
// AssetDir("data/img") would return []string{"a.png", "b.png"}
// AssetDir("foo.txt") and AssetDir("notexist") would return an error
// AssetDir("") will return []string{"data"}.
func AssetDir(name string) ([]string, error) {
	node := _bintree
	if len(name) != 0 {
		cannonicalName := strings.Replace(name, "\\", "/", -1)
		pathList := strings.Split(cannonicalName, "/")
		for _, p := range pathList {
			node = node.Children[p]
			if node == nil {
				return nil, fmt.Errorf("Asset %s not found", name)
			}
		}
	}
	if node.Func != nil {
		return nil, fmt.Errorf("Asset %s not found", name)
	}
	rv := make([]string, 0, len(node.Children))
	for childName := range node.Children {
		rv = append(rv, childName)
	}
	return rv, nil
}

type bintree struct {
	Func     func() (*asset, error)
	Children map[string]*bintree
}

var _bintree = &bintree{nil, map[string]*bintree{
	"schema.go": &bintree{schemaGo, map[string]*bintree{}},
	"template": &bintree{nil, map[string]*bintree{
		"main.tmpl": &bintree{templateMainTmpl, map[string]*bintree{}},
	}},
}}

// RestoreAsset restores an asset under the given directory
func RestoreAsset(dir, name string) error {
	data, err := Asset(name)
	if err != nil {
		return err
	}
	info, err := AssetInfo(name)
	if err != nil {
		return err
	}
	err = os.MkdirAll(_filePath(dir, filepath.Dir(name)), os.FileMode(0755))
	if err != nil {
		return err
	}
	err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode())
	if err != nil {
		return err
	}
	err = os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime())
	if err != nil {
		return err
	}
	return nil
}

// RestoreAssets restores an asset under the given directory recursively
func RestoreAssets(dir, name string) error {
	children, err := AssetDir(name)
	// File
	if err != nil {
		return RestoreAsset(dir, name)
	}
	// Dir
	for _, child := range children {
		err = RestoreAssets(dir, filepath.Join(name, child))
		if err != nil {
			return err
		}
	}
	return nil
}

func _filePath(dir, name string) string {
	cannonicalName := strings.Replace(name, "\\", "/", -1)
	return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...)
}
