Merge pull request #62 from abhinandanpb/master

Adding network specific option in csv format for service create/update
This commit is contained in:
Madhu Venugopal 2017-05-17 21:17:23 -07:00 committed by GitHub
commit 3dfb8343b1
29 changed files with 767 additions and 778 deletions

View File

@ -396,17 +396,18 @@ func (c *credentialSpecOpt) Value() *swarm.CredentialSpec {
return c.value return c.value
} }
func convertNetworks(ctx context.Context, apiClient client.NetworkAPIClient, networks []string) ([]swarm.NetworkAttachmentConfig, error) { func convertNetworks(ctx context.Context, apiClient client.NetworkAPIClient, networks opts.NetworkOpt) ([]swarm.NetworkAttachmentConfig, error) {
nets := []swarm.NetworkAttachmentConfig{} var netAttach []swarm.NetworkAttachmentConfig
for _, networkIDOrName := range networks { for _, net := range networks.Value() {
network, err := apiClient.NetworkInspect(ctx, networkIDOrName, false) networkIDOrName := net.Target
_, err := apiClient.NetworkInspect(ctx, networkIDOrName, false)
if err != nil { if err != nil {
return nil, err return nil, err
} }
nets = append(nets, swarm.NetworkAttachmentConfig{Target: network.ID}) netAttach = append(netAttach, swarm.NetworkAttachmentConfig{Target: net.Target, Aliases: net.Aliases, DriverOpts: net.DriverOpts})
} }
sort.Sort(byNetworkTarget(nets)) sort.Sort(byNetworkTarget(netAttach))
return nets, nil return netAttach, nil
} }
type endpointOptions struct { type endpointOptions struct {
@ -539,7 +540,7 @@ type serviceOptions struct {
placementPrefs placementPrefOpts placementPrefs placementPrefOpts
update updateOptions update updateOptions
rollback updateOptions rollback updateOptions
networks opts.ListOpts networks opts.NetworkOpt
endpoint endpointOptions endpoint endpointOptions
registryAuth bool registryAuth bool
@ -565,7 +566,6 @@ func newServiceOptions() *serviceOptions {
dnsOption: opts.NewListOpts(nil), dnsOption: opts.NewListOpts(nil),
dnsSearch: opts.NewListOpts(opts.ValidateDNSSearch), dnsSearch: opts.NewListOpts(opts.ValidateDNSSearch),
hosts: opts.NewListOpts(opts.ValidateExtraHost), hosts: opts.NewListOpts(opts.ValidateExtraHost),
networks: opts.NewListOpts(nil),
} }
} }
@ -627,7 +627,7 @@ func (opts *serviceOptions) ToService(ctx context.Context, apiClient client.Netw
return service, err return service, err
} }
networks, err := convertNetworks(ctx, apiClient, opts.networks.GetAll()) networks, err := convertNetworks(ctx, apiClient, opts.networks)
if err != nil { if err != nil {
return service, err return service, err
} }

View File

@ -1028,8 +1028,8 @@ func updateNetworks(ctx context.Context, apiClient client.NetworkAPIClient, flag
} }
if flags.Changed(flagNetworkAdd) { if flags.Changed(flagNetworkAdd) {
values := flags.Lookup(flagNetworkAdd).Value.(*opts.ListOpts).GetAll() values := flags.Lookup(flagNetworkAdd).Value.(*opts.NetworkOpt)
networks, err := convertNetworks(ctx, apiClient, values) networks, err := convertNetworks(ctx, apiClient, *values)
if err != nil { if err != nil {
return err return err
} }

106
opts/network.go Normal file
View File

@ -0,0 +1,106 @@
package opts
import (
"encoding/csv"
"fmt"
"regexp"
"strings"
)
const (
networkOptName = "name"
networkOptAlias = "alias"
driverOpt = "driver-opt"
)
// NetworkAttachmentOpts represents the network options for endpoint creation
type NetworkAttachmentOpts struct {
Target string
Aliases []string
DriverOpts map[string]string
}
// NetworkOpt represents a network config in swarm mode.
type NetworkOpt struct {
options []NetworkAttachmentOpts
}
// Set networkopts value
func (n *NetworkOpt) Set(value string) error {
longSyntax, err := regexp.MatchString(`\w+=\w+(,\w+=\w+)*`, value)
if err != nil {
return err
}
var netOpt NetworkAttachmentOpts
if longSyntax {
csvReader := csv.NewReader(strings.NewReader(value))
fields, err := csvReader.Read()
if err != nil {
return err
}
netOpt.Aliases = []string{}
for _, field := range fields {
parts := strings.SplitN(field, "=", 2)
if len(parts) < 2 {
return fmt.Errorf("invalid field %s", field)
}
key := strings.TrimSpace(strings.ToLower(parts[0]))
value := strings.TrimSpace(strings.ToLower(parts[1]))
switch key {
case networkOptName:
netOpt.Target = value
case networkOptAlias:
netOpt.Aliases = append(netOpt.Aliases, value)
case driverOpt:
key, value, err = parseDriverOpt(value)
if err == nil {
if netOpt.DriverOpts == nil {
netOpt.DriverOpts = make(map[string]string)
}
netOpt.DriverOpts[key] = value
} else {
return err
}
default:
return fmt.Errorf("invalid field key %s", key)
}
}
if len(netOpt.Target) == 0 {
return fmt.Errorf("network name/id is not specified")
}
} else {
netOpt.Target = value
}
n.options = append(n.options, netOpt)
return nil
}
// Type returns the type of this option
func (n *NetworkOpt) Type() string {
return "network"
}
// Value returns the networkopts
func (n *NetworkOpt) Value() []NetworkAttachmentOpts {
return n.options
}
// String returns the network opts as a string
func (n *NetworkOpt) String() string {
return ""
}
func parseDriverOpt(driverOpt string) (key string, value string, err error) {
parts := strings.SplitN(driverOpt, "=", 2)
if len(parts) != 2 {
err = fmt.Errorf("invalid key value pair format in driver options")
}
key = strings.TrimSpace(strings.ToLower(parts[0]))
value = strings.TrimSpace(strings.ToLower(parts[1]))
return
}

100
opts/network_test.go Normal file
View File

@ -0,0 +1,100 @@
package opts
import (
"testing"
"github.com/docker/docker/pkg/testutil"
"github.com/stretchr/testify/assert"
)
func TestNetworkOptLegacySyntax(t *testing.T) {
testCases := []struct {
value string
expected []NetworkAttachmentOpts
}{
{
value: "docknet1",
expected: []NetworkAttachmentOpts{
{
Target: "docknet1",
},
},
},
}
for _, tc := range testCases {
var network NetworkOpt
assert.NoError(t, network.Set(tc.value))
assert.Equal(t, tc.expected, network.Value())
}
}
func TestNetworkOptCompleteSyntax(t *testing.T) {
testCases := []struct {
value string
expected []NetworkAttachmentOpts
}{
{
value: "name=docknet1,alias=web,driver-opt=field1=value1",
expected: []NetworkAttachmentOpts{
{
Target: "docknet1",
Aliases: []string{"web"},
DriverOpts: map[string]string{
"field1": "value1",
},
},
},
},
{
value: "name=docknet1,alias=web1,alias=web2,driver-opt=field1=value1,driver-opt=field2=value2",
expected: []NetworkAttachmentOpts{
{
Target: "docknet1",
Aliases: []string{"web1", "web2"},
DriverOpts: map[string]string{
"field1": "value1",
"field2": "value2",
},
},
},
},
{
value: "name=docknet1",
expected: []NetworkAttachmentOpts{
{
Target: "docknet1",
Aliases: []string{},
},
},
},
}
for _, tc := range testCases {
var network NetworkOpt
assert.NoError(t, network.Set(tc.value))
assert.Equal(t, tc.expected, network.Value())
}
}
func TestNetworkOptInvalidSyntax(t *testing.T) {
testCases := []struct {
value string
expectedError string
}{
{
value: "invalidField=docknet1",
expectedError: "invalid field",
},
{
value: "network=docknet1,invalid=web",
expectedError: "invalid field",
},
{
value: "driver-opt=field1=value1,driver-opt=field2=value2",
expectedError: "network name/id is not specified",
},
}
for _, tc := range testCases {
var network NetworkOpt
testutil.ErrorContains(t, network.Set(tc.value), tc.expectedError)
}
}

View File

@ -6,7 +6,7 @@ github.com/agl/ed25519 d2b94fd789ea21d12fac1a4443dd3a3f79cda72c
github.com/coreos/etcd 824277cb3a577a0e8c829ca9ec557b973fe06d20 github.com/coreos/etcd 824277cb3a577a0e8c829ca9ec557b973fe06d20
github.com/davecgh/go-spew 346938d642f2ec3594ed81d874461961cd0faa76 github.com/davecgh/go-spew 346938d642f2ec3594ed81d874461961cd0faa76
github.com/docker/distribution b38e5838b7b2f2ad48e06ec4b500011976080621 github.com/docker/distribution b38e5838b7b2f2ad48e06ec4b500011976080621
github.com/docker/docker 4874e05f7452d7d9c60db50296d04c802ce76ae1 github.com/docker/docker 45c6f4262a865a03adaac291a9ce33c0f2190d77
github.com/docker/docker-credential-helpers v0.5.0 github.com/docker/docker-credential-helpers v0.5.0
github.com/docker/go d30aec9fd63c35133f8f79c3412ad91a3b08be06 github.com/docker/go d30aec9fd63c35133f8f79c3412ad91a3b08be06
github.com/docker/go-connections e15c02316c12de00874640cd76311849de2aeed5 github.com/docker/go-connections e15c02316c12de00874640cd76311849de2aeed5
@ -15,7 +15,7 @@ github.com/docker/go-units 9e638d38cf6977a37a8ea0078f3ee75a7cdb2dd1
github.com/docker/libnetwork b13e0604016a4944025aaff521d9c125850b0d04 github.com/docker/libnetwork b13e0604016a4944025aaff521d9c125850b0d04
github.com/docker/libtrust 9cbd2a1374f46905c68a4eb3694a130610adc62a github.com/docker/libtrust 9cbd2a1374f46905c68a4eb3694a130610adc62a
github.com/docker/notary v0.4.2 github.com/docker/notary v0.4.2
github.com/docker/swarmkit 998a47fb9c2b727c8a48d372309af0b3032051e2 github.com/docker/swarmkit 1a3e510517be82d18ac04380b5f71eddf06c2fc0
github.com/flynn-archive/go-shlex 3f9db97f856818214da2e1057f8ad84803971cff github.com/flynn-archive/go-shlex 3f9db97f856818214da2e1057f8ad84803971cff
github.com/gogo/protobuf 7efa791bd276fd4db00867cbd982b552627c24cb github.com/gogo/protobuf 7efa791bd276fd4db00867cbd982b552627c24cb
github.com/golang/protobuf 8ee79997227bf9b34611aee7946ae64735e6fd93 github.com/golang/protobuf 8ee79997227bf9b34611aee7946ae64735e6fd93

View File

@ -58,6 +58,7 @@ type EndpointSettings struct {
GlobalIPv6Address string GlobalIPv6Address string
GlobalIPv6PrefixLen int GlobalIPv6PrefixLen int
MacAddress string MacAddress string
DriverOpts map[string]string
} }
// Task carries the information about one backend task // Task carries the information about one backend task

View File

@ -94,8 +94,9 @@ type NetworkSpec struct {
// NetworkAttachmentConfig represents the configuration of a network attachment. // NetworkAttachmentConfig represents the configuration of a network attachment.
type NetworkAttachmentConfig struct { type NetworkAttachmentConfig struct {
Target string `json:",omitempty"` Target string `json:",omitempty"`
Aliases []string `json:",omitempty"` Aliases []string `json:",omitempty"`
DriverOpts map[string]string `json:",omitempty"`
} }
// NetworkAttachment represents a network attachment. // NetworkAttachment represents a network attachment.

21
vendor/github.com/docker/docker/pkg/term/tc.go generated vendored Normal file
View File

@ -0,0 +1,21 @@
// +build !windows
// +build !solaris !cgo
package term
import (
"syscall"
"unsafe"
"golang.org/x/sys/unix"
)
func tcget(fd uintptr, p *Termios) syscall.Errno {
_, _, err := unix.Syscall(unix.SYS_IOCTL, fd, uintptr(getTermios), uintptr(unsafe.Pointer(p)))
return err
}
func tcset(fd uintptr, p *Termios) syscall.Errno {
_, _, err := unix.Syscall(unix.SYS_IOCTL, fd, setTermios, uintptr(unsafe.Pointer(p)))
return err
}

View File

@ -1,51 +0,0 @@
// +build linux,cgo
package term
import (
"syscall"
"unsafe"
)
// #include <termios.h>
import "C"
// Termios is the Unix API for terminal I/O.
// It is passthrough for syscall.Termios in order to make it portable with
// other platforms where it is not available or handled differently.
type Termios syscall.Termios
// MakeRaw put the terminal connected to the given file descriptor into raw
// mode and returns the previous state of the terminal so that it can be
// restored.
func MakeRaw(fd uintptr) (*State, error) {
var oldState State
if err := tcget(fd, &oldState.termios); err != 0 {
return nil, err
}
newState := oldState.termios
C.cfmakeraw((*C.struct_termios)(unsafe.Pointer(&newState)))
newState.Oflag = newState.Oflag | C.OPOST
if err := tcset(fd, &newState); err != 0 {
return nil, err
}
return &oldState, nil
}
func tcget(fd uintptr, p *Termios) syscall.Errno {
ret, err := C.tcgetattr(C.int(fd), (*C.struct_termios)(unsafe.Pointer(p)))
if ret != 0 {
return err.(syscall.Errno)
}
return 0
}
func tcset(fd uintptr, p *Termios) syscall.Errno {
ret, err := C.tcsetattr(C.int(fd), C.TCSANOW, (*C.struct_termios)(unsafe.Pointer(p)))
if ret != 0 {
return err.(syscall.Errno)
}
return 0
}

View File

@ -1,21 +0,0 @@
// +build !windows
// +build !linux !cgo
// +build !linux !ppc64le
// +build !solaris !cgo
package term
import (
"syscall"
"unsafe"
)
func tcget(fd uintptr, p *Termios) syscall.Errno {
_, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, uintptr(getTermios), uintptr(unsafe.Pointer(p)))
return err
}
func tcset(fd uintptr, p *Termios) syscall.Errno {
_, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, setTermios, uintptr(unsafe.Pointer(p)))
return err
}

View File

@ -5,6 +5,8 @@ package term
import ( import (
"syscall" "syscall"
"unsafe" "unsafe"
"golang.org/x/sys/unix"
) )
// #include <termios.h> // #include <termios.h>
@ -13,7 +15,7 @@ import "C"
// Termios is the Unix API for terminal I/O. // Termios is the Unix API for terminal I/O.
// It is passthrough for syscall.Termios in order to make it portable with // It is passthrough for syscall.Termios in order to make it portable with
// other platforms where it is not available or handled differently. // other platforms where it is not available or handled differently.
type Termios syscall.Termios type Termios unix.Termios
// MakeRaw put the terminal connected to the given file descriptor into raw // MakeRaw put the terminal connected to the given file descriptor into raw
// mode and returns the previous state of the terminal so that it can be // mode and returns the previous state of the terminal so that it can be

View File

