2019-05-27 01:03:40 +08:00
|
|
|
|
// Code generated by vfsgen; DO NOT EDIT.
|
|
|
|
|
|
|
|
|
|
// +build !dev
|
|
|
|
|
|
|
|
|
|
package data
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"bytes"
|
|
|
|
|
"compress/gzip"
|
|
|
|
|
"fmt"
|
|
|
|
|
"io"
|
|
|
|
|
"net/http"
|
|
|
|
|
"os"
|
|
|
|
|
pathpkg "path"
|
|
|
|
|
"time"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// Assets statically implements the virtual filesystem provided to vfsgen.
|
|
|
|
|
var Assets = func() http.FileSystem {
|
|
|
|
|
fs := vfsgen۰FS{
|
|
|
|
|
"/": &vfsgen۰DirInfo{
|
|
|
|
|
name: "/",
|
2022-10-01 14:36:26 +08:00
|
|
|
|
modTime: time.Date(2022, 10, 1, 4, 23, 36, 728914000, time.UTC),
|
2019-05-27 01:03:40 +08:00
|
|
|
|
},
|
|
|
|
|
"/ConnectionManager.xml": &vfsgen۰CompressedFileInfo{
|
|
|
|
|
name: "ConnectionManager.xml",
|
2022-10-01 14:36:26 +08:00
|
|
|
|
modTime: time.Date(2022, 10, 1, 4, 23, 36, 726914600, time.UTC),
|
|
|
|
|
uncompressedSize: 5686,
|
2019-05-27 01:03:40 +08:00
|
|
|
|
|
2022-10-01 14:36:26 +08:00
|
|
|
|
compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x02\xff\xdc\x57\x5f\x6f\xda\x30\x10\x7f\x4e\xa5\x7e\x07\x94\x77\x96\x56\xda\xc3\x54\x99\x54\x1d\xfd\x23\xb4\x55\x45\x2d\x45\xda\x53\xe5\x39\x57\xea\x35\x39\x47\xf6\xa5\xb4\xdf\x7e\x82\x10\x48\x20\x8c\x90\x39\xc0\xf6\x66\x5f\xee\xee\xf7\xcb\x9d\x7d\x77\x66\xe7\xef\x51\xd8\x7a\x03\x6d\xa4\xc2\x8e\x7b\xfa\xe9\xc4\x6d\x01\x0a\x15\x48\x1c\x75\xdc\xc7\xc1\x75\xfb\x8b\x7b\xee\x1f\x1f\x31\x23\xe2\xa0\xf5\x1e\x85\x68\x3a\x6e\xa2\xf1\xcc\x88\x17\x88\xb8\x69\x27\x31\xc6\x6d\xa5\x47\x67\x06\xf4\x9b\x14\xd0\x3e\x6d\x9f\xb8\xfe\xf1\x91\xc3\x4c\x0c\x62\x98\x3a\x9e\xec\x1d\x16\xf1\x5f\x4a\xfb\xa7\xcc\x4b\x17\xa9\x4c\xa2\xd2\xfe\x09\xf3\xd2\xc5\xc4\xce\x5b\x32\x64\x5c\x90\x54\xf8\x5d\x1a\x4a\x6d\xd2\xfd\x74\xed\x30\xe4\x11\xf8\x37\x40\x7d\xad\x48\x09\x15\xf6\xf0\x59\x31\x6f\x2a\x4d\x15\xb8\x1e\x25\x11\x20\xcd\xed\x73\xb2\xd9\x7e\xe6\xe5\x41\x25\x5a\x40\xde\xd8\x71\x58\x20\x35\xa4\x78\x2a\x21\xe6\x2d\xb6\x99\x82\x86\x90\x13\x04\x0f\xc4\x09\x86\x5c\x4b\xfe\x33\xcc\x5c\x15\x39\x95\x2a\xce\x08\x79\x4b\x8c\xd6\x31\x94\xf8\x6a\x87\x9f\xc4\xd7\xda\xec\x16\xfb\x45\x4e\xbc\x5c\x52\x4a\x12\xd4\xd7\x10\x73\x0d\xd7\x4a\x77\x15\x62\xca\xb0\x66\x96\xee\x21\x52\x04\xeb\xd2\x5d\x88\x88\xc4\xca\x01\xb9\x78\xba\xb8\xbf\x79\x1a\xfc\xe8\x5f\x3d\x59\xcf\x5a\x1f\x20\xf7\xdb\xb7\x1c\xf9\x08\xb4\x65\xd2\x25\xfe\xad\x33\xef\x5d\x36\x46\x7a\xe2\xda\x02\xdf\xcb\x8c\x82\x65\xa2\x39\xbf\x16\x58\x56\x8a\xe8\x36\xb7\xb9\xc9\x90\x5e\x0c\x07\x9a\xa3\x89\x95\x26\xfb\x6c\x97\x9c\x5b\xa0\x7b\x2f\x8c\x7d\x9a\x33\xa7\xcd\x96\xc8\x45\xe6\xba\x2a\x8a\x43\x20\xa8\x59\x20\x0f\xf1\xc2\xd6\x88\xc7\x0d\x50\x37\xd1\x1a\x90\xf2\xa8\xc6\x42\x50\x8c\x95\xf3\x51\x4e\x6e\x0f\x31\xa9\x3f\xf0\xfc\x4b\xa5\xfd\x40\x2e\xf6\x7f\x52\x26\x2b\x8d\x4f\x35\xd9\xee\x79\x7e\xfa\xeb\xc6\xb9\x97\x01\xea\x50\xda\xfd\xe6\x09\xaa\x26\x53\xbb\x23\xd4\xc4\x36\x31\xcd\x45\x33\xf3\x6f\xaf\x9c\x67\xeb\xec\x23\x9b\xbd\x97\xa7\xae\x07\x73\xbf\xcc\xe4\xa1\x5a\x06\x30\xb8\x7a\x03\x24\xd3\x71\x3f\xc0\xb8\xf9\x66\x50\xf6\xc6\xcc\xb5\x81\x80\x13\x1f\x7c\xc4\xe0\x1b\xd2\x12\x47\xcc\x9b\x0b\x52\x6a\x66\xe5\x9f\xb6\xc1\x5e\x79\x3f\xee\x0a\x79\xe3\x4c\x60\x15\x1d\x55\x01\xfc\x8f\x67\xa5\x32\x07\x87\xf1\x30\x54\x63\x08\x86\x3c\x4c\xa0\xd0\xa6\x73\x72\xff\xee\x1b\xf3\x0a\x82\x32\xa5\xae\x42\x02\xa4\x6b\xa5\x23\x4e\xb7\xd2\x44\x9c\xc4\x4b\x05\xbb\x1e\x9a\xe4\xf9\x59\x0a\x09\x48\x5f\x39\x06\x63\x19\x50\x15\xbb\x47\xd4\x10\x4e\xe3\xd4\x7d\xe1\x88\x10\x56\xb2\x79\x45\x35\xc6\x32\xcd\xa2\x2c\x77\x71\xac\x67\xa9\xa4\x6d\xec\xea\xa8\x94\xd6\x54\x3b\x67\xa4\x87\xf1\xa4\xd4\x6d\x4c\xc1\x5d\x42\x6b\x14\x9b\xce\xc0\x6e\xaa\x44\x95\x13\x50\xec\xbe\x0b\x7c\xf9\xb9\x29\xec\xb5\x43\xe1\x2e\xc0\x57\x06\xe6\xed\x40\x99\x57\xd6\xa0\x98\x67\x44\x1c\xf8\xbf\x03\x00\x00\xff\xff\xb5\x30\x72\xd3\x36\x16\x00\x00"),
|
2019-05-27 01:03:40 +08:00
|
|
|
|
},
|
|
|
|
|
"/ContentDirectory.xml": &vfsgen۰CompressedFileInfo{
|
|
|
|
|
name: "ContentDirectory.xml",
|
2022-10-01 14:36:26 +08:00
|
|
|
|
modTime: time.Date(2022, 10, 1, 4, 23, 36, 726914600, time.UTC),
|
|
|
|
|
uncompressedSize: 15030,
|
2019-05-27 01:03:40 +08:00
|
|
|
|
|
2022-10-01 14:36:26 +08:00
|
|
|
|
compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x02\xff\xec\x5a\x51\x6f\xa3\x38\x10\x7e\xce\x4a\xfb\x1f\xaa\xbc\xf7\x68\xa5\x7b\x5a\xb9\x59\xed\xa6\x69\x15\xa9\x6d\x22\x92\xad\xf6\x9e\x22\x17\xa6\xc4\xbb\x60\x73\xf6\xd0\x26\xff\xfe\x44\x80\x04\x9a\xd0\xa6\x74\x60\x69\x2f\x6f\x81\xe0\x6f\x3e\x7f\x8c\x67\xf0\x78\xd8\xd7\x45\xe0\x1f\x3d\x80\x36\x42\xc9\xb3\xee\xe9\x5f\x27\xdd\xaf\xbd\xcf\x9f\x98\x71\x42\xf7\x68\x11\xf8\xd2\x9c\x75\x23\x2d\xbf\x18\x67\x0e\x01\x37\xc7\x51\x28\xc3\x63\xa5\xbd\x2f\x06\xf4\x83\x70\xe0\xf8\xf4\xf8\xa4\xdb\xfb\xfc\xa9\xc3\x4c\x08\xce\x6d\x82\x13\x5f\x77\x58\xc0\x7f\x29\xdd\x3b\x65\x56\xf2\x23\xb9\x27\xa4\xd2\xbd\x13\x66\x25\x3f\xe2\x71\xd6\x93\x81\x8c\x3b\x28\x94\xbc\x12\x06\x93\x31\xc9\xf5\xea\x77\x87\x49\x1e\x40\xef\x12\x70\x02\x5c\x3b\xf3\x3e\x0f\xf9\x9d\xf0\x05\x0a\x30\xcc\x5a\xfd\x97\x3c\xc6\xb5\x17\x05\x20\x71\x8d\x92\xbb\x97\x5e\xa7\x58\x6b\xa0\x02\x40\xa7\xc3\x5c\xa1\x21\xb1\xac\x22\x64\xd6\xe6\x32\x7b\x40\x83\xcf\x11\xdc\x09\x72\x84\x5b\xae\x05\xbf\xf3\x73\x70\x39\x5e\x3b\x1f\x4c\x49\x59\x45\x56\x9b\xeb\xcd\xfc\xad\x9c\x00\x25\x62\x28\x8d\x14\x52\x24\x30\x44\x42\x6c\x71\x6a\x44\x86\xc1\x02\x41\xc6\xae\x44\xa4\x47\x1e\x8f\x4e\x98\x12\x96\xb5\x2b\x74\x01\x1c\x23\x0d\xf1\x90\x8a\x9a\x94\x20\x54\x56\xa3\x80\x57\xbf\x87\x2c\x0d\x42\xf0\x23\x74\x39\xc2\xf0\xbc\xa2\x04\x43\x97\xc6\x0f\x9e\x70\xa9\x77\xf2\xdf\xb5\x7a\x34\x50\x71\xc6\xa3\xbb\x5f\xe0\x60\x51\xb0\xc2\xbc\x85\xdc\x7b\xda\xdf\x66\xdf\xec\xcb\xd9\xf4\x9f\xf1\x60\xb6\x81\x7d\xc5\xdc\xcb\x38\x26\x13\xbc\xf0\xb9\x47\xcc\x32\x0f\x4c\xc0\xf3\x42\xf8\x08\x9a\x98\x63\x06\x4a\xc0\x6f\x82\x5c\xa3\x90\xde\x50\xba\xb0\x20\xa6\x99\x62\x12\xb0\xb4\xe1\xdf\x08\x0c\x82\xdb\x57\x91\x44\x62\x9a\x29\x26\x85\x98\x71\x12\xd4\x02\x41\x0b\x4e\x4c\xb2\x08\x4d\x22\xa9\x89\x7c\x9a\xa0\x9e\xa3\x99\xa1\x12\x10\xbc\x89\x82\x3b\xd0\x36\x60\xa4\x25\xb8\xd4\x44\xe9\x5e\xfa\x54\x21\xf7\xaf\x39\x3a\x73\x30\xed\x65\xb9\x2b\x09\x52\x30\x6c\x2a\xa1\x25\x1f\xda\x15\x13\x5a\x5f\x49\xe4\x42\x82\x6e\x77\x4e\x4b\x37\x13\x35\x05\x90\x27\xe0\x87\xdc\x76\xc8\x6d\x87\xdc\x76\xc8\x6d\x87\xdc\xf6\xc7\x73\x5b\x5f\x03\x47\x48\x52\xc9\xc7\xce\x70\x03\x1f\xe2\x9b\x86\x98\x23\xe1\xca\x7c\x71\xef\x5b\xd1\x97\x48\x65\x6c\x4d\x7c\xab\xe0\xec\xe7\x60\x50\xab\xe5\x9b\xbc\xbd\x4d\x05\x8a\x0a\x12\x24\x71\xe5\xc3\x28\x50\x1a\x93\x22\xad\x41\xe2\x94\x7b\xb7\xdc\x8f\x80\x98\x6a\x06\xfb\xea\x52\x62\x69\x4e\x86\xc7\xb6\x51\xad\xe0\x5b\xd7\xea\xe1\xe3\x7b\xd6\x0d\x3c\x8e\x79\xec\x5b\xad\xa7\xd9\xaa\x74\x52\xc1\x9d\x86\x41\xa8\x34\xda\x60\x54\xa4\x1d\xa8\x7c\xb0\x12\x0f\xfe\x61\x0f\x89\x5f\xd6\x0a\x91\xe0\x3d\xc5\x29\x49\x48\x1e\xdb\x6e\x2f\xc9\xa9\xe6\xd2\xdc\x3f\xfb\x81\x57\xd1\x97\xf2\xc8\xf5\x7a\xd3\x60\x71\xf0\xa6\x83\x37\x91\x95\x04\x51\x85\x99\xb5\x37\xfa\xd4\x1e\x72\x54\x4c\xfd\x8d\xa9\x71\x0e\x3e\x20\xbc\x51\x87\x6c\xf8\x9f\x77\xdc\x6a\x07\xbe\x99\xdc\x63\xad\x3c\x0d\xc6\x7c\x10\x77\x78\x89\x67\x8c\x11\x99\xba\x56\x72\x86\x4e\x48\xf8\x0a\xa4\x87\xf3\xba\x08\x67\xe8\x84\x84\x57\x85\xb0\xba\xf8\xa6\xe0\x4d\x14\x99\x6c\xb8\x07\x0d\xb2\x72\x80\x78\x27\x75\xa6\x77\xb2\x89\x79\xbf\xfb\x82\x9f\xb3\x56\xb6\x17\xe5\xcf\x91\x12\x68\xbf\x81\x3d\xf7\xcf\xd9\x04\xf0\xbb\x52\xbf\x03\xae\x7f\x57\x5d\x58\x1c\xc1\x53\x7a\x39\x5d\x86\xd4\xe5\x87\x22\x34\x45\xf9\x91\x7c\x61\xd9\xff\xa3\x75\x3f\x56\x66\x02\x8e\x92\x2e\x31\xc9\x04\x97\xd2\xd7\xb3\xdf\xd9\x9f\x2c\x6d\x02\x5e\x41\x4f\xd7\xb8\xcc\xe4\x4d\x1d\x19\x90\xee\xe0\x01\x24\x9a\xb3\xae\x54\xdd\xed\x43\xfc\xd2\x56\x4d\x97\x23\x8f\x9d\xb4\x67\x50\x0b\xe9\x31\x6b\x7d\x23\x61\x66\xb6\xa6\xf4\x0a\xd3\xcf\xf5\xcc\xd6\x6d\xf8\xe5\x2e\x55\x52\x06\x4b\x30\x45\x0a\xe5\x6d\x90\x6b\x33\x91\xf8\x9b\xd6\xe8\xfa\x4b\x21\xb3\xdb\xe0\x84\x37\x9f\xd9\xcd\xbd\xe7\xb2\x64\x58\xa7\xcd\x9d\x21\xaa\x79\xdb\xdb\xc7\x51\x4d\x59\x2e\xef\x98\x69\x8a\xc1\xee\x3e\xd4\x17\xac\x77\x18\xf7\x7d\xf5\x08\xee\xfa\x58\x60\x9d\x32\x72\xf7\xd3\x1e\xd7\x6b\x40\x1e\x8f\x66\x56\xe1\xcf\xf2\x01\xe7\xab\xd4\xd1\x9f\x0b\xdf\xd5\x20\x77\x0d\x2b\xde\xcb\xc5\x7e\x22\x51\xb6\x1b\x83\x1a\x73\x88\x92\x2e\x95\xa6\xec\x6f\xb5\x1a\x11\x46\xd8\x72\xab\x5b\x9d\x43\x8d\x58\xad\x39\xa1\x94\x1b\xde\
|
2019-05-27 01:03:40 +08:00
|
|
|
|
},
|
2019-05-27 02:17:19 +08:00
|
|
|
|
"/X_MS_MediaReceiverRegistrar.xml": &vfsgen۰CompressedFileInfo{
|
|
|
|
|
name: "X_MS_MediaReceiverRegistrar.xml",
|
2022-10-01 14:36:26 +08:00
|
|
|
|
modTime: time.Date(2022, 10, 1, 4, 23, 36, 727914200, time.UTC),
|
|
|
|
|
uncompressedSize: 2572,
|
2019-05-27 02:17:19 +08:00
|
|
|
|
|
2022-10-01 14:36:26 +08:00
|
|
|
|
compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x02\xff\xec\x96\xd1\x6b\xdb\x30\x10\xc6\x9f\x5d\xe8\xff\x10\xfc\x9e\x2a\x81\xb1\x87\xa2\xb8\x04\x52\x4a\x60\x83\xe1\x66\x81\x3d\x05\xc5\x3a\xdc\xdb\xec\x93\xa7\x93\x43\xbb\xbf\x7e\x38\x72\x62\xaf\x71\x0a\x0b\x4e\xf3\xd2\x37\x9d\xd4\xfb\xbe\x5f\xf5\x45\x97\xc8\xbb\xe7\x3c\x1b\x6c\xc0\x32\x1a\x9a\x84\xe3\x9b\x51\x38\xb8\x8b\xae\xaf\x24\x27\x85\x1e\x3c\xe7\x19\xf1\x24\x2c\x2d\xdd\x72\xf2\x04\xb9\xe2\x61\x59\x50\x31\x34\x36\xbd\x65\xb0\x1b\x4c\x60\x38\x1e\x8e\xc2\xe8\xfa\x2a\x90\x5c\x40\xb2\xf4\x42\x55\x1d\xc8\x5c\xfd\x34\x36\x1a\x4b\xe1\x17\x7e\x0f\xc9\xd8\x68\x24\x85\x5f\x54\x7d\xe2\x55\xa3\x54\x89\x43\x43\x5f\x90\x9d\xef\xf1\xf5\x76\x1d\x48\x52\x39\x44\x73\x9e\x96\xee\xc9\x58\xfc\x03\x5a\x8a\xed\x96\x3f\x55\x36\x2d\x73\x20\xb7\x6f\x6e\xed\xd5\x75\x2d\x31\x83\x8a\x7e\x3e\x6b\xb7\x07\x81\xd4\x68\xc1\xdb\x21\x49\xd1\x54\xbb\x73\x0b\x99\x72\xa0\x1f\x9d\x72\xb0\x54\x16\xd5\x3a\x83\x68\xba\x9a\xc6\x0f\xab\xc5\x8f\x6f\xf7\xab\x46\xb6\xf3\x2f\x6b\x24\xf1\x8a\xe9\x08\x63\x0c\x5c\x66\xee\x28\xa1\x29\xdd\x29\x88\x3b\xd5\xff\x00\x6c\xea\x26\x15\xd1\x8a\xa5\x23\xa2\x18\x52\x64\x07\xd6\x5f\xc8\x89\x21\x79\x11\xab\x2a\xf1\x18\x7e\x7f\xe5\xb4\xe7\xb8\xba\x0c\x7a\x09\xae\x2d\xcb\xc5\x5b\xe0\x27\xa7\xd8\x61\x71\xde\x48\xe7\xbc\x54\x19\xea\xca\xe1\xe3\xd1\x5d\xfc\xd1\xed\xd6\xbb\x43\x59\x0f\xe4\xad\xf4\x62\xaf\x2b\xb9\x6d\x35\x60\x20\x7d\xbf\x01\x72\x3c\x09\xc9\x84\xed\x78\x3b\x2f\xb4\x15\xb3\x56\x4e\x2d\x5e\x0a\x88\xd8\x59\xa4\x54\x8a\xfd\x86\x47\xe3\x83\xff\xe9\x24\xef\xc3\xfb\x6f\x9c\x91\xdc\xf9\x6c\xdf\x1a\x35\x0d\xc2\x1a\xe9\x66\xad\x18\x3e\x7f\x7a\x1f\x92\x83\xe1\xd1\x3f\xca\x0b\xf0\xbf\x2c\xf5\x77\xeb\x96\xe0\xc1\x2a\x72\xa0\xbf\x17\xd5\xbb\x3f\xf6\x89\x28\xf1\x9c\x08\x33\x20\x7c\x77\x82\x7a\xd4\xa1\xa1\xc7\x32\x49\x00\xf4\x05\x09\x62\xd8\x98\x5f\xbd\xf8\x4b\xd1\x35\x25\xa4\xa8\x7e\xed\x45\x7f\x03\x00\x00\xff\xff\x63\x7d\x2d\x0d\x0c\x0a\x00\x00"),
|
2019-05-27 02:17:19 +08:00
|
|
|
|
},
|
|
|
|
|
"/rclone-120x120.png": &vfsgen۰FileInfo{
|
|
|
|
|
name: "rclone-120x120.png",
|
2022-10-01 14:36:26 +08:00
|
|
|
|
modTime: time.Date(2022, 10, 1, 4, 23, 36, 727914200, time.UTC),
|
|
|
|
|
content: []byte("\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\x00\x00\x78\x00\x00\x00\x78\x08\x03\x00\x00\x00\x0e\xba\xc6\xe0\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x06\xeb\x00\x00\x06\xeb\x01\x4c\x31\x9e\x4a\x00\x00\x00\x4e\x50\x4c\x54\x45\x47\x70\x4c\x70\xca\xf3\x3f\x79\xad\xb4\xe3\xf9\x40\x79\xae\x3f\x79\xad\x96\xd8\xf6\x77\xb6\xde\x75\xb6\xde\x8a\xd3\xf5\x70\xca\xf2\x3f\x79\xad\x70\xca\xf3\x70\xca\xf2\x70\xca\xf2\xb4\xe4\xfa\xb4\xe3\xf9\xb4\xe3\xf9\x3f\x79\xad\x3f\x79\xad\x9b\xda\xf7\xb4\xe3\xfa\x5d\xab\xd7\x3f\x79\xad\x70\xca\xf2\xb4\xe3\xf9\xb7\xab\x8d\x85\x00\x00\x00\x17\x74\x52\x4e\x53\x00\xef\xe8\xd0\x32\x7d\x51\x17\x09\x29\xb8\xc7\x96\x73\xd4\x6d\x8f\xea\xa6\x5d\x3c\xaf\x9c\x1b\x2f\x88\x80\x00\x00\x04\xc7\x49\x44\x41\x54\x68\xde\xed\x5b\xc9\x96\xa3\x30\x0c\x6c\xcc\xe2\x8d\xcd\x2c\x0f\xf3\xff\x3f\x3a\x40\xba\x5f\x02\xb1\x6c\xc9\xb8\x33\x73\x98\x3a\x93\x54\x24\x97\xe4\x92\x92\x7c\x7d\xfd\xc7\xbf\x0c\x5e\x75\xfd\x9c\xe7\xb9\xc9\xf3\xb9\xef\x26\xfe\x11\x52\x51\xf5\xf9\x7a\x81\xe9\x2b\xf1\xcb\xb4\xd5\x6c\x56\x37\xe6\xe9\x17\x83\xed\xf2\xd5\x03\xd3\xfd\x52\xd8\x9d\x59\x03\x30\xdd\x2f\xd0\x4e\xf9\x8a\x40\x9e\x3a\xe1\xa2\x5f\x91\xe8\xc5\xe7\xc3\xfd\x0e\x5a\x26\xd4\xf2\x4a\x42\x95\x4c\x55\x2b\x11\x89\x34\xd6\xaf\x64\xf4\x7f\x89\x37\x09\x73\xb7\x46\xa1\xfb\xb0\xae\x92\x29\x4c\x9a\x58\x62\x73\xab\xaa\x44\xbe\x46\x23\x17\x9f\x16\x56\x02\x81\xc9\xf5\x16\xe2\x93\x9d\xdf\x23\x9e\x3f\xae\xe8\x9b\xca\x0e\x29\xcb\x98\x3c\xa0\xf9\x3c\x7d\xc0\xa6\x7f\x58\x3c\x31\x79\x5d\x49\x95\xf8\x84\xcf\xfe\x6a\x9a\xd3\x9e\x32\x28\x69\xf3\x16\x47\x65\x52\x0a\x1b\xaa\xe1\xd9\x61\xa3\x79\x9e\xb0\x96\x81\x28\x66\x67\x43\x12\x73\x32\x79\x4d\xb4\x46\x08\x95\x80\x4c\x74\x1d\x1a\x70\x5c\xe1\x26\xd1\xf5\x38\x53\xdf\xa7\x4b\xa4\x6b\x43\x3e\x32\x67\xb2\x4d\x9a\x62\xaa\xe8\x0d\x87\xa7\x68\x5b\xc6\x7b\xc5\x0a\x67\x92\xa6\x14\xda\x9a\x23\x64\xd1\xa5\x68\x1f\x5d\xc4\x87\x4d\x42\x3c\x45\x94\x7e\x9f\xa2\x9a\x78\x84\x20\x3f\x41\x2c\x52\x14\xf2\x41\x6c\xe6\xbe\xab\x26\x29\xf9\x37\x42\x3b\x99\x14\xc4\xfd\x3a\x77\x32\x45\xed\x53\x53\x2d\x45\xa2\x7b\x25\xd6\xe4\xf2\x62\x1c\xcb\x0b\x46\x68\x37\x93\x68\x88\x12\x63\xa9\xd9\xe2\x02\x27\x34\xeb\x8e\xcc\xaa\x17\x10\x03\x5e\x5b\xc4\x0b\xb9\x18\x16\x2f\x0a\xbc\x57\x12\x09\x69\x97\x45\xa3\x9d\xc0\x7e\x91\x36\xb8\xa8\x79\x90\x76\xc3\x88\x0d\x78\x17\x75\x6b\x15\xe2\x72\x2c\x19\x82\x77\x61\x02\xe9\x86\xb7\x1b\x9c\x5b\x6b\xb3\x26\x14\xae\x5e\x70\x28\x71\x56\x69\xef\xb2\x95\xdd\xe1\x0f\xba\x60\x0b\x16\x05\x6a\xde\xd9\x8f\x58\x1d\xc4\x36\xf3\xdc\x6d\xe3\x82\xc7\x80\x72\xb7\x5b\xa6\x45\x66\xbf\x01\xa6\xbb\x5c\x28\x28\x10\xbb\xa1\xdd\x2b\x55\xd6\x06\x98\x69\xbc\xa7\xf6\x05\x98\xea\x43\xd3\xca\x06\x98\x47\x1a\x6f\x89\x99\xb3\xb6\x02\x96\xd6\xfa\x99\x89\xbc\xa7\x7a\x9a\x3c\x23\x5b\x7d\x22\xb6\xd5\x0d\x3d\xbf\x77\x90\x19\x0e\x98\x67\x67\xe2\xec\xd2\xc5\x84\xa6\xf1\x6a\xcc\xea\xc0\x11\xb0\xb5\xed\xb9\xf5\x0c\x34\xde\x93\xa4\x05\xa0\xac\x7d\xc0\xbb\x06\xbc\xa1\x3e\x25\x9a\xc8\x3b\x60\xd6\xac\x9d\x2b\xe0\x0d\x53\x7c\xa2\x19\x47\x0c\xa8\x7b\xd3\x92\x0e\xde\xd7\x64\x13\x2b\xf8\xda\xa8\x3b\x70\xc0\x53\x2e\xe2\x67\x4d\x09\x76\xa3\x94\xa0\x7e\xb9\xdb\xda\xca\xc9\x6b\x33\x81\x09\x58\x97\x63\x71\x01\xc7\x8c\x96\x5b\xd9\x88\xd6\x4d\xfc\x13\xb2\x27\x60\x56\xee\x24\x61\xf7\x32\x3b\x4b\xa9\x01\x78\x6d\x16\xea\x59\xa5\x88\xb5\xf2\xc7\x24\x0d\x12\x7f\xf7\x2f\xa8\x86\x59\x11\x3f\x5c\x3e\x4c\xad\x84\x72\xad\x8e\x6a\x80\x0e\x97\xb2\x44\xb8\x94\xd4\xcf\xae\x84\x2b\x80\x99\xc3\x99\xd6\xb4\x19\xa6\x73\x0f\xd2\x90\xbe\x2a\x30\xd3\x94\x3c\xbf\x8d\x11\x2f\x13\xa2\xa3\x67\xfe\xe4\x9a\x61\xfd\x6b\xe4\xf2\x19\xd2\x75\x41\x18\x52\xa2\xe0\x3e\x66\x09\x1c\x71\x91\x8e\x58\x02\x87\x5c\x62\x47\x94\x68\xb4\xee\xe6\x35\x50\x4f\x58\xd4\x2f\xc0\x4c\x45\x8d\x5b\x5d\x9a\x9a\xe9\xfa\xad\x13\xc4\xe4\xba\x75\x8a\x9a\xe1\xdf\x06\xf3\x75\x47\x86\x26\xd6\x78\x91\xb6\x22\xee\x90\xb3\x2f\xa2\xb6\x26\xf0\x56\x27\x16\x14\x95\xf8\xed\xd3\x67\x3c\x8a\x38\x23\xa6\xda\xa1\xd0\x3a\x32\xd5\x24\x71\x39\x3b\xaf\x8c\x1
|
2019-05-27 02:17:19 +08:00
|
|
|
|
},
|
|
|
|
|
"/rclone-48x48.png": &vfsgen۰FileInfo{
|
|
|
|
|
name: "rclone-48x48.png",
|
2022-10-01 14:36:26 +08:00
|
|
|
|
modTime: time.Date(2022, 10, 1, 4, 23, 36, 727914200, time.UTC),
|
|
|
|
|
content: []byte("\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\x00\x00\x30\x00\x00\x00\x30\x08\x03\x00\x00\x00\x60\xdc\x09\xb5\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x02\xc4\x00\x00\x02\xc4\x01\x5b\x91\x9d\x0b\x00\x00\x00\x5d\x50\x4c\x54\x45\x47\x70\x4c\x3f\x7a\xad\xb4\xe3\xf9\x89\xd3\xf5\x3f\x79\xad\x9e\xdb\xf7\xb4\xe4\xfa\x84\xc5\xea\x70\xca\xf2\xb4\xe4\xf9\x70\xcb\xf3\x3f\x79\xad\x3f\x79\xad\x70\xcb\xf2\x70\xca\xf3\x3f\x79\xad\x70\xca\xf2\xb5\xe4\xf9\x3f\x79\xad\x70\xca\xf3\x3f\x79\xae\x3f\x79\xad\x3e\x79\xad\x70\xca\xf3\xb4\xe3\xfa\xb4\xe3\xfa\xb4\xe3\xf9\xb4\xe3\xfa\xb4\xe3\xf9\x3f\x79\xad\x70\xca\xf2\x48\xd5\xe6\x94\x00\x00\x00\x1c\x74\x52\x4e\x53\x00\x36\xed\x38\x94\x27\x68\x12\xda\xa4\x53\xee\xac\xa3\x80\x65\xef\x42\x7a\x6a\x4e\xda\xc7\xbc\x95\x8b\xd2\xb7\x4c\xbf\xbe\x53\x00\x00\x01\xd0\x49\x44\x41\x54\x48\xc7\xad\x56\xd9\x96\xab\x20\x10\x74\x41\x11\x15\xf7\xb8\x24\xca\xff\x7f\xe6\xa8\x08\xcd\xd2\xc6\x99\x73\x6f\x3d\x25\x48\xd9\x55\xd5\x8d\x1a\x04\xff\x01\xb4\x4d\xd9\x87\xb1\xa5\xa5\xbf\xda\x1e\xb3\x68\x55\x60\xf1\xf3\xdd\xd9\x6a\x81\x3d\x54\x69\xa3\xd5\x41\xd4\xfe\x6d\xff\x8e\x2f\x8c\x76\xc5\x10\xdd\x1a\xa1\xd1\x8a\x33\xee\x7c\xb0\xf5\x06\x33\xbe\x3f\x31\xb6\x7c\x96\xf9\x63\xfc\x4d\x1e\x0a\xcc\xd4\x49\x78\x41\x09\xda\x41\xaa\x56\x52\xed\xe2\x6b\x44\x0c\x29\x8a\x45\x9b\x22\x82\x13\xaf\xa8\x81\xf9\xba\xf6\x36\x17\xdf\x5f\x72\x62\xbe\x22\x58\xc4\x08\x0b\x4b\xe3\x84\xde\xdc\x05\xef\x44\x58\x13\x89\xce\x93\x84\xe4\x1a\x92\x62\xd3\x08\x1f\x4d\x87\xe5\x66\x62\xbc\x96\x75\xb7\x93\x9e\x5b\xdd\x1e\x8a\xcd\x46\x6d\xb7\x26\x0a\xb8\x68\x72\xd8\xdf\x6d\x2e\x5e\x96\x83\x75\xa1\x8d\x10\xa2\x52\xfb\x6b\x6f\xbf\xac\x90\xc2\xf0\xf5\xe2\x40\x7f\xe9\xdf\xf0\x02\x70\x3c\xe6\x20\x3b\x09\x42\x1e\xa5\x97\x4f\x18\x6c\x07\x54\x16\x10\x22\x73\x05\x8d\xe5\x09\x62\x67\x94\x9e\x0e\xb4\x28\x28\x40\x28\x7a\xa2\xde\x41\xae\xf6\x1f\x25\xb4\x83\x62\xf0\xa7\x45\x8d\x36\x30\x62\x88\xb4\x46\x9e\x0a\xe9\x81\xe3\x97\x32\xb1\x47\x3b\x5a\xc9\xdf\xe2\x8a\x49\x4c\x81\xea\x71\x67\x68\xcf\x0e\xd8\x86\x2a\x6d\xc2\x4a\x52\x62\x3a\x2f\x71\x8b\xa0\x5c\x34\x08\x21\x17\x66\x97\x3c\x82\x2f\x09\xe4\xa2\x92\x46\x67\xa2\x83\x58\x47\x98\xa3\xa6\x89\xa7\x89\xeb\x2e\x51\x4f\xd1\x1e\x2b\x34\x4e\x1d\x33\x18\x84\x49\x31\x92\x06\x1a\xa7\x4d\x6c\x85\x6c\x5d\xa8\xf5\xee\x35\xa4\xf1\xbe\x31\x46\xc3\x3c\x3d\x45\x49\xca\xd7\xd6\xd1\x4c\x00\x85\x57\xbc\x81\xbf\x15\x3a\xde\x14\x46\xc7\x81\x74\x35\xb8\x84\x12\x7c\x3b\xc8\x6f\x8e\x74\x6d\x8a\x12\x8e\xa0\x03\xc4\x21\x14\x21\xca\x30\x86\xa5\xf6\x19\xd3\xfd\xfd\xcf\x2c\x47\x9b\x50\x9b\x59\x9a\x09\x1b\xcf\x32\xa0\x14\x9d\x7c\x65\x55\xa0\x6b\xca\xb1\xb7\x6e\x4d\xca\xb1\x24\x5d\x68\x7c\x77\xf4\x7c\xe2\xbc\xca\xe9\x3f\x7c\xea\xfc\x00\xd9\x83\x7c\xed\x8a\x77\x2b\x47\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82"),
|
2019-05-27 02:17:19 +08:00
|
|
|
|
},
|
2019-09-16 00:44:28 +08:00
|
|
|
|
"/rootDesc.xml.tmpl": &vfsgen۰CompressedFileInfo{
|
|
|
|
|
name: "rootDesc.xml.tmpl",
|
2022-10-01 14:36:26 +08:00
|
|
|
|
modTime: time.Date(2022, 10, 1, 4, 23, 36, 728914000, time.UTC),
|
|
|
|
|
uncompressedSize: 2586,
|
2019-09-16 00:44:28 +08:00
|
|
|
|
|
2022-10-01 14:36:26 +08:00
|
|
|
|
compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x02\xff\xcc\x56\xd1\x6a\xe3\x3a\x10\x7d\x2f\xf4\x1f\x42\x9e\xee\x85\xc6\xb2\x4b\x2f\x04\xa3\xaa\x94\x98\x0b\x81\xa6\x5b\x92\xcd\xd2\xb7\xa0\xca\x13\x47\xbb\xb6\x64\x24\x39\x49\x29\xfd\xf7\x45\xb2\x9d\xca\x69\x9a\x16\x02\xcb\xfa\x25\x9a\x33\x73\x8e\x67\x46\x1a\xc5\xf8\x66\x5b\xe4\xbd\x35\x28\xcd\xa5\xb8\xee\x47\x41\xd8\xbf\x21\xe7\x67\x58\x49\x69\x7a\xdb\x22\x17\xfa\xba\x5f\x29\x11\x6b\xb6\x82\x82\xea\x41\x55\x8a\x72\x20\x55\x16\xa7\xb0\xe6\x0c\x06\xd1\x20\xec\x9f\x9f\xf5\xdc\xe3\xc2\xe3\x34\x17\xb4\xcb\xb1\xc8\x71\x8e\x06\x76\xdd\x5f\x19\x53\xc6\x08\x6d\x36\x9b\x40\x03\x0b\x98\x0c\x7e\x29\x64\xb9\x7d\x62\xa3\xb1\x2e\x81\xfd\xa8\x13\x25\x35\x1d\x17\xf4\xa7\x54\x24\xc2\xa8\x5e\xb4\x28\x17\x52\x91\x10\xa3\x7a\xe1\xc8\x68\x9f\x8d\xeb\x64\x5a\x4e\x6d\x7d\x7f\x2e\x81\x1c\x29\x37\x9e\x40\xca\xe9\x0c\xd4\x1a\x54\x1c\x61\xe4\xb1\x1a\x9d\xa5\xe2\x20\xd2\xfc\xf9\x9e\x16\x40\x5e\x5e\x82\xff\x3d\xfb\xf5\x15\xa3\x8e\x7f\x57\x85\xa8\x96\x94\x99\x4a\x81\x22\x8a\xe5\x52\x40\xef\x9f\xfa\x37\x90\x2a\xfb\xd7\x96\xe7\x45\x1c\x60\xcd\xa7\x77\xc4\xb6\x4f\xc7\x08\xbd\x11\x51\x97\x68\x83\x5a\xae\x4c\x21\x4f\x40\x33\xc5\x4b\x63\x3b\x52\x93\x30\x7a\xe7\xf0\x09\x2e\xe7\x4e\x64\xa7\x0a\x07\x54\xc5\x13\x28\x5b\xf8\xe4\xcd\xb4\x75\xfb\x5e\x9f\xf0\x71\xe6\xad\xb7\x89\xd6\xa0\x38\x6d\x15\xc2\xe6\xc1\xa8\x03\x37\xa1\xf3\xe4\xde\x66\x30\x95\xd2\x24\x6e\x83\xe6\xf3\x71\x62\x93\xb0\x8e\x76\xbf\x73\x41\xe3\xc7\x45\x72\x77\x7f\x3b\xba\x7d\x40\x07\xe0\xe4\xdb\x88\x24\x93\xd9\x20\x0a\xfe\x0b\x31\xda\x73\x1c\x0e\x9f\x0c\x3e\x23\x68\x60\xf1\x83\x92\x69\xc5\xcc\x88\x96\x44\x17\xfc\x22\x19\x4d\xa2\xf0\x22\x03\xe3\xce\xd6\x58\x2c\xa5\x3d\xfe\x16\x18\x51\xb7\x07\x2d\x64\x8b\xed\xb0\x3d\xcd\xc7\xc5\x69\xaa\x1d\x7e\xa3\xcb\x99\x14\x77\x5c\x1b\xd2\xce\xaa\x43\x76\x96\x1b\xb4\x02\x8c\x3d\xfc\xbc\xa0\x19\xa0\x52\x64\x76\xe6\x1a\xcc\x8b\xdb\xf0\xd4\xac\xc8\xd5\x10\xa3\x7a\xe5\xb9\x56\xc0\xb3\x95\x71\xbe\x66\xe9\x39\x53\x28\xcd\x8a\x0c\xed\x9c\x95\x5d\x5a\xa5\x72\x82\xb4\xa1\x86\xb3\xe6\xd8\x0c\xae\x86\xdb\xab\x61\xe0\x72\xb0\xde\x5d\xd2\xa8\x93\xf5\x89\x35\x44\x97\xe1\xc7\x45\x38\xe7\x89\x55\x44\x97\xe1\x36\xba\x0c\x3f\xa9\xa3\x36\xbc\xcd\xb1\xe3\x61\x4f\x7a\x77\xbf\x1a\xd0\x7f\x65\x03\x7d\x7c\xd1\x35\x01\xf1\x48\x0a\x03\xc2\x24\x5c\x01\x33\x52\x3d\xdb\xeb\xce\x27\xbf\xd7\x1c\xa7\x4e\x71\x5f\x69\x9c\xbe\xd3\xda\x29\x8d\x53\x5f\x67\x36\x7a\x48\xec\xc4\xb7\x2d\xd9\xa7\x05\xdb\x22\xc7\xa8\x8d\xf2\x88\x4c\x0a\xa3\xa4\xbb\x2d\x10\x33\x39\x46\x1e\xe0\x85\xc1\x1a\x84\x99\x55\x4f\x16\xc6\xc8\xb7\xde\x9a\xbc\xdf\xb2\x53\x7b\x28\x80\xd9\x69\x9b\x50\x41\xb3\xfa\x3f\xe3\x84\x26\x76\xc5\xbe\xde\xc5\x2e\xef\x6f\x6d\x63\xc1\x99\x92\x5a\x2e\x4d\xc0\x64\xb1\xeb\xe1\xe3\x62\x32\x5b\xb8\x4b\x6c\x0a\x0c\xf8\x1a\xd4\x14\x32\xae\x8d\xa2\x5f\xef\xe6\x41\xe5\x71\x7a\x4c\xfb\x8b\xcd\x3d\xa2\xf0\xe7\xdb\xbc\xb3\xfd\x8b\xa1\x54\xa0\x41\xd8\x6c\xa5\x70\xaf\xc4\x68\x1f\xaa\x3f\x90\x76\xdf\x43\x18\xd9\x8f\x3f\xf2\x3b\x00\x00\xff\xff\xa9\x37\x2a\x77\x1a\x0a\x00\x00"),
|
2019-09-16 00:44:28 +08:00
|
|
|
|
},
|
2019-05-27 01:03:40 +08:00
|
|
|
|
}
|
|
|
|
|
fs["/"].(*vfsgen۰DirInfo).entries = []os.FileInfo{
|
|
|
|
|
fs["/ConnectionManager.xml"].(os.FileInfo),
|
|
|
|
|
fs["/ContentDirectory.xml"].(os.FileInfo),
|
2019-05-27 02:17:19 +08:00
|
|
|
|
fs["/X_MS_MediaReceiverRegistrar.xml"].(os.FileInfo),
|
|
|
|
|
fs["/rclone-120x120.png"].(os.FileInfo),
|
|
|
|
|
fs["/rclone-48x48.png"].(os.FileInfo),
|
2019-09-16 00:44:28 +08:00
|
|
|
|
fs["/rootDesc.xml.tmpl"].(os.FileInfo),
|
2019-05-27 01:03:40 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return fs
|
|
|
|
|
}()
|
|
|
|
|
|
|
|
|
|
type vfsgen۰FS map[string]interface{}
|
|
|
|
|
|
|
|
|
|
func (fs vfsgen۰FS) Open(path string) (http.File, error) {
|
|
|
|
|
path = pathpkg.Clean("/" + path)
|
|
|
|
|
f, ok := fs[path]
|
|
|
|
|
if !ok {
|
|
|
|
|
return nil, &os.PathError{Op: "open", Path: path, Err: os.ErrNotExist}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
switch f := f.(type) {
|
|
|
|
|
case *vfsgen۰CompressedFileInfo:
|
|
|
|
|
gr, err := gzip.NewReader(bytes.NewReader(f.compressedContent))
|
|
|
|
|
if err != nil {
|
|
|
|
|
// This should never happen because we generate the gzip bytes such that they are always valid.
|
|
|
|
|
panic("unexpected error reading own gzip compressed bytes: " + err.Error())
|
|
|
|
|
}
|
|
|
|
|
return &vfsgen۰CompressedFile{
|
|
|
|
|
vfsgen۰CompressedFileInfo: f,
|
|
|
|
|
gr: gr,
|
|
|
|
|
}, nil
|
2019-05-27 02:17:19 +08:00
|
|
|
|
case *vfsgen۰FileInfo:
|
|
|
|
|
return &vfsgen۰File{
|
|
|
|
|
vfsgen۰FileInfo: f,
|
|
|
|
|
Reader: bytes.NewReader(f.content),
|
|
|
|
|
}, nil
|
2019-05-27 01:03:40 +08:00
|
|
|
|
case *vfsgen۰DirInfo:
|
|
|
|
|
return &vfsgen۰Dir{
|
|
|
|
|
vfsgen۰DirInfo: f,
|
|
|
|
|
}, nil
|
|
|
|
|
default:
|
|
|
|
|
// This should never happen because we generate only the above types.
|
|
|
|
|
panic(fmt.Sprintf("unexpected type %T", f))
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// vfsgen۰CompressedFileInfo is a static definition of a gzip compressed file.
|
|
|
|
|
type vfsgen۰CompressedFileInfo struct {
|
|
|
|
|
name string
|
|
|
|
|
modTime time.Time
|
|
|
|
|
compressedContent []byte
|
|
|
|
|
uncompressedSize int64
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (f *vfsgen۰CompressedFileInfo) Readdir(count int) ([]os.FileInfo, error) {
|
|
|
|
|
return nil, fmt.Errorf("cannot Readdir from file %s", f.name)
|
|
|
|
|
}
|
|
|
|
|
func (f *vfsgen۰CompressedFileInfo) Stat() (os.FileInfo, error) { return f, nil }
|
|
|
|
|
|
|
|
|
|
func (f *vfsgen۰CompressedFileInfo) GzipBytes() []byte {
|
|
|
|
|
return f.compressedContent
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (f *vfsgen۰CompressedFileInfo) Name() string { return f.name }
|
|
|
|
|
func (f *vfsgen۰CompressedFileInfo) Size() int64 { return f.uncompressedSize }
|
|
|
|
|
func (f *vfsgen۰CompressedFileInfo) Mode() os.FileMode { return 0444 }
|
|
|
|
|
func (f *vfsgen۰CompressedFileInfo) ModTime() time.Time { return f.modTime }
|
|
|
|
|
func (f *vfsgen۰CompressedFileInfo) IsDir() bool { return false }
|
|
|
|
|
func (f *vfsgen۰CompressedFileInfo) Sys() interface{} { return nil }
|
|
|
|
|
|
|
|
|
|
// vfsgen۰CompressedFile is an opened compressedFile instance.
|
|
|
|
|
type vfsgen۰CompressedFile struct {
|
|
|
|
|
*vfsgen۰CompressedFileInfo
|
|
|
|
|
gr *gzip.Reader
|
|
|
|
|
grPos int64 // Actual gr uncompressed position.
|
|
|
|
|
seekPos int64 // Seek uncompressed position.
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (f *vfsgen۰CompressedFile) Read(p []byte) (n int, err error) {
|
|
|
|
|
if f.grPos > f.seekPos {
|
|
|
|
|
// Rewind to beginning.
|
|
|
|
|
err = f.gr.Reset(bytes.NewReader(f.compressedContent))
|
|
|
|
|
if err != nil {
|
|
|
|
|
return 0, err
|
|
|
|
|
}
|
|
|
|
|
f.grPos = 0
|
|
|
|
|
}
|
|
|
|
|
if f.grPos < f.seekPos {
|
|
|
|
|
// Fast-forward.
|
2022-08-20 22:38:02 +08:00
|
|
|
|
_, err = io.CopyN(io.Discard, f.gr, f.seekPos-f.grPos)
|
2019-05-27 01:03:40 +08:00
|
|
|
|
if err != nil {
|
|
|
|
|
return 0, err
|
|
|
|
|
}
|
|
|
|
|
f.grPos = f.seekPos
|
|
|
|
|
}
|
|
|
|
|
n, err = f.gr.Read(p)
|
|
|
|
|
f.grPos += int64(n)
|
|
|
|
|
f.seekPos = f.grPos
|
|
|
|
|
return n, err
|
|
|
|
|
}
|
|
|
|
|
func (f *vfsgen۰CompressedFile) Seek(offset int64, whence int) (int64, error) {
|
|
|
|
|
switch whence {
|
|
|
|
|
case io.SeekStart:
|
|
|
|
|
f.seekPos = 0 + offset
|
|
|
|
|
case io.SeekCurrent:
|
|
|
|
|
f.seekPos += offset
|
|
|
|
|
case io.SeekEnd:
|
|
|
|
|
f.seekPos = f.uncompressedSize + offset
|
|
|
|
|
default:
|
|
|
|
|
panic(fmt.Errorf("invalid whence value: %v", whence))
|
|
|
|
|
}
|
|
|
|
|
return f.seekPos, nil
|
|
|
|
|
}
|
|
|
|
|
func (f *vfsgen۰CompressedFile) Close() error {
|
|
|
|
|
return f.gr.Close()
|
|
|
|
|
}
|
|
|
|
|
|
2019-05-27 02:17:19 +08:00
|
|
|
|
// vfsgen۰FileInfo is a static definition of an uncompressed file (because it's not worth gzip compressing).
|
|
|
|
|
type vfsgen۰FileInfo struct {
|
|
|
|
|
name string
|
|
|
|
|
modTime time.Time
|
|
|
|
|
content []byte
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (f *vfsgen۰FileInfo) Readdir(count int) ([]os.FileInfo, error) {
|
|
|
|
|
return nil, fmt.Errorf("cannot Readdir from file %s", f.name)
|
|
|
|
|
}
|
|
|
|
|
func (f *vfsgen۰FileInfo) Stat() (os.FileInfo, error) { return f, nil }
|
|
|
|
|
|
|
|
|
|
func (f *vfsgen۰FileInfo) NotWorthGzipCompressing() {}
|
|
|
|
|
|
|
|
|
|
func (f *vfsgen۰FileInfo) Name() string { return f.name }
|
|
|
|
|
func (f *vfsgen۰FileInfo) Size() int64 { return int64(len(f.content)) }
|
|
|
|
|
func (f *vfsgen۰FileInfo) Mode() os.FileMode { return 0444 }
|
|
|
|
|
func (f *vfsgen۰FileInfo) ModTime() time.Time { return f.modTime }
|
|
|
|
|
func (f *vfsgen۰FileInfo) IsDir() bool { return false }
|
|
|
|
|
func (f *vfsgen۰FileInfo) Sys() interface{} { return nil }
|
|
|
|
|
|
|
|
|
|
// vfsgen۰File is an opened file instance.
|
|
|
|
|
type vfsgen۰File struct {
|
|
|
|
|
*vfsgen۰FileInfo
|
|
|
|
|
*bytes.Reader
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (f *vfsgen۰File) Close() error {
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
|
2019-05-27 01:03:40 +08:00
|
|
|
|
// vfsgen۰DirInfo is a static definition of a directory.
|
|
|
|
|
type vfsgen۰DirInfo struct {
|
|
|
|
|
name string
|
|
|
|
|
modTime time.Time
|
|
|
|
|
entries []os.FileInfo
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (d *vfsgen۰DirInfo) Read([]byte) (int, error) {
|
|
|
|
|
return 0, fmt.Errorf("cannot Read from directory %s", d.name)
|
|
|
|
|
}
|
|
|
|
|
func (d *vfsgen۰DirInfo) Close() error { return nil }
|
|
|
|
|
func (d *vfsgen۰DirInfo) Stat() (os.FileInfo, error) { return d, nil }
|
|
|
|
|
|
|
|
|
|
func (d *vfsgen۰DirInfo) Name() string { return d.name }
|
|
|
|
|
func (d *vfsgen۰DirInfo) Size() int64 { return 0 }
|
|
|
|
|
func (d *vfsgen۰DirInfo) Mode() os.FileMode { return 0755 | os.ModeDir }
|
|
|
|
|
func (d *vfsgen۰DirInfo) ModTime() time.Time { return d.modTime }
|
|
|
|
|
func (d *vfsgen۰DirInfo) IsDir() bool { return true }
|
|
|
|
|
func (d *vfsgen۰DirInfo) Sys() interface{} { return nil }
|
|
|
|
|
|
|
|
|
|
// vfsgen۰Dir is an opened dir instance.
|
|
|
|
|
type vfsgen۰Dir struct {
|
|
|
|
|
*vfsgen۰DirInfo
|
|
|
|
|
pos int // Position within entries for Seek and Readdir.
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (d *vfsgen۰Dir) Seek(offset int64, whence int) (int64, error) {
|
|
|
|
|
if offset == 0 && whence == io.SeekStart {
|
|
|
|
|
d.pos = 0
|
|
|
|
|
return 0, nil
|
|
|
|
|
}
|
|
|
|
|
return 0, fmt.Errorf("unsupported Seek in directory %s", d.name)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (d *vfsgen۰Dir) Readdir(count int) ([]os.FileInfo, error) {
|
|
|
|
|
if d.pos >= len(d.entries) && count > 0 {
|
|
|
|
|
return nil, io.EOF
|
|
|
|
|
}
|
|
|
|
|
if count <= 0 || count > len(d.entries)-d.pos {
|
|
|
|
|
count = len(d.entries) - d.pos
|
|
|
|
|
}
|
|
|
|
|
e := d.entries[d.pos : d.pos+count]
|
|
|
|
|
d.pos += count
|
|
|
|
|
return e, nil
|
|
|
|
|
}
|