diff --git a/web/blob/files.go b/web/blob/files.go index 7f2848cdd..c60f3df1b 100644 --- a/web/blob/files.go +++ b/web/blob/files.go @@ -46,12 +46,12 @@ import ( "compress/gzip" "fmt" "io" - "io/ioutil" + "strings" "os" + "time" + "io/ioutil" "path" "path/filepath" - "strings" - "time" ) func bindataRead(data []byte, name string) ([]byte, error) { @@ -80,9 +80,9 @@ type asset struct { } type bindataFileInfo struct { - name string - size int64 - mode os.FileMode + name string + size int64 + mode os.FileMode modTime time.Time } @@ -120,8 +120,8 @@ func templates_baseHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "templates/_base.html", size: 2017, mode: os.FileMode(436), modTime: time.Unix(1442415434, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "templates/_base.html", size: 2017, mode: os.FileMode(436), modTime: time.Unix(1444576136, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -140,12 +140,12 @@ func templatesAlertsHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "templates/alerts.html", size: 1707, mode: os.FileMode(436), modTime: time.Unix(1442397535, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "templates/alerts.html", size: 1707, mode: os.FileMode(436), modTime: time.Unix(1444576136, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } -var _templatesGraphHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xac\x54\xc1\x8e\x9b\x30\x10\xbd\xe7\x2b\x2c\xdf\x01\x55\x5c\x43\xa4\x9e\x7a\xed\x1f\xac\x1c\x7b\xb6\x76\x62\x8c\xeb\x19\xd2\x20\x94\x7f\xef\x10\x16\x48\x57\x9b\x55\xb3\x21\x52\x24\x6c\x3f\xbf\xf7\x66\xc6\x33\x7d\x6f\xe0\xd5\x05\x10\xd2\x82\x32\xf2\x72\xd9\x08\xfe\x6d\x51\x27\x17\x49\x60\xd2\x95\xec\x7b\x11\x15\xd9\x9f\x89\x81\x67\x71\xb9\x14\x48\x8a\x9c\x2e\x4e\x10\x4c\x93\x8a\x7d\xd3\x10\x52\x52\x31\x2b\xf3\x32\xff\x56\x1c\x70\xd9\xca\x6b\x17\xf2\x03\xca\xdd\xb6\x18\x19\x77\x9b\x91\xdf\xbb\x70\x14\xd4\x45\xa8\x24\xc1\x99\x0a\x8d\x28\x45\x02\x5f\x49\xa4\xce\x03\x5a\x00\x92\xc2\xb2\xe4\x7d\x7d\xbe\x53\xfc\x62\x11\x9b\x0f\xb7\xd7\x64\x7e\x8b\x2c\x39\x7d\x44\xab\xfe\xcc\x1f\xd7\x70\x46\xb1\xb5\xb5\x96\x2c\x1a\x45\x40\xae\x86\xc8\xa2\x70\xff\xe0\xc6\xcb\xc3\x25\x9b\x03\x7b\x5b\x9b\x32\x3f\x95\xef\xea\xb4\x02\xa7\x57\x5d\xd3\xd2\x07\x6f\xe0\xcb\xdc\xff\x14\xe2\x39\xce\xc7\x13\xbe\x92\x5e\x99\x0d\x2f\x46\x0d\xed\xf6\xe1\xe6\xdd\x9e\x79\x40\x8c\x7b\xd0\xaa\x60\x3c\xec\x55\xc2\x27\x8d\x33\xd7\xe1\x77\x0b\xa9\xcb\x11\x3c\x68\x72\xcd\xb3\xa9\x5f\x18\x6d\x43\x47\xe8\xde\x3b\xfc\x7f\xc2\xc3\x34\x01\x3e\x21\x70\xa6\x92\x57\xd0\x0b\x41\x1d\x3d\xd7\x54\xde\xf6\xec\x39\x5b\x32\x95\xcd\x88\x1b\xb2\xbe\x67\xd7\x3c\x17\x37\xcb\xa8\xd4\x4d\x20\x08\x34\x4f\x4b\xe3\x4e\x37\x32\xc3\xa9\x62\x5c\x92\x42\x7b\x85\x58\xc9\x79\x27\x7b\xf5\xad\x33\xd3\xf8\x28\xf8\xde\x6e\x61\xf8\x14\x3c\x62\x76\x5b\x17\x62\x4b\x13\x74\x4f\x41\xf0\x3f\x8b\xc9\xd5\x2a\x75\x53\x5c\xd8\xee\x6b\xc7\x83\xe7\xa4\x7c\xcb\xcb\xef\xc6\x88\x1f\x83\x33\x79\x35\xa9\x8c\x79\xb9\x1a\x1d\x82\x5c\x1c\x8c\x9f\x53\xb0\x7f\x03\x00\x00\xff\xff\x1a\x4d\x08\xa1\x17\x06\x00\x00") +var _templatesGraphHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xac\x94\xcb\xae\x9b\x30\x10\x86\xf7\x79\x0a\xcb\x7b\x60\x91\x6d\x40\xea\xaa\xdb\xbe\x41\x64\xec\x49\x6d\x62\x8c\x6b\x0f\x34\x08\xf1\xee\x35\x10\x2e\x3d\xca\x89\x12\x85\x48\x91\x7c\x19\x7f\xf3\xcf\x18\xff\x5d\x27\xe0\xa2\x0c\x10\x2a\x81\x09\xda\xf7\x07\x12\x7e\x27\xad\xcc\x95\x60\x6b\x21\xa5\x08\x37\x4c\xb8\xf7\x94\x38\xd0\x29\xf5\xd8\x6a\xf0\x12\x00\x29\x91\x0e\x2e\x29\xed\x3a\x62\x19\xca\x5f\x61\xa2\x6e\xa4\xef\x13\x8f\x0c\x15\x1f\xce\x24\xbf\x1d\xb3\x32\x1e\x4e\x67\x87\xfd\xc8\x0d\x18\x51\xb9\xc4\x29\x7e\xf5\x92\xfd\x5d\x06\x71\xa9\xcc\x3d\xd9\xde\xb9\xf2\xaa\x42\x8f\xa1\x9a\x48\x30\x04\x54\x25\xd8\x90\x14\xbe\xdf\xd8\x68\x99\xc4\x78\xee\x94\x45\xe2\x1d\x7f\xbd\xb0\xfb\x5c\x1c\xe3\xe6\x18\x17\x81\x75\x4a\x26\x4c\xb6\x07\x53\xb3\xb6\xaa\x71\x14\xba\x13\xfb\xbf\x8b\xf8\x8c\xf9\x7e\xc3\x77\xca\x77\x8c\x86\x2f\x86\x0d\xcf\xe1\xe1\xe2\x83\xda\xde\x4e\x56\xf8\x44\x32\x23\x34\xe4\xcc\xf9\x0f\x85\x07\x56\xf1\xa7\x06\xd7\xc6\x1e\x34\x70\x54\xd5\xa7\xad\x5f\x89\xb2\xc2\x2b\xb4\x5f\x15\xbe\x0e\x2c\x66\x07\x78\x02\x50\x22\xa5\x63\xd0\x19\xa1\xb4\x3a\xdc\x29\xdd\xbe\xd9\x5b\xb4\x76\x2a\x5a\x22\x36\xb0\xae\x0b\xaa\x83\x6f\x1d\x56\x2b\xe3\x95\x41\x30\xb8\xb8\x99\x50\xcd\x26\xcd\xb0\xcb\x42\x9c\xa3\x84\x6b\xe6\x7d\x4a\x97\x95\xe8\xa2\x6b\x25\x66\xfb\x48\xc2\xb9\x6c\x25\x3c\x0d\x9e\x62\xb2\x93\x32\xb6\xc6\x39\x34\x47\x43\xc2\x3f\xb2\x4e\x95\xcc\xb5\x73\x5d\xbe\xce\x4b\x15\x8c\xa7\x61\xba\x0e\xd3\x1f\x42\x90\x9f\x83\x32\x3a\x8a\x64\x42\x9c\x47\xa1\x43\x91\xab\x82\x69\x38\x17\xfb\x2f\x00\x00\xff\xff\x57\xfd\x78\x07\xb7\x05\x00\x00") func templatesGraphHtmlBytes() ([]byte, error) { return bindataRead( @@ -160,8 +160,8 @@ func templatesGraphHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "templates/graph.html", size: 1559, mode: os.FileMode(436), modTime: time.Unix(1442397535, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "templates/graph.html", size: 1463, mode: os.FileMode(436), modTime: time.Unix(1444576136, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -180,8 +180,8 @@ func templatesStatusHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "templates/status.html", size: 3393, mode: os.FileMode(436), modTime: time.Unix(1442397535, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "templates/status.html", size: 3393, mode: os.FileMode(436), modTime: time.Unix(1444576136, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -201,7 +201,7 @@ func staticCssAlertsCss() (*asset, error) { } info := bindataFileInfo{name: "static/css/alerts.css", size: 74, mode: os.FileMode(436), modTime: time.Unix(1442397535, 0)} - a := &asset{bytes: bytes, info: info} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -221,7 +221,7 @@ func staticCssGraphCss() (*asset, error) { } info := bindataFileInfo{name: "static/css/graph.css", size: 2668, mode: os.FileMode(436), modTime: time.Unix(1442397535, 0)} - a := &asset{bytes: bytes, info: info} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -241,7 +241,7 @@ func staticCssProm_consoleCss() (*asset, error) { } info := bindataFileInfo{name: "static/css/prom_console.css", size: 2883, mode: os.FileMode(436), modTime: time.Unix(1442397535, 0)} - a := &asset{bytes: bytes, info: info} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -261,7 +261,7 @@ func staticCssPrometheusCss() (*asset, error) { } info := bindataFileInfo{name: "static/css/prometheus.css", size: 346, mode: os.FileMode(436), modTime: time.Unix(1442397535, 0)} - a := &asset{bytes: bytes, info: info} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -281,7 +281,7 @@ func staticImgAjaxLoaderGif() (*asset, error) { } info := bindataFileInfo{name: "static/img/ajax-loader.gif", size: 847, mode: os.FileMode(436), modTime: time.Unix(1442397535, 0)} - a := &asset{bytes: bytes, info: info} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -300,12 +300,12 @@ func staticJsAlertsJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "static/js/alerts.js", size: 444, mode: os.FileMode(436), modTime: time.Unix(1442397535, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "static/js/alerts.js", size: 444, mode: os.FileMode(436), modTime: time.Unix(1444576136, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } -var _staticJsGraphJs = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xe4\x3c\x6b\x73\xdb\x46\x92\xdf\xf5\x2b\xc6\x58\x97\x09\x46\x14\x24\xd9\x9b\xdc\x2e\xf5\xb8\x73\x6c\x39\xf6\xae\x63\xfb\x64\x65\x37\x57\x8a\x4e\x35\x24\x46\x04\x6c\x10\x40\x80\xa1\x24\xae\xa3\xff\x7e\xdd\x3d\x4f\x3c\xf8\x88\xb7\x6e\xab\xae\x4e\x1f\x28\x71\x1e\x3d\x3d\x3d\xfd\x9e\x1e\xdd\xf2\x8a\x7d\xa8\x8a\xb9\x90\x89\x58\xd4\xec\xc4\xff\xf2\xdb\x6f\xec\xcb\xc3\xd1\x0e\x0e\x99\x55\xbc\x4c\xb0\xfb\xf2\xca\x6b\xb8\x10\xf3\x32\xe3\x52\x1c\xed\x50\xdb\xc7\xb3\x17\xef\xdf\xbd\x84\x41\x87\x07\x07\x07\xd0\xf6\x9a\xe7\x71\x26\x26\xbc\xaa\xa3\x4a\xcc\xd2\x5a\x8a\xea\xb5\xc8\x4a\x51\x85\x83\x92\xcb\xe4\x43\x25\x6e\xd2\xfb\xc1\x88\xdd\x2c\xf2\xa9\x4c\x8b\x3c\x1c\xb2\x2f\xac\x12\x72\x51\xe5\xec\xc3\xf3\x8b\xd7\xd7\x1f\xce\xcf\x5e\xbd\xf9\xf9\x88\x3d\x0c\x01\x9a\x43\x2c\xfa\x01\x17\x87\x75\xec\x44\x91\x89\xb9\xc8\xe5\x88\x15\x25\x7e\xaf\x01\xd0\x0e\x63\x32\x49\xeb\x48\x64\x30\x50\xf7\x1f\x99\x46\x3d\x0c\x7a\xf4\x5f\xb6\x67\x9a\xf0\x7c\x26\x14\xe6\x15\xf4\xe7\x8b\x2c\xb3\x9d\x55\x3a\xfd\x5c\x27\xfc\xce\xac\xdf\xe8\x8c\xb9\xe4\x9a\x40\xa6\x29\xcd\x53\x99\xf2\x2c\xfd\x87\x08\x61\x07\x0f\x3d\x9b\x88\x64\x3a\x17\xaf\xf8\x54\x16\x15\x62\x83\x58\x07\xcb\x60\xcc\xbe\x3b\x60\xdf\xa8\x8f\xa7\x7f\x84\x8f\x67\xdf\x7d\x3b\xc2\xae\xbb\x6e\xd7\xbf\x51\x47\xdc\xea\xa0\xc6\xc4\x35\xd2\xf7\x39\x7d\xa7\x3f\x6b\xf8\xf3\xb0\x1f\x23\x38\xa6\xf2\x6f\x3c\x5b\x08\x3a\x6e\x1c\x7c\x58\x07\x23\xf8\x3c\x50\xbf\xe6\xf8\xf9\x2d\x7d\x1e\xaa\x5f\xcf\x0e\xd4\xb7\x04\x3f\x9f\xd2\xe7\x77\xf4\x79\xa8\xbe\x1c\xc6\xd4\x01\x9f\x04\xed\x8e\xbe\xd1\xe7\x1f\xe9\xf3\x4f\xf4\x79\xb8\xa4\xf6\x65\xb0\x73\xd5\x87\x56\xbe\x98\xff\x60\x98\xf0\xa0\x6f\x40\x59\x15\xb2\x90\xcb\x52\x78\x64\xf7\x79\x44\xf1\x04\xf2\x69\x2d\xb2\x1b\xe8\xc1\x23\xc2\xd3\xc3\xaf\x51\x1a\x37\x78\xbf\xbd\xe8\xee\x2e\x9d\xea\xfe\x3e\xfb\x28\x24\x8b\xc5\x0d\x5f\x64\xd2\x30\x4f\x64\x80\xe8\xef\x97\x41\x1a\x07\x57\x00\x4f\x43\x3e\xea\xf4\x57\xc8\x64\xd7\x69\x5e\x2e\xa4\x1b\xb8\xa2\x17\xa4\x10\x49\x8b\x40\xd2\x1b\x16\x36\x87\x4a\x3e\x41\x00\x27\x27\x6c\x91\x03\x56\x69\x2e\x62\xb5\xcf\xf6\x8a\x7a\x20\x3b\x44\x38\x0f\x7a\x2f\x2f\x2b\x7e\xa7\x24\x99\x4d\x8b\x5c\x56\x45\x56\x33\xe0\x7c\xfa\xc2\x01\x56\xc5\x6e\x80\x22\xcc\xc9\x31\x93\x5a\xe2\xa3\x1d\x4d\x4b\x9a\xfd\x5a\xce\x51\xca\x1a\x3a\xa1\x81\xe8\xd0\x92\x40\x64\x11\x2f\x4b\x91\xc7\xa1\x9d\x39\x34\xa4\xfd\x01\x48\x0b\x3a\x41\x54\x22\x9f\x02\xf7\xc9\x82\xf1\x2c\x83\x63\x12\x2c\xcd\x41\x77\x88\x5a\xa6\xf9\xcc\xc8\x72\x0d\x8d\xd4\xe7\xf0\x57\x28\x03\xb2\x0a\xdc\x24\x85\xad\x88\x5b\x18\xcb\x12\x25\xcf\x74\x52\x16\xeb\xbf\x57\x88\x49\x65\xc8\x0f\x98\x01\xfd\xe2\x30\xf8\x03\xf5\x5e\xdf\xa9\xee\x80\xed\x9a\x73\x74\xbb\xf8\x75\x21\xaa\xe5\xab\xa2\x9a\x9b\x5d\x6b\x58\x1a\x82\xea\xbf\xbe\x81\x01\x81\xda\x9d\x5a\xe1\xbe\xac\xfa\x27\x48\x71\x2f\x79\x25\xf8\x65\xce\xe7\xe2\x04\xc7\x5d\x05\x1e\xcd\xe0\x7b\xf4\x59\x2c\x4b\x20\x41\x1d\x3a\xa5\x67\x4e\x1a\xf6\x7a\x86\x04\x62\x77\xbc\x66\x34\x48\xc4\xec\x2e\x95\x49\xb1\x90\x44\xa2\x3a\x49\x6f\x24\x03\x08\x11\x8d\x47\x36\x12\xd1\x5d\x92\x4e\x41\x89\x01\x4b\x3c\x63\x4f\x9e\xb0\x47\x22\xa2\x61\x7f\x15\x4b\x03\xb7\xbd\xd9\xa8\x5e\x4c\xe6\xa9\x0c\x09\x33\xfc\x11\x20\x74\x44\xe0\x97\x4a\x20\x4c\x0f\xf1\x17\xe1\xf5\x7c\x21\x8b\x3d\xc0\x08\x65\x11\x31\xc1\x8d\x32\xdc\x29\x2b\x72\x46\x1c\xae\x50\xc2\x43\x29\x6e\x6e\x6a\xe0\x80\x13\xad\xa2\xe9\xdb\x6b\x91\xce\x12\xc9\xf6\xb4\x72\xce\x52\x58\x4c\xb5\x1d\xd9\x79\x0a\xfc\x85\x26\x61\xd3\x2c\xb8\xad\x30\xf6\x18\xbf\x47\x53\x20\xe1\x20\x21\x10\x60\x7a\x06\x1c\x10\x1c\xb4\x5b\x81\x15\xea\x29\x48\x43\xa6\x97\xdf\xd5\xb8\x99\xed\xa9\x5f\x8f\x43\x44\x6a\x18\xc1\x42\x03\xa0\xed\xa2\x54\x1b\xea\x1a\x34\x1f\x3d\x35\x47\x99\x34\xa6\x3f\xdd\x21\x2b\xeb\x13\xd6\x60\x0e\x04\x29\x9e\xf7\x4a\x7e\xde\xe4\x3f\x9d\xbf\xf5\x38\x89\x34\xc4\x1b\x5c\xcd\x70\xaf\x3b\x24\xc5\x51\x84\x8a\x62\x27\x4f\x9d\xf8\x5c\x55\x4b\x3e\xfd\x2c\xe2\xef\x65\xbe\x0a\x86\x19\x72\x3d\x91\x79\x77\xe2\x16\x2b\xeb\x91\xfe\xaa\x69\x5e\x8b\x4a\xfe\x28\x24\xd8\xd2\x55\x10\xa0\x51\x4c\x35\x08\x35\xfe\x7a\x4e\x13\x7c\x40\xa0\x28\x80\xb2\xc9\x1b\x64\xfc\x5b\x9e\x6d\x03\x4b\x4f\xb9\xf2\x65\x12\xf4\x46\x5d\x64\xe2\x82\x4f\x56\x88\xb2\x1e\xe0\xad\xac\xd4\x1c\x4c\x60\x2b\xa6\x28\xfd\x61\x35\x92\xbf\x1c\xa8\xe1\xba\x7f\x16\xbf\x44\x07\x62\x4f\x16\xb3\x59\x26\x4e\x06\x30\x70\xe0\x6f\x17\x27\x46\xe2\xd7\x3e\xf5\x3f\xc4\x4e\xd8\x69\x52\xdc\xb5\x27\x00\x0b\x52\x7b\x1e\xc1\x17\x1c\xec\xf1\xa6\x55\x1f\x28\x43\xc0\x9b\x33\x92\x3d\x10\x92\x48\x7d\xd1\xcc\xde\x6f\x46\xd4\x90\xa8\x04\x96\xce\x41\xec\xe1\x58\x63\x71\x6f\xc4\xbf\x9f\x7d\x4d\x2f\x6a\x9f\xc7\xa0\x65\x51\xb1\x6a\x30\x5c\xca\x0a\x28\x50\xa5\x7c\xcf\xd8\xa1\x60\x38\x8c\x12\x5e\xbf\xc8\x38\x48\x66\x50\x89\xac\xe0\x31\xb4\x35\x35\x93\xd2\x47\xff\x89\x47\xee\x54\x8f\x92\x2a\x65\x02\xce\x95\x33\x39\x2f\x6e\xc1\x9e\xdc\x14\x53\x70\x6a\x27\xc0\x92\x68\x5a\x48\x19\x03\x77\x49\xc1\x63\x10\x6f\xa6\x60\xa1\x85\x89\xfa\x78\x35\x9a\xd0\x29\x81\x9c\xc7\x40\x4e\xf4\x54\x94\xa3\xda\x4b\x51\x27\xd0\xb4\x66\xe8\x93\x92\x9a\x81\x61\xc3\xe6\xb7\xa1\xc2\x99\x19\xff\xb7\x5f\xb5\x3e\x0c\x9d\x31\xa9\xaa\x62\x85\x35\x51\x7d\x01\x10\x30\x8d\x45\xd8\x62\xdc\xe7\x4a\x47\xae\xe6\x5b\xd4\x52\x6d\x6e\x37\xd2\x65\x21\x34\xa6\x78\xa3\x97\xcf\xef\xd3\x7a\xe5\xe8\xe5\x35\x87\x6e\x6f\x78\x26\x66\xe0\x0a\xac\x40\x47\x75\xfa\x8a\xa7\x4c\xf3\x5c\xac\xda\xb4\xee\xf5\xed\x26\x10\xf6\xa3\xe4\x72\x85\xc4\x51\xff\x75\x8d\x03\x1a\x56\x3a\x8f\x5f\x82\xff\xd2\x3f\xc7\x53\x6e\x30\xae\xab\x54\xf5\x64\x0c\x06\x04\xba\xf6\x25\x44\x0c\x10\xef\x28\xb6\xc8\x40\x11\x2f\xf8\x4c\x8c\xd9\x40\xe4\x83\x11\xb5\xe1\x80\x8f\x02\xb8\x3e\xae\xc7\xec\x86\x67\xb5\x18\x59\xbb\xd0\x75\xf7\xec\x9a\x20\xf5\x0d\x5e\x73\xcb\xf2\x70\xd0\x5c\x1c\xac\x1b\x98\x2e\xf2\xe8\xd7\x40\x53\x6e\x61\x0b\x9c\x36\x47\x0d\x73\xd6\x15\x3c\xdf\x8a\xb5\xb4\xf2\x6a\x08\x8b\x12\xb1\x3c\x57\xc3\x35\x0c\x2b\x77\xf5\x47\x6b\x62\x5a\xee\xbb\x95\x0f\xdf\x12\x29\x01\x22\x2f\x78\x70\x38\xa0\x9d\x1c\x19\xff\xb4\x96\xcb\x4c\x10\x38\x65\xe8\x3a\xf0\x70\x50\x0a\xf4\x37\x4c\xeb\xcc\xa2\x3a\xf2\x41\x34\xcb\x96\x65\x82\x43\x06\x9e\x06\x6b\x22\x1a\x76\x34\x93\x83\xc2\xe3\x58\x6b\x31\x30\xa3\x7b\x65\x95\xce\x79\xb5\x0c\xac\x0f\x85\x80\xbd\x31\x76\xb1\xbd\x69\x22\xa6\x9f\x5b\xe3\x2a\x81\xaa\xac\x33\x14\xf6\x84\x83\x45\x6c\x86\x3f\x80\x0b\x53\x8b\x95\x28\x35\xc0\xfc\x3e\xac\x3a\x4b\xad\xc7\xac\xb1\x89\x87\x1d\xed\x3b\x35\x0e\x25\xf4\x4e\xde\xc3\x11\x7c\xbd\xe9\xe7\xb0\x73\x5c\x7d\xb4\x47\xf7\xd5\x29\x9c\xbf\x7c\x7c\xff\xce\x9d\x06\x18\x81\x37\x37\x5e\x9c\x80\x2e\xb2\x5e\x65\x44\xcd\x45\x95\xce\xd2\x1c\x1c\x08\xd0\xf5\x29\x58\x09\x0a\xe3\x67\x85\x64\xf3\x05\x68\x06\x11\x3b\x38\x61\x3d\xe5\x19\xc6\x57\x18\x22\xdd\x09\x96\x0b\xe0\x50\xb0\x24\x15\x8a\x6f\x2d\xab\xc5\x54\xb2\x54\xaa\x90\xa9\x01\x19\x31\x22\xb8\x91\x7f\x1e\x3a\x5f\xa0\x8c\x35\xf8\x68\x35\x86\x0b\x2f\x51\x80\x5b\x7b\x71\xc4\x63\x5d\xb6\xef\xd0\xe2\xdf\xd9\xe0\x60\xc0\xc6\x28\x09\xd6\x1c\xb7\xa8\x6d\x01\x29\x21\x24\x4b\x1d\x5a\x7f\xb4\x13\xe3\x18\xb7\xbf\x73\x16\x2d\x07\xca\xe3\x17\x63\xaf\xbd\xb5\x8c\xd7\xb4\x7e\x54\x8f\x45\xd7\x02\x4f\xba\xb1\xe5\x33\x6b\x95\x6f\xed\x5c\x17\x75\xa5\xb5\x27\x0b\x29\x8b\xdc\x38\x94\xd3\x6b\xf2\x88\x41\x6d\xf7\x30\x99\xb1\xfc\x53\x30\x5b\xb5\x38\x27\xed\x65\xdd\xf5\x8d\xc0\x63\xb1\x05\x70\x18\xd4\x05\xbe\x2d\xea\xa0\x9a\xb7\x41\xfc\x0c\xe6\xfe\x3e\xb4\x37\x00\x36\x48\x7b\x80\x7b\xdd\xa4\x1e\x85\xdf\xf2\x7d\x94\x47\x8e\x7d\xc0\x00\x65\xc6\xa7\x02\x7c\xa8\x2f\x18\x18\x8e\x7b\xe0\x91\x6a\x1f\x81\x07\x17\x83\xd9\x0c\x26\x02\x84\x44\x04\x0f\x1d\x87\xca\xf8\x59\x28\xa7\x60\x83\xf0\x1b\x78\x72\x2d\x8e\x2e\x8b\x72\x81\xa9\x89\x37\xb4\x00\x9f\x64\x42\x2d\x52\x6b\xde\xb1\xba\xc5\xf3\xca\x7c\xf4\x3b\xcc\xf9\xd0\x9f\x41\x73\x99\xa8\x95\x2b\x6e\x95\x98\x7a\x1c\xf1\x4f\xfc\x3e\x34\xaa\x0c\x17\x29\x62\xa0\xc2\x0f\x67\x17\xc1\x48\x37\x2e\xaa\x6c\xec\x27\x4b\xc1\xa9\x0e\xf6\x79\x99\xee\xdf\x1e\xee\x67\x7c\x22\xb2\xfd\xeb\x6b\x3c\xe3\xeb\xeb\xfd\x5b\x4a\xea\xd9\x99\xa8\x7f\x2e\x00\x49\x00\xf8\xa9\x2e\x72\xdb\x5e\x2f\xa6\x53\x51\xa3\x37\x62\x10\xc4\xee\x11\x85\xee\xe8\x4d\x2d\x6a\x3f\xa8\x46\x9a\x61\x3f\x2a\x25\xe8\x62\x8f\xc0\x08\x07\x1a\x44\xe0\x0f\x34\x34\x84\x68\xe4\x0c\xdd\xd3\x30\xa0\x5f\x0c\x55\x00\xa6\x75\xf8\x2d\x4f\x33\xa4\x10\x53\xb1\x5e\xfd\x28\x18\x7a\x93\x95\x16\x38\xb2\x2d\x0f\xf6\x2f\x24\xdc\xdc\x52\x95\x70\xc1\xad\xb9\xa1\xc0\x32\x2c\x24\x33\x4f\xa9\x43\xf8\x75\x6c\x26\x80\x8f\x99\xcf\x64\x02\x6d\xbb\xbb\x3d\xc8\xfa\x9c\x78\x79\x70\x65\x3c\x27\x54\x61\x61\x2e\xee\x98\x0a\x6f\x42\x0d\xec\x32\xbd\x1a\x31\xf7\xf7\x70\xd8\x87\xad\xe3\x2f\x64\x10\x9e\x40\xf4\x11\x36\xd6\x2d\x16\xd5\x14\xce\x44\xc3\x19\x79\x5d\xa9\x14\x73\x38\x96\x80\x67\x59\xe0\x20\x7b\xab\x00\xef\x5f\x00\xeb\x90\x61\xa2\xf4\x59\x42\xa9\x36\xc6\x6f\x30\x39\x04\x41\x16\x9f\x26\x48\x6a\x4a\xc4\x98\xd5\x59\x99\x2d\xc0\x4c\x8d\x18\x18\xc6\x54\xfa\xb0\x0a\x18\x57\xdd\xa5\xe0\x47\x4c\x40\xf4\x3f\xd7\xad\x79\x86\x3d\x78\x96\xca\x65\xd4\xb3\xc1\x46\xec\x03\x98\x9a\xbd\x50\x74\x32\xee\x7a\x62\x5f\xc7\x23\x0d\xf0\x0f\xab\xd2\xec\x4e\x24\x8b\xfc\x05\xa9\x28\x5f\x02\x75\x7a\xd0\xbb\x35\x68\x5f\x03\xe8\x11\x1b\xa1\x43\x34\xfb\xde\xde\x2d\x6c\x96\x70\x4a\x7b\xd9\xf1\x5f\x9c\xdb\xaa\x1a\x29\xc3\x63\xd2\xf0\x8c\x35\x12\xc3\x8a\x9a\x9e\x0f\xaf\x1b\x30\x7d\xdf\x6e\x21\xdf\x00\x79\xe6\x6a\xb5\xa1\x51\x53\x86\x91\x00\x26\x71\xea\x9b\xe2\xfa\x91\xc9\xb9\xba\x93\x42\x1c\x51\xad\xb8\xbb\x95\x08\xbf\x5a\x97\x10\x63\x7c\x10\x9f\xe7\x55\xc5\x97\x21\xf6\x8c\x1a\x5b\x1a\xb2\x53\x10\x45\xff\xe0\x4d\x50\x82\x63\xaf\x3c\xa8\xa4\xb4\xec\x19\x5b\xf3\xef\x62\x18\xe0\x34\x97\x42\x77\x8a\xbb\x31\xc8\x64\x2d\x7a\x72\x19\x38\x4e\x7b\x18\xf6\x2a\x68\x93\x52\xe7\x55\x2d\x5e\x2e\x2a\x8e\xc3\xfd\x63\xa6\xe3\xc1\x44\x9f\x3b\x6f\x6a\x3a\x3f\xc3\xbb\x22\xd0\x17\xe7\x62\x76\x76\x5f\x86\xc1\x7f\x87\x97\x07\x7b\x7f\xbe\xda\x1d\x86\x97\xcb\xbb\x38\x99\xd7\xf0\xe7\x63\xc5\xca\xa4\xcd\xb8\x04\xbf\x19\xcf\xdd\x42\x8c\xa8\x2d\xd4\xe0\x6c\x74\xf8\x48\x0f\xf5\x2e\xce\x1e\x4c\x9f\xee\xd2\x2a\x0e\x14\x33\x7b\xd6\x8a\xa1\xbe\x3b\x30\x51\x1f\xae\x4a\x94\x86\x35\x69\x7b\x10\xc0\x19\x00\x97\x87\x57\x16\xb3\x45\x9e\x62\x92\xc8\xf4\x3c\xf5\xc9\xa7\xe6\x7f\xd3\xbd\x44\xf1\xae\xb8\x2e\x11\xc0\xd5\x46\x0a\x37\xdc\xaf\xad\x05\x89\x88\xa3\x63\x69\x73\xd8\x8d\xb3\x0a\x5b\xb9\x53\x9b\x78\xe9\xb7\x11\x6b\x6e\xc6\xfa\xec\x06\xd2\xbc\x81\xc2\x71\x1f\x0a\x6b\x80\x92\xcd\x68\xc6\x6c\x2d\x5c\x37\x4c\xf6\xa5\x6f\x85\x1f\xe3\x74\x6c\xd7\xd1\x76\x66\xca\x37\xb6\x0f\xdb\xf8\x39\x0d\x97\xf6\x5f\x7f\x60\x9b\x4f\x8a\xed\xb1\x43\x3c\xd5\x53\x75\xba\x7b\x7b\x2b\x4f\xed\xf4\xff\xcf\xa9\x81\xb1\x3a\xb3\xc9\xae\xcd\x47\x46\x0a\xa7\x91\x22\xfb\xed\x37\xd6\x68\x68\x62\xad\xf5\x02\x2a\x3e\xec\x0c\x6d\x8e\xc9\x4f\xe1\x6c\xc8\x5c\x01\x8a\x6a\x2e\xfe\x75\x01\x3d\x2b\x2f\xd2\x9b\x36\xb8\xfa\xf8\xfb\xf6\x86\x4d\xb1\x1a\xac\xa2\x55\x3b\xdd\xcb\x9f\xd6\xae\x11\xc7\x0e\x3d\xe5\x17\x53\x15\xc4\xc3\x5a\xbc\xea\x5e\x94\x08\xd2\xda\xab\xe9\x6d\x93\x7b\x1a\xa7\x2d\x75\xeb\x59\xde\x93\x5e\x5b\x85\x82\xb7\x73\x7b\x9c\x86\x4e\x3e\xad\x01\xcc\xee\xf6\x72\x0c\xc6\x02\x2b\x45\xf6\x9f\x32\xf8\x1b\x1c\x4e\x83\x1a\x9b\x2c\xd9\x21\xb4\xd2\x04\xf6\x04\xef\x76\x6f\xc1\x0f\x67\x73\xba\xf3\xad\x77\xfa\x85\x61\x4b\x15\xf5\xbf\xb5\xef\xbd\xaf\xdb\xf7\xd7\x6d\xc6\x1b\xbd\xfd\x66\xa6\x99\xe0\x95\xf2\xab\x87\x2d\x79\xee\x68\x1c\xa7\x4b\x1e\x76\xda\xd9\x16\x74\xcf\xc3\x9e\x2c\x7b\x24\xe6\xa5\x5c\xea\x58\x5a\xe5\x5e\x79\x45\x42\xab\xdd\x9f\xae\x24\xff\xf3\x76\x40\x5f\x00\x17\xd9\x42\x7b\x63\x9b\xef\x24\x8d\x7f\x8c\xe9\x0e\x95\x39\x06\x3d\xf6\x23\x97\x09\x38\x59\xf7\x21\xfd\x71\x93\x15\x40\xa5\x06\x5e\xfb\xec\xe9\xb7\x07\xc3\x11\x3b\xb4\xcb\xba\x8b\x82\x8e\xca\x80\xd1\xba\x06\xca\xd3\xeb\x84\xd4\xcf\x49\xd5\xc8\x29\x98\xc6\x88\x4f\x8a\x4a\x3a\x1d\x49\xde\x56\x95\x99\xb5\x74\x44\x6d\xbe\x02\x75\xf8\xdc\x14\x0c\x81\x8b\x4f\x50\x82\x71\xdb\x09\xde\x61\xce\x1d\xec\xbd\xc7\x3b\xf1\xbc\x70\x05\xf3\x72\x40\xa7\x36\x20\x1f\x5c\x6f\x70\xaf\x71\x42\x47\x8d\xd1\x30\xc6\x1f\x7b\xd4\x02\x25\x4a\xea\x75\x27\xa4\x06\xc0\xce\xd0\x6c\xf7\xa7\x2d\x54\xf1\x04\x2d\x19\xe8\x3c\x8f\xda\xbd\xcf\xea\x3d\x39\x09\xb5\x7b\x15\xa9\x91\xc0\x9c\x8b\xba\x84\xdd\x8a\xee\xe0\x23\x45\x97\x46\x9a\xdc\x20\x8d\xca\x95\x90\x76\xec\x6b\x4e\x73\x3b\xd4\xbf\x1a\xe9\x17\x2a\x95\xba\x19\xed\x66\x10\x07\xdc\x83\x17\xb7\xfd\xc9\xa2\x96\x38\xa8\x9b\x56\xd5\x19\x0c\x1b\x49\x24\xf8\xd8\x94\x1a\xc2\xf6\xb1\x26\xd4\xbf\x3a\x5d\x44\xb3\x28\x75\xe0\x65\x3c\xd6\xe5\x85\x34\xd4\xd0\x66\x84\x9a\xa4\xdc\x94\x95\xb8\x4f\xaa\x11\xf2\x6d\xd9\x46\x1f\xdb\x30\x9a\x0a\x48\x62\x5b\x48\x93\x5e\xa8\x2a\x1f\x43\x9c\x03\xc0\xa2\x4a\x1f\x2b\xdd\x06\x3c\xea\xab\xd8\x32\x3f\x00\x00\x0e\xb4\x3d\x47\x6d\xde\x87\xdc\xba\xe5\x69\x4f\x56\x24\xc6\xe8\xb1\x31\x69\x35\x89\x75\xb6\x45\xdc\x8b\xe9\x82\x4a\xad\x88\x6f\x80\x09\x80\xc5\x01\x6c\x4f\x3e\xcb\x52\x6f\x5a\xcc\xcb\x4c\x48\xb1\x22\xad\x43\xee\x95\x8b\x98\xfb\x8c\x01\x1a\x50\x23\x70\x47\xad\x6c\x92\xb5\x30\x89\x9c\x67\x61\xf0\xb6\xe0\x31\x43\x31\x55\xa8\x59\xc0\x20\x88\xa0\x14\x8f\x27\x15\xdb\x3f\x85\x58\xdb\xa8\x1c\x35\xca\x33\x12\xbb\x58\xff\x38\x6c\x2d\xd2\xbe\x4b\x70\x1b\xdd\x22\xa9\x64\x69\xe8\x4b\xfb\xbc\x9e\x6d\x70\xec\x70\x46\x84\x4c\x49\x63\x5b\xed\xc6\xcc\xae\x77\x2a\x9d\x51\xff\xda\xa5\x07\x83\xf6\xca\x86\x04\xeb\x57\x6e\xdc\xe0\x6e\xe1\x85\xf8\x76\x08\x0f\xaf\x58\xc8\x37\x2f\x0d\x93\xdc\x81\x99\x2e\xee\xd4\x6e\x2e\x54\x67\x7b\xa4\xd5\x7c\x69\xab\xe4\xa7\xcf\x55\x68\x5d\x43\x3b\x7f\x81\x9c\x1e\x03\xa1\x99\x36\x31\x44\xb0\x4b\xc2\x02\x1a\xaf\x5a\x71\x29\x62\xd5\x7f\xb3\xd1\x13\x98\xf5\x5d\x73\xd3\x1e\x46\x6e\x07\xdf\xe8\x9a\xe9\x8d\xc4\xae\xc0\xbe\x8a\xea\x2d\x26\xf4\x1b\x16\x85\x52\xfc\xb5\xa3\x38\x7d\xff\x28\x2b\x90\x5e\x53\xad\xad\x63\x65\xea\x41\xff\xd9\x9f\xa2\xe8\xa1\xba\x50\xa5\x99\xbb\x02\x4f\xab\xf9\x10\xa3\x72\x01\xbb\x08\x8e\x6b\x59\x15\xf9\xec\x14\xc5\x4a\xcd\x05\x89\x3a\xde\xd7\xad\x5a\x5f\xd4\x53\x5e\x8a\xd7\x17\x3f\xbe\xd5\x38\x5e\xd2\x2f\x9b\x15\x7f\x68\xc6\x82\x99\xd9\x59\x70\x1c\xa7\xb7\x6c\x8a\x17\x84\x27\xbf\x04\xaa\xf9\x97\xc0\x2d\x65\x30\xf9\x54\xa4\x39\x60\x32\xa9\x4e\x83\xa1\x5a\x1e\xe6\x9d\x06\x9b\xe8\xa8\xf2\xc6\x17\xc5\x45\xfd\x4e\x65\x2f\x57\x52\x52\x9a\x11\x06\x7f\x47\x1c\xaa\xc9\x05\xb1\xc1\x75\xbf\x04\x47\xeb\x48\xbf\x96\xf6\x5f\x43\x7c\x4b\x6f\xa0\x8e\x25\x8a\x21\x2e\xb6\x43\xb3\xd1\x5e\xa4\xa5\xf1\x43\xef\x65\xf7\xa4\x8f\x86\x23\x45\xc0\x87\xc0\x0b\x67\xd5\x84\xed\x32\xa1\x7f\xd3\x79\x43\x4b\x49\x4a\x04\x3a\x42\x2a\x49\xa5\xa1\xaf\xb2\x82\x4b\xdd\x6f\x84\x31\x85\xa5\xde\x61\xdb\xd0\x2b\x67\x0d\x76\xdf\xe4\x37\x58\x64\xb5\xa7\x7f\xd3\x77\x90\xc6\x2c\x63\x13\xa1\x80\xc5\x28\x46\x05\x83\xd9\x18\x2f\x7a\xf0\x87\x11\xbb\x48\x84\x01\x35\xe5\xf9\x40\xe2\x24\xba\x80\xc6\x5b\xff\xba\x60\xa8\x5b\xf1\x3a\x63\x8e\xb7\x1e\x33\x5e\xd6\x2c\xc4\x5a\xfe\x61\xd4\x48\x5c\x40\x4b\x93\x4b\x01\xcb\x8d\x34\x69\x5c\xe5\xb7\x9d\xbf\xb5\xf9\x87\x92\x83\x05\x95\x26\x58\x3a\xd7\x6f\x0d\xa2\x17\x45\x06\x3a\xf9\x83\xea\x74\x91\x1b\xb9\x35\xa0\x55\x16\x99\x44\x57\x8d\x38\x68\xce\xe1\x64\xef\x83\xa6\x66\x72\xe6\xfd\x9c\x46\x33\xbc\x21\x2a\x24\xd6\xbc\xa9\xf1\x74\xa7\xf3\x88\x7d\xc8\x28\xf6\x16\x54\x49\xcc\xc1\xa2\x57\x95\x98\x4a\xaa\x93\x03\x37\x0a\x76\x10\x05\xcd\x1b\x79\xc5\xe1\x0f\x2e\x7b\xc2\xcd\xfd\x9b\x42\x0b\xc2\xa9\xd2\xa9\x4b\x59\xfb\x15\x37\xee\xb2\xc0\x8a\x8e\x0e\x2c\x70\x6f\x60\xe9\xe7\xba\x42\xf4\x44\xbd\xb2\x70\x22\xa1\x6f\x1d\x02\x2c\xc6\xe0\x55\x70\xe4\x4b\x8a\xb9\x44\xe9\x71\x8e\xcc\x65\x85\x53\x4b\x44\x9d\xa6\x3e\x70\x0b\xbb\xcb\x3b\x0b\xd8\xf6\x39\x05\x66\x49\xe1\xaf\x32\xa6\xcf\x51\x63\xfa\x58\xff\x6e\x3a\xd2\x00\x51\xdd\xc9\x36\x29\xe5\xc9\x8f\xfa\x69\x2d\x82\x3f\xf7\x63\x95\x6f\xbf\x3c\xb8\xf2\xaf\x08\x97\x63\xcf\x24\xaa\xac\x90\x1a\x76\x78\x35\xec\x3a\x6f\x43\xe7\xbd\x65\xe8\xfb\x6a\x06\x8c\xe8\x6b\xa8\x26\xa8\x80\x83\xa8\x61\x39\xf2\x23\x55\xca\x44\xff\x10\x55\xf1\x0a\x24\x12\x13\x4f\xbc\x95\x0c\xe3\x1b\xe5\xc4\xab\x3d\xd9\x3a\xfb\x68\xeb\x66\x4c\x56\x57\xc7\xaf\x26\x0a\xb0\x0f\x1b\xce\xa9\x1a\x89\xf1\x7c\xc9\x40\x1e\xf1\x31\x01\x70\x3b\xcf\x81\x99\x53\xf5\x88\x80\x94\x81\x2d\xf4\x54\x95\x86\x2e\x7f\xe1\xad\xe6\x6a\x18\xa7\x49\x9a\xc5\x60\x87\x41\xbf\xe8\xd5\x4f\x5d\xf0\xec\xc6\xea\x4a\xa8\x86\x17\x40\x55\x91\x8d\x0e\x5b\x6a\x67\xca\x2b\x1f\x87\x03\xcf\xf2\x05\xaa\xae\xf2\x54\x59\xb5\x41\xb7\xbe\xb2\x35\x5c\x17\x56\x76\xc7\x3b\xf4\xf5\xab\x0b\xd7\xba\x69\x10\x2d\xe5\x92\x39\xd0\xae\x53\x39\x2b\xb3\x1d\x48\xf9\x17\x3a\x57\x07\x9a\xf9\xa7\x77\x10\x1c\xa3\x33\x05\x7e\xfd\xbc\x34\x4f\x2f\xbc\x30\x60\xfb\x84\x19\xd8\xdb\x67\xdf\xe9\x15\x0e\x13\xf3\xfe\xc6\x80\xf4\xf3\x4c\x06\xcd\x3d\xbb\x90\xdd\x26\x31\x0e\x68\xe6\xb3\xc6\x0d\x67\xed\x99\x9d\x0f\x3c\xa6\x7b\x66\x5d\x0a\x86\x4f\x28\xc0\xc8\xdc\xa6\x75\x8a\x77\xce\x01\x2a\xa2\x40\xc9\x5d\xcd\xb8\x7a\x5a\x31\x2d\xf2\x9b\x74\xb6\xa8\xc0\x1c\xdd\xef\xe1\x21\xb0\x49\x01\x81\x1d\x27\x00\x22\xaf\xa1\xa7\x36\xe0\x65\x02\x93\xf4\x4b\x3a\x5e\x09\x16\xa7\x75\x99\xf1\xa5\x7e\xac\x01\x3a\xf7\x26\xbd\x77\x70\x54\xf6\xd3\xaf\x50\xce\xe1\x78\xe8\xfe\xbe\xa0\xa5\xed\x6d\xb8\x85\x8f\x1b\x37\xd3\x68\x88\x2b\x3a\x23\x86\x26\x12\x60\x21\xc3\x3d\x5e\x73\x18\xaa\x79\xb7\x17\x8a\x46\x8b\x9c\x5e\x82\x84\x5f\x40\xcb\xd8\x51\x23\x54\x2e\x48\x81\x87\x46\x41\x9a\x07\xb7\x6e\x88\xe6\x1e\x3b\xc4\x75\x8e\xcd\x89\x74\x56\x21\x77\x06\x97\xd0\x03\x7a\x17\x70\xa5\xdc\xef\xc0\x62\x63\x06\x57\xaa\x87\x24\x68\x22\x9b\x42\xdc\x79\x9c\xe7\x1b\x51\x55\xe3\xa6\x30\xd0\x57\xcb\x63\x8f\xf9\xad\x1a\x55\x4f\x40\xc6\x2e\x1d\xe8\x09\x36\xc5\x87\xea\x45\x08\x96\x24\x01\xcb\x6b\x05\x7a\x97\xc6\x32\x59\x33\xe7\xef\xd8\x4f\x11\xee\x9f\x0e\x46\xec\xa9\x9d\xa7\x9c\x7a\x01\x9a\xb7\xaf\x8c\x4f\xdd\xdb\x07\x0c\xfc\xe9\x2c\xcd\x85\xc9\xd6\x50\xec\x50\x16\x19\xd7\xa1\x2d\xf6\x81\x1d\x1c\x69\x6d\x83\x7c\x37\x76\xfc\xae\x9a\xe7\x29\x8e\xc4\xa7\x2e\xc1\xc8\x11\x15\x45\xe7\x5e\xeb\x93\x2e\xb1\x22\xd2\x59\x14\x9b\x7f\x51\x94\x1e\xf7\xd1\xd9\x83\xb5\xdc\x00\xeb\xbf\x34\xfd\x57\x02\x53\xc8\x16\x15\x3e\xf2\xb1\xdb\x13\x37\xa6\x90\x41\xc2\x58\x4c\x62\x71\x38\x1f\x0b\xff\x55\x7a\x2f\x51\xc6\xa2\x77\x8b\xf9\x04\xcb\xb4\x69\xc0\x5f\x7f\xfc\xfe\x62\xd4\x73\xd8\x84\xa2\x3e\x6c\xbf\x32\xac\x81\x86\x0e\xb6\xbc\x44\x76\x02\x7a\xbb\x7a\x29\x24\xc8\x5b\xff\xfe\x5e\xbb\x01\xdb\x6d\x52\xa1\x29\x85\x9f\x71\x52\x87\x37\x62\xf7\x20\x09\xcd\x4a\x8b\xfa\x0e\x2f\xdc\x61\xe9\xc1\x71\x5d\x82\x19\xd3\x5a\x3f\xa6\x05\xaf\x55\x6f\xa0\xea\x3c\x4f\x02\x7c\xe0\x30\xab\x50\x09\xed\x69\xbb\x3e\xa0\x4b\x19\xb2\xd9\xd4\x02\x5f\x07\x68\x2b\x10\xd6\xe9\xe0\xc8\x5b\x08\x5f\x5f\xe0\x7b\xb9\x13\xb3\xe4\x2e\xd3\x68\x45\x2b\xa2\x20\xd2\x86\x2a\x14\x1a\x33\x3f\x30\x5c\xe2\x2a\x36\x28\xc4\x40\xcd\xae\xa4\xdd\x04\xb3\xd8\xae\x29\x1d\x77\x21\x6e\x73\xd1\xae\x3e\x20\xa7\xd1\xbc\x1d\xe8\x39\x8f\xb7\xd4\xd7\x2b\xef\x6a\x9a\x15\xf8\xb5\xe7\xe4\xad\x96\x80\xd8\x67\x28\xfa\xea\x55\x70\x77\xc9\xef\x45\xc2\x6f\x53\xf0\xd4\xb5\x77\xf4\xda\x4c\x08\xd9\x56\x1c\xa1\xf0\x1a\xeb\xdf\xcd\xc5\xeb\x44\x64\xb7\xa8\xf9\xb7\x5a\xf9\x82\x9e\x10\x6d\xc7\x87\xab\x56\x55\x17\x46\x7e\x11\xd4\x16\xb7\x52\xea\xa5\xdb\x57\xb8\x74\x4d\x95\xf2\xa8\xe9\xf2\xf7\x08\xa8\x35\xba\x36\xdd\xfd\xb5\x2a\xb8\x51\x49\xba\x4a\x0b\xd0\x55\xfa\xda\x9d\xf7\x5c\x3a\x6c\xc8\xfb\x77\x29\xa2\x3d\x57\x8d\x83\x2e\x3f\xaf\xc1\x29\xa7\xe7\x9c\x7e\x75\x3a\xe6\x14\xcc\x23\x3c\xe5\x4e\x50\x50\xeb\x95\xa4\xd7\xfc\x56\xec\x68\x9f\xc3\x2b\x44\x7f\xfe\x97\xe7\x3f\x33\x93\x53\x46\x1f\xa1\xa8\x60\x8b\xaa\x86\x7d\xcf\x06\xae\x58\xc4\x4e\xa1\xb5\xb7\xa6\x02\x76\x97\x08\xe5\x57\x2c\xa0\x0b\xdd\x17\xf4\x3e\x54\x5d\x20\xe1\xe3\x3f\x9e\xb2\xf5\xeb\x3a\x28\x6c\xb8\x61\xfd\x75\xef\x14\x21\x6f\xf2\xf5\x7b\x23\xdb\x77\x05\x61\x59\x16\x29\x3e\x0c\xbe\x41\xe5\xd7\x8a\x56\xbb\x4e\x37\xd6\xa2\x37\x5e\x2d\xf8\xe5\xe8\x5e\xf2\xce\x96\xc7\x6f\xc3\x02\xad\x2b\x9c\xd6\x45\x3f\xdf\xc8\x04\x76\x6d\xaf\xac\x7e\x3d\x92\x3e\x9d\xd5\xff\x23\xd0\x50\xe5\xf7\x45\xbc\x34\x84\xf6\xc0\x35\xdf\x35\x5e\x53\x55\x32\x93\x13\x18\xac\xa0\xd2\xbc\xc6\x5d\x6e\x0d\xee\x29\xb8\xcc\x74\x18\x2e\xe3\xa0\xf0\x9f\x62\xce\x20\xb8\x15\x58\xde\x15\x8c\xad\x4b\xe8\x8d\x75\xe7\xd7\x28\xf9\x53\xcb\xe8\x80\x23\x38\x96\xd5\xe9\xb1\xc4\x97\xe7\x19\x5a\xa5\x93\xc1\xd3\xc1\xe9\x71\x7a\x9a\xab\x73\x3d\xde\x4f\xc1\x5c\xc9\x18\x3f\x30\xe1\xd7\x34\x24\xbe\x3b\xda\x57\xc7\xd5\xc5\xa5\x55\xef\x4b\x67\x00\xe3\xbd\x81\x97\xe9\x95\x6f\x17\x6d\x32\xb0\x2f\x69\x60\x73\x06\x47\xeb\xb6\x76\xda\xca\x8a\x2a\x90\x3a\x77\x89\x5b\xd3\x43\x74\x4e\x00\x22\x76\xd7\xe5\xef\x5a\xed\x93\x2a\x72\x8f\x2c\xfd\x75\xe2\xe7\xff\x30\xfd\x6f\xbf\x9e\xfe\xb7\x6d\xfa\xdb\x6a\x46\xbc\xfb\xc2\x5c\x91\xcd\x12\x59\xf4\x3e\x29\xf4\x3e\x01\x7a\xb7\x26\x09\x63\x70\xfb\xd4\xac\x05\x77\x90\x76\x4f\xec\xe0\xcb\x4f\x57\xfa\x84\xd8\x7f\xe0\xa9\xf9\xed\x07\xea\xe4\x26\xd5\xfe\x69\xe0\xdf\x23\xfd\xd3\xac\xe1\x61\xd2\xe4\x8c\xd5\x8c\xa1\xb3\x64\x8a\x31\xfa\x17\x57\x43\x1a\x0b\xf9\x07\xb1\x8a\x0f\xdb\x0b\x51\x4e\x79\xfd\x42\x34\xa4\xb1\x90\xb7\xe9\xe6\x9a\xc3\x0d\x8b\xea\x0c\xc0\xb8\xd7\x1a\xfc\x04\x61\x77\x59\x16\x95\x04\x63\xa8\xaa\x52\x29\xc3\xd9\x01\x42\x56\xdd\xe8\x67\x95\x41\xf6\x5f\x2d\xbf\x02\x65\x4f\xef\x96\xad\xa2\x4e\x78\x9d\xb8\xf2\x6e\x7d\x37\x94\x15\x53\x0a\x56\xf0\xb9\x72\x12\xd5\x59\x3a\x15\xe1\xa1\xbb\x6b\xf2\xe6\xb4\x0a\xe3\x9a\xf9\x53\x5d\x9a\xa1\x35\x79\x2c\xa6\x45\x2c\x7e\x3a\x7f\xf3\xa2\x98\x83\x25\xc1\x47\xd6\x6b\x97\xf3\xeb\x9d\x61\x3a\xdd\x17\xd3\x86\x42\x0f\xae\x9f\xa3\x73\xc5\xce\x3b\x3b\x18\x5d\xbf\xbf\x38\x1b\xb7\x5e\x0f\x4c\x04\xfb\x2c\x4a\x49\x35\x57\xcb\x7c\xaa\x92\x14\xd5\x02\x2c\xfe\x7e\x42\xff\xc6\xa7\x8e\x66\xc5\x98\x28\xf6\x36\xcd\x31\x34\x3b\xb3\xb9\xe2\x47\x8e\xae\xab\x5e\x83\x5b\xaa\xf2\x2c\x53\xff\x64\xc5\x91\xd6\xbb\xb7\x6a\x29\x13\xe5\xef\xf4\xe9\x91\x36\x18\x95\x60\x50\xe3\x41\x9d\x78\xa5\xf9\xfa\x2a\xb0\x9f\xf2\x44\x3a\xc5\xaa\xe9\xcd\x32\x6c\x43\xa5\x99\x7d\x47\x41\xb9\xa7\xce\xa1\x35\xa9\xef\xb3\x1b\x8f\x63\xe5\x59\x34\xfe\x65\x91\xfd\xe7\x24\xda\xd5\x6f\x3b\x1c\xf4\x72\xbe\xf3\xff\x05\xdc\xff\x3d\x42\xec\x34\x89\xdc\xf6\x5d\xab\x7d\xfd\xd0\x73\x8d\xb9\xe6\xd1\xbe\xf2\x92\x1f\x6b\x16\x1c\x6a\x47\xbf\x0b\xc3\x24\x40\x6d\x18\xe0\xa6\xfb\x5b\xf7\x93\xf0\x44\x68\xb7\x77\xa0\x59\x2a\x97\x3f\xf2\xd2\xd5\x36\x3d\x81\xc0\x32\x78\xc2\xe7\xe5\x91\x79\xd0\x70\x4c\x2d\x99\xb4\x0d\xa7\xd4\x30\xb3\x0d\x83\x60\x00\x51\xef\x93\x5f\x17\x85\x3c\xd2\xef\xac\x83\x41\x80\x4d\x7f\x78\xf6\x67\xdb\xb2\xaf\x5a\xee\x9f\xbe\x3a\x1a\xec\x98\x37\xc3\x5a\x3c\xd4\x15\x99\x41\x2f\xd2\x0f\xd5\xc2\xfd\xcb\x27\xc7\xa7\xc1\xe0\x97\xfd\xab\xfd\x99\x7b\xf8\xcf\xc2\xb6\x68\xdb\x6d\x5c\xd6\x57\x7d\x14\xc0\xff\x50\xa4\xa9\xa6\xea\x76\x3e\xc2\xbc\x52\x47\x33\x53\x3e\x4d\x84\x7e\x0c\xee\x22\xb2\x46\x7d\x4f\xef\xab\x2f\xac\xf7\x48\xa7\xfb\x9f\xea\x7d\xc5\x20\xf6\x7f\xf5\x24\xe6\xff\xf7\x98\x2c\x51\xa7\x64\x87\x32\xf8\xd6\xe6\x35\xfe\x8f\x0f\x1c\x84\xf7\x7f\xbc\xb0\xce\x23\xcd\x84\x4b\xf9\x1b\x7b\xeb\x74\xcf\x6a\x3d\x6a\xc6\xa3\x5e\x34\x4f\xa9\x7a\x9c\x7b\xfc\x29\x7c\x19\xfe\xf2\xd0\xa9\x75\xee\x53\x0d\x4d\x90\x9d\x37\x5d\x6d\x81\xf3\x6b\xaf\x0d\x58\x94\x2e\x18\x77\xad\xff\xad\x41\xdf\x6b\x48\x0b\x06\xb1\x62\xcd\x5c\x25\x9e\xf1\xe3\x10\x0f\x17\x9a\xff\x27\x00\x00\xff\xff\xad\xb0\x92\x0f\x5a\x4d\x00\x00") +var _staticJsGraphJs = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xe4\x7c\x7b\x77\xdb\xb8\x95\xf8\xff\xfe\x14\x08\x9b\x13\x49\x63\x59\xb6\x33\xed\xfc\x5a\xf9\xf1\xdb\x4c\xe2\x4c\xd2\x66\x92\x6c\xe2\xe9\x74\xd7\xe3\xf5\x81\x25\x58\x64\x42\x91\x2c\x49\x59\x56\x33\xfe\xee\x7b\x1f\x78\x92\x94\xe4\x49\xcf\xf6\x9c\x3d\xeb\x3f\x24\x8b\x00\x2e\x2e\xee\x1b\x17\x17\xbc\x95\xa5\x78\x5f\xe6\x73\x55\xc7\x6a\x51\x89\x13\xff\xc7\xaf\xbf\x8a\x2f\xf7\x47\x3b\xd8\x65\x56\xca\x22\xc6\xe6\x8b\x4b\xef\xc1\xb9\x9a\x17\xa9\xac\xd5\xd1\x0e\x3d\xfb\x78\xf6\xfc\xdd\xdb\x17\xd0\xe9\xf0\xe0\xe0\x00\x9e\xbd\x92\xd9\x34\x55\xd7\xb2\xac\x46\xa5\x9a\x25\x55\xad\xca\x57\x2a\x2d\x54\xd9\xef\x15\xb2\x8e\xdf\x97\xea\x26\xb9\xeb\x0d\xc5\xcd\x22\x9b\xd4\x49\x9e\xf5\x07\xe2\x8b\x28\x55\xbd\x28\x33\xf1\xfe\xd9\xf9\xab\xab\xf7\x1f\xce\x5e\xbe\xfe\xdb\x91\xb8\x1f\x00\x34\x87\xd8\xe8\x07\x9c\x1c\xe6\xb1\x03\x55\xaa\xe6\x2a\xab\x87\x22\x2f\xf0\x77\x05\x80\x76\x84\xa8\xe3\xa4\x1a\xa9\x14\x3a\xea\xf6\x23\xf3\x50\x77\x83\x16\xfd\x9f\x6d\x99\xc4\x32\x9b\x29\xc6\xbc\x84\xf6\x6c\x91\xa6\xb6\xb1\x4c\x26\x9f\xab\x58\x2e\xcd\xfc\x41\xe3\x54\xd6\x52\x13\xc8\x3c\x4a\xb2\xa4\x4e\x64\x9a\xfc\x43\xf5\x61\x05\xf7\x1d\x8b\x18\xd5\xc9\x5c\xbd\x94\x93\x3a\x2f\x11\x1b\xc4\x3a\x5a\x45\x63\xf1\xdd\x81\xf8\x86\x3f\x9e\xfe\x1e\x3e\xbe\xfd\xee\x0f\x43\x6c\x5a\xb6\x9b\xfe\x1f\x35\x4c\x1b\x0d\xf4\x30\x76\x0f\xe9\xf7\x9c\x7e\xd3\xbf\x15\xfc\x7b\xd8\x8d\x11\xb0\xa9\xf8\xab\x4c\x17\x8a\xd8\x8d\x9d\x0f\xab\x68\x08\x9f\x07\xfc\x35\xc7\xcf\x3f\xd0\xe7\x21\x7f\x7d\x7b\xc0\xbf\x62\xfc\x7c\x4a\x9f\xdf\xd1\xe7\x21\xff\x38\x9c\x52\x03\x7c\x12\xb4\x25\xfd\xa2\xcf\xdf\xd3\xe7\x1f\xe9\xf3\x70\x45\xcf\x57\xd1\xce\x65\x17\x5a\xd9\x62\xfe\x83\x11\xc2\x83\xae\x0e\x45\x99\xd7\x79\xbd\x2a\x94\x47\x76\x5f\x46\x58\x26\x50\x4e\x2b\x95\xde\x40\x0b\xb2\x08\xb9\x87\x3f\x47\xc9\x34\x90\xfd\xe6\xa4\xbb\xbb\xc4\xd5\xfd\x7d\xf1\x51\xd5\x62\xaa\x6e\xe4\x22\xad\x8d\xf0\x8c\x0c\x10\xfd\xfb\x22\x4a\xa6\xd1\x25\xc0\xd3\x90\x8f\x5a\xed\x25\x0a\xd9\x55\x92\x15\x8b\xda\x75\x5c\xd3\x0a\x5a\x88\xa4\x45\x20\xc9\x8d\xe8\x87\x5d\x6b\x79\x8d\x00\x4e\x4e\xc4\x22\x03\xac\x92\x4c\x4d\x79\x9d\xcd\x19\x75\x47\x71\x88\x70\xee\xf5\x5a\x5e\x94\x72\xc9\x9a\x2c\x26\x79\x56\x97\x79\x5a\x09\x90\x7c\xfa\x21\x01\x56\x29\x6e\x80\x22\xc2\xe9\xb1\xa8\xb5\xc6\x8f\x76\x34\x2d\x69\xf4\xab\x7a\x8e\x5a\x16\xd8\x84\x00\xd1\x81\x25\x81\x4a\x47\xb2\x28\x54\x36\xed\xdb\x91\x03\x43\xda\x1f\x80\xb4\x60\x13\x54\xa9\xb2\x09\x48\x5f\x9d\x0b\x99\xa6\xc0\x26\x25\x92\x0c\x6c\x87\xaa\xea\x24\x9b\x19\x5d\xae\xe0\x21\xb5\x39\xfc\x19\x65\x40\x96\xc1\x5d\x27\xb0\x14\x75\x0b\x7d\x45\xcc\xfa\x4c\x9c\xb2\x58\xff\x5c\x22\x26\xa5\x21\x3f\x60\x06\xf4\x9b\xf6\xa3\xdf\x51\xeb\xd5\x92\x9b\x23\xb1\x6b\xf8\xe8\x56\xf1\xf7\x85\x2a\x57\x2f\xf3\x72\x6e\x56\xad\x61\x69\x08\xdc\x7e\x75\x03\x1d\x22\x5e\x1d\xcf\x70\x57\x94\xdd\x03\x6a\x75\x57\xcb\x52\xc9\x8b\x4c\xce\xd5\x09\xf6\xbb\x8c\x3c\x9a\xc1\xef\xd1\x67\xb5\x2a\x80\x04\x55\xdf\x19\x3d\xc3\x69\x58\xeb\x19\x12\x48\x2c\x65\x25\xa8\x93\x9a\x8a\x65\x52\xc7\xf9\xa2\x26\x12\x55\x71\x72\x53\x0b\x80\x30\xa2\xfe\x28\x46\x6a\xb4\x8c\x93\x09\x18\x31\x10\x89\x6f\xc5\x93\x27\xe2\x91\x1a\x51\xb7\xbf\xa8\x95\x81\xdb\x5c\xec\xa8\x5a\x5c\xcf\x93\xba\x4f\x98\xe1\x9f\x02\xa5\x23\x02\xbf\x60\x85\x30\x2d\x24\x5f\x84\xd7\xb3\x45\x9d\xef\x01\x46\xa8\x8b\x88\x09\x2e\x54\xe0\x4a\x45\x9e\x09\x92\x70\x46\x09\x99\x92\xdf\xdc\x54\x20\x01\x27\xda\x44\xd3\xaf\x57\x2a\x99\xc5\xb5\xd8\xd3\xc6\x39\x4d\x60\x32\x7e\x76\x64\xc7\x31\xf8\x73\x4d\xc2\xd0\x2d\xb8\xa5\x08\xf1\x18\x7f\x8f\x26\x40\xc2\x5e\x4c\x20\xc0\xf5\xf4\x24\x20\xd8\x6b\x3e\x05\x51\xa8\x26\xa0\x0d\xa9\x9e\x7e\x57\xe3\x66\x96\xc7\x5f\x8f\xfb\x88\xd4\x60\x04\x13\xf5\x80\xb6\x8b\x82\x17\xd4\x76\x68\x3e\x7a\x3c\x86\x5d\x9a\xd0\x9f\x8e\xc9\xec\x7d\xfa\x15\xb8\x03\x45\x86\xe7\x1d\xeb\xcf\xeb\xec\xa7\x0f\x6f\x3c\x49\x22\x0b\xf1\x1a\x67\x33\xd2\xeb\x98\xc4\x12\x45\xa8\xb0\x38\x79\xe6\xc4\x97\xaa\xaa\x96\x93\xcf\x6a\xfa\x7d\x9d\xad\x83\x61\xba\x5c\x5d\xd7\x59\x7b\xe0\x03\x66\xd6\x3d\xfd\x59\x41\xbf\x81\x20\xf1\x6b\x94\xd7\x5b\x99\xae\x03\x02\x0f\xd5\xc4\xe0\xcf\x43\x2e\x7d\x55\x02\x75\xaf\xf2\x54\x9d\xcb\xeb\x35\x1a\xa8\x3b\x78\x33\xb3\x75\x82\x01\x62\xcd\x10\x56\x7b\x6b\x48\xfc\xe9\xc0\x7a\x56\xdd\xa3\xe4\x05\xfa\xfd\xbd\x3a\x9f\xcd\x52\x75\xd2\x83\x8e\x3d\x7f\xb9\x38\x70\xa4\xfe\xde\x65\xb5\x07\xd8\x08\x2b\x8d\xf3\x65\x73\x00\x48\x0e\x3d\xcf\x46\xf0\x03\x3b\x7b\x22\x65\xb5\x1e\x45\x1f\x44\x6a\x46\x2a\x03\xb2\x3d\xe2\x1f\x5a\x46\xbb\xad\x3f\x77\x19\x15\x20\x89\x19\x68\x2b\x78\xca\xa9\xba\x33\x5a\xdb\x2d\x75\xa6\x15\x8d\xc6\x63\x30\x8e\x68\x0f\x35\x18\x59\xd7\x25\x50\xa0\x4c\xe4\x9e\x71\x1f\xd1\x60\x30\x8a\x65\xf5\x3c\x95\xa0\x50\x51\xa9\xd2\x5c\x4e\xe1\x59\x68\x50\xd8\x8c\xfc\x3b\xb2\xdc\x59\x0c\x56\x06\xab\x0d\x65\x99\xaf\xb1\x95\xdc\x16\xc1\x3c\xc9\x54\xf5\x1b\xfc\x7d\xc6\x16\x60\x3d\x7b\x51\x07\x9b\x42\x61\x84\xd0\x42\x08\x86\x78\xbd\x57\xcf\xee\x92\x6a\x6d\xef\xd5\x95\x84\x66\xaf\x7b\xaa\x66\xe0\xe8\xd6\xa0\xc3\x8d\xbe\x5a\x15\x49\x96\xa9\x75\x8b\xd6\xad\xbe\x57\x00\xf5\xf9\x58\xcb\x7a\x8d\x60\x52\xfb\x55\x85\x1d\x02\x1f\x94\x4d\x5f\x80\x77\xee\x1e\xe3\xa9\x2e\xf4\x6b\x9b\x0c\x3d\x18\x43\x5d\x85\x81\x6b\x01\xf1\x30\x44\xf3\xcc\xdc\x14\xcc\xcc\x42\xce\xd4\x58\xf4\x54\xd6\x1b\xd2\x33\xec\xf0\x51\x81\x70\x4c\xab\xb1\xb8\x91\x69\xa5\x86\xd6\xea\xb5\x83\x19\x3b\x27\x28\x87\x1f\xc4\x78\xd3\xca\x7e\x2f\x9c\x1c\x6c\x37\x18\x66\x8a\x57\x37\x40\xe3\xa0\xa7\x01\x4e\x1b\xdb\xc0\x58\xb7\xe5\xd3\xb7\xd1\x0d\xe3\xb5\x1e\xc2\xa2\x40\x2c\x3f\x70\x77\x0d\xc3\x46\x9a\xd5\x47\x6b\x40\x1b\xc1\xa9\x30\xbb\x1f\xdf\xce\x8e\x60\x26\x68\xc7\x18\xaf\x77\xd8\xa3\x95\x1c\x99\xe8\xab\xaa\x57\xa9\x22\x70\x6c\xc6\x5b\xf0\xb0\x53\x02\xf4\x37\x42\xeb\x8c\x3e\xb3\xbc\x37\x9a\xa5\xab\x22\xc6\x2e\x3d\x4f\xd1\x43\x44\xfb\x2d\x05\x76\x50\xe4\x74\xaa\x95\x1d\x9c\xc4\x5e\x51\x26\x73\x59\xae\x22\x1b\x21\x20\x60\xaf\x8f\x9d\x6c\x6f\x12\xab\xc9\xe7\x46\xbf\x52\xcd\xf3\x5b\xd5\xea\x0a\x6b\xc2\xce\x6a\x6a\xba\xdf\x83\x83\xae\xd4\x5a\x94\x02\x30\xbf\x0d\xab\xd6\x54\x9b\x31\x0b\x16\x71\xbf\xa3\x23\x83\x80\x29\x7d\x8f\xf3\x1e\x8e\x10\xc9\x4c\x3e\xf7\x5b\xec\xea\xa2\x3d\x06\x67\xce\xe0\xfc\xf9\xe3\xbb\xb7\x8e\x1b\x10\x61\xbd\xbe\xf1\xa2\x60\x0c\x00\xf5\x2c\x43\x7a\x9c\x97\xc9\x2c\xc9\xc0\xcf\x56\xaa\x4c\x20\xa6\xa6\x4d\xea\x2c\xaf\xc5\x7c\x01\x96\x41\x4d\x1d\x9c\x7e\x35\x91\x29\xee\x1e\x70\x03\xb0\x54\x22\x53\x20\xa1\x10\x82\x97\xa8\xbe\x55\x5d\x2e\x26\xb5\x48\x6a\xde\x10\x04\x90\x11\x23\x82\x3b\xf2\xf9\xa1\x77\xc3\xec\xd3\x20\x02\xa9\x30\x18\x7e\x81\x0a\xdc\x58\x8b\x23\x9e\x68\x8b\x7d\x8b\x16\xff\x5f\xf4\x0e\x7a\x62\x8c\x9a\x60\xbd\x56\x83\xda\x16\x10\x2b\x21\x39\xb4\xbe\x8d\xb6\x5a\x11\xbc\x09\x6a\x5b\xbc\x68\xc4\x19\x9e\xbc\x18\xb7\xe6\xcd\x65\x82\x8b\xcd\xbd\x3a\x1c\x9f\x56\x78\xb2\x8d\x8d\x88\x50\x9b\x7c\xeb\xe7\xda\xa8\xb3\xd5\xbe\x5e\xd4\x75\x9e\xb1\xd9\x4e\xb2\xc9\x15\xc5\x7b\x60\xb6\x3b\x84\x4c\x5b\xa0\x6c\x02\x6e\xab\x52\x1f\xc8\x7a\xd9\x60\x74\x2b\xf0\xa9\x7a\x00\x70\xe8\xd4\x06\xfe\x50\xd4\xc1\x34\x3f\x04\xf1\x33\x18\xfb\xdb\xd0\xde\x02\xd8\x20\xed\x01\x36\x90\x8b\xbc\x58\xe0\x7e\x16\x77\x32\x93\x1c\xf6\xb6\xaa\x56\x3f\xaa\xba\x4c\x26\x95\x66\x8a\x55\x5a\x0a\xe1\xc9\x5a\x07\x32\xd4\xe2\xfa\x3d\x25\x5e\x40\xe7\x3e\x10\xf3\x61\xa7\x5b\x2e\x14\x82\x41\xbd\x02\x9f\x52\xca\x09\xee\xe6\x64\x2d\xa2\x22\xaf\x22\xb3\xd1\x45\xf0\xb0\xb7\x03\xc4\x41\xe8\x4b\xdc\x0a\x47\xf0\x1d\x89\x34\xcf\x3f\x57\x08\x2e\x4d\x3e\x2b\xd4\xd1\x49\xbe\x48\xa7\xe2\x5a\x09\x29\xe6\x84\xa9\x40\x3a\x88\x3e\xcc\x90\xd4\xbd\x4a\x64\xa0\xff\x00\x53\x1a\x30\x10\x69\x49\x70\xdf\xd7\x2a\x15\x73\x59\x83\x51\x2b\x09\x5c\xa5\x88\x4a\x83\xd1\x8e\x21\x98\x48\xaa\xf7\x79\x0d\xa1\x63\x22\x53\xa6\x01\x6c\x55\xca\xa1\x00\x2c\x5d\x76\xe5\xef\x8b\x9c\xe2\x0b\x93\x1c\x23\x17\x94\xfd\xa8\x01\xa3\x93\x62\x59\x87\x26\xb0\x09\xa2\x4f\xed\x94\xd4\x81\xaf\x63\x84\x05\xff\xec\xee\xfa\x1e\x6c\x42\x21\x5a\x5d\x5e\x24\x9c\x5c\xe3\x44\xcc\xe7\xa4\x10\x60\x95\x4b\xa1\xc0\x74\x15\x60\xad\x2c\xe9\x2a\xd1\x27\x2c\x2a\x5c\x5a\x0e\xb4\x2b\x97\x49\x05\x81\x73\x62\x28\x57\xb9\x8d\x30\xa3\xfb\xe8\x84\x11\x46\x63\x4b\xbb\xe2\x13\x11\xfd\xf2\x4b\xe4\x2c\x6d\x22\x76\x75\xf2\x04\xff\x30\xdc\x4d\xb2\x85\x6a\x6e\x77\xcf\x61\xfe\xcf\x08\x16\x0c\x28\x44\x9a\x42\x61\xa4\xa0\x49\x9c\x2a\x79\x8b\xff\x1a\xb2\x33\x0a\x15\xec\xd3\x61\xc2\xfe\x24\x76\x73\x4d\x40\x12\x99\x8c\x63\xbb\x79\x6d\x52\x95\xff\xae\x41\x6a\x3f\x1f\xf9\xc3\x7a\x51\x6f\xec\xff\x8e\x7a\x51\x1b\xc8\x24\xee\x04\xe1\xd6\xf1\x7a\x96\xc1\x5e\x40\x4c\x16\x65\xba\x82\x1e\x12\xd3\x31\x6b\x89\xe7\x21\xbe\x91\x2c\xcb\x18\x73\x6b\xa5\xa1\x0d\xc0\x0b\xe0\xf7\x43\x09\x1c\x6c\xa1\x4f\xf4\xc5\x5b\x58\x20\x5f\xa8\x4d\x9b\x48\x14\xdd\xaf\x1b\x69\xad\x70\x07\x69\xf4\x7a\xb4\xbd\x7e\xe4\x8d\x03\x91\xd1\x84\x3d\x31\xfc\xb9\x0f\xd5\x3b\x26\x52\xe2\x9e\x4b\x2c\xf3\x72\x4a\xb9\xba\xd2\x3c\xae\x40\x36\x40\xe8\x13\x56\xb0\x4c\x3c\xd6\x69\x11\xab\x74\x7a\xe8\xcf\x30\xb2\xcf\x8d\x4e\xd9\x10\xdc\x87\x33\x94\x0b\xb5\x84\xf9\x66\x67\x77\x45\x3f\xba\x90\x7b\xff\x78\xb6\xf7\x9f\x07\x7b\x7f\x1a\x5f\xe9\xf0\x1d\xfb\xc2\x24\xb8\x53\x64\xf0\x45\x99\x17\x66\x9b\x0d\x93\x80\x03\x2d\x6b\xd7\x15\x18\xed\xba\x92\x45\x33\x2d\xa9\xca\x58\x17\x61\x03\x93\xcd\xea\xd8\x8d\x00\x00\xd0\x82\xea\xab\x1f\xf1\xde\x87\x1e\xc0\x93\x65\x9c\xa4\x60\x83\xb8\xdf\xa9\x38\xa0\xb0\x06\x54\x9a\x1e\xec\x1d\x5e\x8e\x88\xf1\x7d\x5e\x90\x33\xa0\xd4\xba\x67\xe2\x77\x0d\x04\x21\x1f\x13\x2a\x1a\x08\x9a\xf7\x6e\x00\xd0\x82\xb9\xdb\x90\x7b\x1e\xec\x31\x7f\x0d\x4d\xe7\x31\x7e\xf0\x2f\x84\x34\x0e\x88\x80\xa6\x9c\x75\x80\xd7\x31\xc4\xce\x03\x8e\xfb\xee\x37\xa6\xa4\x37\x78\x91\x07\xe5\xa8\x1f\x8f\xe4\x27\x79\xd7\x37\x1a\x80\xd3\xe4\x80\x5c\xf4\xc3\xd9\x79\x34\xd4\x0f\x41\x99\xc6\xfe\xb9\x09\x6c\xd4\xa3\x7d\x59\x24\xfb\xb7\x87\xfb\xa4\x5b\xfb\x57\x57\xe8\x08\xae\xae\xf6\x6f\x29\xbf\x6f\x47\x62\xb0\x76\x0e\x68\x02\xc0\x4f\x55\x9e\xd9\xe7\xd5\x62\x02\x9a\x89\x5b\x37\x83\x20\x36\x0f\x29\x8b\x87\x5b\xcf\x45\xe5\xe7\xd7\xd0\x20\x60\x3b\x46\x70\xd0\x44\x36\x35\xd2\x20\x22\xbf\xa3\xf1\x8b\x71\xbe\x3c\xc3\xbd\x7c\x3f\xa2\x2f\x81\xf1\x12\x59\xc8\x5b\x99\x00\xc2\xc0\x69\x76\x5f\xd5\xa3\x68\xe0\x0d\x66\x26\x3a\x35\xd5\x76\x46\xdb\x1a\x08\x02\x38\xd3\x08\xeb\x91\xb1\x92\x53\x21\x1d\xcd\x13\xc4\x3e\x08\x6e\xe7\x6a\x7e\x8d\x36\x09\x34\x59\xe1\x13\xe0\xb5\x0f\xcd\xd3\x51\x79\x83\x4e\x39\xc9\x20\x92\xa6\x3c\xb4\xcc\x7c\xc8\x98\x71\x45\xd5\xee\x03\xf4\xa5\x04\x45\x67\x58\xe0\x70\x7d\x70\x0c\xa3\x8e\x25\x1b\x82\x21\xb9\x62\xc9\x49\x5a\x14\xea\xfc\x46\xff\x5b\x27\x64\x21\x11\x02\x0b\xdc\x60\x64\xe1\xa0\x78\x10\xa0\x9f\x28\xc0\x7d\x4f\x6a\xcd\x76\x67\x27\x20\x30\xc5\x23\x96\x0e\x7d\x9f\x01\x80\xcb\x5b\xa0\x41\xc5\x44\x20\xa5\xa0\x20\x04\x3d\xb2\xbf\x2a\xc0\x5f\xcd\x2b\xc6\x18\xf8\xa5\xe3\x0a\xb6\xd1\xd3\x10\xde\xf5\x2a\x30\x74\x5e\x72\x57\xcb\x2c\xdb\x4b\x4f\x98\x10\x76\x28\x17\xda\xdd\x2f\xd1\x47\x79\x56\xcf\xae\x66\x70\x14\x74\x46\x89\x9b\x2c\x47\x48\x4a\x6d\x8e\x48\xe8\xd0\xb6\x04\xfd\xa8\x2f\x4c\x36\xaa\xf3\x37\xf9\x52\x95\xcf\xc1\x0d\x98\xec\xd7\xbb\x1b\x0b\x22\x68\x1d\x80\x91\xda\x3b\xec\x84\xd4\x0e\x82\xc2\xe8\x6f\x08\x2b\x18\x91\x81\x18\x34\x97\x27\x7c\x6a\x87\x8b\xb9\xdf\xe9\xe8\xd6\xf0\x48\xd0\x6b\x18\x52\xdd\xf7\x31\x5a\x6c\x74\x54\x07\x9c\xe5\x14\x3f\x1f\xa0\xa0\x28\xdd\x24\x0a\x18\xe8\xf8\x58\xa9\x3a\x84\xb6\x28\x72\x4a\x3e\xa0\x53\x60\x11\x47\xb2\xb9\x4d\x5f\x20\x1a\x69\x52\x05\x0c\xe6\xfd\xd6\x43\x18\xcc\xee\xa5\x41\xb5\xa3\xaf\x97\x83\x96\x36\x18\xfa\x83\x09\x24\xbe\x3b\x5f\xd5\xa2\x30\xba\x32\x67\xd6\x0f\x3c\xde\xe9\xc1\x78\xfe\x13\xf4\x81\x0e\xe8\x23\x3c\x27\x38\xd8\xc4\xa1\xd7\x15\x84\x1d\x29\x6c\xad\xc5\x37\x84\xe7\x37\x2d\x86\xc4\xb0\x6b\xbf\x56\x0a\x29\x4f\x76\x83\x8e\x6c\x68\xae\x10\x12\x63\x0c\x80\xb4\xaa\x45\x9a\xe2\x11\x4d\x70\x0d\x31\xd6\x48\xfc\xec\xcc\x0f\xa6\x2c\x7c\x03\x56\xe7\x21\xb8\x86\xd1\x81\xc8\x79\x01\x60\x56\xda\xc4\x19\x83\x86\x86\xd1\xe7\x32\xad\xe1\x23\x89\xc8\x16\x4e\x3b\xfe\x76\x06\x1b\xc3\x06\xdb\x1a\x3c\x5d\x3b\x1a\xf6\x68\x9b\xc7\x06\x0c\xa8\xf2\x45\x39\x01\xc7\x46\x8e\x09\xfd\x9c\xdf\x48\xc6\x0d\x9c\x1e\x2c\x3b\x72\xee\xc4\x03\x86\xb1\x2b\x78\x60\xf2\x17\x64\x2b\x63\x3a\xbc\xd4\x76\x5c\xd6\xb5\x9c\xc4\xa4\x6b\x81\xc3\x29\xd2\xc5\x2c\x01\x47\x03\x6c\x0d\xcd\xbf\xdd\x8a\x70\x68\x59\x35\xc6\x19\x6a\xca\x34\xa9\x57\xa3\x0e\x5b\x7e\x93\x4f\x16\x95\xd3\x14\xbb\x50\xca\x88\x8f\xdb\xd9\x3f\x3b\xfa\x37\xb9\xda\x00\xfc\xfd\xba\xc2\x05\x17\xdb\xe4\xd9\x73\xca\x83\xfa\x81\x8c\x3e\x70\xf5\xea\x30\x9a\x85\x15\xba\xc7\x56\xe8\x33\x55\xbf\xb3\xd5\x1a\xdb\x03\x25\x3a\x48\xb4\xfd\xbf\xb8\x54\x29\x3f\xa4\x33\x33\x53\xd8\x20\x44\x70\xd4\xce\xd4\xf4\xf2\xc6\xfa\x01\x16\x44\x34\x9f\x50\x3e\x0a\x65\xe6\x72\x7d\x72\x83\x87\x0c\x46\x0a\x84\xc4\xe5\x1c\xc8\xe9\x0c\xcd\x29\xb6\xe3\x14\xe2\x48\xdb\x74\x5b\xad\x32\xc2\x9f\x36\x0d\x89\xc7\x2f\xe0\xb1\x9e\x95\xa5\x5c\xf5\xb1\x65\x18\x2c\x09\xdc\x15\x38\x3e\x9f\xf1\x26\x11\x8e\x7d\x2f\x3d\xa8\x14\xfb\x59\x1e\xdb\x94\x93\xcb\x9b\x83\xa4\xb9\xa2\x84\xd0\x3e\xb7\x0e\x94\x3a\x8e\x99\x8e\x5c\x9c\x6d\x8b\x6b\xb6\xf0\xb8\x90\x65\xa5\x5e\x2c\x4a\x49\xfb\x1d\x8f\xcd\xc4\x1e\x3c\x3a\x75\xfc\xa6\x47\xad\x2d\xcf\x7f\xf5\x2f\x60\xbb\x73\xb9\x3b\xe8\x5f\xac\x96\xd3\x78\x5e\xc1\xbf\x8f\xdd\x7e\x86\x63\x0f\xe4\xbb\x85\xa8\xb7\x0b\x1a\x9c\x3d\x91\x78\xa4\xbb\x7a\xa5\x48\xf7\xa6\x4d\x37\xb9\x50\x43\x7c\xdb\xc8\xdb\x7f\x77\x60\x76\x2a\x38\x2b\x51\x1a\xb7\x40\xb8\xbc\xd7\x59\x6d\x00\x5c\x1c\x5e\x5a\xcc\x16\x59\x82\xdb\x26\xd3\xf2\xd4\x27\x1f\x8f\xff\xa6\x5d\x96\xe2\x15\x0d\x5d\x20\x80\xcb\xad\x14\x0e\x52\x7e\x0f\x56\x24\x22\x8e\x3e\xbf\x31\xcc\x0e\x78\xd5\x6f\x9c\x46\xeb\xec\x17\x8e\xef\xca\xed\x6c\xa8\x35\x32\x2e\xda\x4f\xfd\x20\xcd\x03\x14\x8e\xbb\x50\xd8\x00\xf4\x22\xb9\x6c\x1e\x5d\x34\x70\xdd\x32\xd8\xd7\xbe\x35\x29\x3e\x67\x63\xdb\xc9\x5d\x17\xd4\xf9\x7b\x16\xce\x25\x6c\x61\x58\x90\x46\xfd\xd7\x33\x6c\x3b\xa7\xc4\x9e\x38\x44\xae\x9e\x32\x77\xf7\xf6\xd6\x72\xed\xf4\xff\x0e\xd7\xc0\x59\x9d\xd9\x03\xd6\xed\x2c\x23\x83\x13\x1c\xcb\xfe\xfa\xab\x08\x1e\x84\x58\x6b\xbb\x80\x86\x0f\x1b\xfb\xf6\x5c\xd3\x3f\x36\xdc\x72\x5a\x0a\x28\xf2\x58\xfc\xef\x1c\x5a\xd6\x96\x26\x86\x3e\x18\x62\xbe\xdf\xb4\x36\x7c\x34\xe5\xce\x7c\x42\x62\x87\x7b\x67\xf6\x95\x7b\x88\x7d\x07\x9e\xf1\x9b\x52\x5d\xe9\xe6\xac\x4a\xd5\x89\x12\x41\xda\x58\xec\xf7\xd0\x03\x65\x8d\xd3\x03\x6d\xeb\x59\xd6\x71\xa4\xbb\x0e\x05\x6f\xe5\x96\x9d\x86\x4e\x3e\xad\xfb\x03\x53\x7f\xf6\x10\x3d\x06\x67\x81\xb5\xb7\xfb\x4f\x05\xfc\x0f\x01\xa7\x41\x0d\x77\x0c\x87\xf0\x94\x06\x88\x27\x98\xa8\xbd\x85\x18\x5f\xcc\x39\xad\xbb\xd3\xad\x0c\x0f\x34\x51\xff\x53\xeb\xde\xfb\xba\x75\x7f\xdd\x62\xbc\xde\x0f\x5f\xcc\x24\x55\xb2\xe4\xb8\x7a\xd0\xd0\xe7\x96\xc5\x71\xb6\xe4\xde\x1d\x08\xeb\x13\x3e\x0c\xcf\xfb\x1d\x95\x1d\x23\x35\x2f\xea\x95\x3e\x66\xb2\x59\x56\x54\x5a\x1d\xfe\xb4\x35\xf9\x9f\xf7\x03\xba\xa4\x2e\x4f\x17\x3a\x1a\xdb\x5e\xe5\x65\xe2\x63\x3c\x62\xe3\x6a\x05\xb0\x63\x3f\xca\x3a\x86\x20\xeb\xae\x4f\xff\xdc\xa4\x39\x50\x29\xc0\x6b\x5f\x3c\xfd\xc3\xc1\x60\x28\x0e\x07\x5e\xc6\xf8\xc5\x1a\x93\x01\xbd\x75\x55\xb9\x67\xd7\x09\xa9\xbf\xc5\x65\x70\xdc\x66\x1e\x8e\xe4\x75\x5e\xd6\xce\x46\x52\xb4\x55\xda\x23\x29\x9d\x98\xb4\xc9\x71\x59\xca\xb9\x29\xc1\x86\x10\x9f\xa0\x44\xe3\x66\x10\xbc\x23\x5c\x38\xd8\x59\x62\x75\xe2\x45\xe1\x0c\xf3\xa2\x47\x5c\xeb\x51\x0c\xae\x17\xb8\x17\x70\xe8\x28\xe8\x0d\x7d\xfc\xbe\x47\x0d\x50\xaa\xa0\x56\xc7\x21\xee\x00\x2b\x43\xb7\xdd\x9d\xfd\xe5\x72\x54\x9a\x32\xe2\xee\x7a\xf5\xbe\xa8\x77\xa4\x76\x79\xf5\xbc\x53\x23\x85\xf9\xa0\xaa\x02\x56\xab\xda\x9d\x8f\x98\x2e\x41\x69\x86\x41\x1a\x8d\x2b\x21\xed\xc4\xd7\x70\xf3\x61\xa8\x7f\x35\xd2\xcf\xf9\xf8\x7e\x3b\xda\xe1\x26\x0e\xa4\x07\x8f\x3f\xba\x73\xee\x0d\x75\xe0\x22\x38\x6e\x8c\x06\x41\x2e\x1e\x3e\xb6\x65\xd8\xf1\xf9\x58\x13\xea\x5f\x9d\x75\xa7\x51\x94\x3a\x08\xd2\x27\xed\xf4\xba\x1d\xcf\x50\xfb\x2e\x97\x12\x90\x72\x5b\x56\xe2\x2e\x2e\x87\x28\xb7\x45\x13\x7d\x7c\x86\xbb\xa9\x88\x34\xb6\x81\x34\xd9\x85\xb2\xf4\x31\xc4\x31\x00\x6c\x54\x6a\xb6\x52\x05\xca\xa3\xae\x1a\x78\xf3\x07\x00\x80\xa1\xcd\x31\xbc\xf8\x20\x75\x14\x56\x16\x35\x07\x33\x89\x71\xf7\x18\x0c\x5a\x4f\x62\x9d\x6d\x51\x77\x6a\xb2\xa0\x8c\x2a\xc9\x0d\x08\x01\x88\x38\x80\x1d\xb4\xa9\x6c\xa9\x67\xd2\xac\x6b\xd2\x3a\x14\x5e\xb9\x1d\x73\x97\x33\x40\x07\x6a\x14\xee\xa8\x91\x4d\xb2\x1e\x26\xae\xe7\x69\x3f\x7a\x93\xcb\xa9\x40\x35\x65\xd4\x2c\x60\x50\x44\x30\x8a\xc7\xd7\xa5\xd8\x3f\x85\xbd\xb6\x31\x39\xdc\xcb\x73\x12\xbb\x78\xa3\x64\xd0\x98\xa4\x59\xbf\xe2\x16\xfa\x80\xa4\x92\xa5\xa1\xaf\xed\xf3\x6a\xb6\x25\xb0\xc3\x11\x23\x14\x4a\xea\xdb\x78\x6e\xdc\xec\xe6\xa0\xd2\x39\xf5\xaf\x9d\xba\xd7\x6b\xce\x6c\x48\xb0\x79\xe6\xa0\x6a\xf0\x01\x51\x88\xef\x87\x90\x79\xf9\xa2\x7e\xfd\xc2\x08\xc9\x12\xdc\x74\xbe\xe4\xd5\x9c\x73\x63\xb3\xa7\xb5\x7c\x49\xa3\x1a\xbb\x2b\x54\x68\x94\x3e\xba\x78\x81\x82\x1e\x03\x21\x4c\x9b\x18\x22\xd8\x29\x61\x02\x8d\x57\xc5\x52\x8a\x58\x75\x57\x5e\x75\x6c\xcc\xba\x4a\x2b\x69\x0d\x43\xb7\x82\x6f\xf4\x2d\xb4\xad\xc4\x2e\x15\x1e\xc2\xbf\xc1\x73\xd1\xc0\xa3\xd0\x49\xa9\x57\xce\x42\xbf\x3f\x72\xe1\x83\xbe\xde\xa5\xf7\xca\x5c\xaf\x00\xf1\xb3\x3f\x84\xe9\xc1\x4d\x68\xd2\xcc\x91\xab\x67\xd5\x7c\x88\xa3\x62\x01\xab\x88\x8e\xab\xba\xcc\xb3\xd9\x29\xaa\x15\x8f\x05\x8d\x3a\xde\xd7\x4f\xb5\xbd\xa0\x2a\x97\x57\xe7\x3f\xbe\xd1\x38\x5e\xd0\xd7\xe5\xc0\xaf\x3f\x74\xfb\xa7\xd4\xac\x2c\x3a\x9e\x26\xb7\x62\x82\x45\x69\x27\xbf\x44\xfc\xf8\x97\xc8\x4d\x65\x30\xf9\x94\x27\x19\x60\x72\x5d\x9e\x46\x03\x9e\x1e\xc6\x9d\x46\xdb\xe8\xc8\x79\xe3\xf3\xfc\xbc\x7a\xcb\xd9\xcb\xb5\x94\xac\x4d\x0f\x83\xbf\x23\x0e\xdd\x72\x02\xb5\xc1\x79\xbf\x44\x47\x9b\x48\xbf\x91\xf6\x5f\x43\x7c\x4b\x6f\xa0\x8e\x25\x8a\x21\x2e\x3e\x87\xc7\xc6\x7a\x91\x95\xc6\x0f\xbd\x96\xdd\x93\x2e\x1a\x0e\x99\x80\xf7\x91\xb7\x9d\xe5\x01\x0f\xcb\x84\xfe\x55\xe7\x0d\x2d\x25\x29\x11\xe8\x08\xc9\x9a\x4a\x5d\x5f\xa6\xb9\xac\x75\xbb\x51\xc6\x04\xa6\x7a\x8b\xcf\x06\xde\x05\xa1\x68\xf7\x75\x76\x83\x17\xec\xf6\xf4\x37\xfd\x06\x6d\x4c\x53\x3c\x09\x24\x60\x53\x54\xa3\x5c\xc0\x68\xdc\x2f\x7a\xf0\x07\x23\x71\x1e\x2b\x03\x6a\x22\xb3\x5e\x8d\x83\xa8\xe8\x11\x2b\x4d\xab\x1c\x0f\x15\x97\x78\x9c\x31\xc7\x53\x8f\x99\x2c\x2a\xd1\xc7\x23\x69\x7d\x6c\x6d\x12\x17\xf0\x24\x94\x52\xc0\x72\x2b\x4d\x82\xf2\xd1\x66\xf0\xb7\x31\xff\x50\x48\xf0\xa0\xb5\xd9\x2c\x7d\xd0\xb7\x37\x47\xcf\xf3\x14\x6c\xf2\x7b\x6e\x74\x3b\x37\x0a\x6b\xc0\xaa\x2c\xd2\x1a\x43\x35\x92\xa0\xb9\x04\xce\xde\x45\xa1\x65\x72\xee\xfd\x03\xf5\x16\x09\xd7\xd4\xe5\x37\x82\xfb\xd3\x99\xce\x23\xf1\x3e\xa5\xbd\x37\x15\x81\x09\x09\x1e\xbd\x2c\xd5\xa4\xf6\xea\xf8\x46\x51\x58\x05\xca\x12\x7e\xef\xb2\x27\xb8\x5c\x0f\x2d\xd8\x4e\x15\xce\x5c\xd6\x95\x5f\x23\xe7\x0e\x0b\xac\xea\xe8\x8d\x05\xae\x0d\x3c\xbd\x2e\x05\x34\x45\x4a\x4e\x25\xf4\xa9\x43\x84\x05\xc0\xb2\x8c\x8e\x7c\x4d\x31\x87\x28\x1d\xc1\x91\x39\xac\x70\x66\x89\xa8\x13\xda\x03\x37\xf1\x60\xd0\x02\x6c\xdb\x9c\x01\x6b\x94\xe8\xf0\x2c\x63\xfa\x1c\x06\xc3\xc7\xfa\x3b\x0c\xa4\x01\x22\x97\xb6\x84\x94\xf2\xf4\x87\xff\x1a\x93\xe0\xdf\xdd\x98\xf3\xed\x17\x07\x97\xfe\x11\xe1\x6a\xec\xb9\x44\xce\x0a\x71\xb7\xc3\xcb\x41\x3b\x78\x1b\xb8\xe8\x2d\xc5\xd8\x57\x0b\xe0\x88\x7e\xf6\x79\x00\x6f\x38\x88\x1a\x56\x22\x3f\x52\x75\xf6\xe8\x1f\xaa\xcc\x5f\x82\x46\x62\xe2\x49\x36\x92\x61\x72\xab\x9e\x78\xf5\xce\x0f\xce\x3e\xda\x5a\x6d\x93\xd5\xd5\xfb\x57\xb3\x0b\xb0\x57\x45\x3f\x50\x05\xbc\x90\xd9\x4a\xd4\x5c\xaf\x07\xd2\x2e\x33\x10\xe6\x84\xaf\x65\x92\x31\xb0\x37\x61\xf9\x76\x8b\xcb\x5f\x78\xb3\xb9\x7b\x33\x93\x38\x49\xa7\xe0\x87\xc1\xbe\xe8\xd9\x4f\xdd\xe6\xd9\xf5\xd5\xd5\xf7\x41\x14\x40\x37\x71\x82\x06\x7b\xbd\xc3\x5c\xe9\x79\xdc\xef\x79\x9e\x2f\xe2\xbb\x3c\xa7\xec\xd5\x7a\xed\x3b\x3d\x8d\xee\xfa\x32\x4f\xbb\xbf\x43\x5f\xdf\x63\x75\x4f\xb7\x75\xa2\xa9\x5c\x32\x07\x9e\xeb\x54\xce\xda\x6c\x07\x52\xfe\xb9\xce\xd5\x81\x65\xfe\xe9\x2d\x6c\x8e\x31\x98\x82\xb8\x7e\x5e\x98\xcb\xac\xde\x36\xe0\xe1\x09\x33\xf0\xb7\xdf\x7e\xa7\x67\x38\x8c\xcd\x8d\x66\x03\xd2\xcf\x33\x19\x34\xf7\xec\x44\x76\x99\x24\x38\x60\x99\xcf\x82\x13\xce\xca\x73\x3b\xef\xe5\x94\xce\x99\xf5\xf5\x03\xbc\x94\x0a\x4e\xe6\x36\xa9\x12\x3c\x73\x8e\xd0\x10\x45\xac\x77\x95\xa9\x83\x9a\xe4\xd9\x4d\x32\x5b\x94\xe0\x8e\xee\xf6\x90\x09\xe2\x3a\x87\x8d\x9d\x24\x00\x2a\xab\xa0\xa5\x32\xe0\xa9\x2e\x49\xbf\x9b\x00\x6b\x4a\xa7\x49\x55\xa4\x72\xa5\xaf\xbf\x82\xcd\xbd\x49\xee\x1c\x1c\xce\x7e\x26\x59\x55\xe3\x69\x3b\xc8\x6f\x95\x01\x7b\x74\xad\x0c\x95\x40\x98\xd3\x70\x0b\x1f\x17\x6e\x86\x51\x17\x77\xd1\x81\x04\x9a\x48\x00\x26\x63\x74\x87\xc7\x1c\x86\x6a\xde\xe9\x05\xd3\x68\x91\xd1\xdd\xda\xfe\x97\xbb\xb1\xeb\x35\x44\xe3\x82\x14\xb8\x0f\x2e\x41\x78\x70\xab\x40\x35\xf7\xc4\x21\xce\x73\x6c\x38\xd2\x9a\x85\xc2\x19\x9c\x42\x77\xe8\x9c\x40\xd7\xb6\x63\x01\x18\x78\x6c\xcc\xe0\xd6\x5c\x25\x82\x2e\x32\x54\xe2\xd6\xeb\x0e\x7c\x27\xca\xf7\x2a\x18\x03\x7d\xb4\x3c\xf6\x84\xdf\x9a\x51\xbe\x54\x3b\x76\xe9\x40\x4f\xb1\x69\x7f\xc8\x77\x6c\xb1\x6a\x0a\x44\x5e\x1b\xd0\x65\x32\xad\xe3\x0d\x63\x7e\xc6\x76\xda\xe1\xfe\xf1\x60\x28\x9e\xda\x71\x1c\xd4\x63\x0d\x52\xd7\xd5\x11\x3e\xb7\x8f\x04\xc4\xd3\x69\x92\x29\x93\xad\xa1\xbd\x43\x91\xa7\x52\x6f\x6d\xb1\x0d\xfc\xe0\x50\x5b\x1b\x94\xbb\xb1\x93\x77\x7e\x3c\x4f\xb0\x27\x96\x43\x45\x43\x47\x54\x54\x9d\x3b\x6d\x4f\xda\xc4\x1a\x91\xcd\xa2\xbd\xf9\x17\xa6\xf4\xb8\x8b\xce\x1e\xac\xd5\x16\x58\xff\xa1\xe9\xbf\x16\x18\x23\x9b\x97\x78\x6d\xda\x2e\x4f\xdd\x98\x42\x86\x1a\xfa\x62\x12\x4b\x02\x7f\x2c\xfc\x97\xc9\x5d\x8d\x3a\x36\x7a\xbb\xc0\xd2\x48\xd4\x6f\xe8\xf0\x97\x1f\xbf\x3f\x1f\x76\x30\x9b\x50\xd4\xcc\xf6\xaf\x4d\x04\x68\xe8\xcd\x96\x97\xc8\x8e\xb1\x70\xff\x85\xaa\x41\xdf\xba\xd7\xf7\xca\x75\x78\xd8\x22\x19\xcd\xb0\xfe\x8c\x99\x37\x14\x77\xa0\x09\x61\xa5\x45\xb5\xc4\x03\x77\x98\xba\x77\x5c\x15\xe0\xc6\xb4\xd5\x9f\xd2\x84\x57\xdc\x1a\xf1\xdd\xa2\x93\x08\x2b\xab\x66\x25\x1a\xa1\x3d\xed\xd7\x7b\x74\x28\x43\x3e\x9b\x9e\xc0\xcf\x1e\xfa\x0a\x84\x75\xda\x3b\xf2\x26\xc2\x92\x78\x2c\x87\x3c\x31\x53\xee\x0a\x8d\xd6\x68\xcd\x2e\x88\xac\x21\x6f\x85\xc6\xc2\xdf\x18\xae\x70\x16\xbb\x29\xc4\x8d\x9a\x9d\x49\x87\x09\x66\xb2\x5d\x73\x5d\xd1\x6d\x71\xc3\x49\xdb\xf6\x80\x6b\xbb\xf5\x7d\xd5\x0e\x7e\xbc\xa1\xb6\x4e\x7d\xe7\x61\x56\xe1\x37\xf2\xc9\x9b\x2d\x06\xb5\x4f\x51\xf5\xf9\x3d\x2b\xed\x29\xbf\x57\xb1\xbc\x4d\x20\x52\xd7\xd1\xd1\x2b\x33\xa0\x2f\x1e\x24\x11\x8c\xd7\x58\x7f\x87\x93\x57\xb1\x4a\xe9\x36\xc6\x83\x66\x3e\xa7\xdb\xdd\x0f\x93\xc3\x75\xb3\xf2\x81\x91\x5f\x04\xf5\x80\x53\x29\x7e\x77\xc0\x57\x84\x74\xa1\x49\x79\x14\x86\xfc\x1d\x0a\x6a\x9d\xae\x4d\x77\x7f\xad\x09\xbe\xf7\xc3\xb4\x75\x56\x80\x8e\xd2\x37\xae\xbc\xe3\xd0\x61\x4b\xde\xbf\x4d\x11\x1d\xb9\x6a\x1c\xf4\x95\xc7\x0a\x82\x72\x7a\x41\x86\x7f\x23\x12\x73\x0a\xe6\xb5\x06\x1c\x4e\xd0\xa6\xd6\xab\x14\xaf\xe4\xad\xda\xb1\x65\x93\xf6\xf2\xe3\xb3\x3f\x3f\xfb\x9b\x30\x39\x65\x8c\x11\xf2\x92\xae\x76\x60\x55\xf5\x9e\xdd\xb8\xe2\xa5\x2c\xda\x5a\x7b\x73\x32\xb0\x65\xac\x38\xae\x58\x40\x13\x86\x2f\x18\x7d\x54\xba\x02\x14\xf0\xd1\xf7\x84\x1c\xf1\x29\xd7\xcd\x9b\xc2\x20\x0c\xeb\xbe\x6b\x49\x3b\xe4\x6d\xb1\x7e\xe7\xce\xf6\x6d\x4e\x58\x16\x79\x82\xaf\x5a\xb9\x41\xe3\xd7\xd8\xad\xb6\x83\x6e\xbc\xff\x18\xdc\x94\xf5\xaf\x40\x7a\xc9\x3b\x7b\x25\xf3\x21\x22\xd0\x38\xc2\x69\x1c\xf4\xcb\xad\x42\x60\xe7\xf6\xae\x72\x6e\x46\xd2\xa7\xb3\x2d\xab\xa7\x04\xd6\xf7\xf9\x74\x65\x08\xed\x81\x0b\x5f\x39\x71\x55\x53\x3d\x65\x7d\x0d\x9d\x19\x2a\x8d\x0b\xce\x72\xf9\x56\x13\x2d\xc0\xcb\x38\x30\xfe\x7c\x47\xe9\x56\x61\x79\x97\xbe\xa8\x84\xdc\xf3\xfa\x3a\xfe\x05\x25\x7f\x3c\x8d\xde\x70\x44\xc7\x75\x79\x7a\x5c\xe3\xbb\x7c\x52\xf4\x4a\x27\xbd\xa7\xbd\xd3\xe3\xe4\x34\x63\xbe\x1e\xef\x27\xe0\xae\xea\x29\x7e\x60\xc2\x2f\x74\x24\x7e\x38\xda\x55\xc7\xd5\xc6\x25\xa8\xdb\xd2\x3c\x80\xfe\x5e\x47\xba\xbb\xe7\x5a\x6d\x32\xb0\x2b\x69\x60\x73\x06\x47\x9b\x96\x76\xda\xc8\x8a\x32\x48\x9d\xbb\xc4\xa5\xe9\x2e\x3a\x27\x00\x3b\x76\xd7\xe4\xaf\x9a\xd7\x69\x2f\x7b\x31\xfd\x75\xe2\xe7\x7f\x31\xfd\x6f\xbf\x9e\xfe\xb7\x4d\xfa\xdb\x6a\x46\x3c\xfb\xc2\x5c\x91\xcd\x12\x59\xf4\x3e\x31\x7a\x9f\x00\xbd\x5b\x93\x84\x31\xb8\x7d\xf2\x71\x13\x1e\xa4\xdd\x13\xdb\xf9\xe2\xd3\xa5\xe6\x90\xf8\x37\xe4\x9a\xff\xfc\x80\x39\x77\x5d\xee\x9f\x46\xfe\x39\xd2\x3f\x2d\x1a\x1e\x26\xa1\x64\xac\x17\x0c\x9d\x25\x63\xc1\xe8\x9e\x9c\xbb\x04\x13\xf9\x8c\x58\x27\x87\xcd\x89\x28\xa7\xbc\x79\x22\xea\x12\x4c\xe4\x2d\x3a\x9c\x73\xb0\x65\x52\x9d\x01\x18\x77\x7a\x83\x9f\x60\xdb\x5d\x14\x39\xdd\x0a\xe0\xaa\x54\xca\x70\xb6\x80\x90\x57\xb7\x17\x17\x29\x11\xe1\xbf\x50\xe6\x25\x18\x7b\x7a\xa5\x8c\x35\xd4\xb1\xac\x62\x57\xde\xad\xcf\x86\xd2\x7c\x42\x9b\x15\x7c\x93\x4c\x3c\xaa\xd2\x64\xa2\xfa\x87\xee\xac\xc9\x1b\xd3\x28\x8c\x0b\xf3\xa7\xba\x34\x43\x5b\xf2\xa9\x9a\xe4\x53\xf5\xd3\x87\xd7\xcf\xf3\x39\x78\x12\x7c\xff\xcd\xc6\xe9\xfc\x7a\x67\x18\x4e\xe7\xc5\xb4\xa0\xbe\x07\xd7\xcf\xd1\xb9\x62\x67\xba\xfc\xf9\xf6\xdd\xf9\xd9\xb8\x71\x7b\xe0\x5a\x89\xcf\xaa\xa0\xcb\xd7\xd5\x2a\x9b\x70\x92\xa2\x5c\x80\xc7\xdf\x8f\xe9\xc5\x88\xd5\x68\x96\x8f\x89\x62\x6f\x92\x0c\xb7\x66\x67\x36\x57\xfc\xc8\xd1\x75\xdd\x8b\x7a\x2c\x55\x65\x9a\xf2\x6b\xeb\x1c\x69\xbd\x73\xab\x86\x31\xe1\x78\xa7\xcb\x8e\x34\xc1\x70\x82\x81\xfb\x83\x39\xf1\x4a\xf3\xf5\x51\x60\x37\xe5\x89\x74\x2c\xaa\xc9\xcd\xaa\xdf\x84\x4a\x23\xbb\x58\x41\xb9\xa7\x16\xd3\x42\xea\xfb\xe2\x26\xa7\x53\x8e\x2c\x82\x97\x40\xda\xd7\xbd\xe9\x50\xbf\x19\x70\xd0\x4b\x8d\x5a\xaf\x7e\x72\x6f\x92\x44\xec\x34\x89\xdc\xf2\xdd\x53\x7b\xfb\xa1\xe3\x18\x73\xc3\xfb\x94\x38\x4a\x7e\xac\x45\x70\xa0\x03\xfd\x36\x0c\x93\x00\xb5\xdb\x00\x37\xdc\x5f\xba\x9f\x84\xe7\xeb\x82\x76\xed\x78\x29\xac\x5e\xfd\x28\x0b\x57\xdb\xf4\x04\x36\x96\xd1\x13\x39\x2f\x8e\xcc\x85\x86\x63\x7a\x92\xd6\xf6\xc1\x29\x3d\x98\xd9\x07\x78\xad\x5c\xf4\x9e\xe0\x3d\xe7\x23\xfd\x6e\x1f\xbc\x59\x0e\x8f\x7e\xf7\xed\x9f\xec\x93\x7d\x7e\x72\xf7\xf4\xe5\x51\x6f\xc7\xbc\xa7\x46\xab\xc7\x47\x73\x6f\x96\x6f\x33\x96\xaa\x48\x25\x28\xda\xfe\xc5\x93\xe3\xd3\xa8\xf7\xcb\xfe\xe5\xfe\xcc\xbd\xe5\x4a\xf4\x9b\xaa\x6d\x97\x71\x51\x5d\x76\x51\x00\xdf\xf9\xa8\xa9\xc6\x75\x3b\x1f\x61\x5c\xa1\x77\x33\x13\x39\x89\x95\x7e\x01\x91\xdb\x91\x05\xf5\x3d\x9d\x97\x67\xb1\xde\x23\x99\xec\x7f\xaa\xf6\x59\x40\xec\xdb\x0f\x63\xf3\x46\x44\x93\x25\x6a\x95\xec\x50\x06\xdf\xfa\xbc\xe0\xcd\x88\xc0\x08\xef\xcd\xa8\x58\xe7\x91\xa4\xca\xa5\xfc\x8d\xbf\x75\xb6\x67\xbd\x1d\x35\xfd\xd1\x2e\x9a\x97\x51\x76\x04\xf7\xf8\x97\xfb\x3a\xfc\xe5\xbe\x55\xeb\xdc\x65\x1a\x42\x90\x8d\x18\x43\xb4\x14\xce\xaf\xbd\x36\x60\x51\xbb\xa0\xdf\x95\x7e\x95\x56\xd7\x1b\x38\x2c\x18\xc4\x4a\x84\xb9\x4a\xe4\xf1\xe3\x3e\x32\x17\x1e\xff\x77\x00\x00\x00\xff\xff\x04\xc1\x44\xf9\xac\x56\x00\x00") func staticJsGraphJsBytes() ([]byte, error) { return bindataRead( @@ -320,12 +320,12 @@ func staticJsGraphJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "static/js/graph.js", size: 19802, mode: os.FileMode(436), modTime: time.Unix(1443698199, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "static/js/graph.js", size: 22188, mode: os.FileMode(436), modTime: time.Unix(1444763581, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } -var _staticJsGraph_templateHandlebar = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xd4\x58\xcd\x8e\xdb\x36\x10\xbe\xf7\x29\x58\xf5\x92\xa2\x90\xdd\xa4\x40\x0e\x85\x6d\xa0\x4d\x17\x01\x0a\x04\x29\x9a\xb4\x57\x83\x96\xc6\x16\x1b\x9a\x54\x48\xca\xbb\xae\xe1\x77\xef\x0c\x29\xc9\xb2\x57\xa2\x65\x64\xbb\x40\x04\xac\x56\x26\x87\xc3\xf9\xf9\xf8\x91\x43\x56\x3f\xb3\x5c\xec\x98\xc8\xe7\xc9\xc6\xf0\xb2\x58\xde\xe3\xbb\x04\x73\x38\x88\xfc\x78\x4c\x58\x26\xb9\xb5\x17\x7d\xc9\xe2\x1b\xd6\x3e\xb3\xb5\x36\xdb\x46\xec\x73\x05\x66\xbf\xf4\x2d\xf4\x4a\x85\x92\x42\xc1\x99\x7c\x3d\x61\x3d\xc0\xe8\xfb\x8b\xde\xf3\xfe\x4c\xcb\x54\x6e\xd2\x97\x3f\x3e\x92\x42\x39\x07\x0f\x8e\x1b\xe0\x0c\xb5\xa0\xec\xcb\x84\x95\x92\x67\x50\x68\x99\x83\x99\x27\x77\x0f\xa5\x01\x6b\x85\x56\xec\x85\xff\x62\x1f\x0a\xb1\x76\x3f\xdc\x29\x07\x86\xec\x63\x0a\xee\xc9\x3e\xfb\x7d\xc2\x14\xdf\xc2\x3c\x01\x1c\x92\xf8\x60\xd0\xd7\x45\x0c\xbc\x47\x99\x56\xce\x68\xc9\xa0\x55\xbe\x14\xaa\xac\x5c\xc2\x72\xee\x78\x5a\x1a\xbd\x13\x39\x6a\x72\xfb\x12\x78\x01\x3c\x4f\x18\xaf\x9c\xce\xf4\xb6\x94\xe0\xb0\x43\xaf\xd7\xc9\xe2\x70\xa0\xf1\xc7\xe3\x6c\xda\xf8\xf0\x28\x08\x53\x8c\xc2\x88\xc8\xbc\xea\x0b\x4c\x47\x0c\x76\x5c\x2e\xad\xe3\xce\xb2\xb2\x92\x32\x35\x62\x53\xb8\x64\xd1\xab\x1e\x47\x8a\xed\x86\x59\x93\xcd\x93\xc3\x81\x95\xdc\x15\x7f\x18\x58\x8b\x07\x76\x3c\x4e\x49\x87\xc8\xa6\x28\x30\xe5\xff\xf0\x87\x54\x6a\x8e\x51\x9e\x6c\xc4\xba\x0d\x90\x2d\x85\x52\x08\x0f\xc6\xa5\x9b\x27\x24\xb5\x6c\x9a\x46\xb8\xd7\xd7\xf4\x54\x48\xf1\x29\x6a\x24\x57\x4e\x31\xfc\xc3\x5c\x89\x2d\x37\x7b\x4c\x25\x64\x95\x83\x25\xb6\x25\x8c\xf2\x86\x9e\x54\xab\xad\xc0\x9c\x62\xf0\x2a\x20\x24\x79\x89\x06\x25\x75\x6f\xcf\x3c\x16\x24\x64\xee\x1a\x60\x82\x54\xa3\x4d\x28\x0b\xc6\x2d\xb7\xe0\x8c\xc8\x7a\x94\xa2\x5a\x5d\x3a\x42\x71\x6d\x4d\xb2\x48\x59\x18\xc4\xc2\x20\xc6\x71\xca\xca\x58\x44\x74\x3a\x9b\x06\xe1\x1e\xe3\xa6\x61\xde\xe7\x4b\xc5\x55\x6c\x1a\x83\x26\x73\x49\x9e\xf8\x77\x9a\x73\xb5\x21\xb4\xf4\xa3\x7f\xd0\xd0\xf3\xb6\x6f\xd3\xf4\x62\xe4\xc7\xf7\xbf\xbd\xff\x99\xbd\xd1\x6a\x47\x53\xb9\x42\x58\xe6\x34\xfb\x55\x6b\x67\x1d\x52\x1a\x26\x62\xb7\xe2\x66\x82\x82\xd4\x65\xe0\x73\x25\x30\x57\xec\x77\xbe\xe3\x36\x33\xa2\x74\x3d\x49\x61\x28\xb7\x46\xa9\x62\x72\xd1\x99\xa6\xff\x63\xe4\x10\x49\x44\x2e\x7c\x55\x72\x05\xb2\x1f\x2d\x95\x6c\xd4\xa1\x5f\xe4\x5b\x8a\xf2\x36\x39\x8d\x95\xc2\xf6\xa1\xd7\x0f\x96\xa2\x96\x23\xb4\x82\xa2\x45\xaf\x15\x26\x84\xb3\x02\xfd\x9d\x27\xdf\xf9\x9d\xa0\x61\x46\x6e\x04\x6f\x10\xde\xec\x12\x4d\x5f\x3b\x5d\x4d\x8d\x4e\x6f\x36\x4d\xcb\xe2\x2d\x49\xce\xa6\x1c\x33\x2d\xc5\x4d\xa6\x34\xbe\xf1\xcc\x89\x1d\x74\x2d\x43\x3b\x2c\xca\x0f\xd8\x76\xd1\x1b\xb5\xee\x4d\x90\x8d\xd9\x37\x9b\x56\xb2\xb7\xbd\x93\x4d\xd4\xe5\x0d\x40\xdb\x87\xc2\xdd\x93\xd3\xee\x68\x6a\x61\x61\xef\x25\x45\x1c\x37\x2b\x83\xb8\x23\xee\x4d\x4e\x7b\x76\xed\x53\xff\x14\x17\x00\x93\xc0\x0d\x32\xfa\xa0\x70\x58\x3f\xec\xee\x01\x17\x46\xe6\x20\xa7\x85\x82\x3c\x96\x91\x19\xba\x2a\xb1\xc1\x73\xa9\x9d\x3c\xc2\xf9\xd0\x94\xb8\x25\x22\x4d\x15\x50\xd9\xb0\x53\x2e\xbd\x22\x66\x68\xa9\x87\x96\xb0\x33\x49\x58\x0f\x85\xa9\x56\xba\xaa\x9c\xd3\x2a\x22\xc1\x2e\x29\x3e\x87\x35\xaf\x64\x77\x82\xe8\xe8\x40\xfe\x61\x9a\xb8\x64\xa0\xee\x1c\xb2\xa5\xf7\xe3\x8a\x5a\xe1\x28\xc3\x1f\x0a\x23\xd4\x27\xa4\x1f\xc0\x96\x2d\x84\x08\x4c\xa2\x2e\xd3\xd6\xd5\x1e\xc1\xe4\xbe\x2c\x04\xc2\x80\xb5\x5f\xe9\x56\xa8\xca\x12\x5d\x0e\xac\xa1\x5a\xc7\x34\xb8\x14\x95\xf1\x99\x18\x13\xdb\x36\x96\x01\x09\x71\xd7\x09\xa3\x9d\x4c\xd7\x48\x1d\x13\xad\x8f\x6d\x88\x98\x5e\x87\x35\x30\x26\x79\x74\x9e\x1a\x93\xba\x8e\x51\x71\x71\x2b\xfe\x45\xf1\x9f\xe2\x42\xf5\xce\x7c\x38\x74\xd4\x46\x56\x24\x3d\x63\xd0\xfc\xa5\x78\xbe\x05\xd1\xac\x3d\x8e\x8c\xc2\x74\x9b\xa7\xb7\xb8\xa7\x3d\x29\xa6\x4b\xf9\x24\x90\xee\x3b\x1a\x9c\xf5\x3f\x0f\xcd\x75\xa9\xed\x2b\x44\x03\x31\x1c\xa8\x7c\x24\x16\xfe\x84\x7b\xa1\x72\x8f\x06\xa0\xff\x88\x88\x2f\xc3\xc2\x8a\x67\x9f\xee\xb9\xc9\x6f\xc0\xc3\x97\x71\x5c\x0f\xcb\xe1\xf1\xa0\xd9\xa7\x46\xd0\x45\xa0\x3c\xf4\x7e\x0c\xd5\xb5\x81\xbb\xab\xa3\x35\x92\xea\xd8\x79\xa1\xfb\x97\x72\x42\x5e\x1b\xe1\x4f\x39\x54\x91\x70\xac\xcd\xf6\xf8\xa4\xef\xde\xa5\xf9\xf5\xcc\x8e\x64\xd5\x06\x30\xe8\xf9\x18\x56\x6d\x78\xf5\xe5\xeb\x6b\x72\x2d\xb5\xa2\x66\x4f\xa9\x5f\xe1\x2a\x22\x4e\x1d\xbf\x8a\x7e\xc9\x77\x5c\x21\x13\x3d\xdd\x32\xc2\xb4\xdf\xb8\x8a\x86\x25\xae\xb0\xea\x6d\x8c\x18\x73\xa8\x5b\xb2\xd7\x57\x2c\x2d\xcd\xe0\xe9\xbc\xf2\x25\xb1\x50\xcc\x02\xba\x98\xdb\x8b\xcb\x1f\x94\x99\xb0\x17\x74\xb3\xd3\x41\x70\x53\xbf\x3b\x28\x9b\x5b\x1b\x5a\xad\xa7\xdf\x4d\x75\xd0\x82\xee\xd4\x45\xcd\x01\xb3\xaf\x63\x87\xe7\x67\x8b\x4f\xc8\xd4\x39\x18\x87\xa0\x6d\x1d\xf2\x28\xe4\xfe\x86\xe3\x66\x1c\x05\xd4\x34\x3a\x9e\xe4\x98\x59\x5b\x5d\x88\x3c\x07\x75\xca\x8a\x9f\xe0\x2c\xf8\xbe\x25\x7a\x90\x1a\xb8\xc8\x3a\xeb\x1c\x51\x17\x85\x1a\x8b\x2e\xe2\x06\xef\xc6\x1e\x0f\x92\xb0\xa1\x55\x1d\x1b\x10\xeb\x1a\x53\xfb\x85\x2a\x97\xd5\xc5\xeb\x59\xe9\x77\x5e\xd0\x0e\xda\x4b\xf5\x3e\x74\xf4\xe2\x0f\xff\xa6\xca\x14\xa3\x6f\xe9\xec\xe3\x7f\x17\x7a\x87\xc5\x65\xad\x75\xe9\xdb\x62\x71\x77\x74\xb9\x19\x4d\xb5\x2b\x16\x77\x12\xb6\x58\xfd\xce\xa6\xf8\x7d\x45\xf4\x6f\xca\x7a\x5c\x90\x7a\xa3\x93\xce\xdc\x4a\xe7\xfb\xf8\x4c\x66\x31\x73\x39\xba\x29\x2d\x06\x78\x9e\xbc\xc2\xf4\x89\x85\xd2\x7e\x7f\x24\xa0\xe3\x24\x39\xbd\x4c\xd4\x8e\xd8\x3c\xd8\x4d\xc1\xbb\x11\x10\x43\x37\xb2\xb7\xdd\x84\x75\x1b\x68\xb3\x3f\xb5\xd4\x02\xff\x05\x00\x00\xff\xff\xff\xa9\x85\xeb\xf6\x17\x00\x00") +var _staticJsGraph_templateHandlebar = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xd4\x58\x5f\x8f\xdb\x36\x0c\x7f\xdf\xa7\xd0\xbc\x97\x0e\x83\x93\x5d\x07\xf4\x61\x48\x02\x6c\xdd\xa1\xc0\x80\xa2\xc3\xda\xed\x35\x50\x2c\x26\xd6\xaa\x48\xae\x24\xe7\x2e\x0b\xf2\xdd\x47\xca\x7f\xe2\xfc\xb1\xe2\xe0\x6e\x07\xd4\xc0\xf9\x1c\x89\xa2\x44\xf2\xc7\x9f\x44\xb1\xfa\x99\x08\xb9\x61\x52\x4c\x93\x95\xe5\x45\x3e\x7f\xc0\x77\x01\x76\xb7\x93\x62\xbf\x4f\x58\xa6\xb8\x73\x27\x7d\xc9\xec\x1b\xd6\x3e\x93\xa5\xb1\xeb\x46\xec\x4b\x09\x76\x3b\x0f\x2d\xf4\x4a\xa5\x56\x52\xc3\x91\x7c\x3d\x61\x3d\xc0\x9a\x87\x93\xde\xe3\xfe\xcc\xa8\x54\xad\xd2\xbb\x1f\xcf\xa4\x50\xce\xc3\xa3\xe7\x16\x38\x43\x2d\x28\x7b\x97\xb0\x42\xf1\x0c\x72\xa3\x04\xd8\x69\x72\xff\x58\x58\x70\x4e\x1a\xcd\x5e\x85\x2f\xf6\x31\x97\x4b\xff\xc3\xbd\xf6\x60\x69\x7d\x4c\xc3\x03\xad\xcf\x7d\x9f\x30\xcd\xd7\x30\x4d\x00\x87\x24\xc1\x19\xf4\x75\xe2\x83\x60\x51\x66\xb4\xb7\x46\x31\x68\x95\xcf\xa5\x2e\x4a\x9f\x30\xc1\x3d\x4f\x0b\x6b\x36\x52\xa0\x26\xbf\x2d\x80\xe7\xc0\x45\xc2\x78\xe9\x4d\x66\xd6\x85\x02\x8f\x1d\x66\xb9\x4c\x66\xbb\x1d\x8d\xdf\xef\x27\xe3\xc6\x86\x33\x27\x8c\xd1\x0b\x03\x3c\xf3\xfa\x92\x63\x3a\x62\xb0\xe1\x6a\xee\x3c\xf7\x8e\x15\xa5\x52\xa9\x95\xab\xdc\x27\xb3\x8b\xea\x71\xa4\x5c\xaf\x98\xb3\xd9\x34\xd9\xed\x58\xc1\x7d\xfe\x87\x85\xa5\x7c\x64\xfb\xfd\x98\x74\xc8\x6c\x8c\x02\x63\xfe\x0f\x7f\x4c\x95\xe1\xe8\xe5\xd1\x4a\x2e\x5b\x07\xb9\x42\x6a\x8d\xf0\x60\x5c\xf9\x69\x42\x52\xf3\xa6\x69\x80\x79\x97\x9a\x9e\x0b\x29\x21\x44\x8d\xe4\xc2\x6b\x86\x7f\x18\x2b\xb9\xe6\x76\x8b\xa1\x84\xac\xf4\x30\xc7\xb6\x84\x51\xdc\xd0\x92\x72\xb1\x96\x18\x53\x74\x5e\x09\x84\xa4\x20\xd1\xa0\xa4\xee\x7d\x39\x9b\xae\x06\xd9\x5a\x44\x33\x57\x60\x7d\xf5\x4e\x05\xd7\x2b\x72\xfb\x65\x18\xf5\x2e\xf4\xb8\xed\xdb\x34\x3d\x19\xf9\xe9\xc3\x6f\x1f\x7e\x66\x6f\x8d\xde\xd0\x54\x3e\x97\x8e\x79\xc3\x7e\x35\xc6\x3b\x8f\xdc\x80\xfe\xd9\x2c\xb8\x1d\xa1\x20\x75\x59\xf8\x52\x4a\xcc\x12\xf6\x3b\xdf\x70\x97\x59\x59\xf8\x33\x33\xe8\x41\x8c\xa1\x54\x3e\x3a\xe9\x4c\xd3\xff\xd1\x73\x98\xc3\x94\xa5\x7c\x51\x70\x0d\xea\x82\x14\xca\x95\xaa\x51\x87\x76\x91\x6d\x29\xca\xbb\xe4\x30\x56\x49\x77\x0e\x83\x7a\xb0\x92\xb5\x1c\xf1\x04\x68\xca\x1e\xa3\x31\x20\x9c\xe5\x68\xef\x34\xf9\x2e\x50\x6a\x43\x31\xdc\x4a\xde\x70\x4b\x43\xb7\x4d\x5f\x3b\x5d\xcd\x31\xde\xac\x56\x4d\xcb\xec\x1d\x49\x4e\xc6\x1c\x23\xad\xe4\x4d\x4b\x69\x6c\xe3\x99\x97\x1b\xe8\xae\x0c\xd7\xe1\x50\xbe\x67\x6d\x27\xbd\xd1\xd5\xbd\xad\x64\x63\xeb\x9b\x8c\x4b\x75\xb1\xbd\x13\x4d\xd4\x15\x16\x80\x6b\xef\x73\xf7\x85\x98\x76\x47\x53\x0b\xab\x36\x31\x52\xc4\x91\xf5\x2d\xe2\x8e\x48\x2c\x39\x6c\x7e\xb5\x4d\x97\xa7\x38\x01\x98\x02\x6e\x91\x1a\x7b\x85\xab\xfc\x61\xf7\x8f\x98\x18\x99\x07\x41\x89\x82\x3b\x48\x46\xcb\x30\x65\x81\x0d\x81\x94\xdc\xe8\x0c\xe7\x7d\x53\xe2\xde\xb2\x06\x9f\x43\xe9\xaa\x2d\x67\x1e\x14\x31\x4b\xa9\x5e\xb5\x54\x14\xaf\x60\xd9\xe7\xa6\x5a\xe9\xa2\xf4\xde\xe8\x88\x04\x3b\xe5\x4a\x01\x4b\x5e\xaa\xee\x04\xd1\xd1\x15\x8b\x56\xd3\xc4\x25\x2b\x46\x15\x90\xcd\x83\x1d\x57\xd4\x4a\x4f\x11\xfe\x98\x5b\xa9\x3f\x23\xfd\x00\xb6\xac\xa1\xf2\xc0\x28\x6a\x32\xed\x01\xed\x59\x46\x6d\x8b\x5c\x22\x0c\x58\xfb\x95\xae\xa5\x2e\x1d\xd1\x65\x4f\x0e\xd5\x3a\xc6\x95\x49\x51\x99\x10\x89\x21\xbe\x6d\x7d\x59\x21\x21\x6e\x3a\x61\xb4\x13\xe9\x1a\xa9\x43\xbc\xf5\xa9\x75\x11\x33\xcb\x2a\x07\x86\x04\x8f\x0e\x26\x43\x42\xd7\x59\x54\x5c\xdc\xc9\x7f\x51\xfc\xa7\xb8\x50\xbd\xe1\xee\x76\x1d\xb5\x91\x8c\xa4\x67\x08\x9a\x9f\x8a\xe7\x5b\x10\xdd\x38\x46\xea\x41\x98\x6e\xe3\xf4\x0e\xf7\xb4\x67\xc5\x74\xa1\x9e\x05\xd2\x97\x8e\x06\x47\xfd\x2f\x43\x73\x5d\x6a\xfb\x0a\xd1\x40\x0c\x07\x5a\x0c\xc4\xc2\x9f\xf0\x20\xb5\x08\x68\x00\xfa\x8f\x88\x78\x1a\x16\x16\x3c\xfb\xfc\xc0\xad\xb8\x01\x0f\x4f\xe3\xb8\x0b\x2c\x87\xc7\x83\x66\x9f\x1a\x40\x17\x15\xe5\xa1\xf5\x43\xa8\xae\x75\xdc\x7d\xed\xad\x81\x54\xc7\x8e\x2b\xc6\xbf\xb4\x97\xea\xda\x88\x70\xca\xa1\x5a\x90\x63\x91\xb3\xc5\x27\x7d\xff\x3e\x15\xd7\x23\x3b\x90\x55\x1b\xc0\xa0\xe5\x43\x58\xb5\xe1\xd5\xbb\x37\xd7\xe4\x5a\x6a\x45\xcd\x81\x52\xbf\xc2\x2c\x22\x4e\x1d\x9e\x45\xbf\x88\x0d\xd7\xc8\x44\xcf\x97\x46\x18\xf6\x1b\xb3\xa8\x5f\xe2\x0a\xab\xde\xc6\x88\x31\x83\xba\xb5\x6f\x7d\x57\xd1\xd2\x0c\x9e\xce\x4b\xaa\x06\x30\x23\x99\x03\x34\x51\xb8\x93\x5b\x14\x94\x19\xb1\x57\x74\x45\xd2\x41\x70\x53\x08\x7b\x28\x9a\xeb\x0f\xca\xd6\xc3\xef\xa6\x3a\x68\x41\x77\xe8\xa2\xe6\x0a\xb3\x6f\x62\x87\xe7\x17\xf3\x4f\x15\xa9\x63\x30\xf6\x41\xdb\x79\xe4\x51\x10\xe1\xaa\xe0\x66\x1c\x55\xa8\x69\x74\x3c\xcb\x31\xb3\x5e\x75\x2e\x85\x00\x7d\x88\x4a\x98\xe0\xc8\xf9\xa1\x25\x7a\x90\xea\xb9\x11\x3a\xea\x1c\x50\x17\x55\x35\x16\xdd\x68\xf5\x5e\x32\x9d\x0f\x52\xb0\xa2\xac\x8e\x0d\x88\x75\x0d\xa9\xfd\xaa\x2a\x97\xd5\xc5\xeb\x51\xe9\x77\x5c\xd0\xf6\xae\x97\xea\x7d\xe8\xe8\xc5\x1f\xe1\x4d\x95\x29\x7a\xdf\xd1\xd9\x27\xfc\xce\xcd\x06\x8b\xcb\x5a\xeb\x3c\xb4\xc5\xfc\xee\xe9\x96\x30\x1a\x6a\x9f\xcf\xee\x15\xac\xb1\xfa\x9d\x8c\xf1\xfb\x8a\xe8\xdf\x14\xf5\xb8\x20\xf5\x46\x27\x9d\xf8\x85\x11\xdb\xf8\x4c\x76\x36\xf1\x02\xcd\x54\x0e\x1d\x3c\x4d\x5e\x63\xf8\xe4\x4c\x9b\xb0\x3f\x12\xd0\x71\x12\x41\x2f\x1b\x5d\x47\x6c\x1e\xec\x26\xe7\xdd\x08\x88\xbe\xab\xcd\xdb\x6e\xc2\xba\x0d\xb4\xd9\x1f\x5a\x6a\x81\xff\x02\x00\x00\xff\xff\x82\x33\xe9\x4c\x3f\x17\x00\x00") func staticJsGraph_templateHandlebarBytes() ([]byte, error) { return bindataRead( @@ -340,8 +340,8 @@ func staticJsGraph_templateHandlebar() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "static/js/graph_template.handlebar", size: 6134, mode: os.FileMode(436), modTime: time.Unix(1442397535, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "static/js/graph_template.handlebar", size: 5951, mode: os.FileMode(436), modTime: time.Unix(1444763820, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -360,8 +360,8 @@ func staticJsProm_consoleJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "static/js/prom_console.js", size: 20889, mode: os.FileMode(436), modTime: time.Unix(1442397535, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "static/js/prom_console.js", size: 20889, mode: os.FileMode(436), modTime: time.Unix(1444576136, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -381,7 +381,7 @@ func staticVendorBootstrap331CssBootstrapThemeCss() (*asset, error) { } info := bindataFileInfo{name: "static/vendor/bootstrap-3.3.1/css/bootstrap-theme.css", size: 22474, mode: os.FileMode(436), modTime: time.Unix(1442397535, 0)} - a := &asset{bytes: bytes, info: info} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -401,7 +401,7 @@ func staticVendorBootstrap331CssBootstrapThemeCssMap() (*asset, error) { } info := bindataFileInfo{name: "static/vendor/bootstrap-3.3.1/css/bootstrap-theme.css.map", size: 43029, mode: os.FileMode(436), modTime: time.Unix(1442397535, 0)} - a := &asset{bytes: bytes, info: info} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -421,7 +421,7 @@ func staticVendorBootstrap331CssBootstrapThemeMinCss() (*asset, error) { } info := bindataFileInfo{name: "static/vendor/bootstrap-3.3.1/css/bootstrap-theme.min.css", size: 19835, mode: os.FileMode(436), modTime: time.Unix(1442397535, 0)} - a := &asset{bytes: bytes, info: info} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -441,7 +441,7 @@ func staticVendorBootstrap331CssBootstrapCss() (*asset, error) { } info := bindataFileInfo{name: "static/vendor/bootstrap-3.3.1/css/bootstrap.css", size: 137067, mode: os.FileMode(436), modTime: time.Unix(1442397535, 0)} - a := &asset{bytes: bytes, info: info} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -461,7 +461,7 @@ func staticVendorBootstrap331CssBootstrapCssMap() (*asset, error) { } info := bindataFileInfo{name: "static/vendor/bootstrap-3.3.1/css/bootstrap.css.map", size: 366144, mode: os.FileMode(436), modTime: time.Unix(1442397535, 0)} - a := &asset{bytes: bytes, info: info} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -481,7 +481,7 @@ func staticVendorBootstrap331CssBootstrapMinCss() (*asset, error) { } info := bindataFileInfo{name: "static/vendor/bootstrap-3.3.1/css/bootstrap.min.css", size: 113498, mode: os.FileMode(436), modTime: time.Unix(1442397535, 0)} - a := &asset{bytes: bytes, info: info} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -501,7 +501,7 @@ func staticVendorBootstrap331FontsGlyphiconsHalflingsRegularEot() (*asset, error } info := bindataFileInfo{name: "static/vendor/bootstrap-3.3.1/fonts/glyphicons-halflings-regular.eot", size: 20335, mode: os.FileMode(436), modTime: time.Unix(1442397535, 0)} - a := &asset{bytes: bytes, info: info} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -521,7 +521,7 @@ func staticVendorBootstrap331FontsGlyphiconsHalflingsRegularSvg() (*asset, error } info := bindataFileInfo{name: "static/vendor/bootstrap-3.3.1/fonts/glyphicons-halflings-regular.svg", size: 62926, mode: os.FileMode(436), modTime: time.Unix(1442397535, 0)} - a := &asset{bytes: bytes, info: info} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -541,7 +541,7 @@ func staticVendorBootstrap331FontsGlyphiconsHalflingsRegularTtf() (*asset, error } info := bindataFileInfo{name: "static/vendor/bootstrap-3.3.1/fonts/glyphicons-halflings-regular.ttf", size: 41280, mode: os.FileMode(436), modTime: time.Unix(1442397535, 0)} - a := &asset{bytes: bytes, info: info} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -561,7 +561,7 @@ func staticVendorBootstrap331FontsGlyphiconsHalflingsRegularWoff() (*asset, erro } info := bindataFileInfo{name: "static/vendor/bootstrap-3.3.1/fonts/glyphicons-halflings-regular.woff", size: 23320, mode: os.FileMode(436), modTime: time.Unix(1442397535, 0)} - a := &asset{bytes: bytes, info: info} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -581,7 +581,7 @@ func staticVendorBootstrap331JsBootstrapJs() (*asset, error) { } info := bindataFileInfo{name: "static/vendor/bootstrap-3.3.1/js/bootstrap.js", size: 67155, mode: os.FileMode(436), modTime: time.Unix(1442397535, 0)} - a := &asset{bytes: bytes, info: info} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -601,7 +601,7 @@ func staticVendorBootstrap331JsBootstrapMinJs() (*asset, error) { } info := bindataFileInfo{name: "static/vendor/bootstrap-3.3.1/js/bootstrap.min.js", size: 35601, mode: os.FileMode(436), modTime: time.Unix(1442397535, 0)} - a := &asset{bytes: bytes, info: info} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -621,7 +621,7 @@ func staticVendorBootstrap331JsNpmJs() (*asset, error) { } info := bindataFileInfo{name: "static/vendor/bootstrap-3.3.1/js/npm.js", size: 484, mode: os.FileMode(436), modTime: time.Unix(1442397535, 0)} - a := &asset{bytes: bytes, info: info} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -641,7 +641,7 @@ func staticVendorBootstrapDatetimepickerBootstrapDatetimepickerJs() (*asset, err } info := bindataFileInfo{name: "static/vendor/bootstrap-datetimepicker/bootstrap-datetimepicker.js", size: 53185, mode: os.FileMode(436), modTime: time.Unix(1442397535, 0)} - a := &asset{bytes: bytes, info: info} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -661,7 +661,7 @@ func staticVendorBootstrapDatetimepickerBootstrapDatetimepickerMinCss() (*asset, } info := bindataFileInfo{name: "static/vendor/bootstrap-datetimepicker/bootstrap-datetimepicker.min.css", size: 5059, mode: os.FileMode(436), modTime: time.Unix(1442397535, 0)} - a := &asset{bytes: bytes, info: info} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -681,7 +681,7 @@ func staticVendorBootstrap3TypeaheadBootstrap3TypeaheadMinJs() (*asset, error) { } info := bindataFileInfo{name: "static/vendor/bootstrap3-typeahead/bootstrap3-typeahead.min.js", size: 7856, mode: os.FileMode(436), modTime: time.Unix(1442397535, 0)} - a := &asset{bytes: bytes, info: info} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -701,7 +701,7 @@ func staticVendorJsHandlebarsJs() (*asset, error) { } info := bindataFileInfo{name: "static/vendor/js/handlebars.js", size: 65639, mode: os.FileMode(436), modTime: time.Unix(1442397535, 0)} - a := &asset{bytes: bytes, info: info} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -721,7 +721,7 @@ func staticVendorJsJqueryHotkeysJs() (*asset, error) { } info := bindataFileInfo{name: "static/vendor/js/jquery.hotkeys.js", size: 3283, mode: os.FileMode(436), modTime: time.Unix(1442397535, 0)} - a := &asset{bytes: bytes, info: info} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -741,7 +741,7 @@ func staticVendorJsJqueryMinJs() (*asset, error) { } info := bindataFileInfo{name: "static/vendor/js/jquery.min.js", size: 95935, mode: os.FileMode(436), modTime: time.Unix(1442397535, 0)} - a := &asset{bytes: bytes, info: info} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -761,7 +761,7 @@ func staticVendorJsJquerySelectionJs() (*asset, error) { } info := bindataFileInfo{name: "static/vendor/js/jquery.selection.js", size: 13320, mode: os.FileMode(436), modTime: time.Unix(1442397535, 0)} - a := &asset{bytes: bytes, info: info} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -781,7 +781,7 @@ func staticVendorRickshawRickshawMinCss() (*asset, error) { } info := bindataFileInfo{name: "static/vendor/rickshaw/rickshaw.min.css", size: 6102, mode: os.FileMode(436), modTime: time.Unix(1442397535, 0)} - a := &asset{bytes: bytes, info: info} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -801,7 +801,7 @@ func staticVendorRickshawRickshawMinJs() (*asset, error) { } info := bindataFileInfo{name: "static/vendor/rickshaw/rickshaw.min.js", size: 76322, mode: os.FileMode(436), modTime: time.Unix(1442397535, 0)} - a := &asset{bytes: bytes, info: info} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -821,7 +821,7 @@ func staticVendorRickshawVendorD3LayoutMinJs() (*asset, error) { } info := bindataFileInfo{name: "static/vendor/rickshaw/vendor/d3.layout.min.js", size: 17514, mode: os.FileMode(436), modTime: time.Unix(1442397535, 0)} - a := &asset{bytes: bytes, info: info} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -841,7 +841,7 @@ func staticVendorRickshawVendorD3V3Js() (*asset, error) { } info := bindataFileInfo{name: "static/vendor/rickshaw/vendor/d3.v3.js", size: 144718, mode: os.FileMode(436), modTime: time.Unix(1442397535, 0)} - a := &asset{bytes: bytes, info: info} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -864,7 +864,7 @@ func Asset(name string) ([]byte, error) { // It simplifies safe initialization of global variables. func MustAsset(name string) []byte { a, err := Asset(name) - if err != nil { + if (err != nil) { panic("asset: Asset(" + name + "): " + err.Error()) } @@ -897,43 +897,43 @@ func AssetNames() []string { // _bindata is a table, holding each asset generator, mapped to its name. var _bindata = map[string]func() (*asset, error){ - "templates/_base.html": templates_baseHtml, - "templates/alerts.html": templatesAlertsHtml, - "templates/graph.html": templatesGraphHtml, - "templates/status.html": templatesStatusHtml, - "static/css/alerts.css": staticCssAlertsCss, - "static/css/graph.css": staticCssGraphCss, - "static/css/prom_console.css": staticCssProm_consoleCss, - "static/css/prometheus.css": staticCssPrometheusCss, - "static/img/ajax-loader.gif": staticImgAjaxLoaderGif, - "static/js/alerts.js": staticJsAlertsJs, - "static/js/graph.js": staticJsGraphJs, - "static/js/graph_template.handlebar": staticJsGraph_templateHandlebar, - "static/js/prom_console.js": staticJsProm_consoleJs, - "static/vendor/bootstrap-3.3.1/css/bootstrap-theme.css": staticVendorBootstrap331CssBootstrapThemeCss, - "static/vendor/bootstrap-3.3.1/css/bootstrap-theme.css.map": staticVendorBootstrap331CssBootstrapThemeCssMap, - "static/vendor/bootstrap-3.3.1/css/bootstrap-theme.min.css": staticVendorBootstrap331CssBootstrapThemeMinCss, - "static/vendor/bootstrap-3.3.1/css/bootstrap.css": staticVendorBootstrap331CssBootstrapCss, - "static/vendor/bootstrap-3.3.1/css/bootstrap.css.map": staticVendorBootstrap331CssBootstrapCssMap, - "static/vendor/bootstrap-3.3.1/css/bootstrap.min.css": staticVendorBootstrap331CssBootstrapMinCss, - "static/vendor/bootstrap-3.3.1/fonts/glyphicons-halflings-regular.eot": staticVendorBootstrap331FontsGlyphiconsHalflingsRegularEot, - "static/vendor/bootstrap-3.3.1/fonts/glyphicons-halflings-regular.svg": staticVendorBootstrap331FontsGlyphiconsHalflingsRegularSvg, - "static/vendor/bootstrap-3.3.1/fonts/glyphicons-halflings-regular.ttf": staticVendorBootstrap331FontsGlyphiconsHalflingsRegularTtf, - "static/vendor/bootstrap-3.3.1/fonts/glyphicons-halflings-regular.woff": staticVendorBootstrap331FontsGlyphiconsHalflingsRegularWoff, - "static/vendor/bootstrap-3.3.1/js/bootstrap.js": staticVendorBootstrap331JsBootstrapJs, - "static/vendor/bootstrap-3.3.1/js/bootstrap.min.js": staticVendorBootstrap331JsBootstrapMinJs, - "static/vendor/bootstrap-3.3.1/js/npm.js": staticVendorBootstrap331JsNpmJs, - "static/vendor/bootstrap-datetimepicker/bootstrap-datetimepicker.js": staticVendorBootstrapDatetimepickerBootstrapDatetimepickerJs, + "templates/_base.html": templates_baseHtml, + "templates/alerts.html": templatesAlertsHtml, + "templates/graph.html": templatesGraphHtml, + "templates/status.html": templatesStatusHtml, + "static/css/alerts.css": staticCssAlertsCss, + "static/css/graph.css": staticCssGraphCss, + "static/css/prom_console.css": staticCssProm_consoleCss, + "static/css/prometheus.css": staticCssPrometheusCss, + "static/img/ajax-loader.gif": staticImgAjaxLoaderGif, + "static/js/alerts.js": staticJsAlertsJs, + "static/js/graph.js": staticJsGraphJs, + "static/js/graph_template.handlebar": staticJsGraph_templateHandlebar, + "static/js/prom_console.js": staticJsProm_consoleJs, + "static/vendor/bootstrap-3.3.1/css/bootstrap-theme.css": staticVendorBootstrap331CssBootstrapThemeCss, + "static/vendor/bootstrap-3.3.1/css/bootstrap-theme.css.map": staticVendorBootstrap331CssBootstrapThemeCssMap, + "static/vendor/bootstrap-3.3.1/css/bootstrap-theme.min.css": staticVendorBootstrap331CssBootstrapThemeMinCss, + "static/vendor/bootstrap-3.3.1/css/bootstrap.css": staticVendorBootstrap331CssBootstrapCss, + "static/vendor/bootstrap-3.3.1/css/bootstrap.css.map": staticVendorBootstrap331CssBootstrapCssMap, + "static/vendor/bootstrap-3.3.1/css/bootstrap.min.css": staticVendorBootstrap331CssBootstrapMinCss, + "static/vendor/bootstrap-3.3.1/fonts/glyphicons-halflings-regular.eot": staticVendorBootstrap331FontsGlyphiconsHalflingsRegularEot, + "static/vendor/bootstrap-3.3.1/fonts/glyphicons-halflings-regular.svg": staticVendorBootstrap331FontsGlyphiconsHalflingsRegularSvg, + "static/vendor/bootstrap-3.3.1/fonts/glyphicons-halflings-regular.ttf": staticVendorBootstrap331FontsGlyphiconsHalflingsRegularTtf, + "static/vendor/bootstrap-3.3.1/fonts/glyphicons-halflings-regular.woff": staticVendorBootstrap331FontsGlyphiconsHalflingsRegularWoff, + "static/vendor/bootstrap-3.3.1/js/bootstrap.js": staticVendorBootstrap331JsBootstrapJs, + "static/vendor/bootstrap-3.3.1/js/bootstrap.min.js": staticVendorBootstrap331JsBootstrapMinJs, + "static/vendor/bootstrap-3.3.1/js/npm.js": staticVendorBootstrap331JsNpmJs, + "static/vendor/bootstrap-datetimepicker/bootstrap-datetimepicker.js": staticVendorBootstrapDatetimepickerBootstrapDatetimepickerJs, "static/vendor/bootstrap-datetimepicker/bootstrap-datetimepicker.min.css": staticVendorBootstrapDatetimepickerBootstrapDatetimepickerMinCss, - "static/vendor/bootstrap3-typeahead/bootstrap3-typeahead.min.js": staticVendorBootstrap3TypeaheadBootstrap3TypeaheadMinJs, - "static/vendor/js/handlebars.js": staticVendorJsHandlebarsJs, - "static/vendor/js/jquery.hotkeys.js": staticVendorJsJqueryHotkeysJs, - "static/vendor/js/jquery.min.js": staticVendorJsJqueryMinJs, - "static/vendor/js/jquery.selection.js": staticVendorJsJquerySelectionJs, - "static/vendor/rickshaw/rickshaw.min.css": staticVendorRickshawRickshawMinCss, - "static/vendor/rickshaw/rickshaw.min.js": staticVendorRickshawRickshawMinJs, - "static/vendor/rickshaw/vendor/d3.layout.min.js": staticVendorRickshawVendorD3LayoutMinJs, - "static/vendor/rickshaw/vendor/d3.v3.js": staticVendorRickshawVendorD3V3Js, + "static/vendor/bootstrap3-typeahead/bootstrap3-typeahead.min.js": staticVendorBootstrap3TypeaheadBootstrap3TypeaheadMinJs, + "static/vendor/js/handlebars.js": staticVendorJsHandlebarsJs, + "static/vendor/js/jquery.hotkeys.js": staticVendorJsJqueryHotkeysJs, + "static/vendor/js/jquery.min.js": staticVendorJsJqueryMinJs, + "static/vendor/js/jquery.selection.js": staticVendorJsJquerySelectionJs, + "static/vendor/rickshaw/rickshaw.min.css": staticVendorRickshawRickshawMinCss, + "static/vendor/rickshaw/rickshaw.min.js": staticVendorRickshawRickshawMinJs, + "static/vendor/rickshaw/vendor/d3.layout.min.js": staticVendorRickshawVendorD3LayoutMinJs, + "static/vendor/rickshaw/vendor/d3.v3.js": staticVendorRickshawVendorD3V3Js, } // AssetDir returns the file names below a certain @@ -972,123 +972,160 @@ func AssetDir(name string) ([]string, error) { } type bintree struct { - Func func() (*asset, error) + Func func() (*asset, error) Children map[string]*bintree } - var _bintree = &bintree{nil, map[string]*bintree{ "static": &bintree{nil, map[string]*bintree{ "css": &bintree{nil, map[string]*bintree{ - "alerts.css": &bintree{staticCssAlertsCss, map[string]*bintree{}}, - "graph.css": &bintree{staticCssGraphCss, map[string]*bintree{}}, - "prom_console.css": &bintree{staticCssProm_consoleCss, map[string]*bintree{}}, - "prometheus.css": &bintree{staticCssPrometheusCss, map[string]*bintree{}}, + "alerts.css": &bintree{staticCssAlertsCss, map[string]*bintree{ + }}, + "graph.css": &bintree{staticCssGraphCss, map[string]*bintree{ + }}, + "prom_console.css": &bintree{staticCssProm_consoleCss, map[string]*bintree{ + }}, + "prometheus.css": &bintree{staticCssPrometheusCss, map[string]*bintree{ + }}, }}, "img": &bintree{nil, map[string]*bintree{ - "ajax-loader.gif": &bintree{staticImgAjaxLoaderGif, map[string]*bintree{}}, + "ajax-loader.gif": &bintree{staticImgAjaxLoaderGif, map[string]*bintree{ + }}, }}, "js": &bintree{nil, map[string]*bintree{ - "alerts.js": &bintree{staticJsAlertsJs, map[string]*bintree{}}, - "graph.js": &bintree{staticJsGraphJs, map[string]*bintree{}}, - "graph_template.handlebar": &bintree{staticJsGraph_templateHandlebar, map[string]*bintree{}}, - "prom_console.js": &bintree{staticJsProm_consoleJs, map[string]*bintree{}}, + "alerts.js": &bintree{staticJsAlertsJs, map[string]*bintree{ + }}, + "graph.js": &bintree{staticJsGraphJs, map[string]*bintree{ + }}, + "graph_template.handlebar": &bintree{staticJsGraph_templateHandlebar, map[string]*bintree{ + }}, + "prom_console.js": &bintree{staticJsProm_consoleJs, map[string]*bintree{ + }}, }}, "vendor": &bintree{nil, map[string]*bintree{ "bootstrap-3.3.1": &bintree{nil, map[string]*bintree{ "css": &bintree{nil, map[string]*bintree{ - "bootstrap-theme.css": &bintree{staticVendorBootstrap331CssBootstrapThemeCss, map[string]*bintree{}}, - "bootstrap-theme.css.map": &bintree{staticVendorBootstrap331CssBootstrapThemeCssMap, map[string]*bintree{}}, - "bootstrap-theme.min.css": &bintree{staticVendorBootstrap331CssBootstrapThemeMinCss, map[string]*bintree{}}, - "bootstrap.css": &bintree{staticVendorBootstrap331CssBootstrapCss, map[string]*bintree{}}, - "bootstrap.css.map": &bintree{staticVendorBootstrap331CssBootstrapCssMap, map[string]*bintree{}}, - "bootstrap.min.css": &bintree{staticVendorBootstrap331CssBootstrapMinCss, map[string]*bintree{}}, + "bootstrap-theme.css": &bintree{staticVendorBootstrap331CssBootstrapThemeCss, map[string]*bintree{ + }}, + "bootstrap-theme.css.map": &bintree{staticVendorBootstrap331CssBootstrapThemeCssMap, map[string]*bintree{ + }}, + "bootstrap-theme.min.css": &bintree{staticVendorBootstrap331CssBootstrapThemeMinCss, map[string]*bintree{ + }}, + "bootstrap.css": &bintree{staticVendorBootstrap331CssBootstrapCss, map[string]*bintree{ + }}, + "bootstrap.css.map": &bintree{staticVendorBootstrap331CssBootstrapCssMap, map[string]*bintree{ + }}, + "bootstrap.min.css": &bintree{staticVendorBootstrap331CssBootstrapMinCss, map[string]*bintree{ + }}, }}, "fonts": &bintree{nil, map[string]*bintree{ - "glyphicons-halflings-regular.eot": &bintree{staticVendorBootstrap331FontsGlyphiconsHalflingsRegularEot, map[string]*bintree{}}, - "glyphicons-halflings-regular.svg": &bintree{staticVendorBootstrap331FontsGlyphiconsHalflingsRegularSvg, map[string]*bintree{}}, - "glyphicons-halflings-regular.ttf": &bintree{staticVendorBootstrap331FontsGlyphiconsHalflingsRegularTtf, map[string]*bintree{}}, - "glyphicons-halflings-regular.woff": &bintree{staticVendorBootstrap331FontsGlyphiconsHalflingsRegularWoff, map[string]*bintree{}}, + "glyphicons-halflings-regular.eot": &bintree{staticVendorBootstrap331FontsGlyphiconsHalflingsRegularEot, map[string]*bintree{ + }}, + "glyphicons-halflings-regular.svg": &bintree{staticVendorBootstrap331FontsGlyphiconsHalflingsRegularSvg, map[string]*bintree{ + }}, + "glyphicons-halflings-regular.ttf": &bintree{staticVendorBootstrap331FontsGlyphiconsHalflingsRegularTtf, map[string]*bintree{ + }}, + "glyphicons-halflings-regular.woff": &bintree{staticVendorBootstrap331FontsGlyphiconsHalflingsRegularWoff, map[string]*bintree{ + }}, }}, "js": &bintree{nil, map[string]*bintree{ - "bootstrap.js": &bintree{staticVendorBootstrap331JsBootstrapJs, map[string]*bintree{}}, - "bootstrap.min.js": &bintree{staticVendorBootstrap331JsBootstrapMinJs, map[string]*bintree{}}, - "npm.js": &bintree{staticVendorBootstrap331JsNpmJs, map[string]*bintree{}}, + "bootstrap.js": &bintree{staticVendorBootstrap331JsBootstrapJs, map[string]*bintree{ + }}, + "bootstrap.min.js": &bintree{staticVendorBootstrap331JsBootstrapMinJs, map[string]*bintree{ + }}, + "npm.js": &bintree{staticVendorBootstrap331JsNpmJs, map[string]*bintree{ + }}, }}, }}, "bootstrap-datetimepicker": &bintree{nil, map[string]*bintree{ - "bootstrap-datetimepicker.js": &bintree{staticVendorBootstrapDatetimepickerBootstrapDatetimepickerJs, map[string]*bintree{}}, - "bootstrap-datetimepicker.min.css": &bintree{staticVendorBootstrapDatetimepickerBootstrapDatetimepickerMinCss, map[string]*bintree{}}, + "bootstrap-datetimepicker.js": &bintree{staticVendorBootstrapDatetimepickerBootstrapDatetimepickerJs, map[string]*bintree{ + }}, + "bootstrap-datetimepicker.min.css": &bintree{staticVendorBootstrapDatetimepickerBootstrapDatetimepickerMinCss, map[string]*bintree{ + }}, }}, "bootstrap3-typeahead": &bintree{nil, map[string]*bintree{ - "bootstrap3-typeahead.min.js": &bintree{staticVendorBootstrap3TypeaheadBootstrap3TypeaheadMinJs, map[string]*bintree{}}, + "bootstrap3-typeahead.min.js": &bintree{staticVendorBootstrap3TypeaheadBootstrap3TypeaheadMinJs, map[string]*bintree{ + }}, }}, "js": &bintree{nil, map[string]*bintree{ - "handlebars.js": &bintree{staticVendorJsHandlebarsJs, map[string]*bintree{}}, - "jquery.hotkeys.js": &bintree{staticVendorJsJqueryHotkeysJs, map[string]*bintree{}}, - "jquery.min.js": &bintree{staticVendorJsJqueryMinJs, map[string]*bintree{}}, - "jquery.selection.js": &bintree{staticVendorJsJquerySelectionJs, map[string]*bintree{}}, + "handlebars.js": &bintree{staticVendorJsHandlebarsJs, map[string]*bintree{ + }}, + "jquery.hotkeys.js": &bintree{staticVendorJsJqueryHotkeysJs, map[string]*bintree{ + }}, + "jquery.min.js": &bintree{staticVendorJsJqueryMinJs, map[string]*bintree{ + }}, + "jquery.selection.js": &bintree{staticVendorJsJquerySelectionJs, map[string]*bintree{ + }}, }}, "rickshaw": &bintree{nil, map[string]*bintree{ - "rickshaw.min.css": &bintree{staticVendorRickshawRickshawMinCss, map[string]*bintree{}}, - "rickshaw.min.js": &bintree{staticVendorRickshawRickshawMinJs, map[string]*bintree{}}, + "rickshaw.min.css": &bintree{staticVendorRickshawRickshawMinCss, map[string]*bintree{ + }}, + "rickshaw.min.js": &bintree{staticVendorRickshawRickshawMinJs, map[string]*bintree{ + }}, "vendor": &bintree{nil, map[string]*bintree{ - "d3.layout.min.js": &bintree{staticVendorRickshawVendorD3LayoutMinJs, map[string]*bintree{}}, - "d3.v3.js": &bintree{staticVendorRickshawVendorD3V3Js, map[string]*bintree{}}, + "d3.layout.min.js": &bintree{staticVendorRickshawVendorD3LayoutMinJs, map[string]*bintree{ + }}, + "d3.v3.js": &bintree{staticVendorRickshawVendorD3V3Js, map[string]*bintree{ + }}, }}, }}, }}, }}, "templates": &bintree{nil, map[string]*bintree{ - "_base.html": &bintree{templates_baseHtml, map[string]*bintree{}}, - "alerts.html": &bintree{templatesAlertsHtml, map[string]*bintree{}}, - "graph.html": &bintree{templatesGraphHtml, map[string]*bintree{}}, - "status.html": &bintree{templatesStatusHtml, map[string]*bintree{}}, + "_base.html": &bintree{templates_baseHtml, map[string]*bintree{ + }}, + "alerts.html": &bintree{templatesAlertsHtml, map[string]*bintree{ + }}, + "graph.html": &bintree{templatesGraphHtml, map[string]*bintree{ + }}, + "status.html": &bintree{templatesStatusHtml, 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, path.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 + data, err := Asset(name) + if err != nil { + return err + } + info, err := AssetInfo(name) + if err != nil { + return err + } + err = os.MkdirAll(_filePath(dir, path.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, path.Join(name, child)) - if err != nil { - return err - } - } - return nil + children, err := AssetDir(name) + // File + if err != nil { + return RestoreAsset(dir, name) + } + // Dir + for _, child := range children { + err = RestoreAssets(dir, path.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, "/")...)...) + cannonicalName := strings.Replace(name, "\\", "/", -1) + return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...) } + diff --git a/web/blob/static/js/graph.js b/web/blob/static/js/graph.js index c054c03c0..d1e66b8c4 100644 --- a/web/blob/static/js/graph.js +++ b/web/blob/static/js/graph.js @@ -73,7 +73,6 @@ Prometheus.Graph.prototype.initialize = function() { self.rangeInput = self.queryForm.find("input[name=range_input]"); self.stackedBtn = self.queryForm.find(".stacked_btn"); self.stacked = self.queryForm.find("input[name=stacked]"); - self.insertMetric = self.queryForm.find("select[name=insert_metric]"); self.refreshInterval = self.queryForm.find("select[name=refresh]"); self.consoleTab = graphWrapper.find(".console"); @@ -90,14 +89,6 @@ Prometheus.Graph.prototype.initialize = function() { } }); - // Return moves focus back to expr instead of submitting. - self.insertMetric.bind("keydown", "return", function(e) { - self.expr.focus(); - self.expr.val(self.expr.val()); - - return e.preventDefault(); - }) - self.error = graphWrapper.find(".error").hide(); self.graphArea = graphWrapper.find(".graph_area"); self.graph = self.graphArea.find(".graph"); @@ -160,19 +151,83 @@ Prometheus.Graph.prototype.initialize = function() { self.queryForm.find("button[name=inc_end]").click(function() { self.increaseEnd(); }); self.queryForm.find("button[name=dec_end]").click(function() { self.decreaseEnd(); }); - self.insertMetric.change(function() { - self.expr.selection("replace", {text: self.insertMetric.val(), mode: "before"}); - self.expr.focus(); // refocusing - }); - - self.populateInsertableMetrics(); + self.populateAutocompleteMetrics(); if (self.expr.val()) { self.submitQuery(); } }; -Prometheus.Graph.prototype.populateInsertableMetrics = function() { +// Returns true if the character at "pos" in the expression string "str" looks +// like it could be a metric name (if it's not in a string or a label matchers +// section). +function isPotentialMetric(str, pos) { + var quote = null; + var inMatchers = false; + + for (var i = 0; i < pos; i++) { + var ch = str[i]; + + // Skip over escaped characters (quotes or otherwise) in strings. + if (quote !== null && ch === "\\") { + i += 1; + continue; + } + + // Track if we are entering or leaving a string. + switch (ch) { + case quote: + quote = null; + break; + case '"': + case "'": + quote = ch; + break; + } + + // Ignore curly braces in strings. + if (quote) { + continue; + } + + // Track whether we are in curly braces (label matchers). + switch (ch) { + case "{": + inMatchers = true; + break; + case "}": + inMatchers = false; + break; + } + } + + return !inMatchers && quote === null; +} + +// Returns the current word under the cursor position in $input. +function currentWord($input) { + var wordRE = new RegExp("[a-zA-Z0-9:_]"); + var pos = $input.prop("selectionStart"); + var str = $input.val(); + var len = str.length; + var start = pos; + var end = pos; + + while (start > 0 && str[start-1].match(wordRE)) { + start--; + } + while (end < len && str[end].match(wordRE)) { + end++; + } + + return { + start: start, + end: end, + word: $input.val().substring(start, end) + }; +} + +Prometheus.Graph.prototype.populateAutocompleteMetrics = function() { var self = this; $.ajax({ method: "GET", @@ -183,12 +238,40 @@ Prometheus.Graph.prototype.populateInsertableMetrics = function() { self.showError("Error loading available metrics!") return; } - var metrics = json.data; - for (var i = 0; i < metrics.length; i++) { - self.insertMetric[0].options.add(new Option(metrics[i], metrics[i])); - } + + // For the typeahead autocompletion, we need to remember where to put + // the cursor after inserting an autocompleted word (we want to put it + // after that word, not at the end of the entire input string). + var afterUpdatePos = null; + self.expr.typeahead({ - source: metrics, + // Needs to return true for autocomplete items that should be matched + // by the current input. + matcher: function(item) { + var cw = currentWord(self.expr); + if (cw.word.length !== 0 && + item.toLowerCase().indexOf(cw.word.toLowerCase()) > -1 && + isPotentialMetric(self.expr.val(), cw.start)) { + return true; + } + return false; + }, + // Returns the entire string to which the input field should be set + // upon selecting an item from the autocomplete list. + updater: function(item) { + var str = self.expr.val(); + var cw = currentWord(self.expr); + afterUpdatePos = cw.start + item.length; + return str.substring(0, cw.start) + item + str.substring(cw.end, str.length); + }, + // Is called *after* the input field has been set to the string + // returned by the "updater" callback. We want to move the cursor to + // the end of the actually inserted word here. + afterSelect: function(item) { + self.expr.prop("selectionStart", afterUpdatePos); + self.expr.prop("selectionEnd", afterUpdatePos); + }, + source: json.data, items: "all" }); // This needs to happen after attaching the typeahead plugin, as it diff --git a/web/blob/static/js/graph_template.handlebar b/web/blob/static/js/graph_template.handlebar index 7dfbd8d03..da71dca4c 100644 --- a/web/blob/static/js/graph_template.handlebar +++ b/web/blob/static/js/graph_template.handlebar @@ -12,9 +12,6 @@