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