| 
									
										
										
										
											2018-01-08 13:15:57 +01:00
										 |  |  | // Code generated by go-bindata. DO NOT EDIT. | 
					
						
							| 
									
										
										
										
											2017-04-11 02:25:53 +03:00
										 |  |  | // sources: | 
					
						
							|  |  |  | // faucet.html | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | package main | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func (fi bindataFileInfo) Name() string { | 
					
						
							|  |  |  | 	return fi.name | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | func (fi bindataFileInfo) Size() int64 { | 
					
						
							|  |  |  | 	return fi.size | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | func (fi bindataFileInfo) Mode() os.FileMode { | 
					
						
							|  |  |  | 	return fi.mode | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | func (fi bindataFileInfo) ModTime() time.Time { | 
					
						
							|  |  |  | 	return fi.modTime | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | func (fi bindataFileInfo) IsDir() bool { | 
					
						
							|  |  |  | 	return false | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | func (fi bindataFileInfo) Sys() interface{} { | 
					
						
							|  |  |  | 	return nil | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-29 18:02:33 +02:00
										 |  |  | var _faucetHtml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x5a\x71\x73\xdb\xb6\x92\xff\xdb\xf9\x14\x5b\x5e\xfc\x24\x9d\x4d\x52\xb6\x93\x3c\x9f\x44\xaa\x93\x97\xd7\xd7\xcb\xcd\x5d\xdb\x69\xd3\xb9\x7b\xd3\xd7\xb9\x01\x89\x95\x88\x18\x04\x58\x00\x94\xac\x7a\xf4\xdd\x6f\x00\x90\x14\x29\xc9\x6e\xd2\xe4\xde\x34\x7f\x38\x24\xb0\xd8\x5d\xec\xfe\x16\xbb\x58\x2a\xf9\xe2\xaf\xdf\xbe\x79\xf7\xf7\xef\xbe\x82\xc2\x94\x7c\xf1\x2c\xb1\xff\x01\x27\x62\x95\x06\x28\x82\xc5\xb3\xb3\xa4\x40\x42\x17\xcf\xce\xce\x92\x12\x0d\x81\xbc\x20\x4a\xa3\x49\x83\xda\x2c\xc3\xdb\x60\x3f\x51\x18\x53\x85\xf8\x4b\xcd\xd6\x69\xf0\x3f\xe1\x8f\xaf\xc3\x37\xb2\xac\x88\x61\x19\xc7\x00\x72\x29\x0c\x0a\x93\x06\x6f\xbf\x4a\x91\xae\xb0\xb7\x4e\x90\x12\xd3\x60\xcd\x70\x53\x49\x65\x7a\xa4\x1b\x46\x4d\x91\x52\x5c\xb3\x1c\x43\xf7\x72\x09\x4c\x30\xc3\x08\x0f\x75\x4e\x38\xa6\x57\xc1\xe2\x99\xe5\x63\x98\xe1\xb8\x78\x78\x88\xbe\x41\xb3\x91\xea\x6e\xb7\x9b\xc1\xeb\xda\x14\x28\x0c\xcb\x89\x41\x0a\x7f\x23\x75\x8e\x26\x89\x3d\xa5\x5b\xc4\x99\xb8\x83\x42\xe1\x32\x0d\xac\xea\x7a\x16\xc7\x39\x15\xef\x75\x94\x73\x59\xd3\x25\x27\x0a\xa3\x5c\x96\x31\x79\x4f\xee\x63\xce\x32\x1d\x9b\x0d\x33\x06\x55\x98\x49\x69\xb4\x51\xa4\x8a\x6f\xa2\x9b\xe8\xcf\x71\xae\x75\xdc\x8d\x45\x25\x13\x51\xae\x75\x00\x0a\x79\x1a\x68\xb3\xe5\xa8\x0b\x44\x13\x40\xbc\xf8\x7d\x72\x97\x52\x98\x90\x6c\x50\xcb\x12\xe3\x17\xd1\x9f\xa3\xa9\x13\xd9\x1f\x7e\x5a\xaa\x15\xab\x73\xc5\x2a\x03\x5a\xe5\x1f\x2c\xf7\xfd\x2f\x35\xaa\x6d\x7c\x13\x5d\x45\x57\xcd\x8b\x93\xf3\x5e\x07\x8b\x24\xf6\x0c\x17\x9f\xc4\x3b\x14\xd2\x6c\xe3\xeb\xe8\x45\x74\x15\x57\x24\xbf\x23\x2b\xa4\xad\x24\x3b\x15\xb5\x83\x9f\x4d\xee\x63\x3e\x7c\x7f\xe8\xc2\xcf\x21\xac\x94\x25\x0a\x13\xbd\xd7\xf1\x75\x74\x75\x1b\x4d\xdb\x81\x63\xfe\x4e\x80\x75\x9a\x15\x75\x16\xad\x51\x59\xe4\xf2\x30\x47\x61\x50\xc1\x83\x1d\x3d\x2b\x99\x08\x0b\x64\xab\xc2\xcc\xe0\x6a\x3a\x3d\x9f\x9f\x1a\x5d\x17\x7e\x98\x32\x5d\x71\xb2\x9d\xc1\x92\xe3\xbd\x1f\x22\x9c\xad\x44\xc8\x0c\x96\x7a\x06\x9e\xb3\x9b\xd8\x39\x99\x95\x92\x2b\x85\x5a\x37\xc2\x2a\xa9\x99\x61\x52\xcc\x2c\xa2\x88\x61\x6b\x3c\x45\xab\x2b\x22\x8e\x16\x90\x4c\x4b\x5e\x1b\x3c\x50\x24\xe3\x32\xbf\xf3\x63\x2e\x9a\xfb\x9b\xc8\x25\x97\x6a\x06\x9b\x82\x35\xcb\xc0\x09\x82\x4a\x61\xc3\x1e\x2a\x42\x29\x13\xab\x19\xbc\xaa\x9a\xfd\x40\x49\xd4\x8a\x89\x19\x4c\xf7\x4b\x92\xb8\x35\x63\x12\xfb\x83\xeb\xd9\x59\x92\x49\xba\x75\x3e\xa4\x6c\x0d\x39\x27\x5a\xa7\xc1\x81\x89\xdd\x81\x34\x20\xb0\xe7\x10\x61\xa2\x9d\x1a\xcc\x29\xb9\x09\xc0\x09\x4a\x03\xaf\x44\x98\x49\x63\x64\x39\x83\x2b\xab\x5e\xb3\xe4\x80\x1f\x0f\xf9\x2a\xbc\xba\x6e\x27\xcf\x92\xe2\xaa\x65\x62\xf0\xde\x84\xce\x3f\x9d\x67\x82\x45\xc2\xda\xb5\x4b\x02\x4b\x12\x66\xc4\x14\x01\x10\xc5\x48\x58\x30\x4a\x51\xa4\x81\x51\x35\x5a\x1c\xb1\x05\xf4\x8f\xbf\x47\x4e\xbf\xe2\xaa\xd5\x2b\xa6\x6c\xdd\x6c\xab\xf7\x78\xb0\xc3\xc7\x37\x71\x0b\xcd\x83\x5c\x2e\x35\x9a\xb0\xb7\xa7\x1e\x31\x13\x55\x6d\xc2\x95\x92\x75\xd5\xcd\x9f\x25\x6e\x14\x18\x4d\x83\x5a\xf1\xa0\x39\xfe\xdd\xa3\xd9\x56\x8d\x29\x82\x6e\xe3\x52\x95\xa1\xf5\x84\x92\x3c\x80\x8a\x93\x1c\x0b\xc9\x29\xaa\x34\xf8\x41\xe6\x8c\x70\x10\x7e\xcf\xf0\xe3\xf7\xff\x09\x8d\xcb\x98\x58\xc1\x56\xd6\x0a\xbe\x32\x05\x2a\xac\x4b\x20\x94\x5a\xb8\x46\x51\xd4\x53\xc4\x61\xf7\x58\xd5\x30\x33\x62\x4f\x75\x96\x64\xb5\x31\xb2\x23\xcc\x8c\x80\xcc\x88\x90\xe2\x92\xd4\xdc\x00\x55\xb2\xa2\x72\x23\x42\x23\x57\x2b\x9b\xe9\xfc\x26\xfc\xa2\x00\x28\x31\xa4\x99\x4a\x83\x96\xb6\xf5\x21\xd1\x95\xac\xea\xaa\xf1\xa2\x1f\xc4\xfb\x8a\x08\x8a\xd4\xfa\x9c\x6b\x0c\x16\x5f\xb3\x35\x42\x89\x7e\x2f\x67\x87\x90\xc8\x89\x42\x13\xf6\x99\x1e\x01\x23\x89\xbd\x32\x7e\x4b\xd0\xfc\x4b\x6a\xde\x72\xea\xb6\x50\xa2\xa8\x61\xf0\x16\x2a\x7b\xae\x04\x8b\x87\x07\x45\xc4\x0a\xe1\x39\xa3\xf7\x97\xf0\x9c\x94\xb2\x16\x06\x66\x29\x44\xaf\xdd\xa3\xde\xed\x06\xdc\x01\x12\xce\x16\x09\x79\x0a\xde\x20\x45\xce\x59\x7e\x97\x06\x86\xa1\x4a\x1f\x1e\x2c\xf3\xdd\x6e\x0e\x0f\x0f\x6c\x09\xcf\xa3\xef\x31\x27\x95\xc9\x0b\xb2\xdb\xad\x54\xfb\x1c\xe1\x3d\xe6\xb5\xc1\xf1\xe4\xe1\x01\xb9\xc6\xdd\x4e\xd7\x59\xc9\xcc\xb8\x5d\x6e\xc7\x05\xdd\xed\xac\xce\x8d\x9e\xbb\x1d\xc4\x96\xa9\xa0\x78\x0f\xcf\xa3\xef\x50\x31\x49\x35\ | 
					
						
							| 
									
										
										
										
											2017-04-11 02:25:53 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | func faucetHtmlBytes() ([]byte, error) { | 
					
						
							|  |  |  | 	return bindataRead( | 
					
						
							|  |  |  | 		_faucetHtml, | 
					
						
							|  |  |  | 		"faucet.html", | 
					
						
							|  |  |  | 	) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func faucetHtml() (*asset, error) { | 
					
						
							|  |  |  | 	bytes, err := faucetHtmlBytes() | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							|  |  |  | 		return nil, err | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	info := bindataFileInfo{name: "faucet.html", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 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) { | 
					
						
							| 
									
										
										
										
											2018-01-08 13:15:57 +01:00
										 |  |  | 	canonicalName := strings.Replace(name, "\\", "/", -1) | 
					
						
							|  |  |  | 	if f, ok := _bindata[canonicalName]; ok { | 
					
						
							| 
									
										
										
										
											2017-04-11 02:25:53 +03:00
										 |  |  | 		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) { | 
					
						
							| 
									
										
										
										
											2018-01-08 13:15:57 +01:00
										 |  |  | 	canonicalName := strings.Replace(name, "\\", "/", -1) | 
					
						
							|  |  |  | 	if f, ok := _bindata[canonicalName]; ok { | 
					
						
							| 
									
										
										
										
											2017-04-11 02:25:53 +03:00
										 |  |  | 		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){ | 
					
						
							|  |  |  | 	"faucet.html": faucetHtml, | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // 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 { | 
					
						
							| 
									
										
										
										
											2018-01-08 13:15:57 +01:00
										 |  |  | 		canonicalName := strings.Replace(name, "\\", "/", -1) | 
					
						
							|  |  |  | 		pathList := strings.Split(canonicalName, "/") | 
					
						
							| 
									
										
										
										
											2017-04-11 02:25:53 +03:00
										 |  |  | 		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 | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2017-11-08 11:45:52 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-11 02:25:53 +03:00
										 |  |  | var _bintree = &bintree{nil, map[string]*bintree{ | 
					
						
							| 
									
										
										
										
											2017-11-08 11:45:52 +01:00
										 |  |  | 	"faucet.html": {faucetHtml, map[string]*bintree{}}, | 
					
						
							| 
									
										
										
										
											2017-04-11 02:25:53 +03:00
										 |  |  | }} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // 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 | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2018-01-08 13:15:57 +01:00
										 |  |  | 	return os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime()) | 
					
						
							| 
									
										
										
										
											2017-04-11 02:25:53 +03:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // 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 { | 
					
						
							| 
									
										
										
										
											2018-01-08 13:15:57 +01:00
										 |  |  | 	canonicalName := strings.Replace(name, "\\", "/", -1) | 
					
						
							|  |  |  | 	return filepath.Join(append([]string{dir}, strings.Split(canonicalName, "/")...)...) | 
					
						
							| 
									
										
										
										
											2017-04-11 02:25:53 +03:00
										 |  |  | } |