@ -10,7 +10,8 @@ import (
"io" "io"
"os" "os"
"os/signal" "os/signal"
"syscall"
"golang.org/x/sys/unix"
) )
var ( var (
@ -79,7 +80,7 @@ func SaveState(fd uintptr) (*State, error) {
// descriptor, with echo disabled. // descriptor, with echo disabled.
func DisableEcho(fd uintptr, state *State) error { func DisableEcho(fd uintptr, state *State) error {
newState := state.termios newState := state.termios
newState.Lflag &^= syscall.ECHO newState.Lflag &^= unix.ECHO
if err := tcset(fd, &newState); err != 0 { if err := tcset(fd, &newState); err != 0 {
return err return err

View File

@ -6,10 +6,10 @@ import (
"io" "io"
"os" "os"
"os/signal" "os/signal"
"syscall"
"github.com/Azure/go-ansiterm/winterm" "github.com/Azure/go-ansiterm/winterm"
"github.com/docker/docker/pkg/term/windows" "github.com/docker/docker/pkg/term/windows"
"golang.org/x/sys/windows"
) )
// State holds the console mode for the terminal. // State holds the console mode for the terminal.
@ -79,19 +79,19 @@ func StdStreams() (stdIn io.ReadCloser, stdOut, stdErr io.Writer) {
} }
if emulateStdin { if emulateStdin {
stdIn = windows.NewAnsiReader(syscall.STD_INPUT_HANDLE) stdIn = windowsconsole.NewAnsiReader(windows.STD_INPUT_HANDLE)
} else { } else {
stdIn = os.Stdin stdIn = os.Stdin
} }
if emulateStdout { if emulateStdout {
stdOut = windows.NewAnsiWriter(syscall.STD_OUTPUT_HANDLE) stdOut = windowsconsole.NewAnsiWriter(windows.STD_OUTPUT_HANDLE)
} else { } else {
stdOut = os.Stdout stdOut = os.Stdout
} }
if emulateStderr { if emulateStderr {
stdErr = windows.NewAnsiWriter(syscall.STD_ERROR_HANDLE) stdErr = windowsconsole.NewAnsiWriter(windows.STD_ERROR_HANDLE)
} else { } else {
stdErr = os.Stderr stdErr = os.Stderr
} }
@ -101,7 +101,7 @@ func StdStreams() (stdIn io.ReadCloser, stdOut, stdErr io.Writer) {
// GetFdInfo returns the file descriptor for an os.File and indicates whether the file represents a terminal. // GetFdInfo returns the file descriptor for an os.File and indicates whether the file represents a terminal.
func GetFdInfo(in interface{}) (uintptr, bool) { func GetFdInfo(in interface{}) (uintptr, bool) {
return windows.GetHandleInfo(in) return windowsconsole.GetHandleInfo(in)
} }
// GetWinsize returns the window size based on the specified file descriptor. // GetWinsize returns the window size based on the specified file descriptor.
@ -121,7 +121,7 @@ func GetWinsize(fd uintptr) (*Winsize, error) {
// IsTerminal returns true if the given file descriptor is a terminal. // IsTerminal returns true if the given file descriptor is a terminal.
func IsTerminal(fd uintptr) bool { func IsTerminal(fd uintptr) bool {
return windows.IsConsole(fd) return windowsconsole.IsConsole(fd)
} }
// RestoreTerminal restores the terminal connected to the given file descriptor // RestoreTerminal restores the terminal connected to the given file descriptor

View File

@ -0,0 +1,42 @@
// +build darwin freebsd openbsd
package term
import (
"unsafe"
"golang.org/x/sys/unix"
)
const (
getTermios = unix.TIOCGETA
setTermios = unix.TIOCSETA
)
// Termios is the Unix API for terminal I/O.
type Termios unix.Termios
// MakeRaw put the terminal connected to the given file descriptor into raw
// mode and returns the previous state of the terminal so that it can be
// restored.
func MakeRaw(fd uintptr) (*State, error) {
var oldState State
if _, _, err := unix.Syscall(unix.SYS_IOCTL, fd, getTermios, uintptr(unsafe.Pointer(&oldState.termios))); err != 0 {
return nil, err
}
newState := oldState.termios
newState.Iflag &^= (unix.IGNBRK | unix.BRKINT | unix.PARMRK | unix.ISTRIP | unix.INLCR | unix.IGNCR | unix.ICRNL | unix.IXON)
newState.Oflag &^= unix.OPOST
newState.Lflag &^= (unix.ECHO | unix.ECHONL | unix.ICANON | unix.ISIG | unix.IEXTEN)
newState.Cflag &^= (unix.CSIZE | unix.PARENB)
newState.Cflag |= unix.CS8
newState.Cc[unix.VMIN] = 1
newState.Cc[unix.VTIME] = 0
if _, _, err := unix.Syscall(unix.SYS_IOCTL, fd, setTermios, uintptr(unsafe.Pointer(&newState))); err != 0 {
return nil, err
}
return &oldState, nil
}

View File

@ -1,69 +0,0 @@
package term
import (
"syscall"
"unsafe"
)
const (
getTermios = syscall.TIOCGETA
setTermios = syscall.TIOCSETA
)
// Termios magic numbers, passthrough to the ones defined in syscall.
const (
IGNBRK = syscall.IGNBRK
PARMRK = syscall.PARMRK
INLCR = syscall.INLCR
IGNCR = syscall.IGNCR
ECHONL = syscall.ECHONL
CSIZE = syscall.CSIZE
ICRNL = syscall.ICRNL
ISTRIP = syscall.ISTRIP
PARENB = syscall.PARENB
ECHO = syscall.ECHO
ICANON = syscall.ICANON
ISIG = syscall.ISIG
IXON = syscall.IXON
BRKINT = syscall.BRKINT
INPCK = syscall.INPCK
OPOST = syscall.OPOST
CS8 = syscall.CS8
IEXTEN = syscall.IEXTEN
)
// Termios is the Unix API for terminal I/O.
type Termios struct {
Iflag uint64
Oflag uint64
Cflag uint64
Lflag uint64
Cc [20]byte
Ispeed uint64
Ospeed uint64
}
// MakeRaw put the terminal connected to the given file descriptor into raw
// mode and returns the previous state of the terminal so that it can be
// restored.
func MakeRaw(fd uintptr) (*State, error) {
var oldState State
if _, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, uintptr(getTermios), uintptr(unsafe.Pointer(&oldState.termios))); err != 0 {
return nil, err
}
newState := oldState.termios
newState.Iflag &^= (IGNBRK | BRKINT | PARMRK | ISTRIP | INLCR | IGNCR | ICRNL | IXON)
newState.Oflag &^= OPOST
newState.Lflag &^= (ECHO | ECHONL | ICANON | ISIG | IEXTEN)
newState.Cflag &^= (CSIZE | PARENB)
newState.Cflag |= CS8
newState.Cc[syscall.VMIN] = 1
newState.Cc[syscall.VTIME] = 0
if _, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, uintptr(setTermios), uintptr(unsafe.Pointer(&newState))); err != 0 {
return nil, err
}
return &oldState, nil
}

View File

@ -1,69 +0,0 @@
package term
import (
"syscall"
"unsafe"
)
const (
getTermios = syscall.TIOCGETA
setTermios = syscall.TIOCSETA
)
// Termios magic numbers, passthrough to the ones defined in syscall.
const (
IGNBRK = syscall.IGNBRK
PARMRK = syscall.PARMRK
INLCR = syscall.INLCR
IGNCR = syscall.IGNCR
ECHONL = syscall.ECHONL
CSIZE = syscall.CSIZE
ICRNL = syscall.ICRNL
ISTRIP = syscall.ISTRIP
PARENB = syscall.PARENB
ECHO = syscall.ECHO
ICANON = syscall.ICANON
ISIG = syscall.ISIG
IXON = syscall.IXON
BRKINT = syscall.BRKINT
INPCK = syscall.INPCK
OPOST = syscall.OPOST
CS8 = syscall.CS8
IEXTEN = syscall.IEXTEN
)
// Termios is the Unix API for terminal I/O.
type Termios struct {
Iflag uint32
Oflag uint32
Cflag uint32
Lflag uint32
Cc [20]byte
Ispeed uint32
Ospeed uint32
}
// MakeRaw put the terminal connected to the given file descriptor into raw
// mode and returns the previous state of the terminal so that it can be
// restored.
func MakeRaw(fd uintptr) (*State, error) {
var oldState State
if _, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, uintptr(getTermios), uintptr(unsafe.Pointer(&oldState.termios))); err != 0 {
return nil, err
}
newState := oldState.termios
newState.Iflag &^= (IGNBRK | BRKINT | PARMRK | ISTRIP | INLCR | IGNCR | ICRNL | IXON)
newState.Oflag &^= OPOST
newState.Lflag &^= (ECHO | ECHONL | ICANON | ISIG | IEXTEN)
newState.Cflag &^= (CSIZE | PARENB)
newState.Cflag |= CS8
newState.Cc[syscall.VMIN] = 1
newState.Cc[syscall.VTIME] = 0
if _, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, uintptr(setTermios), uintptr(unsafe.Pointer(&newState))); err != 0 {
return nil, err
}
return &oldState, nil
}

View File

@ -1,46 +1,37 @@
// +build !cgo
package term package term
import ( import (
"syscall"
"unsafe" "unsafe"
"golang.org/x/sys/unix"
) )
const ( const (
getTermios = syscall.TCGETS getTermios = unix.TCGETS
setTermios = syscall.TCSETS setTermios = unix.TCSETS
) )
// Termios is the Unix API for terminal I/O. // Termios is the Unix API for terminal I/O.
type Termios struct { type Termios unix.Termios
Iflag uint32
Oflag uint32
Cflag uint32
Lflag uint32
Cc [20]byte
Ispeed uint32
Ospeed uint32
}
// MakeRaw put the terminal connected to the given file descriptor into raw // MakeRaw put the terminal connected to the given file descriptor into raw
// mode and returns the previous state of the terminal so that it can be // mode and returns the previous state of the terminal so that it can be
// restored. // restored.
func MakeRaw(fd uintptr) (*State, error) { func MakeRaw(fd uintptr) (*State, error) {
var oldState State var oldState State
if _, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, getTermios, uintptr(unsafe.Pointer(&oldState.termios))); err != 0 { if _, _, err := unix.Syscall(unix.SYS_IOCTL, fd, getTermios, uintptr(unsafe.Pointer(&oldState.termios))); err != 0 {
return nil, err return nil, err
} }
newState := oldState.termios newState := oldState.termios
newState.Iflag &^= (syscall.IGNBRK | syscall.BRKINT | syscall.PARMRK | syscall.ISTRIP | syscall.INLCR | syscall.IGNCR | syscall.ICRNL | syscall.IXON) newState.Iflag &^= (unix.IGNBRK | unix.BRKINT | unix.PARMRK | unix.ISTRIP | unix.INLCR | unix.IGNCR | unix.ICRNL | unix.IXON)
newState.Oflag |= syscall.OPOST newState.Oflag |= unix.OPOST
newState.Lflag &^= (syscall.ECHO | syscall.ECHONL | syscall.ICANON | syscall.ISIG | syscall.IEXTEN) newState.Lflag &^= (unix.ECHO | unix.ECHONL | unix.ICANON | unix.ISIG | unix.IEXTEN)
newState.Cflag &^= (syscall.CSIZE | syscall.PARENB) newState.Cflag &^= (unix.CSIZE | unix.PARENB)
newState.Cflag |= syscall.CS8 newState.Cflag |= unix.CS8
if _, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, setTermios, uintptr(unsafe.Pointer(&newState))); err != 0 { if _, _, err := unix.Syscall(unix.SYS_IOCTL, fd, setTermios, uintptr(unsafe.Pointer(&newState))); err != 0 {
return nil, err return nil, err
} }
return &oldState, nil return &oldState, nil

View File

@ -1,69 +0,0 @@
package term
import (
"syscall"
"unsafe"
)
const (
getTermios = syscall.TIOCGETA
setTermios = syscall.TIOCSETA
)
// Termios magic numbers, passthrough to the ones defined in syscall.
const (
IGNBRK = syscall.IGNBRK
PARMRK = syscall.PARMRK
INLCR = syscall.INLCR
IGNCR = syscall.IGNCR
ECHONL = syscall.ECHONL
CSIZE = syscall.CSIZE
ICRNL = syscall.ICRNL
ISTRIP = syscall.ISTRIP
PARENB = syscall.PARENB
ECHO = syscall.ECHO
ICANON = syscall.ICANON
ISIG = syscall.ISIG
IXON = syscall.IXON
BRKINT = syscall.BRKINT
INPCK = syscall.INPCK
OPOST = syscall.OPOST
CS8 = syscall.CS8
IEXTEN = syscall.IEXTEN
)
// Termios is the Unix API for terminal I/O.
type Termios struct {
Iflag uint32
Oflag uint32
Cflag uint32
Lflag uint32
Cc [20]byte
Ispeed uint32
Ospeed uint32
}
// MakeRaw put the terminal connected to the given file descriptor into raw
// mode and returns the previous state of the terminal so that it can be
// restored.
func MakeRaw(fd uintptr) (*State, error) {
var oldState State
if _, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, uintptr(getTermios), uintptr(unsafe.Pointer(&oldState.termios))); err != 0 {
return nil, err
}
newState := oldState.termios
newState.Iflag &^= (IGNBRK | BRKINT | PARMRK | ISTRIP | INLCR | IGNCR | ICRNL | IXON)
newState.Oflag &^= OPOST
newState.Lflag &^= (ECHO | ECHONL | ICANON | ISIG | IEXTEN)
newState.Cflag &^= (CSIZE | PARENB)
newState.Cflag |= CS8
newState.Cc[syscall.VMIN] = 1
newState.Cc[syscall.VTIME] = 0
if _, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, uintptr(setTermios), uintptr(unsafe.Pointer(&newState))); err != 0 {
return nil, err
}
return &oldState, nil
}

View File

@ -1,6 +1,6 @@
// +build windows // +build windows
package windows package windowsconsole
import ( import (
"bytes" "bytes"

View File

@ -1,6 +1,6 @@
// +build windows // +build windows
package windows package windowsconsole
import ( import (
"io" "io"

View File

@ -1,6 +1,6 @@
// +build windows // +build windows
package windows package windowsconsole
import ( import (
"os" "os"

View File

@ -2,7 +2,7 @@
// When asked for the set of standard streams (e.g., stdin, stdout, stderr), the code will create // When asked for the set of standard streams (e.g., stdin, stdout, stderr), the code will create
// and return pseudo-streams that convert ANSI sequences to / from Windows Console API calls. // and return pseudo-streams that convert ANSI sequences to / from Windows Console API calls.
package windows package windowsconsole
import ( import (
"io/ioutil" "io/ioutil"

View File

@ -3,14 +3,15 @@
package term package term
import ( import (
"syscall"
"unsafe" "unsafe"
"golang.org/x/sys/unix"
) )
// GetWinsize returns the window size based on the specified file descriptor. // GetWinsize returns the window size based on the specified file descriptor.
func GetWinsize(fd uintptr) (*Winsize, error) { func GetWinsize(fd uintptr) (*Winsize, error) {
ws := &Winsize{} ws := &Winsize{}
_, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, uintptr(syscall.TIOCGWINSZ), uintptr(unsafe.Pointer(ws))) _, _, err := unix.Syscall(unix.SYS_IOCTL, fd, uintptr(unix.TIOCGWINSZ), uintptr(unsafe.Pointer(ws)))
// Skipp errno = 0 // Skipp errno = 0
if err == 0 { if err == 0 {
return ws, nil return ws, nil
@ -20,7 +21,7 @@ func GetWinsize(fd uintptr) (*Winsize, error) {
// SetWinsize tries to set the specified window size for the specified file descriptor. // SetWinsize tries to set the specified window size for the specified file descriptor.
func SetWinsize(fd uintptr, ws *Winsize) error { func SetWinsize(fd uintptr, ws *Winsize) error {
_, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, uintptr(syscall.TIOCSWINSZ), uintptr(unsafe.Pointer(ws))) _, _, err := unix.Syscall(unix.SYS_IOCTL, fd, uintptr(unix.TIOCSWINSZ), uintptr(unsafe.Pointer(ws)))
// Skipp errno = 0 // Skipp errno = 0
if err == 0 { if err == 0 {
return nil return nil

View File

@ -1,10 +1,11 @@
// +build solaris // +build solaris,cgo
package term package term
import ( import (
"syscall"
"unsafe" "unsafe"
"golang.org/x/sys/unix"
) )
/* /*
@ -22,7 +23,7 @@ import "C"
// GetWinsize returns the window size based on the specified file descriptor. // GetWinsize returns the window size based on the specified file descriptor.
func GetWinsize(fd uintptr) (*Winsize, error) { func GetWinsize(fd uintptr) (*Winsize, error) {
ws := &Winsize{} ws := &Winsize{}
ret, err := C.my_ioctl(C.int(fd), C.int(syscall.TIOCGWINSZ), (*C.struct_winsize)(unsafe.Pointer(ws))) ret, err := C.my_ioctl(C.int(fd), C.int(unix.TIOCGWINSZ), (*C.struct_winsize)(unsafe.Pointer(ws)))
// Skip retval = 0 // Skip retval = 0
if ret == 0 { if ret == 0 {
return ws, nil return ws, nil
@ -32,7 +33,7 @@ func GetWinsize(fd uintptr) (*Winsize, error) {
// SetWinsize tries to set the specified window size for the specified file descriptor. // SetWinsize tries to set the specified window size for the specified file descriptor.
func SetWinsize(fd uintptr, ws *Winsize) error { func SetWinsize(fd uintptr, ws *Winsize) error {
ret, err := C.my_ioctl(C.int(fd), C.int(syscall.TIOCSWINSZ), (*C.struct_winsize)(unsafe.Pointer(ws))) ret, err := C.my_ioctl(C.int(fd), C.int(unix.TIOCSWINSZ), (*C.struct_winsize)(unsafe.Pointer(ws)))
// Skip retval = 0 // Skip retval = 0
if ret == 0 { if ret == 0 {
return nil return nil

View File

@ -107,7 +107,7 @@ github.com/containerd/containerd 3addd840653146c90a254301d6c3a663c7fd6429
github.com/tonistiigi/fifo 1405643975692217d6720f8b54aeee1bf2cd5cf4 github.com/tonistiigi/fifo 1405643975692217d6720f8b54aeee1bf2cd5cf4
# cluster # cluster
github.com/docker/swarmkit 998a47fb9c2b727c8a48d372309af0b3032051e2 github.com/docker/swarmkit 1a3e510517be82d18ac04380b5f71eddf06c2fc0
github.com/gogo/protobuf v0.4 github.com/gogo/protobuf v0.4
github.com/cloudflare/cfssl 7fb22c8cba7ecaf98e4082d22d65800cf45e042a github.com/cloudflare/cfssl 7fb22c8cba7ecaf98e4082d22d65800cf45e042a
github.com/google/certificate-transparency d90e65c3a07988180c5b1ece71791c0b6506826e github.com/google/certificate-transparency d90e65c3a07988180c5b1ece71791c0b6506826e

View File

@ -217,8 +217,8 @@ type NetworkAttachment struct {
Addresses []string `protobuf:"bytes,2,rep,name=addresses" json:"addresses,omitempty"` Addresses []string `protobuf:"bytes,2,rep,name=addresses" json:"addresses,omitempty"`
// List of aliases by which a task is resolved in a network // List of aliases by which a task is resolved in a network
Aliases []string `protobuf:"bytes,3,rep,name=aliases" json:"aliases,omitempty"` Aliases []string `protobuf:"bytes,3,rep,name=aliases" json:"aliases,omitempty"`
// Map of all the driver options for this network // Map of all the driver attachment options for this network
DriverOpts map[string]string `protobuf:"bytes,4,rep,name=driver_opts,json=driverOpts" json:"driver_opts,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` DriverAttachmentOpts map[string]string `protobuf:"bytes,4,rep,name=driver_attachment_opts,json=driverAttachmentOpts" json:"driver_attachment_opts,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
} }
func (m *NetworkAttachment) Reset() { *m = NetworkAttachment{} } func (m *NetworkAttachment) Reset() { *m = NetworkAttachment{} }
@ -558,10 +558,10 @@ func (m *NetworkAttachment) CopyFrom(src interface{}) {
copy(m.Aliases, o.Aliases) copy(m.Aliases, o.Aliases)
} }
if o.DriverOpts != nil { if o.DriverAttachmentOpts != nil {
m.DriverOpts = make(map[string]string, len(o.DriverOpts)) m.DriverAttachmentOpts = make(map[string]string, len(o.DriverAttachmentOpts))
for k, v := range o.DriverOpts { for k, v := range o.DriverAttachmentOpts {
m.DriverOpts[k] = v m.DriverAttachmentOpts[k] = v
} }
} }
@ -1198,11 +1198,11 @@ func (m *NetworkAttachment) MarshalTo(dAtA []byte) (int, error) {
i += copy(dAtA[i:], s) i += copy(dAtA[i:], s)
} }
} }
if len(m.DriverOpts) > 0 { if len(m.DriverAttachmentOpts) > 0 {
for k, _ := range m.DriverOpts { for k, _ := range m.DriverAttachmentOpts {
dAtA[i] = 0x22 dAtA[i] = 0x22
i++ i++
v := m.DriverOpts[k] v := m.DriverAttachmentOpts[k]
mapSize := 1 + len(k) + sovObjects(uint64(len(k))) + 1 + len(v) + sovObjects(uint64(len(v))) mapSize := 1 + len(k) + sovObjects(uint64(len(k))) + 1 + len(v) + sovObjects(uint64(len(v)))
i = encodeVarintObjects(dAtA, i, uint64(mapSize)) i = encodeVarintObjects(dAtA, i, uint64(mapSize))
dAtA[i] = 0xa dAtA[i] = 0xa
@ -1793,8 +1793,8 @@ func (m *NetworkAttachment) Size() (n int) {
n += 1 + l + sovObjects(uint64(l)) n += 1 + l + sovObjects(uint64(l))
} }
} }
if len(m.DriverOpts) > 0 { if len(m.DriverAttachmentOpts) > 0 {
for k, v := range m.DriverOpts { for k, v := range m.DriverAttachmentOpts {
_ = k _ = k
_ = v _ = v
mapEntrySize := 1 + len(k) + sovObjects(uint64(len(k))) + 1 + len(v) + sovObjects(uint64(len(v))) mapEntrySize := 1 + len(k) + sovObjects(uint64(len(k))) + 1 + len(v) + sovObjects(uint64(len(v)))
@ -4427,21 +4427,21 @@ func (this *NetworkAttachment) String() string {
if this == nil { if this == nil {
return "nil" return "nil"
} }
keysForDriverOpts := make([]string, 0, len(this.DriverOpts)) keysForDriverAttachmentOpts := make([]string, 0, len(this.DriverAttachmentOpts))
for k, _ := range this.DriverOpts { for k, _ := range this.DriverAttachmentOpts {
keysForDriverOpts = append(keysForDriverOpts, k) keysForDriverAttachmentOpts = append(keysForDriverAttachmentOpts, k)
} }
github_com_gogo_protobuf_sortkeys.Strings(keysForDriverOpts) github_com_gogo_protobuf_sortkeys.Strings(keysForDriverAttachmentOpts)
mapStringForDriverOpts := "map[string]string{" mapStringForDriverAttachmentOpts := "map[string]string{"
for _, k := range keysForDriverOpts { for _, k := range keysForDriverAttachmentOpts {
mapStringForDriverOpts += fmt.Sprintf("%v: %v,", k, this.DriverOpts[k]) mapStringForDriverAttachmentOpts += fmt.Sprintf("%v: %v,", k, this.DriverAttachmentOpts[k])
} }
mapStringForDriverOpts += "}" mapStringForDriverAttachmentOpts += "}"
s := strings.Join([]string{`&NetworkAttachment{`, s := strings.Join([]string{`&NetworkAttachment{`,
`Network:` + strings.Replace(fmt.Sprintf("%v", this.Network), "Network", "Network", 1) + `,`, `Network:` + strings.Replace(fmt.Sprintf("%v", this.Network), "Network", "Network", 1) + `,`,
`Addresses:` + fmt.Sprintf("%v", this.Addresses) + `,`, `Addresses:` + fmt.Sprintf("%v", this.Addresses) + `,`,
`Aliases:` + fmt.Sprintf("%v", this.Aliases) + `,`, `Aliases:` + fmt.Sprintf("%v", this.Aliases) + `,`,
`DriverOpts:` + mapStringForDriverOpts + `,`, `DriverAttachmentOpts:` + mapStringForDriverAttachmentOpts + `,`,
`}`, `}`,
}, "") }, "")
return s return s
@ -6144,7 +6144,7 @@ func (m *NetworkAttachment) Unmarshal(dAtA []byte) error {
iNdEx = postIndex iNdEx = postIndex
case 4: case 4:
if wireType != 2 { if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field DriverOpts", wireType) return fmt.Errorf("proto: wrong wireType = %d for field DriverAttachmentOpts", wireType)
} }
var msglen int var msglen int
for shift := uint(0); ; shift += 7 { for shift := uint(0); ; shift += 7 {
@ -6208,8 +6208,8 @@ func (m *NetworkAttachment) Unmarshal(dAtA []byte) error {
} }
mapkey := string(dAtA[iNdEx:postStringIndexmapkey]) mapkey := string(dAtA[iNdEx:postStringIndexmapkey])
iNdEx = postStringIndexmapkey iNdEx = postStringIndexmapkey
if m.DriverOpts == nil { if m.DriverAttachmentOpts == nil {
m.DriverOpts = make(map[string]string) m.DriverAttachmentOpts = make(map[string]string)
} }
if iNdEx < postIndex { if iNdEx < postIndex {
var valuekey uint64 var valuekey uint64
@ -6252,10 +6252,10 @@ func (m *NetworkAttachment) Unmarshal(dAtA []byte) error {
} }
mapvalue := string(dAtA[iNdEx:postStringIndexmapvalue]) mapvalue := string(dAtA[iNdEx:postStringIndexmapvalue])
iNdEx = postStringIndexmapvalue iNdEx = postStringIndexmapvalue
m.DriverOpts[mapkey] = mapvalue m.DriverAttachmentOpts[mapkey] = mapvalue
} else { } else {
var mapvalue string var mapvalue string
m.DriverOpts[mapkey] = mapvalue m.DriverAttachmentOpts[mapkey] = mapvalue
} }
iNdEx = postIndex iNdEx = postIndex
default: default:
@ -7630,96 +7630,96 @@ var (
func init() { proto.RegisterFile("objects.proto", fileDescriptorObjects) } func init() { proto.RegisterFile("objects.proto", fileDescriptorObjects) }
var fileDescriptorObjects = []byte{ var fileDescriptorObjects = []byte{
// 1448 bytes of a gzipped FileDescriptorProto // 1451 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x57, 0xcd, 0x6f, 0x1b, 0x37, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x58, 0xcd, 0x6f, 0x1b, 0x45,
0x16, 0xcf, 0x48, 0x63, 0x7d, 0x3c, 0xd9, 0x5a, 0x2f, 0xe3, 0xf5, 0x4e, 0xb4, 0x5e, 0xc9, 0xab, 0x14, 0xef, 0xda, 0x1b, 0x7f, 0x3c, 0x27, 0x56, 0x98, 0x86, 0xe0, 0x9a, 0x60, 0x07, 0x57, 0xa0,
0x60, 0x8b, 0xa0, 0x08, 0xe4, 0xd4, 0x4d, 0x0a, 0xc7, 0x6d, 0xda, 0x48, 0xb6, 0xd1, 0x08, 0x69, 0x0a, 0x55, 0x4e, 0x09, 0x05, 0xa5, 0x81, 0xd2, 0xda, 0x49, 0xd4, 0x5a, 0xa5, 0x34, 0x9a, 0x96,
0x1a, 0x83, 0x49, 0x9d, 0xde, 0x54, 0x7a, 0x86, 0x51, 0xa6, 0x1a, 0x0d, 0x07, 0x43, 0x4a, 0xa9, 0x96, 0x9b, 0x99, 0xec, 0x4e, 0xdd, 0xc5, 0xeb, 0x9d, 0xd5, 0xce, 0xd8, 0xc5, 0x37, 0xce, 0xf9,
0x6e, 0x3d, 0xfb, 0x1f, 0x30, 0x7a, 0xe9, 0x21, 0xa7, 0xde, 0xdb, 0x4b, 0x2f, 0x3d, 0xe7, 0xd8, 0x07, 0x72, 0xe3, 0xd0, 0x13, 0x77, 0xb8, 0x70, 0xe1, 0xc0, 0xa9, 0x47, 0x4e, 0x88, 0x53, 0x44,
0x53, 0xd1, 0x93, 0xd1, 0xe8, 0xbf, 0x28, 0xd0, 0x43, 0x41, 0x0e, 0x47, 0x1e, 0x5b, 0xe3, 0x8f, 0xfd, 0x5f, 0x20, 0x71, 0x40, 0x33, 0x3b, 0x6b, 0x6f, 0xea, 0x75, 0x92, 0xa2, 0x2a, 0xe2, 0xe4,
0x14, 0x81, 0xd1, 0xd3, 0x90, 0xc3, 0xdf, 0xef, 0x7d, 0xf1, 0xbd, 0x47, 0x12, 0xe6, 0xd8, 0xee, 0xf9, 0xf8, 0xfd, 0xde, 0xd7, 0xbc, 0xf7, 0x66, 0xd6, 0xb0, 0xc0, 0xf6, 0xbe, 0xa5, 0x96, 0xe0,
0x97, 0xd4, 0x16, 0xbc, 0x11, 0x84, 0x4c, 0x30, 0x84, 0x1c, 0x66, 0xf7, 0x68, 0xd8, 0xe0, 0xcf, 0x75, 0x3f, 0x60, 0x82, 0x21, 0x64, 0x33, 0xab, 0x4b, 0x83, 0x3a, 0x7f, 0x4a, 0x82, 0x5e, 0xd7,
0x49, 0xd8, 0xef, 0xb9, 0xa2, 0x31, 0x7c, 0xa7, 0x52, 0x12, 0xa3, 0x80, 0x6a, 0x40, 0xa5, 0xc4, 0x11, 0xf5, 0xc1, 0x87, 0xe5, 0x82, 0x18, 0xfa, 0x54, 0x03, 0xca, 0x05, 0xee, 0x53, 0x2b, 0x9a,
0x03, 0x6a, 0xc7, 0x93, 0x5a, 0x97, 0xb1, 0xae, 0x47, 0x57, 0xd4, 0x6c, 0x77, 0xf0, 0x74, 0x45, 0x54, 0x3b, 0x8c, 0x75, 0x5c, 0xba, 0xa6, 0x66, 0x7b, 0xfd, 0xc7, 0x6b, 0xc2, 0xe9, 0x51, 0x2e,
0xb8, 0x7d, 0xca, 0x05, 0xe9, 0x07, 0x1a, 0xb0, 0xd0, 0x65, 0x5d, 0xa6, 0x86, 0x2b, 0x72, 0xa4, 0x48, 0xcf, 0xd7, 0x80, 0xa5, 0x0e, 0xeb, 0x30, 0x35, 0x5c, 0x93, 0x23, 0xbd, 0x7a, 0xe1, 0x65,
0xff, 0x5e, 0x39, 0x4e, 0x23, 0xfe, 0x48, 0x2f, 0x5d, 0x0e, 0xbc, 0x41, 0xd7, 0xf5, 0x57, 0xa2, 0x1a, 0xf1, 0x86, 0x7a, 0xeb, 0xbc, 0xef, 0xf6, 0x3b, 0x8e, 0xb7, 0x16, 0xfe, 0x84, 0x8b, 0xb5,
0x4f, 0xf4, 0xb3, 0xfe, 0xa3, 0x01, 0xe6, 0x03, 0x2a, 0x08, 0x7a, 0x1f, 0xf2, 0x43, 0x1a, 0x72, 0x5f, 0x0c, 0x30, 0xef, 0x52, 0x41, 0xd0, 0xa7, 0x90, 0x1d, 0xd0, 0x80, 0x3b, 0xcc, 0x2b, 0x19,
0x97, 0xf9, 0x96, 0xb1, 0x6c, 0x5c, 0x2b, 0xad, 0xfe, 0xa7, 0x31, 0x6d, 0x6f, 0x63, 0x27, 0x82, 0xab, 0xc6, 0xa5, 0xc2, 0xfa, 0xdb, 0xf5, 0x69, 0x7b, 0xeb, 0x0f, 0x43, 0x48, 0xd3, 0x7c, 0x7e,
0xb4, 0xcc, 0x97, 0x07, 0xb5, 0x4b, 0x38, 0x66, 0xa0, 0xdb, 0x00, 0x76, 0x48, 0x89, 0xa0, 0x4e, 0x58, 0x3d, 0x87, 0x23, 0x06, 0xba, 0x06, 0x60, 0x05, 0x94, 0x08, 0x6a, 0xb7, 0x89, 0x28, 0xa5,
0x87, 0x08, 0x2b, 0xa3, 0xf8, 0x95, 0x46, 0x64, 0x4a, 0x23, 0x36, 0xa5, 0xf1, 0x38, 0xf6, 0x00, 0x14, 0xbf, 0x5c, 0x0f, 0x4d, 0xa9, 0x47, 0xa6, 0xd4, 0x1f, 0x44, 0x1e, 0xe0, 0xbc, 0x46, 0x37,
0x17, 0x35, 0xba, 0x29, 0x24, 0x75, 0x10, 0x38, 0x31, 0x35, 0x7b, 0x36, 0x55, 0xa3, 0x9b, 0xa2, 0x84, 0xa4, 0xf6, 0x7d, 0x3b, 0xa2, 0xa6, 0x4f, 0xa6, 0x6a, 0x74, 0x43, 0xd4, 0x7e, 0x32, 0xc1,
0xfe, 0xbd, 0x09, 0xe6, 0xa7, 0xcc, 0xa1, 0x68, 0x11, 0x32, 0xae, 0xa3, 0xcc, 0x2e, 0xb6, 0x72, 0xfc, 0x92, 0xd9, 0x14, 0x2d, 0x43, 0xca, 0xb1, 0x95, 0xd9, 0xf9, 0x66, 0x66, 0x74, 0x58, 0x4d,
0xe3, 0x83, 0x5a, 0xa6, 0xbd, 0x89, 0x33, 0xae, 0x83, 0x56, 0xc1, 0xec, 0x53, 0x41, 0xb4, 0x41, 0xb5, 0xb6, 0x71, 0xca, 0xb1, 0xd1, 0x3a, 0x98, 0x3d, 0x2a, 0x88, 0x36, 0xa8, 0x94, 0xe4, 0x90,
0x56, 0x9a, 0x43, 0xd2, 0x77, 0xed, 0x8d, 0xc2, 0xa2, 0xf7, 0xc0, 0x94, 0xdb, 0xa0, 0x2d, 0x59, 0xf4, 0x5d, 0x7b, 0xa3, 0xb0, 0xe8, 0x13, 0x30, 0xe5, 0x31, 0x68, 0x4b, 0x56, 0x92, 0x38, 0x52,
0x4a, 0xe3, 0x48, 0x9d, 0x8f, 0x02, 0x6a, 0xc7, 0x3c, 0x89, 0x47, 0x5b, 0x50, 0x72, 0x28, 0xb7, 0xe7, 0x7d, 0x9f, 0x5a, 0x11, 0x4f, 0xe2, 0xd1, 0x0e, 0x14, 0x6c, 0xca, 0xad, 0xc0, 0xf1, 0x85,
0x43, 0x37, 0x10, 0x32, 0x86, 0xa6, 0xa2, 0x5f, 0x3d, 0x89, 0xbe, 0x79, 0x08, 0xc5, 0x49, 0x1e, 0x8c, 0xa1, 0xa9, 0xe8, 0x17, 0x67, 0xd1, 0xb7, 0x27, 0x50, 0x1c, 0xe7, 0xa1, 0xcf, 0x20, 0xc3,
0xfa, 0x00, 0x72, 0x5c, 0x10, 0x31, 0xe0, 0xd6, 0x8c, 0x92, 0x50, 0x3d, 0xd1, 0x00, 0x85, 0xd2, 0x05, 0x11, 0x7d, 0x5e, 0x9a, 0x53, 0x12, 0x2a, 0x33, 0x0d, 0x50, 0x28, 0x6d, 0x82, 0xe6, 0xa0,
0x26, 0x68, 0x0e, 0xba, 0x07, 0xe5, 0x3e, 0xf1, 0x49, 0x97, 0x86, 0x1d, 0x2d, 0x25, 0xa7, 0xa4, 0xdb, 0x50, 0xec, 0x11, 0x8f, 0x74, 0x68, 0xd0, 0xd6, 0x52, 0x32, 0x4a, 0xca, 0xbb, 0x89, 0xae,
0xfc, 0x2f, 0xd5, 0xf5, 0x08, 0x19, 0x09, 0xc2, 0x73, 0xfd, 0xe4, 0x14, 0x6d, 0x01, 0x10, 0x21, 0x87, 0xc8, 0x50, 0x10, 0x5e, 0xe8, 0xc5, 0xa7, 0x68, 0x07, 0x80, 0x08, 0x41, 0xac, 0x27, 0x3d,
0x88, 0xfd, 0xac, 0x4f, 0x7d, 0x61, 0xe5, 0x95, 0x94, 0xff, 0xa7, 0xda, 0x42, 0xc5, 0x73, 0x16, 0xea, 0x89, 0x52, 0x56, 0x49, 0x79, 0x2f, 0xd1, 0x16, 0x2a, 0x9e, 0xb2, 0xa0, 0xdb, 0x18, 0x83,
0xf6, 0x9a, 0x13, 0x30, 0x4e, 0x10, 0xd1, 0xc7, 0x50, 0xb2, 0x69, 0x28, 0xdc, 0xa7, 0xae, 0x4d, 0x71, 0x8c, 0x88, 0x6e, 0x41, 0xc1, 0xa2, 0x81, 0x70, 0x1e, 0x3b, 0x16, 0x11, 0xb4, 0x94, 0x53,
0x04, 0xb5, 0x0a, 0x4a, 0x4e, 0x2d, 0x4d, 0xce, 0xc6, 0x21, 0x4c, 0x3b, 0x95, 0x64, 0xa2, 0x1b, 0x72, 0xaa, 0x49, 0x72, 0xb6, 0x26, 0x30, 0xed, 0x54, 0x9c, 0x89, 0xae, 0x80, 0x19, 0x30, 0x97,
0x60, 0x86, 0xcc, 0xa3, 0x56, 0x71, 0xd9, 0xb8, 0x56, 0x3e, 0x79, 0x5b, 0x30, 0xf3, 0x28, 0x56, 0x96, 0xf2, 0xab, 0xc6, 0xa5, 0xe2, 0xec, 0x63, 0xc1, 0xcc, 0xa5, 0x58, 0x21, 0x37, 0x97, 0xf7,
0xc8, 0xf5, 0xc5, 0xbd, 0xfd, 0x3a, 0x82, 0xf9, 0x82, 0x31, 0x6f, 0xa8, 0xd4, 0x30, 0x6e, 0x18, 0x0f, 0x6a, 0x08, 0x16, 0x73, 0xc6, 0xa2, 0xa1, 0x52, 0xc3, 0xb8, 0x62, 0x7c, 0x6d, 0x7c, 0x63,
0x9f, 0x1b, 0x5f, 0x18, 0xf5, 0x3f, 0xb2, 0x90, 0x7f, 0x44, 0xc3, 0xa1, 0x6b, 0xbf, 0xd9, 0xc4, 0xd4, 0xfe, 0x49, 0x43, 0xf6, 0x3e, 0x0d, 0x06, 0x8e, 0xf5, 0x7a, 0x13, 0xe7, 0xda, 0x91, 0xc4,
0xb9, 0x7d, 0x24, 0x71, 0x52, 0x7d, 0xd4, 0x6a, 0xa7, 0x72, 0x67, 0x0d, 0x0a, 0xd4, 0x77, 0x02, 0x49, 0xf4, 0x51, 0xab, 0x9d, 0xca, 0x9d, 0x0d, 0xc8, 0x51, 0xcf, 0xf6, 0x99, 0xe3, 0x09, 0x9d,
0xe6, 0xfa, 0x42, 0x27, 0x4e, 0xaa, 0x83, 0x5b, 0x1a, 0x83, 0x27, 0x68, 0xb4, 0x05, 0x73, 0x51, 0x38, 0x89, 0x0e, 0xee, 0x68, 0x0c, 0x1e, 0xa3, 0xd1, 0x0e, 0x2c, 0x84, 0xf5, 0xd0, 0x3e, 0x92,
0x3d, 0x74, 0x8e, 0x64, 0xcd, 0x72, 0x1a, 0xfd, 0x33, 0x05, 0xd4, 0xdb, 0x3d, 0x3b, 0x48, 0xcc, 0x35, 0xab, 0x49, 0xf4, 0xaf, 0x14, 0x50, 0x1f, 0xf7, 0x7c, 0x3f, 0x36, 0x43, 0xdb, 0xb0, 0xe0,
0xd0, 0x26, 0xcc, 0x05, 0x21, 0x1d, 0xba, 0x6c, 0xc0, 0x3b, 0xca, 0x89, 0xdc, 0xb9, 0x9c, 0xc0, 0x07, 0x74, 0xe0, 0xb0, 0x3e, 0x6f, 0x2b, 0x27, 0x32, 0xa7, 0x72, 0x02, 0xcf, 0x47, 0x2c, 0x39,
0xb3, 0x31, 0x4b, 0xce, 0xd0, 0x87, 0x30, 0x2b, 0xc9, 0x9d, 0xb8, 0x8f, 0xc0, 0x99, 0x7d, 0x04, 0x43, 0x9f, 0xc3, 0xbc, 0x24, 0xb7, 0xa3, 0x3e, 0x02, 0x27, 0xf6, 0x11, 0xac, 0x5a, 0x9e, 0x9e,
0xab, 0x96, 0xa7, 0x27, 0xe8, 0x21, 0xfc, 0xeb, 0x88, 0x15, 0x13, 0x41, 0xa5, 0xb3, 0x05, 0x5d, 0xa0, 0x7b, 0xf0, 0xe6, 0x11, 0x2b, 0xc6, 0x82, 0x0a, 0x27, 0x0b, 0x3a, 0x1f, 0xb7, 0x44, 0x2f,
0x4e, 0x5a, 0xa2, 0x7f, 0xae, 0xa3, 0xbd, 0xfd, 0x7a, 0x19, 0x66, 0x93, 0x29, 0x50, 0xff, 0x36, 0x6e, 0xa2, 0xfd, 0x83, 0x5a, 0x11, 0xe6, 0xe3, 0x29, 0x50, 0xfb, 0x21, 0x05, 0xb9, 0x28, 0x90,
0x03, 0x85, 0x38, 0x90, 0xe8, 0xa6, 0xde, 0x33, 0xe3, 0xe4, 0xa8, 0xc5, 0x58, 0xe5, 0x6f, 0xb4, 0xe8, 0xaa, 0x3e, 0x33, 0x63, 0x76, 0xd4, 0x22, 0xac, 0xf2, 0x37, 0x3c, 0xae, 0xab, 0x30, 0xe7,
0x5d, 0x37, 0x61, 0x26, 0x60, 0xa1, 0xe0, 0x56, 0x66, 0x39, 0x7b, 0x52, 0x89, 0x6e, 0xb3, 0x50, 0xb3, 0x40, 0xf0, 0x52, 0x6a, 0x35, 0x3d, 0xab, 0x44, 0x77, 0x59, 0x20, 0xb6, 0x98, 0xf7, 0xd8,
0x6c, 0x30, 0xff, 0xa9, 0xdb, 0xc5, 0x11, 0x18, 0x3d, 0x81, 0xd2, 0xd0, 0x0d, 0xc5, 0x80, 0x78, 0xe9, 0xe0, 0x10, 0x8c, 0x1e, 0x41, 0x61, 0xe0, 0x04, 0xa2, 0x4f, 0xdc, 0xb6, 0xe3, 0xf3, 0x52,
0x1d, 0x37, 0xe0, 0x56, 0x56, 0x71, 0xdf, 0x3a, 0x4d, 0x65, 0x63, 0x27, 0xc2, 0xb7, 0xb7, 0x5b, 0x5a, 0x71, 0xdf, 0x3f, 0x4e, 0x65, 0xfd, 0x61, 0x88, 0x6f, 0xed, 0x36, 0x8b, 0xa3, 0xc3, 0x2a,
0xe5, 0xf1, 0x41, 0x0d, 0x26, 0x53, 0x8e, 0x41, 0x8b, 0x6a, 0x07, 0xbc, 0xf2, 0x00, 0x8a, 0x93, 0x8c, 0xa7, 0x1c, 0x83, 0x16, 0xd5, 0xf2, 0x79, 0xf9, 0x2e, 0xe4, 0xc7, 0x3b, 0xe8, 0x32, 0x80,
0x15, 0x74, 0x1d, 0xc0, 0x8f, 0x2a, 0xb2, 0x33, 0xc9, 0xec, 0xb9, 0xf1, 0x41, 0xad, 0xa8, 0xeb, 0x17, 0x56, 0x64, 0x7b, 0x9c, 0xd9, 0x0b, 0xa3, 0xc3, 0x6a, 0x5e, 0xd7, 0x69, 0x6b, 0x1b, 0xe7,
0xb4, 0xbd, 0x89, 0x8b, 0x1a, 0xd0, 0x76, 0x10, 0x02, 0x93, 0x38, 0x4e, 0xa8, 0xf2, 0xbc, 0x88, 0x35, 0xa0, 0x65, 0x23, 0x04, 0x26, 0xb1, 0xed, 0x40, 0xe5, 0x79, 0x1e, 0xab, 0x71, 0xed, 0xc7,
0xd5, 0xb8, 0xfe, 0x5d, 0x0e, 0xcc, 0xc7, 0x84, 0xf7, 0x2e, 0xba, 0xab, 0x4a, 0x9d, 0x53, 0x95, 0x0c, 0x98, 0x0f, 0x08, 0xef, 0x9e, 0x75, 0x57, 0x95, 0x3a, 0xa7, 0x2a, 0xe3, 0x32, 0x00, 0x0f,
0x71, 0x1d, 0x80, 0x47, 0xf9, 0x26, 0xdd, 0x31, 0x0f, 0xdd, 0xd1, 0x59, 0x28, 0xdd, 0xd1, 0x80, 0xf3, 0x4d, 0xba, 0x63, 0x4e, 0xdc, 0xd1, 0x59, 0x28, 0xdd, 0xd1, 0x80, 0xd0, 0x1d, 0xee, 0x32,
0xc8, 0x1d, 0xee, 0x31, 0xa1, 0x8a, 0xc0, 0xc4, 0x6a, 0x8c, 0xae, 0x42, 0xde, 0x67, 0x8e, 0xa2, 0xa1, 0x8a, 0xc0, 0xc4, 0x6a, 0x8c, 0x2e, 0x42, 0xd6, 0x63, 0xb6, 0xa2, 0x67, 0x14, 0x1d, 0x46,
0xe7, 0x14, 0x1d, 0xc6, 0x07, 0xb5, 0x9c, 0xec, 0x15, 0xed, 0x4d, 0x9c, 0x93, 0x4b, 0x6d, 0x47, 0x87, 0xd5, 0x8c, 0xec, 0x15, 0xad, 0x6d, 0x9c, 0x91, 0x5b, 0x2d, 0x5b, 0xb6, 0x29, 0xe2, 0x79,
0xb6, 0x29, 0xe2, 0xfb, 0x4c, 0x10, 0xd9, 0x83, 0xb9, 0x6e, 0x77, 0xa9, 0xd9, 0xdf, 0x3c, 0x84, 0x4c, 0x10, 0xd9, 0x83, 0xb9, 0x6e, 0x77, 0x89, 0xd9, 0xdf, 0x98, 0xc0, 0xa2, 0x36, 0x15, 0x63,
0xc5, 0x6d, 0x2a, 0xc1, 0x44, 0x3b, 0x70, 0x39, 0xb6, 0x37, 0x29, 0xb0, 0xf0, 0x3a, 0x02, 0x91, 0xa2, 0x87, 0x70, 0x3e, 0xb2, 0x37, 0x2e, 0x30, 0xf7, 0x2a, 0x02, 0x91, 0x96, 0x10, 0xdb, 0x89,
0x96, 0x90, 0x58, 0x49, 0x1c, 0x0b, 0xc5, 0x93, 0x8f, 0x05, 0x15, 0xc1, 0xb4, 0x63, 0xa1, 0x05, 0x5d, 0x0b, 0xf9, 0xd9, 0xd7, 0x82, 0x8a, 0x60, 0xd2, 0xb5, 0xd0, 0x84, 0x05, 0x9b, 0x72, 0x27,
0x73, 0x0e, 0xe5, 0x6e, 0x48, 0x1d, 0xd5, 0x26, 0xa8, 0xaa, 0xcc, 0xf2, 0xea, 0x7f, 0x4f, 0x13, 0xa0, 0xb6, 0x6a, 0x13, 0x54, 0x55, 0x66, 0x71, 0xfd, 0x9d, 0xe3, 0x84, 0x50, 0x3c, 0xaf, 0x39,
0x42, 0xf1, 0xac, 0xe6, 0xa8, 0x19, 0x6a, 0x42, 0x41, 0xe7, 0x0d, 0xb7, 0x4a, 0x2a, 0x77, 0xcf, 0x6a, 0x86, 0x1a, 0x90, 0xd3, 0x79, 0xc3, 0x4b, 0x05, 0x95, 0xbb, 0xa7, 0xbc, 0x0e, 0xc6, 0xb4,
0x79, 0x1c, 0x4c, 0x68, 0x47, 0xda, 0xdc, 0xec, 0x6b, 0xb5, 0xb9, 0xdb, 0x00, 0x1e, 0xeb, 0x76, 0x23, 0x6d, 0x6e, 0xfe, 0x95, 0xda, 0xdc, 0x35, 0x00, 0x97, 0x75, 0xda, 0x76, 0xe0, 0x0c, 0x68,
0x9c, 0xd0, 0x1d, 0xd2, 0xd0, 0x9a, 0xd3, 0x97, 0x84, 0x14, 0xee, 0xa6, 0x42, 0xe0, 0xa2, 0xc7, 0x50, 0x5a, 0xd0, 0x8f, 0x84, 0x04, 0xee, 0xb6, 0x42, 0xe0, 0xbc, 0xcb, 0x3a, 0xe1, 0x70, 0xaa,
0xba, 0xd1, 0x70, 0xaa, 0x29, 0x95, 0x5f, 0xaf, 0x29, 0xad, 0x57, 0xf6, 0xf6, 0xeb, 0x8b, 0xb0, 0x29, 0x15, 0x5f, 0xad, 0x29, 0x6d, 0x96, 0xf7, 0x0f, 0x6a, 0xcb, 0xb0, 0x14, 0xef, 0x21, 0x1b,
0x90, 0xec, 0x21, 0x6b, 0xc6, 0x5d, 0xe3, 0x9e, 0xb1, 0x6d, 0xd4, 0xbf, 0xc9, 0xc0, 0x3f, 0xa7, 0xc6, 0x4d, 0xe3, 0xb6, 0xb1, 0x6b, 0xd4, 0x7e, 0x4b, 0xc1, 0x1b, 0x53, 0x0e, 0xa3, 0x8f, 0x21,
0x1c, 0x46, 0xb7, 0x20, 0xaf, 0x5d, 0x3e, 0xed, 0x26, 0xa5, 0x79, 0x38, 0xc6, 0xa2, 0x25, 0x28, 0xab, 0x5d, 0x3e, 0xee, 0x25, 0xa5, 0x79, 0x38, 0xc2, 0xa2, 0x15, 0xc8, 0xcb, 0xfa, 0xa3, 0x9c,
0xca, 0xfa, 0xa3, 0x9c, 0xd3, 0xa8, 0xb3, 0x14, 0xf1, 0xe1, 0x0f, 0x64, 0x41, 0x9e, 0x78, 0x2e, 0xd3, 0xb0, 0xb3, 0xe4, 0xf1, 0x64, 0x01, 0x95, 0x20, 0x4b, 0x5c, 0x87, 0xc8, 0xbd, 0xb4, 0xda,
0x91, 0x6b, 0x59, 0xb5, 0x16, 0x4f, 0xd1, 0x0e, 0x94, 0xa2, 0xb8, 0x74, 0x58, 0x20, 0xb8, 0x65, 0x8b, 0xa6, 0xa8, 0x0f, 0xcb, 0x61, 0x5c, 0xda, 0x93, 0x7b, 0xb7, 0xcd, 0x7c, 0xc1, 0x4b, 0xa6,
0xaa, 0xbd, 0xb9, 0x75, 0xae, 0xbd, 0xd1, 0xe1, 0x7a, 0x18, 0x08, 0xbe, 0xe5, 0x8b, 0x70, 0x84, 0x3a, 0xa6, 0x1b, 0xa7, 0x3a, 0x26, 0x1d, 0xb9, 0xc9, 0xc2, 0x3d, 0x5f, 0xf0, 0x1d, 0x4f, 0x04,
0xc1, 0x99, 0xfc, 0xa8, 0xdc, 0x81, 0x7f, 0x1c, 0x5b, 0x46, 0xf3, 0x90, 0xed, 0xd1, 0x51, 0xd4, 0x43, 0xbc, 0x64, 0x27, 0x6c, 0x95, 0x6f, 0xc1, 0x85, 0x99, 0x14, 0xb4, 0x08, 0xe9, 0x2e, 0x1d,
0x12, 0xb0, 0x1c, 0xa2, 0x05, 0x98, 0x19, 0x12, 0x6f, 0x40, 0x75, 0x07, 0x89, 0x26, 0xeb, 0x99, 0x86, 0xbd, 0x03, 0xcb, 0x21, 0x5a, 0x82, 0xb9, 0x01, 0x71, 0xfb, 0x54, 0xb7, 0x9a, 0x70, 0xb2,
0x35, 0xa3, 0xfe, 0x22, 0x03, 0x79, 0xad, 0xf0, 0xa2, 0x8f, 0x59, 0xad, 0x76, 0xaa, 0x99, 0xdc, 0x99, 0xda, 0x30, 0x6a, 0xcf, 0x52, 0x90, 0xd5, 0xe6, 0x9c, 0xf5, 0x7d, 0xac, 0xd5, 0x4e, 0x75,
0x81, 0x59, 0x1d, 0xa9, 0xa8, 0x0a, 0xcc, 0x33, 0xf3, 0x48, 0x47, 0x36, 0xaa, 0x80, 0x3b, 0x60, 0x9d, 0xeb, 0x30, 0xaf, 0x43, 0x1a, 0x96, 0x8b, 0x79, 0x62, 0xc2, 0x15, 0x42, 0x7c, 0x58, 0x2a,
0xba, 0x01, 0xe9, 0xeb, 0x23, 0x36, 0x55, 0x73, 0x7b, 0xbb, 0xf9, 0xe0, 0x61, 0x10, 0x15, 0x73, 0xd7, 0xc1, 0x74, 0x7c, 0xd2, 0xd3, 0x77, 0x71, 0xa2, 0xe6, 0xd6, 0x6e, 0xe3, 0xee, 0x3d, 0x3f,
0x61, 0x7c, 0x50, 0x33, 0xe5, 0x0f, 0xac, 0x68, 0xa9, 0x87, 0xd1, 0x0f, 0x33, 0x90, 0xdf, 0xf0, 0xac, 0xfa, 0xdc, 0xe8, 0xb0, 0x6a, 0xca, 0x05, 0xac, 0x68, 0x89, 0xb7, 0xd6, 0xcf, 0x73, 0x90,
0x06, 0x5c, 0xd0, 0xf0, 0xa2, 0x83, 0xa4, 0xd5, 0x4e, 0x05, 0x69, 0x03, 0xf2, 0x21, 0x63, 0xa2, 0xdd, 0x72, 0xfb, 0x5c, 0xd0, 0xe0, 0xac, 0x83, 0xa4, 0xd5, 0x4e, 0x05, 0x69, 0x0b, 0xb2, 0x01,
0x63, 0x93, 0xd3, 0xe2, 0x83, 0x19, 0x13, 0x1b, 0xcd, 0x56, 0x59, 0x12, 0x65, 0x3f, 0x8d, 0xe6, 0x63, 0xa2, 0x6d, 0x91, 0xe3, 0xe2, 0x83, 0x19, 0x13, 0x5b, 0x8d, 0x66, 0x51, 0x12, 0x65, 0xe3,
0x38, 0x27, 0xa9, 0x1b, 0x04, 0x3d, 0x81, 0xc5, 0xf8, 0x14, 0xda, 0x65, 0x4c, 0x70, 0x11, 0x92, 0x0d, 0xe7, 0x38, 0x23, 0xa9, 0x5b, 0x04, 0x3d, 0x82, 0xe5, 0xe8, 0xba, 0xda, 0x63, 0x4c, 0x70,
0xa0, 0xd3, 0xa3, 0x23, 0x79, 0x3f, 0xc9, 0x9e, 0x74, 0x1f, 0xdd, 0xf2, 0xed, 0x70, 0xa4, 0x82, 0x11, 0x10, 0xbf, 0xdd, 0xa5, 0x43, 0xf9, 0x90, 0x49, 0xcf, 0x7a, 0xb8, 0xee, 0x78, 0x56, 0x30,
0x77, 0x9f, 0x8e, 0xf0, 0x82, 0x16, 0xd0, 0x8a, 0xf9, 0xf7, 0xe9, 0x88, 0xa3, 0x8f, 0x60, 0x89, 0x54, 0xc1, 0xbb, 0x43, 0x87, 0x78, 0x49, 0x0b, 0x68, 0x46, 0xfc, 0x3b, 0x74, 0xc8, 0xd1, 0x0d,
0x4e, 0x60, 0x52, 0x62, 0xc7, 0x23, 0x7d, 0x79, 0xbe, 0x76, 0x6c, 0x8f, 0xd9, 0x3d, 0xd5, 0xe2, 0x58, 0xa1, 0x63, 0x98, 0x94, 0xd8, 0x76, 0x49, 0x4f, 0x5e, 0xc4, 0x6d, 0xcb, 0x65, 0x56, 0x57,
0x4d, 0x7c, 0x85, 0x26, 0x45, 0x7d, 0x12, 0x21, 0x36, 0x24, 0x00, 0x71, 0xb0, 0x76, 0x3d, 0x62, 0xdd, 0x05, 0x26, 0xbe, 0x40, 0xe3, 0xa2, 0xbe, 0x08, 0x11, 0x5b, 0x12, 0x80, 0x38, 0x94, 0xf6,
0xf7, 0x3c, 0x97, 0xcb, 0x27, 0x47, 0xe2, 0x8a, 0x29, 0xbb, 0xb4, 0xb4, 0x6d, 0xed, 0x94, 0x68, 0x5c, 0x62, 0x75, 0x5d, 0x87, 0xcb, 0x6f, 0x93, 0xd8, 0x5b, 0x54, 0xb6, 0x73, 0x69, 0xdb, 0xc6,
0x35, 0x5a, 0x87, 0xdc, 0xc4, 0x85, 0x55, 0x57, 0xcf, 0xbf, 0x77, 0xd3, 0x57, 0x51, 0x0b, 0x4a, 0x31, 0xd1, 0xaa, 0x37, 0x27, 0xdc, 0xd8, 0xcb, 0x56, 0x57, 0xd4, 0x5b, 0x7b, 0xc9, 0xbb, 0xa8,
0x03, 0x5f, 0xaa, 0x8f, 0x62, 0x50, 0x3c, 0x6f, 0x0c, 0x20, 0x62, 0x49, 0xcf, 0x2b, 0x43, 0x58, 0x09, 0x85, 0xbe, 0x27, 0xd5, 0x87, 0x31, 0xc8, 0x9f, 0x36, 0x06, 0x10, 0xb2, 0xa4, 0xe7, 0xe5,
0x3a, 0x4d, 0x79, 0x4a, 0x6d, 0xde, 0x4d, 0xd6, 0x66, 0x69, 0xf5, 0xed, 0x34, 0x7d, 0xe9, 0x22, 0x01, 0xac, 0x1c, 0xa7, 0x3c, 0xa1, 0x36, 0x6f, 0xc6, 0x6b, 0xb3, 0xb0, 0xfe, 0x41, 0x92, 0xbe,
0x13, 0x75, 0x9c, 0x9a, 0xb6, 0x3f, 0x19, 0x90, 0x7b, 0x44, 0xed, 0x90, 0x8a, 0x37, 0x9a, 0xb5, 0x64, 0x91, 0xb1, 0x3a, 0x4e, 0x4c, 0xdb, 0x5f, 0x0d, 0xc8, 0xdc, 0xa7, 0x56, 0x40, 0xc5, 0x6b,
0x6b, 0x47, 0xb2, 0xb6, 0x9a, 0x7e, 0xf9, 0x94, 0x5a, 0xa7, 0x92, 0xb6, 0x02, 0x05, 0xd7, 0x17, 0xcd, 0xda, 0x8d, 0x23, 0x59, 0x5b, 0x49, 0x7e, 0xa5, 0x4a, 0xad, 0x53, 0x49, 0x5b, 0x86, 0x9c,
0x34, 0xf4, 0x89, 0xa7, 0xb2, 0xb6, 0x80, 0x27, 0xf3, 0x54, 0x07, 0x5e, 0x18, 0x90, 0x8b, 0x6e, 0xe3, 0x09, 0x1a, 0x78, 0xc4, 0x55, 0x59, 0x9b, 0xc3, 0xe3, 0x79, 0xa2, 0x03, 0xcf, 0x0c, 0xc8,
0x67, 0x17, 0xed, 0x40, 0xa4, 0xf5, 0xb8, 0x03, 0xa9, 0x46, 0xfe, 0x6e, 0x40, 0x01, 0x53, 0xce, 0x84, 0xcf, 0xb8, 0xb3, 0x76, 0x20, 0xd4, 0xfa, 0xb2, 0x03, 0x89, 0x46, 0xfe, 0x6d, 0x40, 0x0e,
0x06, 0xe1, 0x1b, 0x7e, 0xa9, 0x1c, 0xbb, 0xed, 0x64, 0xff, 0xf2, 0x6d, 0x07, 0x81, 0xd9, 0x73, 0x53, 0xce, 0xfa, 0xc1, 0x6b, 0xfe, 0xa4, 0x79, 0xe9, 0x59, 0x94, 0xfe, 0xcf, 0xcf, 0x22, 0x04,
0x7d, 0x7d, 0x2f, 0xc3, 0x6a, 0x8c, 0x1a, 0x90, 0x0f, 0xc8, 0xc8, 0x63, 0xc4, 0xd1, 0x8d, 0x72, 0x66, 0xd7, 0xf1, 0xf4, 0x03, 0x0e, 0xab, 0x31, 0xaa, 0x43, 0xd6, 0x27, 0x43, 0x97, 0x11, 0x5b,
0x61, 0xea, 0x31, 0xdf, 0xf4, 0x47, 0x38, 0x06, 0xad, 0x2f, 0xec, 0xed, 0xd7, 0xe7, 0xa1, 0x9c, 0x37, 0xca, 0xa5, 0xa9, 0xaf, 0xfe, 0x86, 0x37, 0xc4, 0x11, 0x68, 0x73, 0x69, 0xff, 0xa0, 0xb6,
0xf4, 0xfc, 0x99, 0x51, 0xff, 0xc5, 0x80, 0xe2, 0xd6, 0x57, 0x82, 0xfa, 0xea, 0x61, 0xf0, 0xb7, 0x08, 0xc5, 0xb8, 0xe7, 0x4f, 0x8c, 0xda, 0x1f, 0x06, 0xe4, 0x77, 0xbe, 0x13, 0xd4, 0x53, 0x5f,
0x74, 0x7e, 0x79, 0xfa, 0xc1, 0x5f, 0x3c, 0xf2, 0x96, 0x4f, 0xdb, 0xd4, 0x96, 0xf5, 0xf2, 0x55, 0x10, 0xff, 0x4b, 0xe7, 0x57, 0xa7, 0xff, 0x19, 0xc8, 0x1f, 0xf9, 0xe8, 0x4f, 0x3a, 0xd4, 0x66,
0xf5, 0xd2, 0xaf, 0xaf, 0xaa, 0x97, 0xbe, 0x1e, 0x57, 0x8d, 0x97, 0xe3, 0xaa, 0xf1, 0xf3, 0xb8, 0xe9, 0xf9, 0x8b, 0xca, 0xb9, 0x3f, 0x5f, 0x54, 0xce, 0x7d, 0x3f, 0xaa, 0x18, 0xcf, 0x47, 0x15,
0x6a, 0xfc, 0x36, 0xae, 0x1a, 0xbb, 0x39, 0x15, 0x9f, 0x77, 0xff, 0x0c, 0x00, 0x00, 0xff, 0xff, 0xe3, 0xf7, 0x51, 0xc5, 0xf8, 0x6b, 0x54, 0x31, 0xf6, 0x32, 0x2a, 0x3e, 0x1f, 0xfd, 0x1b, 0x00,
0x92, 0x44, 0x63, 0xd8, 0x36, 0x12, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1b, 0x47, 0x17, 0xba, 0x5f, 0x12, 0x00, 0x00,
} }

View File

@ -256,8 +256,8 @@ message NetworkAttachment {
// List of aliases by which a task is resolved in a network // List of aliases by which a task is resolved in a network
repeated string aliases = 3; repeated string aliases = 3;
// Map of all the driver options for this network // Map of all the driver attachment options for this network
map<string,string> driver_opts = 4; map<string,string> driver_attachment_opts = 4;
} }
message Network { message Network {

View File

@ -1214,8 +1214,8 @@ type NetworkAttachmentConfig struct {
// preferred. If these addresses are not available then the // preferred. If these addresses are not available then the
// attachment might fail. // attachment might fail.
Addresses []string `protobuf:"bytes,3,rep,name=addresses" json:"addresses,omitempty"` Addresses []string `protobuf:"bytes,3,rep,name=addresses" json:"addresses,omitempty"`
// DriverOpts is a map of driver specific options for the network target // DriverAttachmentOpts is a map of driver attachment options for the network target
DriverOpts map[string]string `protobuf:"bytes,4,rep,name=driver_opts,json=driverOpts" json:"driver_opts,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` DriverAttachmentOpts map[string]string `protobuf:"bytes,4,rep,name=driver_attachment_opts,json=driverAttachmentOpts" json:"driver_attachment_opts,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
} }
func (m *NetworkAttachmentConfig) Reset() { *m = NetworkAttachmentConfig{} } func (m *NetworkAttachmentConfig) Reset() { *m = NetworkAttachmentConfig{} }
@ -2675,10 +2675,10 @@ func (m *NetworkAttachmentConfig) CopyFrom(src interface{}) {
copy(m.Addresses, o.Addresses) copy(m.Addresses, o.Addresses)
} }
if o.DriverOpts != nil { if o.DriverAttachmentOpts != nil {
m.DriverOpts = make(map[string]string, len(o.DriverOpts)) m.DriverAttachmentOpts = make(map[string]string, len(o.DriverAttachmentOpts))
for k, v := range o.DriverOpts { for k, v := range o.DriverAttachmentOpts {
m.DriverOpts[k] = v m.DriverAttachmentOpts[k] = v
} }
} }
@ -4446,11 +4446,11 @@ func (m *NetworkAttachmentConfig) MarshalTo(dAtA []byte) (int, error) {
i += copy(dAtA[i:], s) i += copy(dAtA[i:], s)
} }
} }
if len(m.DriverOpts) > 0 { if len(m.DriverAttachmentOpts) > 0 {
for k, _ := range m.DriverOpts { for k, _ := range m.DriverAttachmentOpts {
dAtA[i] = 0x22 dAtA[i] = 0x22
i++ i++
v := m.DriverOpts[k] v := m.DriverAttachmentOpts[k]
mapSize := 1 + len(k) + sovTypes(uint64(len(k))) + 1 + len(v) + sovTypes(uint64(len(v))) mapSize := 1 + len(k) + sovTypes(uint64(len(k))) + 1 + len(v) + sovTypes(uint64(len(v)))
i = encodeVarintTypes(dAtA, i, uint64(mapSize)) i = encodeVarintTypes(dAtA, i, uint64(mapSize))
dAtA[i] = 0xa dAtA[i] = 0xa
@ -6349,8 +6349,8 @@ func (m *NetworkAttachmentConfig) Size() (n int) {
n += 1 + l + sovTypes(uint64(l)) n += 1 + l + sovTypes(uint64(l))
} }
} }
if len(m.DriverOpts) > 0 { if len(m.DriverAttachmentOpts) > 0 {
for k, v := range m.DriverOpts { for k, v := range m.DriverAttachmentOpts {
_ = k _ = k
_ = v _ = v
mapEntrySize := 1 + len(k) + sovTypes(uint64(len(k))) + 1 + len(v) + sovTypes(uint64(len(v))) mapEntrySize := 1 + len(k) + sovTypes(uint64(len(k))) + 1 + len(v) + sovTypes(uint64(len(v)))
@ -7333,21 +7333,21 @@ func (this *NetworkAttachmentConfig) String() string {
if this == nil { if this == nil {
return "nil" return "nil"
} }
keysForDriverOpts := make([]string, 0, len(this.DriverOpts)) keysForDriverAttachmentOpts := make([]string, 0, len(this.DriverAttachmentOpts))
for k, _ := range this.DriverOpts { for k, _ := range this.DriverAttachmentOpts {
keysForDriverOpts = append(keysForDriverOpts, k) keysForDriverAttachmentOpts = append(keysForDriverAttachmentOpts, k)
} }
github_com_gogo_protobuf_sortkeys.Strings(keysForDriverOpts) github_com_gogo_protobuf_sortkeys.Strings(keysForDriverAttachmentOpts)
mapStringForDriverOpts := "map[string]string{" mapStringForDriverAttachmentOpts := "map[string]string{"
for _, k := range keysForDriverOpts { for _, k := range keysForDriverAttachmentOpts {
mapStringForDriverOpts += fmt.Sprintf("%v: %v,", k, this.DriverOpts[k]) mapStringForDriverAttachmentOpts += fmt.Sprintf("%v: %v,", k, this.DriverAttachmentOpts[k])
} }
mapStringForDriverOpts += "}" mapStringForDriverAttachmentOpts += "}"
s := strings.Join([]string{`&NetworkAttachmentConfig{`, s := strings.Join([]string{`&NetworkAttachmentConfig{`,
`Target:` + fmt.Sprintf("%v", this.Target) + `,`, `Target:` + fmt.Sprintf("%v", this.Target) + `,`,
`Aliases:` + fmt.Sprintf("%v", this.Aliases) + `,`, `Aliases:` + fmt.Sprintf("%v", this.Aliases) + `,`,
`Addresses:` + fmt.Sprintf("%v", this.Addresses) + `,`, `Addresses:` + fmt.Sprintf("%v", this.Addresses) + `,`,
`DriverOpts:` + mapStringForDriverOpts + `,`, `DriverAttachmentOpts:` + mapStringForDriverAttachmentOpts + `,`,
`}`, `}`,
}, "") }, "")
return s return s
@ -11247,7 +11247,7 @@ func (m *NetworkAttachmentConfig) Unmarshal(dAtA []byte) error {
iNdEx = postIndex iNdEx = postIndex
case 4: case 4:
if wireType != 2 { if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field DriverOpts", wireType) return fmt.Errorf("proto: wrong wireType = %d for field DriverAttachmentOpts", wireType)
} }
var msglen int var msglen int
for shift := uint(0); ; shift += 7 { for shift := uint(0); ; shift += 7 {
@ -11311,8 +11311,8 @@ func (m *NetworkAttachmentConfig) Unmarshal(dAtA []byte) error {
} }
mapkey := string(dAtA[iNdEx:postStringIndexmapkey]) mapkey := string(dAtA[iNdEx:postStringIndexmapkey])
iNdEx = postStringIndexmapkey iNdEx = postStringIndexmapkey
if m.DriverOpts == nil { if m.DriverAttachmentOpts == nil {
m.DriverOpts = make(map[string]string) m.DriverAttachmentOpts = make(map[string]string)
} }
if iNdEx < postIndex { if iNdEx < postIndex {
var valuekey uint64 var valuekey uint64
@ -11355,10 +11355,10 @@ func (m *NetworkAttachmentConfig) Unmarshal(dAtA []byte) error {
} }
mapvalue := string(dAtA[iNdEx:postStringIndexmapvalue]) mapvalue := string(dAtA[iNdEx:postStringIndexmapvalue])
iNdEx = postStringIndexmapvalue iNdEx = postStringIndexmapvalue
m.DriverOpts[mapkey] = mapvalue m.DriverAttachmentOpts[mapkey] = mapvalue
} else { } else {
var mapvalue string var mapvalue string
m.DriverOpts[mapkey] = mapvalue m.DriverAttachmentOpts[mapkey] = mapvalue
} }
iNdEx = postIndex iNdEx = postIndex
default: default:
@ -16245,299 +16245,300 @@ var (
func init() { proto.RegisterFile("types.proto", fileDescriptorTypes) } func init() { proto.RegisterFile("types.proto", fileDescriptorTypes) }
var fileDescriptorTypes = []byte{ var fileDescriptorTypes = []byte{
// 4698 bytes of a gzipped FileDescriptorProto // 4705 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x5a, 0x4d, 0x6c, 0x23, 0x47, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x7a, 0x4d, 0x6c, 0x24, 0xd7,
0x76, 0x16, 0x7f, 0x45, 0x3e, 0x52, 0x52, 0x4f, 0x8d, 0x3c, 0xd6, 0xd0, 0x63, 0x89, 0x6e, 0x7b, 0x56, 0xbf, 0xfb, 0xd3, 0xdd, 0xa7, 0xdb, 0x76, 0xf9, 0x8e, 0x33, 0xf1, 0x74, 0x26, 0x76, 0xa7,
0xd6, 0x3f, 0xeb, 0xd0, 0x33, 0x1a, 0xdb, 0x18, 0x7b, 0xe2, 0x1f, 0xfe, 0x69, 0xc4, 0x1d, 0x89, 0x92, 0x79, 0xf9, 0x78, 0xf9, 0x77, 0x66, 0x3c, 0x49, 0x34, 0x49, 0xfe, 0x2f, 0x49, 0x7f, 0x79,
0x24, 0x8a, 0xd4, 0xcc, 0x1a, 0x48, 0xd2, 0x68, 0x75, 0x97, 0xa8, 0xb6, 0x9a, 0x5d, 0x4c, 0x77, 0xdc, 0x6f, 0xec, 0xee, 0xd6, 0xed, 0xf6, 0xcc, 0xcb, 0x02, 0x4a, 0xe5, 0xaa, 0xeb, 0x76, 0xc5,
0x53, 0x1a, 0xe6, 0x07, 0x19, 0xe4, 0xb0, 0x09, 0x74, 0x4a, 0x6e, 0x01, 0x02, 0xe5, 0x92, 0x9c, 0xd5, 0x75, 0x9b, 0xaa, 0x6a, 0x7b, 0x9a, 0x07, 0x62, 0xc4, 0x02, 0x90, 0x57, 0xb0, 0x43, 0x42,
0x82, 0xdc, 0x12, 0x20, 0x48, 0x2e, 0x71, 0x80, 0x1c, 0x7c, 0xcb, 0x26, 0x01, 0x82, 0x45, 0x02, 0x66, 0x03, 0x2b, 0x84, 0xc4, 0x02, 0x24, 0x04, 0x1b, 0x82, 0xc4, 0x22, 0x3b, 0x1e, 0x20, 0xa1,
0x28, 0xb1, 0x0e, 0xb9, 0x05, 0xc9, 0x65, 0x91, 0x4b, 0x02, 0x04, 0xf5, 0xd3, 0xcd, 0xa6, 0xa6, 0x27, 0x90, 0x0c, 0xf1, 0x82, 0x1d, 0x82, 0xcd, 0x13, 0x1b, 0x90, 0xd0, 0xfd, 0xa8, 0xea, 0x6a,
0x25, 0x8d, 0xd7, 0x7b, 0x91, 0xba, 0xde, 0xfb, 0xde, 0xab, 0x57, 0xaf, 0x5e, 0x55, 0xbd, 0x57, 0x4f, 0xd9, 0x9e, 0x90, 0xb7, 0xb1, 0xeb, 0x9e, 0xf3, 0x3b, 0xe7, 0xde, 0x7b, 0xee, 0xb9, 0xe7,
0x45, 0x28, 0xf8, 0x93, 0x11, 0xf1, 0x2a, 0x23, 0x97, 0xfa, 0x14, 0x21, 0x93, 0x1a, 0x07, 0xc4, 0x9e, 0x73, 0x6f, 0x43, 0xc1, 0x9f, 0x8c, 0x88, 0x57, 0x19, 0xb9, 0xd4, 0xa7, 0x08, 0x99, 0xd4,
0xad, 0x78, 0x47, 0xba, 0x3b, 0x3c, 0xb0, 0xfc, 0xca, 0xe1, 0xdd, 0xd2, 0xda, 0x80, 0xd2, 0x81, 0x38, 0x24, 0x6e, 0xc5, 0x3b, 0xd6, 0xdd, 0xe1, 0xa1, 0xe5, 0x57, 0x8e, 0xee, 0x95, 0xd6, 0x07,
0x4d, 0xde, 0xe3, 0x88, 0xdd, 0xf1, 0xde, 0x7b, 0xbe, 0x35, 0x24, 0x9e, 0xaf, 0x0f, 0x47, 0x42, 0x94, 0x0e, 0x6c, 0xf2, 0x1e, 0x47, 0xec, 0x8d, 0xf7, 0xdf, 0xf3, 0xad, 0x21, 0xf1, 0x7c, 0x7d,
0xa8, 0xb4, 0x7a, 0x1e, 0x60, 0x8e, 0x5d, 0xdd, 0xb7, 0xa8, 0x23, 0xf9, 0xcb, 0x03, 0x3a, 0xa0, 0x38, 0x12, 0x42, 0xa5, 0xb5, 0x8b, 0x00, 0x73, 0xec, 0xea, 0xbe, 0x45, 0x1d, 0xc9, 0x5f, 0x19,
0xfc, 0xf3, 0x3d, 0xf6, 0x25, 0xa8, 0xea, 0x1a, 0xcc, 0x3f, 0x26, 0xae, 0x67, 0x51, 0x07, 0x2d, 0xd0, 0x01, 0xe5, 0x9f, 0xef, 0xb1, 0x2f, 0x41, 0x55, 0xd7, 0x61, 0xfe, 0x31, 0x71, 0x3d, 0x8b,
0x43, 0xc6, 0x72, 0x4c, 0xf2, 0x74, 0x25, 0x51, 0x4e, 0xbc, 0x95, 0xc6, 0xa2, 0xa1, 0xde, 0x01, 0x3a, 0x68, 0x05, 0x32, 0x96, 0x63, 0x92, 0xa7, 0xab, 0x89, 0x72, 0xe2, 0xad, 0x34, 0x16, 0x0d,
0x68, 0xb1, 0x8f, 0xa6, 0xe3, 0xbb, 0x13, 0xa4, 0x40, 0xea, 0x80, 0x4c, 0x38, 0x22, 0x8f, 0xd9, 0xf5, 0x2e, 0x40, 0x8b, 0x7d, 0x34, 0x1d, 0xdf, 0x9d, 0x20, 0x05, 0x52, 0x87, 0x64, 0xc2, 0x11,
0x27, 0xa3, 0x1c, 0xea, 0xf6, 0x4a, 0x52, 0x50, 0x0e, 0x75, 0x5b, 0xfd, 0x26, 0x01, 0x85, 0xaa, 0x79, 0xcc, 0x3e, 0x19, 0xe5, 0x48, 0xb7, 0x57, 0x93, 0x82, 0x72, 0xa4, 0xdb, 0xea, 0x37, 0x09,
0xe3, 0x50, 0x9f, 0xf7, 0xee, 0x21, 0x04, 0x69, 0x47, 0x1f, 0x12, 0x29, 0xc4, 0xbf, 0x51, 0x1d, 0x28, 0x54, 0x1d, 0x87, 0xfa, 0xbc, 0x77, 0x0f, 0x21, 0x48, 0x3b, 0xfa, 0x90, 0x48, 0x21, 0xfe,
0xb2, 0xb6, 0xbe, 0x4b, 0x6c, 0x6f, 0x25, 0x59, 0x4e, 0xbd, 0x55, 0x58, 0xff, 0x7e, 0xe5, 0xf9, 0x8d, 0xea, 0x90, 0xb5, 0xf5, 0x3d, 0x62, 0x7b, 0xab, 0xc9, 0x72, 0xea, 0xad, 0xc2, 0xc6, 0xf7,
0x21, 0x57, 0x22, 0x4a, 0x2a, 0x5b, 0x1c, 0xcd, 0x8d, 0xc0, 0x52, 0x14, 0x7d, 0x0a, 0xf3, 0x96, 0x2b, 0xcf, 0x4f, 0xb9, 0x12, 0x51, 0x52, 0xd9, 0xe6, 0x68, 0x3e, 0x08, 0x2c, 0x45, 0xd1, 0xa7,
0x63, 0x5a, 0x06, 0xf1, 0x56, 0xd2, 0x5c, 0xcb, 0x6a, 0x9c, 0x96, 0xa9, 0xf5, 0xb5, 0xf4, 0xd7, 0x30, 0x6f, 0x39, 0xa6, 0x65, 0x10, 0x6f, 0x35, 0xcd, 0xb5, 0xac, 0xc5, 0x69, 0x99, 0x8e, 0xbe,
0xa7, 0x6b, 0x73, 0x38, 0x10, 0x2a, 0x7d, 0x04, 0x85, 0x88, 0xda, 0x98, 0xb1, 0x2d, 0x43, 0xe6, 0x96, 0xfe, 0xfa, 0x6c, 0x7d, 0x0e, 0x07, 0x42, 0xa5, 0x8f, 0xa0, 0x10, 0x51, 0x1b, 0x33, 0xb7,
0x50, 0xb7, 0xc7, 0x44, 0x8e, 0x4e, 0x34, 0x3e, 0x4e, 0xde, 0x4f, 0xa8, 0x5f, 0x40, 0x1e, 0x13, 0x15, 0xc8, 0x1c, 0xe9, 0xf6, 0x98, 0xc8, 0xd9, 0x89, 0xc6, 0xc7, 0xc9, 0x07, 0x09, 0xf5, 0x0b,
0x8f, 0x8e, 0x5d, 0x83, 0x78, 0xe8, 0x6d, 0xc8, 0x3b, 0xba, 0x43, 0x35, 0x63, 0x34, 0xf6, 0xb8, 0xc8, 0x63, 0xe2, 0xd1, 0xb1, 0x6b, 0x10, 0x0f, 0xbd, 0x0d, 0x79, 0x47, 0x77, 0xa8, 0x66, 0x8c,
0x78, 0xaa, 0x56, 0x3c, 0x3b, 0x5d, 0xcb, 0xb5, 0x75, 0x87, 0xd6, 0xbb, 0x3b, 0x1e, 0xce, 0x31, 0xc6, 0x1e, 0x17, 0x4f, 0xd5, 0x8a, 0xe7, 0x67, 0xeb, 0xb9, 0xb6, 0xee, 0xd0, 0x7a, 0x77, 0xd7,
0x76, 0x7d, 0x34, 0xf6, 0xd0, 0x6b, 0x50, 0x1c, 0x92, 0x21, 0x75, 0x27, 0xda, 0xee, 0xc4, 0x27, 0xc3, 0x39, 0xc6, 0xae, 0x8f, 0xc6, 0x1e, 0x7a, 0x0d, 0x8a, 0x43, 0x32, 0xa4, 0xee, 0x44, 0xdb,
0x1e, 0x57, 0x9c, 0xc2, 0x05, 0x41, 0xab, 0x31, 0x92, 0xfa, 0x7b, 0x09, 0x58, 0x0e, 0x74, 0x63, 0x9b, 0xf8, 0xc4, 0xe3, 0x8a, 0x53, 0xb8, 0x20, 0x68, 0x35, 0x46, 0x52, 0x7f, 0x3b, 0x01, 0x2b,
0xf2, 0xab, 0x63, 0xcb, 0x25, 0x43, 0xe2, 0xf8, 0x1e, 0xfa, 0x00, 0xb2, 0xb6, 0x35, 0xb4, 0x7c, 0x81, 0x6e, 0x4c, 0x7e, 0x69, 0x6c, 0xb9, 0x64, 0x48, 0x1c, 0xdf, 0x43, 0x1f, 0x40, 0xd6, 0xb6,
0xd1, 0x47, 0x61, 0xfd, 0xd5, 0xb8, 0xd1, 0x86, 0x56, 0x61, 0x09, 0x46, 0x55, 0x28, 0xba, 0xc4, 0x86, 0x96, 0x2f, 0xfa, 0x28, 0x6c, 0xbc, 0x1a, 0x37, 0xdb, 0x70, 0x54, 0x58, 0x82, 0x51, 0x15,
0x23, 0xee, 0xa1, 0xf0, 0x24, 0xef, 0xf2, 0x4a, 0xe1, 0x19, 0x11, 0x75, 0x03, 0x72, 0x5d, 0x5b, 0x8a, 0x2e, 0xf1, 0x88, 0x7b, 0x24, 0x2c, 0xc9, 0xbb, 0xbc, 0x56, 0x78, 0x46, 0x44, 0xdd, 0x84,
0xf7, 0xf7, 0xa8, 0x3b, 0x44, 0x2a, 0x14, 0x75, 0xd7, 0xd8, 0xb7, 0x7c, 0x62, 0xf8, 0x63, 0x37, 0x5c, 0xd7, 0xd6, 0xfd, 0x7d, 0xea, 0x0e, 0x91, 0x0a, 0x45, 0xdd, 0x35, 0x0e, 0x2c, 0x9f, 0x18,
0x98, 0xd5, 0x19, 0x1a, 0xba, 0x01, 0x49, 0x2a, 0x3a, 0xca, 0xd7, 0xb2, 0x67, 0xa7, 0x6b, 0xc9, 0xfe, 0xd8, 0x0d, 0x56, 0x75, 0x86, 0x86, 0x6e, 0x42, 0x92, 0x8a, 0x8e, 0xf2, 0xb5, 0xec, 0xf9,
0x4e, 0x0f, 0x27, 0xa9, 0xa7, 0x3e, 0x80, 0x6b, 0x5d, 0x7b, 0x3c, 0xb0, 0x9c, 0x06, 0xf1, 0x0c, 0xd9, 0x7a, 0xb2, 0xd3, 0xc3, 0x49, 0xea, 0xa9, 0x9f, 0xc0, 0x72, 0xd7, 0x1e, 0x0f, 0x2c, 0xa7,
0xd7, 0x1a, 0x31, 0xed, 0x2c, 0x3c, 0x58, 0xec, 0x07, 0xe1, 0xc1, 0xbe, 0xc3, 0x90, 0x49, 0x4e, 0x41, 0x3c, 0xc3, 0xb5, 0x46, 0x4c, 0x3b, 0x73, 0x0f, 0xe6, 0xfb, 0x81, 0x7b, 0xb0, 0xef, 0xd0,
0x43, 0x46, 0xfd, 0x9d, 0x24, 0x5c, 0x6b, 0x3a, 0x03, 0xcb, 0x21, 0x51, 0xe9, 0xdb, 0xb0, 0x48, 0x65, 0x92, 0x53, 0x97, 0x51, 0x7f, 0x33, 0x09, 0xcb, 0x4d, 0x67, 0x60, 0x39, 0x24, 0x2a, 0x7d,
0x38, 0x51, 0x3b, 0x14, 0x61, 0x2c, 0xf5, 0x2c, 0x08, 0x6a, 0x10, 0xdb, 0xad, 0x73, 0xf1, 0x76, 0x07, 0x16, 0x09, 0x27, 0x6a, 0x47, 0xc2, 0x8d, 0xa5, 0x9e, 0x05, 0x41, 0x0d, 0x7c, 0xbb, 0x75,
0x37, 0x6e, 0xf8, 0xcf, 0x69, 0x8f, 0x8d, 0xba, 0x26, 0xcc, 0x8f, 0xf8, 0x20, 0xbc, 0x95, 0x14, 0xc1, 0xdf, 0xee, 0xc5, 0x4d, 0xff, 0x39, 0xed, 0xb1, 0x5e, 0xd7, 0x84, 0xf9, 0x11, 0x9f, 0x84,
0xd7, 0x75, 0x3b, 0x4e, 0xd7, 0x73, 0xe3, 0x0c, 0x82, 0x4f, 0xca, 0x7e, 0x97, 0xe0, 0xfb, 0xb3, 0xb7, 0x9a, 0xe2, 0xba, 0xee, 0xc4, 0xe9, 0x7a, 0x6e, 0x9e, 0x81, 0xf3, 0x49, 0xd9, 0xef, 0xe2,
0x24, 0x2c, 0xb5, 0xa9, 0x39, 0xe3, 0x87, 0x12, 0xe4, 0xf6, 0xa9, 0xe7, 0x47, 0x16, 0x5a, 0xd8, 0x7c, 0x7f, 0x9c, 0x84, 0xa5, 0x36, 0x35, 0x67, 0xec, 0x50, 0x82, 0xdc, 0x01, 0xf5, 0xfc, 0xc8,
0x46, 0xf7, 0x21, 0x37, 0x92, 0xd3, 0x27, 0x67, 0xff, 0x56, 0xbc, 0xc9, 0x02, 0x83, 0x43, 0x34, 0x46, 0x0b, 0xdb, 0xe8, 0x01, 0xe4, 0x46, 0x72, 0xf9, 0xe4, 0xea, 0xdf, 0x8e, 0x1f, 0xb2, 0xc0,
0x7a, 0x00, 0x79, 0x37, 0x88, 0x89, 0x95, 0xd4, 0x8b, 0x04, 0xce, 0x14, 0x8f, 0x3e, 0x81, 0xac, 0xe0, 0x10, 0x8d, 0x3e, 0x81, 0xbc, 0x1b, 0xf8, 0xc4, 0x6a, 0xea, 0x45, 0x1c, 0x67, 0x8a, 0x47,
0x98, 0x84, 0x95, 0x34, 0x97, 0xbc, 0xfd, 0x42, 0x3e, 0xc7, 0x52, 0x08, 0x3d, 0x84, 0x9c, 0x6f, 0x3f, 0x80, 0xac, 0x58, 0x84, 0xd5, 0x34, 0x97, 0xbc, 0xf3, 0x42, 0x36, 0xc7, 0x52, 0x08, 0x3d,
0x7b, 0x9a, 0xe5, 0xec, 0xd1, 0x95, 0x0c, 0x57, 0xb0, 0x16, 0xa7, 0x80, 0x39, 0xa2, 0xbf, 0xd5, 0x84, 0x9c, 0x6f, 0x7b, 0x9a, 0xe5, 0xec, 0xd3, 0xd5, 0x0c, 0x57, 0xb0, 0x1e, 0xa7, 0x80, 0x19,
0x6b, 0x39, 0x7b, 0xb4, 0x56, 0x38, 0x3b, 0x5d, 0x9b, 0x97, 0x0d, 0x3c, 0xef, 0xdb, 0x1e, 0xfb, 0xa2, 0xbf, 0xdd, 0x6b, 0x39, 0xfb, 0xb4, 0x56, 0x38, 0x3f, 0x5b, 0x9f, 0x97, 0x0d, 0x3c, 0xef,
0x50, 0x7f, 0x3f, 0x01, 0x85, 0x08, 0x0a, 0xbd, 0x0a, 0xe0, 0xbb, 0x63, 0xcf, 0xd7, 0x5c, 0x4a, 0xdb, 0x1e, 0xfb, 0x50, 0x7f, 0x27, 0x01, 0x85, 0x08, 0x0a, 0xbd, 0x0a, 0xe0, 0xbb, 0x63, 0xcf,
0x7d, 0xee, 0xac, 0x22, 0xce, 0x73, 0x0a, 0xa6, 0xd4, 0x47, 0x15, 0xb8, 0x6e, 0x10, 0xd7, 0xd7, 0xd7, 0x5c, 0x4a, 0x7d, 0x6e, 0xac, 0x22, 0xce, 0x73, 0x0a, 0xa6, 0xd4, 0x47, 0x15, 0xb8, 0x61,
0x2c, 0xcf, 0x1b, 0x13, 0x57, 0xf3, 0xc6, 0xbb, 0x5f, 0x12, 0xc3, 0xe7, 0x8e, 0x2b, 0xe2, 0x6b, 0x10, 0xd7, 0xd7, 0x2c, 0xcf, 0x1b, 0x13, 0x57, 0xf3, 0xc6, 0x7b, 0x5f, 0x12, 0xc3, 0xe7, 0x86,
0x8c, 0xd5, 0xe2, 0x9c, 0x9e, 0x60, 0xa0, 0x7b, 0x70, 0x23, 0x8a, 0x1f, 0x8d, 0x77, 0x6d, 0xcb, 0x2b, 0xe2, 0x65, 0xc6, 0x6a, 0x71, 0x4e, 0x4f, 0x30, 0xd0, 0x7d, 0xb8, 0x19, 0xc5, 0x8f, 0xc6,
0xd0, 0xd8, 0x64, 0xa6, 0xb8, 0xc8, 0xf5, 0xa9, 0x48, 0x97, 0xf3, 0x1e, 0x91, 0x89, 0xfa, 0x93, 0x7b, 0xb6, 0x65, 0x68, 0x6c, 0x31, 0x53, 0x5c, 0xe4, 0xc6, 0x54, 0xa4, 0xcb, 0x79, 0x8f, 0xc8,
0x04, 0x28, 0x58, 0xdf, 0xf3, 0xb7, 0xc9, 0x70, 0x97, 0xb8, 0x3d, 0x5f, 0xf7, 0xc7, 0x1e, 0xba, 0x44, 0xfd, 0x69, 0x02, 0x14, 0xac, 0xef, 0xfb, 0x3b, 0x64, 0xb8, 0x47, 0xdc, 0x9e, 0xaf, 0xfb,
0x01, 0x59, 0x9b, 0xe8, 0x26, 0x71, 0xb9, 0x51, 0x39, 0x2c, 0x5b, 0x68, 0x87, 0xad, 0x60, 0xdd, 0x63, 0x0f, 0xdd, 0x84, 0xac, 0x4d, 0x74, 0x93, 0xb8, 0x7c, 0x50, 0x39, 0x2c, 0x5b, 0x68, 0x97,
0xd8, 0xd7, 0x77, 0x2d, 0xdb, 0xf2, 0x27, 0xdc, 0x94, 0xc5, 0xf8, 0x10, 0x3e, 0xaf, 0xb3, 0x82, 0xed, 0x60, 0xdd, 0x38, 0xd0, 0xf7, 0x2c, 0xdb, 0xf2, 0x27, 0x7c, 0x28, 0x8b, 0xf1, 0x2e, 0x7c,
0x23, 0x82, 0x78, 0x46, 0x0d, 0x5a, 0x81, 0xf9, 0x21, 0xf1, 0x3c, 0x7d, 0x40, 0xb8, 0xa5, 0x79, 0x51, 0x67, 0x05, 0x47, 0x04, 0xf1, 0x8c, 0x1a, 0xb4, 0x0a, 0xf3, 0x43, 0xe2, 0x79, 0xfa, 0x80,
0x1c, 0x34, 0xd5, 0x07, 0x50, 0x8c, 0xca, 0xa1, 0x02, 0xcc, 0xef, 0xb4, 0x1f, 0xb5, 0x3b, 0x4f, 0xf0, 0x91, 0xe6, 0x71, 0xd0, 0x54, 0x3f, 0x81, 0x62, 0x54, 0x0e, 0x15, 0x60, 0x7e, 0xb7, 0xfd,
0xda, 0xca, 0x1c, 0x5a, 0x82, 0xc2, 0x4e, 0x1b, 0x37, 0xab, 0xf5, 0xcd, 0x6a, 0x6d, 0xab, 0xa9, 0xa8, 0xdd, 0x79, 0xd2, 0x56, 0xe6, 0xd0, 0x12, 0x14, 0x76, 0xdb, 0xb8, 0x59, 0xad, 0x6f, 0x55,
0x24, 0xd0, 0x02, 0xe4, 0xa7, 0xcd, 0xa4, 0xfa, 0xe7, 0x09, 0x00, 0xe6, 0x6e, 0x39, 0xa8, 0x8f, 0x6b, 0xdb, 0x4d, 0x25, 0x81, 0x16, 0x20, 0x3f, 0x6d, 0x26, 0xd5, 0x3f, 0x4d, 0x00, 0x30, 0x73,
0x21, 0xe3, 0xf9, 0xba, 0x2f, 0xa2, 0x72, 0x71, 0xfd, 0x8d, 0x8b, 0xe6, 0x50, 0xda, 0xcb, 0xfe, 0xcb, 0x49, 0x7d, 0x0c, 0x19, 0xcf, 0xd7, 0x7d, 0xe1, 0x95, 0x8b, 0x1b, 0x6f, 0x5c, 0xb6, 0x86,
0x11, 0x2c, 0x44, 0xa2, 0x16, 0x26, 0x67, 0x2c, 0x64, 0x1b, 0x84, 0x6e, 0x9a, 0xae, 0x34, 0x9c, 0x72, 0xbc, 0xec, 0x1f, 0xc1, 0x42, 0x24, 0x3a, 0xc2, 0xe4, 0xcc, 0x08, 0x59, 0x80, 0xd0, 0x4d,
0x7f, 0xab, 0x0f, 0x20, 0xc3, 0xa5, 0x67, 0xcd, 0xcd, 0x41, 0xba, 0xc1, 0xbe, 0x12, 0x28, 0x0f, 0xd3, 0x95, 0x03, 0xe7, 0xdf, 0xea, 0x27, 0x90, 0xe1, 0xd2, 0xb3, 0xc3, 0xcd, 0x41, 0xba, 0xc1,
0x19, 0xdc, 0xac, 0x36, 0xbe, 0x50, 0x92, 0x48, 0x81, 0x62, 0xa3, 0xd5, 0xab, 0x77, 0xda, 0xed, 0xbe, 0x12, 0x28, 0x0f, 0x19, 0xdc, 0xac, 0x36, 0xbe, 0x50, 0x92, 0x48, 0x81, 0x62, 0xa3, 0xd5,
0x66, 0xbd, 0xdf, 0x6c, 0x28, 0x29, 0xf5, 0x36, 0x64, 0x5a, 0x43, 0xa6, 0xf9, 0x16, 0x0b, 0xf9, 0xab, 0x77, 0xda, 0xed, 0x66, 0xbd, 0xdf, 0x6c, 0x28, 0x29, 0xf5, 0x0e, 0x64, 0x5a, 0x43, 0xa6,
0x3d, 0xe2, 0x12, 0xc7, 0x08, 0x56, 0xd2, 0x94, 0xa0, 0xfe, 0x38, 0x0f, 0x99, 0x6d, 0x3a, 0x76, 0xf9, 0x36, 0x73, 0xf9, 0x7d, 0xe2, 0x12, 0xc7, 0x08, 0x76, 0xd2, 0x94, 0xa0, 0xfe, 0x24, 0x0f,
0x7c, 0xb4, 0x1e, 0xd9, 0xb6, 0x16, 0xe3, 0x4f, 0x1e, 0x0e, 0xac, 0xf4, 0x27, 0x23, 0x22, 0xb7, 0x99, 0x1d, 0x3a, 0x76, 0x7c, 0xb4, 0x11, 0x09, 0x5b, 0x8b, 0xf1, 0x27, 0x0f, 0x07, 0x56, 0xfa,
0xb5, 0x1b, 0x90, 0x15, 0x8b, 0x43, 0x0e, 0x47, 0xb6, 0x18, 0xdd, 0xd7, 0xdd, 0x01, 0xf1, 0xe5, 0x93, 0x11, 0x91, 0x61, 0xed, 0x26, 0x64, 0xc5, 0xe6, 0x90, 0xd3, 0x91, 0x2d, 0x46, 0xf7, 0x75,
0x78, 0x64, 0x0b, 0xbd, 0x05, 0x39, 0x97, 0xe8, 0x26, 0x75, 0xec, 0x09, 0x5f, 0x43, 0x39, 0x71, 0x77, 0x40, 0x7c, 0x39, 0x1f, 0xd9, 0x42, 0x6f, 0x41, 0xce, 0x25, 0xba, 0x49, 0x1d, 0x7b, 0xc2,
0xae, 0x60, 0xa2, 0x9b, 0x1d, 0xc7, 0x9e, 0xe0, 0x90, 0x8b, 0x36, 0xa1, 0xb8, 0x6b, 0x39, 0xa6, 0xf7, 0x50, 0x4e, 0x9c, 0x2b, 0x98, 0xe8, 0x66, 0xc7, 0xb1, 0x27, 0x38, 0xe4, 0xa2, 0x2d, 0x28,
0x46, 0x47, 0x62, 0x93, 0xcf, 0x5c, 0xbc, 0xe2, 0x84, 0x55, 0x35, 0xcb, 0x31, 0x3b, 0x02, 0x8c, 0xee, 0x59, 0x8e, 0xa9, 0xd1, 0x91, 0x08, 0xf2, 0x99, 0xcb, 0x77, 0x9c, 0x18, 0x55, 0xcd, 0x72,
0x0b, 0xbb, 0xd3, 0x06, 0x6a, 0xc3, 0xe2, 0x21, 0xb5, 0xc7, 0x43, 0x12, 0xea, 0xca, 0x72, 0x5d, 0xcc, 0x8e, 0x00, 0xe3, 0xc2, 0xde, 0xb4, 0x81, 0xda, 0xb0, 0x78, 0x44, 0xed, 0xf1, 0x90, 0x84,
0x6f, 0x5e, 0xac, 0xeb, 0x31, 0xc7, 0x07, 0xda, 0x16, 0x0e, 0xa3, 0x4d, 0xf4, 0x08, 0x16, 0xfc, 0xba, 0xb2, 0x5c, 0xd7, 0x9b, 0x97, 0xeb, 0x7a, 0xcc, 0xf1, 0x81, 0xb6, 0x85, 0xa3, 0x68, 0x13,
0xe1, 0x68, 0xcf, 0x0b, 0xd5, 0xcd, 0x73, 0x75, 0xdf, 0xbb, 0xc4, 0x61, 0x0c, 0x1e, 0x68, 0x2b, 0x3d, 0x82, 0x05, 0x7f, 0x38, 0xda, 0xf7, 0x42, 0x75, 0xf3, 0x5c, 0xdd, 0xf7, 0xae, 0x30, 0x18,
0xfa, 0x91, 0x56, 0xe9, 0xb7, 0x53, 0x50, 0x88, 0x58, 0x8e, 0x7a, 0x50, 0x18, 0xb9, 0x74, 0xa4, 0x83, 0x07, 0xda, 0x8a, 0x7e, 0xa4, 0x55, 0xfa, 0xf5, 0x14, 0x14, 0x22, 0x23, 0x47, 0x3d, 0x28,
0x0f, 0xf8, 0x41, 0x25, 0xe7, 0xe2, 0xee, 0x0b, 0x8d, 0xba, 0xd2, 0x9d, 0x0a, 0xe2, 0xa8, 0x16, 0x8c, 0x5c, 0x3a, 0xd2, 0x07, 0xfc, 0xa0, 0x92, 0x6b, 0x71, 0xef, 0x85, 0x66, 0x5d, 0xe9, 0x4e,
0xf5, 0x24, 0x09, 0x85, 0x08, 0x13, 0xbd, 0x03, 0x39, 0xdc, 0xc5, 0xad, 0xc7, 0xd5, 0x7e, 0x53, 0x05, 0x71, 0x54, 0x8b, 0x7a, 0x9a, 0x84, 0x42, 0x84, 0x89, 0xde, 0x81, 0x1c, 0xee, 0xe2, 0xd6,
0x99, 0x2b, 0xdd, 0x3a, 0x3e, 0x29, 0xaf, 0x70, 0x6d, 0x51, 0x05, 0x5d, 0xd7, 0x3a, 0x64, 0xa1, 0xe3, 0x6a, 0xbf, 0xa9, 0xcc, 0x95, 0x6e, 0x9f, 0x9c, 0x96, 0x57, 0xb9, 0xb6, 0xa8, 0x82, 0xae,
0xf7, 0x16, 0xcc, 0x07, 0xd0, 0x44, 0xe9, 0x95, 0xe3, 0x93, 0xf2, 0xcb, 0xe7, 0xa1, 0x11, 0x24, 0x6b, 0x1d, 0x31, 0xd7, 0x7b, 0x0b, 0xe6, 0x03, 0x68, 0xa2, 0xf4, 0xca, 0xc9, 0x69, 0xf9, 0xe5,
0xee, 0x6d, 0x56, 0x71, 0xb3, 0xa1, 0x24, 0xe3, 0x91, 0xb8, 0xb7, 0xaf, 0xbb, 0xc4, 0x44, 0xdf, 0x8b, 0xd0, 0x08, 0x12, 0xf7, 0xb6, 0xaa, 0xb8, 0xd9, 0x50, 0x92, 0xf1, 0x48, 0xdc, 0x3b, 0xd0,
0x83, 0xac, 0x04, 0xa6, 0x4a, 0xa5, 0xe3, 0x93, 0xf2, 0x8d, 0xf3, 0xc0, 0x29, 0x0e, 0xf7, 0xb6, 0x5d, 0x62, 0xa2, 0xef, 0x41, 0x56, 0x02, 0x53, 0xa5, 0xd2, 0xc9, 0x69, 0xf9, 0xe6, 0x45, 0xe0,
0xaa, 0x8f, 0x9b, 0x4a, 0x3a, 0x1e, 0x87, 0x7b, 0xb6, 0x7e, 0x48, 0xd0, 0x1b, 0x90, 0x11, 0xb0, 0x14, 0x87, 0x7b, 0xdb, 0xd5, 0xc7, 0x4d, 0x25, 0x1d, 0x8f, 0xc3, 0x3d, 0x5b, 0x3f, 0x22, 0xe8,
0x4c, 0xe9, 0xe6, 0xf1, 0x49, 0xf9, 0xa5, 0xe7, 0xd4, 0x31, 0x54, 0x69, 0xe5, 0x77, 0xff, 0x78, 0x0d, 0xc8, 0x08, 0x58, 0xa6, 0x74, 0xeb, 0xe4, 0xb4, 0xfc, 0xd2, 0x73, 0xea, 0x18, 0xaa, 0xb4,
0x75, 0xee, 0xaf, 0xff, 0x64, 0x55, 0x39, 0xcf, 0x2e, 0xfd, 0x6f, 0x02, 0x16, 0x66, 0xa6, 0x1c, 0xfa, 0x5b, 0x7f, 0xb0, 0x36, 0xf7, 0x97, 0x7f, 0xb8, 0xa6, 0x5c, 0x64, 0x97, 0xfe, 0x3b, 0x01,
0xa9, 0x90, 0x75, 0xa8, 0x41, 0x47, 0xe2, 0xfc, 0xca, 0xd5, 0xe0, 0xec, 0x74, 0x2d, 0xdb, 0xa6, 0x0b, 0x33, 0x4b, 0x8e, 0x54, 0xc8, 0x3a, 0xd4, 0xa0, 0x23, 0x71, 0x7e, 0xe5, 0x6a, 0x70, 0x7e,
0x75, 0x3a, 0x9a, 0x60, 0xc9, 0x41, 0x8f, 0xce, 0x9d, 0xc0, 0xf7, 0x5e, 0x30, 0x9e, 0x62, 0xcf, 0xb6, 0x9e, 0x6d, 0xd3, 0x3a, 0x1d, 0x4d, 0xb0, 0xe4, 0xa0, 0x47, 0x17, 0x4e, 0xe0, 0xfb, 0x2f,
0xe0, 0xcf, 0x60, 0xc1, 0x74, 0xad, 0x43, 0xe2, 0x6a, 0x06, 0x75, 0xf6, 0xac, 0x81, 0x3c, 0x9b, 0xe8, 0x4f, 0xb1, 0x67, 0xf0, 0x67, 0xb0, 0x60, 0xba, 0xd6, 0x11, 0x71, 0x35, 0x83, 0x3a, 0xfb,
0x4a, 0x71, 0x3a, 0x1b, 0x1c, 0x88, 0x8b, 0x42, 0xa0, 0xce, 0xf1, 0xdf, 0xe1, 0xf4, 0x2d, 0x3d, 0xd6, 0x40, 0x9e, 0x4d, 0xa5, 0x38, 0x9d, 0x0d, 0x0e, 0xc4, 0x45, 0x21, 0x50, 0xe7, 0xf8, 0xef,
0x86, 0x62, 0x34, 0x42, 0xd9, 0x71, 0xe2, 0x59, 0xbf, 0x46, 0x64, 0x42, 0xc7, 0xd3, 0x3f, 0x9c, 0x70, 0xfa, 0x96, 0x1e, 0x43, 0x31, 0xea, 0xa1, 0xec, 0x38, 0xf1, 0xac, 0x5f, 0x26, 0x32, 0xa1,
0x67, 0x14, 0x9e, 0xce, 0xa1, 0x37, 0x21, 0x3d, 0xa4, 0xa6, 0xd0, 0xb3, 0x50, 0xbb, 0xce, 0x92, 0xe3, 0xe9, 0x1f, 0xce, 0x33, 0x0a, 0x4f, 0xe7, 0xd0, 0x9b, 0x90, 0x1e, 0x52, 0x53, 0xe8, 0x59,
0x80, 0x7f, 0x39, 0x5d, 0x2b, 0x50, 0xaf, 0xb2, 0x61, 0xd9, 0x64, 0x9b, 0x9a, 0x04, 0x73, 0x80, 0xa8, 0xdd, 0x60, 0x49, 0xc0, 0x3f, 0x9d, 0xad, 0x17, 0xa8, 0x57, 0xd9, 0xb4, 0x6c, 0xb2, 0x43,
0x7a, 0x08, 0x69, 0xb6, 0x55, 0xa0, 0x57, 0x20, 0x5d, 0x6b, 0xb5, 0x1b, 0xca, 0x5c, 0xe9, 0xda, 0x4d, 0x82, 0x39, 0x40, 0x3d, 0x82, 0x34, 0x0b, 0x15, 0xe8, 0x15, 0x48, 0xd7, 0x5a, 0xed, 0x86,
0xf1, 0x49, 0x79, 0x81, 0xbb, 0x84, 0x31, 0x58, 0xec, 0xa2, 0x35, 0xc8, 0x3e, 0xee, 0x6c, 0xed, 0x32, 0x57, 0x5a, 0x3e, 0x39, 0x2d, 0x2f, 0x70, 0x93, 0x30, 0x06, 0xf3, 0x5d, 0xb4, 0x0e, 0xd9,
0x6c, 0xb3, 0xf0, 0xba, 0x7e, 0x7c, 0x52, 0x5e, 0x0a, 0xd9, 0xc2, 0x69, 0xe8, 0x55, 0xc8, 0xf4, 0xc7, 0x9d, 0xed, 0xdd, 0x1d, 0xe6, 0x5e, 0x37, 0x4e, 0x4e, 0xcb, 0x4b, 0x21, 0x5b, 0x18, 0x0d,
0xb7, 0xbb, 0x1b, 0x3d, 0x25, 0x59, 0x42, 0xc7, 0x27, 0xe5, 0xc5, 0x90, 0xcf, 0x6d, 0x2e, 0x5d, 0xbd, 0x0a, 0x99, 0xfe, 0x4e, 0x77, 0xb3, 0xa7, 0x24, 0x4b, 0xe8, 0xe4, 0xb4, 0xbc, 0x18, 0xf2,
0x93, 0xb3, 0x9a, 0x0f, 0xe9, 0xea, 0x4f, 0x93, 0xb0, 0x80, 0x59, 0x25, 0xe1, 0xfa, 0x5d, 0x6a, 0xf9, 0x98, 0x4b, 0xcb, 0x72, 0x55, 0xf3, 0x21, 0x5d, 0xfd, 0x59, 0x12, 0x16, 0x30, 0xab, 0x24,
0x5b, 0xc6, 0x04, 0x75, 0x21, 0x6f, 0x50, 0xc7, 0xb4, 0x22, 0x6b, 0x6a, 0xfd, 0x82, 0x53, 0x7f, 0x5c, 0xbf, 0x4b, 0x6d, 0xcb, 0x98, 0xa0, 0x2e, 0xe4, 0x0d, 0xea, 0x98, 0x56, 0x64, 0x4f, 0x6d,
0x2a, 0x15, 0xb4, 0xea, 0x81, 0x24, 0x9e, 0x2a, 0x41, 0xef, 0x41, 0xc6, 0x24, 0xb6, 0x3e, 0x91, 0x5c, 0x72, 0xea, 0x4f, 0xa5, 0x82, 0x56, 0x3d, 0x90, 0xc4, 0x53, 0x25, 0xe8, 0x3d, 0xc8, 0x98,
0xe9, 0xc7, 0xcd, 0x8a, 0xa8, 0x55, 0x2a, 0x41, 0xad, 0x52, 0x69, 0xc8, 0x5a, 0x05, 0x0b, 0x1c, 0xc4, 0xd6, 0x27, 0x32, 0xfd, 0xb8, 0x55, 0x11, 0xb5, 0x4a, 0x25, 0xa8, 0x55, 0x2a, 0x0d, 0x59,
0xcf, 0x93, 0xf5, 0xa7, 0x9a, 0xee, 0xfb, 0x64, 0x38, 0xf2, 0x45, 0xee, 0x91, 0xc6, 0x85, 0xa1, 0xab, 0x60, 0x81, 0xe3, 0x79, 0xb2, 0xfe, 0x54, 0xd3, 0x7d, 0x9f, 0x0c, 0x47, 0xbe, 0xc8, 0x3d,
0xfe, 0xb4, 0x2a, 0x49, 0xe8, 0x2e, 0x64, 0x8f, 0x2c, 0xc7, 0xa4, 0x47, 0x32, 0xbd, 0xb8, 0x44, 0xd2, 0xb8, 0x30, 0xd4, 0x9f, 0x56, 0x25, 0x09, 0xdd, 0x83, 0xec, 0xb1, 0xe5, 0x98, 0xf4, 0x58,
0xa9, 0x04, 0xaa, 0xc7, 0xec, 0xd4, 0x3d, 0x67, 0x26, 0xf3, 0x77, 0xbb, 0xd3, 0x6e, 0x06, 0xfe, 0xa6, 0x17, 0x57, 0x28, 0x95, 0x40, 0xf5, 0x84, 0x9d, 0xba, 0x17, 0x86, 0xc9, 0xec, 0xdd, 0xee,
0x96, 0xfc, 0x8e, 0xd3, 0xa6, 0x0e, 0x5b, 0x2b, 0xd0, 0x69, 0x6b, 0x1b, 0xd5, 0xd6, 0xd6, 0x0e, 0xb4, 0x9b, 0x81, 0xbd, 0x25, 0xbf, 0xe3, 0xb4, 0xa9, 0xc3, 0xf6, 0x0a, 0x74, 0xda, 0xda, 0x66,
0x66, 0x3e, 0x5f, 0x3e, 0x3e, 0x29, 0x2b, 0x21, 0x64, 0x43, 0xb7, 0x6c, 0x96, 0xef, 0xde, 0x84, 0xb5, 0xb5, 0xbd, 0x8b, 0x99, 0xcd, 0x57, 0x4e, 0x4e, 0xcb, 0x4a, 0x08, 0xd9, 0xd4, 0x2d, 0x9b,
0x54, 0xb5, 0xfd, 0x85, 0x92, 0x2c, 0x29, 0xc7, 0x27, 0xe5, 0x62, 0xc8, 0xae, 0x3a, 0x93, 0xe9, 0xe5, 0xbb, 0xb7, 0x20, 0x55, 0x6d, 0x7f, 0xa1, 0x24, 0x4b, 0xca, 0xc9, 0x69, 0xb9, 0x18, 0xb2,
0x32, 0x3a, 0xdf, 0xaf, 0xfa, 0xf7, 0x29, 0x28, 0xee, 0x8c, 0x4c, 0xdd, 0x27, 0x22, 0x26, 0x51, 0xab, 0xce, 0x64, 0xba, 0x8d, 0x2e, 0xf6, 0xab, 0xfe, 0x6d, 0x0a, 0x8a, 0xbb, 0x23, 0x53, 0xf7,
0x19, 0x0a, 0x23, 0xdd, 0xd5, 0x6d, 0x9b, 0xd8, 0x96, 0x37, 0x94, 0x55, 0x58, 0x94, 0x84, 0x3e, 0x89, 0xf0, 0x49, 0x54, 0x86, 0xc2, 0x48, 0x77, 0x75, 0xdb, 0x26, 0xb6, 0xe5, 0x0d, 0x65, 0x15,
0x7a, 0x51, 0x37, 0xd6, 0x72, 0x2c, 0xce, 0xfe, 0xe0, 0xdf, 0xd6, 0x12, 0x81, 0x43, 0x77, 0x60, 0x16, 0x25, 0xa1, 0x8f, 0x5e, 0xd4, 0x8c, 0xb5, 0x1c, 0xf3, 0xb3, 0xdf, 0xfd, 0x97, 0xf5, 0x44,
0x71, 0x4f, 0x58, 0xab, 0xe9, 0x06, 0x9f, 0xd8, 0x14, 0x9f, 0xd8, 0x4a, 0xdc, 0xc4, 0x46, 0xcd, 0x60, 0xd0, 0x5d, 0x58, 0xdc, 0x17, 0xa3, 0xd5, 0x74, 0x83, 0x2f, 0x6c, 0x8a, 0x2f, 0x6c, 0x25,
0xaa, 0xc8, 0x41, 0x56, 0xb9, 0x14, 0x5e, 0xd8, 0x8b, 0x36, 0xd1, 0x3d, 0x98, 0x1f, 0x52, 0xc7, 0x6e, 0x61, 0xa3, 0xc3, 0xaa, 0xc8, 0x49, 0x56, 0xb9, 0x14, 0x5e, 0xd8, 0x8f, 0x36, 0xd1, 0x7d,
0xf2, 0xa9, 0x7b, 0xf5, 0x2c, 0x04, 0x48, 0xf4, 0x0e, 0x5c, 0x63, 0x93, 0x1b, 0xd8, 0xc3, 0xd9, 0x98, 0x1f, 0x52, 0xc7, 0xf2, 0xa9, 0x7b, 0xfd, 0x2a, 0x04, 0x48, 0xf4, 0x0e, 0x2c, 0xb3, 0xc5,
0xfc, 0xc4, 0x4a, 0xe2, 0xa5, 0xa1, 0xfe, 0x54, 0x76, 0x88, 0x19, 0x19, 0xd5, 0x20, 0x43, 0x5d, 0x0d, 0xc6, 0xc3, 0xd9, 0xfc, 0xc4, 0x4a, 0xe2, 0xa5, 0xa1, 0xfe, 0x54, 0x76, 0x88, 0x19, 0x19,
0x96, 0x12, 0x65, 0xb9, 0xb9, 0xef, 0x5e, 0x69, 0xae, 0x68, 0x74, 0x98, 0x0c, 0x16, 0xa2, 0xea, 0xd5, 0x20, 0x43, 0x5d, 0x96, 0x12, 0x65, 0xf9, 0x70, 0xdf, 0xbd, 0x76, 0xb8, 0xa2, 0xd1, 0x61,
0x87, 0xb0, 0x30, 0x33, 0x08, 0x96, 0x09, 0x74, 0xab, 0x3b, 0xbd, 0xa6, 0x32, 0x87, 0x8a, 0x90, 0x32, 0x58, 0x88, 0xaa, 0x1f, 0xc2, 0xc2, 0xcc, 0x24, 0x58, 0x26, 0xd0, 0xad, 0xee, 0xf6, 0x9a,
0xab, 0x77, 0xda, 0xfd, 0x56, 0x7b, 0x87, 0xa5, 0x32, 0x45, 0xc8, 0xe1, 0xce, 0xd6, 0x56, 0xad, 0xca, 0x1c, 0x2a, 0x42, 0xae, 0xde, 0x69, 0xf7, 0x5b, 0xed, 0x5d, 0x96, 0xca, 0x14, 0x21, 0x87,
0x5a, 0x7f, 0xa4, 0x24, 0xd5, 0x0a, 0x14, 0x22, 0xda, 0xd0, 0x22, 0x40, 0xaf, 0xdf, 0xe9, 0x6a, 0x3b, 0xdb, 0xdb, 0xb5, 0x6a, 0xfd, 0x91, 0x92, 0x54, 0x2b, 0x50, 0x88, 0x68, 0x43, 0x8b, 0x00,
0x1b, 0x2d, 0xdc, 0xeb, 0x8b, 0x44, 0xa8, 0xd7, 0xaf, 0xe2, 0xbe, 0x24, 0x24, 0xd4, 0xff, 0x4a, 0xbd, 0x7e, 0xa7, 0xab, 0x6d, 0xb6, 0x70, 0xaf, 0x2f, 0x12, 0xa1, 0x5e, 0xbf, 0x8a, 0xfb, 0x92,
0x06, 0x33, 0x2a, 0x73, 0x9f, 0xda, 0x6c, 0xee, 0x73, 0x89, 0xf1, 0x32, 0xfb, 0x99, 0x36, 0xc2, 0x90, 0x50, 0xff, 0x23, 0x19, 0xac, 0xa8, 0xcc, 0x7d, 0x6a, 0xb3, 0xb9, 0xcf, 0x15, 0x83, 0x97,
0x1c, 0xe8, 0x23, 0x00, 0x1e, 0x38, 0xc4, 0xd4, 0x74, 0x5f, 0x4e, 0x7c, 0xe9, 0x39, 0x27, 0xf7, 0xd9, 0xcf, 0xb4, 0x11, 0xe6, 0x40, 0x1f, 0x01, 0x70, 0xc7, 0x21, 0xa6, 0xa6, 0xfb, 0x72, 0xe1,
0x83, 0xcb, 0x00, 0x9c, 0x97, 0xe8, 0xaa, 0x8f, 0x3e, 0x81, 0xa2, 0x41, 0x87, 0x23, 0x9b, 0x48, 0x4b, 0xcf, 0x19, 0xb9, 0x1f, 0x5c, 0x06, 0xe0, 0xbc, 0x44, 0x57, 0x7d, 0xf4, 0x03, 0x28, 0x1a,
0xe1, 0xd4, 0x95, 0xc2, 0x85, 0x10, 0x5f, 0xf5, 0xa3, 0xd9, 0x57, 0x7a, 0x36, 0x3f, 0xfc, 0x51, 0x74, 0x38, 0xb2, 0x89, 0x14, 0x4e, 0x5d, 0x2b, 0x5c, 0x08, 0xf1, 0x55, 0x3f, 0x9a, 0x7d, 0xa5,
0x22, 0xf0, 0x4c, 0x4c, 0xc2, 0x55, 0x84, 0xdc, 0x4e, 0xb7, 0x51, 0xed, 0xb7, 0xda, 0x0f, 0x95, 0x67, 0xf3, 0xc3, 0xdf, 0x48, 0x04, 0x96, 0x89, 0x49, 0xb8, 0x8a, 0x90, 0xdb, 0xed, 0x36, 0xaa,
0x04, 0x02, 0xc8, 0x72, 0x57, 0x37, 0x94, 0x24, 0x4b, 0x14, 0xeb, 0x9d, 0xed, 0xee, 0x56, 0x93, 0xfd, 0x56, 0xfb, 0xa1, 0x92, 0x40, 0x00, 0x59, 0x6e, 0xea, 0x86, 0x92, 0x64, 0x89, 0x62, 0xbd,
0xa7, 0x5c, 0x68, 0x19, 0x94, 0xc0, 0xd9, 0x1a, 0x77, 0x64, 0xb3, 0xa1, 0xa4, 0xd1, 0x75, 0x58, 0xb3, 0xd3, 0xdd, 0x6e, 0xf2, 0x94, 0x0b, 0xad, 0x80, 0x12, 0x18, 0x5b, 0xe3, 0x86, 0x6c, 0x36,
0x0a, 0xa9, 0x52, 0x32, 0x83, 0x6e, 0x00, 0x0a, 0x89, 0x53, 0x15, 0x59, 0xf5, 0x37, 0x61, 0xa9, 0x94, 0x34, 0xba, 0x01, 0x4b, 0x21, 0x55, 0x4a, 0x66, 0xd0, 0x4d, 0x40, 0x21, 0x71, 0xaa, 0x22,
0x4e, 0x1d, 0x5f, 0xb7, 0x9c, 0x30, 0x89, 0x5e, 0x67, 0x83, 0x96, 0x24, 0xcd, 0x32, 0xc5, 0x9e, 0xab, 0xfe, 0x2a, 0x2c, 0xd5, 0xa9, 0xe3, 0xeb, 0x96, 0x13, 0x26, 0xd1, 0x1b, 0x6c, 0xd2, 0x92,
0x5e, 0x5b, 0x3a, 0x3b, 0x5d, 0x2b, 0x84, 0xd0, 0x56, 0x83, 0x8d, 0x34, 0x68, 0x98, 0x6c, 0xfd, 0xa4, 0x59, 0xa6, 0x88, 0xe9, 0xb5, 0xa5, 0xf3, 0xb3, 0xf5, 0x42, 0x08, 0x6d, 0x35, 0xd8, 0x4c,
0x8e, 0x2c, 0x93, 0x3b, 0x37, 0x53, 0x9b, 0x3f, 0x3b, 0x5d, 0x4b, 0x75, 0x5b, 0x0d, 0xcc, 0x68, 0x83, 0x86, 0xc9, 0xf6, 0xef, 0xc8, 0x32, 0xb9, 0x71, 0x33, 0xb5, 0xf9, 0xf3, 0xb3, 0xf5, 0x54,
0xe8, 0x15, 0xc8, 0x93, 0xa7, 0x96, 0xaf, 0x19, 0x6c, 0x0f, 0x67, 0x0e, 0xcc, 0xe0, 0x1c, 0x23, 0xb7, 0xd5, 0xc0, 0x8c, 0x86, 0x5e, 0x81, 0x3c, 0x79, 0x6a, 0xf9, 0x9a, 0xc1, 0x62, 0x38, 0x33,
0xd4, 0xd9, 0x96, 0x5d, 0x03, 0xe8, 0x52, 0xd7, 0x97, 0x3d, 0xbf, 0x0f, 0x99, 0x11, 0x75, 0x79, 0x60, 0x06, 0xe7, 0x18, 0xa1, 0xce, 0x42, 0x76, 0x0d, 0xa0, 0x4b, 0x5d, 0x5f, 0xf6, 0xfc, 0x3e,
0x79, 0x7e, 0xe1, 0x65, 0x04, 0x83, 0x8b, 0x40, 0xc5, 0x02, 0xac, 0xfe, 0x4d, 0x12, 0xa0, 0xaf, 0x64, 0x46, 0xd4, 0xe5, 0xe5, 0xf9, 0xa5, 0x97, 0x11, 0x0c, 0x2e, 0x1c, 0x15, 0x0b, 0xb0, 0xfa,
0x7b, 0x07, 0x52, 0xc9, 0x7d, 0xc8, 0x87, 0x17, 0x3b, 0xb2, 0xce, 0xbf, 0x74, 0xb6, 0x43, 0x30, 0x57, 0x49, 0x80, 0xbe, 0xee, 0x1d, 0x4a, 0x25, 0x0f, 0x20, 0x1f, 0x5e, 0xec, 0xc8, 0x3a, 0xff,
0xba, 0x17, 0x04, 0x9b, 0x28, 0x0f, 0x62, 0xeb, 0xb4, 0xa0, 0xa3, 0xb8, 0x0c, 0x7b, 0xb6, 0x06, 0xca, 0xd5, 0x0e, 0xc1, 0xe8, 0x7e, 0xe0, 0x6c, 0xa2, 0x3c, 0x88, 0xad, 0xd3, 0x82, 0x8e, 0xe2,
0x60, 0x47, 0x22, 0x71, 0x5d, 0x39, 0xf3, 0xec, 0x13, 0xd5, 0xf9, 0xb1, 0x20, 0x9c, 0x26, 0x13, 0x32, 0xec, 0xd9, 0x1a, 0x80, 0x1d, 0x89, 0xc4, 0x75, 0xe5, 0xca, 0xb3, 0x4f, 0x54, 0xe7, 0xc7,
0xcc, 0xd7, 0xe3, 0x3a, 0x39, 0x37, 0x23, 0x9b, 0x73, 0x78, 0x2a, 0x87, 0x3e, 0x83, 0x02, 0x1b, 0x82, 0x30, 0x9a, 0x4c, 0x30, 0x5f, 0x8f, 0xeb, 0xe4, 0xc2, 0x8a, 0x6c, 0xcd, 0xe1, 0xa9, 0x1c,
0xb7, 0xe6, 0x71, 0x9e, 0xcc, 0x2d, 0x2f, 0x74, 0x95, 0xd0, 0x80, 0x61, 0x14, 0x7e, 0xd7, 0x14, 0xfa, 0x0c, 0x0a, 0x6c, 0xde, 0x9a, 0xc7, 0x79, 0x32, 0xb7, 0xbc, 0xd4, 0x54, 0x42, 0x03, 0x86,
0x58, 0x74, 0xc7, 0x0e, 0x1b, 0xb6, 0xd4, 0xa1, 0xfe, 0x28, 0x09, 0x2f, 0xb7, 0x89, 0x7f, 0x44, 0x51, 0xf8, 0x5d, 0x53, 0x60, 0xd1, 0x1d, 0x3b, 0x6c, 0xda, 0x52, 0x87, 0xfa, 0x27, 0x49, 0x78,
0xdd, 0x83, 0xaa, 0xef, 0xeb, 0xc6, 0xfe, 0x90, 0x38, 0xd2, 0xc9, 0x91, 0xcc, 0x3a, 0x31, 0x93, 0xb9, 0x4d, 0xfc, 0x63, 0xea, 0x1e, 0x56, 0x7d, 0x5f, 0x37, 0x0e, 0x86, 0xc4, 0x91, 0x46, 0x8e,
0x59, 0xaf, 0xc0, 0xbc, 0x6e, 0x5b, 0xba, 0x47, 0x44, 0x3a, 0x92, 0xc7, 0x41, 0x93, 0xe5, 0xff, 0x64, 0xd6, 0x89, 0x99, 0xcc, 0x7a, 0x15, 0xe6, 0x75, 0xdb, 0xd2, 0x3d, 0x22, 0xd2, 0x91, 0x3c,
0xac, 0x9a, 0x20, 0x9e, 0x47, 0x44, 0x81, 0x9f, 0xc7, 0x53, 0x02, 0xfa, 0x25, 0x28, 0xc8, 0xc4, 0x0e, 0x9a, 0x2c, 0xff, 0x67, 0xd5, 0x04, 0xf1, 0x3c, 0x22, 0x0a, 0xfc, 0x3c, 0x9e, 0x12, 0xd0,
0x83, 0xb2, 0x63, 0x49, 0x5c, 0x3b, 0x3d, 0x88, 0xad, 0x69, 0xe2, 0x2d, 0x92, 0xe9, 0x48, 0x67, 0x8f, 0xe1, 0xa6, 0x4c, 0x3c, 0xf4, 0xb0, 0x2b, 0x96, 0xd9, 0x06, 0x37, 0x50, 0xcd, 0xd8, 0xf2,
0xe4, 0xcb, 0x94, 0x06, 0xcc, 0x90, 0x50, 0xfa, 0x04, 0x96, 0xce, 0xb1, 0xbf, 0xd5, 0xbd, 0xc0, 0x26, 0x7e, 0x70, 0x32, 0x33, 0x99, 0x92, 0x3b, 0x23, 0x5f, 0xe6, 0x39, 0x2b, 0x66, 0x0c, 0xab,
0x3f, 0x25, 0x01, 0x5a, 0xdd, 0xea, 0xb6, 0x1c, 0x7b, 0x03, 0xb2, 0x7b, 0xfa, 0xd0, 0xb2, 0x27, 0xf4, 0x10, 0x6e, 0x5d, 0x2a, 0xf2, 0xad, 0x2e, 0x10, 0xfe, 0x21, 0x09, 0xd0, 0xea, 0x56, 0x77,
0x97, 0x6d, 0x3f, 0x53, 0x7c, 0xa5, 0x2a, 0x46, 0xb9, 0xc1, 0x65, 0xb0, 0x94, 0xe5, 0x35, 0xcb, 0xa4, 0x91, 0x1a, 0x90, 0xdd, 0xd7, 0x87, 0x96, 0x3d, 0xb9, 0x2a, 0x4e, 0x4d, 0xf1, 0x95, 0xaa,
0x78, 0xd7, 0x21, 0x7e, 0x58, 0xb3, 0xf0, 0x16, 0x33, 0xc3, 0xd5, 0x9d, 0x30, 0x6e, 0x44, 0x83, 0x30, 0xc7, 0x26, 0x97, 0xc1, 0x52, 0x96, 0x17, 0x37, 0xe3, 0x3d, 0x87, 0xf8, 0x61, 0x71, 0xc3,
0xf9, 0x75, 0xa0, 0xfb, 0xe4, 0x48, 0x9f, 0x04, 0x7b, 0x86, 0x6c, 0xa2, 0x4d, 0x56, 0xcb, 0x78, 0x5b, 0x6c, 0x18, 0xae, 0xee, 0x84, 0x0e, 0x26, 0x1a, 0x6c, 0x01, 0x06, 0xba, 0x4f, 0x8e, 0xf5,
0xc4, 0x3d, 0x24, 0xe6, 0x4a, 0x86, 0xbb, 0xed, 0x2a, 0x7b, 0xb0, 0x84, 0x0b, 0x3f, 0x85, 0xd2, 0x49, 0x10, 0x5c, 0x64, 0x13, 0x6d, 0xb1, 0xa2, 0xc7, 0x23, 0xee, 0x11, 0x31, 0x57, 0x33, 0xdc,
0xa5, 0x07, 0x3c, 0x5f, 0x99, 0xb2, 0xbe, 0x95, 0x8f, 0xee, 0xc0, 0xc2, 0xcc, 0x38, 0x9f, 0x2b, 0xa8, 0xd7, 0x8d, 0x07, 0x4b, 0xb8, 0xb0, 0x5d, 0x28, 0x5d, 0xfa, 0x84, 0x27, 0x36, 0x53, 0xd6,
0x16, 0x5b, 0xdd, 0xc7, 0xef, 0x2b, 0x69, 0xf9, 0xf5, 0xa1, 0x92, 0x55, 0xff, 0x34, 0x25, 0x56, 0xb7, 0xb2, 0xd1, 0x5d, 0x58, 0x98, 0x99, 0xe7, 0x73, 0x55, 0x65, 0xab, 0xfb, 0xf8, 0x7d, 0x25,
0xb9, 0xf4, 0x6a, 0xfc, 0x6d, 0x66, 0x8e, 0xaf, 0x4d, 0x83, 0xda, 0x72, 0xf5, 0xbd, 0x79, 0xf9, 0x2d, 0xbf, 0x3e, 0x54, 0xb2, 0xea, 0x1f, 0xa5, 0x44, 0x38, 0x90, 0x56, 0x8d, 0xbf, 0xf6, 0xcc,
0xe2, 0x67, 0xc5, 0x07, 0x87, 0xe3, 0x50, 0x10, 0xad, 0x41, 0x41, 0x04, 0xa7, 0xc6, 0xa2, 0x9d, 0xf1, 0x4d, 0x6c, 0x50, 0x5b, 0x6e, 0xd3, 0x37, 0xaf, 0x8e, 0x12, 0xac, 0x4a, 0xe1, 0x70, 0x1c,
0xbb, 0x75, 0x01, 0x83, 0x20, 0x31, 0x49, 0x74, 0x1b, 0x16, 0xf9, 0xe5, 0x82, 0xb7, 0x4f, 0x4c, 0x0a, 0xa2, 0x75, 0x28, 0x08, 0x2f, 0xd6, 0xd8, 0xb6, 0xe0, 0x66, 0x5d, 0xc0, 0x20, 0x48, 0x4c,
0x81, 0x49, 0x73, 0xcc, 0x42, 0x48, 0xe5, 0xb0, 0x6d, 0x28, 0x4a, 0x82, 0xc6, 0x13, 0xcf, 0x0c, 0x12, 0xdd, 0x81, 0x45, 0x7e, 0x0b, 0xe1, 0x1d, 0x10, 0x53, 0x60, 0xd2, 0x1c, 0xb3, 0x10, 0x52,
0x37, 0xe8, 0x9d, 0xab, 0x0c, 0x12, 0x22, 0x3c, 0x1f, 0x2d, 0x8c, 0xa6, 0x0d, 0xb5, 0x01, 0xb9, 0x39, 0x6c, 0x07, 0x8a, 0x92, 0xa0, 0xf1, 0x0c, 0x35, 0xc3, 0x07, 0xf4, 0xce, 0x75, 0x03, 0x12,
0xc0, 0x58, 0xb4, 0x02, 0xa9, 0x7e, 0xbd, 0xab, 0xcc, 0x95, 0x96, 0x8e, 0x4f, 0xca, 0x85, 0x80, 0x22, 0x3c, 0x71, 0x2d, 0x8c, 0xa6, 0x0d, 0xb5, 0x01, 0xb9, 0x60, 0xb0, 0x68, 0x15, 0x52, 0xfd,
0xdc, 0xaf, 0x77, 0x19, 0x67, 0xa7, 0xd1, 0x55, 0x12, 0xb3, 0x9c, 0x9d, 0x46, 0xb7, 0x94, 0x66, 0x7a, 0x57, 0x99, 0x2b, 0x2d, 0x9d, 0x9c, 0x96, 0x0b, 0x01, 0xb9, 0x5f, 0xef, 0x32, 0xce, 0x6e,
0x09, 0x90, 0xba, 0x07, 0x85, 0x48, 0x0f, 0xe8, 0x75, 0x98, 0x6f, 0xb5, 0x1f, 0xe2, 0x66, 0xaf, 0xa3, 0xab, 0x24, 0x66, 0x39, 0xbb, 0x8d, 0x6e, 0x29, 0xcd, 0x32, 0x25, 0x75, 0x1f, 0x0a, 0x91,
0xa7, 0xcc, 0x95, 0x6e, 0x1c, 0x9f, 0x94, 0x51, 0x84, 0xdb, 0x72, 0x06, 0x6c, 0x7e, 0xd0, 0xab, 0x1e, 0xd0, 0xeb, 0x30, 0xdf, 0x6a, 0x3f, 0xc4, 0xcd, 0x5e, 0x4f, 0x99, 0x2b, 0xdd, 0x3c, 0x39,
0x90, 0xde, 0xec, 0xb0, 0x83, 0x55, 0x64, 0xba, 0x11, 0xc4, 0x26, 0xf5, 0xfc, 0xd2, 0x75, 0x99, 0x2d, 0xa3, 0x08, 0xb7, 0xe5, 0x0c, 0xd8, 0xfa, 0xa0, 0x57, 0x21, 0xbd, 0xd5, 0x61, 0x27, 0xb0,
0x59, 0x45, 0x15, 0xab, 0x7f, 0x98, 0x80, 0xac, 0x58, 0x42, 0xb1, 0x13, 0x55, 0x85, 0xf9, 0xa0, 0x48, 0x89, 0x23, 0x88, 0x2d, 0xea, 0xf9, 0xa5, 0x1b, 0x32, 0x05, 0x8b, 0x2a, 0x56, 0x7f, 0x2f,
0x0c, 0x15, 0x55, 0xc8, 0x9b, 0x17, 0x57, 0x0c, 0x15, 0x99, 0xe0, 0x8b, 0xf0, 0x0b, 0xe4, 0x4a, 0x01, 0x59, 0xb1, 0x99, 0x62, 0x17, 0xaa, 0x0a, 0xf3, 0x41, 0xbd, 0x2a, 0xca, 0x95, 0x37, 0x2f,
0x1f, 0x43, 0x31, 0xca, 0xf8, 0x56, 0xc1, 0xf7, 0xeb, 0x50, 0x60, 0xf1, 0x1d, 0x54, 0x0e, 0xeb, 0x2f, 0x2d, 0x2a, 0xb2, 0x12, 0x10, 0xee, 0x17, 0xc8, 0x95, 0x3e, 0x86, 0x62, 0x94, 0xf1, 0xad,
0x90, 0x15, 0x8b, 0x3f, 0xdc, 0xe8, 0x2f, 0x2e, 0x5f, 0x24, 0x12, 0xdd, 0x87, 0x79, 0x51, 0xf2, 0x9c, 0xef, 0xc7, 0x50, 0x60, 0xfe, 0x1d, 0x94, 0x18, 0x1b, 0x90, 0x15, 0x01, 0x21, 0x3c, 0x11,
0x04, 0xb7, 0x8f, 0xab, 0x97, 0xaf, 0x22, 0x1c, 0xc0, 0xd5, 0xcf, 0x20, 0xdd, 0x25, 0xc4, 0x65, 0x2e, 0xaf, 0x73, 0x24, 0x12, 0x3d, 0x80, 0x79, 0x51, 0x1b, 0x05, 0xd7, 0x94, 0x6b, 0x57, 0xef,
0xbe, 0x77, 0xa8, 0x49, 0xa6, 0x67, 0xa3, 0xac, 0xd6, 0x4c, 0xd2, 0x6a, 0xb0, 0x6a, 0xcd, 0x24, 0x22, 0x1c, 0xc0, 0xd5, 0xcf, 0x20, 0xdd, 0x25, 0xc4, 0x65, 0xb6, 0x77, 0xa8, 0x49, 0xa6, 0x87,
0x2d, 0x33, 0xbc, 0x5f, 0x49, 0x46, 0xee, 0x57, 0xfa, 0x50, 0x7c, 0x42, 0xac, 0xc1, 0xbe, 0x4f, 0xa8, 0x2c, 0xeb, 0x4c, 0xd2, 0x6a, 0xb0, 0xb2, 0xce, 0x24, 0x2d, 0x33, 0xbc, 0x88, 0x49, 0x46,
0x4c, 0xae, 0xe8, 0x5d, 0x48, 0x8f, 0x48, 0x68, 0xfc, 0x4a, 0x6c, 0x80, 0x11, 0xe2, 0x62, 0x8e, 0x2e, 0x62, 0xfa, 0x50, 0x7c, 0x42, 0xac, 0xc1, 0x81, 0x4f, 0x4c, 0xae, 0xe8, 0x5d, 0x48, 0x8f,
0x62, 0xfb, 0xc8, 0x11, 0x97, 0x96, 0x77, 0xde, 0xb2, 0xa5, 0xfe, 0x63, 0x12, 0x16, 0x5b, 0x9e, 0x48, 0x38, 0xf8, 0xd5, 0x58, 0x07, 0x23, 0xc4, 0xc5, 0x1c, 0xc5, 0xe2, 0xc8, 0x31, 0x97, 0x96,
0x37, 0xd6, 0x1d, 0x23, 0x48, 0x9b, 0x3e, 0x9d, 0x4d, 0x9b, 0xde, 0x8a, 0x1d, 0xe1, 0x8c, 0xc8, 0x97, 0xe3, 0xb2, 0xa5, 0xfe, 0x7d, 0x12, 0x16, 0x5b, 0x9e, 0x37, 0xd6, 0x1d, 0x23, 0xc8, 0xaf,
0xec, 0xb5, 0x91, 0x3c, 0xba, 0x92, 0xe1, 0xd1, 0xa5, 0xfe, 0x67, 0x22, 0xb8, 0x1b, 0xba, 0x1d, 0x3e, 0x9d, 0xcd, 0xaf, 0xde, 0x8a, 0x9d, 0xe1, 0x8c, 0xc8, 0xec, 0xfd, 0x92, 0x3c, 0xe3, 0x92,
0x59, 0xee, 0xa5, 0x95, 0xe3, 0x93, 0xf2, 0x72, 0x54, 0x13, 0xd9, 0x71, 0x0e, 0x1c, 0x7a, 0xe4, 0xe1, 0x19, 0xa7, 0xfe, 0x7b, 0x22, 0xb8, 0x44, 0xba, 0x13, 0xd9, 0xee, 0xa5, 0xd5, 0x93, 0xd3,
0xa0, 0xd7, 0x20, 0x83, 0x9b, 0xed, 0xe6, 0x13, 0x25, 0x21, 0xc2, 0x73, 0x06, 0x84, 0x89, 0x43, 0xf2, 0x4a, 0x54, 0x13, 0xd9, 0x75, 0x0e, 0x1d, 0x7a, 0xec, 0xa0, 0xd7, 0x20, 0x83, 0x9b, 0xed,
0x8e, 0x98, 0xa6, 0x6e, 0xb3, 0xdd, 0x60, 0x69, 0x4e, 0x32, 0x46, 0x53, 0x97, 0x38, 0xa6, 0xe5, 0xe6, 0x13, 0x25, 0x21, 0xdc, 0x73, 0x06, 0x84, 0x89, 0x43, 0x8e, 0x99, 0xa6, 0x6e, 0xb3, 0xdd,
0x0c, 0xd0, 0xeb, 0x90, 0x6d, 0xf5, 0x7a, 0x3b, 0xbc, 0x7a, 0x7f, 0xf9, 0xf8, 0xa4, 0x7c, 0x7d, 0x60, 0xf9, 0x50, 0x32, 0x46, 0x53, 0x97, 0x38, 0xa6, 0xe5, 0x0c, 0xd0, 0xeb, 0x90, 0x6d, 0xf5,
0x06, 0xc5, 0xef, 0x05, 0x4d, 0x06, 0x62, 0x35, 0x06, 0x4b, 0x80, 0x62, 0x40, 0x2c, 0x79, 0x15, 0x7a, 0xbb, 0xbc, 0xcc, 0x7f, 0xf9, 0xe4, 0xb4, 0x7c, 0x63, 0x06, 0xc5, 0x2f, 0x10, 0x4d, 0x06,
0x20, 0xdc, 0xe9, 0x57, 0xfb, 0xac, 0x70, 0x7f, 0x1e, 0x84, 0x29, 0xfb, 0x2b, 0x97, 0xdb, 0xbf, 0x62, 0xc5, 0x08, 0xcb, 0x94, 0x62, 0x40, 0x2c, 0xcb, 0x15, 0x20, 0xdc, 0xe9, 0x57, 0xfb, 0xac,
0x26, 0x41, 0xa9, 0x1a, 0x06, 0x19, 0xf9, 0x8c, 0x2f, 0xcb, 0xba, 0x3e, 0xe4, 0x46, 0xec, 0xcb, 0xc2, 0x7f, 0x1e, 0x84, 0x29, 0xfb, 0x2b, 0xb7, 0xdb, 0x3f, 0x27, 0x41, 0xa9, 0x1a, 0x06, 0x19,
0x22, 0x41, 0x8a, 0x72, 0x3f, 0xf6, 0xd5, 0xe5, 0x9c, 0x5c, 0x05, 0x53, 0x9b, 0x54, 0xcd, 0xa1, 0xf9, 0x8c, 0x2f, 0xeb, 0xbf, 0x3e, 0xe4, 0x46, 0xec, 0xcb, 0x22, 0x41, 0x2e, 0xf3, 0x20, 0xf6,
0xe5, 0x79, 0x16, 0x75, 0x04, 0x0d, 0x87, 0x9a, 0x4a, 0xff, 0x9d, 0x80, 0xeb, 0x31, 0x08, 0x74, 0x79, 0xe6, 0x82, 0x5c, 0x05, 0x53, 0x9b, 0x54, 0xcd, 0xa1, 0xe5, 0x79, 0x16, 0x75, 0x04, 0x0d,
0x07, 0xd2, 0x2e, 0xb5, 0x83, 0x39, 0xbc, 0x75, 0xd1, 0xb5, 0x1f, 0x13, 0xc5, 0x1c, 0x89, 0x56, 0x87, 0x9a, 0x4a, 0xff, 0x99, 0x80, 0x1b, 0x31, 0x08, 0x74, 0x17, 0xd2, 0x2e, 0xb5, 0x83, 0x35,
0x01, 0xf4, 0xb1, 0x4f, 0x75, 0xde, 0x3f, 0x9f, 0xbd, 0x1c, 0x8e, 0x50, 0xd0, 0x13, 0xc8, 0x7a, 0xbc, 0x7d, 0xd9, 0xfd, 0x20, 0x13, 0xc5, 0x1c, 0x89, 0xd6, 0x00, 0xf4, 0xb1, 0x4f, 0x75, 0xde,
0xc4, 0x70, 0x49, 0x90, 0xc8, 0x7e, 0xf6, 0xb3, 0x5a, 0x5f, 0xe9, 0x71, 0x35, 0x58, 0xaa, 0x2b, 0x3f, 0x5f, 0xbd, 0x1c, 0x8e, 0x50, 0xd0, 0x13, 0xc8, 0x7a, 0xc4, 0x70, 0x49, 0x90, 0xf1, 0x7e,
0x55, 0x20, 0x2b, 0x28, 0x2c, 0xec, 0x4d, 0xdd, 0xd7, 0xe5, 0xa5, 0x30, 0xff, 0x66, 0xd1, 0xa4, 0xf6, 0x7f, 0x1d, 0x7d, 0xa5, 0xc7, 0xd5, 0x60, 0xa9, 0xae, 0x54, 0x81, 0xac, 0xa0, 0x30, 0xb7,
0xdb, 0x83, 0x20, 0x9a, 0x74, 0x7b, 0xa0, 0xfe, 0x5d, 0x12, 0xa0, 0xf9, 0xd4, 0x27, 0xae, 0xa3, 0x37, 0x75, 0x5f, 0x97, 0xb7, 0xc7, 0xfc, 0x9b, 0x79, 0x93, 0x6e, 0x0f, 0x02, 0x6f, 0xd2, 0xed,
0xdb, 0xf5, 0x2a, 0x6a, 0x46, 0x76, 0x7f, 0x31, 0xda, 0xb7, 0x63, 0x6f, 0xba, 0x43, 0x89, 0x4a, 0x81, 0xfa, 0x37, 0x49, 0x80, 0xe6, 0x53, 0x9f, 0xb8, 0x8e, 0x6e, 0xd7, 0xab, 0xa8, 0x19, 0x89,
0xbd, 0x1a, 0xb3, 0xff, 0xdf, 0x84, 0xd4, 0xd8, 0x95, 0x0f, 0x69, 0x22, 0x09, 0xdd, 0xc1, 0x5b, 0xfe, 0x62, 0xb6, 0x6f, 0xc7, 0x5e, 0x89, 0x87, 0x12, 0x95, 0x7a, 0x35, 0x26, 0xfe, 0xdf, 0x82,
0x98, 0xd1, 0x50, 0x73, 0xba, 0x6d, 0xa5, 0x2e, 0x7e, 0x2e, 0x8b, 0x74, 0x10, 0xbb, 0x75, 0xb1, 0xd4, 0xd8, 0x95, 0x2f, 0x6e, 0x22, 0x5b, 0xdd, 0xc5, 0xdb, 0x98, 0xd1, 0x50, 0x73, 0x1a, 0xb6,
0x95, 0x6f, 0xe8, 0x9a, 0x41, 0xe4, 0xc9, 0x51, 0x14, 0x2b, 0xbf, 0x5e, 0xad, 0x13, 0xd7, 0xc7, 0x52, 0x97, 0xbf, 0xab, 0x45, 0x3a, 0x88, 0x0d, 0x5d, 0x6c, 0xe7, 0x1b, 0xba, 0x66, 0x10, 0x79,
0x59, 0x43, 0x67, 0xff, 0xbf, 0xd3, 0xfe, 0xf6, 0x2e, 0xc0, 0x74, 0x68, 0x68, 0x15, 0x32, 0xf5, 0x72, 0x14, 0xc5, 0xce, 0xaf, 0x57, 0xeb, 0xc4, 0xf5, 0x71, 0xd6, 0xd0, 0xd9, 0xff, 0xef, 0x14,
0x8d, 0x5e, 0x6f, 0x4b, 0x99, 0x13, 0x1b, 0xf8, 0x94, 0xc5, 0xc9, 0xea, 0x5f, 0x25, 0x21, 0x57, 0xdf, 0xde, 0x05, 0x98, 0x4e, 0x0d, 0xad, 0x41, 0xa6, 0xbe, 0xd9, 0xeb, 0x6d, 0x2b, 0x73, 0x22,
0xaf, 0xca, 0x63, 0xb5, 0x0e, 0x0a, 0xdf, 0x95, 0xf8, 0x55, 0x3a, 0x79, 0x3a, 0xb2, 0xdc, 0x89, 0x80, 0x4f, 0x59, 0x9c, 0xac, 0xfe, 0x45, 0x12, 0x72, 0xf5, 0xaa, 0x3c, 0x56, 0xeb, 0xa0, 0xf0,
0xdc, 0x58, 0x2e, 0xa9, 0x28, 0x17, 0x99, 0x08, 0xb3, 0xba, 0xc9, 0x05, 0x10, 0x86, 0x22, 0x91, 0xa8, 0xc4, 0xef, 0xdc, 0xc9, 0xd3, 0x91, 0xe5, 0x4e, 0x64, 0x60, 0xb9, 0xa2, 0xf4, 0x5c, 0x64,
0x4e, 0xd0, 0x0c, 0x3d, 0xd8, 0xe3, 0x57, 0x2f, 0x77, 0x96, 0xa8, 0x0d, 0xa6, 0x6d, 0x0f, 0x17, 0x22, 0x6c, 0xd4, 0x4d, 0x2e, 0x80, 0x30, 0x14, 0x89, 0x34, 0x82, 0x66, 0xe8, 0x41, 0x8c, 0x5f,
0x02, 0x25, 0x75, 0xdd, 0x43, 0x1f, 0xc1, 0x92, 0x67, 0x0d, 0x1c, 0xcb, 0x19, 0x68, 0x81, 0xf3, 0xbb, 0xda, 0x58, 0xa2, 0x88, 0x98, 0xb6, 0x3d, 0x5c, 0x08, 0x94, 0xd4, 0x75, 0x0f, 0x7d, 0x04,
0xf8, 0xbd, 0x7e, 0xed, 0xda, 0xd9, 0xe9, 0xda, 0x42, 0x4f, 0xb0, 0xa4, 0x0f, 0x17, 0x24, 0xb2, 0x4b, 0x9e, 0x35, 0x70, 0x2c, 0x67, 0xa0, 0x05, 0xc6, 0xe3, 0x0f, 0x00, 0xb5, 0xe5, 0xf3, 0xb3,
0xce, 0x5d, 0x89, 0x3e, 0x84, 0xc5, 0x88, 0x28, 0xf3, 0xa2, 0x70, 0xbb, 0x72, 0x76, 0xba, 0x56, 0xf5, 0x85, 0x9e, 0x60, 0x49, 0x1b, 0x2e, 0x48, 0x64, 0x9d, 0x9b, 0x12, 0x7d, 0x08, 0x8b, 0x11,
0x0c, 0x25, 0x1f, 0x91, 0x09, 0x2e, 0x86, 0x82, 0x8f, 0x08, 0xbf, 0xfc, 0xd8, 0xa3, 0xae, 0x41, 0x51, 0x66, 0x45, 0x61, 0x76, 0xe5, 0xfc, 0x6c, 0xbd, 0x18, 0x4a, 0x3e, 0x22, 0x13, 0x5c, 0x0c,
0x34, 0x97, 0xaf, 0x69, 0x7e, 0x82, 0xa7, 0x71, 0x81, 0xd3, 0xc4, 0x32, 0x57, 0x1f, 0xc3, 0xf5, 0x05, 0x1f, 0x11, 0x7e, 0x4b, 0xb2, 0x4f, 0x5d, 0x83, 0x68, 0x2e, 0xdf, 0xd3, 0xfc, 0x04, 0x4f,
0x8e, 0x6b, 0xec, 0x13, 0xcf, 0x17, 0xae, 0x90, 0x5e, 0xfc, 0x0c, 0x6e, 0xf9, 0xba, 0x77, 0xa0, 0xe3, 0x02, 0xa7, 0x89, 0x6d, 0xae, 0x3e, 0x86, 0x1b, 0x1d, 0xd7, 0x38, 0x20, 0x9e, 0x2f, 0x4c,
0xed, 0x5b, 0x9e, 0x4f, 0xdd, 0x89, 0xe6, 0x12, 0x9f, 0x38, 0x8c, 0xaf, 0xf1, 0xc7, 0x40, 0x79, 0x21, 0xad, 0xf8, 0x19, 0xdc, 0xf6, 0x75, 0xef, 0x50, 0x3b, 0xb0, 0x3c, 0x9f, 0xba, 0x13, 0xcd,
0x3b, 0x75, 0x93, 0x61, 0x36, 0x05, 0x04, 0x07, 0x88, 0x2d, 0x06, 0x50, 0x5b, 0x50, 0x64, 0x35, 0x25, 0x3e, 0x71, 0x18, 0x5f, 0xe3, 0xaf, 0x86, 0xf2, 0x1a, 0xeb, 0x16, 0xc3, 0x6c, 0x09, 0x08,
0x42, 0x83, 0xec, 0xe9, 0x63, 0xdb, 0x67, 0xa3, 0x07, 0x9b, 0x0e, 0xb4, 0x17, 0x3e, 0xa6, 0xf2, 0x0e, 0x10, 0xdb, 0x0c, 0xa0, 0xb6, 0xa0, 0xc8, 0x8a, 0x89, 0x06, 0xd9, 0xd7, 0xc7, 0xb6, 0xcf,
0x36, 0x1d, 0x88, 0x4f, 0xf5, 0x87, 0xa0, 0x34, 0x2c, 0x6f, 0xa4, 0xfb, 0xc6, 0x7e, 0x70, 0xed, 0x66, 0x0f, 0x36, 0x1d, 0x68, 0x2f, 0x7c, 0x4c, 0xe5, 0x6d, 0x3a, 0x10, 0x9f, 0xea, 0x8f, 0x40,
0x86, 0x1a, 0xa0, 0xec, 0x13, 0xdd, 0xf5, 0x77, 0x89, 0xee, 0x6b, 0x23, 0xe2, 0x5a, 0xd4, 0xbc, 0x69, 0x58, 0xde, 0x48, 0xf7, 0x8d, 0x83, 0xe0, 0x7e, 0x0e, 0x35, 0x40, 0x39, 0x20, 0xba, 0xeb,
0x7a, 0x96, 0x97, 0x42, 0x91, 0x2e, 0x97, 0x50, 0xff, 0x27, 0x01, 0x80, 0xf5, 0xbd, 0x20, 0x23, 0xef, 0x11, 0xdd, 0xd7, 0x46, 0xc4, 0xb5, 0xa8, 0x79, 0xfd, 0x2a, 0x2f, 0x85, 0x22, 0x5d, 0x2e,
0xfb, 0x3e, 0x5c, 0xf3, 0x1c, 0x7d, 0xe4, 0xed, 0x53, 0x5f, 0xb3, 0x1c, 0x9f, 0xb8, 0x87, 0xba, 0xa1, 0xfe, 0x57, 0x02, 0x00, 0xeb, 0xfb, 0x41, 0x46, 0xf6, 0x7d, 0x58, 0xf6, 0x1c, 0x7d, 0xe4,
0x2d, 0x6f, 0x4f, 0x94, 0x80, 0xd1, 0x92, 0x74, 0xf4, 0x2e, 0xa0, 0x03, 0x42, 0x46, 0x1a, 0xb5, 0x1d, 0x50, 0x5f, 0xb3, 0x1c, 0x9f, 0xb8, 0x47, 0xba, 0x2d, 0xaf, 0x59, 0x94, 0x80, 0xd1, 0x92,
0x4d, 0x2d, 0x60, 0x8a, 0xa7, 0xca, 0x34, 0x56, 0x18, 0xa7, 0x63, 0x9b, 0xbd, 0x80, 0x8e, 0x6a, 0x74, 0xf4, 0x2e, 0xa0, 0x43, 0x42, 0x46, 0x1a, 0xb5, 0x4d, 0x2d, 0x60, 0x8a, 0x37, 0xcd, 0x34,
0xb0, 0xca, 0x86, 0x4f, 0x1c, 0xdf, 0xb5, 0x88, 0xa7, 0xed, 0x51, 0x57, 0xf3, 0x6c, 0x7a, 0xa4, 0x56, 0x18, 0xa7, 0x63, 0x9b, 0xbd, 0x80, 0x8e, 0x6a, 0xb0, 0xc6, 0xa6, 0x4f, 0x1c, 0xdf, 0xb5,
0xed, 0x51, 0xdb, 0xa6, 0x47, 0xc4, 0x0d, 0x2e, 0xa6, 0x4a, 0x36, 0x1d, 0x34, 0x05, 0x68, 0x83, 0x88, 0xa7, 0xed, 0x53, 0x57, 0xf3, 0x6c, 0x7a, 0xac, 0xed, 0x53, 0xdb, 0xa6, 0xc7, 0xc4, 0x0d,
0xba, 0x3d, 0x9b, 0x1e, 0x6d, 0x04, 0x08, 0x96, 0xb6, 0x4d, 0xc7, 0xec, 0x5b, 0xc6, 0x41, 0x90, 0x6e, 0xb0, 0x4a, 0x36, 0x1d, 0x34, 0x05, 0x68, 0x93, 0xba, 0x3d, 0x9b, 0x1e, 0x6f, 0x06, 0x08,
0xb6, 0x85, 0xd4, 0xbe, 0x65, 0x1c, 0xa0, 0xd7, 0x61, 0x81, 0xd8, 0x84, 0xdf, 0x4f, 0x08, 0x54, 0x96, 0xb6, 0x4d, 0xe7, 0xec, 0x5b, 0xc6, 0x61, 0x90, 0xb6, 0x85, 0xd4, 0xbe, 0x65, 0x1c, 0xa2,
0x86, 0xa3, 0x8a, 0x01, 0x91, 0x81, 0xd4, 0xcf, 0x41, 0x69, 0x3a, 0x86, 0x3b, 0x19, 0x45, 0xe6, 0xd7, 0x61, 0x81, 0xd8, 0x84, 0x5f, 0x64, 0x08, 0x54, 0x86, 0xa3, 0x8a, 0x01, 0x91, 0x81, 0xd4,
0xfc, 0x5d, 0x40, 0x6c, 0x93, 0xd4, 0x6c, 0x6a, 0x1c, 0x68, 0x43, 0xdd, 0xd1, 0x07, 0xcc, 0x2e, 0xcf, 0x41, 0x69, 0x3a, 0x86, 0x3b, 0x19, 0x45, 0xd6, 0xfc, 0x5d, 0x40, 0x2c, 0x48, 0x6a, 0x36,
0xf1, 0x82, 0xa4, 0x30, 0xce, 0x16, 0x35, 0x0e, 0xb6, 0x25, 0x5d, 0xfd, 0x08, 0xa0, 0x37, 0x72, 0x35, 0x0e, 0xb5, 0xa1, 0xee, 0xe8, 0x03, 0x36, 0x2e, 0xf1, 0xd4, 0xa4, 0x30, 0xce, 0x36, 0x35,
0x89, 0x6e, 0x76, 0x58, 0x36, 0xc1, 0x5c, 0xc7, 0x5b, 0x9a, 0x29, 0x5f, 0xe0, 0xa8, 0x2b, 0x97, 0x0e, 0x77, 0x24, 0x5d, 0xfd, 0x08, 0xa0, 0x37, 0x72, 0x89, 0x6e, 0x76, 0x58, 0x36, 0xc1, 0x4c,
0xba, 0x22, 0x18, 0x8d, 0x90, 0xae, 0xfe, 0x32, 0x5c, 0xef, 0xda, 0xba, 0xc1, 0x5f, 0xa3, 0xbb, 0xc7, 0x5b, 0x9a, 0x29, 0x9f, 0xea, 0xa8, 0x2b, 0xb7, 0xba, 0x22, 0x18, 0x8d, 0x90, 0xae, 0xfe,
0xe1, 0x93, 0x08, 0xba, 0x0f, 0x59, 0x01, 0x95, 0x33, 0x19, 0xbb, 0xdc, 0xa6, 0x7d, 0x6e, 0xce, 0x02, 0xdc, 0xe8, 0xda, 0xba, 0xc1, 0x9f, 0xad, 0xbb, 0xe1, 0xdb, 0x09, 0x7a, 0x00, 0x59, 0x01,
0x61, 0x89, 0xaf, 0x15, 0x01, 0xa6, 0x7a, 0xd4, 0xbf, 0x48, 0x40, 0x3e, 0xd4, 0x8f, 0xca, 0xc0, 0x95, 0x2b, 0x19, 0xbb, 0xdd, 0xa6, 0x7d, 0x6e, 0xcd, 0x61, 0x89, 0xaf, 0x15, 0x01, 0xa6, 0x7a,
0x2a, 0x74, 0x16, 0xde, 0x96, 0x23, 0x4b, 0xea, 0x3c, 0x8e, 0x92, 0x50, 0x0b, 0x0a, 0xa3, 0x50, 0xd4, 0x3f, 0x4b, 0x40, 0x3e, 0xd4, 0x8f, 0xca, 0xc0, 0x4a, 0x79, 0xe6, 0xde, 0x96, 0x23, 0x6b,
0xfa, 0xd2, 0x7c, 0x2e, 0xc6, 0x6a, 0x1c, 0x95, 0x45, 0x1f, 0x43, 0x3e, 0x78, 0xf2, 0x0c, 0x76, 0xef, 0x3c, 0x8e, 0x92, 0x50, 0x0b, 0x0a, 0xa3, 0x50, 0xfa, 0xca, 0x7c, 0x2e, 0x66, 0xd4, 0x38,
0xd8, 0xcb, 0x5f, 0x48, 0xa7, 0x70, 0xf5, 0x53, 0x80, 0x1f, 0x50, 0xcb, 0xe9, 0xd3, 0x03, 0xe2, 0x2a, 0x8b, 0x3e, 0x86, 0x7c, 0xf0, 0x36, 0x1a, 0x44, 0xd8, 0xab, 0x9f, 0x52, 0xa7, 0x70, 0xf5,
0xf0, 0x27, 0x3c, 0x56, 0xf5, 0x91, 0xc0, 0x8b, 0xb2, 0xc5, 0xeb, 0x6c, 0x31, 0x05, 0xe1, 0x4b, 0x53, 0x80, 0x1f, 0x52, 0xcb, 0xe9, 0xd3, 0x43, 0xe2, 0xf0, 0xb7, 0x3e, 0x56, 0x13, 0x92, 0xc0,
0x96, 0x68, 0xaa, 0x7f, 0x9b, 0x84, 0x2c, 0xa6, 0xd4, 0xaf, 0x57, 0x51, 0x19, 0xb2, 0x72, 0x9f, 0x8a, 0xb2, 0xc5, 0x0b, 0x72, 0xb1, 0x04, 0xe1, 0x93, 0x97, 0x68, 0xaa, 0x7f, 0x9d, 0x84, 0x2c,
0xe0, 0xe7, 0x4f, 0x2d, 0x7f, 0x76, 0xba, 0x96, 0x11, 0x1b, 0x44, 0xc6, 0xe0, 0x3b, 0x43, 0x64, 0xa6, 0xd4, 0xaf, 0x57, 0x51, 0x19, 0xb2, 0x32, 0x4e, 0xf0, 0xf3, 0xa7, 0x96, 0x3f, 0x3f, 0x5b,
0x07, 0x4f, 0x5e, 0xb4, 0x83, 0xa3, 0x3b, 0x50, 0x94, 0x20, 0x6d, 0x5f, 0xf7, 0xf6, 0x45, 0x81, 0xcf, 0x88, 0x00, 0x91, 0x31, 0x78, 0x64, 0x88, 0x44, 0xf0, 0xe4, 0x65, 0x11, 0x1c, 0xdd, 0x85,
0x56, 0x5b, 0x3c, 0x3b, 0x5d, 0x03, 0x81, 0xdc, 0xd4, 0xbd, 0x7d, 0x0c, 0x02, 0xcd, 0xbe, 0x51, 0xa2, 0x04, 0x69, 0x07, 0xba, 0x77, 0x20, 0x0a, 0xb4, 0xda, 0xe2, 0xf9, 0xd9, 0x3a, 0x08, 0xe4,
0x13, 0x0a, 0x5f, 0x52, 0xcb, 0xd1, 0x7c, 0x3e, 0x08, 0x79, 0x93, 0x17, 0x3b, 0x8f, 0xd3, 0xa1, 0x96, 0xee, 0x1d, 0x60, 0x10, 0x68, 0xf6, 0x8d, 0x9a, 0x50, 0xf8, 0x92, 0x5a, 0x8e, 0xe6, 0xf3,
0xca, 0xf7, 0x6c, 0xf8, 0x72, 0x3a, 0xf8, 0x26, 0x2c, 0xb8, 0x94, 0xfa, 0x62, 0xdb, 0xb2, 0xa8, 0x49, 0xc8, 0x2b, 0xbf, 0xd8, 0x75, 0x9c, 0x4e, 0x55, 0x3e, 0x7c, 0xc3, 0x97, 0xd3, 0xc9, 0x37,
0x23, 0x2f, 0x09, 0xca, 0xb1, 0x77, 0xc7, 0x94, 0xfa, 0x58, 0xe2, 0x70, 0xd1, 0x8d, 0xb4, 0xd0, 0x61, 0xc1, 0xa5, 0xd4, 0x17, 0x61, 0xcb, 0xa2, 0x8e, 0xbc, 0x4d, 0x28, 0xc7, 0x5e, 0x32, 0x53,
0x1d, 0x58, 0xb6, 0x75, 0xcf, 0xd7, 0xf8, 0x7e, 0x67, 0x4e, 0xb5, 0x65, 0xf9, 0x52, 0x43, 0x8c, 0xea, 0x63, 0x89, 0xc3, 0x45, 0x37, 0xd2, 0x42, 0x77, 0x61, 0xc5, 0xd6, 0x3d, 0x5f, 0xe3, 0xf1,
0xb7, 0xc1, 0x59, 0x81, 0x84, 0xfa, 0xcf, 0x09, 0x28, 0xb0, 0xc1, 0x58, 0x7b, 0x96, 0xc1, 0x92, 0xce, 0x9c, 0x6a, 0xcb, 0xf2, 0xad, 0x86, 0x18, 0x6f, 0x93, 0xb3, 0x02, 0x09, 0xf5, 0x1f, 0x13,
0xbc, 0x6f, 0x9f, 0x7b, 0xdc, 0x84, 0x94, 0xe1, 0xb9, 0xd2, 0xa9, 0xfc, 0xf0, 0xad, 0xf7, 0x30, 0x50, 0x60, 0x93, 0xb1, 0xf6, 0x2d, 0x83, 0x25, 0x79, 0xdf, 0x3e, 0xf7, 0xb8, 0x05, 0x29, 0xc3,
0x66, 0x34, 0xf4, 0x39, 0x64, 0xe5, 0x65, 0x85, 0x48, 0x3b, 0xd4, 0xab, 0xd3, 0x51, 0xe9, 0x1b, 0x73, 0xa5, 0x51, 0xf9, 0xe1, 0x5b, 0xef, 0x61, 0xcc, 0x68, 0xe8, 0x73, 0xc8, 0xca, 0x5b, 0x0d,
0x29, 0xc7, 0x63, 0x79, 0x6a, 0x9d, 0x38, 0x04, 0x70, 0x94, 0x84, 0x6e, 0x40, 0xd2, 0x10, 0xee, 0x91, 0x76, 0xa8, 0xd7, 0xa7, 0xa3, 0xd2, 0x36, 0x52, 0x8e, 0xfb, 0xf2, 0x74, 0x74, 0xe2, 0x10,
0x92, 0x3f, 0x98, 0xa8, 0xb7, 0x71, 0xd2, 0x70, 0xd4, 0x7f, 0x48, 0xc0, 0xc2, 0x74, 0xc1, 0xb3, 0xc0, 0x51, 0x12, 0xba, 0x09, 0x49, 0x43, 0x98, 0x4b, 0xfe, 0xb2, 0xa2, 0xde, 0xc6, 0x49, 0xc3,
0x08, 0xb8, 0x05, 0x79, 0x6f, 0xbc, 0xeb, 0x4d, 0x3c, 0x9f, 0x0c, 0x83, 0xe7, 0xc9, 0x90, 0x80, 0x51, 0xff, 0x2e, 0x01, 0x0b, 0xd3, 0x0d, 0xcf, 0x3c, 0xe0, 0x36, 0xe4, 0xbd, 0xf1, 0x9e, 0x37,
0x5a, 0x90, 0xd7, 0xed, 0x01, 0x75, 0x2d, 0x7f, 0x7f, 0x28, 0x2b, 0xd1, 0xf8, 0x54, 0x21, 0xaa, 0xf1, 0x7c, 0x32, 0x0c, 0xde, 0x31, 0x43, 0x02, 0x6a, 0x41, 0x5e, 0xb7, 0x07, 0xd4, 0xb5, 0xfc,
0xb3, 0x52, 0x0d, 0x44, 0xf0, 0x54, 0x3a, 0x38, 0xf7, 0xc5, 0x1b, 0x36, 0x3f, 0xf7, 0x5f, 0x83, 0x83, 0xa1, 0xac, 0x44, 0xe3, 0x53, 0x85, 0xa8, 0xce, 0x4a, 0x35, 0x10, 0xc1, 0x53, 0xe9, 0xe0,
0xa2, 0xad, 0x0f, 0xf9, 0xed, 0x8d, 0x6f, 0x0d, 0xc5, 0x38, 0xd2, 0xb8, 0x20, 0x69, 0x7d, 0x6b, 0xdc, 0x17, 0x8f, 0xdd, 0xfc, 0xdc, 0x7f, 0x0d, 0x8a, 0xb6, 0x3e, 0xe4, 0xd7, 0x3c, 0xbe, 0x35,
0x48, 0x54, 0x15, 0xf2, 0xa1, 0x32, 0xb4, 0x04, 0x85, 0x6a, 0xb3, 0xa7, 0xdd, 0x5d, 0xbf, 0xaf, 0x14, 0xf3, 0x48, 0xe3, 0x82, 0xa4, 0xf5, 0xad, 0x21, 0x51, 0x55, 0xc8, 0x87, 0xca, 0xd0, 0x12,
0x3d, 0xac, 0x6f, 0x2b, 0x73, 0x32, 0x37, 0xfd, 0xcb, 0x04, 0x2c, 0xc8, 0xed, 0x48, 0xe6, 0xfb, 0x14, 0xaa, 0xcd, 0x9e, 0x76, 0x6f, 0xe3, 0x81, 0xf6, 0xb0, 0xbe, 0xa3, 0xcc, 0xc9, 0xdc, 0xf4,
0xaf, 0xc3, 0xbc, 0xab, 0xef, 0xf9, 0x41, 0x45, 0x92, 0x16, 0x51, 0xcd, 0x76, 0x78, 0x56, 0x91, 0xcf, 0x13, 0xb0, 0x20, 0xc3, 0x91, 0xcc, 0xf7, 0x5f, 0x87, 0x79, 0x57, 0xdf, 0xf7, 0x83, 0x8a,
0x30, 0x56, 0x7c, 0x45, 0x12, 0x79, 0x30, 0x4f, 0x5d, 0xfa, 0x60, 0x9e, 0xfe, 0xb9, 0x3c, 0x98, 0x24, 0x2d, 0xbc, 0x9a, 0x45, 0x78, 0x56, 0x91, 0x30, 0x56, 0x7c, 0x45, 0x12, 0x79, 0x59, 0x4f,
0xab, 0xbf, 0x05, 0xb0, 0x61, 0xd9, 0xa4, 0x2f, 0xae, 0x90, 0xe2, 0xea, 0x4b, 0x96, 0xc3, 0xc9, 0x5d, 0xf9, 0xb2, 0x9e, 0xfe, 0xb9, 0xbc, 0xac, 0xab, 0xbf, 0x06, 0xb0, 0x69, 0xd9, 0xa4, 0x2f,
0x8b, 0xc4, 0x20, 0x87, 0x6b, 0x35, 0x30, 0xa3, 0x31, 0xd6, 0xc0, 0x32, 0xe5, 0x62, 0xe4, 0xac, 0xee, 0x9a, 0xe2, 0xea, 0x4b, 0x96, 0xc3, 0xc9, 0x1b, 0xc7, 0x20, 0x87, 0x6b, 0x35, 0x30, 0xa3,
0x87, 0x8c, 0x35, 0xb0, 0xcc, 0xf0, 0x89, 0x28, 0x7d, 0xd5, 0x13, 0xd1, 0x49, 0x02, 0x96, 0x64, 0x31, 0xd6, 0xc0, 0x32, 0xe5, 0x66, 0xe4, 0xac, 0x87, 0x8c, 0x35, 0xb0, 0xcc, 0xf0, 0x2d, 0x29,
0xee, 0x1a, 0x6e, 0xbf, 0x6f, 0x43, 0x5e, 0xa4, 0xb1, 0xd3, 0x82, 0x8e, 0x3f, 0x12, 0x0b, 0x5c, 0x7d, 0xdd, 0x5b, 0xd2, 0x69, 0x02, 0x96, 0x64, 0xee, 0x1a, 0x86, 0xdf, 0xb7, 0x21, 0x2f, 0xd2,
0xab, 0x81, 0x73, 0x82, 0xdd, 0x32, 0xd1, 0x1a, 0x14, 0x24, 0x34, 0xf2, 0xe3, 0x1a, 0x10, 0xa4, 0xd8, 0x69, 0x41, 0xc7, 0x5f, 0x93, 0x05, 0xae, 0xd5, 0xc0, 0x39, 0xc1, 0x6e, 0x99, 0x68, 0x1d,
0x36, 0x33, 0xff, 0x7d, 0x48, 0xef, 0x59, 0x36, 0x91, 0x81, 0x1e, 0xbb, 0x01, 0x4c, 0x1d, 0xb0, 0x0a, 0x12, 0x1a, 0xf9, 0x15, 0x0e, 0x08, 0x52, 0x9b, 0x0d, 0xff, 0x7d, 0x48, 0xef, 0x5b, 0x36,
0x39, 0x87, 0x39, 0xba, 0x96, 0x0b, 0xee, 0xd8, 0xb8, 0x7d, 0xb2, 0xec, 0x8c, 0xda, 0x27, 0x2a, 0x91, 0x8e, 0x1e, 0x1b, 0x00, 0xa6, 0x06, 0xd8, 0x9a, 0xc3, 0x1c, 0x5d, 0xcb, 0x05, 0x97, 0x71,
0xd0, 0x73, 0xf6, 0x09, 0x1c, 0xb3, 0x4f, 0xb0, 0x85, 0x7d, 0x12, 0x1a, 0xb5, 0x4f, 0x90, 0x7e, 0x7c, 0x7c, 0xb2, 0xec, 0x8c, 0x8e, 0x4f, 0x54, 0xa0, 0x17, 0xc6, 0x27, 0x70, 0x6c, 0x7c, 0x82,
0x2e, 0xf6, 0x6d, 0xc1, 0x8d, 0x9a, 0xad, 0x1b, 0x07, 0xb6, 0xe5, 0xf9, 0xc4, 0x8c, 0xee, 0x18, 0x2d, 0xc6, 0x27, 0xa1, 0xd1, 0xf1, 0x09, 0xd2, 0xcf, 0x65, 0x7c, 0xdb, 0x70, 0xb3, 0x66, 0xeb,
0xeb, 0x90, 0x9d, 0x49, 0x3a, 0x2f, 0xbb, 0x73, 0x95, 0x48, 0xf5, 0x3f, 0x12, 0x50, 0xdc, 0x24, 0xc6, 0xa1, 0x6d, 0x79, 0x3e, 0x31, 0xa3, 0x11, 0x63, 0x03, 0xb2, 0x33, 0x49, 0xe7, 0x55, 0x97,
0xba, 0xed, 0xef, 0x4f, 0xaf, 0x86, 0x7c, 0xe2, 0xf9, 0xf2, 0xb0, 0xe2, 0xdf, 0xe8, 0x03, 0xc8, 0xb3, 0x12, 0xa9, 0xfe, 0x5b, 0x02, 0x8a, 0x5b, 0x44, 0xb7, 0xfd, 0x83, 0xe9, 0xd5, 0x90, 0x4f,
0x85, 0x39, 0xc9, 0x95, 0x8f, 0x5f, 0x21, 0x14, 0xdd, 0x83, 0x79, 0xb6, 0xc6, 0xe8, 0x38, 0x28, 0x3c, 0x5f, 0x1e, 0x56, 0xfc, 0x1b, 0x7d, 0x00, 0xb9, 0x30, 0x27, 0xb9, 0xf6, 0x95, 0x2c, 0x84,
0x76, 0x2e, 0x7b, 0x57, 0x91, 0x48, 0x76, 0xc8, 0xb8, 0x84, 0x27, 0x21, 0x3c, 0x94, 0x32, 0x38, 0xa2, 0xfb, 0x30, 0xcf, 0xf6, 0x18, 0x1d, 0x07, 0xc5, 0xce, 0x55, 0x0f, 0x30, 0x12, 0xc9, 0x0e,
0x68, 0xa2, 0x5f, 0x84, 0x22, 0x7f, 0x16, 0x08, 0x72, 0xae, 0xcc, 0x55, 0x3a, 0x0b, 0xe2, 0x65, 0x19, 0x97, 0xf0, 0x24, 0x84, 0xbb, 0x52, 0x06, 0x07, 0x4d, 0xf4, 0xff, 0xa1, 0xc8, 0xdf, 0x0f,
0x4f, 0xe4, 0x5b, 0xff, 0x97, 0x80, 0xe5, 0x6d, 0x7d, 0xb2, 0x4b, 0xe4, 0xb6, 0x41, 0x4c, 0x4c, 0x82, 0x9c, 0x2b, 0x73, 0x9d, 0xce, 0x82, 0x78, 0x02, 0x14, 0xf9, 0xd6, 0xff, 0x24, 0x60, 0x65,
0x0c, 0xea, 0x9a, 0xa8, 0x1b, 0xdd, 0x6e, 0x2e, 0x79, 0x28, 0x8c, 0x13, 0x8e, 0xdf, 0x75, 0x82, 0x47, 0x9f, 0xec, 0x11, 0x19, 0x36, 0x88, 0x89, 0x89, 0x41, 0x5d, 0x13, 0x75, 0xa3, 0xe1, 0xe6,
0x02, 0x2c, 0x19, 0x29, 0xc0, 0x96, 0x21, 0xe3, 0x50, 0xc7, 0x20, 0x72, 0x2f, 0x12, 0x0d, 0xd5, 0x8a, 0x17, 0xc5, 0x38, 0xe1, 0xf8, 0xa8, 0x13, 0x14, 0x60, 0xc9, 0x48, 0x01, 0xb6, 0x02, 0x19,
0x8a, 0x6e, 0x35, 0xa5, 0xf0, 0x0d, 0x8f, 0xbf, 0xc0, 0xb5, 0xa9, 0x1f, 0xf6, 0x86, 0x3e, 0x87, 0x87, 0x3a, 0x06, 0x91, 0xb1, 0x48, 0x34, 0x54, 0x2b, 0x1a, 0x6a, 0x4a, 0xe1, 0x63, 0x1f, 0x7f,
0x52, 0xaf, 0x59, 0xc7, 0xcd, 0x7e, 0xad, 0xf3, 0x43, 0xad, 0x57, 0xdd, 0xea, 0x55, 0xd7, 0xef, 0xaa, 0x6b, 0x53, 0x3f, 0xec, 0x0d, 0x7d, 0x0e, 0xa5, 0x5e, 0xb3, 0x8e, 0x9b, 0xfd, 0x5a, 0xe7,
0x68, 0xdd, 0xce, 0xd6, 0x17, 0x77, 0xef, 0xdd, 0xf9, 0x40, 0x49, 0x94, 0xca, 0xc7, 0x27, 0xe5, 0x47, 0x5a, 0xaf, 0xba, 0xdd, 0xab, 0x6e, 0xdc, 0xd5, 0xba, 0x9d, 0xed, 0x2f, 0xee, 0xdd, 0xbf,
0x5b, 0xed, 0x6a, 0x7d, 0x4b, 0xac, 0x98, 0x5d, 0xfa, 0xb4, 0xa7, 0xdb, 0x9e, 0xbe, 0x7e, 0xa7, 0xfb, 0x81, 0x92, 0x28, 0x95, 0x4f, 0x4e, 0xcb, 0xb7, 0xdb, 0xd5, 0xfa, 0xb6, 0xd8, 0x31, 0x7b,
0x4b, 0xed, 0x09, 0xc3, 0xb0, 0xb0, 0x2e, 0x46, 0xcf, 0xab, 0xe8, 0x31, 0x9c, 0xb8, 0xf0, 0x18, 0xf4, 0x69, 0x4f, 0xb7, 0x3d, 0x7d, 0xe3, 0x6e, 0x97, 0xda, 0x13, 0x86, 0x61, 0x6e, 0x5d, 0x8c,
0x9e, 0x9e, 0xe6, 0xc9, 0x0b, 0x4e, 0xf3, 0x0d, 0x58, 0x36, 0x5c, 0xea, 0x79, 0x1a, 0xcb, 0xfe, 0x9e, 0x57, 0xd1, 0x63, 0x38, 0x71, 0xe9, 0x31, 0x3c, 0x3d, 0xcd, 0x93, 0x97, 0x9c, 0xe6, 0x9b,
0x89, 0x79, 0xae, 0xbe, 0x78, 0xe9, 0xec, 0x74, 0xed, 0x5a, 0x9d, 0xf1, 0x7b, 0x9c, 0x2d, 0xd5, 0xb0, 0x62, 0xb8, 0xd4, 0xf3, 0x34, 0x96, 0xfd, 0x13, 0xf3, 0x42, 0x7d, 0xf1, 0xd2, 0xf9, 0xd9,
0x5f, 0x33, 0x22, 0x24, 0xde, 0x93, 0xfa, 0x47, 0x29, 0x96, 0x48, 0x59, 0x87, 0x96, 0x4d, 0x06, 0xfa, 0x72, 0x9d, 0xf1, 0x7b, 0x9c, 0x2d, 0xd5, 0x2f, 0x1b, 0x11, 0x12, 0xef, 0x49, 0xfd, 0xfd,
0xc4, 0x43, 0x8f, 0x61, 0xc9, 0x70, 0x89, 0xc9, 0xd2, 0x7a, 0xdd, 0xd6, 0xbc, 0x11, 0x31, 0x64, 0x14, 0x4b, 0xa4, 0xac, 0x23, 0xcb, 0x26, 0x03, 0xe2, 0xa1, 0xc7, 0xb0, 0x64, 0xb8, 0xc4, 0x64,
0x50, 0xff, 0x42, 0x6c, 0x4e, 0x13, 0x0a, 0x56, 0xea, 0xa1, 0x54, 0x6f, 0x44, 0x0c, 0xbc, 0x68, 0x69, 0xbd, 0x6e, 0x6b, 0xde, 0x88, 0x18, 0xd2, 0xa9, 0xff, 0x5f, 0x6c, 0x4e, 0x13, 0x0a, 0x56,
0xcc, 0xb4, 0xd1, 0x97, 0xb0, 0xe4, 0x11, 0xdb, 0x72, 0xc6, 0x4f, 0x35, 0x83, 0x3a, 0x3e, 0x79, 0xea, 0xa1, 0x54, 0x6f, 0x44, 0x0c, 0xbc, 0x68, 0xcc, 0xb4, 0xd1, 0x97, 0xb0, 0xe4, 0x11, 0xdb,
0x1a, 0x3c, 0x47, 0x5d, 0xa5, 0xb7, 0xd7, 0xdc, 0x62, 0x52, 0x75, 0x21, 0x54, 0x43, 0x67, 0xa7, 0x72, 0xc6, 0x4f, 0x35, 0x83, 0x3a, 0x3e, 0x79, 0x1a, 0xbc, 0x5b, 0x5d, 0xa7, 0xb7, 0xd7, 0xdc,
0x6b, 0x8b, 0xb3, 0x34, 0xbc, 0x28, 0x35, 0xcb, 0x76, 0xa9, 0x0d, 0x8b, 0xb3, 0xd6, 0xa0, 0x65, 0x66, 0x52, 0x75, 0x21, 0x54, 0x43, 0xe7, 0x67, 0xeb, 0x8b, 0xb3, 0x34, 0xbc, 0x28, 0x35, 0xcb,
0xb9, 0xf6, 0xf9, 0x16, 0x12, 0xac, 0x6d, 0x74, 0x0b, 0x72, 0x2e, 0x19, 0x58, 0x9e, 0xef, 0x0a, 0x76, 0xa9, 0x0d, 0x8b, 0xb3, 0xa3, 0x41, 0x2b, 0x72, 0xef, 0xf3, 0x10, 0x12, 0xec, 0x6d, 0x74,
0x37, 0x33, 0x4e, 0x48, 0x61, 0x2b, 0x5f, 0xfc, 0xc2, 0xa6, 0xf4, 0x1b, 0x70, 0xae, 0x47, 0xb6, 0x1b, 0x72, 0x2e, 0x19, 0x58, 0x9e, 0xef, 0x0a, 0x33, 0x33, 0x4e, 0x48, 0x61, 0x3b, 0x5f, 0xfc,
0x58, 0x4c, 0xcb, 0xd3, 0x77, 0xa5, 0xca, 0x1c, 0x0e, 0x9a, 0x2c, 0x06, 0xc7, 0x5e, 0x98, 0xa8, 0x14, 0xa7, 0xf4, 0x2b, 0x70, 0xa1, 0x47, 0xb6, 0x59, 0x4c, 0xcb, 0xd3, 0xf7, 0xa4, 0xca, 0x1c,
0xf1, 0x6f, 0x46, 0xe3, 0x19, 0x85, 0xfc, 0xbd, 0x11, 0xcf, 0x19, 0x82, 0x1f, 0x2e, 0xa6, 0x23, 0x0e, 0x9a, 0xcc, 0x07, 0xc7, 0x5e, 0x98, 0xa8, 0xf1, 0x6f, 0x46, 0xe3, 0x19, 0x85, 0xfc, 0x61,
0x3f, 0x5c, 0x5c, 0x86, 0x8c, 0x4d, 0x0e, 0x89, 0x2d, 0xce, 0x72, 0x2c, 0x1a, 0xef, 0xfc, 0x34, 0x12, 0xcf, 0x19, 0x82, 0x5f, 0x38, 0xa6, 0x23, 0xbf, 0x70, 0x5c, 0x81, 0x8c, 0x4d, 0x8e, 0x88,
0x05, 0xf9, 0xf0, 0xe9, 0x85, 0x9d, 0x04, 0xed, 0xe6, 0x93, 0x20, 0x56, 0x43, 0x7a, 0x9b, 0x1c, 0x2d, 0xce, 0x72, 0x2c, 0x1a, 0xef, 0xfc, 0x2c, 0x05, 0xf9, 0xf0, 0x8d, 0x86, 0x9d, 0x04, 0xed,
0xa1, 0xd7, 0xa6, 0x77, 0x4a, 0x9f, 0x8b, 0xb7, 0xe6, 0x90, 0x1d, 0xdc, 0x27, 0xbd, 0x01, 0xb9, 0xe6, 0x93, 0xc0, 0x57, 0x43, 0x7a, 0x9b, 0x1c, 0xa3, 0xd7, 0xa6, 0x77, 0x4a, 0x9f, 0x8b, 0x47,
0x6a, 0xaf, 0xd7, 0x7a, 0xd8, 0x6e, 0x36, 0x94, 0xaf, 0x12, 0xa5, 0x97, 0x8e, 0x4f, 0xca, 0xd7, 0xe9, 0x90, 0x1d, 0xdc, 0x27, 0xbd, 0x01, 0xb9, 0x6a, 0xaf, 0xd7, 0x7a, 0xd8, 0x6e, 0x36, 0x94,
0x42, 0x50, 0xd5, 0x13, 0xa1, 0xc4, 0x51, 0xf5, 0x7a, 0xb3, 0xdb, 0x6f, 0x36, 0x94, 0x67, 0xc9, 0xaf, 0x12, 0xa5, 0x97, 0x4e, 0x4e, 0xcb, 0xcb, 0x21, 0xa8, 0xea, 0x09, 0x57, 0xe2, 0xa8, 0x7a,
0xf3, 0x28, 0x7e, 0x47, 0xc2, 0x7f, 0x31, 0x92, 0xef, 0xe2, 0x66, 0xb7, 0x8a, 0x59, 0x87, 0x5f, 0xbd, 0xd9, 0xed, 0x37, 0x1b, 0xca, 0xb3, 0xe4, 0x45, 0x14, 0xbf, 0x23, 0xe1, 0x3f, 0x2d, 0xc9,
0x25, 0xc5, 0x55, 0xd7, 0xb4, 0x47, 0x97, 0x8c, 0x74, 0x97, 0xf5, 0xb9, 0x1a, 0xfc, 0x72, 0xea, 0x77, 0x71, 0xb3, 0x5b, 0xc5, 0xac, 0xc3, 0xaf, 0x92, 0xe2, 0xaa, 0x6b, 0xda, 0xa3, 0x4b, 0x46,
0x59, 0x4a, 0xfc, 0xaa, 0x60, 0xfa, 0x8e, 0x44, 0x74, 0x73, 0xc2, 0x7a, 0xe3, 0x0f, 0x78, 0x5c, 0xba, 0xcb, 0xfa, 0x5c, 0x0b, 0x7e, 0x62, 0xf5, 0x2c, 0x25, 0x7e, 0x7e, 0x30, 0x7d, 0x70, 0x22,
0x4d, 0xea, 0x5c, 0x6f, 0x3d, 0xb6, 0x93, 0x30, 0x2d, 0x2a, 0xcc, 0xe3, 0x9d, 0x76, 0x9b, 0x81, 0xba, 0x39, 0x61, 0xbd, 0xf1, 0x97, 0x3e, 0xae, 0x26, 0x75, 0xa1, 0xb7, 0x1e, 0x8b, 0x24, 0x4c,
0x9e, 0xa5, 0xcf, 0x8d, 0x0e, 0x8f, 0x1d, 0x56, 0xff, 0xa2, 0xdb, 0x90, 0x0b, 0xde, 0xf7, 0x94, 0x8b, 0x0a, 0xf3, 0x78, 0xb7, 0xdd, 0x66, 0xa0, 0x67, 0xe9, 0x0b, 0xb3, 0xc3, 0x63, 0x87, 0xd5,
0xaf, 0xd2, 0xe7, 0x0c, 0xaa, 0x07, 0x8f, 0x93, 0xbc, 0xc3, 0xcd, 0x9d, 0x3e, 0xff, 0x61, 0xd7, 0xbf, 0xe8, 0x0e, 0xe4, 0x82, 0x87, 0x40, 0xe5, 0xab, 0xf4, 0x85, 0x01, 0xd5, 0x83, 0x57, 0x4c,
0xb3, 0xcc, 0xf9, 0x0e, 0xf7, 0xc7, 0xbe, 0x49, 0x8f, 0x1c, 0xb6, 0x02, 0xe5, 0xad, 0xda, 0x57, 0xde, 0xe1, 0xd6, 0x6e, 0x9f, 0xff, 0x02, 0xec, 0x59, 0xe6, 0x62, 0x87, 0x07, 0x63, 0xdf, 0xa4,
0x19, 0x71, 0x05, 0x11, 0x62, 0xe4, 0x95, 0xda, 0x1b, 0x90, 0xc3, 0xcd, 0x1f, 0x88, 0xdf, 0x80, 0xc7, 0x0e, 0xdb, 0x81, 0xf2, 0x56, 0xed, 0xab, 0x8c, 0xb8, 0x82, 0x08, 0x31, 0xf2, 0x4a, 0xed,
0x3d, 0xcb, 0x9e, 0xd3, 0x83, 0xc9, 0x97, 0xc4, 0x90, 0xbd, 0x75, 0x70, 0x77, 0xb3, 0xca, 0x5d, 0x0d, 0xc8, 0xe1, 0xe6, 0x0f, 0xc5, 0x8f, 0xc5, 0x9e, 0x65, 0x2f, 0xe8, 0xc1, 0xe4, 0x4b, 0x62,
0x7e, 0x1e, 0xd5, 0x71, 0x47, 0xfb, 0xba, 0x43, 0xcc, 0xe9, 0x4f, 0x2b, 0x42, 0xd6, 0x3b, 0xbf, 0xc8, 0xde, 0x3a, 0xb8, 0xbb, 0x55, 0xe5, 0x26, 0xbf, 0x88, 0xea, 0xb8, 0xa3, 0x03, 0xdd, 0x21,
0x02, 0xb9, 0x20, 0xcf, 0x44, 0xab, 0x90, 0x7d, 0xd2, 0xc1, 0x8f, 0x9a, 0x58, 0x99, 0x13, 0x3e, 0xe6, 0xf4, 0x37, 0x18, 0x21, 0xeb, 0x9d, 0x5f, 0x84, 0x5c, 0x90, 0x67, 0xa2, 0x35, 0xc8, 0x3e,
0x0c, 0x38, 0x4f, 0x44, 0x85, 0x50, 0x86, 0xf9, 0xed, 0x6a, 0xbb, 0xfa, 0xb0, 0x89, 0x83, 0x0b, 0xe9, 0xe0, 0x47, 0x4d, 0xac, 0xcc, 0x09, 0x1b, 0x06, 0x9c, 0x27, 0xa2, 0x42, 0x28, 0xc3, 0xfc,
0xef, 0x00, 0x20, 0x93, 0xa5, 0x92, 0x22, 0x3b, 0x08, 0x75, 0xd6, 0x56, 0xbe, 0xfe, 0x66, 0x75, 0x4e, 0xb5, 0x5d, 0x7d, 0xd8, 0xc4, 0xc1, 0x85, 0x77, 0x00, 0x90, 0xc9, 0x52, 0x49, 0x91, 0x1d,
0xee, 0x27, 0xdf, 0xac, 0xce, 0x3d, 0x3b, 0x5b, 0x4d, 0x7c, 0x7d, 0xb6, 0x9a, 0xf8, 0xf1, 0xd9, 0x84, 0x3a, 0x6b, 0xab, 0x5f, 0x7f, 0xb3, 0x36, 0xf7, 0xd3, 0x6f, 0xd6, 0xe6, 0x9e, 0x9d, 0xaf,
0x6a, 0xe2, 0xdf, 0xcf, 0x56, 0x13, 0xbb, 0x59, 0xbe, 0xa5, 0xdf, 0xfb, 0xff, 0x00, 0x00, 0x00, 0x25, 0xbe, 0x3e, 0x5f, 0x4b, 0xfc, 0xe4, 0x7c, 0x2d, 0xf1, 0xaf, 0xe7, 0x6b, 0x89, 0xbd, 0x2c,
0xff, 0xff, 0x69, 0xd9, 0x83, 0x1d, 0x57, 0x2e, 0x00, 0x00, 0x0f, 0xe9, 0xf7, 0xff, 0x37, 0x00, 0x00, 0xff, 0xff, 0x62, 0x46, 0x73, 0x55, 0x80, 0x2e, 0x00,
0x00,
} }

View File

@ -495,8 +495,8 @@ message NetworkAttachmentConfig {
// preferred. If these addresses are not available then the // preferred. If these addresses are not available then the
// attachment might fail. // attachment might fail.
repeated string addresses = 3; repeated string addresses = 3;
// DriverOpts is a map of driver specific options for the network target // DriverAttachmentOpts is a map of driver attachment options for the network target
map<string, string> driver_opts = 4; map<string, string> driver_attachment_opts = 4;
} }
// IPAMConfig specifies parameters for IP Address Management. // IPAMConfig specifies parameters for IP Address Management.