// Copyright 2016 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// Package assets contains template strings and other assets for the allocatord web interface.
//
// This package is auto-generated by "jiri go generate v.io/x/ref/services/allocator/allocatord"
// which in-turn uses https://github.com/jteeuwen/go-bindata/
// Code generated by go-bindata.
// sources:
// bad-request.tmpl.html
// dash.js
// dashboard.tmpl.html
// error.tmpl.html
// head.tmpl.html
// header.tmpl.html
// home.tmpl.html
// root.tmpl.html
// style.css
// DO NOT EDIT!

package assets

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
}

var _badRequestTmplHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x54\x8e\x41\x0a\x02\x31\x0c\x00\xef\xfb\x8a\xf8\x00\x5b\xbc\x4a\xe8\x41\xf0\x2e\xfe\xa0\x9a\x40\x17\x56\x5b\x6b\x44\x96\xd2\xbf\xdb\x36\x7a\xf0\x14\x3a\x9d\x21\xc1\x0d\xc5\xab\xac\x89\x21\xc8\x6d\x71\x13\xfe\x06\x7b\x72\x13\x00\xca\x2c\x0b\xbb\x83\x27\x38\xf3\xe3\xc5\x4f\x41\xab\x68\x42\xab\x12\x5e\x22\xad\xc3\x0d\xbb\x7f\xb1\xbd\x3b\x4e\x99\xfb\x04\x28\xc5\x9c\xbc\x84\x5a\x3b\xb5\x5f\x5c\xca\x7b\x96\x00\xe6\x98\x73\xcc\xb0\xd5\xcf\xa4\xc1\x60\xfb\xde\xd5\x6a\x34\xd2\x84\xef\xd4\x44\xb4\xba\xba\x6d\x1a\x57\x7f\x02\x00\x00\xff\xff\xe0\x6f\x86\xe4\xcd\x00\x00\x00")

