// Code generated by go-bindata.
// sources:
// assets/aws.yaml
// assets/azure.yaml
// assets/openstack.yaml
// assets/vsphere.yaml
// DO NOT EDIT!

package generated

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 _assetsAwsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x54\x8e\x31\x6b\xc3\x40\x0c\x46\xf7\xfb\x15\x22\xbb\x5d\xda\xa9\xdc\xd8\x40\xb6\x4e\x85\x76\x56\x72\xaa\x11\xf6\x49\x87\xa4\x73\xc9\xbf\x2f\x76\xa9\x21\xab\x3e\xde\xd3\xc3\xc6\x9f\x64\xce\x2a\x19\x3c\xd4\x70\xa2\x71\x7e\xf5\x91\xf5\x69\x7d\x4e\x33\x4b\xc9\xf0\xf1\x77\x3f\x2f\xe8\x9e\x2a\x05\x16\x0c\xcc\x09\x40\xb0\x52\x86\xa9\xbd\x24\x00\x14\xd1\xc0\x60\x15\xdf\x26\xf8\xb7\xdd\x36\x6a\x9c\xfb\x95\x4c\x28\x68\x37\xb3\x0f\x85\xbe\xb1\x2f\x31\xec\x73\x86\x53\x58\xa7\x53\x6a\xa6\x2b\x6f\x31\x64\x19\x1e\x19\xfc\xf1\x81\xae\x9e\x1a\x1a\x56\x0a\xb2\xfd\x4d\xdc\xdb\x51\x40\x72\xb3\x7b\x0b\x2a\x87\x6e\xd5\xa5\x57\x7a\x63\x29\x2c\xd3\xbb\x16\xca\xf0\x85\x1c\x17\xb5\x0b\x9b\xc7\x59\xc5\x7b\x25\x4b\xbf\x01\x00\x00\xff\xff\xbd\x12\x96\xc0\x05\x01\x00\x00")

func assetsAwsYamlBytes() ([]byte, error) {
	return bindataRead(
		_assetsAwsYaml,
		"assets/aws.yaml",
	)
}

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

	info := bindataFileInfo{name: "assets/aws.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _assetsAzureYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x54\x8e\x3f\x4b\x04\x41\x0c\x47\xfb\xf9\x14\xe1\xfa\x5d\xb1\x93\x69\x6d\x15\xc4\x03\x5b\x89\x3b\x3f\x8f\xb0\x37\x99\x21\xc9\x1c\xe8\xa7\x97\xdd\x45\xc1\x36\x7f\xde\x7b\xdc\xe5\x0d\xe6\xd2\x34\x93\x47\x33\xbe\x60\x5e\x1f\x7c\x96\x76\x77\xbb\x4f\xab\x68\xc9\x74\x3e\xe6\x8f\x57\x76\x4f\x15\xc1\x85\x83\x73\x22\x52\xae\xc8\x54\x59\xf9\x82\x32\x75\x43\x95\x51\x13\x11\xab\xb6\xe0\x90\xa6\xbe\x9d\xd1\x2f\x79\xd9\x08\xf3\x3a\x3e\x60\x8a\xc0\x6e\x11\x9f\x0a\x3e\x79\x5c\x63\xda\xd7\x99\x4e\x61\x03\xa7\xd4\xad\xdd\x64\x0b\x83\x65\xfa\xff\xc3\xdf\xc3\x30\x15\xf1\x35\x75\x36\xae\x08\xd8\x6e\x3a\x7a\x9f\x8f\xa0\xf4\xe7\xe5\x65\x69\x43\x23\xbe\x3a\x32\xbd\x1c\x99\xef\x4f\xaf\xe7\xf4\x13\x00\x00\xff\xff\xe9\xd7\x72\x7b\xfe\x00\x00\x00")