func badRequestTmplHtmlBytes() ([]byte, error) {
	return bindataRead(
		_badRequestTmplHtml,
		"bad-request.tmpl.html",
	)
}

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

	info := bindataFileInfo{name: "bad-request.tmpl.html", size: 0, mode: os.FileMode(420), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

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

func dashJsBytes() ([]byte, error) {
	return bindataRead(
		_dashJs,
		"dash.js",
	)
}

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

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

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

func dashboardTmplHtmlBytes() ([]byte, error) {
	return bindataRead(
		_dashboardTmplHtml,
		"dashboard.tmpl.html",
	)
}

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

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

var _errorTmplHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x54\x8f\x41\x0a\xc2\x30\x10\x45\xf7\x3d\xc5\xd8\xbd\x0d\xdd\xca\x18\x70\x21\xb8\x10\x04\xc1\x03\xd4\x66\x24\x85\xb6\x29\x43\x44\x4a\xc8\xdd\x4d\x32\x76\xe1\xea\x93\xff\xdf\x83\x09\xee\x8c\xeb\xfd\xba\x10\x58\x3f\x8d\xba\xc2\x2d\xa8\x33\xba\x02\x40\x3f\xf8\x91\xf4\x99\xd9\x31\x2a\x79\x54\xa8\x64\xc6\xa7\x33\x6b\xa1\x6c\xab\x4f\x33\x14\x0a\x6e\x7d\xff\x66\x26\x93\xa8\xb6\x8c\x0b\x53\x4e\x80\x10\x9a\xc7\xfd\x1a\x63\x2e\xd5\xaf\x0d\xe1\x33\x78\x0b\x8d\xb8\x7b\x19\x17\xe1\x4b\x77\xc8\x5a\x8c\x8d\x48\xa2\xd0\x6c\xfe\x40\xec\xc0\x32\xbd\x8e\x75\x42\x2f\x6e\xa2\x18\x6b\x9d\x13\x55\xa7\x37\x0f\x95\x5c\x9b\xce\x2a\x5f\xfc\x06\x00\x00\xff\xff\x96\xa3\xfc\xdf\xfa\x00\x00\x00")

func errorTmplHtmlBytes() ([]byte, error) {
	return bindataRead(
		_errorTmplHtml,
		"error.tmpl.html",
	)
}

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

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

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

func headTmplHtmlBytes() ([]byte, error) {
	return bindataRead(
		_headTmplHtml,
		"head.tmpl.html",
	)
}

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

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

var _headerTmplHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x64\x90\x31\x6e\xc6\x20\x0c\x46\xf7\x9e\xc2\x72\xe7\x86\x0b\x90\x48\x1d\xba\x76\xa9\xd4\xdd\x0a\x26\x41\x22\x50\x01\xcd\x62\x71\xf7\xd2\x26\xa4\xbf\x94\x0d\x7f\xcf\x96\x1f\x16\x31\x6c\x5d\x60\xc0\x95\xc9\x70\xc2\x5a\x9f\x00\xf4\x51\x4c\xed\xd9\x8a\x40\x3b\xcc\x9e\x72\x1e\xd1\xb3\x2d\x78\xc4\x0d\x10\xac\x89\xed\x88\xcf\x78\xf1\xb8\x44\x9c\x3e\x29\x90\x71\xdf\x9b\x56\x74\xf5\xe6\x2f\x0a\xbd\x2b\x73\xda\xdd\xcc\x2f\x81\x36\xc6\x49\xa4\xb8\xe2\x19\x86\x8f\x16\x73\x7a\x6f\x61\xad\xf0\xea\x7d\x9c\xa9\xc4\xa4\xd5\xef\xe8\xa9\xa2\x9a\xcb\xdd\x2a\xb9\x65\xfd\xd7\x12\x71\x16\x86\xb7\x8d\x9c\xff\xfb\xcc\x4d\xb6\x6d\xec\xf8\xc1\x50\x84\x83\x39\x07\xae\x3d\x5a\xf5\x4b\x74\xfc\x13\x00\x00\xff\xff\xe2\x89\x41\x0f\x31\x01\x00\x00")

func headerTmplHtmlBytes() ([]byte, error) {
	return bindataRead(
		_headerTmplHtml,
		"header.tmpl.html",
	)
}

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

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

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

func homeTmplHtmlBytes() ([]byte, error) {
	return bindataRead(
		_homeTmplHtml,
		"home.tmpl.html",
	)
}

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

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

var _rootTmplHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x6c\x90\x41\x6b\x84\x30\x10\x85\xef\xfe\x8a\x69\xee\x1a\xf6\x9e\x15\x4a\x2f\x2d\xb4\xbd\x14\x7a\x9f\x35\xb3\x1a\x88\x49\x88\xa3\x20\xe2\x7f\xdf\x51\xd7\xdb\x9e\x26\x19\xde\xfb\x78\xf3\xcc\x9b\x8d\x0d\xcf\x89\xa0\xe3\xde\xd7\x85\x39\x07\xa1\xad\x0b\x00\xc3\x8e\x3d\xd5\xff\x18\xd0\xba\xb1\x87\x65\xd9\x17\x50\xfd\x51\x9e\x28\xff\x62\x4f\xeb\x0a\xef\xde\xc7\x06\x39\x66\xa3\x0f\xbd\x38\x45\x49\x7d\xf2\xc8\x04\x6a\xa3\x29\xa8\xd6\xb5\x30\xfa\x20\x9b\x5b\xb4\x33\x34\x1e\x87\xe1\xaa\x9c\xa5\x20\xbe\x39\xe5\x38\xc9\x3b\x97\x1e\xe7\x38\x32\xe0\x89\xb5\xea\x15\x91\xf2\xc1\x94\x94\xd6\x4d\x27\xac\x47\x17\x76\xb9\xac\xbb\xcb\xb9\x4d\xd8\x52\xb9\xc7\xa8\x3f\x32\x6d\x08\x0c\x16\x7e\xe4\xac\x96\xe0\x2b\x0c\x8c\xa1\xa1\x01\xe2\xfd\xf5\x85\x12\xfb\xf2\x64\xa6\x63\xca\x0b\x4f\xf8\x6d\x64\x8e\xa1\x4c\xf2\x71\x13\x29\xe8\x32\xdd\xaf\x6a\x59\xaa\xcf\xb8\x99\x55\xfd\x1d\x5b\x70\xc1\x68\x7c\x32\xf4\x0e\x31\x5a\x62\x4b\x15\x7a\xeb\x62\x9b\x47\xf7\x8f\x00\x00\x00\xff\xff\xe3\x95\x3a\xa7\x93\x01\x00\x00")

func rootTmplHtmlBytes() ([]byte, error) {
	return bindataRead(
		_rootTmplHtml,
		"root.tmpl.html",
	)
}

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

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

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

func styleCssBytes() ([]byte, error) {
	return bindataRead(
		_styleCss,
		"style.css",
	)
}

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

	info := bindataFileInfo{name: "style.css", size: 0, mode: os.FileMode(420), 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) {
	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){
	"bad-request.tmpl.html": badRequestTmplHtml,
	"dash.js":               dashJs,
	"dashboard.tmpl.html":   dashboardTmplHtml,
	"error.tmpl.html":       errorTmplHtml,
	"head.tmpl.html":        headTmplHtml,
	"header.tmpl.html":      headerTmplHtml,
	"home.tmpl.html":        homeTmplHtml,
	"root.tmpl.html":        rootTmplHtml,
	"style.css":             styleCss,
}

// 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{
	"bad-request.tmpl.html": &bintree{badRequestTmplHtml, map[string]*bintree{}},
	"dash.js":               &bintree{dashJs, map[string]*bintree{}},
	"dashboard.tmpl.html":   &bintree{dashboardTmplHtml, map[string]*bintree{}},
	"error.tmpl.html":       &bintree{errorTmplHtml, map[string]*bintree{}},
	"head.tmpl.html":        &bintree{headTmplHtml, map[string]*bintree{}},
	"header.tmpl.html":      &bintree{headerTmplHtml, map[string]*bintree{}},
	"home.tmpl.html":        &bintree{homeTmplHtml, map[string]*bintree{}},
	"root.tmpl.html":        &bintree{rootTmplHtml, map[string]*bintree{}},
	"style.css":             &bintree{styleCss, 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, "/")...)...)
}