func assetsAzureYamlBytes() ([]byte, error) {
	return bindataRead(
		_assetsAzureYaml,
		"assets/azure.yaml",
	)
}

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

	info := bindataFileInfo{name: "assets/azure.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _assetsOpenstackYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x54\x8e\xb1\x8e\xc3\x30\x0c\x43\x77\x7f\x85\x90\x3d\x3e\xdc\x76\xf0\x7a\x9f\x50\xa0\x3b\x13\xab\x85\x90\x44\x0e\x24\x25\xdf\x5f\x38\x45\x87\xae\x24\x1f\x49\xec\x72\x67\x73\x69\x5a\xc8\xa3\x19\x9e\x9c\x97\x3f\xcf\xd2\x7e\xce\xdf\xb4\x88\xd6\x42\xb7\xb7\xfe\xbf\xc2\x3d\x6d\x1c\xa8\x08\x94\x44\xa4\xd8\xb8\x63\xd0\x0a\xab\x89\x08\xaa\x2d\x10\xd2\xd4\xbb\x4f\x9f\xca\xb9\xa3\x79\xe2\x40\x5e\x8e\x89\x4d\x39\xf8\xda\x10\x1f\x2b\x3f\x70\xac\x31\x5e\x99\x42\x43\xd8\xc1\x43\xda\xad\x9d\xd2\x6f\xb1\x15\xfa\x66\x66\xd1\xca\x96\x5e\x01\x00\x00\xff\xff\xf3\x03\x04\x7a\xba\x00\x00\x00")

func assetsOpenstackYamlBytes() ([]byte, error) {
	return bindataRead(
		_assetsOpenstackYaml,
		"assets/openstack.yaml",
	)
}

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

	info := bindataFileInfo{name: "assets/openstack.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
	a := &asset{bytes: bytes, info: info}
	return a, nil
}

var _assetsVsphereYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x54\x8e\x31\x4e\xc6\x30\x0c\x46\xf7\x9c\xc2\xea\xde\x22\x36\x94\x95\x23\x20\xb1\x1b\xe2\x52\x2b\x8d\x1d\xd9\x4e\xce\x8f\x5a\xf8\x87\x7f\xf5\xa7\xf7\xfc\xb0\xf3\x27\x99\xb3\x4a\x06\x0f\x35\xfc\xa1\xad\xbe\xf9\xc6\xfa\x32\x5f\x53\x65\x29\x19\x3e\xfe\xee\xef\x27\xba\xa7\x46\x81\x05\x03\x73\x02\x10\x6c\x94\x21\x0e\x96\x04\x80\x22\x1a\x18\xac\xe2\xd7\x06\x0f\xdd\xf7\x85\x6d\x75\x7c\x91\x09\x05\xdd\x6a\xf6\xb5\xd0\x8e\xe3\x8c\xf5\x9e\x33\x2c\x61\x83\x96\xd4\x4d\x27\x5f\x35\x64\x19\x9e\x99\xe9\xfd\x20\xa3\x75\xea\x39\x1a\xa5\x8e\x86\x8d\x82\xec\xfe\x56\xd8\xeb\xae\xd6\x30\xfe\x7b\x7e\x03\x00\x00\xff\xff\x22\x6d\x66\xbf\xd8\x00\x00\x00")

func assetsVsphereYamlBytes() ([]byte, error) {
	return bindataRead(
		_assetsVsphereYaml,
		"assets/vsphere.yaml",
	)
}

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

	info := bindataFileInfo{name: "assets/vsphere.yaml", 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) {
	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){
	"assets/aws.yaml": assetsAwsYaml,
	"assets/azure.yaml": assetsAzureYaml,
	"assets/openstack.yaml": assetsOpenstackYaml,
	"assets/vsphere.yaml": assetsVsphereYaml,
}

// 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{
	"assets": &bintree{nil, map[string]*bintree{
		"aws.yaml": &bintree{assetsAwsYaml, map[string]*bintree{}},
		"azure.yaml": &bintree{assetsAzureYaml, map[string]*bintree{}},
		"openstack.yaml": &bintree{assetsOpenstackYaml, map[string]*bintree{}},
		"vsphere.yaml": &bintree{assetsVsphereYaml, 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, "/")...)...)
}

